CN112099851A - 指令执行方法、装置、处理器及电子设备 - Google Patents
指令执行方法、装置、处理器及电子设备 Download PDFInfo
- Publication number
- CN112099851A CN112099851A CN202010931644.8A CN202010931644A CN112099851A CN 112099851 A CN112099851 A CN 112099851A CN 202010931644 A CN202010931644 A CN 202010931644A CN 112099851 A CN112099851 A CN 112099851A
- Authority
- CN
- China
- Prior art keywords
- instruction
- target
- branch
- address
- cache
- 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 68
- 238000011068 loading method Methods 0.000 claims abstract description 16
- 230000009191 jumping Effects 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 239000012634 fragment Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 101150071434 BAR1 gene Proteins 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 201000009028 early myoclonic encephalopathy Diseases 0.000 description 1
- 230000001360 synchronised 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及计算机技术领域,具体而言,涉及一种指令执行方法、装置、处理器及电子设备。本申请提供的指令执行方法,应用于处理器核,指令执行方法,包括:在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,一级指令高速缓冲存储器用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令高速缓冲存储器的下一级存储器;执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令。通过本申请实施例提供的指令执行方法、装置、处理器及电子设备,能够有效提高第一目标指令的执行效率。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种指令执行方法、装置、处理器及电子设备。
背景技术
目前,处理器核在执行计算机指令时,只有在执行到转移指令时,才将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,若一级指令高速缓冲存储器中未存储有目标转移地址对应的目标指令,则称为发生了高速缓冲存储器失效,那么,就需要等待一级指令高速缓冲存储器从其下一级存储器中成功加载目标指令之后,才能够继续执行目标指令,而等待一级指令高速缓冲存储器从其下一级存储器中成功加载目标指令的过程可能需要多个时钟周期,因此,会严重影响目标指令的执行效率。
发明内容
本申请的目的在于,提供一种指令执行方法、装置、处理器及电子设备,以解决上述问题。
第一方面,本申请提供的指令执行方法,应用于处理器核,指令执行方法,包括:
在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,一级指令高速缓冲存储器用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令高速缓冲存储器的下一级存储器;
执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令。
结合第一方面,本申请实施例还提供了第一方面的第一种可选的实施方式,在执行转移指令之前,将转移指令指向的转移地址发送给一级指令高速缓冲存储器,包括:
在执行第二目标指令的过程中,解析出第二目标指令中附加的转移地址形成操作,第二目标指令为指令集合中执行顺序优先于转移指令的计算机指令;
执行转移地址形成操作,以将转移地址形成操作对应的目标转移地址发送给一级指令高速缓冲存储器。
结合第一方面的第一种可选的实施方式,本申请实施例还提供了第一方面的第二种可选的实施方式,在执行第二目标指令的过程中,解析出第二目标指令中附加的转移地址形成操作,包括:
通过第一取指单元获取第二目标指令的第一指令地址,以根据第一指令地址向一级指令高速缓冲存储器请求加载第二目标指令;
在第一取指单元成功加载第二目标指令之后,通过解码单元对第二目标指令进行解析,获取地址形成操作。
结合第一方面的第一种可选的实施方式,本申请实施例还提供了第一方面的第三种可选的实施方式,执行转移地址形成操作,以将转移地址形成操作对应的目标转移地址发送给一级指令高速缓冲存储器,包括:
通过执行单元中包括的算术逻辑单元执行地址形成操作,以将目标转移地址发送给第二取指单元;
通过第二取指单元将目标转移地址发送给一级指令高速缓冲存储器。
结合第一方面的第一种可选的实施方式,本申请实施例还提供了第一方面的第四种可选的实施方式,第二目标指令与转移指令之间至少间隔一条计算机指令,作为中间指令,且中间指令与第二目标指令和转移指令无逻辑相关性。
结合第一方面,本申请实施例还提供了第一方面的第五种可选的实施方式,执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令,包括:
通过第一取指单元获取转移指令的第二指令地址,以根据第二指令地址向一级指令高速缓冲存储器请求加载转移指令;
在第一取指单元成功加载转移指令之后,通过解码单元对转移指令进行解析,获取目标转移地址;
通过执行单元,跳转至第一目标指令,以通过第一取指单元根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令。
结合第一方面的第一种可选的实施方式,本申请实施例还提供了第一方面的第六种可选的实施方式,执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令之后,指令加载方法,还包括:
在成功加载第一目标指令之后,执行第一目标指令。
第二方面,本申请实施例提供的指令执行装置,应用于处理器核,指令执行装置包括:
地址发送模块,用于在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,一级指令高速缓冲存储器用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令高速缓冲存储器的下一级存储器;
转移指令加载模块,用于执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令。
第三方面,本申请实施例提供的处理器,包括处理器核和一级指令高速缓冲存储器,处理器核和一级指令高速缓冲存储器通信连接,处理器核用于执行上述第一方面,或第一方面的任意一种可选的实施方式所通过的指令执行方法。
第四方面,本申请实施例提供的电子设备,包括上述第三方面所提供的处理器。
第五方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被执行时,实现上述第一方面,或第一方面的任意一种可选的实施方式所通过的指令执行方法。
本申请实施例提供的指令执行方法、装置、处理器、电子设备及计算机可读存储介质能够在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,其中,一级指令高速缓冲存储器用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令高速缓冲存储器的下一级存储器,后续在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令。本申请实施例中,由于在执行转移指令之前,已经将转移指令指向的目标转移地址发送给一级指令高速缓冲存储器了,这样,即使发生高速缓冲存储器失效,一级指令高速缓冲存储器也能够预先向目标存储器请求加载第一目标指令,以实现第一目标指令的预取,如此,后续在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令高速缓冲存储器请求加载第一目标指令时,若一级指令高速缓冲存储器已经从目标存储器中成功加载了第一目标指令,处理器核便能够直接从一级指令高速缓冲存储器中成功加载到第一目标指令,即使一级指令高速缓冲存储器还未从目标存储器中成功加载到第一目标指令,由于预取第一目标指令的请求已经在执行第二目标指令时发出了,因此,也能够相对减少处理器核从一级指令高速缓冲存储器中成功加载到第一目标指令所耗费的时钟周期,从而有效提高第一目标指令的执行效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种处理器的示意性结构框图。
图2为本申请实施例提供的一种处理器核的示意性结构框图。
图3为本申请实施例提供的处理器核的另一种示意性结构框图。
图4为本申请实施例提供的一种计算机指令加载过程示意图。
图5为本申请实施例提供的一种电子设备的示意性结构框图。
图6为本申请实施例提供的一种指令执行方法的步骤流程图。
图7为本申请实施例提供的一种指令执行装置的示意性结构框图。
附图标记:100-处理器;110-处理器核;111-第一取指单元;112-解码单元;113-执行单元;114-访存单元;115-写回单元;116-第二取指单元;120-一级指令高速缓冲存储器;200-内存;300-外存储器;400-指令执行装置;410-地址发送模块;420-转移指令加载模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。此外,需要说明的是,本申请实施例的相关描述中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
第一实施例:
请参阅图1,为本申请实施例提供的一种处理器100,具体可以是,但不限于中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、加速处理器(Accelerated Processing Unit)、网络处理器(Network Processor,NP)、多媒体应用处理器(Multimedia Application Processor,MAP)。本申请实施例中,处理器100包括处理器核110和一级指令高速缓冲存储器(Cache)120,处理器核110和一级指令Cache120通信连接。
请结合图2,本申请实施例中,处理器核110包括第一取指单元111、解码单元112、执行单元113、访存单元114和写回单元115,这五个硬件电路单元分别对应处理器100五级流水线数据通路中的五个部分。为方便描述,本申请实施例中,将处理器100五级流水线数据通路中的五个部分分别按照其对应的指令执行阶段来命名:
1.取指令(Instruction Fetch,IF);
2.指令解码和读寄存器(Instruction Decode,ID);
3.执行或计算有效地址(Execution,EX);
4.访问存储器,进行数据存取(Memory Access,MEM);
5.将执行结果写回寄存器(Write Back,WB)。
本申请实施例中,第一取指单元111与IF阶段对应,解码单元112与ID阶段对应,执行单元113与EX阶段对应,访存单元114与EME阶段对应,写回单元115与WB阶段对应。针对指令集合中的每条计算机指令,在处理器核110中的执行过程包括:
1.第一取指单元111根据第一目标地址,从一级指令Cache120中成功加载第一目标地址对应的第一计算机指令之后,将第一计算机指令存储于第一取值单元和解码单元112之间设置的第一流水线寄存器,需要说明的是,在此过程中,若一级指令Cache120在未存储有第一取指单元111需要加载的第一计算机指令时,需要向目标存储器请求加载第一计算机指令,而目标存储器为一级指令Cache120的下一级存储器;
2.解码单元112获取从第一流水线寄存器中释放的第一计算机指令之后,对第一计算机指令进行解析,获得第一计算机指令指示的目标运算类型,以及对应的操作数寄存器索引和/或立即数,并将目标运算类型,以及对应的操作数寄存器索引和/或立即数存储于解码单元112和执行单元113之间设置的第二流水线寄存器;
3.执行单元113获取从第二流水线寄存器中释放的目标运算类型,以及对应的操作数寄存器索引和/或立即数之后,根据操作数索引从通用寄存器中获取目标操作数,并结合目标计算类型进行运算(若解码单元112对第一计算机指令进行解析之后,仅获得第一计算机指令指示的目标运算类型和立即数,则结合目标运算类型和立即数进行运算),最后,将运算结果作为第二目标地址存储于执行单元113和访存单元114之间设置的第三流水线寄存器,需要说明的是,执行单元113中涉及的运算过程主要通过算术逻辑运算单元(Arithmetic Logic Unit,ALU)实现;
4.访存单元114根据第三流水线寄存器中存储的第二目标地址,读取数据存储器,并将读取的目标数据存储于访存单元114和写回单元115之间设置的第四流水线寄存器。
5.写回单元115获取从第四流水线寄存器中释放的目标数据写入解码单元112中包括的寄存器堆。
此外,请结合图3,本申请实施例中,处理器100还可以包括第二取指单元116,执行单元113中包括的ALU还可以与第二取指单元116通信连接,用于向第二取指单元116发送目标取指地址,而第二取指单元116则用于将目标取指地址转发至一级指令Cache120,以使一级指令Cache120在未存储有目标取指地址对应的目标计算机指令时,向目标存储器请求加载第一目标指令。
对于目标存储器,本申请实施例中,若处理器100为多Cache处理器100,也即,处理器100中除包括一级指令Cache120之外,还包括二级Cache,甚至更多Cache,则目标存储器为二级Cache,若处理器100中仅包括一级指令Cache120,则目标存储器为内存,例如,随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,DDR SDRAM)。
请结合图4,以处理器100为多Cache处理器100,具体包括一级指令Cache120和二级Cache为例,第一取指单元111根据第三目标地址,向一级指令Cache120中请求加载第三目标地址对应的第二计算机指令的过程中,若一级指令Cache120中存储有第二计算机指令,则一级指令Cache120直接将第二计算机指令返回给第一取指单元111,若一级指令Cache120中未存储有第二计算机指令,则一级指令Cache120继续向二级Cache请求加载第二计算机指令,若二级Cache中存储有第二计算机指令,则二级Cache直接将第二计算机指令返回给一级指令Cache120,以使一级指令Cache120将第二计算机指令返回给第一取指单元111,若二级Cache中未存储有第二计算机指令,则二级Cache继续向内存请求加载第二计算机指令,若内存中存储有第二计算机指令,则内存直接将第二计算机指令返回给二级Cache,以使二级Cache将第二计算机指令返回给一级指令Cache120,最终,通过一级指令Cache120将第二计算机指令返回给第一取指单元111,若内存中未存储有第二计算机指令,则内存继续向外存储器请求加载第二计算机指令,并在接收到外存储器返回的第二计算机指令之后,依次通过二级Cache和一级指令Cache120将第二计算机指令返回给第一取指单元111。本申请实施例中,外存储器可以是硬盘、光盘等存储器件。
通过以上描述可知,在第一取指单元111根据第三目标地址,向一级指令Cache120中请求加载第二计算机指令的过程中,若一级指令Cache120中预先存储有第二计算机指令,则一级指令Cache120可以直接将第二计算机指令返回给第一取指单元111,从而有效保证第一取指单元111从一级指令Cache120中成功加载到第二计算机指令所耗费的时钟周期是较短的,从而有效提高第二计算机指令的执行效率。
此外,需要说明的是,本申请实施例中,图1、图2和图3所示的结构仅为示意,本申请实施例提供的处理器100还可以具有比图1、图2和图3更少或更多的组件,或是具有与图1、图2和图3所示不同的配置,而本申请实施例中,图1、图2和图3所示的各组件可以通过软件、硬件或其组合实现。
第二实施例:
请参阅图5,本申请实施例还提供了一种电子设备10,具体可以是终端设备,例如,电脑、个人数字助理(Personal Digital Assistant,PAD)、移动上网设备(MobileInternet Device,MID)等,还可以是服务器,本申请实施例对此不作具体限制。此外,在电结构组成上,处理器100包括内存200、外存储器300和第一实施例所提供的处理器100。本申请实施例中,若处理器100为多Cache处理器,则处理器100中包括的最后一级指令Cache与内存200通信连接,而内存200则与外存储器300通信连接,若处理器100仅包括一级指令Cache,则一级指令Cache与内存200通信连接,而内存200则与外存储器300通信连接。
需要说明的是,本申请实施例中,图5所示的结构仅为示意,本申请实施例提供的电子设备10还可以具有比图5更少或更多的组件,或是具有与图5所示不同的配置,而本申请实施例中,图5所示的各组件可以通过软件、硬件或其组合实现。
第三实施例:
请参阅图6,为本申请实施例提供的指令执行方法的流程示意图,应用于第一实施例所提供的处理器中包括的处理器核。需要说明的是,本申请实施例提供的指令执行方法不以图6及以下所示的顺序为限制,以下结合图6对指令执行方法的具体流程及步骤进行描述。
步骤S100,在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令Cache,一级指令Cache用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令Cache的下一级存储器。
对于转移指令,本申请实施例中,其可以理解为能够修改地址,或同时修改代码段和地址的计算机指令。具体到本申请实施例中,转移指令用于指向一个目标转移地址,而目标转移地址对应的存储空间用于存储第一目标指令,第一目标指令正是转移指令指示处理器核需要跳转去执行的计算机指令。此外,同样需要说明的是,本申请实施例中,若处理器为多Cache处理器,也即,处理器中除包括一级指令Cache之外,还包括二级Cache,甚至更多Cache,则目标存储器为二级Cache,若处理器中仅包括一级指令Cache,则目标存储器为内存。
要实现步骤S100,本申请实施例中,处理器核开发者在程序设计过程中,可以选取指令集合中执行顺序优先于转移指令的任意一条计算机指令,作为第二目标指令,并在第二目标指令中加入暗示性质的转移地址形成操作。如此,处理器核在执行第二目标指令时,便可以提前解析出第二目标指令中附加的转移地址形成操作,并执行转移地址形成操作,以将转移地址形成操作对应的目标转移地址发送给一级指令Cache。基于此,从处理器核的角度出发,对于步骤S100,本申请实施例中,其可以包括步骤S110和步骤S120。
步骤S110,在执行第二目标指令的过程中,解析出第二目标指令中附加的转移地址形成操作,第二目标指令为指令集合中执行顺序优先于转移指令的计算机指令。
对于步骤S110,本申请实施例中,其在实际实施时,可以通过第一取指单元获取第二目标指令的第一指令地址,以根据第一指令地址向一级指令Cache请求加载第二目标指令,并在第一取指单元成功加载第二目标指令之后,通过解码单元对第二目标指令进行解析,获取地址形成操作。可以理解的是,本申请实施例中,地址形成操作包括目标转移地址的形成逻辑和将目标转移地址发送给一级指令Cache的控制信号。
此外,需要说明的是,本申请实施例中,第二目标指令可以是指令集合中执行顺序优先于转移指令,且与转移指令相邻的计算机指令,但为提高一级指令Cache中第一目标指令的命中率,也可以将第一目标指令的预取时间提前,也即,可以使第二目标指令与转移指令之间至少间隔一条计算机指令,作为中间指令,且中间指令与第二目标指令和转移指令无逻辑相关性。
步骤S120,执行转移地址形成操作,以将转移地址形成操作对应的目标转移地址发送给一级指令Cache。
对于步骤S120,本申请实施例中,其在实际实施时,可以通过执行单元中包括的ALU执行地址形成操作,以将目标转移地址发送给第二取指单元,并通过第二取指单元将目标转移地址发送给一级指令Cache。
通过上述设置,在执行转移指令之前,已经将转移指令指向的目标转移地址发送给一级指令Cache了,这样,即使发生Cache失效(Cache Miss),一级指令Cache也能够预先向目标存储器请求加载第一目标指令,以实现第一目标指令的预取。
步骤S200,执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令。
在步骤S100之后,处理器核将按照继续执行顺序继续执行指令集合中,位于第二目标指令之后的其他计算机指令,直到执行转移指令。在执行转移指令的过程中,步骤S200可以包括步骤S210、步骤S220和步骤S230。
步骤S210,通过第一取指单元获取转移指令的第二指令地址,以根据第二指令地址向一级指令Cache请求加载转移指令。
步骤S220,在第一取指单元成功加载转移指令之后,通过解码单元对转移指令进行解析,获取目标转移地址。
步骤S230,通过执行单元,跳转至第一目标指令,以通过第一取指单元根据目标转移地址向一级指令Cache请求加载第一目标指令。
本申请实施例中,在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令时,若一级指令Cache已经从目标存储器中成功加载了第一目标指令,则一级指令Cache便能够直接将第二计算机指令返回给第一取指单元,也即,处理器核能够直接从一级指令Cache中成功加载到第一目标指令,即使一级指令Cache还未从目标存储器中成功加载到第一目标指令,由于预取第一目标指令的请求已经在执行第二目标指令时发出了,因此,也能够相对减少处理器核从一级指令Cache中成功加载到第一目标指令所耗费的时钟周期,从而有效提高第一目标指令的执行效率。
本实施例提供的指令执行方法,还可以包括步骤S300。
步骤S300,在成功加载第一目标指令之后,执行第一目标指令。
本申请实施例中,第一目标指令的执行过程可以基于第一取指单元、解码单元、执行单元、访存单元和写回单元实现,因此,本申请实施例对此不作赘述。以下,将通过指令集合中包括的几条执行顺序连续的计算机指令,对本申请实施例提供的指令执行方法进行进一步描述。
指令集合中,几条执行顺序连续的计算机指令对应的高级语言(例如C语言)片段可以描述为:
extern void bar1();//bar1是全局函数,函数起始地址在0x1234 5678
void(*bar)();//bar是函数指针
{
…
bar=bar1;
…
bar();
…
}
以MIPS(Million Instructions Per Second的简写)架构的处理器,也即,MIPS处理器的指令系统(Instruction Set Architecture,ISA)为例,现有技术中,对其进行编译产生的汇编代码片段,以及相应的执行过程如表1所示:
表1
表1中,n≥1,且为整数,x≥7,且为整数,cycle为时钟周期,n cycle表示第n个时钟周期,n+1cycle表示第n+1个时钟周期,以此类推。
i:lui$r25,0x1234//$r25=0x1234,0000
i+1:addiu$r25,$r25,0x5678//$r25=0X1234,5678,$r25取得目标转移地址
i+2:jr$r25//处理器核转移到$r25所指向的目标转移地址继续执行
其中,第i条指令表示将16进制的立即数中的低16bit左移16位到高16bit,同时,低16bit补0,并放入寄存器$r2中,第i+1条指令表示将16进行数0x5678与寄存器$r25中的数值进行逻辑“加”运算,得到十六进制数0x1234,5678,并将十六进制数0x1234,5678放入寄存器$r25,第i+2条指令为转移指令,表示以寄存器$r25中的数值为目标转移地址,读取目标转移地址中的第一目标指令,并执行。
显然,现有技术中,在执行表1所示汇编代码片段的过程中,只有在真正执行到转移指令(第i+2条指令)时,才将目标转移地址发送给一级指令Cache,具体地,在第n+4个时钟周期,才将目标转移地址发送给一级指令Cache,一级指令Cache在未存储有目标转移地址对应的第一目标指令时,再向目标存储器请求加载第一目标指令,而一级指令Cache从目标存储器中成功加载到第一目标指令所耗费的时钟周期一般是较长的。假设,一级指令Cache在第n+x+1个时钟周期才从目标存储器中成功加载到第一目标指令,那么,处理器核在第n+x+2个时钟周期才能够从一级指令Cache中成功加载到第一目标指令,所以,会严重影响第一目标指令的执行效率。
可以理解的是,现有技术中,在执行表1所示汇编代码片段的过程中,在第n+3个时钟周期处理器核将开始执行第i+3条指令(指令代码为代码1),在第n+4个时钟周期处理器核将开始执行第i+4条指令(指令代码为代码2),在第n+5个时钟周期,处理器核未从一级指令Cache中成功加载到第一目标指令,因此,流水线便会停顿,也即,在流水线中插入气泡,直至处理器核在第n+x+2个时钟周期从一级指令Cache中成功加载到第一目标指令。此外,需要说明的是,由于第i+2条指令为转移指令,因此,第i+3条指令和第i+4条指令的执行结果将被作废,或者可以理解为被删除。
同样,以MIPS架构的处理器,也即,MIPS处理器的ISA为例,通过本申请实施例所提供的指令执行方法产生的与上述高级语言(例如C语言)片段对应的汇编代码片段,以及相应的执行过程如表2所示:
表2
同样,表2中,n≥1,且为整数,x≥7,且为整数,cycle为时钟周期,n cycle表示第n个时钟周期,n+1cycle表示第n+1个时钟周期,以此类推。
i:lui$r25,0x1234//$r25=0x1234,0000
i+1:addiu.pi$r25,$r25,0x5678//$r25=0x1234,5678,$r25取得目标转移地址,同时,处理器核在n+3个时钟周期,将0x1234,5678作为目标转移地址发往第二取指单元,以通过第二取指单元将目标转移地址发送给所述一级指令Cache
i+2:jr$25//处理器核转移到$r25所指向的目标转移地址继续执行
其中,第i条指令表示将16进制的立即数中的低16bit左移16位到高16bit,同时,低16bit补0,并放入寄存器$r2中,第i+1条指令表示将16进行数0x5678与寄存器$r25中的数值进行逻辑“加”运算,得到十六进制数0x1234,5678,并将十六进制数0x1234,5678放入寄存器$r25,同时,将十六进制数0x1234,5678作为目标转移地址发送给第二取指单元,以通过第二取指单元将目标转移地址发送给所述一级指令Cache,第i+2条指令为转移指令,表示以寄存器$r25中的数值为目标转移地址,读取目标转移地址中的第一目标指令,并执行。
显然,通过本申请实施例提供的指令执行方法,在执行表2所示汇编代码片段的过程中,执行转移指令(第i+2条指令)之前,具体地,在执行第i+1条指令时,在第n+3个时钟周期已经将转移指令指向的目标转移地址发送给一级指令Cache了,这样,即使发生CacheMiss,一级指令Cache也能够预先向目标存储器请求加载第一目标指令,以实现第一目标指令的预取,此后,在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令时,若一级指令Cache已经从目标存储器中成功加载了第一目标指令,处理器核便能够直接从一级指令Cache中成功加载到第一目标指令,即使一级指令Cache还未从目标存储器中成功加载到第一目标指令,由于预取第一目标指令的请求已经在执行第二目标指令(第i+1条指令)时,在第n+3个时钟周期发出了,因此,也能够相对减少处理器核从一级指令Cache中成功加载到第一目标指令所耗费的时钟周期,具体可以减少一个时钟周期,从而有效提高第一目标指令的执行效率。
同样,可以理解的是,本申请实施例中,在执行表2所示汇编代码片段的过程中,在第n+3个时钟周期将开始执行第i+3条指令(指令代码为代码1),在第n+4个时钟周期将开始执行第i+4条指令(指令代码为代码2),在第n+5个时钟周期,处理器核未从一级指令Cache中成功加载到第一目标指令,因此,流水线便会停顿,在流水线中插入气泡,直至处理器核在第n+x+1个时钟周期从一级指令Cache中成功加载到第一目标指令。此外,同样需要说明的是,由于第i+2条指令为转移指令,因此,第i+3条指令和第i+4条指令的执行结果将被作废,或者可以理解为被删除。
此外,需要说明的是,本申请实施例中,以表2所示的汇编代码片段为例,第二目标指令(第i+1条指令)为指令集合中执行顺序优先于转移指令(第i+2条指令),且与转移指令(第i+2条指令)相邻的计算机指令,但为提高一级指令Cache中第一目标指令的命中率,也可以将第一目标指令的预取时间提前,也即,选取位于第i+1条指令之前的其他计算机指令,作为第二目标指令,而该第二目标指令与转移指令之间的所有计算机指令,均作为中间指令。如此,一级指令Cache向目标存储器请求加载第一目标指令,以实现第一目标指令预取的时间点将会提前到来,那么,处理器核从一级指令Cache中成功加载到第一目标指令的时钟周期也会进一步提前,从而进一步地提高第一目标指令的执行效率。
第四实施例:
基于与第三实施例所提供的指令执行方法同样的发明构思,本申请实施例提供了一种指令执行装置400,应用于第一实施例所提供的处理器中包括的处理器核,请参阅图7,本申请实施例提供的指令执行装置400包括地址发送模块410和转移指令加载模块420。
地址发送模块410,用于在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令Cache,一级指令Cache用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令Cache的下一级存储器。
关于地址发送模块410的描述具体可参考上述指令执行方法实施例中,关于步骤S100的详细描述,也即,步骤S100可以由地址发送模块410执行。
转移指令加载模块420,用于执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令。
关于转移指令加载模块420的描述具体可参考上述指令执行方法实施例中,关于步骤S200的详细描述,也即,步骤S200可以由转移指令加载模块420执行。
本申请实施例中,地址发送模块410可以包括形成操作获取子模块和地址发送子模块。
形成操作获取子模块,用于在执行第二目标指令的过程中,解析出第二目标指令中附加的转移地址形成操作,第二目标指令为指令集合中执行顺序优先于转移指令的计算机指令。
形成操作获取子模块,具体用于形成操作获取子模块具体用于通过第一取指单元获取第二目标指令的第一指令地址,以根据第一指令地址向一级指令Cache请求加载第二目标指令;
在第一取指单元成功加载第二目标指令之后,通过解码单元对第二目标指令进行解析,获取地址形成操作。
此外,本申请实施例中,第二目标指令与转移指令之间可以至少间隔一条计算机指令,作为中间指令,且中间指令与第二目标指令和转移指令无逻辑相关性。
关于形成操作获取子模块的描述具体可参考上述指令执行方法实施例中,关于步骤S110的详细描述,也即,步骤S110可以由形成操作获取子模块执行。
地址发送子模块,用于执行转移地址形成操作,以将转移地址形成操作对应的目标转移地址发送给一级指令Cache。
地址发送子模块,具体用于通过执行单元中包括的算术逻辑单元执行地址形成操作,以将目标转移地址发送给第二取指单元;
通过第二取指单元将目标转移地址发送给一级指令Cache。
关于地址发送子模块的描述具体可参考上述指令执行方法实施例中,关于步骤S120的详细描述,也即,步骤S120可以由地址发送子模块执行。
本申请实施例中,地址发送模块410可以包括指令获取子模块、指令解析子模块和指令执行子模块。
指令获取子模块,用于通过第一取指单元获取转移指令的第二指令地址,以根据第二指令地址向一级指令Cache请求加载转移指令。
关于指令获取子模块的描述具体可参考上述指令执行方法实施例中,关于步骤S210的详细描述,也即,步骤S210可以由指令获取子模块执行。
指令解析子模块,用于在第一取指单元成功加载转移指令之后,通过解码单元对转移指令进行解析,获取目标转移地址。
关于指令解析子模块的描述具体可参考上述指令执行方法实施例中,关于步骤S220的详细描述,也即,步骤S220可以由指令解析子模块执行。
指令执行子模块,用于通过执行单元,跳转至第一目标指令,以通过第一取指单元根据目标转移地址向一级指令Cache请求加载第一目标指令。
关于指令执行子模块的描述具体可参考上述指令执行方法实施例中,关于步骤S230的详细描述,也即,步骤S230可以由指令执行子模块执行。
本申请实施例提供的指令执行方法,还可以包括转移目标指令执行模块。
转移目标指令执行模块,用于在成功加载第一目标指令之后,执行第一目标指令。
关于转移目标指令执行模块的描述具体可参考上述指令执行方法实施例中,关于步骤S300的详细描述,也即,步骤S300可以由转移目标指令执行模块执行。
第五实施例:
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被执行时,实现第三实施例所提供的指令执行方法,具体可参见第三实施例,本申请实施例对此不作赘述。
综上所述,本申请实施例提供的指令执行方法、装置、处理器、电子设备及计算机可读存储介质能够在执行转移指令之前,将转移指令指向的目标转移地址发送给一级指令Cache,其中,一级指令Cache用于在未存储有目标转移地址对应的第一目标指令时,向目标存储器请求加载第一目标指令,目标存储器为一级指令Cache的下一级存储器,后续在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令。本申请实施例中,由于在执行转移指令之前,已经将转移指令指向的目标转移地址发送给一级指令Cache了,这样,即使发生Cache Miss,一级指令Cache也能够预先向目标存储器请求加载第一目标指令,以实现第一目标指令的预取,如此,后续在执行转移指令,跳转至第一目标指令,以根据目标转移地址向一级指令Cache请求加载第一目标指令时,若一级指令Cache已经从目标存储器中成功加载了第一目标指令,处理器核便能够直接从一级指令Cache中成功加载到第一目标指令,即使一级指令Cache还未从目标存储器中成功加载到第一目标指令,由于预取第一目标指令的请求已经在执行第二目标指令时发出了,因此,也能够相对减少处理器核从一级指令Cache中成功加载到第一目标指令所耗费的时钟周期,从而有效提高第一目标指令的执行效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,也可以通过其它的方式实现,也即,以上所描述的方法实施例、装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这将依据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。此外,在本申请每个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是每个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
此外,所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请每个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
还需要说明的是,在本申请的描述中,如“第一”、“第二”、“第三”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
Claims (11)
1.一种指令执行方法,其特征在于,应用于处理器核,所述指令执行方法,包括:
在执行转移指令之前,将所述转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,所述一级指令高速缓冲存储器用于在未存储有所述目标转移地址对应的第一目标指令时,向目标存储器请求加载所述第一目标指令,所述目标存储器为所述一级指令高速缓冲存储器的下一级存储器;
执行所述转移指令,跳转至所述第一目标指令,以根据所述目标转移地址向所述一级指令高速缓冲存储器请求加载所述第一目标指令。
2.根据权利要求1所述的指令执行方法,其特征在于,所述在执行转移指令之前,将所述转移指令指向的转移地址发送给一级指令高速缓冲存储器,包括:
在执行第二目标指令的过程中,解析出所述第二目标指令中附加的转移地址形成操作,所述第二目标指令为指令集合中执行顺序优先于所述转移指令的计算机指令;
执行所述转移地址形成操作,以将所述转移地址形成操作对应的目标转移地址发送给所述一级指令高速缓冲存储器。
3.根据权利要求2所述的指令执行方法,其特征在于,所述在执行第二目标指令的过程中,解析出所述第二目标指令中附加的转移地址形成操作,包括:
通过第一取指单元获取所述第二目标指令的第一指令地址,以根据所述第一指令地址向所述一级指令高速缓冲存储器请求加载所述第二目标指令;
在所述第一取指单元成功加载所述第二目标指令之后,通过解码单元对所述第二目标指令进行解析,获取所述地址形成操作。
4.根据权利要求2所述的指令执行方法,其特征在于,所述执行所述转移地址形成操作,以将所述转移地址形成操作对应的目标转移地址发送给所述一级指令高速缓冲存储器,包括:
通过执行单元中包括的算术逻辑单元执行所述地址形成操作,以将所述目标转移地址发送给第二取指单元;
通过所述第二取指单元将所述目标转移地址发送给所述一级指令高速缓冲存储器。
5.根据权利要求2所述的指令执行方法,其特征在于,所述第二目标指令与所述转移指令之间至少间隔一条计算机指令,作为中间指令,且所述中间指令与所述第二目标指令和所述转移指令无逻辑相关性。
6.根据权利要求1所述的指令执行方法,其特征在于,所述执行所述转移指令,跳转至所述第一目标指令,以根据所述目标转移地址向所述一级指令高速缓冲存储器请求加载所述第一目标指令,包括:
通过第一取指单元获取所述转移指令的第二指令地址,以根据所述第二指令地址向所述一级指令高速缓冲存储器请求加载所述转移指令;
在所述第一取指单元成功加载所述转移指令之后,通过解码单元对所述转移指令进行解析,获取所述目标转移地址;
通过执行单元,跳转至所述第一目标指令,以通过所述第一取指单元根据所述目标转移地址向所述一级指令高速缓冲存储器请求加载所述第一目标指令。
7.根据权利要求1所述的指令执行方法,其特征在于,所述执行所述转移指令,跳转至所述第一目标指令,以根据所述目标转移地址向所述一级指令高速缓冲存储器请求加载所述第一目标指令之后,所述指令加载方法,还包括:
在成功加载所述第一目标指令之后,执行所述第一目标指令。
8.一种指令执行装置,其特征在于,应用于处理器核,所述指令执行装置包括:
地址发送模块,用于在执行转移指令之前,将所述转移指令指向的目标转移地址发送给一级指令高速缓冲存储器,所述一级指令高速缓冲存储器用于在未存储有所述目标转移地址对应的第一目标指令时,向目标存储器请求加载所述第一目标指令,所述目标存储器为所述一级指令高速缓冲存储器的下一级存储器;
转移指令加载模块,用于执行所述转移指令,以根据所述目标转移地址向所述一级指令高速缓冲存储器请求加载所述第一目标指令。
9.一种处理器,其特征在于,包括处理器核和所述一级指令高速缓冲存储器,所述处理器核和所述一级指令高速缓冲存储器通信连接,所述处理器核用于执行权利要求1~7中任意一项所述的指令执行方法。
10.一种电子设备,其特征在于,所述电子设备包括权利要求9所述的处理器。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被执行时,实现权利要求1~7中任意一项所述的指令执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010931644.8A CN112099851A (zh) | 2020-09-07 | 2020-09-07 | 指令执行方法、装置、处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010931644.8A CN112099851A (zh) | 2020-09-07 | 2020-09-07 | 指令执行方法、装置、处理器及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112099851A true CN112099851A (zh) | 2020-12-18 |
Family
ID=73752229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010931644.8A Pending CN112099851A (zh) | 2020-09-07 | 2020-09-07 | 指令执行方法、装置、处理器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099851A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579168A (zh) * | 2020-12-25 | 2021-03-30 | 海光信息技术股份有限公司 | 指令执行单元、处理器以及信号处理方法 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108773A (en) * | 1998-03-31 | 2000-08-22 | Ip-First, Llc | Apparatus and method for branch target address calculation during instruction decode |
US20040064649A1 (en) * | 2002-09-30 | 2004-04-01 | Volpe Thomas A. | Prefetch buffer method and apparatus |
CN102087634A (zh) * | 2011-01-27 | 2011-06-08 | 凌阳科技股份有限公司 | 用于提高缓存命中率的装置及方法 |
US20170083338A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Prefetching associated with predicated load instructions |
US20170286118A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion |
JP2017191564A (ja) * | 2016-04-15 | 2017-10-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
-
2020
- 2020-09-07 CN CN202010931644.8A patent/CN112099851A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108773A (en) * | 1998-03-31 | 2000-08-22 | Ip-First, Llc | Apparatus and method for branch target address calculation during instruction decode |
US20040064649A1 (en) * | 2002-09-30 | 2004-04-01 | Volpe Thomas A. | Prefetch buffer method and apparatus |
CN102087634A (zh) * | 2011-01-27 | 2011-06-08 | 凌阳科技股份有限公司 | 用于提高缓存命中率的装置及方法 |
US20170083338A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Prefetching associated with predicated load instructions |
US20170286118A1 (en) * | 2016-04-01 | 2017-10-05 | Intel Corporation | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion |
JP2017191564A (ja) * | 2016-04-15 | 2017-10-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
Non-Patent Citations (1)
Title |
---|
徐佳鸣;: "Cache预取技术的研究", 大众科技, no. 11, 20 November 2011 (2011-11-20), pages 80 - 81 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112579168A (zh) * | 2020-12-25 | 2021-03-30 | 海光信息技术股份有限公司 | 指令执行单元、处理器以及信号处理方法 |
CN112579168B (zh) * | 2020-12-25 | 2022-12-09 | 成都海光微电子技术有限公司 | 指令执行单元、处理器以及信号处理方法 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
CN116909943B (zh) * | 2023-09-08 | 2023-12-19 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7284199B2 (ja) | アルゴリズム整合、機能無効化、または性能制限による後方互換性 | |
US5848269A (en) | Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data | |
US5941980A (en) | Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system | |
US8943300B2 (en) | Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information | |
US5701430A (en) | Cross-cache-line compounding algorithm for scism processors | |
KR20010075258A (ko) | 간접 분기 목적지 산출 방법 | |
CN112214241B (zh) | 一种分布式指令执行单元的方法及系统 | |
CN112099851A (zh) | 指令执行方法、装置、处理器及电子设备 | |
JP5335440B2 (ja) | オペランドの早期の条件付き選択 | |
US8250344B2 (en) | Methods and apparatus for dynamic prediction by software | |
WO2000038050A1 (en) | Instruction decomposition to branch and sequential sections | |
US8151096B2 (en) | Method to improve branch prediction latency | |
KR20080014062A (ko) | 마이크로프로세서에서의 효율적인 서브프로그램 복귀 | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
JP2009524167A5 (zh) | ||
CN112596792B (zh) | 分支预测方法、装置、介质及设备 | |
US20030154469A1 (en) | Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US9395985B2 (en) | Efficient central processing unit (CPU) return address and instruction cache | |
JPH11242599A (ja) | コンピュータプログラム製品 | |
JP2886838B2 (ja) | スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法 | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
US20230205535A1 (en) | Optimization of captured loops in a processor for optimizing loop replay performance | |
CN111752614A (zh) | 一种处理器、指令执行设备及方法 | |
KR19990077433A (ko) | 병행생성된복수의페치어드레스중하나를선택하여메모리요구를형성하는명령페치방법및프로세서 |
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 |