CN114830083A - 调度器队列分配突发模式 - Google Patents
调度器队列分配突发模式 Download PDFInfo
- Publication number
- CN114830083A CN114830083A CN202080085224.0A CN202080085224A CN114830083A CN 114830083 A CN114830083 A CN 114830083A CN 202080085224 A CN202080085224 A CN 202080085224A CN 114830083 A CN114830083 A CN 114830083A
- Authority
- CN
- China
- Prior art keywords
- burst mode
- operations
- threshold
- single class
- determining
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims description 16
- 230000015654 memory Effects 0.000 claims description 12
- 235000003642 hunger Nutrition 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004148 unit process Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了用于实现调度器队列分配突发模式的系统、设备和方法。调度器队列分配单元在每个时钟周期中从解码单元接收具有多个操作的分派包。调度器队列分配单元确定分派包中任一类操作的操作数量是否大于用于在单个周期中分派给调度器队列的对应阈值。如果给定类的操作数量大于对应阈值,并且如果突发模式计数器小于突发模式窗口阈值,则调度器队列分配单元在单个周期中分派给定类的额外数量的操作。通过在少数周期期间针对给定的操作类以突发模式操作,可以增加处理器吞吐量,而不会使处理器匮乏其他操作类。
Description
背景技术
相关技术的描述
处理器流水线包括对正在执行的指令进行操作的许多不同的单元。这些单元包括解码单元、调度器、调度器队列、选取器和执行单元。解码单元将提取的指令解码为指令操作。指令操作在本文中又被称为“op”。一般而言,op是执行单元中所包括的硬件能够执行的操作。在各种实现方式中,每个指令转变为一个或多个op,所述一个或多个op在被执行时引起执行根据指令集架构针对该指令定义的操作。在调度器将解码的op分派到调度器队列之后,选取器从调度器队列中选择要由执行单元执行的op。
典型的调度器会预配每类op可用的分派带宽量,以利于整体性能增益。对于典型的调度器,分配给每类op的分派带宽与该类op的执行单元数量相匹配。当程序在每个周期中观察到稳定且正确的op混合时,这种方法效果很好。然而,当一类op出现在短暂的突发中时,这可能会破坏典型调度器的处理器的性能。
附图说明
通过结合附图参考以下描述,可以更好地理解本文描述的方法和机制的优点,在附图中:
图1是计算系统的一个实现方式的框图。
图2是处理器流水线的一个实现方式的框图。
图3是处理器流水线的一部分的一个实现方式的框图。
图4是示出用于确定何时进入调度器队列分配突发模式的方法的一个实现方式的一般化流程图。
图5是示出调度器队列分配单元进入突发模式的方法的一个实现方式的一般化流程图。
图6是示出用于确定是否进入调度器队列分配突发模式的方法的一个实现方式的一般化流程图。
图7是示出用于跟踪突发模式窗口的方法的一个实现方式的一般化流程图。
具体实施方式
在以下描述中,阐述了众多具体细节以提供对本文呈现的方法和机制的透彻理解。然而,本领域普通技术人员应认识到,可以在没有这些具体细节的情况下实践各种实现方式。在一些情况下,并未详细示出众所周知的结构、部件、信号、计算机程序指令和技术,以避免混淆本文所述的方法。应了解,出于说明简明和清楚起见,在图中示出的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其他元件被放大。
本文公开了用于实现调度器队列分配突发模式的各种系统、设备和方法。一种系统包括耦合到一个或多个存储器的一个或多个处理器。每个处理器都包括处理器流水线,所述处理器流水线具有用于提取、处理和执行指令的多个流水线阶段。在一个实现方式中,处理器采用指令的无序执行。提取指令,并且然后由解码单元将指令解码为指令操作(或“op”)。解码单元在每个时钟周期中将经解码的op的分派包传送到调度器队列分配单元。
在一个实现方式中,当调度器队列分配单元接收到分派包时,调度器队列分配单元确定分派包中任一类的op的op数量是否大于单个周期中该特定类的用于发布到调度器队列的最大允许op数量。在一个实施方案中,每一类操作是指可由不同类型的执行单元执行的不同类型的op。例如,不同类型的op包括算术逻辑单元(ALU)op、地址生成单元(AGU)op、浮点op、整数op、加载/存储op等中的一者或多者。如果给定类的op数量大于允许的数量,并且如果突发模式计数器小于阈值,则调度器队列分配单元在单个周期中分派给定类的额外op数量,并且还使突发模式计数器递增。通过在少数周期期间针对给定的op类以突发模式操作,可以增加处理器吞吐量,而不会使处理器匮乏其他类型的op类。
现在参考图1,示出了计算系统100的一个实现方式的框图。在一个实现方式中,计算系统100至少包括处理器105A至105N、输入/输出(I/O)接口120、总线125、存储器控制器130、网络接口135和存储器装置140。在其他实现方式中,计算系统100包括其他部件,和/或计算系统100不同地布置。处理器105A至105N表示包括在系统100中的任何数量的处理器。
在一个实现方式中,处理器105A是通用处理器,诸如中央处理单元(CPU)。在一个实现方式中,处理器105N是具有高度并行架构的数据并行处理器。数据并行处理器包括图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等等。在一些实现方式中,处理器105A至105N包括多个数据并行处理器。
存储器控制器130表示可由耦合到I/O接口120的处理器105A至105N和I/O装置(未示出)访问的任何数量和类型的存储器控制器。存储器控制器130耦合到任何数量和类型的存储器装置140。存储器装置140表示任何数量和类型的存储器装置。例如,存储器装置140中的存储器的类型包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、NAND闪存存储器、NOR闪存存储器、铁电随机存取存储器(FeRAM)等。
I/O接口120表示任何数量和类型的I/O接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI快速)总线、吉比特以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置(未示出)耦合到I/O接口120。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。网络接口135用于跨网络接收和发送网络消息。
在各种实现方式中,计算系统100是计算机、膝上型计算机、移动装置、游戏控制台、服务器、流式传输装置、可穿戴装置或各种其他类型的计算系统或装置中的任一种。应注意,计算系统100的部件的数量因实现方式而不同。例如,在其他实现方式中,存在与图1所示的数量相比更多或更少的每种部件。还应注意,在其他实现方式中,计算系统100包括图1中未示出的其他部件。另外,在其他实现方式中,计算系统100以与图1中所示不同的方式进行结构化。
现在转到图2,示出了处理器流水线200的一个实现方式的框图。在各种实现方式中,(图1的)处理器105A至105N包括处理器流水线200的一个或多个实例化。在一个实现方式中,处理器流水线200至少包括提取单元210、解码单元215、调度器队列分配单元220、队列235A至235N和执行单元240A至240N。应注意,队列235A至235N在本文中也称为调度器队列。还应理解,处理器流水线200还包括为避免混淆附图而未示出的其他部件(例如,分支预测单元、指令高速缓存)。在其他实现方式中,处理器流水线200以其他合适的方式进行结构化。
在一个实现方式中,提取单元210从存储器和/或指令高速缓存提取程序流的指令,并且提取单元210将提取的指令传送给解码单元215。解码单元215将提取的指令解码为指令操作(或简称为op)。应注意,op也可以称为操作、微op或uop。一般而言,指令操作是执行单元240A至240N中所包括的硬件能够执行的操作。在各种实现方式中,每个指令转变为一个或多个op,所述一个或多个op在被执行时引起执行根据指令集架构针对该指令定义的操作。处理器流水线200采用任何类型的指令集架构(ISA),其中ISA的类型因实现方式而不同。
解码单元215识别指令的类型、源操作数等,并且每个经解码的op包括指令以及解码信息中的一些。在每个指令转变为单个op的实现方式中,每个op是对应的指令或其一部分(例如,指令的一个或多个操作码字段)。在一些实现方式中,解码单元215包括用于针对指令生成op的电路和/或微代码的任何组合。例如,在一个实现方式中,在硬件中处理相对简单的op生成(例如,每个指令生成一个或两个op),而在微代码中处理更广泛的op生成(例如,针对某个指令生成多于三个op)。
来自解码单元215的op以分派包被提供给调度器队列分配单元220。调度器队列分配单元220确定如何将op分配给调度器队列235A至235N。如本文所使用的,“分派包”被定义为一组op,该组op在单个时钟周期中由解码单元215解码。当将op从调度器队列分配单元220转发到调度器队列235A至235N时,op已经从流水线200的有序部分转变为流水线200的无序部分。向流水线200的无序部分提供稳定的op流有助于确保处理器维持可接受的性能水平。
在正常的非突发模式下,调度器队列分配单元220对在单个时钟周期中可以被分派给调度器队列235A至235N的每一类的操作数量实施限制。然而,如果满足某些条件,则调度器队列分配单元220在接收到给定类的op的多于允许数量的op情况下允许在小的周期窗口内超过该限制。这可以通过允许流水线200的有序部分快速移动到另一类op,同时执行单元240A至240N仍在后台处理突发,来帮助提高处理器性能。
在一个实现方式中,调度器队列分配单元220包括耦合到计数器230至232的控制逻辑225。每类计数器230表示用于对从解码单元215转发到调度器队列分配单元220的分派包中所包括的不同数量的op进行计数的任何数量的计数器。突发模式计数器232跟踪调度器队列分配单元220已经处于突发模式的周期数量。在一个实现方式中,每一不同类的op都有单独的突发模式计数器。在一个实现方式中,在任何给定周期期间,仅允许一类op处于突发模式。替代地,在另一实现方式中,在单个周期中,允许两个单独类的op处于突发模式。当突发模式计数器232达到阈值时,由于在突发期间难以将op均匀地分配给调度器队列,因此阻止调度器队列分配单元220进入突发模式。这确保了调度器队列的相对占用率对于单类op保持合理平衡。
在一个实现方式中,调度器队列分配单元220尝试为分派包的op选择分配置换,使得处理器流水线200的执行吞吐量被最大化。调度器队列分配单元220还选择分配置换,使得op将被分配给耦合到能够实际上执行特定类型的op的执行单元240A至240N的队列235A至235N。如处理器流水线200所示,每个队列235A至235N耦合到对应的执行单元240A至240N。然而,在其他实现方式中,一个或多个队列235A至235N耦合到多个执行单元240A至240N。
在接收到分派包之后,调度器队列分配单元220在给定的时钟周期中选择要分配给队列235A至235N的op。当解决了依赖性并且op准备好执行时,选取器(未示出)将从队列235A至235N中选取op以在执行单元240A至240N上执行。在一个实现方式中,各个执行单元240A至240N仅能够执行在典型程序序列中遇到的不同类型的op的总数的子集。因此,调度器队列分配单元220将op分配给适当的队列235A至235N,使得这些op将由能够执行这些特定类型的op的执行单元240A至240N执行。
现在参考图3,示出了处理器流水线300的一部分的一个实现方式的框图。在一个实现方式中,处理器流水线300的所述部分包括在(图1的)处理器105A至105N中的一个或多个内。调度器队列分配单元302从解码单元(未示出)接收分派包,并且调度器队列分配单元302确定如何将op从分派包分派到队列305A至305N和310A至310N。队列305A至305N和310A至310N表示任何数量的不同的调度队列集合。取决于实现方式,处理器处理任何数量的不同op类型(例如,ALU op、地址生成op、浮点op、固定点op、分支op、乘法op、除法op)。每个集合的调度器队列305A至305N和310A至310N基于执行单元335A至335N、340A至340N、345A至345N和350A至350N的能力来处理这些不同op类型的一些子集,所述调度器队列为执行单元提供op以供执行。
在一个实现方式中,每个队列305A至305N存储第一类型的op,而每个队列310A至310N存储第二类型的op。例如,在一个实现方式中,调度器队列分配单元302将ALU op分配给队列305A至305N,调度器队列分配单元302将地址生成op分配给队列310A至310N,等等。在其他实现方式中,调度器队列分配单元302将其他类型的op分配给对应的队列。每个队列305A至305N具有选取op以在对应的执行单元335A至335N或340A至340N上执行的任何数量的选取器315A至315N和320A至320N。类似地,每个队列310A至310N具有选取op以在对应的执行单元345A至345N或350A至350N上执行的任何数量的选取器325A至325N和330A至330N。在一个实现方式中,队列305A存在针对能够存储在队列305A中的每个不同类型的op的单独选取器315A至315N。每个不同类型的op将在不同类型的执行单元上执行,其中执行单元335A至335N表示执行不同类型的op的任何数量的不同执行单元。应注意,在一个实现方式中,一些执行单元能够执行多于一种类型的op。
对于其他队列,每个选取器从队列中选取将在耦合到所述选取器的执行单元上执行的op。例如,选取器320A至320N分别从队列305N中选取要在执行单元340A至340N上执行的op,选取器325A至325N分别从队列310A中选取要在执行单元345A至345N上执行的op,并且选取器330A至330N分别从队列310N中选取要在执行单元350A至350N上执行的op。在一个实现方式中,对于受到处理器流水线支持的每个不同类型的op,存在(经由选取器)耦合到每个队列的不同的执行单元。然而,在一些实现方式中,队列中的一些仅存储由处理器流水线正在执行的所有不同类型的op的子集。例如,在处理器执行两种类型的op(ALU和地址生成op)的实现方式中,一些队列仅存储ALU op,而其他队列仅存储地址生成op。
应理解,用于不同op类型的调度器队列和执行单元的数量因实现方式而不同。贯穿本公开描述的示例意在说明实现方式的非限制性示例。在其他实现方式中,采用其他数量的调度器队列、执行单元和其他相关结构的处理器是可能的并且是可设想的。
现在参考图4,示出了用于确定何时进入调度器队列分配突发模式的方法400的一个实现方式。出于论述的目的,此实现方式中的步骤和图5至图7的那些步骤按有序次序示出。然而,应注意,在所描述方法的各种实现方式中,同时执行、按与所示不同的次序执行、或者完全省略所描述要素中的一个或多个。也根据需要执行其他附加要素。本文中所描述的各种系统或设备中的任一个被配置为实现方法400。
调度器队列分配单元(例如,图2的调度器队列分配单元220)跟踪由解码单元生成的每个分派包中每一类的op数量(框405)。在一个实现方式中,调度器队列分配单元使用每类计数器来跟踪每个分派包中每一类的op数量。接下来,调度器队列分配单元确定分派包中任何类的op数量是否大于特定类的最大允许数量(条件框410)。在一个实现方式中,特定类的最大允许数量等于能够执行特定类op的执行单元的数量。应注意,不同类的op可以具有不同的最大允许数量。例如,在一种情况下,ALU op的每个分派包最多允许有四个op,AGUop的每个分派包最多允许有三个op,浮点op的每个分派包最多允许有两个op等等。
如果分派包中每一类的op数量小于或等于特定类的最大允许数量(条件框410,“是”分支),则调度器队列分配单元以普通方式处理分派包中的op并使突发模式计数器(例如,图2的突发模式计数器232)递减(框415)。如果突发模式计数器等于零,则突发模式计数器在框415中保持为零。在框415之后,方法400返回框405以获取下一个分派包。
如果分派包中任何类的op数量大于特定类的最大允许数量(条件框410,“否”分支),则调度器队列分配单元确定是否满足进入突发模式的一个或多个条件(条件框420)。在一个实现方式中,进入突发模式的第一条件是对应调度器队列的当前占用率小于或等于占用率阈值。在一个实现方式中,调度器队列分配单元检查存储当前分派包中大于最大允许op数量的类的op的调度器队列的占用率。在另一实现方式中,调度器队列分配单元检查处理器流水线中所有调度器队列的占用率。在一个实现方式中,进入突发模式的第二条件是检查是否存在有效的分配置换以用于基于各种调度器队列和选取器约束来分派数量大于特定类的最大允许数量的op。在其他实现方式中,可以检查其他条件以确定是否进入突发模式。
如果不满足进入突发模式的一个或多个条件(条件框420,“否”分支),则调度器队列分配单元以普通方式处理分派包中的op并使突发模式计数器递减(框415)。否则,如果满足进入突发模式的一个或多个条件(条件框420,“是”分支),则调度器队列分配单元确定对于对应类的op是否已经超出突发模式窗口(条件框425)。在一个实现方式中,调度器队列分配单元通过检查突发模式计数器并将突发模式计数器与突发模式窗口阈值进行比较来确定是否已经超过突发模式窗口。
如果对于对应类的op已经超过突发模式窗口(条件框425,“是”分支),则调度器队列分配单元以普通方式处理分派包中的op并使突发模式计数器递减(框415)。否则,如果对于给定类的op尚未超过突发模式窗口(条件框425,“否”分支),则调度器队列分配单元将对应类的op的多于阈值数量的op分派到调度器队列(框430)。此外,调度器队列分配单元使突发模式计数器递增(框435)。在框435之后,方法400返回到框405。
现在参考图5,示出了用于使调度器队列分配单元进入突发模式的方法500的一个实现方式。调度器队列分配单元(例如,图2的调度器队列分配单元220)接收分派包并检测到分派包中给定类的op的多于阈值数量的op(框505)。接下来,调度器队列分配单元确定是否满足进入突发模式的条件(条件框510)。在一个实现方式中,进入突发模式的条件包括调度器队列占用率小于第一阈值以及突发模式计数器小于第二阈值。在其他实现方式中,可以采用进入突发模式的其他条件。
如果满足进入突发模式的条件(条件框510,“是”分支),则在单个周期中将给定类的多于阈值数量的op分派到调度器队列(框515)。否则,如果不满足进入突发模式的条件(条件框510,“否”分支),则在第一周期中仅将给定类的阈值数量的op分派到调度器队列(框520)。在一些情况下,调度器队列分配单元可以决定在第一周期中将给定类的少于阈值数量的op分派到调度器队列。接下来,给定类的其余op在第二周期中被分派到调度器队列(框525)。应注意,来自后续分派包的给定类的op的一个或多个op可以在第二周期中与来自前一个分派包的其余op一起被分派。在框515和525之后,方法500结束。
现在转到图6,示出了用于确定何时进入调度器队列分配突发模式的方法600的一个实现方式。控制逻辑针对给定类的op检测进入调度器队列分配突发模式的请求(框605)。响应于检测到所述请求,控制逻辑检查给定类的op的突发模式计数器(框610)。如果突发模式计数器小于或等于阈值(条件框615,“否”分支),则控制逻辑允许调度器队列分配单元(例如,图2的调度器队列分配单元220)进入突发模式(框620)。否则,如果突发模式计数器大于阈值(条件框615,“是”分支),则控制逻辑阻止调度器队列分配单元进入突发模式(框625)。在框620和625之后,方法600结束。应注意,方法600也可以与检查是否满足进入调度器队列分配突发模式的其他条件(例如,调度器队列占用率)的其他方法并行执行。
现在参考图7,示出了用于跟踪突发模式窗口的方法700的一个实现方式。调度器队列分配单元(例如,图2的调度器队列分配单元220)接收分派包(框705)。如果调度器队列分配单元检测到分派包中任何给定类的op的多于阈值数量的op(条件框710,“是”分支),则调度器队列分配单元在突发模式移位计数器中将输入位设置为“1”并将计数器的位向前移动一个位(框715)。如果调度器队列分配单元未检测到分派包中任何给定类的op的多于阈值数量的op(条件框710,“否”分支),则调度器队列分配单元在突发模式移位计数器中将输入位设置为“0”并将计数器的位向前移动一个位(框720)。此外,调度器队列分配单元使用正常模式来分派分派包的op(框725)。在框725之后,方法700结束。
在框715之后,如果突发模式移位计数器中1的数量小于或等于突发模式窗口阈值(条件框730,“否”分支),则调度器队列分配单元检查进入突发模式的一个或多个其他条件(条件框735)。否则,如果突发模式移位计数器中1的数量大于突发模式窗口阈值(条件框730,“是”分支),则调度器队列分配单元使用正常模式来分派分派包的op(框725)。如果满足进入突发模式的一个或多个条件(条件框735,“是”分支),则调度器队列分配单元使用突发模式来分派分派包的op(框740)。否则,如果不满足进入突发模式的一个或多个条件(条件框735,“否”分支),则调度器队列分配单元使用普通模式来分派分派包的op(框725)。在框740之后,方法700结束。
在一个实现方式中,突发模式在最后“N”个周期的移动窗口中被跟踪,其中N是正整数。在该实现方式中,突发模式移位计数器是“N”位移位计数器。在一个实现方式中,计数器每个周期左移一位,并且在框715中将最右边的新位设置为“1”。在另一实现方式中,计数器每个周期右移一位,并且在框715中将最左边的新位设置为“1”。应当理解,在另一实现方式中,可以在框715中将新位设置为“0”而不是“1”,并且可以在框720中将新位设置为“1”而不是“0”。在此实现方式中,调度器队列分配单元对计数器中0的数量进行计数,以确定是否已超过突发模式窗口阈值。一般而言,调度器队列分配单元对计数器中的有效位数进行计数,以确定是否已超过突发模式窗口阈值。用于实现突发模式移位计数器的其他技术是可能的并且被设想。
在各种实现方式中,使用软件应用程序的程序指令来实现本文描述的方法和/或机制。例如,设想到可由通用处理器或专用处理器执行的程序指令。在各种实现方式中,此类程序指令由高级编程语言表示。在其他实现方式中,程序指令从高级编程语言编译成二进制形式、中间形式或其他形式。替代地,写入描述硬件的行为或设计的程序指令。此类程序指令由诸如C的高级编程语言表示。替代地,使用诸如Verilog的硬件设计语言(HDL)。在各种实现方式中,程序指令存储在多种非暂时性计算机可读存储介质中的任一种上。在使用期间,计算系统可访问存储介质,以将程序指令提供到计算系统以用于程序执行。一般来讲,此类计算系统至少包括一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应强调,上述实现方式仅是实现方式的非限制性示例。一旦充分了解上述公开内容,许多变型和修改将对本领域技术人员显而易见。所附权利要求意图被解释为涵盖所有此类变型和修改。
Claims (20)
1.一种系统,其包括:
多个调度器队列;
解码单元;以及
调度器队列分配单元,其被配置为:
从所述解码单元接收包括多个操作的分派包;
确定所述分派包是否包含单类的超过对应阈值的第一数量的操作;并且
响应于确定以下各者而将所述单类的大于所述对应阈值的第二数量的操作分派给所述多个调度器队列:
所述第一数量的操作超过所述对应阈值;以及
对于所述单类操作尚未超过突发模式窗口。
2.如权利要求1所述的系统,其中所述对应阈值等于能够执行所述单类操作的操作的执行单元的数量。
3.如权利要求1所述的系统,其中所述调度器队列分配单元被配置为响应于检测到所述单类的超过所述对应阈值的所述第一数量的操作而将有效位移入突发模式移位计数器中。
4.如权利要求3所述的系统,其中确定对于给定类操作尚未超过突发模式窗口包括确定所述突发模式移位计数器中的有效位的数量小于突发模式窗口阈值。
5.如权利要求3所述的系统,其中所述调度器队列分配单元被配置为响应于确定所述分派包不包括任何单类操作的多于所述对应阈值数量的操作而将非有效位移入所述突发模式移位计数器中。
6.如权利要求1所述的系统,其中所述调度器队列分配单元被配置为响应于确定调度器队列占用率小于占用率阈值并且响应于确定对于所述单类操作尚未超过所述突发模式窗口,而将所述单类操作的大于所述对应阈值的所述第二数量的操作分派给所述多个调度器队列。
7.如权利要求1所述的系统,其中:
第一类操作具有第一阈值;
第二类操作具有第二阈值;并且
所述第二阈值不同于所述第一阈值。
8.一种方法,其包括:
通过调度器队列分配单元在给定周期中从解码单元接收包括多个操作的分派包;
确定所述分派包是否包含单类的超过对应阈值的第一数量的操作;
响应于确定以下各者而将所述单类的大于所述对应阈值的第二数量的操作分派给多个调度器队列:
所述第一数量的操作超过所述对应阈值;以及
对于所述单类操作尚未超过突发模式窗口。
9.如权利要求8所述的方法,其中所述对应阈值等于能够执行所述单类操作的操作的执行单元的数量。
10.如权利要求8所述的方法,其还包括响应于检测到所述单类的超过所述对应阈值的所述第一数量的操作而将有效位移入突发模式移位计数器中。
11.如权利要求10所述的方法,其中确定对于给定类操作尚未超过突发模式窗口包括确定所述突发模式移位计数器中的有效位的数量小于突发模式窗口阈值。
12.如权利要求10所述的方法,其还包括响应于确定所述分派包不包括任何单类操作的多于所述对应阈值数量的操作而将非有效位移入所述突发模式移位计数器中。
13.如权利要求8所述的方法,其还包括响应于确定调度器队列占用率小于占用率阈值并且响应于确定对于所述单类操作尚未超过所述突发模式窗口,而分派所述单类操作的大于所述对应阈值的所述第二数量的操作。
14.如权利要求8所述的方法,其中:
第一类操作具有第一阈值;
第二类操作具有第二阈值;并且
所述第二阈值不同于所述第一阈值。
15.一种设备,其包括:
存储器;以及
处理器,其耦合到所述存储器;
其中所述处理器被配置为:
通过解码单元在给定周期中生成包括多个操作的分派包;
确定所述分派包是否包含单类的超过对应阈值的第一数量的操作;并且
响应于确定以下各者而将所述单类的大于所述对应阈值的第二数量的操作分派给多个调度器队列:
所述第一数量的操作超过所述对应阈值;以及
对于所述单类操作尚未超过突发模式窗口。
16.如权利要求15所述的设备,其中所述对应阈值等于能够执行所述单类操作的操作的执行单元的数量。
17.如权利要求15所述的设备,其中所述处理器还被配置为响应于检测到所述单类的超过所述对应阈值的所述第一数量的操作而将有效位移入突发模式移位计数器中。
18.如权利要求17所述的设备,其中确定对于所述单类操作尚未超过突发模式窗口包括确定所述突发模式移位计数器中的有效位的数量小于突发模式窗口阈值。
19.如权利要求17所述的设备,其中所述处理器还被配置为响应于确定所述分派包不包括任何单类操作的多于所述对应阈值数量的操作而将非有效位移入所述突发模式移位计数器中。
20.如权利要求15所述的设备,其中所述处理器还被配置为响应于确定调度器队列占用率小于占用率阈值并且响应于确定对于所述单类操作尚未超过所述突发模式窗口,而将所述单类操作的大于所述对应阈值的所述第二数量的操作分派给所述多个调度器队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/709,527 US11334384B2 (en) | 2019-12-10 | 2019-12-10 | Scheduler queue assignment burst mode |
US16/709,527 | 2019-12-10 | ||
PCT/US2020/063765 WO2021118989A1 (en) | 2019-12-10 | 2020-12-08 | Scheduler queue assignment burst mode |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114830083A true CN114830083A (zh) | 2022-07-29 |
CN114830083B CN114830083B (zh) | 2024-09-10 |
Family
ID=74003946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080085224.0A Active CN114830083B (zh) | 2019-12-10 | 2020-12-08 | 调度器队列分配突发模式 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11334384B2 (zh) |
EP (1) | EP4073638A1 (zh) |
JP (1) | JP7292515B2 (zh) |
KR (1) | KR102591051B1 (zh) |
CN (1) | CN114830083B (zh) |
WO (1) | WO2021118989A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11948000B2 (en) | 2020-10-27 | 2024-04-02 | Advanced Micro Devices, Inc. | Gang scheduling for low-latency task synchronization |
JP2023013799A (ja) * | 2021-07-16 | 2023-01-26 | 富士通株式会社 | 演算処理装置及び演算処理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN107637033A (zh) * | 2015-05-15 | 2018-01-26 | 高通股份有限公司 | 通信设备中的线头阻塞(holb)缓解 |
CN109565476A (zh) * | 2016-08-29 | 2019-04-02 | 思科技术公司 | 使用共享全局存储器储备进行队列保护 |
CN110147293A (zh) * | 2019-05-20 | 2019-08-20 | 江南大学 | 一种降低微处理器软错误易感性的方法 |
WO2019231904A1 (en) * | 2018-05-29 | 2019-12-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
Family Cites Families (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6246680B1 (en) | 1997-06-30 | 2001-06-12 | Sun Microsystems, Inc. | Highly integrated multi-layer switch element architecture |
EP1061439A1 (en) * | 1999-06-15 | 2000-12-20 | Hewlett-Packard Company | Memory and instructions in computer architecture containing processor and coprocessor |
US7406554B1 (en) * | 2000-07-20 | 2008-07-29 | Silicon Graphics, Inc. | Queue circuit and method for memory arbitration employing same |
JP4025493B2 (ja) * | 2000-08-08 | 2007-12-19 | 富士通株式会社 | 適切な発行先に命令を発行する命令発行装置 |
US6519683B2 (en) * | 2000-12-29 | 2003-02-11 | Intel Corporation | System and method for instruction cache re-ordering |
GB2372847B (en) | 2001-02-19 | 2004-12-29 | Imagination Tech Ltd | Control of priority and instruction rates on a multithreaded processor |
US6782461B2 (en) * | 2002-02-25 | 2004-08-24 | Intel Corporation | Dynamically adjustable load-sharing circular queues |
US20040151197A1 (en) * | 2002-10-21 | 2004-08-05 | Hui Ronald Chi-Chun | Priority queue architecture for supporting per flow queuing and multiple ports |
US7689793B1 (en) * | 2003-05-05 | 2010-03-30 | Marvell Israel (M.I.S.L.) Ltd. | Buffer management architecture |
US7047322B1 (en) * | 2003-09-30 | 2006-05-16 | Unisys Corporation | System and method for performing conflict resolution and flow control in a multiprocessor system |
US20050283772A1 (en) * | 2004-06-22 | 2005-12-22 | Kalyan Muthukumar | Determination of loop unrolling factor for software loops |
DE602004012563T2 (de) * | 2004-10-11 | 2009-05-07 | Texas Instruments Inc., Dallas | Mehrfädiges DMA |
US7770173B2 (en) * | 2005-02-03 | 2010-08-03 | International Business Machines Corporation | System for dynamic processor enablement |
US7768910B2 (en) * | 2005-02-04 | 2010-08-03 | Neidhardt Arnold L | Calculations for admission control |
US7483327B2 (en) * | 2006-03-02 | 2009-01-27 | Freescale Semiconductor, Inc. | Apparatus and method for adjusting an operating parameter of an integrated circuit |
US7539133B2 (en) * | 2006-03-23 | 2009-05-26 | Alcatel-Lucent Usa Inc. | Method and apparatus for preventing congestion in load-balancing networks |
US20080320274A1 (en) * | 2007-06-19 | 2008-12-25 | Raza Microelectronics, Inc. | Age matrix for queue dispatch order |
US7779237B2 (en) * | 2007-07-11 | 2010-08-17 | International Business Machines Corporation | Adaptive execution frequency control method for enhanced instruction throughput |
US7937568B2 (en) * | 2007-07-11 | 2011-05-03 | International Business Machines Corporation | Adaptive execution cycle control method for enhanced instruction throughput |
CN101572833B (zh) * | 2008-04-28 | 2010-11-10 | 华为技术有限公司 | 无源光网络系统中发送上行突发数据的方法、装置及系统 |
US20100241760A1 (en) * | 2009-03-18 | 2010-09-23 | Microsoft Corporation | Web Front-End Throttling |
US8090892B2 (en) * | 2009-06-12 | 2012-01-03 | Freescale Semiconductor, Inc. | Ordered queue and methods therefor |
US9122487B2 (en) * | 2009-06-23 | 2015-09-01 | Oracle America, Inc. | System and method for balancing instruction loads between multiple execution units using assignment history |
US9286075B2 (en) * | 2009-09-30 | 2016-03-15 | Oracle America, Inc. | Optimal deallocation of instructions from a unified pick queue |
US8650426B2 (en) * | 2009-12-16 | 2014-02-11 | Qualcomm Incorporated | System and method for controlling central processing unit power in a virtualized system |
US20120144175A1 (en) * | 2010-12-02 | 2012-06-07 | Advanced Micro Devices, Inc. | Method and apparatus for an enhanced speed unified scheduler utilizing optypes for compact logic |
US9008113B2 (en) | 2010-12-20 | 2015-04-14 | Solarflare Communications, Inc. | Mapped FIFO buffering |
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 |
US9397961B1 (en) * | 2012-09-21 | 2016-07-19 | Microsemi Storage Solutions (U.S.), Inc. | Method for remapping of allocated memory in queue based switching elements |
US9424045B2 (en) | 2013-01-29 | 2016-08-23 | Arm Limited | Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit |
US9632825B2 (en) * | 2013-03-15 | 2017-04-25 | Intel Corporation | Method and apparatus for efficient scheduling for asymmetrical execution units |
US10764185B2 (en) * | 2013-06-25 | 2020-09-01 | Amazon Technologies, Inc. | Token-based policies burst-mode operations |
US9471393B2 (en) * | 2013-06-25 | 2016-10-18 | Amazon Technologies, Inc. | Burst-mode admission control using token buckets |
GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US9378168B2 (en) * | 2013-09-18 | 2016-06-28 | International Business Machines Corporation | Shared receive queue allocation for network on a chip communication |
US9405345B2 (en) * | 2013-09-27 | 2016-08-02 | Intel Corporation | Constraining processor operation based on power envelope information |
GB2540405B (en) * | 2015-07-16 | 2018-04-11 | Advanced Risc Mach Ltd | Execution of micro-operations |
US9927997B2 (en) * | 2015-12-21 | 2018-03-27 | Sandisk Technologies Llc | Methods, systems, and computer readable media for automatically and selectively enabling burst mode operation in a storage device |
US10178011B2 (en) * | 2016-02-10 | 2019-01-08 | Hewlett Packard Enterprise Development Lp | Network traffic management via network switch QoS parameters analysis |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
US10884753B2 (en) * | 2017-11-30 | 2021-01-05 | International Business Machines Corporation | Issue queue with dynamic shifting between ports |
US10679636B2 (en) * | 2018-01-12 | 2020-06-09 | Ribbon Communications Operating Company, Inc. | Methods and apparatus for supporting encoding, decoding and/or transcoding of content streams in a communication system |
US10601723B2 (en) * | 2018-04-12 | 2020-03-24 | Advanced Micro Devices, Inc. | Bandwidth matched scheduler |
-
2019
- 2019-12-10 US US16/709,527 patent/US11334384B2/en active Active
-
2020
- 2020-12-08 WO PCT/US2020/063765 patent/WO2021118989A1/en unknown
- 2020-12-08 CN CN202080085224.0A patent/CN114830083B/zh active Active
- 2020-12-08 KR KR1020227020409A patent/KR102591051B1/ko active IP Right Grant
- 2020-12-08 EP EP20829137.7A patent/EP4073638A1/en active Pending
- 2020-12-08 JP JP2022534256A patent/JP7292515B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103370685A (zh) * | 2010-09-15 | 2013-10-23 | 净睿存储股份有限公司 | 存储环境中的i/o写入的调度 |
CN107637033A (zh) * | 2015-05-15 | 2018-01-26 | 高通股份有限公司 | 通信设备中的线头阻塞(holb)缓解 |
CN109565476A (zh) * | 2016-08-29 | 2019-04-02 | 思科技术公司 | 使用共享全局存储器储备进行队列保护 |
WO2019231904A1 (en) * | 2018-05-29 | 2019-12-05 | Advanced Micro Devices, Inc. | Scheduler queue assignment |
CN110147293A (zh) * | 2019-05-20 | 2019-08-20 | 江南大学 | 一种降低微处理器软错误易感性的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210173702A1 (en) | 2021-06-10 |
EP4073638A1 (en) | 2022-10-19 |
US11334384B2 (en) | 2022-05-17 |
JP2022554029A (ja) | 2022-12-27 |
KR102591051B1 (ko) | 2023-10-19 |
JP7292515B2 (ja) | 2023-06-16 |
CN114830083B (zh) | 2024-09-10 |
WO2021118989A1 (en) | 2021-06-17 |
KR20220108082A (ko) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3371704B1 (en) | Backward compatibility testing of software in a mode that disrupts timing | |
US7861065B2 (en) | Preferential dispatching of computer program instructions | |
US9524191B2 (en) | Apparatus including a stall counter to bias processing element selection, and masks to allocate reservation unit entries to one or more processing elements | |
US11294678B2 (en) | Scheduler queue assignment | |
US20090260013A1 (en) | Computer Processors With Plural, Pipelined Hardware Threads Of Execution | |
US11204770B2 (en) | Microprocessor having self-resetting register scoreboard | |
US20090037932A1 (en) | Mechanism for broadcasting system management interrupts to other processors in a computer system | |
CN114830083B (zh) | 调度器队列分配突发模式 | |
CN111752616A (zh) | 用于符号存储地址生成的系统、装置和方法 | |
US9384076B2 (en) | Allocating machine check architecture banks | |
US20220027162A1 (en) | Retire queue compression | |
US11467838B2 (en) | Fastpath microcode sequencer | |
KR20230070247A (ko) | 다수의 페치 및 디코드 파이프라인을 갖는 프로세서 | |
US20160224252A1 (en) | Hybrid memory architecture | |
US10289516B2 (en) | NMONITOR instruction for monitoring a plurality of addresses | |
US10162640B2 (en) | Instruction for performing an overload check | |
US20190190536A1 (en) | Setting values of portions of registers based on bit values | |
US9716646B2 (en) | Using thresholds to gate timing packet generation in a tracing system | |
CN117112136A (zh) | 中断虚拟化的方法、装置、操作系统、设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |