CN117348936A - 处理器、取指方法和计算机系统 - Google Patents
处理器、取指方法和计算机系统 Download PDFInfo
- Publication number
- CN117348936A CN117348936A CN202311413569.6A CN202311413569A CN117348936A CN 117348936 A CN117348936 A CN 117348936A CN 202311413569 A CN202311413569 A CN 202311413569A CN 117348936 A CN117348936 A CN 117348936A
- Authority
- CN
- China
- Prior art keywords
- instruction
- module
- loop
- processor
- loop body
- 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 title claims abstract description 13
- 238000001514 detection method Methods 0.000 claims abstract description 54
- 125000004122 cyclic group Chemical group 0.000 claims abstract description 29
- 239000003550 marker Substances 0.000 claims description 16
- 125000002015 acyclic group Chemical group 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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
- G06F9/381—Loop buffering
-
- 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/3818—Decoding for concurrent execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供一种处理器及取指方法、计算机系统,处理器包括取指单元和译码单元;其中,所述取指单元被配置为,对获取到的指令进行循环体标记检测;根据检测结果,将循环体指令和非循环体指令分时发送至所述译码单元;其中,所述循环体标记中携带循环体的目标循环次数,所述取指单元根据所述目标循环次数将所述循环体指令循环发送至所述译码单元;所述译码单元被配置为,对接收到的指令进行译码。
Description
技术领域
本公开涉及处理器技术领域,具体涉及一种处理器、取指方法和计算机系统。
背景技术
取指单元(instruction fetch unit,IFU)是CPU中负责获取指令的模块,一般包含指令高速缓存存储器(I-cache)以及分支预测相关功能模块。在各种指令集中,分支指令是每个指令集体系中必不可少的一类指令。由于分支指令会导致控制冒险,因此处理器在运行分支指令时可能会导致流水线被刷新。一般的程序代码,分支指令所占比例在1/4左右,设计者在处理器设计中会对分支指令进行特殊的处理,设计分支预测模块以提升处理器的性能。
在RISCV指令集中,分支指令主要分为两类:条件分支指令和无条件分支指令。对于循环的程序段来讲,在流水线较长的处理器中,一般需要预测器进行多次学习才能准确预测循环的程序段,无法做到精准预测。
发明内容
本公开旨在至少解决现有技术中存在的技术问题之一,提出了一种处理器、取指方法和计算机系统。
第一方面,本公开提供一种处理器,包括取指单元和译码单元;其中,
所述取指单元被配置为,对获取到的指令进行循环体标记检测;根据检测结果,将循环体指令和非循环体指令分时发送至所述译码单元;其中,所述循环体标记中携带循环体的目标循环次数,所述取指单元根据所述目标循环次数将所述循环体指令循环发送至所述译码单元;
所述译码单元被配置为,对接收到的指令进行译码。
在一些实施例中,所述取指单元包括:指令缓存模块、检测模块、循环体缓存模块和指令缓冲队列模块;其中,
所述指令缓存模块被配置为,接收并缓存指令;
所述检测模块被配置为,从所述指令缓存模块中获取指令,并对获取到的指令进行循环体标记检测;根据检测结果,将属于所述循环体指令发送至所述循环体缓存模块;将所述非循环体指令发送至所述指令缓冲队列模块;
所述循环体缓存模块被配置为,根据所述目标循环次数,将所述循环体指令循环发送至所述译码单元;
所述指令缓冲队列模块被配置为,在所述循环体缓存模块停止发送指令时,将所述指令缓冲队列模块中的指令发送至所述译码单元。
在一些实施例中,所述检测模块具体被配置为,从所述指令缓存单元中获取指令,并检测获取到的指令中是否包含循环体起始标记或循环体结束标记;以及,将由所述循环体起始标记之后的下一条指令至所述循环体结束标记所对应的指令,均作为所述循环体指令发送至所述循环体缓存模块;将其余的指令作为所述非循环体指令发送至所述指令缓冲队列模块。
在一些实施例中,所述循环体结束标记为:位于所述循环体起始指令之后,且指令偏移量为负数的条件分支指令。
在一些实施例中,所述循环体缓存模块具体被配置为,将所述循环体指令循环发送至所述译码单元,其中,每完成一次循环体的发送,均将当前的所述目标循环次数减1,直至所述目标循环次数为零时,停止发送指令。
在一些实施例中,所述检测模块还被配置为,检测所述循环体起始标记中所携带的目标循环次数,并将所述目标循环次数发送给所述循环体缓存模块。
在一些实施例中,所述循环体起始标记为hint指令。
在一些实施例中,所述取指单元还包括:分支预测器,用于预测所述检测模块与所述指令缓冲队列模块之间通路上的分支指令的跳转方向以及目标地址。
第二方面,本公开提供一种取指方法,包括:
对接收到的指令进行循环体标记检测;
根据检测结果,将循环体指令和非循环体指令分时发送至译码单元,以供所述译码单元对接收到的指令进行译码;
其中,所述循环体标记中携带循环体的目标循环次数,所述循环体指令是基于所述目标循环次数循环发送至所述译码单元的。
第三方面,本公开提供一种计算机系统,包括上述的处理器。
在一些实施例中,所述计算机系统还包括:
编译器,被配置为识别循环体的代码长度;并将代码长度小于预设长度的循环体发送至所述处理器。
在本公开实施例中,取指单元能够对指令进行循环体标记检测,从而可以根据检测结果判断指令是否属于循环体,并根据循环体标记中所携带的目标循环次数,将循环体指令循环发送至译码单元进行译码。其中,循环体标记是用于表示循环体起始位置的标记,例如,当指令中包含循环体起始标记时,则表明从下一条指令开始,为循环体指令。和预测的方式相比,本公开实施例中的处理器通过对指令进行循环体标记检测,可以准确地检测到循环体,从而提高处理器的性能。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为本公开的一些实施例中提供的处理器的系统框图。
图2为本公开的一些实施例中取指单元和译码单元的示意图。
图3为本公开的一些实施例中取指单元和译码单元的示意图。
图4为本公开的一些实施例中提供的取指方法的示意图。
图5为本公开的一些实施例中提供的计算机系统的示意图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另作定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。
本公开实施例提供一种处理器,图1为本公开的一些实施例中提供的处理器的系统框图,如图1所示,处理器可以包括多个处理器核01和存储器控制器单元05。在一些示例中,处理器可以实现为中央处理器(CPU),处理器核01是通用核(例如,通用有序核、通用无序核、这两者的组合);在另一些示例中,处理器核01可以实现为协处理器,处理器核01是用于图形和/或科学(吞吐量)的多个专用核;在再一些示例中,处理器可以实现为协处理器,处理器核01是多个通用有序核。
存储器层次结构包括在各处理器核01内的指令高速缓存存储器(I-cache)011和数据高速缓存存储器(D-cache)012,另外还包括二级(L2)高速缓存02,以及耦接到存储器控制器单元05的外部存储器06。其中,处理器核01、L2高速缓存02、三级(L3)目录03、存储器控制单元05部署在处理芯片01a中。指令高速缓存存储器011和数据高速缓存存储器012是1级(L1)高速缓存,并耦合到L2高速缓存02。L2高速缓存02作为存储器高速缓存操作,位于处理器核01外部。存储器控制器单元05被配置为管理L2高速缓存02与外部存储器06之间的数据传输。处理器还包括三级(L3)目录03,L3目录03提供对片外L3高速缓存04的片内访问。L3高速缓存04可以是附加的动态随机存取存储器。
在一些实施例中,处理器包括取指单元和译码单元,其中,取指单元和译码单元可以部署在处理器核01中。其中,图2为本公开的一些实施例中取指单元10和译码单元20的示意图,其中,取指单元10被配置为,对获取到的指令进行循环体标记检测;根据检测结果,将循环体指令和非循环体指令分时发送至译码单元20;其中,循环体标记中携带循环体的目标循环次数,取指单元10根据目标循环次数将循环体指令循环发送至译码单元20。
其中,取指单元10可以从存储器或其他源获取要处理的指令,并发送给译码单元20。取指单元10获取的指令包括但不限于高级机器指令或者宏指令等。处理器通过执行这些指令来完成特定功能。
需要说明的是,在处理器中,经常需要重复处理一段由多个指令构成的指令片段,这种指令片段即为循环体。其中,循环体指令是指,处于循环体的指令;非循环体是指,不属于循环体的指令。
循环体标记是指,能够指示循环体起始位置和结束位置的标记。在一个示例中,循环体标记可以包括循环体起始标记和循环体结束标记。其中,取指单元10对指令进行循环体标记检测后,可以判断获取到的指令是否属于循环体。
译码单元20被配置为,对接收到的指令进行译码,从而生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现译码单元。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)。
在本公开实施例提供的处理器中,取指单元10能够对指令进行循环体标记检测,从而可以根据检测结果判断指令是否属于循环体,并根据循环体标记中所携带的目标循环次数,将循环体指令循环发送至译码单元20进行译码。其中,循环体标记是用于表示循环体起始位置的标记,例如,当指令中包含循环体起始标记时,则表明从下一条指令开始,为循环体指令。和预测的方式相比,本公开实施例中的处理器通过对指令进行循环体标记检测,可以准确地检测到循环体,从而提高处理器的性能。
在一些实施例中,如图2所示,取指单元10包括:指令缓存模块11、检测模块12、循环体缓存模块14和指令缓冲队列模块13。
其中,指令缓存模块11即为上述指令高速缓存存储器,其被配置为,接收并缓存指令。指令缓存模块11所接收的指令为取指单元10外部的模块(例如编译器)所发送给取指单元10的指令。
在一些实施例中,检测模块12被配置为,从指令缓存模块11中获取指令,并对获取到的指令进行循环体标记检测;以及,根据检测结果,将循环体指令发送至循环体缓存模块14;将非循环体指令发送至指令缓冲队列模块13。
循环体缓存模块14被配置为,根据循环体的目标循环次数,将循环体指令循环发送至译码单元20。
指令缓冲队列模块13被配置为,在循环体缓存模块14停止发送指令时,将指令缓冲队列模块13中的指令发送至译码单元20。
在一个示例中,取指单元10还可以包括选择模块(未示出),循环体缓存模块14可以向选择模块发送指令,选择模块在接收到循环体缓存模块14所发送的指令时,将该指令发送至译码单元20;当循环体缓存模块14停止向选择模块发送指令时,则选择模块将指令缓冲队列模块13与译码单元20导通,以使指令缓冲队列模块13向译码单元20发送指令。
在一些实施例中,循环体标记可以包括循环体起始标记和循环体结束标记。循环体起始标记用于表示循环体即将开始,循环体结束标记用于表示循环体即将结束。
如图2所示,检测模块12可以包括:检测子模块121和发送子模块122。
其中,检测子模块121被配置为,从指令缓存模块11中获取指令,并检测获取到的指令中是否包含循环体起始标记或循环体结束标记。
发送子模块122被配置为,将由循环体起始标记之后的下一条指令至循环体结束标记所对应的指令,均作为循环体指令发送至循环体缓存模块14;将其余的指令作为非循环体指令发送至指令缓冲队列模块13。
在一些实施例中,循环体起始标记可以为hint指令。
表1为RISCV指令集中的hint指令。
表1
其中,在RISCV指令集C扩展中,规格(spec)规定的hint指令对于C.SLLI、C.SLLI64、C.SRLI64、C.SRAI64可用于用户自定义的循环体起始指令。针对高级语言程序中的循环体,可以通过编译器对程序的识别和优化,在循环体前插入循环体起始标记。
在一些实施例中,循环体起始标记中携带有目标循环次数。检测子模块121还被配置为,检测循环体起始标记中所携带的目标循环次数,并将目标循环次数发送给循环体缓存模块14。其中,编译器可以按照预设规则生成携带有目标循环次数的循环体起始标记,检测子模块121在检测到循环体起始标记后,按照上述预设规则获取目标循环次数。
表2为C.SLLI和C.SLLI64的指令编码格式。例如,编译器在识别循环体之后,将循环体的目标循环次数写入rs1/rd域段当中。检测子模块121在检测到循环体起始标记后,获取指令中的rs1/rd域段所写入的数值,即,得到了目标循环次数。如果无法有效提取循环次数,则将rs1/rd域段置为全1,即0x1f;这种情况下,取指单元10可以持续向译码单元20发送指令,后续的执行单元接收并执行循环指令,当执行单元不再进行循环和跳转时,向取指单元10发送标记信号,取指单元10响应于该标记信号停止发送指令。
表2
在一些实施例中,循环体结束标记为:位于循环体起始指令之后,且指令偏移量(offset)为负数的条件分支指令。即,当检测子模块121已检测到循环体起始标记后,又检测到从指令缓存单元中获取到的指令为条件分支指令,且条件分支指令的偏移值为负数时,表示循环体结束。换言之,从循环体起始标记的下一条指令开始到指令偏移量为负数的条件分支指令,为一个循环体。
在一些实施例中,循环体缓存模块14具体被配置为,将循环体指令循环发送至译码单元20,其中,每完成一次循环体的发送,均将当前的目标循环次数减1,直至目标循环次数为零时,停止发送指令,从而可以使循环体被译码单元20的译码次数达到目标循环次数。具体地,循环体缓存模块14可以在每发送一次指令偏移量为负数的条件分支指令时,将当前的目标循环次数减1。
图3为本公开的另一些实施例中提供的取指单元10和译码单元20的示意图,如图2所示,取指单元10还包括:分支预测器(Branch Predictor,BP)15,该分支预测器15用于预测检测模块12与指令缓冲队列模块13之间的通路上的分支指令跳转方向以及目标地址。需要说明的是,指令缓存模块11中的指令中,除了循环体中的条件分支指令之外,还有可能存在其他分支指令,在这些分支指令被检测模块12发送至指令缓冲队列模块13的过程中,可以被分支预测器15进行监测,以进行跳转方向和目标地址的预测。
图4为本公开的一些实施例中提供的取指方法的示意图,该取指方法应用于上述实施例中的处理器。如图4所示,取指方法包括:
S1、对接收到的指令进行循环体标记检测。
S2、根据检测结果,将循环体指令和非循环体指令分时发送至译码单元,以供译码单元对接收到的指令进行译码。其中,循环体标记中携带循环体的目标循环次数,所述循环体指令是基于所述目标循环次数循环发送至所述译码单元的。
在一些实施例中,如图2所示,处理器的取指单元10包括指令缓存模块11、检测模块12、循环体缓存模块14和指令缓冲队列模块13。检测模块12从指令缓存模块11中获取指令,并对获取到的指令进行循环体标记检测;根据检测结果确定出循环体的起始位置,从而将循环体指令发送至循环体缓存模块14,将非循环体指令发送至指令缓冲队列模块13。
在一些实施例中,循环体之前插入有循环体起始标记,检测模块12在检测到循环体起始标记后,确定从下一条指令为循环体的第一条指令。并且,在检测模块12检测到循环体结束标记时,确定当前接收到的指令为循环体的结束指令。
在一些实施例中,当检测模块12在已经检测到循环体起始标记,之后又检测到指令偏移量为负数的条件分支指令时,表示当前检测到的指令为循环体的结束指令。
在一些实施例中,循环体缓存模块14根据循环体的目标循环次数,将循环体指令循环发送至译码单元20。
在一些实施例中,循环体缓存模块14每完成一次循环体的发送,均将当前的目标循环次数减1,直至目标循环次数为零时,停止发送指令。当循环体缓存模块14停止发送指令时,指令缓冲队列模块13将其内部的指令发送至译码单元20。
图5为本公开的一些实施例中提供的计算机系统的示意图,该计算机系统可以应用于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、嵌入式处理器、图形设备、视频游戏设备、微控制器、便携式媒体播放器、手持设备以及各种其他电子设备。本公开不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行逻辑的系统都在本公开的保护范围之内。
如图5所示,计算机系统包括一个或多个上述处理器100,处理器100耦接到控制器中枢200。在一个实施例中,控制器中枢200包括图形存储器控制器中枢(GMCH)201和输入/输出中枢(IOH)202(其可以在分开的芯片上)。GMCH 201包括与存储器400和协处理器600相耦接的存储器控制器和图形控制器。IOH 202将输入/输出(I/O)设备500耦接到GMCH 201。
存储器400可以是例如动态随机访问存储器(DRAM)、相变存储器(PCM)或这两者的组合。协处理器600是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢200可以包括集成图形加速器。
计算机系统还包括:编译器300,其被配置为识别循环体的代码长度(即字节数),并在代码长度小于预设长度的循环体之前插入循环体起始标记,将循环体起始标记和循环体发送至处理器中的取指单元10。
也就是说,本公开中的检测模块12发送至循环体缓存模块14的循环体为长度较短的循环体,而对于长度较长的循环体,编译器300不再进行循环体起始标记的插入,这种情况下,检测模块12不会检测到循环体,从而将长循环体的指令发送至指令缓冲队列模块13。
其中,预设长度可以根据实际硬件资源来设置。
以下为一个循环体的程序,其中,循环体之前插入有循环体起始标记(li,t0,0x10),目标循环次数为10次。编译器300在提取到目标循环次数后,在循环体之前插入循环体起始标记,具体地,在ld t1,0(s1)指令之前插入循环体起始标记,该循环体起始标记中携带有目标循环次数。
li,t0,0x10
.loop:
ld t1,0(s1)
add t2,t2,t1
addi s1,s1,0x8
subi t0,t0,0x1
c.bnez t0,loop
检测子模块121在接收到循环体起始标记时,获取其中携带的目标循环次数,将其发送至循环体缓存模块14。以及,循环体起始标记之后的指令依次发送至循环体缓存模块14,直至循环体结束指令c.bnez t0,loop为止。
在本公开实施例中,取指单元10能够根据循环体标记准确检测到循环体,且不会污染到预测器,从而提高处理器的性能。
可以理解的是,以上实施方式仅仅是为了说明本公开的原理而采用的示例性实施方式,然而本公开并不局限于此。对于本领域内的普通技术人员而言,在不脱离本公开的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本公开的保护范围。
Claims (11)
1.一种处理器,其特征在于,包括取指单元和译码单元;其中,
所述取指单元被配置为,对获取到的指令进行循环体标记检测;根据检测结果,将循环体指令和非循环体指令分时发送至所述译码单元;其中,所述循环体标记中携带循环体的目标循环次数,所述取指单元根据所述目标循环次数将所述循环体指令循环发送至所述译码单元;
所述译码单元被配置为,对接收到的指令进行译码。
2.根据权利要求1所述的处理器,其特征在于,所述取指单元包括:指令缓存模块、检测模块、循环体缓存模块和指令缓冲队列模块;其中,
所述指令缓存模块被配置为,接收并缓存指令;
所述检测模块被配置为,从所述指令缓存模块中获取指令,并对获取到的指令进行循环体标记检测;根据检测结果,将属于所述循环体指令发送至所述循环体缓存模块;将所述非循环体指令发送至所述指令缓冲队列模块;
所述循环体缓存模块被配置为,根据所述目标循环次数,将所述循环体指令循环发送至所述译码单元;
所述指令缓冲队列模块被配置为,在所述循环体缓存模块停止发送指令时,将所述指令缓冲队列模块中的指令发送至所述译码单元。
3.根据权利要求2所述的处理器,其特征在于,所述检测模块具体被配置为,从所述指令缓存单元中获取指令,并检测获取到的指令中是否包含循环体起始标记或循环体结束标记;以及,将由所述循环体起始标记之后的下一条指令至所述循环体结束标记所对应的指令,均作为所述循环体指令发送至所述循环体缓存模块;将其余的指令作为所述非循环体指令发送至所述指令缓冲队列模块。
4.根据权利要求3所述的处理器,其特征在于,所述循环体结束标记为:位于所述循环体起始指令之后,且指令偏移量为负数的条件分支指令。
5.根据权利要求4所述的处理器,其特征在于,所述循环体缓存模块具体被配置为,将所述循环体指令循环发送至所述译码单元,其中,每完成一次循环体的发送,均将当前的所述目标循环次数减1,直至所述目标循环次数为零时,停止发送指令。
6.根据权利要求3所述的处理器,其特征在于,所述检测模块还被配置为,检测所述循环体起始标记中所携带的目标循环次数,并将所述目标循环次数发送给所述循环体缓存模块。
7.根据权利要求3所述的处理器,其特征在于,所述循环体起始标记为hint指令。
8.根据权利要求2至7中任一项所述的处理器,其特征在于,所述取指单元还包括:分支预测器,用于预测所述检测模块与所述指令缓冲队列模块之间通路上的分支指令的跳转方向以及目标地址。
9.一种取指方法,其特征在于,包括:
对接收到的指令进行循环体标记检测;
根据检测结果,将循环体指令和非循环体指令分时发送至译码单元,以供所述译码单元对接收到的指令进行译码;
其中,所述循环体标记中携带循环体的目标循环次数,所述循环体指令是基于所述目标循环次数循环发送至所述译码单元的。
10.一种计算机系统,其特征在于,包括权利要求1至8中任一项所述的处理器。
11.根据权利要求10所述的计算机系统,其特征在于,所述计算机系统还包括:
编译器,被配置为识别循环体的代码长度;并将代码长度小于预设长度的循环体发送至所述处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311413569.6A CN117348936A (zh) | 2023-10-27 | 2023-10-27 | 处理器、取指方法和计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311413569.6A CN117348936A (zh) | 2023-10-27 | 2023-10-27 | 处理器、取指方法和计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117348936A true CN117348936A (zh) | 2024-01-05 |
Family
ID=89364740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311413569.6A Pending CN117348936A (zh) | 2023-10-27 | 2023-10-27 | 处理器、取指方法和计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117348936A (zh) |
-
2023
- 2023-10-27 CN CN202311413569.6A patent/CN117348936A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248570B2 (en) | Methods, systems and apparatus for predicting the way of a set associative cache | |
US7861066B2 (en) | Mechanism for predicting and suppressing instruction replay in a processor | |
US9367471B2 (en) | Fetch width predictor | |
KR101643675B1 (ko) | 명령 프로세싱 회로들, 및 관련 프로세서 시스템들, 방법들 및 컴퓨터―판독 가능 매체들에서 반대 컨디션들을 갖는 조건부 기록 명령들의 융합 | |
JP5722396B2 (ja) | 明示的サブルーチンコールの分岐予測動作をエミュレートするための方法および装置 | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
EP3265909A1 (en) | Register renaming in multi-core block-based instruction set architecture | |
CN112230992B (zh) | 一种包含分支预测循环的指令处理装置、处理器及其处理方法 | |
US20220283811A1 (en) | Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance | |
CN114201219B (zh) | 指令调度方法、指令调度装置、处理器及存储介质 | |
CN116302106A (zh) | 用于促进分支预测单元的改善的带宽的设备、方法和系统 | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
US20140250289A1 (en) | Branch Target Buffer With Efficient Return Prediction Capability | |
CN112540792A (zh) | 指令处理方法及装置 | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US7519799B2 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
US20050027921A1 (en) | Information processing apparatus capable of prefetching instructions | |
CN117348936A (zh) | 处理器、取指方法和计算机系统 | |
CN114924792A (zh) | 指令译码单元、指令执行单元及相关装置和方法 | |
CN112540789B (zh) | 一种指令处理装置、处理器及其处理方法 | |
KR20220061232A (ko) | 프로세서에서 실행되는 명령어 스트림에서 분기 해먹 검출을 위한 동적 해먹 분기 트레이닝 | |
WO2007084202A2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
CN111209044A (zh) | 指令压缩方法及装置 | |
US20230205535A1 (en) | Optimization of captured loops in a processor for optimizing loop replay performance | |
JP2006514349A (ja) | プロセッサのオペレーションを妨げることなくプロセッサの状態を判断するための方法及び装置 |
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 |