KR102523589B1 - 가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화 - Google Patents

가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화 Download PDF

Info

Publication number
KR102523589B1
KR102523589B1 KR1020207032966A KR20207032966A KR102523589B1 KR 102523589 B1 KR102523589 B1 KR 102523589B1 KR 1020207032966 A KR1020207032966 A KR 1020207032966A KR 20207032966 A KR20207032966 A KR 20207032966A KR 102523589 B1 KR102523589 B1 KR 102523589B1
Authority
KR
South Korea
Prior art keywords
delay
cycles
amount
processor
system service
Prior art date
Application number
KR1020207032966A
Other languages
English (en)
Other versions
KR20210005636A (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 KR20210005636A publication Critical patent/KR20210005636A/ko
Application granted granted Critical
Publication of KR102523589B1 publication Critical patent/KR102523589B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

시스템 서비스 요청(SSR)을 제공할 때 프로세서 서비스 품질 보장을 시행하는 시스템, 장치 및 방법이 개시된다. 시스템은 운영 체제를 실행하는 제 1 프로세서와, 제 1 프로세서가 서비스할 SSR을 생성하는 애플리케이션을 실행하는 제 2 프로세서를 포함한다. 제 1 프로세서는 이전 시간 간격 동안 SSR을 서비스하는 데 소요된 사이클 수를 모니터링하고, 이 사이클 수가 임계 값을 초과하면, 제 1 프로세서가 후속 SSR의 서비스를 지연하기 시작한다. 일 구현에서, 이전 지연이 0이 아니면, 제 1 프로세서는 후속 SSR의 서비스에 사용되는 지연을 증가시킨다. 사이클 수가 임계 값보다 작거나 같으면, 제 1 프로세서가 지연없이 SSR을 처리한다. 지연이 증가하면 제 2 프로세서가 정지하기 시작하고 SSR 생성 속도가 떨어져, 제 1 프로세서에서의 부하가 줄어든다.

Description

가속기 요청에 서비스할 때 중앙 처리 장치 서비스 품질 보장 시행
본 발명은 미국 에너지국에서 부여한 Lawrence Livermore National Security, Prime Contract No. DE-AC52-07NA27344, Subcontract No. B620717의 PathForward Project에 따라 정부 지원으로 이루어졌다. 미국 정부는 본 발명에 대한 특정 권리를 가지고 있다.
현대의 SoC(system on chip)는 종종 단일 칩 또는 다중 칩 모듈에 다양한 유형의 구성 요소를 통합한다. 예를 들어, 일반적인 SoC에는 통합 그래픽 처리 장치(GPU) 및 미디어 엔진과 같은 가속기와 함께 메인 프로세서(예: 중앙 처리 장치(CPU))가 포함된다. 이러한 가속기의 기능이 점차 향상됨에 따라 페이지 오류, 파일 시스템 액세스 또는 네트워크 액세스와 같은 복잡한 운영 체제(OS) 서비스를 직접 호출할 것으로 예상된다. 그러나 OS는 가속기에서 실행되지 않는다. 따라서 이러한 가속기 시스템 서비스 요청(SSR)은 CPU에서 실행되는 OS에 의해 서비스되어야한다. 이러한 가속기 SSR은 동시대의 CPU 애플리케이션을 심각하게 방해한다. 가속기의 SSR 서비스로 인한 파괴적인 간섭으로 인해 동시대의 CPU 애플리케이션에서 상당한 성능 및 에너지 효율성 저하가 종종 발생한다.
여기에 설명된 방법 및 메커니즘의 장점은 첨부된 도면과 함께 다음 설명을 참조함으로써 더 잘 이해될 수 있다.
도 1은 컴퓨팅 시스템의 일 구현의 블록도이다.
도 2는 CPU 및 가속기를 갖는 컴퓨팅 시스템의 일 구현의 블록도이다.
도 3은 일 구현에 따른 가속기 SSR 처리와 관련된 오버헤드를 나타내는 타이밍도이다.
도 4는 가속기 SSR을 처리하기 위한 기법의 다른 구현에 대한 블록도이다.
도 5는 가속기로부터의 요청을 처리하는 동안 CPU에서 서비스 품질 보증을 시행하는 방법의 일 구현을 나타내는 일반화된 흐름도이다.
도 6은 요청의 서비스에 추가된 지연을 동적으로 조정하기 위한 방법의 일 구현을 나타내는 일반화된 흐름도이다.
도 7은 시스템 서비스 요청(SSR)을 처리하기 위한 방법의 일 구현을 예시하는 일반화된 흐름도이다.
다음 설명에서, 여기에 제시된 방법 및 메커니즘에 대한 완전한 이해를 제공하기 위해 수많은 특정 세부 사항이 설명된다. 그러나, 당업자는 이러한 특정 세부 사항없이 다양한 구현이 실행될 수 있음을 인식해야한다. 일부 예에서, 잘 알려진 구조, 구성 요소, 신호, 컴퓨터 프로그램 명령어 및 기술은 여기에 설명된 접근 방식을 모호하게하는 것을 피하기 위해 상세하게 표시되지 않았다. 예시의 단순성 및 명료성을 위해, 도면에 도시된 요소가 반드시 일정한 비율로 그려진 것은 아님을 이해할 것이다. 예를 들어, 일부 요소의 치수는 다른 요소에 비해 과장될 수 있다.
가속기 시스템 서비스 요청에 직면하여 중앙 처리 장치(CPU) 서비스 품질(QoS) 보장을 시행하기 위한 다양한 시스템, 장치, 방법 및 컴퓨터 판독 가능 매체가 여기에 개시된다. 일 구현에서, 시스템은 적어도 CPU와 가속기를 포함한다. 가속기는 그래픽 처리 장치(GPU) 또는 기타 유형의 처리 장치이다. 일부 구현에서, 시스템은 다중 가속기를 포함한다. 일 구현에서, CPU는 운영 체제(OS)를 실행하고 가속기는 애플리케이션을 실행한다. 가속기 응용 프로그램에 OS의 지원이 필요한 경우, 가속기 응용 프로그램은 서비스를 위한 시스템 서비스 요청(SSR)을 CPU로 보낸다. 특정 응용 프로그램의 경우 가속기는 서비스를 위해 많은 수의 SSR을 CPU로 보낸다. CPU는 OS가 가속기로부터 SSR을 서비스하는 데 소비하는 시간을 모니터링하도록 구성된다. 다양한 구현에서 시간량은 사이클로 측정된다. 다른 구현에서는 상이한 시간 척도가 사용된다. 논의의 편의를 위해, 여기서는 사이클에 따른 시간 추적이 사용된다. 일 구현에서, SSR 서비스에 관여하는 OS 루틴은 CPU 사용 사이클을 추적한다.
일 구현에서, 커널 백그라운드 스레드는 이전 시간 간격에서 SSR을 서비스하는 데 소비된 CPU 사이클 수가 지정된 한계치보다 큰지 결정하기 위해 주기적으로 깨어난다. 일 구현에서 이러한 한계치는 관리자가 지정한다. 다른 구현에서, 소프트웨어 애플리케이션은 작동 조건에 따라 한계 값을 동적으로 조정한다. 일 구현에서, 커널 작업자 스레드는 새로 수신된 SSR의 처리에 조정 가능한 양의 지연을 추가하고, 지연은 이전 시간 간격 동안 SSR을 서비스하는 데 소요된 CPU 오버헤드(예를 들어, CPU 시간의 백분율)를 기반으로 계산된다. 예를 들어, 일 구현에서, SSR 처리를 시작할 때, 커널 작업자 스레드는 SSR을 처리하는 데 소요된 CPU 시간의 백분율이 지정된 임계 값을 초과하는지 확인한다. 커널 작업자 스레드는 커널 백그라운드 스레드에 의해 수집된 정보를 사용하여 이 검사를 수행한다. SSR을 처리하는 데 소요된 CPU 시간의 백분율이 지정된 임계 값 미만인 경우, 커널 작업자 스레드는 원하는 지연을 0으로 설정하고, 계속하여 SSR을 즉시 처리한다. 그렇지 않고 SSR을 처리하는 데 소요된 CPU 시간의 백분율이 지정된 임계 값보다 큰 경우, 커널 작업자 스레드는 지수 백오프(exponential back-off)를 기반으로 SSR 처리의 지연 량을 설정한다. 예를 들어, 일 구현에서 원하는 지연이 이전에 0보다 크면 커널 작업자 스레드가 지연을 이전 지연 값보다 큰 값으로 증가시킨다. 예를 들어, 다양한 구현에서 새로운 지연 값은 이전 값의 배수(예를 들어, 2x, 3x 등)일 수 있다. 다른 구현에서, 새로운 지연 값은 이전 지연 값의 배수가 아닌 더 큰 값일 수 있다. 그렇지 않고 원하는 지연이 이전에 0이면 커널 작업자 스레드가 새 지연을 초기 공칭 값(예: 10 μsec)으로 설정한다. 그런 다음 SSR 처리가 이 크기만큼 지연된다.
지연이 증가함에 따라 가속기(들)는 정지하기 시작하고 SSR 속도는 결국 떨어질 것이다. CPU 오버헤드가 설정된 한계치 아래로 떨어지면 SSR이 인위적인 지연없이 다시 한 번 서비스된다. 또한 일 구현에서, 가속기 SSR의 서비스는 이 서비스가 CPU 응용 프로그램을 방해하는 경우에만 자동으로 제한된다. 이 구현에서, CPU가 유휴 상태이면, CPU 오버헤드가 한계치를 초과하더라도 SSR이 가능한한 빨리 서비스된다. 일 구현에서, 이 검사는 실행 목록에서 대기중인 다른 프로세스에 대해 OS 스케줄러에 질의하여 구현된다.
이제 도 1을 참조한다. 도 1에는 컴퓨팅 시스템(100)의 일 구현의 블록도가 도시되어있다. 일 구현에서, 컴퓨팅 시스템(100)은 적어도 프로세서(105A-N), 입력/출력(I/O) 인터페이스(120), 버스(125), 메모리 제어기(들)(130), 네트워크 인터페이스(135) 및 메모리 장치(들)(140)를 포함한다. 다른 구현에서, 컴퓨팅 시스템(100)은 다른 구성 요소를 포함하고 및/또는 컴퓨팅 시스템(100)은 상이하게 배열된다. 프로세서(105A-N)는 시스템(100)에 포함된 임의의 수의 프로세서를 나타낸다.
일 구현에서, 프로세서(105A)는 중앙 처리 장치(CPU)와 같은 범용 프로세서이다. 이 구현에서, 프로세서(105N)는 가속기 엔진이다. 예를 들어, 일 구현에서, 프로세서(105N)는 고도의 병렬 아키텍처를 갖는 데이터 병렬 프로세서이다. 데이터 병렬 프로세서에는 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), 현장 프로그래밍 가능 게이트 어레이(FPGA), 주문형 집적 회로(ASIC) 등이 포함된다. 일부 구현에서, 프로세서(105A-N)는 다중 가속기 엔진을 포함한다. 이러한 다중 가속기 엔진은 처리를 위해 프로세서(105A)에 시스템 서비스 요청(SSR)을 전송하도록 구성된다. 프로세서(105A)는 이러한 SSR을 처리하는 것과 관련된 오버헤드를 모니터링하도록 구성된다. 구현에 따라, 프로세서(105A)는 CPU 사이클 수, 총 CPU 사이클의 백분율, 시간의 양 및/또는 다른 메트릭에 기초하여 오버헤드를 모니터링한다. 이전 시간 간격에 대한 오버헤드가 임계 값을 초과하면, 프로세서(105A)는 SSR의 처리를 지연시키고/거나 그렇지 않으면 SSR을 처리하는 데 사용되는 자원의 양을 감소시킨다.
메모리 제어기(들)(130)는 I/O 인터페이스(120)에 결합된 프로세서(105A-N) 및 I/O 장치(미도시)에 의해 액세스 가능한 임의의 수 및 유형의 메모리 제어기를 나타낸다. 메모리 제어기(들)(130)는 임의의 수 및 유형의 메모리 장치(140)에 결합된다. 메모리 장치(들)(140)는 임의의 수 및 유형의 메모리 장치(140)를 나타낸다. 예를 들어, 메모리 장치(들)(140)의 메모리 유형은 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM), NAND 플래시 메모리, NOR 플래시 메모리, 강유전성 랜덤 액세스 메모리(FeRAM) 등을 포함한다.
I/O 인터페이스(120)는 임의의 수 및 유형의 I/O 인터페이스(예를 들어, 주변 구성 요소 상호 연결(PCI) 버스, PCI-Extended(PCI-X), PCIE(PCI Express) 버스, 기가비트 이더넷(GBE) 버스, 범용 직렬 버스(USB)))를 나타낸다. 다양한 유형의 주변 장치가 I/O 인터페이스(120)에 결합된다. 이러한 주변 장치에는 디스플레이, 키보드, 마우스, 프린터, 스캐너, 조이스틱 또는 기타 유형의 게임 제어기, 미디어 기록 장치, 외부 저장 장치, 네트워크 인터페이스 카드 등이 포함된다(이에 제한되지 않음). 네트워크 인터페이스(135)는 네트워크를 통해 네트워크 메시지를 수신 및 전송하는데 사용된다.
다양한 구현에서, 컴퓨팅 시스템(100)은 컴퓨터, 랩톱, 모바일 장치, 게임 콘솔, 서버, 스트리밍 장치, 웨어러블 장치, 또는 다양한 다른 유형의 컴퓨팅 시스템 또는 장치 중 임의의 것이다. 컴퓨팅 시스템(100)의 구성 요소의 수는 구현마다 다르다는 점에 유의한다. 예를 들어, 다른 구현에서, 도 1에 도시된 수보다 더 많거나 적은 각 구성 요소가 존재한다. 다른 구현에서, 컴퓨팅 시스템(100)은 도 1에 도시되지 않은 다른 구성 요소를 포함한다는 것을 또한 주목한다. 추가적으로, 다른 구현에서, 컴퓨팅 시스템(100)은 도 1에 도시된 것과 다른 방식으로 구성된다.
이제 도 2로 넘어가서, CPU 및 가속기를 갖는 시스템(200)의 일 구현의 블록도가 도시되어있고, CPU(205)는 가속기(215)에 결합되고, CPU(205) 및 가속기(215)는 시스템 메모리(220)에 결합된다. CPU(205)는 임의의 수의 코어를 나타내는 코어(210A-C)를 포함한다. 코어(210A-C)는 또한 본 명세서에서 "실행 유닛"으로 지칭된다. 가속기(215)에 의해 생성된 시스템 서비스 요청(SSR)을 처리하는 CPU(205)의 흐름의 일례가 도 2에 도시되어있다. 가속기(215)는 시스템 메모리(220)의 큐(230)에 인수를 설정함으로써 시작한다. 그 다음, 가속기(215)는 SSR을 코어(210A)로 전송한다. 일 구현에서, 코어(210A)는 코어(210B) 상의 하반부 인터럽트 핸들러(bottom half interrupt handler)를 스케줄링하는 상반부 인터럽트 핸들러(top half interrupt handler)를 실행한다. 하반부 인터럽트 핸들러는 소프트웨어 작업 대기열(225) 및 대기열(230)에서 작업 대기열을 설정하고 코어(210C)에 커널 작업자 스레드를 큐잉한다. 커널 작업자 스레드는 소프트웨어 작업 큐(225)에 액세스하여 SSR을 처리한다. 그런 다음 커널 작업자 스레드는 SSR을 처리하고 시스템 서비스 응답을 생성하여 가속기(215)에 전달한다.
도 2는 일 구현에 따라 가속기 SSR을 처리하는 일 예를 예시한다. 다른 구현에서, 다른 단계 및/또는 다른 단계 순서를 포함하는 가속기 SSR을 처리하기 위한 다른 기법이 사용된다. 도 2에 예시된 접근법의 단점 중 하나는, 요청의 수가 CPU(205)의 성능에 영향을 미치기 시작하면, CPU(205)가 가속기(215)에 의해 생성된 요청을 조절하는 능력이 없다는 것이다. 예를 들어, 다른 구현에서, CPU(205)는 각각 많은 수의 SSR을 단기간에 생성하는 다중 가속기에 결합된다.
이제 도 3에서, 가속기 SSR 처리와 관련된 오버헤드를 예시하는 타이밍도(300)의 일 구현이 도시된다. 도 3의 타이밍도(300)는 가속기(215)에 의해 생성된 SSR을 처리하는 CPU(205)에 대한 도 2의 단계들에 대응한다. 타이밍도(300)의 맨 위 행은 가속기(215)에 대한 이벤트의 타이밍을 예시한다. 일 구현에서, 가속기(215)는 코어(210A)에 의해 처리되는 인터럽트(305)를 생성한다. 영역(310)은 CPU(205)가 사용자와 커널 모드 사이의 전환을 소비하는 간접 CPU 오버헤드를 나타낸다. 영역(315)은 하반부 인터럽트 핸들러를 스케줄링하는 데 소요된 시간을 나타낸다. 하반부 인터럽트 핸들러를 스케줄링한 후, 영역(320)은 커널과 사용자 모드 사이의 전환을 위한 또 다른 간접 CPU 오버헤드를 나타낸다. 영역(325)은 SSR의 처리에서, 커널이 캐시 및 TLB(translation lookaside buffer) 공간과 같은 프로세서의 다양한 리소스를 사용하기 때문에 보다 낮은 사이클 당 명령(IPC) 속도로 실행되는 사용자 모드에서 소비된 시간을 나타낸다. 이로 인해 다른 CPU 작업에 사용할 수 있는 리소스가 줄어든다. 일 구현에서, 작업자 스레드가 SSR을 서비스하는 데 소비된 CPU 오버헤드를 계산할 때, 작업자 스레드는 오버헤드 계산에서 사용자 모드와 커널 모드 사이의 전환과 관련된 간접 CPU 오버헤드와, 보다 낮은 IPC 속도로 실행되는 사용자 모드에서 소비된 시간을 포함한다. .
코어(210B)에 대해 도시된 행에 대해, 영역(330)은 사용자로부터 커널 모드로 전환하는 데 소비되는 간접 CPU 오버헤드를 나타낸다. 영역(335)은 하반부 인터럽트 핸들러를 실행하는 데 소요된 시간을 나타낸다. 영역(340)은 커널에서 사용자 모드로 전환하는 데 소비되는 또 다른 간접 CPU 오버헤드를 나타낸다. 영역(345)은 SSR 처리에서 프로세서의 다양한 리소스의 커널 사용으로 인해 보다 낮은 IPC 속도로 실행되는 사용자 모드에서 소비된 간접 CPU 오버헤드를 나타낸다.
하반부 인터럽트 핸들러는 코어(210C)에서 커널 작업자 스레드를 시작한다. 영역(350)은 사용자로부터 커널 모드로 전환하는 데 소비되는 간접 CPU 오버헤드를 나타낸다. 영역(355)은 가속기의 SSR을 서비스하는 커널 작업자 스레드가 소비한 시간을 나타낸다. 가속기의 SSR을 서비스한 후 커널 작업자 스레드는 커널로부터 사용자 모드(영역 360으로 표시)로 전환되는 간접 오버헤드와, 보다 낮은 IPC 속도로 실행되는 사용자 모드(영역 365로 표시)에서 소요되는 시간을 경험한다.
SSR을 처리하는 데 CPU(205)에 의해 소비된 시간에 추가하여, 가속기(215)는 지속 시간(370)에 의해 도시된 바와 같이 SSR을 처리하는 CPU(205)의 대기 시간으로 인해 스톨(중단)을 경험한다. 가속기(215)가 대기 시간 은닉 능력을 갖는 반면, SSR을 취급하는 CPU(205)의 대기 시간은 가속기(215)에 의해 은닉될 수 있는 것보다 길 수 있다. 타이밍도(300)에 의해 표현된 이벤트에서 알 수 있듯이, 가속기 SSR은 CPU 성능에 직간접적으로 영향을 미치며, CPU의 SSR 처리도 가속기의 성능에 영향을 미친다.
이제 도 4로 넘어 가서, 가속기 SSR을 취급하기 위한 기법의 다른 구현의 블록도를 보여준다. 도 2에 도시된 방식과 유사하게, CPU(405)는 가속기(415)에 연결되고, CPU(405) 및 가속기(415)는 시스템 메모리(420)에 연결된다. CPU(405)는 임의의 수의 코어를 나타내는 코어(410A-C)를 포함한다. 가속기(415)는 시스템 메모리(420)의 대기열(430)에 인수를 설정함으로써 시작한다. 그런 다음, 가속기(415)는 SSR을 코어(410A)로 전송한다. 일 구현에서, 코어(410A)는 코어(410B)상의 하반부 인터럽트 핸들러를 스케줄링하는 상반부 인터럽트 핸들러를 실행한다. 하반부 인터럽트 핸들러는 소프트웨어 작업 대기열(425) 및 대기열(430)에 작업 대기열을 설정하고, 코어(410C) 상에서 커널 작업자 스레드를 대기열에 넣는다. 그러나, 도 2에 도시된 기법에 반해, 거버너(governer)(440)는 커널 작업자 스레드가 SSR을 서비스하기 전에 얼마나 오랫동안 커널 작업자 스레드를 지연시킬지를 결정한다. 일 구현에서, 거버너(440)는 지연을 구현하기 위해 카운터(442)를 사용한다. 카운터(442)는 클록 사이클의 카운트 또는 임의의 다른 적절한 시간 측정을 사용하여 구현될 수 있다. 이 지연 후, 커널 작업자 스레드는 SSR을 서비스하고, 시스템 서비스 응답을 생성하고 이를 가속기(415)에 전달한다. 구현에 따라 거버너(440)는 OS 스레드, 드라이버의 일부 또는 하드웨어 및/또는 소프트웨어의 적절한 조합으로 구현된다.
일 구현에서, SSR을 처리하는 데 소비된 CPU 시간의 양이 원하는 속도보다 높을 때 이미 도착한 SSR의 처리를 지연시킴으로써 SSR 속도가 조정된다. 이러한 지연은 결국 새로운 SSR 요청 생성을 중지하기 위해 가속기(415)를 역압(back-pressure)할 것이다. 가속기 SSR을 완전히 거부하는 대신 SSR 서비싱에 지연을 추가하면, 가속기가 SSR을 생성하는 방법을 수정하지 않고도 이 기법이 구현된다. 일 구현에서, 거버너(440)는 SSR을 처리하는 데 소비된 CPU 시간의 양에 기초하여 SSR의 처리를 지연할지 여부를 결정한다. 일 구현에서, 거버너(440)는 커널 작업자 스레드로서 구현된다.
일 구현에서, SSR 서비스에 관련된 모든 OS 루틴은 CPU 사이클을 추적한다. 이 정보는 주기적으로(예: 10 μs마다) 깨어나는 커널 백그라운드 스레드에 의해 사용되어, 해당 기간 동안 SSR 서비스에 소비된 CPU 사이클 수가 지정된 한계치를 초과하는지 계산할 수 있다. 일 구현에서 한계치는 관리자가 지정한다. 다른 구현에서, 한계치는 임의의 주어진 시간에 실행되는 애플리케이션의 특성을 기반으로 OS에 의해 동적으로 설정된다.
또한, 커널 작업자 스레드는 도 4에 도시된 바와 같이 SSR을 처리한다. SSR 처리를 시작할 때 작업자 스레드는 SSR 처리에 소비된 CPU 사이클이 지정된 임계 값을 초과하는지 확인한다. 작업자 스레드는 백그라운드 스레드에 의해 수집된 정보를 사용하여, SSR 처리에 소비된 CPU 사이클이 지정된 임계 값을 초과하는지 결정한다. SSR을 처리하는 데 소요된 CPU 사이클 수가 지정된 임계 값보다 작거나 같으면, 작업자 스레드는 원하는 지연을 0으로 설정하고 SSR 처리를 즉시 계속한다. 그렇지 않고 SSR을 처리하는 데 소비된 CPU 시간이 지정된 임계 값을 초과하면, 작업자 스레드가 SSR 처리에 추가할 지연 량을 결정한다. 그런 다음 작업자 스레드는 후속 SSR을 처리하기 전에 이 지연 량을 기다린다. SSR의 서비스를 지연시킴으로써, 거버너(440)는 가속기(415)가 SSR 생성 속도를 조절하도록한다. 예를 들어, 가속기(415)는 일반적으로 각 SSR과 관련된 상태를 저장하기 위한 제한된 공간을 갖는다. 따라서, SSR을 지연 시키면 가속기(415)가 SSR 생성 속도를 감소시킨다.
일 구현에서, 작업자 스레드는 SSR을 처리하기 위한 지연 량을 설정하기 위해 지수 백오프 기법(exponential backoff scheme)을 사용한다. 지수 백오프 방식을 사용하는 작업자 스레드의 한 예는 아래 도 5의 방법(500)에 관한 논의에서 더 자세히 설명된다. 예를 들어, 일 구현에서 원하는 지연이 이전에 0보다 컸으면, 작업자 스레드가 지연을 증가시킨다. 그렇지 않고 원하는 지연이 이전에 0이었으면 작업자 스레드는 지연을 초기 값(예: 5 μs)으로 설정한다. 그런 다음 SSR 처리는 작업자 스레드가 결정한 양만큼 지연된다. 지연이 증가함에 따라, 가속기(415)는 정지하기 시작하고 SSR 생성 속도는 결국 감소한다. 오버헤드가 임계 값 아래로 떨어지면 SSR이 인위적인 지연없이 다시 한 번 서비스된다.
다른 구현에서, 거버너(440)는 QoS 보장 메커니즘을 구현하기 위해 다른 기술을 사용한다. 예를 들어, 다른 구현에서, 거버너(440)는 SSR의 서비스에 추가할 지연 량을 결정하기 위해 룩업 테이블을 유지한다. 이 구현에서 SSR을 서비스하는 데 소요된 CPU 사이클 수가 계산될 때, 이 숫자는 후속 SSR의 서비스에 추가할 해당 지연 값을 검색하기 위한 조회 테이블에 대한 입력으로 사용된다. 다른 구현에서, 거버너(440)는 다른 적절한 유형의 QoS 보장 메커니즘을 구현한다.
이제 도 5를 참조하면, 가속기로부터의 요청을 처리하는 동안 CPU에 QoS 보장을 시행하기 위한 방법(500)의 일 구현이 도시되어 있다. 논의의 목적을 위해, 이 구현의 단계와 도 6-7의 단계들이 순서대로 표시된다. 그러나, 설명된 방법의 다양한 구현에서, 설명된 요소 중 하나 이상이 동시에, 도시된 것과 다른 순서로, 또는, 완전히 생략된다는 점에 유의한다. 다른 추가 요소도 원하는대로 수행된다. 본 명세서에 설명된 다양한 시스템 또는 장치 중 임의의 것은 방법(500)을 구현하도록 구성된다.
CPU는 가속기로부터 시스템 서비스 요청(SSR)을 서비스하는 데 소비된 CPU 사이클 수가 임계 값보다 큰지 결정한다(조건부 블록 505). 여기서 CPU는 제 1 프로세서로 지칭되고 가속기는 여기서 제 2 프로세서로 지칭된다는 점에 유의한다. 다른 구현에서, CPU는 조건부 블록 505에서 여러 가속기로부터 SSR을 서비스하는 데 소비된 CPU 사이클 수를 추적한다. SSR 서비스에 소비된 CPU의 수가 임계값보다 작거나 동일한 경우(조건부 블록 505에서 "아니오" 구간), CPU는 지연을 0으로 설정한다(블록 510). 그렇지 않고 SSR을 서비스하는 데 소비된 CPU 사이클 수가 임계 값보다 크면(조건부 블록 505, "예" 구간) 스레드는 지연이 현재 0보다 큰지 여부를 결정한다(조건부 블록 515).
지연이 현재 0이면(조건부 블록 515, "아니오" 구간), 스레드는 지연을 초기 값(예: 10 μsec)으로 설정한다(블록 520). 초기 값은 구현마다 다르다. 그렇지 않고 지연이 현재 0보다 크면(조건부 블록 515, "예" 구간), 스레드는 지연 값을 증가시킨다(블록 525). 다음으로, 블록 520 또는 525 이후, 스레드는 가속기로부터 새로운 SSR을 수신한다(블록 530). 새로운 SSR을 서비스하기 전에 스레드는 현재 지연 값과 동일한 기간 동안 휴면한다(블록 535). 블록(535)에서 사용된 "휴면"(sleep)이라는 용어는 새로운 SSR 서비스를 시작하기 전에 현재 지연 값과 동일한 시간을 기다리는 것을 의미한다. "지연"과 동일한 기간 동안 휴면 후, 스레드는 새로운 SSR을 서비스하고, 결과를 가속기에 반환한다(블록 540). 블록 540 이후, 방법(500)이 종료된다.
이제 도 6에서, 요청의 서비스에 추가된 지연을 동적으로 조정하기 위한 방법(600)의 일 구현이 도시된다. 제 1 프로세서는 제 1 프로세서의 스레드가 이전 시간 간격 동안 제 2 프로세서에 의해 생성된 요청을 서비스하는 데 소비하는 사이클 수를 모니터링한다(블록 605). 다른 구현에서, 단지 사이클 수를 모니터링하는 것이 아니라, 제 1 프로세서는 제 2 프로세서에 의한 서비스 요청에 관련된 오버헤드를 모니터링하고, 오버헤드는 다수의 구성요소를 포함한다. 예를 들어, 오버헤드에는 요청을 실제로 서비스하는 데 소요된 시간, 사용자와 커널 모드간에 전환하는 데 소요된 간접 CPU 오버헤드, 커널의 다양한 프로세서 리소스 사용으로 인해 보다 낮은 IPC 속도로 실행되는 사용자 모드에서 소요된 시간이 포함된다. 일 구현에서, 제 1 프로세서는 CPU이고 제 2 프로세서는 가속기(예를 들어, GPU)이다. 다른 구현에서, 제 1 및 제 2 프로세서는 다른 유형의 프로세서이다. 사이클 수를 카운팅하는 간격의 기간은 구현마다 다르다.
제 1 프로세서 스레드가 이전 시간 간격 동안 제 2 프로세서에 의해 생성된 요청을 서비스하는 데 소비하는 사이클 수가 임계 값보다 큰 경우(조건부 블록 610, "예" 구간), 제 1 프로세서는 제 2 프로세서로부터의 후속 요청의 서비스에 제 1 지연 량을 추가한다(블록 615). 그렇지 않고, 제 1 프로세서가 이전 시간 간격 동안 제 2 프로세서에 의해 생성된 요청을 처리하는 데 소비하는 사이클 수가 임계 값보다 작거나 같으면(조건부 블록 610, "아니오" 구간), 제 1 프로세서는 제 2 프로세서로부터의 후속 요청의 서비스에 제 2 지연 량을 추가하고, 여기서 제 2 지연 량은 제 1 지연 량보다 작다(블록 620). 경우에 따라 제 2 지연 량은 0이므로 제 1 프로세서가 후속 요청을 즉시 처리한다. 블록 615 및 620 이후에, 방법 600이 종료된다.
이제 도 7에서, 시스템 서비스 요청(SSR)을 처리하기 위한 방법(700)의 일 구현이 도시된다. 제 1 프로세서는 제 2 프로세서로부터 SSR을 수신한다(블록 705). 일 구현에서, 제 1 프로세서는 CPU이고 제 2 프로세서는 가속기(예를 들어, GPU)이다. 다른 구현에서, 제 1 및 제 2 프로세서는 다른 유형의 프로세서이다. 제 2 프로세서로부터 SSR을 수신하면, 제 1 프로세서는 제 1 조건이 검출되었는지 여부를 판단한다(조건부 블록 710). 일 구현에서, 제 1 조건은 이전 시간 간격 동안 제 2 프로세서로부터(및 선택적으로 하나 이상의 다른 프로세서로부터) SSR을 서비스하기 위한 제 1 프로세서의 오버헤드가 임계 값보다 큰 경우다. 오버헤드에는 SSR을 실제로 서비스하는 데 소비된 사이클, SSR 서비스 전/후에 사용자와 커널 모드 간에 전환하는 데 소비된 사이클, 마이크로 아키텍처 상태의 저하로 인해 보다 낮은 IPC 속도로 실행되는 사용자 모드에서 소비된 사이클(예: 보다 적은 리소스가 가용하도록 프로세서 리소스의 소모), 등이다. 다른 구현에서, 제 1 조건은 다양한 다른 유형의 조건 중 임의의 것 또는 다수의 조건들의 조합이다.
제 1 조건이 검출된 경우(조건부 블록 710, "예" 구간), 제 1 프로세서는 SSR의 서비스를 시작하기 전에 제 1 시간 동안 대기한다(블록 715). 대안으로서, 제 1 프로세서는 제 1 조건이 검출되었을 때 SSR 구현의 서비스에 제 1 우선순위를 할당한다. 제 1 조건이 감지되지 않은 경우(조건부 블록 710, "아니오" 구간), 제 1 프로세서는 SSR의 서비스를 시작하기 전에 제 2 시간 동안 대기하며, 여기서 제 2 시간은 제 1 시간보다 적다(블록 720). 어떤 경우에는 제 2 시간의 크기가 0이므로 제 1 프로세서가 SSR을 즉시 처리한다. 대안으로서, 다른 구현에서, 제 1 프로세서는 제 1 조건이 검출되지 않았을 때 SSR의 서비스에 제 2 우선 순위를 할당하며, 여기서 제 2 우선 순위는 제 1 우선 순위보다 높다. 블록 715 및 720 후에, 방법(700)이 종료된다.
다양한 구현에서, 소프트웨어 애플리케이션의 프로그램 명령어는 여기에 설명된 방법 및/또는 메커니즘을 구현하는 데 사용된다. 예를 들어, 범용 또는 특수 목적 프로세서에 의해 실행 가능한 프로그램 명령어가 고려된다. 다양한 구현에서 이러한 프로그램 명령어는 고급 프로그래밍 언어로 표현된다. 다른 구현에서, 프로그램 명령어는 고급 프로그래밍 언어로부터 바이너리, 중간 또는 기타 형식으로 컴파일된다. 또는, 하드웨어의 거동 또는 설계를 설명하는 프로그램 명령어가 작성된다. 이러한 프로그램 명령어는 C와 같은 고급 프로그래밍 언어로 표현된다. 또는, Verilog와 같은 하드웨어 설계 언어(HDL)가 사용된다. 다양한 구현에서, 프로그램 명령어는 임의의 다양한 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 저장 매체는 프로그램 실행을 위해 컴퓨팅 시스템에 프로그램 명령어를 제공하기 위해 사용 중에 컴퓨팅 시스템에 의해 액세스 가능하다. 일반적으로 말해서, 그러한 컴퓨팅 시스템은 프로그램 명령어를 실행하도록 구성된 적어도 하나 이상의 메모리 및 하나 이상의 프로세서를 포함한다.
전술일 구현은 구현의 비 제한적인 예일 뿐이라는 점이 강조되어야한다. 상기 개시 내용이 완전히 이해되면 수많은 변형 및 수정이 당업자에게 명백해질 것이다. 다음의 청구 범위는 그러한 모든 변형 및 수정을 포함하도록 해석되도록 의도된다.

Claims (20)

  1. 운영 체제 커널의 복수의 스레드를 실행하도록 구성된 회로를 포함하는 제 1 프로세서; 및
    상기 제 1 프로세서에 결합된 제 2 프로세서 - 상기 제 2 프로세서는 애플리케이션을 실행하도록 그리고 서비스를 위해 시스템 서비스 요청을 상기 제 1 프로세서에 전송하도록 구성된 회로를 포함함 - 를 포함하는 시스템에 있어서,
    상기 제 1 프로세서는:
    제 1 프로세서에서 실행되는 스레드가 이전 시간 간격 동안 시스템 서비스 요청을 서비스하는데 소비한 사이클 수를 모니터링하도록, 그리고,
    상기 사이클 수가 임계 값을 초과하는지에 대한 결정에 기초하여, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하도록, 구성되는, 시스템.
  2. 제 1 항에 있어서, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 과정은:
    사이클 수가 상기 임계 값보다 크다는 결정에 응답하여 제 1 지연 량을 추가하는 과정; 및
    사이클 수가 상기 임계 값보다 작거나 같다는 결정에 응답하여 제 2 지연 량을 추가하는 과정 - 제 2 지연 량은 제 1 지연 량보다 작음 - 을 포함하는, 시스템.
  3. 제 2 항에 있어서, 상기 제 1 프로세서의 회로는 사이클 수가 임계 값보다 크고 이전 지연 량이 0보다 큼에 응답하여, 제 1 지연 량을 이전 지연 량보다 큰 값으로 설정하도록 구성되는, 시스템.
  4. 제 1 항에 있어서, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 과정은:
    사이클 수가 임계 값보다 크다는 결정에 응답하여, 주어진 시스템 서비스 요청의 서비스를 시작하기 전에 제 1 기간을 기다리는 과정; 및
    사이클 수가 임계 값보다 작거나 같음에 응답하여 주어진 시스템 서비스 요청의 서비스를 개시하기 전에 제 2 기간을 대기하는 과정을 포함하며, 제 2 기간은 제 1 기간보다 작은, 시스템.
  5. 제 4 항에 있어서, 상기 임계 값은 운영 체제 커널에 의해 조정되는, 시스템.
  6. 제 1 항에 있어서, 상기 제 1 프로세서는 또한:
    이전 시간 간격 동안 시스템 서비스 요청의 서비스와 관련된 오버헤드를 계산하도록, 그리고,
    상기 오버헤드를 기반으로 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하도록 구성되는, 시스템.
  7. 제 1 항에 있어서, 상기 제 1 프로세서의 회로는,
    이전 시간 간격 동안 시스템 서비스 요청의 서비스와 관련된 오버헤드를 계산하도록 구성되고, 상기 오버헤드는 시스템 서비스 요청을 서비스하는 데 소비된 사이클, 사용자 모드와 커널 모드 간을 전환하는 데 소비된 사이클, 보다 낮은 사이클 당 명령(IPC) 속도로 실행되는 사용자 모드에서 소비된 사이클 중 하나 이상을 포함하며, 그리고,
    상기 오버헤드를 기반으로 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하도록 구성되는, 시스템.
  8. 제 1 프로세서에 의해, 제 1 프로세서에서 실행되는 스레드가 이전 시간 간격 동안 제 2 프로세서에 의해 생성된 시스템 서비스 요청을 서비스하는 데 소비한 사이클 수를 모니터링하는 단계; 및
    제 1 프로세서의 스레드가 이전 시간 간격 동안 시스템 서비스 요청을 서비스하는데 소비한 사이클 수가 임계 값을 초과하는지에 대한 결정에 기초하여, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 단계는:
    사이클 수가 상기 임계 값보다 크다는 결정에 응답하여 제 1 지연 량을 추가하는 단계; 및
    사이클 수가 상기 임계 값보다 작거나 같다는 결정에 응답하여 제 2 지연 량을 추가하는 단계 - 제 2 지연 량은 제 1 지연 량보다 작음 - 를 포함하는, 방법.
  10. 제 9 항에 있어서, 사이클 수가 임계 값보다 크고 이전 지연 량이 0보다 큼에 응답하여, 제 1 지연 량을 이전 지연 량보다 큰 값으로 설정하는 단계를 더 포함하는, 방법.
  11. 제 8 항에 있어서, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 단계는:
    사이클 수가 임계 값보다 크다는 결정에 응답하여 주어진 시스템 서비스 요청의 서비스를 시작하기 전에 제 1 기간을 기다리는 단계; 및
    사이클 수가 임계 값보다 작거나 같다는 결정에 응답하여 주어진 시스템 서비스 요청의 서비스를 개시하기 전에 제 2 기간을 대기하는 단계 - 제 2 기간은 제 1 기간보다 작음 - 를 포함하는, 방법.
  12. 제 11 항에 있어서, 상기 임계 값은 운영 체제 커널에 의해 설정되는, 방법.
  13. 제 8 항에 있어서,
    이전 시간 간격 동안 시스템 서비스 요청의 서비스와 관련된 오버헤드를 계산하는 단계; 및
    오버헤드를 기반으로 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 단계를 더 포함하는, 방법.
  14. 제 8 항에 있어서,
    이전 시간 간격 동안 시스템 서비스 요청의 서비스와 관련된 오버헤드를 계산하는 단계 - 오버헤드는 시스템 서비스 요청을 서비스하는 데 소비된 사이클, 사용자와 커널 모드 간의 전환에 소비된 사이클, 보다 낮은 사이클 당 명령(IPC) 속도로 실행되는 사용자 모드에서 소비된 사이클 중 하나 이상을 포함함 - 및
    오버헤드를 기반으로 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 단계를 더 포함하는, 방법.
  15. 메모리;
    상기 메모리에 결합된 하나 이상의 실행 유닛을 포함하는 장치에 있어서;
    상기 장치는:
    하나 이상의 실행 유닛 상에서 실행되는 스레드가 이전 시간 간격 동안 시스템 서비스 요청을 서비스하는 데 소비한 사이클 수를 모니터링하도록, 그리고
    사이클 수가 임계 값을 초과하는지에 대한 결정에 기초하여, 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하도록 구성되는, 장치.
  16. 제 15 항에 있어서, 상기 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 과정은:
    사이클 수가 상기 임계 값보다 크다는 결정에 응답하여 제 1 지연 량을 추가하는 과정; 및
    사이클 수가 상기 임계 값보다 작거나 같다는 결정에 응답하여 제 2 지연 량을 추가하는 과정 - 제 2 지연 량은 제 1 지연 량보다 작음 - 을 포함하는, 장치.
  17. 제 16 항에 있어서, 상기 장치는 사이클 수가 상기 임계 값보다 크고 이전 지연 량이 0보다 큼에 응답하여, 제 1 지연 량을 이전 지연 량보다 큰 값으로 설정하도록 추가로 구성되는, 장치.
  18. 제 15 항에 있어서, 상기 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하는 과정은:
    사이클 수가 임계 값보다 크다는 결정에 응답하여 주어진 시스템 서비스 요청의 서비스를 시작하기 전에 제 1 기간을 대기하는 과정; 및
    사이클 수가 임계 값보다 작거나 같다는 결정에 응답하여 주어진 시스템 서비스 요청의 서비스를 개시하기 전에 제 2 기간을 대기하는 과정 - 제 2 구간은 제 1 기간보다 작음 - 를 포함하는, 장치.
  19. 제 18 항에 있어서, 상기 임계 값은 운영 체제에 의해 설정되는, 장치.
  20. 제 15 항에 있어서, 상기 장치는,
    이전 시간 간격 동안 시스템 서비스 요청의 서비스와 관련된 오버헤드를 계산하도록, 그리고,
    오버헤드를 기반으로 주어진 시스템 서비스 요청의 서비스에 추가되는 지연 량을 조정하도록 또한 구성되는, 장치.
