CN110851182B - 指令获取方法、装置、计算机设备和存储介质 - Google Patents
指令获取方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN110851182B CN110851182B CN201911014832.8A CN201911014832A CN110851182B CN 110851182 B CN110851182 B CN 110851182B CN 201911014832 A CN201911014832 A CN 201911014832A CN 110851182 B CN110851182 B CN 110851182B
- Authority
- CN
- China
- Prior art keywords
- instruction
- jump
- address
- subsequent
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004458 analytical method Methods 0.000 claims description 27
- 230000008520 organization Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 17
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 3
- 230000009191 jumping Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种指令获取方法、装置、计算机设备和存储介质。所述方法包括:预测获得跳转指令对应的预测跳转指令地址;若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且指令缓存数据中存在与目标跳转地址相同的第一跳转地址,则从指令缓存数据中获取与第一跳转地址对应的第一相关指令,根据第一跳转地址和第一相关指令,确定第一后续指令地址;从cache缓存数据中获取第一后续指令地址对应的第一后续指令;将第一相关指令和第一后续指令,按照相应的地址顺序排列于跳转指令后,组织第一指令流水线。采用本方法能够减少处理器指令访问的延时。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种指令获取方法、装置、计算机设备和存储介质。
背景技术
现代计算机系统中,随着CPU时钟频率的不断提高,CPU流水线级数增加,相应的需要增加cache内部的流水线级数,以匹配更高频率的顺序指令访问请求。然而,对于跳转指令访问,由于跳转指令访问的地址是随机的,会打断cache的流水线进程,清空之前的流水线状态,cache需要重新检索新的跳转地址,响应速度降低,导致处理器指令访问的延时。
发明内容
基于此,有必要针对上述技术问题,提供一种能够减少处理器指令访问延时的指令获取方法、装置、计算机设备和存储介质。
一种指令获取方法,所述方法包括:
预测获得跳转指令对应的预测跳转指令地址;
若指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中存在与所述目标跳转地址相同的第一跳转地址,则从所述指令缓存数据中获取与所述第一跳转地址对应的第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
从所述cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
按照所述第一指令流水线获取所述跳转指令后的指令;
根据所述预测跳转指令地址,更新所述指令缓存数据中与所述第一跳转地址对应的跳转指令地址。
一种指令获取装置,所述装置包括:
指令预分析模块,用于预测获得跳转指令对应的预测跳转指令地址;
指令缓存模块,用于若指令缓存数据中存在与所述预测跳转指令地址相同的第一跳转指令地址,则从所述指令缓存数据中获取与所述第一跳转指令地址对应的第一跳转地址和第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
cache模块,用于从cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
指令组织模块,用于将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
指令执行模块,用于当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述目标跳转地址与所述第一跳转地址相等,按照所述第一指令流水线获取所述跳转指令后的指令。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
预测获得跳转指令对应的预测跳转指令地址;
若指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中存在与所述目标跳转地址相同的第一跳转地址,则从所述指令缓存数据中获取与所述第一跳转地址对应的第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
从所述cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
按照所述第一指令流水线获取所述跳转指令后的指令;
根据所述预测跳转指令地址,更新所述指令缓存数据中与所述第一跳转地址对应的跳转指令地址。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
预测获得跳转指令对应的预测跳转指令地址;
若指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中存在与所述目标跳转地址相同的第一跳转地址,则从所述指令缓存数据中获取与所述第一跳转地址对应的第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
从所述cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
按照所述第一指令流水线获取所述跳转指令后的指令;
根据所述预测跳转指令地址,更新所述指令缓存数据中与所述第一跳转地址对应的跳转指令地址。
上述指令获取方法、装置、计算机设备和计算机可读存储介质,预测获得跳转指令对应的预测跳转指令地址,当指令缓存数据中的已缓存跳转指令地址中包含预测跳转指令地址时,可以在执行跳转指令之前,从指令缓存数据中预先获得该跳转指令的后续指令,继而预先组织好该跳转指令后续的指令流水线,在执行完该跳转指令后,若预先组织好的指令流水线中的指令地址包含目标跳转地址,则按照预先组织好的指令流水线继续顺序执行后续指令,从而减少执行完跳转指令后再直接从cache缓存数据中获取后续指令的等待时间,提高指令访问的响应速度。
附图说明
图1为相关技术中指令获取方法的流程示意图;
图2为一个实施例中指令获取方法的应用环境图;
图3为一个实施例中指令获取方法的流程示意图;
图4为一个实施例中指令缓存数据的示意图;
图5为一个实施例中指令获取方法的流程示意图;
图6为一个实施例中指令获取方法的流程示意图;
图7为一个实施例中指令获取方法的流程示意图;
图8为一个实施例中指令获取方法的步骤S704的流程示意图;
图9为一个实施例中指令获取方法的步骤S704的流程示意图;
图10为一个实施例中指令获取方法的流程示意图;
图11为一个实施例中指令获取装置的结构框图;
图12为一个实施例中计算机设备的内部结构图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
相关技术中,处理器包括CPU和cache模块,CPU执行从cache模块得到的指令,并根据不同的指令,顺序执行或跳转到新的地址。顺序执行时,处理器可以达到最高运行效率,跳转时,处理器会因为CPU和cache模块的内部流水线重置而处于等待状态中,运行效率降低。
如图1所示,以3级流水线CPU的指令访问为例,提供了相关技术中指令获取方法的流程示意图,包括以下步骤S101至步骤S108。
S101,CPU内部指令组织模块从cache模块接收到地址1到7的指令,按地址顺序形成流水线,指令中包含了跳转指令与非跳转指令。
S102,CPU从地址1开始,按照流水线顺序执行指令,第一条指令为“非跳转指令1(NJ1)”。3级流水线CPU中,第1级流水线通常是完成指令解析,发起操作数读取请求的阶段;第2级流水线通常是寄存器运算阶段;第3级流水线通常是操作数回写阶段。指令在流水线级数3执行完成,即一条指令需要最少3个时钟周期才能被执行完毕。3级流水线嵌套指令的运行,使需要3个时钟周期才能完成运行的指令,在前两个时钟周期后,能够每个时钟周期都完成一条指令的执行。
S103,CPU执行到地址5的指令“跳转指令1(J1)”时,J1指令在流水线级数3执行完毕,J1指令的执行结果为跳转到地址15再执行指令。CPU执行完J1指令后,地址6的指令在流水线级数1和流水线级数2的成果被放弃,地址7的指令在流水线级数1的成果被放弃,所有CPU流水线发生重置,CPU等待cache模块返回地址15及之后的指令。
S104,CPU向cache模块发送跳转请求,跳转地址为15。
S105,cache模块接收跳转请求,重置指令获取流水线,根据跳转地址15,在指令存储器查找对应的指令数据。
S106,cache模块流水线经过数个时钟周期,查找到对应的指令数据,返回对应的指令数据到CPU内部指令组织模块。
S107,CPU内部指令组织模块等待cache模块的流水线重置,然后接收cache模块返回的从地址15开始的指令数据,形成新的CPU流水线。
S108,CPU按照新的流水线继续执行指令,直到遇到下一次跳转指令,发生CPU流水线重置。
上述相关技术中的指令获取方法,CPU流水线在遇到需要跳转的情况时需要重置,CPU流水线从每个时钟周期执行一条指令状态,被打断到需要3个时钟周期才能执行后续的第一个指令,cache模块的获取指令流水线在遇到跳转请求时也需要重置,CPU同样需要等待数个时钟周期,直到cache模块流水线重置完成,才能获得cache模块返回的指令数据,导致CPU执行跳转指令时运行效率降低。
为了解决上述相关技术存在的问题,本申请提供了一种指令获取方法。图2为一个实施例中指令获取方法的应用环境图,如图2所示,该应用环境涉及处理器200,处理器200包括指令处理模块210和指令存储控制模块220,指令处理模块210执行从指令存储控制模块220得到的指令,并根据不同的指令,顺序执行或跳转到新的地址。其中,指令处理模块210包括指令预分析模块211和指令组织模块212,还可以包括指令执行模块213和指令请求模块214,指令存储控制模块220包括指令缓存模块221和cache模块222,指令缓存模块221包括地址对比单元2211和指令缓存单元2212。
指令预分析模块211提前于指令执行模块213分析顺序地址的后续指令数据,如果预测得到后续指令需要跳转,则提前向指令缓存模块221发送跳转请求,以便尝试提前获取跳转指令后的指令数据。
指令组织模块212从指令缓存模块221和cache模块222接收指令数据,将指令数据组织成处理器运行需要的顺序,等待指令执行模块213执行及指令预分析模块211分析。
指令执行模块213从指令组织模块212获取指令数据并执行,将指令执行结果发送至指令请求模块214。
指令请求模块214根据从指令执行模块213获得的指令执行结果,向指令缓存模块221发送跳转请求。
地址对比单元2211通过对比跳转指令相关数据与指令缓存单元2212中的指令缓存数据,确定跳转请求是否可以立即响应,如果对比相等,则指令缓存单元2212向指令组织模块212发送与跳转指令相应的指令缓存数据,地址对比单元2211向cache模块222发送与跳转指令相应的指令缓存数据的后续地址跳转请求;如果对比不相等,则地址对比单元2211向cache模块222发送跳转指令的后续地址跳转请求。
指令缓存单元2212中包含若干行缓存数据,每一行缓存数据包括跳转地址、跳转指令地址和缓存指令三个组成部分,每一行中的三个组成部分之间存在对应关系。其中,跳转地址部分存储着跳转指令被执行完毕后,解析出来需要跳转并得到的跳转地址。跳转指令地址部分可以存储着当跳转指令被执行完毕后,解析出来需要跳转并记录下来的跳转指令地址;如果跳转指令被解析出来不需要发生跳转,但通过指令预分析预测出来需要跳转,这种情况下跳转指令地址部分中的跳转指令地址可以缺失。缓存指令部分存储着跳转地址的指令数据,指令数据的个数可以根据实际需求进行设定,在此不做限定。
cache模块222内部有指令获取流水线,对于顺序指令可以高效率地运行,但对于跳转访问,需要多个时钟重置内部流水线,才能重新向指令组织模块212发送指令数据。当地址对比单元2211对比得到跳转指令相关数据与指令缓存单元2212中的指令缓存数据不相等时,cache模块222将跳转指令的后续指令数据发送到指令缓存单元2212进行缓存,提高指令往后跳转的效率。
在一个实施例中,如图3所示,提供了一种指令获取方法,以该方法应用于图2中的处理器200为例进行说明,包括以下步骤S301至步骤S305。
S301,预测获得跳转指令对应的预测跳转指令地址。
其中,跳转指令可以是直接跳转指令,也可以是判断跳转指令。直接跳转指令属于“一次性跳转”,这类跳转的含义是程序需要去到新的地址执行指令,且未来一段时间不会再发生同样地址的跳转请求,这类跳转地址通常无需判断,跳转指令一旦出现,跳转肯定会发生,可以通过指令预分析获得跳转地址。判断跳转指令属于“循环执行跳转”,这类跳转的含义是程序需要多次执行同样的操作,如数组赋值、数组累加等,这类跳转地址需要判断,难以通过指令预分析获得跳转地址,即便出现跳转指令,跳转不一定发生,需要执行到该跳转指令,才能确认该跳转指令执行情况。
具体地,指令预分析模块分析当前执行指令对应指令地址的更前地址的指令,提前预测将来可能出现的跳转情况,当预测到在若干条指令后会出现跳转指令时,得到该跳转指令对应的预测跳转指令地址(EADR)。
S302,若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且指令缓存数据中存在与目标跳转地址相同的第二跳转地址,则从指令缓存数据中获取与第二跳转地址对应的第二相关指令,根据第二跳转地址和第二相关指令,确定第四后续指令地址。
其中,指令缓存数据为指令缓存模块中的缓存数据。在一个实施例中,如图4所示,提供了一种指令缓存数据的示意图,指令缓存数据中包括m次指令跳转过后的n条指令(m_INSTn)、以及对应的m个跳转地址(JADR_m)和m个跳转指令地址(IADR_m)。在一个实施例中,缓存指令的个数n可以根据cache模块的流水线级数而定,cache模块的流水线级数越多,需要缓存的指令数据越多,例如,cache模块的流水线级数为4,缓存指令的个数n可以取为4。
具体地,指令缓存模块接收到指令预分析模块发送的包含预测跳转指令地址(EADR)的跳转请求后,逐个对比预测跳转指令地址(EADR)与内部缓存的跳转指令地址(IADR_m)是否相等,若预测跳转指令地址(EADR)与所有的跳转指令地址(IADR_m)都不相等,则等待指令执行模块执行跳转指令后获得跳转信息。
当跳转信息为需要跳转且包含跳转指令的目标跳转地址(JADR)时,指令缓存模块接收跳转指令的目标跳转地址(JADR),并逐个对比该目标跳转地址(JADR)与内部缓存的跳转地址(JADR_m)是否相等,若目标跳转地址(JADR)与跳转地址(JADR_m)中的第一跳转地址(JADR_m1)相等,则从第一跳转地址(JADR_m1)所在行获取与第一跳转地址(JADR_m1)对应的第一相关指令(m1_INST1,m1_INST2,m1_INST3,m1_INST4),并确定第一后续指令地址为第一相关指令中最后一个指令的下一个指令的地址。在一个实施例中,假设缓存指令个数与地址的换算关系为1:1,则第一后续指令地址为JADR_m1+4,这里的“+4”表示JADR_m1所在行缓存了4个对应JADR_m1的指令数据。
S303,从cache缓存数据中获取第一后续指令地址对应的第一后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第一后续指令地址(JADR_m1+4)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第一后续指令地址(JADR_m1+4)及顺序往后的指令数据,例如:cache指令数据d1,cache指令数据d2,……,cache指令数据dn。
S304,将第一相关指令和第一后续指令,按照相应的地址顺序排列于跳转指令后,组织第一指令流水线。
具体地,指令组织模块分别从指令缓存模块和cache模块接收第一相关指令和第一后续指令,将第一相关指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后,将第一后续指令中的各指令数据按顺序排列在第一相关指令之后,形成第一指令流水线。在一个实施例中,第一指令流水线的指令排列如下:EADR对应的跳转指令,m1_INST1,m1_INST2,m1_INST3,m1_INST4,cache指令数据d1,cache指令数据d2,……,cache指令数据dn。
S305,按照第一指令流水线获取跳转指令后的指令。
具体地,当跳转指令执行完毕后,指令执行模块按照第一指令流水线获取跳转指令后的指令。
S306,根据预测跳转指令地址,更新指令缓存数据中与第一跳转地址对应的跳转指令地址。
具体地,指令缓存模块将第一跳转地址(JADR_m1)对应的跳转指令地址(IADR_m1)替换为预测跳转指令地址(EADR)。
在一个实施例中,如图5所示,该指令获取方法还可以包括以下步骤S501至步骤S505。
S501,若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且指令缓存数据中不存在与目标跳转地址相同的第一跳转地址,则根据目标跳转地址,确定第二后续指令地址。
具体地,指令缓存模块接收到指令预分析模块发送的包含预测跳转指令地址(EADR)的跳转请求后,逐个对比预测跳转指令地址(EADR)与内部缓存的跳转指令地址(IADR_m)是否相等,若预测跳转指令地址(EADR)与所有的跳转指令地址(IADR_m)都不相等,则等待指令执行模块执行跳转指令后获得跳转信息。
当跳转信息为需要跳转且包含跳转指令的目标跳转地址(JADR)时,指令缓存模块接收跳转指令的目标跳转地址(JADR),并逐个对比该目标跳转地址(JADR)与内部缓存的跳转地址(JADR_m)是否相等,若目标跳转地址(JADR)与所有的跳转地址(JADR_m)都不相等,则确定第二后续指令地址为目标跳转地址(JADR)。
S502,从cache缓存数据中获取第二后续指令地址对应的第二后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第二后续指令地址(JADR)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第二后续指令地址(JADR)及顺序往后的指令数据,例如:cache指令数据e1,cache指令数据e2,……,cache指令数据en。
S503,将第二后续指令,按照相应的地址顺序排列于跳转指令后,组织第二指令流水线。
具体地,指令组织模块从cache模块接收第二后续指令,将第二后续指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后。在一个实施例中,第二指令流水线的指令排列如下:EADR对应的跳转指令,cache指令数据e1,cache指令数据e2,……,cache指令数据en。
S504,按照第二指令流水线获取跳转指令后的指令。
具体地,当跳转指令执行完毕后,指令执行模块按照第二指令流水线获取跳转指令后的指令。
S505,根据预测跳转指令地址、目标跳转地址和第二后续指令,更新指令缓存数据中的相应数据。
在一个实施例中,指令缓存模块采用最近最少使用算法(LRU),确定指令缓存数据中的一组待更新数据,待更新数据包括待更新跳转指令地址、待更新跳转地址和待更新指令数据,然后将待更新跳转指令地址、待更新跳转地址和待更新缓存指令,分别替换为预测跳转指令地址、目标跳转地址和第二后续指令。
例如,假设指令缓存数据中最近最少使用的一行数据为跳转地址JADR_m3所在行的数据,则将跳转指令地址IADR_m3替换为预测跳转指令地址(EADR),将跳转地址JADR_m3替换为目标跳转地址(JADR),将缓存指令(m3_INST1,m3_INST2,m3_INST3,m3_INST4)替换为第二后续指令(cache指令数据e1,cache指令数据e2,cache指令数据e3,cache指令数据e4)。
在一个实施例中,如图6所示,该指令获取方法还可以包括以下步骤S601至步骤S604。
S601,若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息为不需要跳转,则根据预测跳转指令地址,确定第三后续指令地址。
具体地,指令缓存模块接收到指令预分析模块发送的包含预测跳转指令地址(EADR)的跳转请求后,逐个对比预测跳转指令地址(EADR)与内部缓存的跳转指令地址(IADR_m)是否相等,若预测跳转指令地址(EADR)与所有的跳转指令地址(IADR_m)都不相等,则等待指令执行模块执行跳转指令后获得跳转信息。
当跳转信息为不需要跳转时,指令缓存模块确定第三后续指令地址为预测跳转指令地址的下一个地址(EADR+1)。
S602,从cache缓存数据中获取第三后续指令地址对应的第三后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第三后续指令地址(EADR+1)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第三后续指令地址(EADR+1)及顺序往后的指令数据,例如:cache指令数据f1,cache指令数据f2,……,cache指令数据fn。
S603,将第三后续指令,按照相应的地址顺序排列于跳转指令后,组织第三指令流水线。
具体地,指令组织模块从cache模块接收第三后续指令,并将第三后续指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后。在一个实施例中,第三指令流水线的指令排列如下:EADR对应的跳转指令,cache指令数据f1,cache指令数据f2,……,cache指令数据fn。
S604,按照第三指令流水线获取跳转指令后的指令。
具体地,当跳转指令执行完毕后,指令执行模块按照第三指令流水线获取跳转指令后的指令。
在一个实施例中,如图7所示,该指令获取方法还可以包括以下步骤S701至步骤S705。
S701,若指令缓存数据中存在与预测跳转指令地址相同的跳转指令地址,则从指令缓存数据中获取与跳转指令地址对应的第二跳转地址和第二相关指令,根据第二跳转地址和第二相关指令,确定第四后续指令地址。
具体地,指令缓存模块接收到指令预分析模块发送的包含预测跳转指令地址(EADR)的跳转请求后,逐个对比预测跳转指令地址(EADR)与内部缓存的跳转指令地址(IADR_m)是否相等,若预测跳转指令地址(EADR)与跳转指令地址(IADR_m)中的跳转指令地址(IADR_m2)相等,则从跳转指令地址(IADR_m2)所在行获取与跳转指令地址(IADR_m2)对应的第二跳转地址(JADR_m2)和第二相关指令(m2_INST1,m2_INST2,m2_INST3,m2_INST4),并确定第四后续指令地址为第二相关指令中最后一个指令的下一个指令的地址。在一个实施例中,假设缓存指令个数与地址的换算关系为1:1,则第四后续指令地址为JADR_m2+4,这里的“+4”表示JADR_m2所在行缓存了4个对应JADR_m2的指令数据。
S702,从cache缓存数据中获取第四后续指令地址对应的第四后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第四后续指令地址(JADR_m2+4)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第四后续指令地址(JADR_m2+4)及顺序往后的指令数据,例如:cache指令数据a1,cache指令数据a2,……,cache指令数据an。
S703,将第二相关指令和第四后续指令,按照相应的地址顺序排列于跳转指令后,组织第四指令流水线。
具体地,指令组织模块分别从指令缓存模块和cache模块接收第二相关指令和第四后续指令,将第二相关指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后,将第四后续指令中的各指令数据按顺序排列在第二相关指令之后,形成第四指令流水线。在一个实施例中,第四指令流水线的指令排列如下:EADR对应的跳转指令,m2_INST1,m2_INST2,m2_INST3,m2_INST4,cache指令数据a1,cache指令数据a2,……,cache指令数据an。
S704,当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且目标跳转地址与第二跳转地址相等,则按照第四指令流水线获取跳转指令后的指令。
在一个实施例中,若跳转指令为直接跳转指令,可以通过指令预分析模块解析跳转地址信息,如果当前能得到跳转地址信息,指令预分析模块会向指令缓存模块发送预测跳转地址,如果当前不能得到跳转地址信息,指令预分析模块会等待指令执行模块执行下一条指令,直到有足够信息解析出跳转地址信息,并向指令缓存模块发送预测跳转地址。
在一个实施例中,若跳转指令为判断跳转指令,指令预分析模块暂时停止指令分析工作,等待该跳转指令被执行完毕再开始后续指令分析工作,指令执行模块执行该跳转指令后获得跳转信息,指令请求模块根据指令执行结果,向指令缓存模块发送跳转信息。
具体地,跳转信息包括需要跳转和不需要跳转两种可能的情况,当跳转信息为需要跳转且包含跳转指令的目标跳转地址(JADR)时,指令缓存模块接收跳转指令的目标跳转地址(JADR),并对比该目标跳转地址(JADR)与内部缓存的第二跳转地址(JADR_m2)是否相等,若相等,说明第二跳转地址(JADR_m2)对应的第二相关指令为处理器接下来要执行的指令,则当跳转指令执行完毕后,指令执行模块按照第四指令流水线获取跳转指令后的指令。
上述指令获取方法中,预测获得跳转指令对应的预测跳转指令地址,当指令缓存数据中的已缓存跳转指令地址中包含预测跳转指令地址时,可以在执行跳转指令之前,从指令缓存数据中预先获得该跳转指令的后续指令,继而预先组织好该跳转指令后续的指令流水线,在执行完该跳转指令后,若预先组织好的指令流水线中的指令地址包含目标跳转地址,则按照预先组织好的指令流水线继续顺序执行后续指令,从而减少执行完跳转指令后再直接从cache缓存数据中获取后续指令的等待时间,提高指令访问的响应速度。
在一个实施例中,如图8所示,步骤S704还可以包括以下步骤S7041至步骤S7045。
S7041,若跳转信息包含跳转指令的目标跳转地址,且目标跳转地址与第二跳转地址不相等,则根据目标跳转地址,确定第五后续指令地址。
具体地,当跳转信息为需要跳转且包含跳转指令的目标跳转地址(JADR)时,指令缓存模块接收跳转指令的目标跳转地址(JADR),并对比该目标跳转地址(JADR)与内部缓存的第二跳转地址(JADR_m2)是否相等,若不相等,说明第二跳转地址(JADR_m2)对应的第二相关指令(m2_INST1,m2_INST2,m2_INST3,m2_INST4)不是处理器接下来要执行的指令,则需要重新确定后续指令地址,指令缓存模块确定第五后续指令地址为目标跳转地址(JADR)。
S7042,从cache缓存数据中获取第五后续指令地址对应的第五后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第五后续指令地址(JADR)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第五后续指令地址(JADR)及顺序往后的指令数据,例如:cache指令数据b1,cache指令数据b2,……,cache指令数据bn。
S7043,将第五后续指令,按照相应的地址顺序排列于跳转指令后,组织第五指令流水线。
具体地,指令组织模块从cache模块接收到第五后续指令,将第五后续指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后。在一个实施例中,第五指令流水线的指令排列如下:EADR对应的跳转指令,cache指令数据b1,cache指令数据b2,……,cache指令数据bn。
S7044,按照第五指令流水线获取跳转指令后的指令。
具体地,当跳转指令执行完毕后,指令执行模块按照第五指令流水线获取跳转指令后的指令。
S7045,根据目标跳转地址和第五后续指令,更新指令缓存数据中的第二跳转地址和第二相关指令。
具体地,指令缓存模块将第二跳转地址(JADR_m2)替换为目标跳转地址(JADR),将第二相关指令(m2_INST1,m2_INST2,m2_INST3,m2_INST4)替换为第五后续指令(cache指令数据b1,cache指令数据b2,cache指令数据b3,cache指令数据b4)。
在一个实施例中,如图9所示,步骤S704还可以包括以下步骤S7046至步骤S70410。
S7046,若跳转信息为不需要跳转,则根据跳转指令地址,确定第六后续指令地址。
具体地,若跳转信息为不需要跳转,说明第二跳转地址(JADR_m2)对应的第二相关指令(m2_INST1,m2_INST2,m2_INST3,m2_INST4)不是处理器接下来要执行的指令,则需要重新确定后续指令地址,指令缓存模块确定第六后续指令地址为跳转指令地址的下一个地址(IADR_m2+1)。
S7047,从cache缓存数据中获取第六后续指令地址对应的第六后续指令。
具体地,cache模块接收到指令缓存模块发送的包含第六后续指令地址(IADR_m2+1)的跳转请求后,重置指令获取流水线,从cache缓存数据中获取第六后续指令地址(IADR_m2+1)及顺序往后的指令数据,例如:cache指令数据c1,cache指令数据c2,……,cache指令数据cn。
S7048,将第六后续指令,按照相应的地址顺序排列于跳转指令后,组织第六指令流水线。
具体地,指令组织模块从cache模块接收到第六后续指令,将第六后续指令中的各指令数据按顺序排列在预测跳转指令地址(EADR)对应的跳转指令之后。在一个实施例中,第六指令流水线的指令排列如下:EADR对应的跳转指令,cache指令数据c1,cache指令数据c2,……,cache指令数据cn。
S7049,按照第六指令流水线获取跳转指令后的指令。
具体地,当跳转指令执行完毕后,指令执行模块按照第六指令流水线获取跳转指令后的指令。
S70410,删除指令缓存数据中的跳转指令地址。
本实施例中,指令预分析模块预测得到的跳转指令被执行出来不需要跳转,因此,指令缓存模块将与预测跳转指令地址(EADR)相同的跳转指令地址(IADR_m2)删除,使其缺失。指令缓存数据中缺失了跳转指令地址的这一行的跳转地址和缓存指令,可以独立于指令预分析模块单独使用。
上述实施例中,指令缓存模块和指令预分析模块配合使用,可以减少遇到跳转指令时流水线重置的几率和等待时间,提高跳转指令的响应速度,增加处理器的运行效率。
在其它实施例中,指令缓存模块也可以独立于指令预分析模块单独使用,如图10所示,提供了一种指令获取方法,包括以下步骤S1001至步骤S1015。
S1001,指令处理模块(CPU)执行到一条跳转指令,执行完成,得到目标跳转地址JADR,并向指令缓存模块(IBUF)发送包含目标跳转地址JADR的跳转请求。
S1002,IBUF接收到目标跳转地址JADR后,逐个对比JADR与IBUF内部缓存的跳转地址JADR_m是否相等,若JADR与IBUF缓存的跳转地址之一JADR_m1相等,进入步骤S1003至步骤S1007,若JADR与IBUF缓存的所有跳转地址JADR_m都不相等,进入步骤S1008至步骤S1015。
S1003,IBUF向CPU指令组织模块发送与JADR_m1对应的缓存指令。
S1004,IBUF向cache发送包含后续跳转地址(JADR+4)的跳转请求,这里的“+4”表示IBUF缓存了4个对应JADR_m1的缓存指令,每个缓存指令占用一个地址空间。
S1005,cache指令获取流水线状态重置,从后续跳转地址(JADR+4)获取指令数据。
S1006,cache获取地址(JADR+4)及顺序往后的指令数据,发送到CPU指令组织模块。
S1007,CPU指令组织模块接收IBUF发送的缓存指令以及cache发送的后续指令,形成指令流水线,然后进入步骤S1015。
S1008,IBUF向cache发送包含目标跳转地址JADR的跳转请求。
S1009,cache指令获取流水线状态重置,从目标跳转地址JADR获取指令数据。
S1010,cache获取目标跳转地址JADR及顺序往后的指令数据,发送到IBUF和CPU指令组织模块。
S1011,IBUF根据最近最少使用(LRU)算法,找到一行缓存数据x,将其中的缓存跳转地址JADR_mx替换成当前跳转地址JADR。
S1012,IBUF将JADR_mx所在行的所有指令数据mx_INSTn替换成从cache接收的对应目标跳转地址JADR的指令数据。
S1013,IBUF更新缓存数据,增加下一次IBUF地址对比命中率。
S1014,CPU指令组织模块接收cache发送的后续指令,形成指令流水线。
S1015,CPU根据指令流水线获取并执行指令。
上述实施例中,CPU执行跳转指令后,向IBUF发送包含目标跳转地址的跳转请求,由于IBUF内部没有设置流水线,当其缓存有该目标跳转地址时,能够快速响应跳转请求,当其没有缓存该目标跳转地址时,IBUF从cache接收该目标跳转地址对应的指令数据并缓存,提高该跳转指令再次访问的响应速度。
应该理解的是,虽然图3、5-10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3、5-10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种指令获取装置1100,包括:指令预分析模块1110、指令缓存模块1120、cache模块1130、指令组织模块1140和指令执行模块1150,其中:
指令预分析模块1110,用于预测获得跳转指令对应的预测跳转指令地址。
指令缓存模块1120,用于若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且指令缓存数据中存在与目标跳转地址相同的第一跳转地址,则从指令缓存数据中获取与第一跳转地址对应的第一相关指令,根据第一跳转地址和第一相关指令,确定第一后续指令地址。
cache模块1130,用于从cache缓存数据中获取第一后续指令地址对应的第一后续指令。
指令组织模块1140,用于将第一相关指令和第一后续指令,按照相应的地址顺序排列于跳转指令后,组织第一指令流水线。
指令执行模块1150,用于按照第一指令流水线获取所述跳转指令后的指令。
指令缓存模块1120,还用于根据预测跳转指令地址,更新指令缓存数据中与第一跳转地址对应的跳转指令地址。
在一个实施例中,若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且指令缓存数据中不存在与目标跳转地址相同的第一跳转地址,则:指令缓存模块1120还用于根据目标跳转地址,确定第二后续指令地址;cache模块1130还用于从cache缓存数据中获取第二后续指令地址对应的第二后续指令;指令组织模块1140还用于将第二后续指令,按照相应的地址顺序排列于跳转指令后,组织第二指令流水线;指令执行模块1150还用于按照第二指令流水线获取跳转指令后的指令;指令缓存模块1120还用于根据预测跳转指令地址、目标跳转地址和第二后续指令,更新指令缓存数据中的相应数据。
在一个实施例中,指令缓存模块1120在根据预测跳转指令地址、目标跳转地址和第二后续指令,更新指令缓存数据中的相应数据时,具体用于采用最近最少使用算法,确定指令缓存数据中的一组待更新数据,待更新数据包括待更新跳转指令地址、待更新跳转地址和待更新指令数据;将待更新跳转指令地址、待更新跳转地址和待更新指令数据,分别更新为预测跳转指令地址、目标跳转地址和第二后续指令。
在一个实施例中,若指令缓存数据中不存在与预测跳转指令地址相同的跳转指令地址,则当获得跳转指令的跳转信息时,若跳转信息为不需要跳转,则:指令缓存模块1120还用于根据预测跳转指令地址,确定第三后续指令地址;cache模块1130还用于从cache缓存数据中获取第三后续指令地址对应的第三后续指令;指令组织模块1140还用于将第三后续指令,按照相应的地址顺序排列于跳转指令后,组织第三指令流水线;指令执行模块1150还用于按照第三指令流水线获取跳转指令后的指令。
在一个实施例中,若指令缓存数据中存在与预测跳转指令地址相同的跳转指令地址,则指令缓存模块1120还用于从指令缓存数据中获取与跳转指令地址对应的第二跳转地址和第二相关指令,根据第二跳转地址和第二相关指令,确定第四后续指令地址;cache模块1130还用于从cache缓存数据中获取第四后续指令地址对应的第四后续指令;指令组织模块1140还用于将第二相关指令和第四后续指令,按照相应的地址顺序排列于跳转指令后,组织第四指令流水线;指令执行模块1150还用于当获得跳转指令的跳转信息时,若跳转信息包含跳转指令的目标跳转地址,且目标跳转地址与第二跳转地址相等,则按照第四指令流水线获取跳转指令后的指令。
在一个实施例中,若跳转信息包含跳转指令的目标跳转地址,且目标跳转地址与第二跳转地址不相等,则:指令缓存模块1120还用于根据目标跳转地址,确定第五后续指令地址;cache模块1130还用于从cache缓存数据中获取第五后续指令地址对应的第五后续指令;指令组织模块1140还用于将第五后续指令,按照相应的地址顺序排列于跳转指令后,组织第五指令流水线;指令执行模块1150还用于按照第五指令流水线获取跳转指令后的指令;指令缓存模块1120还用于根据目标跳转地址和第五后续指令,更新指令缓存数据中的第二跳转地址和第二相关指令。
在一个实施例中,若跳转信息为不需要跳转,则:指令缓存模块1120还用于根据跳转指令地址,确定第六后续指令地址;cache模块1130还用于从cache缓存数据中获取第六后续指令地址对应的第六后续指令;指令组织模块1140还用于将第六后续指令,按照相应的地址顺序排列于跳转指令后,组织第六指令流水线;指令执行模块1150还用于按照第六指令流水线获取跳转指令后的指令;指令缓存模块1120还用于删除指令缓存数据中的跳转指令地址。
关于指令获取装置的具体限定可以参见上文中对于指令获取方法的限定,在此不再赘述。上述指令获取装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种指令获取方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种指令获取方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12或13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个方法实施例中的步骤。
需要理解的是,上述实施例中的术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种指令获取方法,所述方法包括:
预测获得跳转指令对应的预测跳转指令地址;
若指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中存在与所述目标跳转地址相同的第一跳转地址,则从所述指令缓存数据中获取与所述第一跳转地址对应的第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
从所述cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
按照所述第一指令流水线获取所述跳转指令后的指令;
根据所述预测跳转指令地址,更新所述指令缓存数据中与所述第一跳转地址对应的跳转指令地址。
2.根据权利要求1所述的方法,其特征在于,还包括:
若所述指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中不存在与所述目标跳转地址相同的第一跳转地址,则根据所述目标跳转地址,确定第二后续指令地址;
从所述cache缓存数据中获取所述第二后续指令地址对应的第二后续指令;
将所述第二后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第二指令流水线;
按照所述第二指令流水线获取所述跳转指令后的指令;
根据所述预测跳转指令地址、所述目标跳转地址和所述第二后续指令,更新所述指令缓存数据中的相应数据。
3.根据权利要求2所述的方法,其特征在于,根据所述预测跳转指令地址、所述目标跳转地址和所述第二后续指令,更新所述指令缓存数据中的相应数据,包括:
采用最近最少使用算法,确定所述指令缓存数据中的一组待更新数据,所述待更新数据包括待更新跳转指令地址、待更新跳转地址和待更新指令数据;
将所述待更新跳转指令地址、所述待更新跳转地址和所述待更新指令数据,分别更新为所述预测跳转指令地址、所述目标跳转地址和所述第二后续指令。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息为不需要跳转,则根据所述预测跳转指令地址,确定第三后续指令地址;
从所述cache缓存数据中获取所述第三后续指令地址对应的第三后续指令;
将所述第三后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第三指令流水线;
按照所述第三指令流水线获取所述跳转指令后的指令。
5.根据权利要求1所述的方法,其特征在于,还包括:
若指令缓存数据中存在与所述预测跳转指令地址相同的跳转指令地址,则从所述指令缓存数据中获取与所述跳转指令地址对应的第二跳转地址和第二相关指令,根据所述第二跳转地址和所述第二相关指令,确定第四后续指令地址;
从cache缓存数据中获取所述第四后续指令地址对应的第四后续指令;
将所述第二相关指令和所述第四后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第四指令流水线;
当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述目标跳转地址与所述第二跳转地址相等,则按照所述第四指令流水线获取所述跳转指令后的指令。
6.根据权利要求5所述的方法,其特征在于,还包括:
若所述跳转信息包含所述跳转指令的目标跳转地址,且所述目标跳转地址与所述第二跳转地址不相等,则根据所述目标跳转地址,确定第五后续指令地址;
从所述cache缓存数据中获取所述第五后续指令地址对应的第五后续指令;
将所述第五后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第五指令流水线;
按照所述第五指令流水线获取所述跳转指令后的指令;
根据所述目标跳转地址和所述第五后续指令,更新所述指令缓存数据中的所述第二跳转地址和所述第二相关指令。
7.根据权利要求5所述的方法,其特征在于,还包括:
若所述跳转信息为不需要跳转,则根据所述跳转指令地址,确定第六后续指令地址;
从所述cache缓存数据中获取所述第六后续指令地址对应的第六后续指令;
将所述第六后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第六指令流水线;
按照所述第六指令流水线获取所述跳转指令后的指令;
删除所述指令缓存数据中的所述跳转指令地址。
8.一种指令获取装置,其特征在于,所述装置包括:
指令预分析模块,用于预测获得跳转指令对应的预测跳转指令地址;
指令缓存模块,用于若指令缓存数据中不存在与所述预测跳转指令地址相同的跳转指令地址,则当获得所述跳转指令的跳转信息时,若所述跳转信息包含所述跳转指令的目标跳转地址,且所述指令缓存数据中存在与所述目标跳转地址相同的第一跳转地址,则从所述指令缓存数据中获取与所述第一跳转地址对应的第一相关指令,根据所述第一跳转地址和所述第一相关指令,确定第一后续指令地址;
cache模块,用于从cache缓存数据中获取所述第一后续指令地址对应的第一后续指令;
指令组织模块,用于将所述第一相关指令和所述第一后续指令,按照相应的地址顺序排列于所述跳转指令后,组织第一指令流水线;
指令执行模块,用于按照所述第一指令流水线获取所述跳转指令后的指令;
所述指令缓存模块,还用于根据所述预测跳转指令地址,更新所述指令缓存数据中与所述第一跳转地址对应的跳转指令地址。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911014832.8A CN110851182B (zh) | 2019-10-24 | 2019-10-24 | 指令获取方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911014832.8A CN110851182B (zh) | 2019-10-24 | 2019-10-24 | 指令获取方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851182A CN110851182A (zh) | 2020-02-28 |
CN110851182B true CN110851182B (zh) | 2021-12-03 |
Family
ID=69597810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911014832.8A Active CN110851182B (zh) | 2019-10-24 | 2019-10-24 | 指令获取方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851182B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111552958B (zh) * | 2020-06-18 | 2024-01-19 | 南方电网科学研究院有限责任公司 | 一种程序运行特征提取方法和装置 |
CN114528025B (zh) * | 2022-02-25 | 2022-11-15 | 深圳市航顺芯片技术研发有限公司 | 指令处理方法、装置、微控制器及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN104793921A (zh) * | 2015-04-29 | 2015-07-22 | 深圳芯邦科技股份有限公司 | 一种指令分支预测方法与系统 |
CN109783143A (zh) * | 2019-01-25 | 2019-05-21 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8880851B2 (en) * | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US20160239309A1 (en) * | 2015-02-12 | 2016-08-18 | International Business Machines Corporation | Branch target buffer column predictor |
CN107943518B (zh) * | 2017-11-24 | 2021-07-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种局部跳转指令取指电路 |
-
2019
- 2019-10-24 CN CN201911014832.8A patent/CN110851182B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104731718A (zh) * | 2013-12-24 | 2015-06-24 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
CN104793921A (zh) * | 2015-04-29 | 2015-07-22 | 深圳芯邦科技股份有限公司 | 一种指令分支预测方法与系统 |
CN109783143A (zh) * | 2019-01-25 | 2019-05-21 | 贵州华芯通半导体技术有限公司 | 用于流水线指令流的控制方法和控制设备 |
Non-Patent Citations (1)
Title |
---|
乱序处理器分支预测器性能建模;王伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20181215;I137-35 * |
Also Published As
Publication number | Publication date |
---|---|
CN110851182A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100341431B1 (ko) | 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어 | |
US5093777A (en) | Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack | |
US9824016B2 (en) | Device and processing method | |
US7493480B2 (en) | Method and apparatus for prefetching branch history information | |
US6351796B1 (en) | Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache | |
US10013254B2 (en) | Systems and methods for load cancelling in a processor that is connected to an external interconnect fabric | |
JPH11504458A (ja) | スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法 | |
CN110851182B (zh) | 指令获取方法、装置、计算机设备和存储介质 | |
CN109308191B (zh) | 分支预测方法及装置 | |
KR20120086363A (ko) | 연산 처리 장치 | |
CN109815425A (zh) | 缓存数据处理方法、装置、计算机设备和存储介质 | |
US10423420B2 (en) | Stream based branch prediction index accelerator for multiple stream exits | |
CN108984392B (zh) | 单步调试方法和调试器 | |
CN116089321A (zh) | 内存管理方法、装置、电子装置和存储介质 | |
CN110806900B (zh) | 一种访存指令处理方法及处理器 | |
MX2009001747A (es) | Metodos y aparatos para reducir las busquedas en una memoria cache de direccion destino de saltos. | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
CN116701246B (zh) | 一种提升缓存带宽的方法、装置、设备及存储介质 | |
US11327768B2 (en) | Arithmetic processing apparatus and memory apparatus | |
JP3890910B2 (ja) | 命令の実行結果予測装置 | |
CN115292201B (zh) | 函数调用栈解析和回溯方法与装置 | |
CN114528025B (zh) | 指令处理方法、装置、微控制器及可读存储介质 | |
US20140229677A1 (en) | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses | |
CN115885258A (zh) | 使用指令相关性的预测 | |
US20050149709A1 (en) | Prediction based indexed trace cache |
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 | ||
CB02 | Change of applicant information |
Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province Applicant after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province Applicant before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |