CN116324719A - 具有多个op高速缓存管线的处理器 - Google Patents
具有多个op高速缓存管线的处理器 Download PDFInfo
- Publication number
- CN116324719A CN116324719A CN202180065928.6A CN202180065928A CN116324719A CN 116324719 A CN116324719 A CN 116324719A CN 202180065928 A CN202180065928 A CN 202180065928A CN 116324719 A CN116324719 A CN 116324719A
- Authority
- CN
- China
- Prior art keywords
- processor
- cache
- cache lines
- prediction
- instruction
- 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
- 238000000034 method Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 14
- 239000000872 buffer Substances 0.000 description 16
- 238000012545 processing Methods 0.000 description 13
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
本发明提供了一种处理器,该处理器采用多个op高速缓存管线以同时将先前解码的操作提供给指令管线的调度级。响应于在处理器处接收到第一分支预测,该处理器基于该第一分支预测来选择该处理器的该多个op高速缓存管线中的第一op高速缓存管线;以及经由所选的第一op高速缓存管线,将与该第一分支预测相关联的第一组操作提供给调度队列。
Description
背景技术
为了提高效率和指令吞吐量,现代处理器通常支持指令处理并行性,其中在给定处理器周期期间,针对所接收的指令流的不同指令,处理器同时执行指定处理任务。例如,许多处理器采用同时执行针对不同指令的操作的多个执行单元,从而减少执行不同指令所需的总时间。然而,在处理器的执行阶段之前实现并行性会带来额外的挑战。一些处理器采用同时解码多个指令的解码单元,但电路面积和功耗注意事项限制了这些解码单元的大小和效率。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的采用基于分支预测来同时提供来自高速缓存的操作的多个op高速缓存管线的处理器的框图。
图2是示出了根据一些实施方案的经由多个op高速缓存管线中的不同op高速缓存管线而向调度队列提供不同操作的图1的处理器的示例的框图。
图3是示出了根据一些实施方案的基于对应读取端口的相对饱满度来选择多个op高速缓存管线之一以提供操作的图1的处理器的示例的框图。
图4是示出了根据一些实施方案的基于与读取端口相关联的饱满度低于阈值来选择多个op高速缓存管线之一以提供操作的图1的处理器的示例的框图。
图5是根据一些实施方案的包括重新排序控制模块的图1的处理器的框图,该重新排序控制模块用于对从多个op高速缓存管线接收的操作进行重新排序。
具体实施方式
为了增强指令吞吐量,一些处理器采用操作或op高速缓存,其存储先前从执行指令中解码出来的操作。例如,在一些实施方案中,op高速缓存存储与称为预测窗口的指令集相关联的先前解码的操作,其中每个预测窗口与以下任一项相关联:1)表示预测窗口的第一指令的分支目标;或2)遵循先前预测窗口的指令,因为先前窗口在到达分支指令之前结束了。每个预测窗口由以下项来定义:该窗口的初始指令,诸如分支目标;以及该窗口的最终定义指令,诸如另一分支指令、指定存储器地址处的指令(例如,在与初始指令相关联的指令高速缓存行的结尾处的指令等)。op高速缓存包括各条目,其存储针对至少一个预测窗口子集的解码指令。因此,op高速缓存提供了一种快速生成针对预测窗口的解码操作的方式,该预测窗口由处理器在相对短的时间量内频繁执行。
然而,常规op高速缓存通常不能支持针对不同预测窗口的并行操作提供,从而限制了处理器效率。具体地,op高速缓存条目并不总是与预测窗口对齐。例如,在一些情况下,预测窗口跨越多个op高速缓存条目,而在其他情况下,单个op高速缓存条目包括针对多个预测窗口和多个指令高速缓存行的解码指令。在一些情况下,op高速缓存条目包含整数个指令并且因此具有起始和结束指令作为其边界,而对于至少一些类型的预测窗口,指令越过了指令高速缓存行边界及预测窗口的边界。由于预测窗口、指令高速缓存行和op高速缓存条目的边界的差异,常规op高速缓存仅包括单个op高速缓存管线以提供解码指令。
图1-图5示出了供处理器通过识别与已知或明确定义的op高速缓存条目对应的预测窗口(例如,分支预测窗口)来采用多个op高速缓存管线的技术。例如,在一些实施方案中,处理器包括生成分支预测窗口的分支预测器,每个分支预测窗口包括起始地址和结束地址。对于一些称为非有序退出窗口的预测窗口,结束地址是与分支指令对应的地址。换句话说,非有序退出窗口结束于与分支指令结尾对应的地址。对于非有序退出窗口,下一分支预测窗口的开始对应于分支指令的分支目标地址。其他称为有序退出窗口的预测窗口结束于与指定边界对应的地址,诸如与分支预测窗口对应的指令高速缓存行的结尾,其在一些情况下不与指令结尾对齐。对于有序退出窗口,下一分支预测窗口的开始对应于遵循了指定边界的有序地址。
在一些实施方案中,控制模块将预测窗口流向下引导至op高速缓存或获取-解码管线。控制模块存储描述op高速缓存条目的状态信息,诸如起始和结束指针,并且使用状态信息来生成从op高速缓存中检索出并提供针对传入预测窗口的解码指令所必需的op高速缓存条目访问序列。在一些实施方案中,控制模块将op高速缓存访问的该排序列表并行地分配给多个op高速缓存管线,该多个op高速缓存管线然后从对这些op高速缓存条目的访问中,同时提供解码指令。通过将一组排序的访问分配给一组排序的op高速缓存管线(例如,每时钟每管线一个访问),控制模块生成在不同op高速缓存管线之间划分的有序并行输出流,从而提高了操作吞吐量和总处理效率,同时维持了所检索操作的顺序。
在一些实施方案中,当op高速缓存不包含一部分预测流时,控制模块控制获取-解码管线以将来自缺失部分中的解码指令提供给调度队列。该获取-解码管线的运行独立于op高速缓存管线获取。处理器包括排序机制以确保调度队列按程序顺序来提供解码指令流。控制模块继续处理传入的一组预测窗口,并且基于例如op高速缓存驻留和条目内容,既为op高速缓存也为获取-解码管线,建立工作(访问)队列。从流自于那些工作队列的访问分配中,op高速缓存和获取-解码管线同时提供解码指令。
在一些实施方案中,控制模块使紧跟在有序退出预测窗口之后的预测窗口总是分配给相同的op高速缓存管线,使得有序退出预测窗口的所有此类流将沿着相同的op高速缓存管线向下流动。这允许在一个时钟内所访问的op高速缓存条目提供其所包含的最后指令字节的地址,从而识别将在下一时钟内访问的下一有序op高速缓存条目的起始地址。在此类实施方案中,仅将紧跟在非有序退出窗口之后且始于分支目标的预测窗口或者紧跟在分支预测器的重定向之后的预测窗口分配给不同的op高速缓存管线。
在一些实施方案中,至少部分地基于通过处理器来管理指令流的一个或多个方面的指定操作流标准,处理器选择一个或多个op高速缓存管线以处理给定预测窗口。为了说明,在一些实施方案中,操作流标准要求:用以满足传入预测窗口流的每个可用且必要的op高速缓存访问可平均分布于各个可用的op高速缓存管线。在其他实施方案中,可以给处理器的每个op高速缓存管线分配不同的预测窗口,其中不同的预测窗口包括待提供给调度队列的不同数目的操作。操作流程标准识别出所分配的操作的数目方面,这些方面管理着将选择那些op高速缓存管线来对给定预测窗口进行整体或部分处理。例如,在一些实施方案中,操作流标准要求:处理器选择已被分配了较少处理操作的op高速缓存管线,从而平衡不同op高速缓存管线之间的指令负载。在其他实施方案中,操作流标准要求:在将预测窗口提供给op高速缓存管线中的一个管线之前,将最少或最大数目的操作提供给op高速缓存管线中的另一管线。在其他实施方案中,操作流标准要求:将与不同线程相关联的预测窗口提供给不同的op高速缓存管线。
在一些情况下,同时处理不同预测窗口,这导致op高速缓存或获取-解码管线相对于总程序流而言无序地提供操作。因此,在一些实施方案中,处理器包括重新排序控制模块,以对来自不同操作管线的解码指令字节进行重新排序,从而在将操作提供给指令管线的后续单元之前,恢复程序流。
转向附图,图1示出了根据一些实施方案的实现了多个op高速缓存管线的处理器100。处理器100通常被配置为执行指令集(例如,计算机程序),以代表电子设备执行指定任务。因此,在不同的实施方案中,处理器100是各种各样的电子设备中的一种电子设备的一部分,诸如台式计算机、膝上型计算机、服务器、智能电话、平板电脑、游戏控制台等等。出于论述的目的,假设处理器100是通用处理器,诸如中央处理单元(CPU)。然而,在其他实施方案中,处理器100是另一类型的处理器,诸如专门设计成执行指定类型的操作的处理单元,诸如图形处理单元(GPU)、机器学习处理器等等。
在图1的示例中,将处理器100所执行的指令集表示为指令流101。具体地,指令流101是由处理器100在给定时间段内执行的指令流,并且因此这些指令与一个或多个计算机程序、程序线程等等相关联。指令流101由可变长度指令组成。即,指令流101的一个指令的大小(例如,与该指令相关联的op码及操作数的大小)不同于指令流101的至少一个其他指令的大小。
为了支持指令流101的指令的执行,处理器100包括获取-解码管线112,其被配置为从指令高速缓存110获取指令并将每个所获取指令解码成一个或多个操作。例如,在图1所绘的实施方案中,获取-解码管线112包括:获取单元120,其被配置为从指令高速缓存110获取指令;和解码单元123,其将所获取的指令解码成一个或多个操作并将操作存储于调度队列122处。处理器100包括附加的指令管线单元(图1中未示出),包括调度单元,该调度单元将调度队列122处存储的操作调度到多个执行单元以执行这些操作。
为了增强指令执行的高效性,处理器100采用操作高速缓存,本文称为op高速缓存125,其被配置为存储先前解码的操作。在一些实施方案中,op高速缓存125包括多个存储条目,每个条目与一个或多个指令地址相关联,并且每个条目存储与一个或多个指令地址相关联的一个或多个解码操作。
如本文进一步所述,处理器100包括控制模块106,其通常被配置为接收表示待解码指令的指令地址。响应于接收到指令地址,控制模块106确定op高速缓存125的条目是否与所收到的指令地址相关联,并且如果是,则分配对op高速缓存管线(126或127)的访问,该op高速缓存管线然后将对应条目处存储的操作提供给调度队列122以供存储并随后提供给调度级。从而,处理器100可以相对快速地向调度队列122提供针对频繁执行指令或指令序列的操作,而不必重复地获取并解码这些频繁执行的指令或指令序列。
如果op高速缓存125不包括与所接收的指令地址对应的条目,则控制模块106检索针对所接收的指令地址的解码操作(例如,从解码单元123),并且在一些实施方案中,根据指定的op高速缓存分配和替换策略,将所接收的指令地址分配给条目并将所检索的操作存储在所分配的条目处。从而,基于所指定的高速缓存分配和替换策略,诸如N个最近接收的指令地址,op高速缓存125维护所存储的针对指令地址集的操作。
如本文进一步所述,处理器100通常被配置为:将指令流101划分为单独流;并且针对流的每个指令,提供解码操作以调度到一组执行单元(未示出)。处理器100指定与获取流的初始指令相关联的指令地址,并且还指定获取流的结束。在一些情况下,获取流的结束对应于指令高速缓存110的包含初始指令的高速缓存行的结束。在其他实施方案中,获取流的结束对应于所定义的指令,诸如如本文进一步所述的分支指令。
为了识别获取流,处理器100采用分支预测器102,其针对分支模式(即,与采用或不采用指令流101的哪些分支指令相关联的模式,以及在什么条件下)监测指令流101。如本领域所理解,基于这些模式,分支预测器102生成分支预测,该分支预测指示了指令流101的分支指令的预期结果。在一些实施方案中,分支预测器102提供三种不同预测类型中的任一种:1)分支采用预测,表示分支指令导致对应分支被采用的预测;2)分支未采用预测,表示分支指令导致对应分支未被采用的预测;3)无预测,表示分支预测器尚未识别出指令流101的下一分支指令以及处理器100的指令流应有序进行的指示信息。
对于每个分支预测,分支预测器102生成对应的预测窗口104,其中每个预测窗口包括:1)窗口的初始指令字节的标志符(例如,指针);2)窗口的最后指令字节的标志符。每个预测窗口104因此定义了窗口的初始指令与最终指令之间的指令字节序列。
处理器100的控制模块106从分支预测器102接收预测窗口104,并且控制获取-解码管线112和op高速缓存125,以基于预测窗口104中的每个窗口的指令字节,生成操作。为了说明,响应于接收到预测窗口,控制模块106确定窗口的初始指令字节的指令地址是否对应于op高速缓存125的条目。响应于高速缓存命中(即,响应于控制模块106确定存在与初始指令字节的指令地址匹配的条目),控制模块106命令op高速缓存125将如存储在对应条目处的所接收预测窗口的操作提供给调度队列122。在一些实施方案中,为了提高处理效率,控制模块106在确定op高速缓存125的高速缓存命中或未命中的同时,在获取-解码管线112处,发起针对预测窗口的操作的获取和解码,并且响应于op高速缓存125处的高速缓存命中,停止获取和解码。
为了增强指令吞吐量,op高速缓存125包括多个op高速缓存管线(例如,op高速缓存管线126、127),其中每个op高速缓存管线被配置为独立地将一组操作从op高速缓存125的一个或多个条目提供给调度队列122。在一些实施方案中,op高速缓存管线各自包括读取端口或一组读取端口,以独立地读取op高速缓存125条目中的指令字节并将所读取的指令字节提供给调度队列122。读取端口被配置为同时运行,使得例如op高速缓存管线126和127均能够同时将一组指令字节提供给调度队列122。
在一些实施方案中,控制模块106被配置为,响应于预测窗口的高速缓存命中,分配op高速缓存管线126和127之一,以从对应的op高速缓存条目中检索出针对预测窗口的至少一部分指令字节并将所检索的指令字节提供给调度队列122。
为了说明,如上所述,预测窗口104分为两种类型:1)具有与所定义地址或位置(诸如高速缓存行的结尾)对应的最终指令字节的有序退出窗口;以及2)具有与分支指令对应的最终指令字节的非有序退出窗口。此外,每个预测窗口紧跟在有序退出窗口或非有序退出窗口之后。基于预测窗口104所指示的指令的至少一个子集,控制模块106识别出op高速缓存125的存储与该指令子集对应的操作的一组对应条目。控制模块106生成一组op高速缓存访问,即指定的op高速缓存访问117,以访问op高速缓存125的条目。控制模块106将各个访问分配给op高速缓存管线126和127中的任一管线,以分别生成op流115和116。这允许控制模块将不同的访问分配给op高速缓存管线126和127中的不同管线。
为了经由示例进行说明,在一些实施方案中,针对给定预测窗口104,控制模块106识别出op高速缓存125的存储与该预测窗口的指令对应的操作的四个不同条目的序列。作为响应,控制模块106生成op高速缓存访问117以包括四个访问的工作负载,每个条目一个访问,并且出于该示例的目的,被指定为访问A、访问B、访问C和访问D。控制模块106将每个访问分配给op高速缓存管线126和127中的一个管线。因此,例如,控制模块106将访问A和访问C分配给op高速缓存管线126,并且将访问B和访问D分配给op高速缓存管线127。op高速缓存管线126和127均通过检索对应访问所指示的op高速缓存条目处的操作来执行所分配的访问。此外,在一些实施方案中,op高速缓存管线126和127同时执行至少一些所分配的访问。例如,在一些实施方案中,op高速缓存管线126执行访问A,同时op高速缓存管线127执行访问B。从而,处理器100支持op高速缓存125处增加的吞吐量。
在一些实施方案中,控制模块117生成op高速缓存访问117,以具有与指令流101的程序顺序对应的指定顺序。根据指定方案,控制模块106分配对op高速缓存管线126和127的各个访问,使得根据程序顺序,将从op高速缓存125检索到的操作存储在调度队列125处。例如,在一些实施方案中,控制模块106被配置为,针对给定的一对同时访问,将″较旧的″访问(与程序顺序中较早的操作对应的访问)分配给op高速缓存管线126,并且将较新的访问(与程序顺序中较晚的操作对应的访问)分配给op高速缓存管线127。
在一些实施方案中,处理器100是同时执行多个线程的多线程处理器。在这些实施方案之中的一些实施方案中,控制模块106将针对多个线程的访问按交替方式分配给op高速缓存管线126和127。例如,对于一个周期,控制模块106将针对给定线程的访问分配给管线126和127,这些访问同时在不同管线处执行。对于下一周期,控制模块106将针对不同线程的访问分配给管线126和127,这些访问再次同时在不同管线处执行。
在其他实施方案中,基于一组流约束条件或标准,即指定的op流标准108,控制模块106将针对不同线程的访问分配给管线126和127。op流标准108是存储在处理器100的存储器或其他存储部件(未示出)中的数据结构,并且在一些实施方案中,例如在处理器100的测试和开发期间生成,以确保处理器高效运行。在其他实施方案中,op流标准108由处理器100处执行的操作系统来生成,并且可由并入有处理器100的电子设备的用户来调整或编程。
在一些实施方案中,部分基于用以防止处理器100处的执行错误的固定策略约束条件以及部分基于op流标准108所列的标准,控制模块106实现指令流策略。控制模块106首先确保满足了固定策略约束条件。一旦符合这些约束条件,控制模块106就采用op流标准108来增强处理器100处的指令吞吐量。
在不同实施方案中,op流标准108指示了各因素,诸如,下游资源可用性、线程公平性标准、服务质量设置等等、或它们的任何组合。操作系统或其他程序设置了op流标准108,以管理提供给管线126和127的访问流。因此,例如,在一些实施方案中,操作系统设置了op流标准108,使得控制模块106将针对指定线程的所有访问提供给指定一组op高速缓存管线。在其他实施方案中,操作系统设置了op流标准108,使得针对一组指定时间片(例如,每个时钟周期)中的每个时间片,控制模块106将按每时间片将单个线程的所有访问分配给管线126和127,并且基于操作系统所指示的流注意事项或约束条件,控制模块106选择在具体时间片中分配哪个线程。在其他实施方案中,基于操作系统所指示的流注意事项或约束条件,控制模块106将来自不同线程的访问动态分配给各个不同的op高速缓存管线。从而,操作系统可实施各种各样的线程流控制方案中的任一方案。
在一些实施方案中,基于op流标准108,控制模块106选择op高速缓存管线,以至少部分地基于在多个op高速缓存管线中的每个管线处未决的相对工作负载,处理分支流。为了说明,在一些实施方案中,op高速缓存管线126和127均包括一个或多个队列诸如输入队列,以存储将经由对应读取端口提供的操作。基于这些一个或多个队列的饱满度,控制模块106确定在op高速缓存管线126和127中的每个管线处未决的相对工作负载。响应于从分支预测器102接收预测窗口,并且假设符合固定约束条件,控制模块106将对应的获取流分配给具有较低工作负载的op高速缓存管线(即,该op高速缓存管线具有较少未决工作)。
在一些实施方案中,op高速缓存管线126和127的配置使得在将预测窗口分配给一个管线之前,将阈值数目的预测窗口分配给另一管线更有效。因此,在这些实施方案中,且基于操作流标准108,控制模块106选择op高速缓存管线126和127之一来处理预测窗口(即,为预测窗口提供操作),直到选定管线处的待决操作的数目超过阈值为止。控制模块106然后开始将预测窗口分配给op高速缓存管线126和127中的另一管线。
在一些实施方案中,op高速缓存管线126和127被配置为使得一旦已将阈值最大数目的预测窗口分配给一个管线,处理效率便降低。因此,在这些实施方案中,且基于操作流标准108,控制模块106选择op高速缓存管线126和127之一来处理预测窗口,直到达到了选定管线处的待决指令的最大阈值数目为止。控制模块106然后开始将预测窗口分配给op高速缓存管线126和127中的另一管线。
在一些实施方案中,将待由op高速缓存管线126和127处理的预测窗口与处理器100处执行的不同程序线程相关联。即,一个预测窗口的指令是一个线程的指令,而另一预测窗口的指令是另一线程的指令。在这些实施方案中,部分地基于与每个预测窗口相关联的线程,控制模块106将预测窗口分配给op高速缓存管线126和127。例如,在一些实施方案中,每个线程与在处理器100处执行的操作系统所设置的服务质量(QoS)等级相关联。基于与给定预测窗口相关联的线程的Qo S等级以及与在op高速缓存管线126和127处进行处理的预测窗口相关联的线程的QoS等级,控制模块106选择op高速缓存管线以处理给定预测窗口。例如,在一些实施方案中,控制模块106将预测窗口分配给op高速缓存管线126和127,使得具有较高QoS的线程的预测窗口不被具有较低QoS等级的线程的预测窗口阻塞,诸如通过将具有较高QoS的线程的所有预测窗口分配给op高速缓存管线126以及将具有较低QoS等级的线程的所有预测窗口分配给op高速缓存管线127。
图2是示出了根据一些实施方案的将op流115和116分配给op高速缓存管线的控制模块106的示例的框图。在所绘示例中,假设op流115和116均对应于不同的一组预测窗口。另外,在所绘示例中,op高速缓存125包括两个不同的读取端口,即指定的读取端口226(对应于图1的op高速缓存管线126)和读取端口227(对应于图1的op高速缓存管线127)。在图2的示例中,控制模块106选择读取端口226以提供针对op流115的操作。因此,控制模块106命令op高速缓存125经由读取端口226而将针对op流115的存储操作提供给调度队列122。类似地,控制模块106命令op高速缓存125经由读取端口227而提供针对op流116的存储操作。在一些实施方案中,op高速缓存125在经由读取端口227提供op流116的至少一个操作的同时,经由读取端口226提供op流115的至少一个操作。
在一些实施方案中,op流115和116由控制模块106按op高速缓存条目读取的粒度来生成,使得op流115和116对应于相同的预测窗口,并且控制模块106基于所排序的一组总op高速缓存访问而将op高速缓存条目读取分配给op流115和116。为了经由示例进行说明,给定的预测窗口PW0对应于三个op高速缓存条目,从而需要指定为PW0A0、PW0A1和PW0A2的三个op高速缓存访问。随后的预测窗口PW1对应于单个op高速缓存条目,从而需要指定为PW1A0的一个op高速缓存访问。控制模块106将访问PW0A0和PW0A2分配给op流115,并且将访问PW0A1和PW1A0分配给op流116。因此,同时执行了访问PW0A0和PW0A1(例如,在相同时钟周期期间),并且同时执行了访问PWOA2和PW1A0(例如,在随后的时钟周期期间)。
如上所述,在一些实施方案中,操作流标准108说明,控制模块106将基于每个管线处的相对工作负载而将op流分配给op高速缓存管线126和127。图3示出了根据一些实施方案的示例。在图3的示例中,控制模块106分别监测读取端口226和227的输入队列的饱满度。在所绘示例中,读取端口226的输入队列比读取端口227的输入队列更满。即,读取端口226具有比读取端口227更多的等待提供给调度队列222的操作,从而说明,op高速缓存管线126具有比op高速缓存管线127更大的总工作负载。因此,响应于从分支预测器102接收到与预测窗口对应的op流327的指示符,控制模块106选择读取端口227以提供与op流327相关联的操作。从而,控制模块106平衡了op高速缓存管线126和127之间的op高速缓存125的总工作量。
在一些实施方案中,操作流标准108说明,控制模块106待将op流分配给op高速缓存管线226,直到管线226处的工作负载处于或高于最小阈值为止。图4示出了根据一些实施方案的示例。在图4的示例中,控制模块106监测op高速缓存管线226的输入队列的饱满度,并将该饱满度与阈值431进行比较。在所绘示例中,输入队列的饱满度尚未达到阈值431。即,输入队列224具有比阈值431所指示的操作数目更少的等待处理的操作。因此,响应于从分支预测器102接收到op流428的指示符,控制模块106选择op高速缓存管线226来处理op流428。
在一些实施方案中,控制模块106将op流分配给op高速缓存管线126和127,使得相对于与指令流101相关联的总程序流,无序地处理指令。在一些情况下,指令的此类无序处理使处理器100的其他部分(诸如处理器100的一个或多个执行单元处)中出现错误。因此,在一些实施方案中,处理器100包括用以在op高速缓存管线126和127之后恢复指令顺序的元件。图5示出了根据一些实施方案的示例。在所绘示例中,处理器100包括置于op高速缓存管线126和127与调度队列122之间的重新排序控制模块538。
应当理解,虽然已经参照单个因素描述了op流标准的上述示例,但是在一些实施方案中,控制模块106采用多个因素来确定如何将op高速缓存访问分配给不同的op流。因此,例如,在一些实施方案中,基于诸如不同执行线程的服务质量信息、缓冲器饱满度、分配给给定流的访问阈值数目等两个或多个因素的组合,控制模块106将op高速缓存访问分配给op高速缓存流。
在操作中,op高速缓存管线126和127分别检索针对op流115和116的操作。如上所述,在一些情况下,相对于指令流101的整个程序流,管线126和127无序地生成这些操作。重新排序控制模块538被配置为对op高速缓存管线126和127所生成的操作进行重新排序,以恢复指令流101的原始顺序。例如,在一些实施方案中,重新排序控制模块538对操作进行重新排序,使得所重新排序的操作的序列对应于若这些操作已由单个op高速缓存管线来提供时将形成的序列(称为指定指令序列)。在其他实施方案中,重新排序模块538既从op高速缓存管线126和127也从解码单元123接收所解码的指令,并且根据所指定的指令序列,对所接收的解码指令进行重新排序。因此,在一些实施方案中,所指定的指令序列既包括从op高速缓存106接收的操作也包括从解码单元123接收的操作。重新排序控制模块538将重新排序的操作提供给调度队列122。调度单元检索所重新排序的序列中的重新排序操作,并且将每个操作调度到处理器100的对应执行单元(未示出)。
在不同的实施方案中,重新排序控制模块538包括不同的重新排序结构。例如,在一些实施方案中,重新排序控制模块包括先入先出(FIFO)缓冲器,其恢复了从op高速缓存管线126和127以及从解码单元123接收的操作的排序。在其他实施方案中,重新排序控制模块538包括针对op高速缓存管线126和127中的每个管线的单独FIFO缓冲器以及针对解码单元123的FIFO缓冲器,并且也包括存储控制信息的重新排序序列FIFO缓冲器,该控制信息诸如为以下一项或多项:针对每个操作的指令或块序列号、存储块起始操作的FIFO缓冲器(即,存储与获取窗口的初始指令对应的操作的FIFO缓冲器)、FIFO起始条目地址(即,存储与获取窗口的初始指令对应的操作的FIFO缓冲器条目的地址)、FIFO结束条目地址(即,存储与获取窗口的最后指令对应的操作的FIFO缓冲器条目的地址)、对应FIFO缓冲器中的获取块的条目数目等、或它们的任何组合。重新排序控制模块538的控制电路采用该控制信息来恢复存储在单独的FIFO缓冲器中的操作的顺序。
在其他实施方案中,重新排序控制模块538包括FIFO缓冲器,其在FIFO写入时间,存储所重新排序的最旧的一组操作,并且还包括另一FIFO缓冲器,其存储来自多个op高速缓存管线中的任一管线的其他较新的操作块。重新排序控制模块538还包括重新排序序列FIFO缓冲器,其存储控制信息,诸如以下一项或多项:指令或块序列号、存储获取窗口开始处的FIFO、FIFO条目起始地址、FIFO条目结束地址、以及对应FIFO缓冲器中的获取窗口的条目数目。重新排序控制模块538的控制电路采用该控制信息来恢复存储在单独的FIFO缓冲器中的操作的顺序。
在其他实施方案中,每个预测窗口与诸如序列号等标识符相关联。重新排序控制模块538包括具有多个条目的存储结构,其中通过分支预测标识符所寻址的条目存储以下一项或多项:始于对应分支预测窗口的一组预测的指示符、分支预测窗口的大小、以及指向与指令流101的下一分支预测窗口相关联的一组操作的指针。在其他实施方案中,重新排序控制模块538采用了描述符的链接列表,这些描述符标识了解码操作的正确序列。重新排序控制模块538采用该序列信息来将所接收的操作恢复成指令流101的程序流所指示的序列。
如本文所公开,在一些实施方案中,一种方法包括:响应于在处理器处接收到第一分支预测:选择该处理器的多个op高速缓存管线中的第一op高速缓存管线;以及经由所选的第一op高速缓存管线,将与第一分支预测相关联的第一组操作提供给处理器的调度级。在一个方面,选择第一op高速缓存管线还包括:基于与多个op高速缓存管线相关联的op流标准来选择第一op高速缓存管线。在另一方面,操作流标准包括与处理器处所执行的至少一个线程相关联的服务质量。在又一方面,操作流标准指示:针对多个时间片中的每个时间片,将多个执行线程中的哪一线程分配给多个op高速缓存管线。
在一个方面,操作流标准包括在选择之前提供给第一op高速缓存管线的预测窗口的数目。在另一方面,操作流标准包括预期待提供给多个op高速缓存管线中的每个管线的预测窗口的最小数目。在再一方面,操作流标准包括预期待提供给多个op高速缓存管线中的每个管线的预测窗口的最大数目。在又一方面,多个op高速缓存管线中的每个管线包括处理器的op高速缓存的不同读取端口。
在一个方面,该方法包括:基于第一分支预测所指示的第一操作和最后操作,确定第一组操作;以及在生成第一组操作之后,对第一组操作进行重新排序,该重新排序基于在处理器处识别的程序序列。在另一方面,选择第一op高速缓存管线还包括:基于第一分支预测来选择第一op高速缓存管线。
在一些实施方案中,一种方法包括:响应于在处理器处识别分支预测:基于该分支预测来选择处理器的多个op高速缓存管线中的一个管线,多个op高速缓存管线中的每个管线与处理器的op高速缓存的不同读取端口相关联;经由所选op高速缓存管线,将与分支预测相关联的一组操作提供给处理器的调度级。
在一些实施方案中,一种处理器包括:分支预测器,该分支预测器用以生成第一分支预测;调度队列;多个op高速缓存管线;控制模块,该控制模块用以选择处理器的多个op高速缓存管线中的第一op高速缓存管线;并且其中所选op高速缓存管线用以将与第一分支预测相关联的操作提供给调度队列。在一个方面,控制模块用以基于与多个op高速缓存管线相关联的操作流标准来选择第一op高速缓存管线。在另一方面,操作流标准包括分配给第一op高速缓存管线的第一操作量。在再一方面,操作流标准包括分配给多个op高速缓存管线中的第二op高速缓存管线的第二操作量。在又一方面,操作流标准包括在选择之前提供给第一op高速缓存管线的预测窗口的数目。
在一个方面,操作流标准包括预期待提供给多个op高速缓存管线中的每个管线的预测窗口的最小数目。在另一方面,操作流标准包括预期待提供给多个op高速缓存管线中的每个管线的预测窗口的最大数目。在又一方面,多个op高速缓存管线中的每个管线包括op高速缓存的不同读取端口。在再一方面,处理器包括:重新排序模块,该重新排序模块用以对经由第一op高速缓存管线所提供的操作进行重新排序,该重新排序基于在处理器处识别的程序序列。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种方法,包括:
响应于在处理器处接收到第一分支预测:
选择所述处理器的多个op高速缓存管线中的第一op高速缓存管线;以及
经由所选的第一op高速缓存管线,将与所述第一分支预测相关联的第一组操作提供给所述处理器的调度级。
2.根据权利要求1所述的方法,其中选择所述第一op高速缓存管线还包括:基于与所述多个op高速缓存管线相关联的操作流标准来选择所述第一op高速缓存管线。
3.根据权利要求2所述的方法,其中所述操作流标准包括与在所述处理器处执行的至少一个线程相关联的服务质量。
4.根据权利要求2所述的方法,其中所述操作流标准指示:针对多个时间片中的每个时间片,将多个执行线程中的哪一线程分配给所述多个op高速缓存管线。
5.根据权利要求2所述的方法,其中所述操作流标准包括在所述选择之前提供给所述第一op高速缓存管线的预测窗口的数目。
6.根据权利要求5所述的方法,其中所述操作流标准包括预期待提供给所述多个op高速缓存管线中的每个管线的预测窗口的最小数目。
7.根据权利要求5所述的方法,其中所述操作流标准包括预期待提供给所述多个op高速缓存管线中的每个管线的预测窗口的最大数目。
8.根据任一前述权利要求所述的方法,其中所述多个op高速缓存管线中的每个管线包括所述处理器的op高速缓存的不同读取端口。
9.根据任一前述权利要求所述的方法,还包括:
基于所述第一分支预测所指示的第一操作和最后操作,确定所述第一组操作;以及
在生成所述第一组操作之后,对所述第一组操作进行重新排序,所述重新排序基于在所述处理器处识别的程序序列。
10.根据任一前述权利要求所述的方法,其中选择所述第一op高速缓存管线还包括:基于所述第一分支预测来选择所述第一op高速缓存管线。
11.一种方法,包括:
响应于在处理器处识别分支预测:
基于所述分支预测来选择所述处理器的多个op高速缓存管线中的一个管线,所述多个op高速缓存管线中的每个管线与所述处理器的op高速缓存的不同读取端口相关联;以及
经由所选op高速缓存管线,将与所述分支预测相关联的一组操作提供给所述处理器的调度级。
12.一种处理器,包括:
分支预测器,所述分支预测器用以生成第一分支预测;
调度队列;
多个op高速缓存管线;
控制模块,所述控制模块用以选择所述处理器的所述多个op高速缓存管线中的第一op高速缓存管线;并且
其中所选op高速缓存管线用以将与所述第一分支预测相关联的操作提供给所述调度队列。
13.根据权利要求12所述的处理器,其中所述控制模块用以基于与所述多个op高速缓存管线相关联的操作流标准来选择所述第一op高速缓存管线。
14.根据权利要求13所述的处理器,其中所述操作流标准包括分配给所述第一op高速缓存管线的第一操作量。
15.根据权利要求14所述的处理器,其中所述操作流标准包括分配给所述多个op高速缓存管线中的第二op高速缓存管线的第二操作量。
16.根据权利要求15所述的处理器,其中所述操作流标准包括在所述选择之前提供给所述第一op高速缓存管线的预测窗口的数目。
17.根据权利要求16所述的处理器,其中所述操作流标准包括预期待提供给所述多个op高速缓存管线中的每个管线的预测窗口的最小数目。
18.根据权利要求16所述的处理器,其中所述操作流标准包括预期待提供给所述多个op高速缓存管线中的每个管线的预测窗口的最大数目。
19.根据权利要求17所述的处理器,其中所述多个op高速缓存管线中的每个管线包括所述op高速缓存的不同读取端口。
20.根据任一前述权利要求所述的处理器,还包括:
重新排序模块,所述重新排序模块用以对经由所述第一op高速缓存管线提供的所述操作进行重新排序,所述重新排序基于在所述处理器处识别的程序序列。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063083435P | 2020-09-25 | 2020-09-25 | |
US63/083,435 | 2020-09-25 | ||
US17/116,950 | 2020-12-09 | ||
US17/116,950 US11907126B2 (en) | 2020-09-25 | 2020-12-09 | Processor with multiple op cache pipelines |
PCT/US2021/051046 WO2022066560A1 (en) | 2020-09-25 | 2021-09-20 | Processor with multiple op cache pipelines |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116324719A true CN116324719A (zh) | 2023-06-23 |
Family
ID=80822672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180065928.6A Pending CN116324719A (zh) | 2020-09-25 | 2021-09-20 | 具有多个op高速缓存管线的处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11907126B2 (zh) |
EP (1) | EP4217854A1 (zh) |
JP (1) | JP2023544009A (zh) |
KR (1) | KR20230070042A (zh) |
CN (1) | CN116324719A (zh) |
WO (1) | WO2022066560A1 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6079014A (en) | 1993-12-02 | 2000-06-20 | Intel Corporation | Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state |
AU2001245520A1 (en) | 2000-03-08 | 2001-09-17 | Sun Microsystems, Inc. | Vliw computer processing architecture having a scalable number of register files |
US7945763B2 (en) | 2006-12-13 | 2011-05-17 | International Business Machines Corporation | Single shared instruction predecoder for supporting multiple processors |
US8990543B2 (en) | 2008-03-11 | 2015-03-24 | Qualcomm Incorporated | System and method for generating and using predicates within a single instruction packet |
GB2483903A (en) | 2010-09-24 | 2012-03-28 | Advanced Risc Mach Ltd | Instruction which specifies the type of the next instruction to be executed |
US11010067B2 (en) * | 2018-12-28 | 2021-05-18 | Intel Corporation | Defense against speculative side-channel analysis of a computer system |
US11016763B2 (en) * | 2019-03-08 | 2021-05-25 | Advanced Micro Devices, Inc. | Implementing a micro-operation cache with compaction |
US20210081575A1 (en) * | 2019-09-12 | 2021-03-18 | Microsoft Technology Licensing, Llc | Hybrid mitigation of speculation based attacks based on program behavior |
GB2594498B (en) * | 2020-04-30 | 2022-06-01 | Advanced Risc Mach Ltd | Instruction scheduling |
-
2020
- 2020-12-09 US US17/116,950 patent/US11907126B2/en active Active
-
2021
- 2021-09-20 EP EP21873249.3A patent/EP4217854A1/en active Pending
- 2021-09-20 CN CN202180065928.6A patent/CN116324719A/zh active Pending
- 2021-09-20 KR KR1020237013545A patent/KR20230070042A/ko unknown
- 2021-09-20 WO PCT/US2021/051046 patent/WO2022066560A1/en unknown
- 2021-09-20 JP JP2023519083A patent/JP2023544009A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US11907126B2 (en) | 2024-02-20 |
JP2023544009A (ja) | 2023-10-19 |
WO2022066560A1 (en) | 2022-03-31 |
EP4217854A1 (en) | 2023-08-02 |
US20220100663A1 (en) | 2022-03-31 |
KR20230070042A (ko) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7213137B2 (en) | Allocation of processor bandwidth between main program and interrupt service instruction based on interrupt priority and retiring micro-ops to cache | |
US8468324B2 (en) | Dual thread processor | |
US9501320B2 (en) | Scheduling threads according to real time bit in predetermined time period or in variable time period of requested time ratio | |
EP2147373B1 (en) | Multithreaded processor for executing thread de-emphasis instruction and method therefor | |
US9098336B2 (en) | Multi-thread processor and its hardware thread scheduling method | |
US11275614B2 (en) | Dynamic update of the number of architected registers assigned to software threads using spill counts | |
JP5607545B2 (ja) | マイクロプロセッサシステムにおける命令フェッチングの優先順位付け | |
US20190171462A1 (en) | Processing core having shared front end unit | |
WO2011155097A1 (ja) | 命令発行制御装置及び方法 | |
JP2006343872A (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
EP4217855A1 (en) | Processor with multiple fetch and decode pipelines | |
WO2006129767A1 (ja) | マルチスレッド中央演算装置および同時マルチスレッディング制御方法 | |
US11907126B2 (en) | Processor with multiple op cache pipelines | |
US20090193240A1 (en) | Method and apparatus for increasing thread priority in response to flush information in a multi-threaded processor of an information handling system | |
CN112416244A (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 |