KR1020207032966A 2018-04-16 2019-02-14 가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화 KR102523589B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/954,382 US11275613B2 (en) 2018-04-16 2018-04-16 Enforcing central processing unit quality of service guarantees when servicing accelerator requests
US15/954,382 2018-04-16
PCT/US2019/017933 WO2019203919A1 (en) 2018-04-16 2019-02-14 Enforcing central processing unit quality of service guarantees when servicing accelerator requests

Publications (2)

Publication Number Publication Date
KR20210005636A KR20210005636A (ko) 2021-01-14
KR102523589B1 true KR102523589B1 (ko) 2023-04-19

Family

ID=65685962

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207032966A KR102523589B1 (ko) 2018-04-16 2019-02-14 가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화

Country Status (6)

Country Link
US (2) US11275613B2 (ko)
EP (1) EP3782032B1 (ko)
JP (1) JP7160941B2 (ko)
KR (1) KR102523589B1 (ko)
CN (1) CN112041822A (ko)
WO (1) WO2019203919A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11169812B2 (en) 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
US11508124B2 (en) * 2020-12-15 2022-11-22 Advanced Micro Devices, Inc. Throttling hull shaders based on tessellation factors in a graphics pipeline
US11776085B2 (en) 2020-12-16 2023-10-03 Advanced Micro Devices, Inc. Throttling shaders based on resource usage in a graphics pipeline
US11710207B2 (en) 2021-03-30 2023-07-25 Advanced Micro Devices, Inc. Wave throttling based on a parameter buffer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161920A1 (en) * 2005-01-14 2006-07-20 Yongli An Method, system, and computer program for managing a queuing system
US8286139B2 (en) * 2008-03-19 2012-10-09 International Businesss Machines Corporation Call stack sampling for threads having latencies exceeding a threshold
US20150234677A1 (en) * 2014-02-19 2015-08-20 International Business Machines Corporation Dynamically adjusting wait periods according to system performance
US20170300357A1 (en) 2015-12-21 2017-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Priority Trainer For Many Core Processing System
US20180069767A1 (en) 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3008895B2 (ja) * 1997-06-26 2000-02-14 日本電気株式会社 マルチプロセッサの負荷の均一化装置
JPH11259311A (ja) * 1998-03-06 1999-09-24 Chokosoku Network Computer Gijutsu Kenkyusho:Kk タスク管理方法
DE60223177T2 (de) * 2002-01-24 2008-07-31 Fujitsu Ltd., Kawasaki Computer zur dynamischen bestimmung der unterbrechungsverzögerung
JP4116064B1 (ja) * 2007-04-18 2008-07-09 三菱電機インフォメーションシステムズ株式会社 クライアント装置
US8782663B2 (en) * 2009-05-11 2014-07-15 Nec Corporation Terminal device, communication method used in the terminal device and recording medium
US20150046676A1 (en) * 2013-08-12 2015-02-12 Qualcomm Incorporated Method and Devices for Data Path and Compute Hardware Optimization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161920A1 (en) * 2005-01-14 2006-07-20 Yongli An Method, system, and computer program for managing a queuing system
US8286139B2 (en) * 2008-03-19 2012-10-09 International Businesss Machines Corporation Call stack sampling for threads having latencies exceeding a threshold
US20150234677A1 (en) * 2014-02-19 2015-08-20 International Business Machines Corporation Dynamically adjusting wait periods according to system performance
US20170300357A1 (en) 2015-12-21 2017-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Priority Trainer For Many Core Processing System
US20180069767A1 (en) 2016-09-06 2018-03-08 Advanced Micro Devices, Inc. Preserving quality of service constraints in heterogeneous processing systems

Also Published As

Publication number Publication date
US11275613B2 (en) 2022-03-15
WO2019203919A1 (en) 2019-10-24
EP3782032A1 (en) 2021-02-24
KR20210005636A (ko) 2021-01-14
EP3782032B1 (en) 2022-05-25
CN112041822A (zh) 2020-12-04
JP2021521541A (ja) 2021-08-26
US20220269535A1 (en) 2022-08-25
US20190317807A1 (en) 2019-10-17
JP7160941B2 (ja) 2022-10-25

Similar Documents

Publication Publication Date Title
KR102523589B1 (ko) 가속기 요청을 서비스할 때의 중앙 처리 유닛의 서비스 품질 보장 강화
US10613876B2 (en) Methods and apparatuses for controlling thread contention
US10649935B2 (en) Deferred inter-processor interrupts
CN105183128B (zh) 强制处理器进入低功率状态
US20190042331A1 (en) Power aware load balancing using a hardware queue manager
US10048741B1 (en) Bandwidth-aware multi-frequency performance estimation mechanism
US20150113193A1 (en) Interrupt Distribution Scheme
US20190065243A1 (en) Dynamic memory power capping with criticality awareness
KR101707096B1 (ko) 일반 호스트 기반 제어기 레이턴시 방법 및 장치
US10747298B2 (en) Dynamic interrupt rate control in computing system
US10496149B2 (en) Method of operating CPU and method of operating system having the CPU
TWI670592B (zh) 系統單晶片、關於其之方法及包括該系統單晶片之裝置
WO2012113232A1 (zh) 调整时钟中断周期的方法和装置
EP3991425A1 (en) Real-time gpu rendering with performance guaranteed power management
US9274827B2 (en) Data processing apparatus, transmitting apparatus, transmission control method, scheduling method, and computer product
US10127076B1 (en) Low latency thread context caching
US8417985B2 (en) Adjusting system clock to faster speed upon receiving mass storage command and back to lower speed upon completion of all commands
US9690727B2 (en) System internal latency measurements in realtime applications
WO2022271229A1 (en) Techniques to enable quality of service control for an accelerator device

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)