CN117270972B - 指令处理方法、装置、设备和介质 - Google Patents
指令处理方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN117270972B CN117270972B CN202311549751.4A CN202311549751A CN117270972B CN 117270972 B CN117270972 B CN 117270972B CN 202311549751 A CN202311549751 A CN 202311549751A CN 117270972 B CN117270972 B CN 117270972B
- Authority
- CN
- China
- Prior art keywords
- instruction
- load instruction
- cache
- target data
- data corresponding
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 51
- 238000003860 storage Methods 0.000 claims description 54
- 238000004590 computer program Methods 0.000 claims description 24
- 238000000034 method Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
技术领域
本申请涉及数据缓存技术领域,具体地,涉及一种指令处理方法、指令处理装置、计算机设备和计算机可读存储介质。
背景技术
数据缓存(Data Cache,Dcache)是计算机体系结构中的一种高速缓存(Cache)类型,用于存储已访问的数据以提高处理器的访存性能。Dcache通常位于处理器内部且与处理器核心相连,用于临时存储最近访问的数据,以便在处理器需要再次访问相同数据时能够更快地获取。设置Dcache的目的是减少对主内存(RAM)的访问次数,规避主内存访问速度相对较慢的问题。
在计算机体系结构中,加载指令(Load指令)是一种用于从内存中加载数据到寄存器的指令,允许处理器从内存地址中获取特定的数据,并将其存储在指定的寄存器中。
一般来说,处理主流水线中的加载指令时,需要检测Dcache是否命中对应于加载指令的数据,如果不存在,则访问外部内存。但是,这种方式存在处理效率较低的问题。
发明内容
本申请实施例中提供了一种指令处理方法、指令处理装置、计算机设备和计算机可读存储介质。
本申请实施例的第一个方面,提供了一种指令处理方法,包括:
当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据;
如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
在本申请一个可选的实施例中,还包括:
如果不存在对应于加载指令的目标数据,且加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的目标数据。
在本申请一个可选的实施例中,访问下一级存储,以获取由下一级存储所存储的目标数据,包括:
通过总线访问与缓存存在物理隔离的下一级存储,以获取由下一级存储所存储的目标数据。
在本申请一个可选的实施例中,还包括:
如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据;
基于目标数据对加载指令进行响应。
在本申请一个可选的实施例中,还包括:
从主流水线中确定待处理的加载指令;其中,主流水线中的分叉到指令提交的深度和加载指令的执行深度一致。
在本申请一个可选的实施例中,还包括:
响应于主流水线中的剩余加载指令,以检测缓存中是否存在对应于剩余加载指令的指定数据;
如果不存在指定数据,且指定数据未提交,则接收由缓存响应的任意值,并基于任意值结束针对剩余加载指令的执行流程。
本申请实施例的第二个方面,提供了一种指令处理装置,包括:
缓存检查单元,用于当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据;
任意值返回单元,用于如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
在本申请一个可选的实施例中,还包括:
外部访问单元,用于如果不存在对应于加载指令的目标数据,且加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的目标数据。
在本申请一个可选的实施例中,外部访问单元访问下一级存储,以获取由下一级存储所存储的目标数据,包括:
通过总线访问与缓存存在物理隔离的下一级存储,以获取由下一级存储所存储的目标数据。
在本申请一个可选的实施例中,还包括:
目标数据接收单元,用于如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据;
加载指令响应单元,用于基于目标数据对加载指令进行响应。
在本申请一个可选的实施例中,还包括:
加载指令确定单元,用于从主流水线中确定待处理的加载指令;其中,主流水线中的分叉到指令提交的深度和加载指令的执行深度一致。
在本申请一个可选的实施例中,其中:
缓存检查单元,还用于响应于主流水线中的剩余加载指令,以检测缓存中是否存在对应于剩余加载指令的指定数据;
任意值返回单元,还用于如果不存在指定数据,且指定数据未提交,则接收由缓存响应的任意值,并基于任意值结束针对剩余加载指令的执行流程。
本申请实施例的第三个方面,提供了一种计算机设备,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上任一项方法的步骤。
本申请实施例的第四个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现如上任一项的方法的步骤。
本申请实施例可以当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据,如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。一方面,可以避免缓存中无目标数据时访问下一级存储,访问下一级存储需要消耗较多时间,容易导致加载指令的处理效率较低,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。另一方面,可以保障加载指令执行深度和包含加载指令的主流水线中的分叉到指令提交的深度的一致性,更大程度地提升指令处理频率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一个实施例提供的计算机设备结构示意图;
图2为本申请一个实施例提供的指令处理方法的流程图;
图3为本申请另一个实施例提供的指令处理方法的流程图;
图4为本申请又一个实施例提供的指令处理方法的流程图;
图5为本申请一个实施例提供的指令处理装置结构示意图。
具体实施方式
在实现本申请的过程中,发明人发现,目前的处理主流水线中的加载指令时,需要检测Dcache是否命中对应于加载指令的数据,如果不存在,则需要花费较多的时间访问外部内存,来获取到数据,进而才能继续处理加载指令。这样的处理效率是比较低的。
针对上述问题,本申请实施例中提供了指令处理方法,以避免缓存中无目标数据时访问外部内存,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
以下对本申请实施例提供的指令处理方法的应用环境作简要说明:
示例性的,图1为本申请实施例提供的一例计算机设备的结构示意图。该计算机设备可以是终端。如图1所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质例如可以为磁盘。非易失性存储介质中存储有文件(可以为待处理的文件,也可以为处理后的文件)、操作系统和计算机程序等。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种指令处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
请参见图2,以下实施例以上述计算机设备为执行主体,将本申请实施例提供的指令处理方法应用于上述计算机设备来提升指令处理频率为例进行具体说明。本申请实施例提供的指令处理方法包括如下步骤201-步骤202:
步骤201、当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据。
在本申请实施例中,加载指令(Load指令),是一种用于从内存中加载数据到寄存器的指令,也是一种只读指令,加载指令不会改变缓存(Dcache)或者下一级存储中记载的数据。具体地,没有相关性的Load指令,可以在未提交(Commit)前发出并执行。
其中,下一级存储,例如Memmory,Memmory指的是计算机系统中位于处理器之外的存储器部分,它通常用于存储大容量的数据、程序代码和其他需要持久保存的信息,下一级存储可以是各种类型的存储介质,包括硬盘驱动器(HDD)、固态硬盘(SSD)、磁带、闪存卡等,上述存储介质与处理器通过总线或者其他接口进行连接。
其中,在计算机体系结构中,Load指令用于从内存或缓存中读取数据到寄存器中。而在处理器的执行流水线中,指令的执行需要经过多个阶段,包括取指(InstructionFetch)、译码(Instruction Decode)、执行(Execution)、访存(Memory Access)和写回(Write Back)等。针对Load指令的提交(Commit)指的是将指令的结果或影响,应用到系统状态的操作。具体来说,在执行阶段后,指令的结果通常会暂存在处理器的内部结构中,等待进一步处理。当到达提交(Commit)阶段,指令的结果将被应用到系统状态中,包括寄存器、内存或其他相关状态,这意味着指令的执行结果正式被认可并生效,可以对后续指令产生影响。对于Load指令而言,提交(Commit)阶段表示从内存或缓存中读取的数据已经被成功地加载到目标寄存器中,并且可以在后续的指令中使用,这确保了指令的顺序和正确性,并使得系统状态与指令的执行结果保持一致。此外,需要注意的是,处理器的主流水线(pipe)中的每个阶段都可能存在一定的延迟和冲突,而提交(Commit)阶段是在保证指令执行正确性的前提下,对指令结果进行实际应用的最终步骤。
其中,Load指令,允许处理器从内存地址中获取特定的数据,并将其存储在指定的寄存器中。以及,Load指令通常用于从内存中读取变量、数组元素或其他需要在处理器中进行操作的数据,它的操作包括指定要加载的内存地址、数据大小和存储目标(寄存器),以及可能的偏移量或索引等。当处理器执行Load指令时,会将指定内存地址中的数据传送到指定的寄存器中,进而,处理器可以在后续的指令中使用加载的数据进行计算、逻辑操作或其他操作。
当检测到加载指令时,可以检测缓存中是否存在对应于加载指令的目标数据;其中,对应于加载指令的目标数据可以指的是执行加载指令所需的地址或是其他数据,本申请实施例不作限定。此外,上述的缓存(Dcache)具体指的是数据缓存(Data Cache),Dcache是计算机系统中的一种高速缓存,用于存储从主存中读取的数据,缓存的目的是为了加快CPU访问数据的速度。在计算机系统中,数据通常按照层次结构进行组织,最底层是主存,位于主存和CPU之间的是高速缓存。当CPU需要读取数据时,首先会查找缓存,如果数据在缓存中找到了(即,命中缓存(hit)),进而,CPU可以直接从缓存中读取数据;如果数据不在缓存中(即,未命中缓存),则需要从主存中读取,这个过程相对较慢。通过使用Dcache,可以减少对主存的访问次数,从而提高系统的响应速度和整体性能。
此外,本申请所限定的缓存(Dcache)可以应用于RISC-V架构,因此,也可以称之为RISC-V Dcache。其中,RISC-V(RISC-five)是一种开放、基于指令集架构(ISA)的处理器设计,其设计目的在于:提供一种简化、灵活和可扩展的架构,适用于广泛的应用领域,从嵌入式系统到高性能计算。具体地,RISC-V是一个开放的指令集架构,其设计规范被授权未开放源代码;以及,RISC-V采用了精简的指令集,这使得处理器的设计和实现更加简化;以及,RISC-V具有模块化特性,支持根据需求选择不同的扩展的特性,它定义了多个标准扩展,如整数、乘法、除法,浮点运算、向量处理等;以及,RISC-V旨在未不同的硬件平台和实现提供可移植性,它的规范定义了清晰的接口和标准,使得软件可以在不同的RISC-V处理器上无需修改的移植;以及,RISC-V的设计灵活性使得它可以适应各种应用场景,可以支持不同的处理器架构,如单核、多核、超标量等。
通过使用Dcache,RISC-V处理器可以提高数据访问速度和效率,减少对于主存储器的频繁访问,从而提升整体系统性能。其中,需要说明的是,Dcache的大小、替换策略、预取策略等均可以根据具体的实现和设计进行调整,以满足不同应用场景和性能需求。
步骤202、如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
具体地,在处理器中,加载指令按照指令流水线的方式进行执行,当加载指令进入流水线后,它会依次经过不同的阶段,如取指、译码、执行等。在执行过程中,处理器可能会采用一些优化技术,如分支预测等,如果处理器的分支预测错误或者出现其他导致指令无效的情况,那么之前已经发出的指令可能需要被撤销(flush)。在处理器中,指令的执行结果并不是立即对系统状态生效的,而是需要经过提交(Commit)阶段才能应用到系统状态中。在提交(Commit)阶段,指令的执行结果被确认并应用到寄存器、内存或其他相关状态中。通过提交(Commit)操作,指令的执行结果正式生效,并且后续的指令可以依赖于此指令的结果。只有在指令被提交(Commit)之后,系统才可以确认该指令确实需要执行,并且可以继续执行后续的指令。
但是,如果缓存(Dcache)中不存在对应于加载指令的目标数据,且加载指令未提交(Commit),为了节约的访问下一级存储(Memory)的时间,并且考虑到加载指令后缓存(Dcache)中是否存在加载指令的目标数据(即,访问地址),则不影响指令处理结果,因此可以接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。其中,任意值指的可以是随机值。
可见,实施图2所示的指令处理方法,可以当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据,如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。一方面,可以避免缓存中无目标数据时访问下一级存储,访问下一级存储需要消耗较多时间,容易导致加载指令的处理效率较低,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。另一方面,可以保障加载指令执行深度和包含加载指令的主流水线中的分叉到指令提交的深度的一致性,更大程度地提升指令处理频率。
请参阅图3,图3为本申请另一个实施例提供的指令处理方法的流程图。如图3所示,包括步骤301-步骤304。
步骤301、当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据。
在本申请实施例中,所限定的步骤已在图2中进行详细描述,此处不再赘述。
步骤302、如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
在本申请实施例中,所限定的步骤已在图2中进行详细描述,此处不再赘述。
步骤303、如果不存在对应于加载指令的目标数据,且加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的目标数据。
在本申请实施例中,如果不存在对应于加载指令的目标数据,且加载指令已提交,意味着尽管加载指令已经在提交(Commit)阶段完成,但由于所需数据不在缓存(Dcache)中,因此,必须进行下一级存储的访问。
实施步骤303,可以实现对于不存在对应于加载指令的目标数据,且加载指令已提交的情况的兜底,使得不论面对提交与否的结果以及缓存中包含目标数据与否的结果时,均可以对加载指令进行及时的处理。
步骤304、如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据,基于目标数据对加载指令进行响应。
在本申请实施例中,如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据,则意味着当加载指令需要读取的数据恰好存在于缓存(Dcache)中时,加载指令的执行可以在提交(Commit)的同一个周期内完成。这意味着加载指令的执行不会阻塞(卡顿)逐流水线上的其他指令的执行。具体执行过程在于:接收由缓存响应的目标数据,基于目标数据对加载指令进行响应;其中,缓存因其自身设置在CPU中的优势,因此,缓存响应目标数据的效率较高,因此可以更快地基于目标数据对加载指令进行响应,即,完成对于加载指令的处理,以更快进入对于下一个指令的处理流程。
实施步骤304,可以实现提交周期与缓存处理的同拍完成,有利于在指令执行效率不变的情况下,最大程度提升频率。
在本申请一个可选的实施例中,访问下一级存储,以获取由下一级存储所存储的目标数据,包括:通过总线访问与缓存存在物理隔离的下一级存储,以获取由下一级存储所存储的目标数据。
在本申请实施例中,总线指的是,用于数据传输的通信通道,连接着处理器、内存和其他外部设备,总线是数据传输的桥梁角色,负责在不同组件之间传递数据。此外,物理隔离表示下一级存储与缓存之间存在实际的物理隔离,即它们位于不同的位置或层次结构中,缓存与处理器紧密集成在一起,而下一级存储则位于处理器之外,这种物理隔离意味着从缓存访问下一级存储时需要通过总线进行数据传输。
具体地,为了获取存储在下一级存储中的目标数据,需要通过总线进行访问。由于下一级存储与缓存物理上隔离,所以在从下一级存储获取数据时,需要经过总线进行数据传输,将目标数据从下一级存储传送到处理器或缓存中,以供后续的处理和使用。
可见,实施该可选的实施例,可以提供从下一级存储中获取目标数据的具体实施方式,可以有利于达成目标数据的读取目标。
可见,实施图3所示的指令处理方法,可以当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据,如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。一方面,可以避免缓存中无目标数据时访问下一级存储,访问下一级存储需要消耗较多时间,容易导致加载指令的处理效率较低,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。另一方面,可以保障加载指令执行深度和包含加载指令的主流水线中的分叉到指令提交的深度的一致性,更大程度地提升指令处理频率。
请参阅图4,图4为本申请又一个实施例提供的指令处理方法的流程图。如图4所示,包括步骤401-步骤406。
步骤401、从主流水线中确定待处理的加载指令;其中,主流水线中的分叉到指令提交的深度和加载指令的执行深度一致。
在本申请实施例中,主流水线(Main Pipeline,主pipe)是指计算机处理器中的主要指令执行流程,主流水线是处理器中的关键组件,负责执行指令并驱动计算机的操作。主流水线是按照指令流水线的概念构建的,指令流水线是将指令的执行分解为多个步骤,并且这些步骤可以并行地执行不同的指令。每个步骤被称为一个流水线阶段(PipelineStage),每个阶段专门负责执行特定的操作,如指令获取、译码、执行、访存和写回等。其中,需要说明的是,主流水线能够同时执行多条指令,并实现指令级并行,这意味着在同一时钟周期内,多个指令可以在不同的阶段同时执行,从而提高处理器的效率和吞吐量。
主流水线的深度,指的是流水线中的阶段数,它是处理器的核心部分,负责执行指令。主流水线的深度与指令的执行速度和频率有关。
可选的,可以先进行取指、译码,以确定加载指令。其中,可选的,还可以计算加载指令的地址,进而可以触发用于执行加载指令的单元;其中,还可以判断加载指令的地址是否合法,如果不合法则执行空洞地址排查操作。
此外,加载指令的执行深度,指的是加载指令在流水线中经过的阶段数,在流水线中,每个阶段需要一定的时间来完成操作。因此,指令的执行深度反映了指令在流水线中所需的时间。
基于此,主流水线中的分叉到指令提交的深度和加载指令的执行深度一致,可以理解为,两者具有相同的阶段数。这可以确保加载指令在流水线中的每个阶段都得到充分利用,避免产生空闲周期。以及,可以充分利用处理器的运行时间,提高处理器的频率(即,每秒钟执行的指令数),从而提高整体的处理能力。
实施步骤401,可以确保流水线中的每个阶段都得到充分利用,避免产生空闲周期,从而充分利用处理器的运行时间,以提高处理器的频率。
步骤402、当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据。
在本申请实施例中,所限定的步骤已在图2中进行详细描述,此处不再赘述。
步骤403、如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
在本申请实施例中,所限定的步骤已在图2中进行详细描述,此处不再赘述。
步骤404、如果不存在对应于加载指令的目标数据,且加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的目标数据。
在本申请实施例中,所限定的步骤已在图3中进行详细描述,此处不再赘述。
步骤405、如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据,基于目标数据对加载指令进行响应。
在本申请实施例中,所限定的步骤已在图3中进行详细描述,此处不再赘述。
步骤406、响应于主流水线中的剩余加载指令,以检测缓存中是否存在对应于剩余加载指令的指定数据;
在本申请实施例中,与步骤201类似地,剩余加载指令可以是主流水线中加载指令之后的指令,剩余加载指令的指定数据也可以是访问地址。
步骤407、如果不存在指定数据,且指定数据未提交,则接收由缓存响应的任意值,并基于任意值结束针对剩余加载指令的执行流程。
在本申请实施例中,如果不存在指定数据,且剩余加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的指定数据。如果存在对应于剩余加载指令的指定数据,则接收由缓存响应的指定数据,基于剩余指定数据对加载指令进行响应。
实施步骤406~407,表明本申请可以基于所限定的技术手段对主流水线中各个指令进行依次处理,从而提升处理器的整体处理频率。
可见,实施图4所示的指令处理方法,可以当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据,如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。一方面,可以避免缓存中无目标数据时访问下一级存储,访问下一级存储需要消耗较多时间,容易导致加载指令的处理效率较低,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。另一方面,可以保障加载指令执行深度和包含加载指令的主流水线中的分叉到指令提交的深度的一致性,更大程度地提升指令处理频率。
请参见图5,本申请一个实施例提供了一种指令处理装置500,包括:缓存检查单元510、任意值返回单元520,其中:
缓存检查单元510,用于当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据;
任意值返回单元520,用于如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。
可见,实施图5所示的指令处理装置,可以当检测到加载指令时,检测缓存中是否存在对应于加载指令的目标数据,如果不存在对应于加载指令的目标数据,且加载指令未提交,则接收由缓存响应的任意值,并基于任意值结束针对加载指令的执行流程。一方面,可以避免缓存中无目标数据时访问下一级存储,访问下一级存储需要消耗较多时间,容易导致加载指令的处理效率较低,在缓存中无目标数据且加载指令未提交时,直接接收缓存响应的任意值,可以节约访问时间,提升对于加载指令的处理效率。另一方面,可以保障加载指令执行深度和包含加载指令的主流水线中的分叉到指令提交的深度的一致性,更大程度地提升指令处理频率。
在本申请一个可选的实施例中,还包括:
外部访问单元,用于如果不存在对应于加载指令的目标数据,且加载指令已提交,则访问下一级存储,以获取由下一级存储所存储的目标数据。
可见,实施该可选的实施例,可以实现对于不存在对应于加载指令的目标数据,且加载指令已提交的情况的兜底,使得不论面对提交与否的结果以及缓存中包含目标数据与否的结果时,均可以对加载指令进行及时的处理。
在本申请一个可选的实施例中,外部访问单元访问下一级存储,以获取由下一级存储所存储的目标数据,包括:
通过总线访问与缓存存在物理隔离的下一级存储,以获取由下一级存储所存储的目标数据。
可见,实施该可选的实施例,可以提供从下一级存储中获取目标数据的具体实施方式,可以有利于达成目标数据的读取目标。
在本申请一个可选的实施例中,还包括:
目标数据接收单元,用于如果存在对应于加载指令的目标数据,则接收由缓存响应的目标数据;
加载指令响应单元,用于基于目标数据对加载指令进行响应。
可见,实施该可选的实施例,可以实现提交周期与缓存处理的同拍完成,有利于在指令执行效率不变的情况下,最大程度提升频率。
在本申请一个可选的实施例中,还包括:
加载指令确定单元,用于从主流水线中确定待处理的加载指令;其中,主流水线中的分叉到指令提交的深度和加载指令的执行深度一致。
可见,实施该可选的实施例,可以确保流水线中的每个阶段都得到充分利用,避免产生空闲周期,从而充分利用处理器的运行时间,以提高处理器的频率。
在本申请一个可选的实施例中,其中:
缓存检查单元510,还用于响应于主流水线中的剩余加载指令,以检测缓存中是否存在对应于剩余加载指令的指定数据;
任意值返回单元520,还用于如果不存在指定数据,且指定数据未提交,则接收由缓存响应的任意值,并基于任意值结束针对剩余加载指令的执行流程。
可见,实施该可选的实施例,表明本申请可以基于所限定的技术手段对主流水线中各个指令进行依次处理,从而提升处理器的整体处理频率。
关于上述各装置的具体限定可以参见上文中对于指令处理方法的限定,在此不再赘述。上述各装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备的内部结构图可以如图1所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现如上的一种指令处理方法,包括:包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现如上一种指令处理方法中的任一步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时可以实现如上指令处理方法中的任一步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种指令处理方法,其特征在于,包括:
从主流水线中确定待处理的加载指令;其中,所述主流水线中的分叉到指令提交的深度和所述加载指令的执行深度一致;
当检测到所述加载指令时,检测缓存中是否存在对应于所述加载指令的目标数据;
如果不存在对应于所述加载指令的目标数据,且所述加载指令未提交,则接收由所述缓存响应的任意值,并基于所述任意值结束针对所述加载指令的执行流程;
响应于所述主流水线中的剩余加载指令,以检测所述缓存中是否存在对应于所述剩余加载指令的指定数据;
如果不存在所述指定数据,且所述指定数据未提交,则接收由所述缓存响应的任意值,并基于所述任意值结束针对所述剩余加载指令的执行流程。
2.根据权利要求1所述的指令处理方法,其特征在于,还包括:
如果不存在对应于所述加载指令的目标数据,且所述加载指令已提交,则访问下一级存储,以获取由所述下一级存储所存储的所述目标数据。
3.根据权利要求2所述的指令处理方法,其特征在于,访问下一级存储,以获取由所述下一级存储所存储的所述目标数据,包括:
通过总线访问与所述缓存存在物理隔离的下一级存储,以获取由所述下一级存储所存储的所述目标数据。
4.根据权利要求1所述的指令处理方法,其特征在于,还包括:
如果存在对应于所述加载指令的目标数据,则接收由所述缓存响应的所述目标数据;
基于所述目标数据对所述加载指令进行响应。
5.一种指令处理装置,其特征在于,包括:
缓存检查单元,用于从主流水线中确定待处理的加载指令;其中,所述主流水线中的分叉到指令提交的深度和所述加载指令的执行深度一致;当检测到所述加载指令时,检测所述缓存中是否存在对应于所述加载指令的目标数据;
任意值返回单元,用于如果不存在对应于所述加载指令的目标数据,且所述加载指令未提交,则接收由所述缓存响应的任意值,并基于所述任意值结束针对所述加载指令的执行流程;响应于所述主流水线中的剩余加载指令,以检测所述缓存中是否存在对应于所述剩余加载指令的指定数据;如果不存在所述指定数据,且所述指定数据未提交,则接收由所述缓存响应的任意值,并基于所述任意值结束针对所述剩余加载指令的执行流程。
6.根据权利要求5所述的指令处理装置,其特征在于,还包括:
外部访问单元,用于如果不存在对应于所述加载指令的目标数据,且所述加载指令已提交,则访问下一级存储,以获取由所述下一级存储所存储的所述目标数据。
7.一种计算机设备,包括:存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311549751.4A CN117270972B (zh) | 2023-11-21 | 2023-11-21 | 指令处理方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311549751.4A CN117270972B (zh) | 2023-11-21 | 2023-11-21 | 指令处理方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117270972A CN117270972A (zh) | 2023-12-22 |
CN117270972B true CN117270972B (zh) | 2024-03-15 |
Family
ID=89202891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311549751.4A Active CN117270972B (zh) | 2023-11-21 | 2023-11-21 | 指令处理方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117270972B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732433A (zh) * | 2001-06-28 | 2006-02-08 | 英特尔公司 | 能够隐式地多线程执行单线程程序的多线程处理器 |
CN101017430A (zh) * | 2006-02-09 | 2007-08-15 | 国际商业机器公司 | D缓存缺失预测和调度的方法和装置 |
CN101025681A (zh) * | 2006-02-09 | 2007-08-29 | 国际商业机器公司 | 最小化未调度d缓存缺失流水线停顿的方法和装置 |
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN114217859A (zh) * | 2021-11-16 | 2022-03-22 | 广东赛昉科技有限公司 | 一种乱序提交指令的装置及其方法 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230177B2 (en) * | 2009-05-28 | 2012-07-24 | Oracle America, Inc. | Store prefetching via store queue lookahead |
-
2023
- 2023-11-21 CN CN202311549751.4A patent/CN117270972B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1732433A (zh) * | 2001-06-28 | 2006-02-08 | 英特尔公司 | 能够隐式地多线程执行单线程程序的多线程处理器 |
CN101017430A (zh) * | 2006-02-09 | 2007-08-15 | 国际商业机器公司 | D缓存缺失预测和调度的方法和装置 |
CN101025681A (zh) * | 2006-02-09 | 2007-08-29 | 国际商业机器公司 | 最小化未调度d缓存缺失流水线停顿的方法和装置 |
CN108427576A (zh) * | 2018-02-12 | 2018-08-21 | 华夏芯(北京)通用处理器技术有限公司 | 一种免受Spectre攻击的高性能推测执行算法 |
CN114217859A (zh) * | 2021-11-16 | 2022-03-22 | 广东赛昉科技有限公司 | 一种乱序提交指令的装置及其方法 |
CN116909943A (zh) * | 2023-09-08 | 2023-10-20 | 飞腾信息技术有限公司 | 一种缓存访问方法、装置、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
提升处理器指针追逐访存性能的指令标签辅助的数据预取机制;刘天义;肖俊华;章隆兵;沈海华;;高技术通讯(第Z2期);36-44 * |
Also Published As
Publication number | Publication date |
---|---|
CN117270972A (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
US6088789A (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
TWI514275B (zh) | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 | |
US20080082755A1 (en) | Administering An Access Conflict In A Computer Memory Cache | |
JP2007515715A (ja) | 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法 | |
US8332590B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
CN104317791A (zh) | 汇聚和散布多个数据元素 | |
US8601240B2 (en) | Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution | |
US9940139B2 (en) | Split-level history buffer in a computer processing unit | |
US20130254486A1 (en) | Speculative cache modification | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
US20100269118A1 (en) | Speculative popcount data creation | |
CN115640047B (zh) | 指令操作方法及装置、电子装置及存储介质 | |
US11321097B2 (en) | Super-thread processor | |
CN101156135A (zh) | 用于管理返回堆栈的方法和设备 | |
WO2021036173A1 (zh) | 解释执行字节码指令流的方法及装置 | |
US11507379B2 (en) | Managing load and store instructions for memory barrier handling | |
CN117270972B (zh) | 指令处理方法、装置、设备和介质 | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
US10261909B2 (en) | Speculative cache modification | |
US20220229662A1 (en) | Super-thread processor | |
US11663130B1 (en) | Cache replacement mechanisms for speculative execution | |
US20200019405A1 (en) | Multiple Level History Buffer for Transaction Memory Support | |
KR20220086590A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |