CN112041822A - 在服务于加速器请求时加强中央处理单元服务质量保证 - Google Patents
在服务于加速器请求时加强中央处理单元服务质量保证 Download PDFInfo
- Publication number
- CN112041822A CN112041822A CN201980029389.3A CN201980029389A CN112041822A CN 112041822 A CN112041822 A CN 112041822A CN 201980029389 A CN201980029389 A CN 201980029389A CN 112041822 A CN112041822 A CN 112041822A
- Authority
- CN
- China
- Prior art keywords
- cycles
- processor
- service
- delay
- amount
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title description 47
- 230000002708 enhancing effect Effects 0.000 title description 2
- 238000000034 method Methods 0.000 claims abstract description 33
- 230000004044 response Effects 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims 3
- 230000007423 decrease Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 208000019116 sleep disease Diseases 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3419—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3433—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)时加强处理器服务质量保证的系统、设备和方法。一种系统包括执行操作系统的第一处理器和执行应用程序的第二处理器,所述应用程序生成供所述第一处理器服务的SSR。所述第一处理器监测在先前时间间隔内服务于SSR所花费的循环数,并且如果所述循环数大于阈值,则所述第一处理器开始延迟对后续SSR的服务。在一个实现方式中,如果先前延迟为非零,则所述第一处理器增大在对后续SSR的服务中所使用的延迟。如果所述循环数小于或等于所述阈值,则所述第一处理器无延迟地服务于SSR。随着延迟增大,所述第二个处理器开始失速,并且其SSR生成速率下降,从而减小所述第一处理器上的负载。
Description
背景技术
本发明是在政府的支持下根据美国能源部授予的PathForward Project withLawrence Livermore National Security(基本合同号DE-AC52-07NA27344,分包合同号B620717)进行的。美国政府对本发明具有某些权利。
相关技术描述
现代片上系统(SoC)通常在单个芯片或在多芯片模块上集成大量不同类型的部件。例如,典型的SoC包括主处理器(例如,中央处理单元(CPU))以及加速器(诸如集成的图形处理单元(GPU)和媒体引擎)。随着这些加速器变得越来越强大,预期它们会直接调用复杂的操作系统(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时间的百分比低于指定阈值,则内核工作线程将期望的延迟设置为零,并且立即继续处理SSR。否则,如果处理SSR所花费的CPU时间的百分比大于指定阈值,则内核工作线程将基于指数退避来设置处理SSR的延迟量。例如,在一个实现方式中,如果期望的延迟先前大于零,则内核工作线程使延迟增大到大于先前延迟值的值。例如,在各种实现方式中,新延迟值可以是先前值的倍数(例如,2倍、3倍等)。在其他实现方式中,新延迟值可以是并非先前延迟值的倍数的更大的值。否则,如果期望的延迟先前为零,则内核工作线程将新延迟设置为初始标称值(例如,10μs)。然后,将SSR的处理延迟这个量。
随着延迟增大,一个或多个加速器将开始失速,并且SSR速率最终将下降。当CPU开销下降到所设置极限以下时,将在没有任何人为延迟的情况下再次服务于SSR。另外,在一个实现方式中,仅当对加速器SSR的服务干扰一个或多个CPU应用程序时才自动地对这种服务进行节流。在此实现方式中,如果CPU以其他方式闲置,则即使CPU开销高于极限,也尽可能快地服务于SSR。在一个实现方式中,通过向OS调度程序查询运行列表中正在等待的其他进程来实现这种检查。
现在参考图1,示出计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100至少包括处理器105A-105N、输入/输出(I/O)接口120、总线125、一个或多个存储器控制器130、网络接口135和一个或多个存储器装置140。在其他实现方式中,计算系统100包括其他部件并且/或者计算系统100以不同方式布置。处理器105A-105N表示系统100中所包括的任何数量的处理器。
在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在此实现方式中,处理器105N是加速器引擎。例如,在一个实现方式中,处理器105N是具有高度并行的体系结构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等。在一些实现方式中,处理器105A-105N包括多个加速器引擎。这多个加速器引擎被配置为将系统服务请求(SSR)发送到处理器105A以得到处理。处理器105A被配置为监测与处理这些SSR相关联的开销。取决于实现方式,处理器105A按CPU循环数、总CPU循环的百分比、时间量且/或基于其他度量来监测开销。如果在先前时间间隔内的开销超过阈值,则处理器105A延迟SSR的处理且/或以其他方式减少用来处理SSR的资源的量。
一个或多个存储器控制器130表示可由处理器105A-105N和耦接到I/O接口120的I/O装置(未示出)访问的任何数量和类型的存储器控制器。一个或多个存储器控制器130耦接到任何数量和类型的一个或多个存储器装置140。一个或多个存储器装置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,示出具有CPU和加速器的系统200的一个实现方式的框图。CPU 205耦接到加速器215,而CPU 205和加速器215都耦接到系统存储器220。CPU 205包括表示任何数量的核心的核心210A-210C。核心210A-210C在本文中也称为“执行单元”。图2中示出CPU205处理由加速器215生成的系统服务请求(SSR)的流程的一个实例。加速器215通过在系统存储器220中的队列230中设置参数开始。然后,加速器215将SSR发送到核心210A。在一个实现方式中,核心210A执行上半部中断处理程序,所述上半部中断处理程序在核心210B上调度下半部中断处理程序。下半部中断处理程序在软件工作队列225和队列230中设置工作队列,并且将内核工作线程在核心210C上排队。内核工作线程通过访问软件工作队列225处理SSR。然后,内核工作线程处理SSR,并且生成系统服务响应并将其传递给加速器215。
应理解,图2示出根据一个实现方式的处理加速器SSR的一个实例。在其他实现方式中,使用包括其他步骤和/或其他步骤次序的用于处理加速器SSR的其他方案。图2所示的方法的缺点之一在于,CPU 205缺乏在请求数量开始影响CPU 205的性能的情况下对由加速器215生成的请求进行节流的能力。例如,在另一实现方式中,CPU205耦接到多个加速器,每个加速器在短时间段内生成大量SSR。
现在参考图3,示出时序图300的一个实现方式,所述时序图300示出与处理加速器SSR相关联的开销。图3的时序图300对应于图2所示的用于CPU 205处理由加速器215生成的SSR的步骤。时序图300的第一行示出用于加速器215的事件的时序。在一个实现方式中,加速器215生成由核心210A处理的中断305。区域310表示CPU 205在用户模式与内核模式之间转变所花费的间接CPU开销。区域315表示调度下半部中断处理程序所花费的时间。在调度下半部中断处理程序之后,区域320表示用于在内核模式与用户模式之间转变的另一间接CPU开销。区域325表示由于内核在SSR的处理中使用处理器的各种资源(诸如高速缓存和转换后备缓冲器(TLB)空间)而在用户模式下以较低的每循环指令(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表示)。
除了CPU 205在处理SSR时所花费的时间之外,加速器215经历由于CPU 205处理SSR的时延所造成的失速,如持续时间370所示。虽然加速器215具有时延隐藏能力,但CPU205处理SSR的时延可能比加速器215能够隐藏的时延更长。如通过时序图300所表示的事件看出,加速器SSR直接和间接地影响CPU性能,并且CPU对SSR的处理也影响加速器的性能。
现在转到图4,示出用于处理加速器SSR的方案的另一实现方式的框图。类似于图2所示的方案,CPU 405耦接到加速器415,而CPU405和加速器415都耦接到系统存储器420。CPU 405包括表示任何数量的核心的核心410A-410C。加速器415通过在系统存储器420中的队列430中设置参数开始。然后,加速器415将SSR发送到核心410A。在一个实现方式中,核心410A执行上半部中断处理程序,所述上半部中断处理程序在核心410B上调度下半部中断处理程序。下半部中断处理程序在软件工作队列425和队列430中设置工作队列,并且将内核工作线程在核心410C上排队。然而,与图2所示的方案相对照,调控器440确定在内核工作线程服务于SSR之前将内核工作线程延迟多长时间。在一个实现方式中,调控器440使用计数器442来实现延迟。计数器442可使用时钟循环的计数或任何其他合适的时间量度来实现。在此延迟之后,内核工作线程服务于SSR,并且生成系统服务响应并将其传递给加速器415。取决于实现方式,将调控器440实现为OS线程、驱动器的一部分或者硬件和/或软件的任何合适的组合。
在一种实现方式中,由于在处理SSR所花费的CPU时间量高于期望的速率时延迟已经到达的SSR的处理,减缓了SSR速率。此延迟将最终反压加速器415以停止生成新SSR请求。通过向服务于SSR添加延迟而不是直接拒绝加速器SSR,可实现此方案而无需对加速器如何生成SSR进行任何修改。在一个实现方式中,调控器440基于处理SSR所花费的CPU时间量来决定是否延迟SSR的处理。在一个实现方式中,将调控器440实现为内核工作线程。
在一种实现方式中,服务于SSR所涉及的所有OS例程均跟踪其CPU循环。然后,此信息由内核后台线程使用,所述内核后台线程周期性地(例如,每10μs)唤醒,以计算在时段内服务于SSR所花费的CPU循环数是否超过指定极限。在一个实现方式中,极限由管理员指定。在另一实现方式中,极限是由OS基于在任何给定时间运行的应用程序的特性来动态地设置。
另外,内核工作线程处理SSR,如图4所示。在开始处理SSR时,工作线程检查处理SSR所花费的CPU循环是否高于指定阈值。工作线程利用由后台线程收集的信息来确定处理SSR所花费的CPU循环是否高于指定阈值。如果处理SSR所花费的CPU循环数小于或等于指定阈值,则工作线程将期望的延迟设置为零,并且立即继续处理SSR。否则,如果处理SSR所花费的CPU时间高于指定阈值,则工作线程确定要添加到SSR的处理的延迟量。然后,工作线程在处理后续SSR之前等待此延迟量。通过延迟对SSR的服务,调控器440致使加速器415对其SSR生成速率进行节流。例如,加速器415通常具有有限的空间来存储与每个SSR相关联的状态。因此,延迟SSR导致加速器415降低其SSR生成速率。
在一个实现方式中,工作线程使用指数退避方案来设置用于处理SSR的延迟量。以下在关于图5的方法500的讨论中更详细地描述使用指数退避方案的工作线程的一个实例。例如,在一个实现方式中,如果期望的延迟先前大于零,则工作线程增大延迟。否则,如果期望的延迟先前为零,则工作线程将延迟设置为初始值(例如,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在本文中称为第一处理器,并且加速器在本文中称为第二处理器。在另一实现方式中,CPU在条件框505中跟踪服务于来自多个加速器的SSR所花费的CPU循环数是否。如果服务于SSR所花费的CPU循环数小于或等于阈值(条件框505,“否”分支),则CPU设置等于零的延迟(框510)。否则,如果服务于SSR所花费的CPU循环数大于阈值(条件框505,“是”分支),则线程确定延迟当前是否大于零(条件框515)。
如果延迟当前等于零(条件框515,“否”分支),则线程将延迟设置为初始值(例如,10μs)(框520)。初始值根据实现方式而变化。否则,如果延迟当前大于零(条件框515,“是”分支),则线程增大延迟的值(框525)。接下来,在框520或525之后,线程从加速器接收新SSR(框530)。在服务于新SSR之前,线程休眠达等于当前延迟值的持续时间(框535)。注意,框535中所使用的术语“休眠”是指在开始服务于新SSR之前等待等于当前延迟值的时间量。在休眠达等于“延迟”的持续时间之后,线程服务于新SSR,并且将结果返回给加速器(框540)。在框540之后,方法500结束。
现在转到图6,示出用于动态地调整添加到对请求的服务的延迟的方法600的一个实现方式。第一处理器监测第一处理器的线程在先前时间间隔期间服务于由第二处理器生成的请求所花费的循环数(框605)。在另一实现方式中,第一处理器不仅监测循环数,还监测服务于第二处理器的请求所涉及的开销,其中开销包括多个组分。例如,开销包括实际服务于请求所花费的时间、在用户模式与内核模式之间转变所花费的间接CPU开销、由于内核使用处理器的各种资源而在用户模式下以较低IPC速率运行所花费的时间。在一个实现方式中,第一处理器是CPU,并且第二处理器是加速器(例如,GPU)。在其他实现方式中,第一处理器和第二处理器是其他类型的处理器。在其中对循环数进行计数的时间间隔的持续时间根据实现方式而变化。
如果第一处理器线程在先前时间间隔期间服务于由第二处理器生成的请求所花费的循环数大于阈值(条件框610,“是”分支),则第一处理器将第一延迟量添加到对来自第二处理器的后续请求的服务(框615)。否则,如果第一处理器线程在先前时间间隔期间服务于由第二处理器生成的请求所花费的循环数小于或等于阈值(条件框610,“否”分支),则第一处理器将第二延迟量添加到对来自第二处理器的后续请求的服务,其中第二延迟量小于第一延迟量(框620)。在一些情况下,第二延迟量为零,使得第一处理器立即服务于后续请求。在框615和620之后,方法600结束。
现在参考图7,示出用于处理系统服务请求(SSR)的方法700的一个实现方式。第一处理器从第二处理器接收SSR(框705)。在一个实现方式中,第一处理器是CPU,并且第二处理器是加速器(例如,GPU)。在其他实现方式中,第一处理器和第二处理器是其他类型的处理器。响应于从第二处理器接收到SSR,第一处理器确定是否已经检测到第一条件(条件框710)。在一个实现方式中,第一条件是第一处理器上的用于在先前时间间隔内服务于来自第二处理器(以及任选地来自一个或多个其他处理器)的SSR的开销大于阈值。开销包括实际服务于SSR所花费的循环、在服务于SSR之前和之后在用户模式与内核模式之间转变所花费的循环、由于微体系结构状态的退化(例如,消耗处理器资源,使得更少的资源可用)而在用户模式下以较低IPC速率运行所花费的循环等。在其他实现方式中,第一条件是各种其他类型的条件中的任一种或多个条件的组合。
如果已经检测到第一条件(条件框710,“是”分支),则第一处理器在发起对SSR的服务之前等待第一时间量(框715)。替代地,当已经检测到第一条件时,第一处理器将第一优先级分配给对SSR实现方式的服务。如果尚未检测到第一条件(条件框710,“否”分支),则第一处理器在发起对SSR的服务之前等待第二时间量,其中第二时间量小于第一时间量。(框720)。在一些情况下,第二时间量为零,使得第一处理器立即服务于SSR。替代地,在另一实现方式中,当尚未检测到第一条件时,第一处理器将第二优先级分配给对SSR的服务,其中第二优先级高于第一优先级。在框715和720之后,方法700结束。
在各种实现方式中,使用软件应用程序的程序指令来实现本文所描述的方法和/或机制。例如,设想了可由通用处理器或专用处理器执行的程序指令。在各种实现方式中,此类程序指令由高级编程语言表示。在其他实现方式中,将程序指令从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,编写描述硬件的行为或设计的程序指令。此类程序指令由诸如C的高级编程语言表示。替代地,使用诸如Verilog的硬件设计语言(HDL)。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。存储介质可由计算系统在使用期间访问以将程序指令提供给计算系统以用于程序执行。一般来讲,这种计算系统至少包括一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应当强调的是,上述实现方式仅是实现方式的非限制性实例。一旦完全了解以上公开内容,许多变化和修改对于本领域技术人员来说将变得显而易见。以下权利要求意图被解释为涵盖所有此类变化和修改。
Claims (20)
1.一种系统,其包括:
第一处理器,所述第一处理器包括被配置为执行操作系统内核的多个线程的电路;以及
第二处理器,所述第二处理器耦接到所述第一处理器,其中所述第二处理器包括被配置为执行应用程序并且将系统服务请求发送到第一处理器以得到服务的电路;
其中所述第一处理器被配置为:
监测在所述第一处理器上执行的线程在先前时间间隔内服务于系统服务请求已花费的循环数;并且
基于所述循环数来动态地调整添加到对给定系统服务请求的服务的延迟量。
2.如权利要求1所述的系统,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而添加第一延迟量;以及
响应于确定所述循环数小于或等于所述阈值而添加第二延迟量,其中所述第二延迟量小于所述第一延迟量。
3.如权利要求2所述的系统,其中所述第一处理器的所述电路被配置为响应于所述循环数大于所述阈值并且先前延迟量大于零而将所述第一延迟量设置为大于所述先前延迟量的值。
4.如权利要求1所述的系统,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而在发起对所述给定系统服务请求的服务之前等待第一持续时间;以及
响应于确定所述循环数小于或等于所述阈值而在发起对所述给定系统服务请求的服务之前等待第二持续时间,其中所述第二持续时间小于所述第一持续时间。
5.如权利要求4所述的系统,其中所述阈值由所述操作系统内核动态地调整。
6.如权利要求1所述的系统,其中所述第一处理器进一步被配置为:
计算与在所述先前时间间隔内服务于系统服务请求相关联的开销;并且
基于所述开销来动态地调整添加到对给定系统服务请求的服务的延迟量。
7.如权利要求1所述的系统,其中所述第一处理器的所述电路进一步被配置为:
计算与在所述先前时间间隔内服务于系统服务请求相关联的开销,其中所述开销包括服务于系统服务请求所花费的循环、在用户模式与内核模式之间转变所花费的循环以及在用户模式下以较低的每循环指令(IPC)速率运行所花费的循环中的一者或多者;并且
基于所述开销来动态地调整添加到对给定系统服务请求的服务的延迟量。
8.一种方法,其包括:
由第一处理器监测在所述第一处理器上执行的线程在先前时间间隔内服务于由第二处理器生成的系统服务请求已花费的循环数;以及
基于所述第一处理器的线程在所述先前时间间隔内服务于系统服务请求已花费的所述循环数,动态地调整添加到对给定系统服务请求的服务的延迟量。
9.如权利要求8所述的方法,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而添加第一延迟量;以及
响应于确定所述循环数小于或等于所述阈值而添加第二延迟量,其中所述第二延迟量小于所述第一延迟量。
10.如权利要求9所述的方法,其还包括:响应于所述循环数大于所述阈值并且先前延迟量大于零而将所述第一延迟量设置为大于所述先前延迟量的值。
11.如权利要求8所述的方法,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而在发起对所述给定系统服务请求的服务之前等待第一持续时间;以及
响应于确定所述循环数小于或等于所述阈值而在发起对所述给定系统服务请求的服务之前等待第二持续时间,其中所述第二持续时间小于所述第一持续时间。
12.如权利要求11所述的方法,其中所述阈值由操作系统内核设置。
13.如权利要求8所述的方法,其还包括:
计算与在所述先前时间间隔内服务于系统服务请求相关联的开销;以及
基于所述开销来动态地调整添加到对给定系统服务请求的服务的延迟量。
14.如权利要求8所述的方法,其还包括:
计算与在所述先前时间间隔内服务于系统服务请求相关联的开销,其中所述开销包括服务于系统服务请求所花费的循环、在用户模式与内核模式之间转变所花费的循环以及在用户模式下以较低的每循环指令(IPC)速率运行所花费的循环中的一者或多者;以及
基于所述开销来动态地调整添加到对给定系统服务请求的服务的延迟量。
15.一种设备,其包括:
存储器;
一个或多个执行单元,所述一个或多个执行单元耦接到所述存储器;
其中所述设备被配置为:
监测在所述一个或多个执行单元上执行的线程在先前时间间隔内服务于系统服务请求已花费的循环数;并且
基于所述循环数来动态地调整添加到对给定系统服务请求的服务的延迟量。
16.如权利要求15所述的设备,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而添加第一延迟量;以及
响应于确定所述循环数小于或等于所述阈值而添加第二延迟量,其中所述第二延迟量小于所述第一延迟量。
17.如权利要求16所述的设备,其中所述设备进一步被配置为响应于所述循环数大于所述阈值并且先前延迟量大于零而将所述第一延迟量设置为大于所述先前延迟量的值。
18.如权利要求15所述的设备,其中动态地调整添加到对所述给定系统服务请求的服务的所述延迟量包括:
响应于确定所述循环数大于阈值而在发起对所述给定系统服务请求的服务之前等待第一持续时间;以及
响应于确定所述循环数小于或等于所述阈值而在发起对所述给定系统服务请求的服务之前等待第二持续时间,其中所述第二持续时间小于所述第一持续时间。
19.如权利要求18所述的设备,其中所述阈值由所述操作系统设置。
20.如权利要求15所述的设备,其中所述设备进一步被配置为:
计算与在所述先前时间间隔内服务于系统服务请求相关联的开销;并且
基于所述开销来动态地调整添加到对给定系统服务请求的服务的延迟量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/954,382 | 2018-04-16 | ||
US15/954,382 US11275613B2 (en) | 2018-04-16 | 2018-04-16 | Enforcing central processing unit quality of service guarantees when servicing accelerator requests |
PCT/US2019/017933 WO2019203919A1 (en) | 2018-04-16 | 2019-02-14 | Enforcing central processing unit quality of service guarantees when servicing accelerator requests |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112041822A true CN112041822A (zh) | 2020-12-04 |
Family
ID=65685962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980029389.3A Pending CN112041822A (zh) | 2018-04-16 | 2019-02-14 | 在服务于加速器请求时加强中央处理单元服务质量保证 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11275613B2 (zh) |
EP (1) | EP3782032B1 (zh) |
JP (1) | JP7160941B2 (zh) |
KR (1) | KR102523589B1 (zh) |
CN (1) | CN112041822A (zh) |
WO (1) | WO2019203919A1 (zh) |
Families Citing this family (4)
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 (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1115800A (ja) * | 1997-06-26 | 1999-01-22 | Nec Corp | マルチプロセッサの負荷の均一化装置 |
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 (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 三菱電機インフォメーションシステムズ株式会社 | クライアント装置 |
WO2010131579A1 (ja) * | 2009-05-11 | 2010-11-18 | 日本電気株式会社 | 端末装置、該端末装置に用いられるコミュニケーション方法及びコミュニケーション制御プログラム |
US20150046676A1 (en) * | 2013-08-12 | 2015-02-12 | Qualcomm Incorporated | Method and Devices for Data Path and Compute Hardware Optimization |
-
2018
- 2018-04-16 US US15/954,382 patent/US11275613B2/en active Active
-
2019
- 2019-02-14 WO PCT/US2019/017933 patent/WO2019203919A1/en unknown
- 2019-02-14 KR KR1020207032966A patent/KR102523589B1/ko active IP Right Grant
- 2019-02-14 JP JP2020557323A patent/JP7160941B2/ja active Active
- 2019-02-14 CN CN201980029389.3A patent/CN112041822A/zh active Pending
- 2019-02-14 EP EP19709170.5A patent/EP3782032B1/en active Active
-
2022
- 2022-03-01 US US17/684,214 patent/US20220269535A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1115800A (ja) * | 1997-06-26 | 1999-01-22 | Nec Corp | マルチプロセッサの負荷の均一化装置 |
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 |
---|---|
US20190317807A1 (en) | 2019-10-17 |
JP7160941B2 (ja) | 2022-10-25 |
US20220269535A1 (en) | 2022-08-25 |
KR20210005636A (ko) | 2021-01-14 |
WO2019203919A1 (en) | 2019-10-24 |
JP2021521541A (ja) | 2021-08-26 |
KR102523589B1 (ko) | 2023-04-19 |
EP3782032A1 (en) | 2021-02-24 |
US11275613B2 (en) | 2022-03-15 |
EP3782032B1 (en) | 2022-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220269535A1 (en) | Enforcing central processing unit quality of service guarantees when servicing accelerator requests | |
US20190042331A1 (en) | Power aware load balancing using a hardware queue manager | |
US8775762B2 (en) | Method and apparatus for batching memory requests | |
EP3729280B1 (en) | Dynamic per-bank and all-bank refresh | |
US20190155770A1 (en) | Deferred inter-processor interrupts | |
US10102031B2 (en) | Bandwidth/resource management for multithreaded processors | |
US20190065243A1 (en) | Dynamic memory power capping with criticality awareness | |
US20140181555A1 (en) | Managing a power state of a processor | |
US20200250787A1 (en) | Multiple application cooperative frame-based gpu scheduling | |
US10908955B2 (en) | Systems and methods for variable rate limiting of shared resource access | |
US9697149B2 (en) | Low latency interrupt with existence of interrupt moderation | |
WO2012113232A1 (zh) | 调整时钟中断周期的方法和装置 | |
US9239804B2 (en) | Back-off mechanism for a peripheral page request log | |
CN112313636A (zh) | 用于gpu发起的通信的网络分组模板化 | |
CN106802689B (zh) | Windows操作系统环境下可调速高精度定时器的实现方法 | |
US9274827B2 (en) | Data processing apparatus, transmitting apparatus, transmission control method, scheduling method, and computer product | |
Usui et al. | Squash: Simple qos-aware high-performance memory scheduler for heterogeneous systems with hardware accelerators | |
US10127076B1 (en) | Low latency thread context caching | |
CN112204523A (zh) | 多内核波前调度程序 | |
KR20130039479A (ko) | 스레드 프로그레스 트래킹 방법 및 장치 | |
US11561895B2 (en) | Oldest operation wait time indication input into set-dueling | |
JP2015041199A (ja) | 情報処理装置 | |
US12099867B2 (en) | Multi-kernel wavefront scheduler | |
WO2023125248A1 (zh) | 内存带宽的控制方法、装置、电子设备和存储介质 | |
US11507522B2 (en) | Memory request priority assignment techniques for parallel processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |