CN114090077A - 调取指令的方法及装置、处理装置及存储介质 - Google Patents
调取指令的方法及装置、处理装置及存储介质 Download PDFInfo
- Publication number
- CN114090077A CN114090077A CN202111406306.3A CN202111406306A CN114090077A CN 114090077 A CN114090077 A CN 114090077A CN 202111406306 A CN202111406306 A CN 202111406306A CN 114090077 A CN114090077 A CN 114090077A
- Authority
- CN
- China
- Prior art keywords
- microinstruction
- prediction information
- instruction
- micro
- queue
- 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
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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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/0877—Cache access modes
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
一种调取指令的方法及装置、处理装置及存储介质。调取指令的方法包括:在分支指令预测信息队列中缓存至少两条预测信息,该至少两条预测信息包括第一预测信息和第二预测信息。响应于启用第一模式:基于第一预测信息生成第一微指令组,将第一微指令组发送到N个微指令队列中选择的第i微指令队列以用于分发,将第一微指令组发送到微指令缓存器并缓存在微指令缓存器中。响应于启用第二模式:将第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块;从微指令缓存器获取与第二预测信息对应的第二微指令组,将第二微指令组发送到N个微指令队列中的第j微指令队列以用于分发,N为大于1的整数,i和j为小于等于N的正整数。
Description
技术领域
本发明涉及一种调取指令的方法及装置、处理装置及存储介质。
背景技术
中央处理器的结构可以分为前端架构和后端架构。处理器前端主要包括分支预测(Branch Predict)、指令提取(Instruction Fetch)、指令译码(Instruction Decode)等用于调取指令的模块。处理器后端主要包括用于执行指令的模块。为了提高处理器的运行速度,处理器前端应该尽快地提供更多的指令给处理器后端以用于执行。
发明内容
本发明的实施例提供了一种调取指令的方法及装置、处理装置及存储介质,以解决现有技术中指令调取的并行度不高的技术问题。
本发明的至少一个方面提供了一种调取指令的方法,包括:在分支指令预测信息队列中缓存至少两条预测信息,其中,所述至少两条预测信息包括第一预测信息和第二预测信息;响应于启用第一模式:基于所述第一预测信息生成第一微指令组,将所述第一微指令组发送到N个微指令队列中选择的第i微指令队列以用于分发,将所述第一微指令组发送到微指令缓存器并缓存在所述微指令缓存器中;或者,响应于启用第二模式:将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块;从所述微指令缓存器获取与所述第二预测信息对应的第二微指令组,将所述第二微指令组发送到所述N个微指令队列中的第j微指令队列以用于分发,其中,N为大于1的整数,i和j为小于等于N的正整数。
在一个实施例中,基于所述第一预测信息生成所述第一微指令组包括:基于所述第一预测信息尝试从指令缓存器中提取所请求的指令数据,并将所述请求的指令数据译码为所述第一微指令组,其中,所述第一微指令组包括一个或多个第一微指令。
在一个实施例中,将所述第一微指令组发送到N个微指令队列中选择的所述第i微指令队列,包括:在所述N个微指令队列中选择在所述第二模式下的最近一条微指令被发送到的微指令队列作为所述第i微指令队列,或在所述N个微指令队列中随机选择微指令队列作为所述第i微指令队列。
在一个实施例中,响应于在所述第一模式下连续的n个预测信息所对应的n个微指令组都已存在于所述微指令缓存器中,或者,响应于在所述第一模式下连续m个时钟周期内的预测信息所对应的微指令组都已存在于所述微指令缓存器中,或者响应于在所述第一模式下连续的w个微指令都已存在于所述微指令缓存器中,从所述第一模式切换以启用所述第二模式,其中,n、m、w为大于1的整数。
在一个实施例中,将所述第二预测信息发送至所述并行的N个微指令处理模块中选择的第j微指令处理模块包括:响应于所述第二预测信息包含跳转信息,将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块。
在一个实施例中,所述至少两条预测信息还包括第三预测信息,并且所述第一预测信息、所述第二预测信息和所述第三预测信息按照所述第一时间顺序从所述分支指令预测信息队列被提取,所述第三预测信息响应于启用所述第二模式被处理且被发送至所述N个微指令处理模块中的第k微指令处理模块,与所述第三预测信息对应的第三微指令组被发送到所述N个微指令队列中的第k微指令队列以用于分发,k为小于等于N的正整数;所述方法还包括:按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组。
在一个实施例中,该方法还包括:所述第j微指令处理模块和所述第k微指令处理模块在同一操作周期中向所述微指令缓存器取值以获取所述第二微指令组和所述第三微指令组,其中,k不等于j。
在一个实施例中,所述N个微指令处理模块中每个微指令处理模块包括微指令缓存提取队列,所述第一时间顺序为正向时间顺序,所述方法还包括:将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块之后,判断所述第三预测信息是否包括所述跳转信息,响应于所述第三预测信息不包括所述跳转信息,将所述第三预测信息发送到第k微指令缓存提取队列,并从所述微指令缓存器获取与所述第三预测信息对应的第三微指令组,将所述第三微指令组发送到所述第k微指令队列以用于分发,其中,k等于j;或者响应于所述第三预测信息包括所述跳转信息,选择所述N个微指令处理模块中当前具有占用率最低的微指令缓存提取队列的微指令处理模块作为所述第k微指令处理模块。
在一个实施例中,响应于启用所述第二模式,所述方法还包括:响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列相同,不向所述第二预测信息添加分发标记;或者响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列不相同,将第三预测信息所发往的所述微指令缓存提取队列的标号作为分发标记添加到所述第二预测信息。
在一个实施例中,响应于启用所述第二模式,所述方法还包括:基于所述分发标记向所述第二微指令组添加排序标记:响应于所述第二预测信息具有分发标记,向所述第二微指令组中的最后一个微指令添加排序标记,其中所述排序标记与所述分发标记一一对应;或者响应于所述第二预测信息不具有分发标记,不向所述第二微指令组添加排序标记。
在一个实施例中,按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组,包括:响应于启用所述第一模式,选择第i微指令队列中的所述第一微指令组以用于分发;响应于启用所述第二模式,选择第j微指令队列中的所述第二微指令组以用于分发。
在一个实施例中,按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组,还包括:响应于启用所述第二模式,在选择第j微指令队列中的所述第二微指令组以用于分发之后:响应于所述第二微指令组不具有所述排序标记,选择所述第j微指令队列中的所述第三微指令组以用于分发;或者响应于所述第二微指令组具有所述排序标记,根据所述第二微指令组的所述排序标记中所指示的微指令队列来选择所述第k微指令队列,并选择所述第k微指令队列中的所述第三微指令组以用于分发。
在一个实施例中,将所述第二预测信息发送至并行的N个微指令处理模块中选择的所述第j微指令处理模块,还包括:响应于所述第二预测信息包括跳转信息,选择所述N个微指令处理模块中具有最少的等待处理的预测信息的一个作为所述第j微指令处理模块。
在一个实施例中,所述N个微指令处理模块中每个微指令处理模块包括微指令缓存提取队列,且被发送至每个微指令处理模块的预测信息被缓存在所述微指令缓存提取队列中以等待处理,将所述第二预测信息发送至并行的N个微指令处理模块中选择的所述第j微指令处理模块,还包括:响应于所述第二预测信息包括跳转信息,将所述N个微指令处理模块中具有占用率最低的微指令缓存提取队列的微指令处理模块,作为所述第j微指令处理模块,并将所述第二预测信息发送到所述第j微指令处理模块的微指令缓存提取队列缓存以等待处理。
在一个实施例中,所述至少两条预测信息还包括第四预测信息,且所述第四预测信息由所述第二模式处理,所述方法还包括:响应于在所述第二模式下无法从所述微指令缓存器获取与所述第四预测信息对应的第四微指令组,则从所述第二模式切换以启用所述第一模式,且以所述第一模式处理所述第四预测信息。
本发明的至少一个方面还提供了一种调取指令的装置,包括:分支指令预测信息队列,被配置缓存至少两条预测信息,其中,所述至少两条预测信息包括第一预测信息和第二预测信息;第一模式处理模块,被配置为响应于启用第一模式,基于所述第一预测信息生成第一微指令组,将所述第一微指令组发送到N个微指令队列中选择的第i微指令队列以用于分发,并将所述第一微指令组发送到微指令缓存器;第二模式处理模块,包括并行的N个微指令处理模块,其中,所述第二模式处理模块被配置为响应于启用第二模式,将所述第二预测信息发送至所述并行的N个微指令处理模块中选择的第j微指令处理模块,从所述微指令缓存器获取与所述第二预测信息对应的第二微指令组,并将所述第二微指令组发送到所述N个微指令队列中的第j微指令队列以用于分发;微指令缓存器,被配置为缓存所述第一微指令组和所述第二微指令组;N个微指令队列,被配置为接收所述第一微指令组和所述第二微指令组;其中,N为大于1的整数,i和j为小于等于N的正整数。
在一个实施例中,所述第一模式处理模块包括取指单元、指令缓存器和译码器,其中,所述指令缓存器被配置为存储指令数据;所述取指单元被配置为响应于接收到所述第一预测信息,基于所述第一预测信息尝试从所述指令缓存器提取所述第一预测信息所请求的指令数据,并将所述请求的指令数据发送到所述译码器;并且所述译码器被配置为将所述请求的指令数据译码为所述第一微指令组,所述第一微指令组包括一个或多个第一微指令。
在一个实施例中,该装置还包括控制器,其中,所述控制器被配置为:响应于在所述第一模式下连续的n个预测信息所对应的n个微指令组都已存在于所述微指令缓存器中,或者,响应于在所述第一模式下连续m个时钟周期内的预测信息所对应的微指令组都已存在于所述微指令缓存器中,或者响应于在所述第一模式下连续的w个微指令都已存在于所述微指令缓存器中,从所述第一模式切换以启用所述第二模式,其中,n、m、w为大于1的整数。
在一个实施例中,所述第二模式处理模块还包括分配器,所述分配器被配置为:响应于所述第二预测信息包含跳转信息,将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块。
在一个实施例中,该装置还包括排序器,其中:所述至少两条预测信息还包括第三预测信息,并且所述第一预测信息、所述第二预测信息和所述第三预测信息按照所述第一时间顺序从所述分支指令预测信息队列被提取,其中:所述分配器还被配置为响应于启用所述第二模式,将所述第三预测信息发送至所述N个微指令处理模块中的第k微指令处理模块,所述第k微指令处理模块将与所述第三预测信息对应的第三微指令组发送到所述N个微指令队列中的第k微指令队列以用于分发,其中,k为小于等于N的正整数;所述排序器被配置为按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组。
在一个实施例中,所述N个微指令处理模块中每个微指令处理模块还包括微指令取指单元,所述第j微指令处理模块中的第j微指令取指单元和所述第k微指令处理模块中的第k微指令取指单元被配置为在同一操作周期中向所述微指令缓存器取值以获取所述第二微指令组和所述第三微指令组,其中,k不等于j。
在一个实施例中,所述第一时间顺序为正向时间顺序,所述第二处理模块还被配置为:将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块之后,判断所述第三预测信息是否包括所述跳转信息,响应于所述第三预测信息不包括所述跳转信息,将所述第三预测信息发送到所述第k微指令缓存提取队列,并从所述微指令缓存器获取与所述第三预测信息对应的第三微指令组,将所述第三微指令组发送到所述第k微指令队列以用于分发,其中,k等于j;或者响应于所述第三预测信息包括所述跳转信息,选择所述N个微指令处理模块中当前具有占用率最低的微指令缓存提取队列的微指令处理模块作为所述第k微指令处理模块。
在一个实施例中,所述分配器还被配置为:响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列相同,不向所述第二预测信息添加分发标记;以及响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列不相同,将第三预测信息所发往的所述微指令缓存提取队列的标号作为分发标记添加到所述第二预测信息。
在一个实施例中,所述微指令取指单元还被配置为:基于所述分发标记向所述第二微指令组添加排序标记,其中:响应于所述第二预测信息具有分发标记,向所述第二微指令组中的最后一个微指令添加排序标记,其中所述排序标记与所述分发标记一一对应;或者响应于所述第二预测信息不具有分发标记,不向所述第二微指令组添加排序标记。
在一个实施例中,所述排序器还被配置为:响应于启用所述第一模式,选择第i微指令队列中的所述第一微指令组以用于分发;响应于启用所述第二模式,选择第j微指令队列中的所述第二微指令组以用于分发。
在一个实施例中,所述排序器还被配置为:响应于启用所述第二模式,在选择第j微指令队列中的所述第二微指令组以用于分发之后:响应于所述第二微指令组不具有所述排序标记,选择所述第j微指令队列中的所述第三微指令组以用于分发;或者响应于所述第二微指令组具有所述排序标记,根据所述第二微指令组的所述排序标记中所指示的微指令队列来选择所述第k微指令队列,并选择所述第k微指令队列中的所述第三微指令组以用于分发。
在一个实施例中,所述分配器还被配置为:响应于所述第二预测信息包括跳转信息,选择所述N个微指令处理模块中具有最少的等待处理的预测信息的一个作为所述第j微指令处理模块。
在一个实施例中,所述N个微指令处理模块中每个微指令处理模块还包括微指令缓存提取队列,且被发送至每个微指令处理模块的预测信息被缓存在所述微指令缓存提取队列中以等待处理,所述分配器还被配置为:响应于所述第二预测信息包括跳转信息,将所述N个微指令处理模块中具有占用率最低的微指令缓存提取队列的微指令处理模块,作为所述第j微指令处理模块,并将所述第二预测信息发送到所述第j微指令处理模块的微指令缓存提取队列缓存以等待处理。
本发明的至少一个方面还提供了一种处理装置,包括任一项上述调取指令的装置。
本发明的至少一个方面还提供了一种调取指令的装置,包括:处理器和存储器,所述存储器上存储有一个或多个计算机程序模块,所述一个或多个计算机程序模块包含指令,并且所述指令在由所述处理器执行时,使得所述处理器实现任一项上述调取指令的方法。
本发明的至少一个方面还提供了一种计算机可读储存介质,其中储存有计算机可读指令,所述计算机可读指令包含用于执行任一项上述方法的程序代码。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本发明的一些实施例,而非对本发明的限制。
图1是示出一种处理器前端架构的示意图;
图2是示出一种调取指令的方法的流程图;
图3是示出根据本公开的至少一个实施例提供的调取指令的装置的结构的示意图;
图4是示出根据本公开的至少一个实施例提供的调取指令的方法的流程图;
图5是示出根据本公开的至少一个实施例的在第二模式下处理预测信息的进一步操作的流程图;
图6是示出根据本公开的至少一个实施例的在第二模式下处理预测信息的进一步操作的流程图;
图7是根据本公开的至少一个实施例提供的一种处理装置的示意图;
图8是示出根据本公开的至少一个实施例提供的调取指令的装置的示意图;
图9是示出根据本公开的至少一个实施例提供的计算机可读存储介质的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本公开说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其它元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
大多数采用复杂指令集(Complex Instruction Set Computer,CISC)架构的中央处理器可以包括前端架构和后端架构。处理器的前端架构主要包括分支预测(BranchPredict)、指令提取(Instruction Fetch)、指令译码(Instruction Decode)等模块,处理器后端架构可以包括主要负责执行的单元模块。早期处理器采用直接的指令缓存器译码(IC Decode)模式,例如,指令缓存器负责将机器指令(简称“指令”)译码为一条或多条微指令(Micro-operation,Uop),并将微指令发到处理器后端执行单元以便进行后续执行操作。然而,上述指令译码过程通常会导致较高的译码时延和增加的功率需求,因此,为减少译码操作,在处理器架构中引入了额外的缓存器(例如,微指令缓存器)来缓存最近一段时间内经常使用的指令序列,以便跳过译码器的译码操作,从而能够一定程度上改善调取指令的时延。
图1是示出一种处理器前端架构的示意图。如图1所示,处理器的前端架构10包括分支预测器101、分支指令预测信息队列102、指令缓存器103、译码器104、微指令处理模块105、微指令缓存器106、微指令队列107以及分发器108。
图2是示出在如图1所示的处理器前端架构中调取指令的方法的流程图。以下将结合图1和图2描述在处理器前端架构中调取指令的方法100。
该调取指令的方法100开始于步骤S101。在步骤S101中,分支预测器101将预测信息发送到分支指令预测信息队列102中缓存,以等待对于预测信息的处理。
在步骤S102中,控制器(未示出)初始地启用指令缓存模式来处理预测信息。例如,首先基于来自分支指令预测信息队列102的预测信息中的地址信息,尝试从指令缓存器103中提取预测信息所请求的指令数据,并将该指令数据发送到译码器104进行译码。这里,指令数据可以是连续的二进制数据。译码器104可以将所获取的指令数据译码为对应的微指令组(每个微指令组包括一条或多条微指令),并将微指令组发送到微指令队列107缓存以等待分发(图2中未示出)。
在步骤S103中,译码器104还将译码后的微指令组发送到微指令缓存器106用于缓存。此时,可以在微指令缓存器106中创建用于存储微指令的微指令缓存器条目。微指令组中的一个或多个微指令被缓存在所创建的微指令缓存器条目中,例如,一个微指令缓存器条目可以存放8条微指令。微指令缓存器106在缓存微指令时,给出该微指令是否已存在于微指令缓存器106中的判断信息。例如,当一条微指令已存在于微指令缓存器106中时,微指令缓存器106可以给出缓存命中(build hit)的信息,并且当一条微指令不存在于微指令缓存器106中时,则微指令缓存器106可以给出缓存缺失(build miss)的信息。
在步骤S104中,控制器根据微指令缓存器106所给出的缓存命中或缓存缺失的信息,判断是否启用微指令缓存提取模式。在一个实施例中,例如,当微指令缓存器106给出连续数个微指令组均存在于微指令缓存器106中的缓存命中信息时,则判断结果为“是”,启用微指令缓存提取模式,方法100的步骤进行到S105;而当判断结果为“否”时,方法100的步骤返回到S102,即继续以指令缓存模式处理预测信息。
在步骤S105中,响应于启用微指令缓存提取模式,将分支指令预测信息队列102中的预测信息发送到微指令处理模块105中包含的微指令缓存提取队列,并且停止发送预测信息到指令缓存器106。
在步骤S106中,微指令缓存器106判断能否根据预测信息中的地址信息从微指令缓存器106中提取与该预测信息对应的微指令组。例如,响应于能够提取与该预测信息对应的微指令组,则方法100的步骤进行到步骤S107,否则,方法100的步骤返回到步骤S102,即***恢复以指令缓存模式处理预测信息,且以指令缓存模式处理当前未缓存命中的预测信息。
在步骤S107中,响应于能够提取与该预测信息对应的微指令组,将所提取的微指令组发送到微指令队列107以等待分发。
在步骤S108中,微指令队列107将来自指令缓存模式或微指令缓存模式处理的微指令组顺序地发往分发器108以用于后端执行,例如,寄存器重命名、执行、退休(retire)等。
如上所述的指令调取方法通过增加一个微指令处理模块,能够避免部分指令进入译码器,从而在一定程度上具有改善的取指令时延和带宽。理想地,译码器在每个时钟周期内应当可以将4条微指令发送到微指令队列以等待分发,而一个微指令处理模块在每个时钟周期内应当可以将8条微指令发送到微指令队列以等待分发。但是,由于在将微指令组缓存到微指令缓存器时所存在的诸多限制因素,例如,缓存器行(Cache line)限制、分支预测窗口限制(BPW end)和立即数(Immediate/displacement)限制等,均可能导致一个微指令缓存器条目中没有存放满8条微指令,从而使得无法实现每个时钟周期将8条微指令发送到后端的理论峰值。因此,对于上述处理器前端架构中的调取指令的整体吞吐量仍存在进一步提升的空间。
图3是根据本公开的至少一个实施例提供的处理器前端架构中调取指令的装置30的结构图。
如图3所示的实施例中,调取指令的装置30可以包括分支指令预测信息队列301、第一模式处理模块302、第二模式处理模块303、微指令缓存器304、多个微指令队列3051~N、排序器306、分发器307以及控制器308。
进一步参考图3,在一个实施例中,第一模式处理模块302还可以包括取指单元3020、指令缓存器3021和译码器3022;第二模式处理模块303还可以包括N个微指令处理模块30301~N和分配器3031,其中,N为大于1的整数。
在一个实施例中,N个微指令处理模块30301~N中的每一个还可以分别包括微指令缓存提取队列30321~N和微指令取指单元30331~N。
在一个实施例中,指令缓存器3021可以是一级缓存中的一级指令缓存(L1 I-Cache),并且微指令缓存器304可以是独立于一级指令缓存的高速缓存器;或者,指令缓存器3021和微指令缓存器304可以共享同一个存储装置。
图4是根据本公开的至少一个实施例提供的调取指令的方法200的流程图。以下将结合图3和图4描述根据本公开的实施例提供的在处理器前端架构中调取指令的方法200。
参见图3和图4,在步骤S201中,分支指令预测信息队列301可以从分支预测器101获取预测信息,并将其缓存在分支指令预测信息队列301中。
在一个实施例中,一系列预测信息PW1、PW2、...、PWq可以缓存在分支指令预测信息队列3011中以等待进一步处理,其中,q可以是大于1的整数。在一个实施例中,预测信息可以是预测窗口(prediction window)信息,预测窗口规定了由开始和结束地址标记的一系列连续的指令,这些指令可以是等长的或不等长的。在一个实施例中,预测信息可以包含指令缓存器3021中的地址信息,并且预测信息还可以包含微指令缓存器304中的地址信息。
在步骤S202中,在默认模式下,控制器308启用第一模式来处理多个预测信息。以下将以预测信息PW1为例来说明第一模式处理预测信息的具体操作。应当理解的是,这里对于预测信息的数量不做限制,可以以第一模式处理多个预测信息,这里的预测信息PW1指代任一通过第一处理模式处理的预测信息。应当理解的是,在步骤S201中,当启用第二模式时,在分支指令预测信息队列3011中缓存的预测信息可以直接由第二模式处理,即直接由步骤S205处理,而不经过步骤S202,如图4中的虚线所示。
在一个实施例中,当启用第一模式时,分支指令预测信息队列3011可以将其中缓存的预测信息PW1发送到第一模式处理模块302的取指单元3020。例如,在一个实施例中,取指单元3020可以基于预测信息PW1中包含的对应地址信息尝试从指令缓存器3021中提取预测信息所请求的指令数据。具体而言,取指单元3020例如可以基于预测信息PW1到指令缓存器3021中去获取所需的指令,如果在指令缓存器3021中没有命中的情况下,可以到下一级缓存或内存去获取所需的指令。
在一个实施例中,在从指令缓存器3021提取到相应指令数据时,将所请求的指令数据发送到译码器3022。译码器3022对指令数据进行译码操作从而将指令数据译码为微指令组Uop1。在一个实施例中,一个预测信息可以对应生成一个微指令组,一个微指令组可以包含一个或多个微指令,例如,a1~ah,其中h可以是大于等于1的整数。在一个实施例中,所得到的多个微指令组中每个微指令组所包含的微指令的数量可以不相同,并且所生成的微指令a1~ah可以是长度相等或者不相等的微指令。
在一个实施例中,当无法从指令缓存器3021提取相应指令数据时,取指单元3020可以从下一级指令缓存器(例如,L2 Cache)提取预测信息所请求的指令数据,并将所获取的指令数据发送到译码器3022从而进行后续译码操作以生成相应的微指令组。
在图3所示出的调取指令的装置中,存在N个微指令队列3051~N。在一个实施例中,译码器3022可以将译码的微指令组Uop1发送到N个微指令队列3051~N中选择的第i微指令队列305i以用于后续的分发,其中,i为小于等于N的正整数。
例如,译码器3022可以将微指令组Uop1发送到多个微指令队列3051~N中的在之前的第二模式下(将在下面描述)最近一条微指令被发送到的微指令队列;而在初始的、未启用第二模式的情况下,可以将微指令组Uop1发送到随机选择的微指令队列,即将N个微指令队列3051~N中随机选择的微指令队列作为第i微指令队列305i。这样微指令发送方式使得在从第二模式切换到第一模式时,在第一模式下的微指令组能够直接在微指令队列中按照时间顺序排序在之前第二模式下处理的微指令之后,而无需在译码器3022发送微指令到微指令队列时在微指令中添加额外的用于排序的标记,从而减少了用于恢复微指令发送顺序的信令开销。
在步骤S203中,译码器3022还将微指令组Uop1发送到微指令缓存器304,微指令缓存器304将所接收的微指令组Uop1缓存在其中。此外,在一个实施例中,微指令缓存器304在缓存微指令组Uop1时,给出微指令组Uop1中的每一条微指令a1~ah是否已存在于微指令缓存器304中的判断信息。例如,在一个实施例中,微指令缓存器304将所接收的微指令a1~ah与已存在于微指令缓存器304中的微指令进行比较,当该微指令已存在于微指令缓存器304中时,微指令缓存器304给出缓存命中(build hit)的信息,并且当该微指令不存在于微指令缓存器304中时,微指令缓存器304给出缓存缺失(build miss)的信息。
在步骤S204中,控制器308判断是否启用第二模式来处理预测信息。在本发明的实施例中,控制器308可以基于微指令缓存器304的判断来决定是否启用第二模式。例如,当前处理器可以采用标识位(Flag)来标注当前处理装置采用的是第一模式或第二模式,例如,在默认模式下,标识位被置位为“1”以表示启用第一模式,而当微指令缓存器304的判断符合相应条件(以下描述)时,标识位被置位为“0”以表示启用第二模式。控制器308读取该标识位以确定当前启用哪种模式处理预测信息。此外,当在第一模式和第二模式之间进行切换时,则相应地修改该标识位。该标识位可以存储于控制器308中或存储于处理器的其它存储结构中,本公开对此不作限制。
例如,在一个实施例中,在第一模式下,当微指令缓存器304判断连续的n个预测信息所对应的n个微指令组都已存在于微指令缓存器304中时,则控制器308可以启用第二模式,其中n为大于1的整数。在一个实施例中,当微指令缓存器304判断未达到连续的n个预测信息所对应的连续n个微指令组都存在于微指令缓存器中的条件时,则控制器308不启用第二模式,此时,方法200返回到步骤S202。
在另一个实施例中,在第一模式下,当微指令缓存器304判断连续m个时钟周期内的预测信息所对应的微指令组都已存在于微指令缓存器304中时,则控制器308可以启用第二模式,其中m为大于1的整数。在一个实施例中,当微指令缓存器304判断未达到连续m个时钟周期内的预测信息所对应的微指令组都已存在于微指令缓存器304中的条件时,则控制器308不启用第二模式,此时,方法200返回到步骤S202。
在另一个实施例中,在第一模式下,当微指令缓存器304判断连续的w个微指令都已存在于所述微指令缓存器304中时,可以启用第二模式,其中,w为大于1的整数。例如,在第一模式下,一个预测信息可能对应于一个微指令组,该微指令组中可能包含多个微指令,当连续w个微指令已存在于微指令缓存器304中时,则控制器308从第一模式切换至第二模式。例如,该连续的w个微指令可能对应于同一个微指令组,也可能对应于不同的微指令组。否则,方法200返回到步骤S202。
在步骤S205中,启用第二模式来处理预测信息,其中,使用第二模式来处理的预测信息与使用第一模式处理的预测信息不同,即,同一个预测信息根据情况要么以第一模式处理,要么以第二模式处理。在一个实施例中,第二模式可以处理一系列按正向时间顺序排列的预测信息,此处对于第二模式处理的预测信息的数量不做限制。以下将以预测信息PW2和预测信息PW3为例来说明第二模式处理预测信息的具体操作。在一个实施例中,预测信息PW1、预测信息PW2和预测信息PW3的发送满足第一时间顺序,该第一时间顺序例如可以是正向时间顺序,即,预测信息PW1是最早的,而预测信息PW3是最晚的。
响应于启用第二模式之后,分配器3031判断将发送并处理的预测信息PW2是否包括跳转信息。例如,可以判断预测信息PW2是否是分支目标(branch target)、译码器译码后的跳转目标(DE-redirect target)或执行器执行后的跳转目标(EX-redirect target)等包含跳转信息的预测信息。当预测信息PW2包含跳转信息时,分配器3031从分支指令预测信息队列3011取出预测信息PW2,并将预测信息PW2发送至微指令处理模块3030中的一个以进行进一步处理,并且此时,分支指令预测信息队列3011停止发送预测信息到第一模式处理模块302。此外,在另一个实施例中,当预测信息PW2不包含跳转信息时,分配器3031不从分支指令预测信息队列3011取出预测信息PW2,对应地预测信息PW2将仍被发送到第一处理模块302。分配器3031继续判断后续预测信息,并将第一个包含跳转信息的预测信息发送至微指令处理模块3030中的一个。
例如,在一个实施例中,分配器3031可以将预测信息PW2发送至第二模式处理模块303中的并行的N个微指令处理模块30301~N中选择的第j微指令处理模块。在一个实施例中,微指令处理模块30301~N中的微指令缓存提取队列30321~N用于缓存发送来的预测信息,并且微指令处理模块30301~N中的微指令取指单元30331~N用于从微指令缓存器304中获取与预测信息相对应的微指令组。例如,在此,可以选择微指令缓存提取队列30321~N中的第j微指令缓存提取队列3032j来缓存预测信息PW2。并且微指令取指单元30331~N中相对应的第j微指令取指单元3033j可以尝试从所述微指令缓存器304获取与预测信息PW2对应的微指令组Uop2。当能够获取与预测信息PW2对应的微指令组Uop2时,第j微指令取指单元3033j可以将微指令组Uop2发送到微指令队列3051~N中相对应的第j微指令队列305j以用于后续分发。在一个实施例中,当第j微指令取指单元3033j无法从微指令缓存器获取与预测信息PW2对应的微指令组Uop2时,则方法200返回到步骤S202,即从第二模式切换回第一模式,以第一模式继续处理该预测信息PW2(这里的预测信息PW2可以是任一预测信息,即可以对应于本公开的“第四预测信息”),且处理器将持续使用第一模式处理后续的预测信息,直到再次满足从第一模式切换到第二模式的条件。第一模式处理预测信息的操作方式如上所述。
图5是示出根据本公开的至少一个实施例的在第二模式下处理预测信息的进一步操作的流程图。
如图5所示,在步骤S501中,选择N个微指令处理模块30301~N中预测信息PW2所发往的第j微指令处理模块。
在一个实施例中,可以根据并行的N个微指令处理模块30301~N中的每一个的操作情况来选择发送预测信息的微指令缓存提取队列。
例如,在一个实施例中,分配器3031可以被配置为对于发送到每个微指令处理模块中的等待处理的预测信息进行统计,例如,在处理预测信息PW2时,可以选择N个微指令处理模块中具有最少的等待处理的预测信息的一个作为所述第j微指令处理模块。如上选择微指令处理模块的方式可以保证分配器3031所分发的预测信息去往具有最少的等待处理的预测信息的微指令缓存提取队列,从而减少预测信息的排队等待时间,提升指令调取的效率。
例如,在一个实施例中,分配器3031可以被配置为对于每一个微指令缓存提取队列的占用率进行统计。例如,分配器3031可以对N个微指令缓存提取队列30321~N中的每一个中的令牌数(token)进行计数。令牌数被定义为微指令缓存提取队列中用于缓存微指令的空闲条目的数量,因此令牌数可以表征微指令缓存提取队列中的占用率。在一个实施例中,分配器3031可以被配置为基于N个微指令缓存提取队列30321~N中的占用率或令牌数来选择将发送预测信息PW2的微指令缓存提取队列。例如,可以将N个微指令处理模块中具有占用率最低的微指令缓存提取队列3032j的微指令处理模块,作为所述第j微指令处理模块;或者可以将N个微指令处理模块中具有令牌数最多的微指令缓存提取队列3032j的微指令处理模块作为所述第j微指令处理模块。在选择了第j微指令处理模块之后,可以将预测信息PW2发送到第j微指令处理模块的微指令缓存提取队列3032j缓存以等待处理。如上选择微指令处理模块的方式可以保证分配器3031所分发的预测信息去往占用率最少的微指令缓存提取队列或者空闲条目最多的微指令缓存提取队列,从而减少指令的排队等待时间,提升指令调取的效率。
在分配器3031将预测信息PW2发送至选择的第j微指令处理模块之后,在步骤S502中,分配器3031还可以判断预测信息PW2之后的预测信息PW3是否包括跳转信息。例如,可以判断预测信息PW3是否是分支目标(branch target)、译码器译码后的跳转目标(DE-redirect target)或执行器执行后的跳转目标(EX-redirect target)等包含跳转信息的预测信息。
在一个实施例中,当预测信息PW3不包含跳转信息时,则分配器3031将预测信息PW3发送到第二模式处理模块303中的并行的N个微指令处理模块30301~N中与预测信息PW2所选择的相同的第j微指令处理模块。
在步骤S503中,当预测信息PW3包含跳转信息时,则分配器3031可以将预测信息PW3发送到第二模式处理模块303中的并行的N个微指令处理模块30301~N中选择的第k微指令处理模块。这里,第k微指令处理模块可以是与第j微指令处理模块不相同的微指令处理模块。在一个实施例中,可以选择微指令缓存提取队列30321~N中的第k微指令缓存提取队列3032k来缓存预测信息PW3。微指令取指单元30331~N中相对应的第k微指令取指单元3033k可以从微指令缓存器304获取与预测信息PW3对应的微指令组Uop3,当能够从微指令缓存器304获取对应的微指令组时,第k微指令取指单元3033k将微指令组Uop3发送到微指令队列3051~N中相对应的第k微指令队列305k以用于后续分发。
例如,在一个实施例中,分配器3031可以基于对于发送到每个微指令处理模块中的等待处理的预测信息的统计,将预测信息PW3发送至N个微指令处理模块中当前具有最少的等待处理的预测信息的一个作为所述第k微指令处理模块。如上选择微指令处理模块的方式可以保证分配器3031所分发的每一个包含跳转信息的预测信息都去往当前具有最少的等待处理的预测信息的微指令缓存提取队列,从而减少预测信息的整体的排队等待时间,提升指令调取的效率。
例如,在一个实施例中,分配器3031也可以被配置为基于微指令缓存提取队列每一个的占用率或令牌数的统计,将预测信息PW3发送到当前具有占用率最低的微指令缓存提取队列3032k的微指令处理模块,或者发送到当前具有令牌数最多的微指令缓存提取队列3032k的微指令处理模块。如上选择微指令处理模块的方式可以保证分配器3031所分发的每一个包含跳转信息的预测信息去往占用率最低的微指令缓存提取队列或者空闲条目最多的微指令缓存提取队列,从而减少指令的排队等待时间,提升指令调取的效率。
在步骤S503中,微指令处理模块并行地从微指令缓存器304取指。
例如,在一个实施例中,当第k微指令处理模块是与第j微指令处理模块不相同的微指令处理模块时,第k微指令处理模块3030k中相对应的微指令取指单元3033k可以与第j微指令处理模块3030j中第j微指令取指单元3033j在同一个操作周期(例如时钟周期或机器周期)内并行地从微指令缓存器304取指。例如,第j微指令取指单元3033j和第k微指令取指单元3033k可以在同一个操作周期内分别从微指令缓存器304获取与PW2相对应的微指令组Uop2和与PW3相对应的微指令组Uop3。虽然上述以两个微指令取指单元来举例说明对于预测信息PW2和PW3的并行处理操作,但是可以理解的是,通过如上的处理方式,N个微指令取指单元30331~N中相对应的N个微指令取指单元30331~N可以在同一个操作周期内并行地取指,从而实现多个预测信息的并行取指操作,缩短了从微指令缓存器调取指令的时间,提升了对于微指令缓存器的访问效率。
图6是示出根据本公开的至少一个实施例的在第二模式下处理预测信息的进一步操作的流程图。
在步骤S601中,分配器3031判断是否向预测信息添加分发标记(OCQ ID)。
例如,在一个实施例中,响应于预测信息PW2所发往的微指令缓存提取队列与预测信息PW3所发往的微指令缓存提取队列相同,例如,两个时间上连续的预测信息PW2和PW3均被发往相同的微指令缓存提取队列3032j,由于无需进行后续顺序恢复,因此不向预测信息PW2添加分发标记。例如,由于先后两个预测信息PW2和PW3均被发往同一微指令缓存提取队列,导致预测信息PW2和PW3将由同一个微指令取指单元(例如,3033j)处理,从而相对应的微指令组Uop2和Uop3也被发往相同的微指令队列(例如,305j),因此,微指令组Uop2和Uop3将以与预测信息PW2和PW3相同的发送时序排列在微指令队列中,并将以上述相同的时序被发送到分配器中,因而无需添加额外的标记来恢复发送顺序,从而节省了信令开销。
在另一个实施例中,响应于预测信息PW2所发往的微指令缓存提取队列与预测信息PW3所发往的微指令缓存提取队列不相同,例如,如上所述,当分配器3031基于对于发送到每个微指令处理模块中的等待处理的预测信息的当前的统计,或基于对于微指令缓存提取队列每一个的占用率或令牌数的当前统计,决定将预测信息PW2之后的预测信息PW3发往与预测信息PW2被发往微指令缓存提取队列3032j不相同的微指令缓存提取队列3032k时,则将预测信息PW3所发往的微指令缓存提取队列的标号(OCQ ID),例如k,作为分发标记添加到预测信息PW2中,从而用于标记预测信息PW2和预测信息PW3之间的发送时序。例如在该实施例中,可以将标号k作为分发标记添加到预测信息PW2中,以用于标记之后的预测信息PW3将被发往微指令缓存提取队列中的第k微指令缓存提取队列3032k。通过仅在预测信息PW2所发往的微指令缓存提取队列与其之后的预测信息PW3所发往的微指令缓存提取队列不相同的情况下,对预测信息PW2进行添加标记的操作,可以节省指令中用于指示标记的信令开销。
在步骤S602中,微指令取指单元30331~N基于预测信息的分发标记向微指令组添加排序标记。
例如,在一个实施例中,为了判断是否需要恢复将被发往后续执行单元的多个微指令组的发送顺序时,微指令取指单元30331~N可以判断预测信息PW2是否包含分发标记。例如,当预测信息PW2包含分发标记k时,则表示与预测信息PW2之后的预测信息PW3相对应的微指令组Uop3将被发往第k微指令队列,则向预测信息PW2所对应的微指令组Uop2添加排序标记。在一个实施例中,可以向预测信息PW2所对应的微指令组Uop2的最后一个微指令添加排序标记。此外,在一个实施例中,当预测信息PW2不包含分发标记时,则表示无需恢复微指令组Uop2和Uop3的顺序,因此不向预测信息PW2所对应的微指令组Uop2添加排序标记。在一个实施例中,排序标记可以与分发标记一一对应,例如,当分发标记为k时,排序标记也可以为k。此外,排序标记也可以以其他方式表示,只要能够被识别为与分发标记对应即可。可以理解的是,由于排序标记与分发标记对应,因此也仅在连续的两个微指令组所发往的微指令队列不相同时才向微指令组添加排序标记,因此同样可以节省指令中用于指示标记的信令开销。
在步骤S603中,排序器306基于第一时间顺序从N个微指令队列3051~N中提取多个微指令组以用于分发。例如,当预测信息PW1、预测信息PW2和预测信息PW3的发送满足第一时间顺序时,排序器306可以按照第一时间顺序从所述N个微指令队列中分发相对应的微指令组Uop1、第二微指令组Uop2和微指令组Uop3。
例如,在一个实施例中,当控制器308判断启用第一模式时,排序器306选择第i微指令队列中的微指令组Uop1以用于分发,由于在第一模式下,不会继续微指令队列的切换,因此排序器306始终在同一个微指令队列(例如,第i微指令队列)中顺序地将微指令组发送到分发器307;而当控制器308判断启用第二模式时,排序器306首先选择第j微指令队列中的微指令组Uop2以用于分发,该第j微指令队列中的微指令组Uop2对应于启用第二模式之后最早被处理的预测信息PW2。
在一个实施例中,当控制器308判断启用所述第二模式,在选择第j微指令队列中的微指令组Uop2以用于分发之后,排序器306判断微指令组Uop2中是否包含排序标记。例如,排序器306判断微指令组Uop2的最后一个微指令中是否包含排序标记。当微指令组Uop2不具有排序标记时,则表示微指令组Uop2之后的微指令组Uop3在与微指令组Uop2相同的第j微指令队列中,则排序器306选择第j微指令队列中的微指令组Uop3以用于分发。在一个实施例中,当微指令组Uop2具有排序标记(例如k)时,则表示微指令组Uop2之后的微指令组Uop3被发送到第k微指令队列中,则排序器306选择第k微指令队列中的微指令组Uop3,并从微指令组Uop3中最旧的微指令开始将其发送给分发器307。如此,排序器306可以恢复多个乱序调取的微指令的顺序,确保被乱序并行发送到多个微指令队列309的微指令被顺序地发送给分发器307以用于后端执行。
根据本公开的实施例提供了两个及以上的微指令缓存提取流水线,从而能够并行地处理多个预测信息,缩短了从微指令缓冲器调取指令的时间,提升了对于微指令缓存器的访问效率。此外,根据本公开的实施例没有改变微指令缓存器的结构,以较小的硬件开销提升了指令调取的吞吐量,从而进一步提升了CPU核心的整体处理性能。
图7是根据本公开的至少一个实施例提供的一种处理装置的示意图。如图7所示,处理装置700包括分支预测器701、指令调取装置702、执行单元703以及退休单元704。例如,处理装置700为单核的中央处理器或者多核的中央处理器的某一处理核,本公开的实施例对此不作限制。
分支预测器701用于对进入指令流水线的分支指令进行跳转分支预测,将通过预测的跳转方向以及跳转地址得到预测信息发送到指令调取装置中的分支指令预测信息队列;指令调取装置702为根据本公开任一实施例的指令调取装置,执行上述指令调取的方法,从而对于分支指令预测信息队列中缓存的预测信息进行如上所述地译码以及并行取指等操作,并将所生成的对应微指令顺序地发送到执行单元703;执行单元703用于执行相应的微指令;退休单元704用于将执行完毕的微指令退休(retire),即,表示该微指令已经被实际执行完成。该处理装置的效果同上述调取指令的装置的技术效果,这里不再赘述。
图8是根据本公开的至少一个实施例提供的调取指令的装置的示意图。如图8所示,调取指令的装置800包含处理器802和非瞬态存储器803。其中,在该非瞬态存储器803上存储有指令801。在一个实施例中,当处理器802执行指令801时,可以实现根据上文所述的调取指令的方法中的一个或多个步骤。图9是根据本公开的至少一个实施例提供的计算机可读存储介质的示意图。如图9所示,计算机可读存储介质900非暂时性地存储有计算机可读指令901。例如,当计算机可读指令901由计算机执行时可以执行根据上文所述的调取指令的方法中的一个或多个步骤。
例如,该计算机可读存储介质900可以应用于上述用于调取指令的装置800中。例如,计算机可读存储介质900可以为图8所示的调取指令的装置800中的非瞬态存储器803。
以上所述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此所述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行所述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的一个或多个微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
Claims (31)
1.一种调取指令的方法,包括:
在分支指令预测信息队列中缓存至少两条预测信息,其中,所述至少两条预测信息包括第一预测信息和第二预测信息;
响应于启用第一模式:
基于所述第一预测信息生成第一微指令组,
将所述第一微指令组发送到N个微指令队列中选择的第i微指令队列以用于分发,
将所述第一微指令组发送到微指令缓存器并缓存在所述微指令缓存器中;或
响应于启用第二模式:
将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块;
从所述微指令缓存器获取与所述第二预测信息对应的第二微指令组,
将所述第二微指令组发送到所述N个微指令队列中的第j微指令队列以用于分发,
其中,N为大于1的整数,i和j为小于等于N的正整数。
2.根据权利要求1所述的方法,其中,基于所述第一预测信息生成所述第一微指令组包括:
基于所述第一预测信息尝试从指令缓存器中提取所请求的指令数据,并将所述请求的指令数据译码为所述第一微指令组,其中,所述第一微指令组包括一个或多个第一微指令。
3.根据权利要求1所述的方法,其中,将所述第一微指令组发送到N个微指令队列中选择的所述第i微指令队列,包括:
在所述N个微指令队列中选择在所述第二模式下的最近一条微指令被发送到的微指令队列作为所述第i微指令队列,或在所述N个微指令队列中随机选择微指令队列作为所述第i微指令队列。
4.根据权利要求1所述的方法,其中,响应于在所述第一模式下连续的n个预测信息所对应的n个微指令组都已存在于所述微指令缓存器中,或者,响应于在所述第一模式下连续m个时钟周期内的预测信息所对应的微指令组都已存在于所述微指令缓存器中,或者响应于在所述第一模式下连续的w个微指令都已存在于所述微指令缓存器中,从所述第一模式切换以启用所述第二模式,其中,n、m、w为大于1的整数。
5.根据权利要求1所述的方法,其中,将所述第二预测信息发送至所述并行的N个微指令处理模块中选择的第j微指令处理模块包括:
响应于所述第二预测信息包含跳转信息,将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块。
6.根据权利要求5所述的方法,其中,所述至少两条预测信息还包括第三预测信息,并且所述第一预测信息、所述第二预测信息和所述第三预测信息按照所述第一时间顺序从所述分支指令预测信息队列被提取,
所述第三预测信息响应于启用所述第二模式被处理且被发送至所述N个微指令处理模块中的第k微指令处理模块,与所述第三预测信息对应的第三微指令组被发送到所述N个微指令队列中的第k微指令队列以用于分发,k为小于等于N的正整数;
所述方法还包括:
按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组。
7.根据权利要求6所述的方法,还包括:
所述第j微指令处理模块和所述第k微指令处理模块在同一操作周期中向所述微指令缓存器取值以获取所述第二微指令组和所述第三微指令组,其中,k不等于j。
8.根据权利要求6所述的方法,其中,所述N个微指令处理模块中每个微指令处理模块包括微指令缓存提取队列,所述第一时间顺序为正向时间顺序,所述方法还包括:
将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块之后,判断所述第三预测信息是否包括所述跳转信息,
响应于所述第三预测信息不包括所述跳转信息,将所述第三预测信息发送到第k微指令缓存提取队列,并从所述微指令缓存器获取与所述第三预测信息对应的第三微指令组,将所述第三微指令组发送到所述第k微指令队列以用于分发,其中,k等于j;或者
响应于所述第三预测信息包括所述跳转信息,选择所述N个微指令处理模块中当前具有占用率最低的微指令缓存提取队列的微指令处理模块作为所述第k微指令处理模块。
9.根据权利要求8所述的方法,其中,响应于启用所述第二模式,所述方法还包括:
响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列相同,不向所述第二预测信息添加分发标记;或者
响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列不相同,将第三预测信息所发往的所述微指令缓存提取队列的标号作为分发标记添加到所述第二预测信息。
10.根据权利要求9所述的方法,其中,响应于启用所述第二模式,所述方法还包括:
基于所述分发标记向所述第二微指令组添加排序标记:
响应于所述第二预测信息具有分发标记,向所述第二微指令组中的最后一个微指令添加排序标记,其中所述排序标记与所述分发标记一一对应;或者
响应于所述第二预测信息不具有分发标记,不向所述第二微指令组添加排序标记。
11.根据权利要求10所述的方法,其中,按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组,包括:
响应于启用所述第一模式,选择第i微指令队列中的所述第一微指令组以用于分发;
响应于启用所述第二模式,选择第j微指令队列中的所述第二微指令组以用于分发。
12.根据权利要求11所述的方法,其中,按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组,还包括:
响应于启用所述第二模式,在选择第j微指令队列中的所述第二微指令组以用于分发之后:
响应于所述第二微指令组不具有所述排序标记,选择所述第j微指令队列中的所述第三微指令组以用于分发;或者
响应于所述第二微指令组具有所述排序标记,根据所述第二微指令组的所述排序标记中所指示的微指令队列来选择所述第k微指令队列,并选择所述第k微指令队列中的所述第三微指令组以用于分发。
13.根据权利要求5所述的方法,其中,将所述第二预测信息发送至并行的N个微指令处理模块中选择的所述第j微指令处理模块,还包括:
响应于所述第二预测信息包括跳转信息,选择所述N个微指令处理模块中具有最少的等待处理的预测信息的一个作为所述第j微指令处理模块。
14.根据权利要求5所述的方法,其中,所述N个微指令处理模块中每个微指令处理模块包括微指令缓存提取队列,且被发送至每个微指令处理模块的预测信息被缓存在所述微指令缓存提取队列中以等待处理,
将所述第二预测信息发送至并行的N个微指令处理模块中选择的所述第j微指令处理模块,还包括:
响应于所述第二预测信息包括跳转信息,将所述N个微指令处理模块中具有占用率最低的微指令缓存提取队列的微指令处理模块,作为所述第j微指令处理模块,并将所述第二预测信息发送到所述第j微指令处理模块的微指令缓存提取队列缓存以等待处理。
15.根据权利要求1所述的方法,其中,所述至少两条预测信息还包括第四预测信息,且所述第四预测信息由所述第二模式处理,所述方法还包括:
响应于在所述第二模式下无法从所述微指令缓存器获取与所述第四预测信息对应的第四微指令组,则从所述第二模式切换以启用所述第一模式,且以所述第一模式处理所述第四预测信息。
16.一种调取指令的装置,包括:
分支指令预测信息队列,被配置缓存至少两条预测信息,其中,所述至少两条预测信息包括第一预测信息和第二预测信息;
第一模式处理模块,被配置为响应于启用第一模式,基于所述第一预测信息生成第一微指令组,将所述第一微指令组发送到N个微指令队列中选择的第i微指令队列以用于分发,并将所述第一微指令组发送到微指令缓存器;
第二模式处理模块,包括并行的N个微指令处理模块,其中,所述第二模式处理模块被配置为响应于启用第二模式,将所述第二预测信息发送至所述并行的N个微指令处理模块中选择的第j微指令处理模块,从所述微指令缓存器获取与所述第二预测信息对应的第二微指令组,并将所述第二微指令组发送到所述N个微指令队列中的第j微指令队列以用于分发;
微指令缓存器,被配置为缓存所述第一微指令组和所述第二微指令组;
N个微指令队列,被配置为接收所述第一微指令组和所述第二微指令组;
其中,N为大于1的整数,i和j为小于等于N的正整数。
17.根据权利要求16所述的装置,所述第一模式处理模块包括取指单元、指令缓存器和译码器,其中,
所述指令缓存器被配置为存储指令数据;
所述取指单元被配置为响应于接收到所述第一预测信息,基于所述第一预测信息尝试从所述指令缓存器提取所述第一预测信息所请求的指令数据,并将所述请求的指令数据发送到所述译码器;并且
所述译码器被配置为将所述请求的指令数据译码为所述第一微指令组,所述第一微指令组包括一个或多个第一微指令。
18.根据权利要求16所述的装置,还包括控制器,其中,所述控制器被配置为:
响应于在所述第一模式下连续的n个预测信息所对应的n个微指令组都已存在于所述微指令缓存器中,或者,响应于在所述第一模式下连续m个时钟周期内的预测信息所对应的微指令组都已存在于所述微指令缓存器中,或者响应于在所述第一模式下连续的w个微指令都已存在于所述微指令缓存器中,从所述第一模式切换以启用所述第二模式,其中,n、m、w为大于1的整数。
19.根据权利要求16所述的装置,其中,所述第二模式处理模块还包括分配器,所述分配器被配置为:
响应于所述第二预测信息包含跳转信息,将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块。
20.根据权利要求19所述的装置,还包括排序器,其中:
所述至少两条预测信息还包括第三预测信息,并且所述第一预测信息、所述第二预测信息和所述第三预测信息按照第一时间顺序从所述分支指令预测信息队列被提取,其中:
所述分配器还被配置为响应于启用所述第二模式,将所述第三预测信息发送至所述N个微指令处理模块中的第k微指令处理模块,所述第k微指令处理模块将与所述第三预测信息对应的第三微指令组发送到所述N个微指令队列中的第k微指令队列以用于分发,其中,k为小于等于N的正整数;
所述排序器被配置为按照所述第一时间顺序从所述N个微指令队列中分发所述第一微指令组、所述第二微指令组和所述第三微指令组。
21.根据权利要求20所述的装置,其中,所述N个微指令处理模块中每个微指令处理模块还包括微指令取指单元,
所述第j微指令处理模块中的第j微指令取指单元和所述第k微指令处理模块中的第k微指令取指单元被配置为在同一操作周期中向所述微指令缓存器取值以获取所述第二微指令组和所述第三微指令组,其中,k不等于j。
22.根据权利要求20所述的装置,其中,所述第一时间顺序为正向时间顺序,所述第二处理模块还被配置为:
将所述第二预测信息发送至并行的N个微指令处理模块中选择的第j微指令处理模块之后,判断所述第三预测信息是否包括所述跳转信息,
响应于所述第三预测信息不包括所述跳转信息,将所述第三预测信息发送到所述第k微指令缓存提取队列,并从所述微指令缓存器获取与所述第三预测信息对应的第三微指令组,将所述第三微指令组发送到所述第k微指令队列以用于分发,其中,k等于j;或者
响应于所述第三预测信息包括所述跳转信息,选择所述N个微指令处理模块中当前具有占用率最低的微指令缓存提取队列的微指令处理模块作为所述第k微指令处理模块。
23.根据权利要求22所述的装置,其中,所述分配器还被配置为:响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列相同,不向所述第二预测信息添加分发标记;以及
响应于所述第二预测信息所发往的所述微指令缓存提取队列与所述第三预测信息所发往的所述微指令缓存提取队列不相同,将第三预测信息所发往的所述微指令缓存提取队列的标号作为分发标记添加到所述第二预测信息。
24.根据权利要求23所述的装置,其中,所述微指令取指单元还被配置为:基于所述分发标记向所述第二微指令组添加排序标记,
其中,响应于所述第二预测信息具有分发标记,向所述第二微指令组中的最后一个微指令添加排序标记,其中所述排序标记与所述分发标记一一对应;或者
响应于所述第二预测信息不具有分发标记,不向所述第二微指令组添加排序标记。
25.根据权利要求24所述的装置,其中,所述排序器还被配置为:
响应于启用所述第一模式,选择第i微指令队列中的所述第一微指令组以用于分发;
响应于启用所述第二模式,选择第j微指令队列中的所述第二微指令组以用于分发。
26.根据权利要求25的装置,其中,所述排序器还被配置为,响应于启用所述第二模式,在选择第j微指令队列中的所述第二微指令组以用于分发之后:
响应于所述第二微指令组不具有所述排序标记,选择所述第j微指令队列中的所述第三微指令组以用于分发;或者
响应于所述第二微指令组具有所述排序标记,根据所述第二微指令组的所述排序标记中所指示的微指令队列来选择所述第k微指令队列,并选择所述第k微指令队列中的所述第三微指令组以用于分发。
27.根据权利要求19所述的装置,其中,所述分配器还被配置为:
响应于所述第二预测信息包括跳转信息,选择所述N个微指令处理模块中具有最少的等待处理的预测信息的一个作为所述第j微指令处理模块。
28.根据权利要求19所述的装置,其中,所述N个微指令处理模块中每个微指令处理模块还包括微指令缓存提取队列,且被发送至每个微指令处理模块的预测信息被缓存在所述微指令缓存提取队列中以等待处理,
所述分配器还被配置为:响应于所述第二预测信息包括跳转信息,将所述N个微指令处理模块中具有占用率最低的微指令缓存提取队列的微指令处理模块,作为所述第j微指令处理模块,并将所述第二预测信息发送到所述第j微指令处理模块的微指令缓存提取队列缓存以等待处理。
29.一种处理装置,包括根据权利要求16-28中任一所述的调取指令的装置。
30.一种调取指令的装置,包括:
处理器;以及
非瞬态存储器,存储有可执行指令
其中,当由所述处理器执行所述可执行指令时,以执行权利要求1-15中任一项所述的方法。
31.一种计算机可读存储介质,其上存储有计算机可读指令,所述计算机可读指令包含用于被处理器运行时以执行权利要求1-15中任一项所述的方法的程序代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406306.3A CN114090077B (zh) | 2021-11-24 | 2021-11-24 | 调取指令的方法及装置、处理装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111406306.3A CN114090077B (zh) | 2021-11-24 | 2021-11-24 | 调取指令的方法及装置、处理装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114090077A true CN114090077A (zh) | 2022-02-25 |
CN114090077B CN114090077B (zh) | 2023-01-31 |
Family
ID=80304144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406306.3A Active CN114090077B (zh) | 2021-11-24 | 2021-11-24 | 调取指令的方法及装置、处理装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090077B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115525344A (zh) * | 2022-10-31 | 2022-12-27 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
WO2024093541A1 (zh) * | 2022-10-31 | 2024-05-10 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194463A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc, | Speculative hybrid branch direction predictor |
CN1549113A (zh) * | 2003-01-14 | 2004-11-24 | 智权第一公司 | 将加载管线式微处理器指令队列的指令删除的设备及方法 |
JP2007317083A (ja) * | 2006-05-29 | 2007-12-06 | Nec Computertechno Ltd | マイクロプロセッサおよびパイプライン制御方法 |
CN101717817A (zh) * | 2009-07-17 | 2010-06-02 | 中国人民解放军国防科学技术大学 | 对基于随机上下文无关文法的rna二级结构预测进行加速的方法 |
CN102203752A (zh) * | 2008-07-29 | 2011-09-28 | Vl有限公司 | 具有多个队列之间的仲裁的数据处理电路 |
US8250555B1 (en) * | 2007-02-07 | 2012-08-21 | Tilera Corporation | Compiling code for parallel processing architectures based on control flow |
CN103218203A (zh) * | 2011-04-07 | 2013-07-24 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
CN106406814A (zh) * | 2016-09-30 | 2017-02-15 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
CN113448626A (zh) * | 2020-11-17 | 2021-09-28 | 圣图尔科技公司 | 推测分支模式更新方法和微处理器 |
-
2021
- 2021-11-24 CN CN202111406306.3A patent/CN114090077B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194463A1 (en) * | 2001-05-04 | 2002-12-19 | Ip First Llc, | Speculative hybrid branch direction predictor |
CN1549113A (zh) * | 2003-01-14 | 2004-11-24 | 智权第一公司 | 将加载管线式微处理器指令队列的指令删除的设备及方法 |
JP2007317083A (ja) * | 2006-05-29 | 2007-12-06 | Nec Computertechno Ltd | マイクロプロセッサおよびパイプライン制御方法 |
US8250555B1 (en) * | 2007-02-07 | 2012-08-21 | Tilera Corporation | Compiling code for parallel processing architectures based on control flow |
CN102203752A (zh) * | 2008-07-29 | 2011-09-28 | Vl有限公司 | 具有多个队列之间的仲裁的数据处理电路 |
CN101717817A (zh) * | 2009-07-17 | 2010-06-02 | 中国人民解放军国防科学技术大学 | 对基于随机上下文无关文法的rna二级结构预测进行加速的方法 |
CN103218203A (zh) * | 2011-04-07 | 2013-07-24 | 威盛电子股份有限公司 | 具有条件指令的微处理器及其处理方法 |
CN106406814A (zh) * | 2016-09-30 | 2017-02-15 | 上海兆芯集成电路有限公司 | 处理器和将架构指令转译成微指令的方法 |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
CN113448626A (zh) * | 2020-11-17 | 2021-09-28 | 圣图尔科技公司 | 推测分支模式更新方法和微处理器 |
Non-Patent Citations (2)
Title |
---|
FLYNN M J: "Computer architecture: Pipelined and parallel processor design", 《JONES & BARTLETT LEARNING》 * |
马汝亮: "高性能处理器存取关键技术的设计与优化", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115525344A (zh) * | 2022-10-31 | 2022-12-27 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
WO2024093541A1 (zh) * | 2022-10-31 | 2024-05-10 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
WO2024093063A1 (zh) * | 2022-10-31 | 2024-05-10 | 海光信息技术股份有限公司 | 一种译码方法、处理器、芯片及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114090077B (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114090077B (zh) | 调取指令的方法及装置、处理装置及存储介质 | |
KR102271986B1 (ko) | 다수의 마이크로 오퍼레이션에 대응한 복합 프로그램 명령어의 디코딩 | |
US7590830B2 (en) | Method and structure for concurrent branch prediction in a processor | |
US7051329B1 (en) | Method and apparatus for managing resources in a multithreaded processor | |
EP2453350B1 (en) | Processing device | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
US7937573B2 (en) | Metric for selective branch target buffer (BTB) allocation | |
US11372646B2 (en) | Exit history based branch prediction | |
CN1841314A (zh) | 双线程处理器 | |
KR20180036490A (ko) | 로컬 브랜치 디코더를 구비한 멀티이슈 마이크로코드 유닛을 포함하는 파이프라인형 프로세서 | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
EP0927394A1 (en) | A cache line branch prediction scheme that shares among sets of a set associative cache | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
US7895422B2 (en) | Selective postponement of branch target buffer (BTB) allocation | |
CN114168202B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
WO2002006959A1 (en) | Instruction fetch and dispatch in multithreaded system | |
EP2159686A1 (en) | Information processor | |
EP4217855A1 (en) | Processor with multiple fetch and decode pipelines | |
CN116048627A (zh) | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 | |
US10430342B2 (en) | Optimizing thread selection at fetch, select, and commit stages of processor core pipeline | |
US20050050309A1 (en) | Data processor | |
KR20190031498A (ko) | 어드레스 생성 시간에서 로드 및 스토어 큐 할당 시스템 및 방법 | |
US20040128476A1 (en) | Scheme to simplify instruction buffer logic supporting multiple strands | |
US20150046689A1 (en) | Arithmetic processing unit and method for controlling arithmetic processing unit |
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 |