CN114924797A - 预取指令的方法、信息处理装置、设备及存储介质 - Google Patents
预取指令的方法、信息处理装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114924797A CN114924797A CN202210570597.8A CN202210570597A CN114924797A CN 114924797 A CN114924797 A CN 114924797A CN 202210570597 A CN202210570597 A CN 202210570597A CN 114924797 A CN114924797 A CN 114924797A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- prefetch
- unit
- prefetched
- 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 40
- 230000010365 information processing Effects 0.000 title claims abstract description 10
- 238000012545 processing Methods 0.000 claims description 38
- 238000013519 translation Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 24
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- HOZCHTFDGMSKNK-UHFFFAOYSA-N 6-methylspiro[4.5]dec-9-ene-10-carboxylic acid Chemical compound CC1CCC=C(C(O)=O)C11CCCC1 HOZCHTFDGMSKNK-UHFFFAOYSA-N 0.000 description 2
- 101100182935 Penicillium citrinum MSDC gene Proteins 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 101150015860 MC1R gene Proteins 0.000 description 1
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本公开的各个方面涉及一种预取指令的方法、信息处理装置、设备以及存储介质。本公开的各个方面中预取指令的方法,包括:接收第一指令;对第一指令进行译码,确定第一指令为预取指令,并获取第一指令中的预取地址信息;基于预取地址信息,对预取地址进行预取操作。
Description
技术领域
本公开涉及一种预取指令方法以及信息处理装置。
背景技术
在相关的中央处理单元(central processing unit,CPU)架构中,程序指令与数据可以保存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)中。
发明内容
本公开的实施例提供了一种实现在计算机中的预取指令的方法和信息处理装置,以解决现有技术中处理器在调取指令时因缓存未命中而导致的流水线时延增加的问题。
本公开的至少一个方面提供了一种预取指令的方法,包括:接收第一指令;对所述第一指令进行译码,确定所述第一指令为预取指令,并获取所述第一指令中的预取地址信息;基于所述预取地址信息,对预取地址进行预取操作。
在一个实施例中,该方法还包括:响应于所述第一指令为预取指令,在退休单元中标记所述第一指令已执行完成。
在一个实施例中,所述第一指令包含在第一指令组中,所述方法还包括:所述第一指令插入在所述第一指令组中的位置基于所述第一指令组的大小和第一级缓存存储器的容量之间的关系确定。
在一个实施例中,所述第一指令包含在第一指令组中,所述方法还包括:所述第一指令插入在所述第一指令组中的任意位置。
在一个实施例中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在所述第一指令组执行完毕之前,将所述预取地址预取到第一级缓存存储器中。
在一个实施例中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在所述第一指令组执行完毕之后,将所述预取地址预取到第一级缓存存储器中。
在一个实施例中,所述预取地址信息是所预取的指令的绝对地址或指示所述所预取的指令的绝对地址的相对地址。
在一个实施例中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:基于所述预取地址信息获取所预取的指令的虚拟地址,并将所述虚拟地址发送到指令快表单元,其中:响应于所述预取地址信息是所述所预取的指令的绝对地址,将所述绝对地址作为所述所预取的指令的虚拟地址发送到所述指令快表单元;或响应于所述预取地址信息是指示所述所预取的指令的绝对地址的相对地址,将所述预取指令的虚拟地址与所述相对地址相加以得到所预取的指令的虚拟地址,并将所述所预取的指令的虚拟地址发送到所述指令快表单元。
在一个实施例中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在将所述所预取的指令的虚拟地址发送到指令快表单元之后,将所述所预取的指令的虚拟地址转换为物理地址,并将所述物理地址发送到第一级缓存存储器,其中:响应于所述所预取的指令的虚拟地址存在于所述指令快表单元中,获取与所述所预取的指令的虚拟地址对应的物理地址;响应于所述所预取的指令的虚拟地址不存在于所述指令快表单元中,向快表地址缺失状态跟踪寄存器发送地址转换请求,基于所述地址转换请求向页表单元获取与所述所预取的指令的虚拟地址对应的所述物理地址,并将获取的所述物理地址返回所述指令快表单元;以及响应于所述所预取的指令的虚拟地址不存在于所述页表单元中,结束所述预取操作。
在一个实施例中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:确定所述物理地址所对应的指令数据是否在第一级缓存存储器中,其中:响应于所述物理地址所对应的指令数据在所述第一级缓存存储器中,结束所述预取操作;响应于所述物理地址所对应的指令数据不在所述第一级缓存存储器中,经由指令地址缺失状态跟踪寄存器向下级缓存存储器或内存获取所述物理地址所对应的指令数据,并将所预取的指令数据返回到所述第一级缓存存储器中,结束所述预取操作。
本公开的至少一个方面还提供了一种信息处理装置,包括:缓存存储器单元,被配置为接收第一指令;译码单元,被配置为对所述第一指令进行译码;分发单元,被配置为确定所述第一指令为预取指令,将所述预取指令发送到预取处理单元;以及预取处理单元,被配置为获取所述第一指令中的预取地址信息,基于所述预取地址信息,对预取地址进行预取操作。
在一个实施例中,该装置还包括:退休单元,被配置为响应于所述第一指令为预取指令,在退休单元中标记所述第一指令已执行完成。
在一个实施例中,所述缓存存储器单元还包括第一级缓存存储器,其中,所述第一指令包含在第一指令组中,并且所述第一指令插入在所述第一指令组中的位置基于所述第一指令组的大小和第一级缓存存储器的容量之间的关系确定。
在一个实施例中,所述第一指令包含在第一指令组中,并且所述第一指令插入在所述第一指令组中的任意位置。
在一个实施例中,该装置还包括执行单元,并且所述预取处理单元还被配置为在所述执行单元将所述第一指令组执行完毕之前,将所述预取地址预取到第一级缓存存储器中。
在一个实施例中,该装置还包括执行单元,并且所述预取处理单元还被配置为在所述执行单元将所述第一指令组执行完毕之后,将所述预取地址预取到第一级缓存存储器中。
在一个实施例中,其中,所述预取地址信息是所预取的指令的绝对地址或指示所述所预取的指令的绝对地址的相对地址。
在一个实施例中,该装置还包括地址翻译单元,所述地址翻译单元包括指令快表单元,并且所述预取处理单元还被配置为基于所述预取地址信息获取所预取的指令的虚拟地址,并将所述虚拟地址发送到所述指令快表单元,其中:响应于所述预取地址信息是所述所预取的指令的绝对地址,将所述绝对地址作为所述所预取的指令的虚拟地址发送到所述指令快表单元;或响应于所述预取地址信息是指示所述所预取的指令的绝对地址的相对地址,将所述预取指令的虚拟地址与所述相对地址相加以得到所预取的指令的虚拟地址,并将所述所预取的指令的虚拟地址发送到所述指令快表单元。
在一个实施例中,所述地址翻译单元还包括快表地址缺失状态跟踪寄存器,并且所述指令快表单元被配置为将所述所预取的指令的虚拟地址转换为物理地址,并将所述物理地址发送到第一级缓存存储器,其中:响应于所述所预取的指令的虚拟地址存在于所述指令快表单元中,获取与所述所预取的指令的虚拟地址对应的物理地址;响应于所述所预取的指令的虚拟地址不存在于所述指令快表单元中,向快表地址缺失状态跟踪寄存器发送地址转换请求,基于所述地址转换请求向页表单元获取与所述所预取的指令的虚拟地址对应的所述物理地址,并将获取的所述物理地址返回所述指令快表单元;以及响应于所述所预取的指令的虚拟地址不存在于所述页表单元中,结束所述预取操作。
在一个实施例中,所述缓存存储器单元还包括指令地址缺失状态跟踪寄存器,并且所述缓存存储器单元还被配置为确定所述物理地址所对应的指令数据是否在第一级缓存存储器中,其中:响应于所述物理地址所对应的指令数据在所述第一级缓存存储器中,结束所述预取操作;响应于所述物理地址所对应的指令数据不在所述第一级缓存存储器中,经由指令地址缺失状态跟踪寄存器向下级缓存存储器或内存获取所述物理地址所对应的指令数据,并将所预取的指令数据返回到所述第一级缓存存储器中,结束所述预取操作。
本公开的至少一个方面还提供了一种设备,包括处理器和其上具有指令的非瞬态存储器,其中,当由所述处理器执行所述指令时,使所述处理器实现任一项上述方法。
本公开的至少一个方面还提供了一种计算机可读储存介质,其中储存有计算机可读指令,所述计算机可读指令包含用于执行任一项上述方法的程序代码。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1是示出了一种处理器架构的示意图;
图2是示出图1的处理器架构读取并执行指令数据的流程图;
图3是根据本公开至少一个实施例提供的处理器架构的示意图;
图4是根据本公开至少一个实施例提供的对于指令进行预取操作的流程图;
图5是根据本公开至少一个实施例提供的预取方法的进一步操作示例的流程图;
图6是根据本公开的至少一个实施例提供的一种信息处理装置的示意图;
图7是根据本公开的至少一个实施例提供的设备的示意图;
图8是根据本公开的至少一个实施例提供的计算机可读存储介质的示意图
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其它实施例,都属于本公开保护的范围。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。同样,″包括″或者″包含″等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其它元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。″上″、″下″、″左″、″右″等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
本公开的至少一个实施例可能涉及的术语的解释如下。
关于指令预取介绍如下。CPU架构中,程序指令保存在内存(例如,DRAM)中。CPU核运行频率远远高于内存运行频率,因此,从内存获取指令需要上百个CPU核时钟周期,往往会造成CPU核由于无法继续运行相关指令而空转,造成性能损失。鉴于此,高性能处理器都使用包含多级缓存存储器的架构来保存最近被访问的数据,并且在程序取指令之前提前将程序所需要的指令代码预取到缓存存储器中,从而提升处理器的执行效率。
关于地址翻译的介绍如下。操作系统往往同时支持多个进程同时运行。为了简化多进程管理与增强安全性,应用程序使用的是一片完整的虚拟地址,比如32比特寻址的应用程序最多有232=4GB的虚拟地址空间可供使用。当程序被运行时,这些虚拟地址会被映射为多个内存页面,每一个页面有自己的物理存储地址。应用程序访问指令和数据时,必须先将指令和数据的虚拟地址翻译为物理地址,并检测应用程序对该页面的访问是否合法,然后去者缓存存储器或内存中获得相应数据传递给CPU核。从虚拟地址到物理地址的转换过程称为地址翻译。
关于快表单元(Table Lookaside Buffer,TLB)的介绍如下。虚拟地址到物理地址的映射关系存储在内存的页表中,访问这些内存中的页表同样可能需要上百个时钟。为了减少这些内存访问,CPU核内部使用多级缓存来保存最近被使用的映射,这些改进虚拟地址到物理地址转换速度的缓存被称为快表单元。
关于地址缺失状态跟踪寄存器(Missing Status Handling Register)的介绍如下。当一个读写请求、预取请求或映射关系请求不在某一个缓存中,而需要向下一级储存单元读取时,该请求及其相应属性被保存在地址缺失状态跟踪寄存器里,直到下一级缓存返回该请求的数据,如此可以不阻碍缓存中后续的流水线处理。
图1是示出了一种处理器架构的示意图。如图1所示,处理器架构100包括分支预测器(BP)101、指令快表单元(ITLB)102、页表单元(TWC)1021、第一级指令缓存存储器(IC)103、指令地址缺失状态跟踪寄存器(IMSHR)1031、第二级缓存存储器(L2C)1032、第三级缓存存储器(L3C)1033、内存(MEM)1034、译码单元(DE)104、分发单元(DI)105、执行单元(EX)106、访存单元(LS)107、退休单元(RT)108、数据存储器(DC)109、数据地址缺失状态跟踪寄存器(DC MSHR)1091。
图2是示出图1的处理器架构读取并执行指令数据的流程图。以下将参考图1和图2说明处理器读取并执行指令数据的流程示例。在一个实施例中,流程可以包括以下步骤S01-步骤S06。
步骤S01:分支预测器101将目标指令组的虚拟地址发送到指令快表单元102。
在一个实施例中,目标指令组可以包括多个指令,分支预测器101可以将多个指令的每一个的预测的虚拟地址按顺序输入到指令快表单元102。
步骤S02:指令快表单元102将所接收到的指令的虚拟地址翻译为对应的物理地址。
在一个实施例中,如果在指令快表单元102中未找到与该虚拟地址相对应的物理地址(即,ITLB未命中(miss)),则指令快表单元102会将该虚拟地址发送到页表单元1021,然后经页表单元1021翻译得到相应的物理地址,并将该物理地址返回到指令快表单元102。
步骤S03:指令快表单元102将翻译得到的物理地址发送到第一级指令缓存存储器103中,并且第一级指令缓存存储器103基于该物理地址确定对应的指令数据是否存在于该第一级指令缓存存储器103中。
在一个实施例中,如果指令数据已存在于第一级指令缓存存储器103中(即,指令缓存命中(IC Hit)),则从该第一级指令缓存存储器103获取物理地址处所对应的指令数据。
在另一个实施例中,如果该第一级指令缓存存储器103中不存在该指令数据时(即,指令缓存未命中(IC Miss)),则第一级指令缓存存储器103可以向指令地址缺失状态跟踪寄存器1031申请一个存储项,并将该存储项分配给上述缓存未命中的请求。指令地址缺失状态跟踪寄存器1031基于该存储项向下一级的缓存存储器,例如,第二级缓存存储器1032(L2 Cache)请求相应的指令数据。当第二级缓存存储器1032获取所请求的指令数据后,第二级缓存存储器1032将该指令数据经由指令地址缺失状态跟踪寄存器1031返回给第一级指令缓存存储器103。
在另一个实施例中,如果所请求的指令数据不存储在第二级缓存存储器1032中,则第二级缓存存储器1032可以从下一级的存储器获取所请求的指令数据。例如,位于第二级缓存存储器下一级的存储器可以是第三级缓存存储器1033(L3 Cache)、第四级缓存存储器(例如,最后一级缓存存储器,Last Level Cache,未示出)或者内存1034(例如,DRAM)等。在一个实施例中,可以将获取的指令数据经由上述内存或多级缓存存储器返回给第一级指令缓存存储器103。
步骤S04:第一级指令缓存存储器103将如上所获取的指令数据发送到译码单元104以进行译码操作,从而获得对应的指令。
步骤S05:译码单元104将译码后的指令发送到分发单元105,分发单元105基于指令的不同类型将指令发送到后端执行单元106或访存单元107进行执行及存储操作。
在一个实施例中,访存单元107在执行指令时如果无法从数据存储器109获取执行所需要的数据(即,数据未命中),则可以向数据地址缺失状态跟踪寄存器1091申请一个存储项,并将该存储项分配给上述数据未命中的请求。数据地址缺失状态跟踪寄存器1091基于该存储项向下一级的缓存存储器,例如,第二级缓存存储器1032(L2 Cache)请求相应的数据。当第二级缓存存储器1032获取所请求的数据后,第二级缓存存储器1032将该数据经由数据地址缺失状态跟踪寄存器1091返回给数据存储器109。
类似地,如果所请求的数据不存储在第二级缓存存储器1032中,则第二级缓存存储器1032可以从位于第二级缓存存储器之下的多级缓存存储器或者内存1034中获取所请求的指令数据。在一个实施例中,可以将获取的数据经由上述内存或多级缓存存储器返回给数据存储器109以供执行或访存单元执行。
步骤S06:当一条指令在执行完毕后将被发送到退休单元108,退休单元用于将执行完毕的指令退休(retire),即,表示该微指令已经被实际执行完成。
在一个实施例中,如上经过步骤S01-S06操作的目标指令流可以包含如下格式多个指令组及其存储地址(取值地址):实现第一操作(例如函数、循环等)的第一指令组Function0、实现第二操作的第二指令组Function1、实现第三操作的第三指令组Function2...
在一个实施例中,实现第一操作的第一指令组Function0位于地址0x80000开始的位置的存储行中,并且实现第一操作的第一指令组Function0可以包含一个或多个指令,每个指令可以指示不同操作的指令内容,例如运算操作、调取指令操作等。
在一个实施例中,分支预测器101可以将从地址0x80000开始的对应于实现第一操作的第一指令组的虚拟地址发送到指令快表单元102以开始上述步骤S01的处理步骤,直至实现第一操作的第一指令组经过执行后在步骤S06被退休。
例如,在实现第一操作的第一指令组Function0在执行过程中,调用了第二操作,因此将跳转到实现第二操作的第二指令组Function1,即,将从地址0x18000000开始的对应于实现第二操作的第二指令组Function1的虚拟地址发送到指令快表单元102以开始上述步骤S01的处理步骤,直至第二第二指令组Function1经过执行后在步骤S06被退休。
然而,在实现第二操作的第二指令组Function1在执行过程中,调用了第三操作,因此将跳转到实现第三操作的第三指令组Function2,即,将从地址0x700000000开始的对应于第三指令组Function2的虚拟地址发送到指令快表单元102以开始上述步骤S01的处理步骤,直至第三指令组Function2经过执行后在步骤S06被退休。
因此,在上述过程中,第一操作对第二操作调用,而第二操作对第三操作调用,进行了嵌套调用。当低一级的操作完成之后会返回高一级的操作。重复如上的步骤可以执行多条指令。
在如上所述的指令读取示例中,例如,处理器在译码第一指令组Function0中的指令call Function1之前,并不知道该指令所指示的内容。从而,当执行完该指令callFunction1并跳转到第二指令组Function1时,可能的情况是对应于第二指令组Function1的指令数据并不在第一级指令缓存存储器103中,从而发生缓存未命中(IC miss)的情况。这就使得处理器必须从第二级缓存存储器1032或第三级缓存存储器1033甚至是内存1034中去获取数据。然而,在多级缓存存储器架构中,第一级缓存存储器的访问速度最快,但是容量最小,最后一级(例如,第三级)缓存存储器容量最大,但访问速度最慢,第二级缓存存储器的访问速度和容量都介于第一级缓存存储器与最后一级缓存存储器之间。因此,在第一级缓存存储器未命中的情况下,需要等待数据从访问速度较慢的低级存储器(例如,1032、1033)甚至从内存1034获取数据并返回到第一级缓存存储器103中,这可能需要耗费十几个甚至上百个时钟周期,导致处理器的流水线被阻塞,从而影响了处理器的执行效率。
本公开的发明人注意到,为了解决上述问题引起的处理器的性能损失,可以采用处理器在程序取指令之前提前把程序所需要的指令数据预取到第一级缓存存储器中,这可以有效地减少缓存未命中的情况,从而减少CPU核等待数据的时钟周期,提升处理器的整体性能。
本公开的至少一个实施例提供了一种预取指令方法和预取指令的装置。该预取方法至少包括:接收第一指令;对该第一指令进行译码,确定该第一指令为预取指令,并获取所述第一指令中的预取地址信息;基于所述预取地址信息,对预取地址进行预取操作。
例如,本公开的至少一个实施例提供的预取指令方法和预取指令的装置通过软硬件相互配合的方式可以有效地预取将要执行的指令,降低缓存存储器缓存未命中以及快表单元快表缓存未命中的概率,从而提高处理器运行的效率并提升了整体系统的处理性能。
下面通过几个示例和实施例对根据本公开至少一个实施例提供的预取指令方法进行非限制性的说明,如下面所描述的,在不相互抵触的情况下这些具体示例和实施例中不同特征可以相互组合,从而得到新的示例和实施例,这些新的示例和实施例也都属于本公开保护的范围。
根据本公开所提供的指令流的一个示例可以包含顺序执行的实现第四操作(例如函数、循环等)的第四指令组Function3、实现第五操作的第五指令组Function4和实现第六操作的第六指令组Function5等多个指令组,其中,实现第四操作的第四指令组Function3位于地址0x80000开始的位置,实现第五操作的第五指令组Function4位于地址0x18000000开始的位置,实现第六操作的第六指令组Function5位于地址0x700000000开始的位置,如下所示:
在一个实施例中,实现第四操作的第四指令组Function3中可以包含预取指令,该预取指令的格式为:iprefetch mem8。例如,第四指令组Function3中可以包含指示预取第五指令组Function4的地址的预取指令iprefetch 0x18000000。在一个实施例中,预取指令可以包含指令的类型信息以及第五指令组的预取地址信息。在本示例中,预取指令iprefetch mem8中的指令名称iprefetch表示该指令的类型为预取指令,并且参数mem8指示了所预取的指令的预取地址信息。
在一个实施例中,所预取的指令的地址信息可以包含所预取的指令的绝对地址或指示所预取的指令的绝对地址的相对地址。即,参数mem8可以表示绝对地址(预取地址)或指示绝对地址(预取地址)的偏移值。例如,在上述示例中,在实现第四操作的第四指令组Function3中所插入的预取指令iprefetch 0x18000000指示了在第四指令组之后将要执行的第五指令组Function4的绝对地址,即,虚拟地址的起始位置:0x18000000。由此,处理器在开始执行实现第四操作的第四指令组Function3时,即能够获知在第四指令组Function3执行结束之后将要执行的第五指令组的虚拟地址的位置,因此可以将实现第五操作的第五指令组的指令数据提前预取到第一级缓存存储器中,以降低缓存未命中的可能性。
在一个实施例中,参数mem8还可以表示所需要预取的指令的相对地址,例如相对于预取指令的虚拟地址的偏移值。此外,在另一个实施例中,参数mem8还可以表示相对于其他指令的虚拟地址的偏移值。应当理解的是,本公开对于参数mem8的具体格式不作限制,只要能够指示所需要预取的指令的地址位置即可。
在一个实施例中,预取指令iprefetch在实现第四操作的指令组Function3中的位置可以基于实现第四操作的指令组Function3的大小和第一级缓存存储器的容量之间的关系确定。
例如,在以上示出的指令示例中,如果实现第四操作的第四指令组的大小小于第一级缓存存储器的容量,则可以将预取指令iprefetch插入到紧跟在实现第四操作的第四指令组Function3的起始虚拟地址之后的位置,以使得在开始执行实现第四操作的第四指令组时即对实现第五操作的第五指令组开始预取操作,以预留充足的时钟周期来对实现第五操作的第五指令组进行预取操作。
然而,以上示例的预取指令iprefetch的插入位置仅是示例性的,预取指令iprefetch还可以插入到第四指令组中的其他位置。例如,在一个实施例中,如果第四指令组的大小大于第一级缓存存储器的容量,则可以根据预取第五指令组所需要的最大时钟周期来确定预取指令iprefetch所插入的位置,例如,如果从内存预取第五指令组的指令数据并返回到第一级缓存存储器需要200个时钟周期,则可以将预取指令插入到第四指令组Function4中距离最后一条指令之前的200条指令的位置,从而使得在第四指令组执行完毕之前,能够将第五指令组预取到第一级缓存存储器中,同时可以保证处理器不会太早将实现第五操作的第五指令组预取到第一级缓存存储器中,而在后续执行第四指令组的剩余部分时,使得第五指令组对应的指令数据因被替换而被移出第一级缓存存储器。
应当理解的是,以上插入位置仅是示例性的,预取指令可以经由编译器插入在第四指令组中的任何位置,因为即便是在第四指令组执行完毕之后才将第五指令组的指令数据发送到第一级缓存存储器中,由于预取第五指令组的操作已经在调取第五指令组的操作之前进入流水线,因此在实际执行第五指令组时,也将降低从缓存存储器或内存获取第五指令组的指令数据的时延,从而也能够一定程度上能够获得性能的提升。
图3是根据本公开至少一个实施例提供的处理器架构300的示意图。根据本公开的一个实施例提供的处理器架构300适用于处理上述指令结构,从而能够实现指令预取操作以降低缓存未命中所带来的性能损失。
如图3所示,图3的处理器架构300可以包括分支预测器(BP)301、指令快表单元(ITLB)302、页表单元(TWC)3021、快表地址缺失状态跟踪寄存器(ITLB MSHR)3022、第一级指令缓存存储器(IC)303、指令地址缺失状态跟踪寄存器(IMSHR)3031、第二级缓存存储器(L2C)3032、第三级缓存存储器(L3C)3033、内存(MEM)3034、译码单元(DE)304、分发单元(DI)305、执行单元(EX)306、访存单元(LS)307、退休单元(RT)308、数据存储器(DC)309、数据地址缺失状态跟踪寄存器(DC MSHR)3091、预取处理单元(PREF)310。
图4是根据本公开至少一个实施例提供的对于指令进行预取操作的流程图,以下将参考图3和图4来说明根据本公开的至少一个实施例提供的预取操作。
参考图4,预取操作可以包括以下的步骤S11-步骤S16。
步骤S11:分支预测器301将目标指令组的虚拟地址发送到指令快表单元302。
例如,在一个实施例中,分支预测器301可以顺序地将实现第四操作的第四指令组、实现第五操作的第五指令组和实现第六操作的第六指令组发送到指令快表单元302。在一个实施例中,第四指令组、第五指令组和第六指令组中的每一个可以包括一个或多个指令,例如,可以包括预取指令、运算指令、调用指令或其它指令等多个指令。在以下的示例中,将以实现第四操作的第四指令组Function3作为目标指令组来说明预取操作的流程。
在一个实施例中,分支预测器301可以将第四指令组Function3的从0x80000起始的多个指令的虚拟地址按顺序发送到指令快表单元302。
步骤S12:指令快表单元302可以将上述多个指令的虚拟地址翻译为相对应的物理地址。
在一个实施例中,第四指令组Function3可以包括预取指令iprefetch0x18000000、调用指令call Function4以及二者之间的诸如运算指令的其它多个指令。指令快表单元302可以按顺序将上述第四指令组Function3的多个指令的虚拟地址分别翻译为对应的物理地址。
例如,在一个实施例中,如果所请求的虚拟地址在指令快表单元302中,即快表缓存命中(ITLB hit),则指令快表单元302可以将第四指令组的多个指令的虚拟地址通过快表单元翻译为物理地址,并将物理地址发送到第一级缓存存储器303。
例如,在另一个实施例中,如果所请求的虚拟地址不在指令快表单元302中,即快表缓存未命中(ITLB miss),则指令快表单元302向快表地址缺失状态跟踪寄存器3022申请一个存储项,并将该存储项分配给上述地址转换请求。快表地址缺失状态跟踪寄存器3022可以将该地址转换请求发送给页表单元3021以进行地址转换。由于该地址转换请求被缓存在快表地址缺失状态跟踪寄存器3022中,因此不会妨碍指令快表单元302处理后续的指令,由此可以避免处理流水线因阻塞而出现的时延。
步骤S13:指令快表单元302将翻译得到的物理地址发送到第一级指令缓存存储器303中,并且第一级指令缓存存储器303确定对应于该物理地址的指令数据是否存在于该第一级指令缓存存储器303中。例如,如果所请求的指令数据存在于第一级缓存存储器303中,则从第一级缓存存储器303在直接获取物理地址处所对应的指令数据。在另一个实施例中,如果所请求的指令数据不存在于第一级缓存存储器303中,则从下级存储器(例如,第二级缓存存储器3032、第三级缓存存储器3033或内存3034)获取物理地址处所对应的指令数据,并返回给第一级指令缓存存储器303。
步骤S14:第一级指令缓存存储器将如上所获取的物理地址处所对应的指令数据发送到译码单元304以进行译码操作,以获得对应的指令。
步骤S15:分发单元305判断指令的类型,并根据不同的指令类型决定将指令发往后端执行单元306还是预取处理单元310。
在一个实施例中,指令的类型可以包括第一类型的指令以及第二类型的指令。其中,第一类型的指令可以是预取指令,并且第二类型的指令可以是其它指令,例如调用指令或运算指令等。
在一个实施例中,响应于判断指令的类型为第一类型的指令,例如分发单元305判断第四指令组中的指令的类型为预取指令,则流程进行到步骤S16,即分发单元305将该预取指令发往预取处理单元310以进行预取操作。以下将结合图5进一步描述步骤S16中的预取操作。
在一个实施例中,响应于判断指令的类型为第二指令类型,例如分发单元305判断第四指令组中的指令的类型为运算指令或其它指令,则流程进行到步骤S17,即分发单元305将该指令发往执行单元306或访存单元307以用于执行及存储。在步骤S17中,当指令的类型为访存指令时,如果所请求的数据没有存储在数据存储器309中,则数据存储器309将经由数据地址缺失状态跟踪寄存器3091向第二级缓存存储器3032、第三级缓存存储器3033或内存3034请求数据并返回到数据存储器309中。
步骤S18:当分发单元305判断指令的类型为第一类型的指令,即预取指令时,将直接在退休单元308中标记该预取指令已执行完成。使得该预取指令不会进入执行单元以发生执行错误。此外,当运算指令等其它指令在执行完毕后也将被发送到退休单元308,以标记该指令已经被实际执行完成。
图5是根据本公开至少一个实施例提供的预取方法的进一步操作示例的流程图。图5示出了图4中步骤S16中进行指令预取操作的进一步操作示例,如图5所示,该预取操作可以包括如下步骤S21~S25:
步骤S21:预取处理单元310基于预取指令获取所预取的指令预取地址信息,例如,虚拟地址,并将所获取的虚拟地址发送到指令快表单元302。
在一个实施例中,预取处理单元310可以首先获取预取指令iprefetch中的参数mem8。例如,在一个实施例中,当参数mem8指示所需要预取的指令的绝对地址时,则预取处理单元310可以将参数mem8中的绝对地址作为虚拟地址直接发送到指令快表单元302。
在另一个实施例中,当参数mem8指示所需要预取的指令的相对地址时,例如,参数mem8可以是指示相对于预取指令的虚拟地址的偏移值,则预取处理单元310可以将预取指令的虚拟地址(例如,iprefetch指令的虚拟地址)与参数mem8的值进行加法操作,以计算新的虚拟地址,并将该计算得到的虚拟地址发送到指令快表单元302。
在另一个实施例中,当参数mem8也可以是指示相对于其它指令的虚拟地址的偏移值,则此时可以将该指令的虚拟地址与参数mem8的值进行加法操作,以计算新的虚拟地址。应当理解的是,本领域技术人员可以对该相对地址的偏移值进行相应的其他变换或调整,而不限于上述示例。
步骤S22:指令快表单元302基于新生成的虚拟地址来生成对于指令快表的访问请求,以获取相应的物理地址,并将物理地址发送到第一级缓存存储器303。
例如,在一个实施例中,如果所请求的虚拟地址在指令快表单元302中,即快表缓存命中,则指令快表单元302可以将新生成的虚拟地址通过快表单元中储存的映射关系翻译为物理地址,并将物理地址发送到第一级缓存存储器303。
例如,在一个实施例中,如果所请求的虚拟地址不在指令快表单元302中,即快表缓存未命中,则指令快表单元302向快表地址缺失状态跟踪寄存器3022申请一个存储项,并将该存储项分配给上述地址转换请求。快表地址缺失状态跟踪寄存器3022可以将该地址转换请求发送给页表单元3021以进行地址转换。由于该地址转换请求被缓存在快表地址缺失状态跟踪寄存器3022中,因此不会妨碍指令快表单元302处理后续的指令,由此可以避免处理流水线因阻塞而出现的时延。
在一个实施例中,如果页表单元3021能够将该虚拟地址翻译得到物理地址,则其将该地址转换结果返回给快表地址缺失状态跟踪寄存器3022,并且快表地址缺失状态跟踪寄存器3022将在第一级缓存存储器303不进行操作时将该物理地址发送到第一级缓存存储器303。
在另一个实施例中,如果页表单元3021基于该虚拟地址无法获得物理地址,例如产生转换错误(fault),则将该错误报告给快表地址缺失状态跟踪寄存器3022,同时放弃预取请求。
步骤S23:第一级缓存存储器303基于该物理地址查看该物理地址所对应的指令数据是否在第一级缓存存储器303中。
在一个实施例中,如果该物理地址所对应的指令数据已经在第一级缓存存储器303中(即,缓存命中),则说明应用程序未来需要的代码已经存在第一级缓存存储器303,指令预取的请求处理完成,流程进行到步骤S25;如果该物理地址所对应的指令数据不在第一级缓存存储器303中(即,缓存未命中),则流程进行到步骤S24。
步骤S24:如果该第一级指令缓存存储器303中不存在该指令数据时,则第一级指令缓存存储器303向指令地址缺失状态跟踪寄存器3031申请一个存储项,并将该存储项分配给上述缓存未命中的请求。指令地址缺失状态跟踪寄存器3031基于该存储项向下一级的缓存存储器,例如,第二级缓存存储器3032请求相应的指令数据。第二级缓存存储器3032获取所请求的指令数据,并将该指令数据经由指令地址缺失状态跟踪寄存器3031返回给第一级指令缓存存储器303,指令预取的请求处理完成,流程进行到步骤S25。
在一个实施例中,如果所请求的指令数据不存储在第二级缓存存储器3032中,则第二级缓存存储器3032可以从位于第二级缓存存储器下一级的存储器获取所请求的指令数据。例如,位于第二级缓存存储器下一级的存储器可以是第三级缓存存储器3033或者内存3034等。在一个实施例中,可以将获取的指令数据经由上述内存或多级缓存存储器而返回给第一级指令缓存存储器303,指令预取的请求处理完成,流程进行到步骤S25。
步骤S25:预取请求处理完成。
如上进行的预取操作可以例如在执行实现第四操作的第四指令组时,将第四指令组之后将调取的第五指令组的地址提前预取到处理器的缓存存储器中,从而在执行第五指令组时降低缓存存储器未命中的概率,进而提升处理器的执行效率。
图6是根据本公开的至少一个实施例提供的一种信息处理装置的示意图。
如图6所示,信息处理装置600至少可以包括地址翻译单元601、缓存存储器单元602、译码单元603、分发单元604、预取处理单元605、执行单元606以及退休单元607。其中,缓存存储器单元还可以包括第一级缓存存储器、指令地址缺失状态跟踪寄存器和第二级缓存存储器。此外,地址翻译单元601还可以包括指令快表单元和快表地址缺失状态跟踪寄存器。例如,处理装置600可以是单核的中央处理器或者多核的中央处理器的某一处理核(CPUcore),本公开的实施例对此不作限制。
在一个实施例中,地址翻译单元601用于将所接收的第一指令的虚拟地址翻译为物理地址;缓存存储器单元602用于接收第一指令的物理地址;译码单元603用于对第一指令进行译码;分发单元604用于判断经译码的第一指令是否为预取指令,并且当确定第一指令为预取指令时,将预取指令发送到预取处理单元605;以及预取处理单元605用于获取第一指令中的预取地址信息,并基于预取地址信息,对预取地址进行预取操作;执行单元606用于执行相应的第一指令或第二指令;退休单元607用于将执行完毕的指令退休(retire),即,表示该指令已经被实际执行完成。
图7是根据本公开的至少一个实施例提供的设备的示意图。如图7所示,设备700包含处理器702和非瞬态存储器703。其中,在该非瞬态存储器703上存储有指令701。在一个实施例中,当处理器702执行指令701时,可以实现根据上文所述的预取指令的方法中的一个或多个步骤。
图8是根据本公开的至少一个实施例提供的计算机可读存储介质的示意图。如图8所示,计算机可读存储介质800非暂时性地存储有计算机可读指令801。例如,当计算机可读指令801由计算机执行时可以执行根据上文所述的预取指令的方法中的一个或多个步骤。
例如,该计算机可读存储介质800可以应用于上述用于设备700中。例如,计算机可读存储介质800可以为图7所示的设备700中的非瞬态存储器703。
以上所述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此所述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行所述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的一个或多个微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
Claims (22)
1.一种预取指令的方法,包括:
接收第一指令;
对所述第一指令进行译码,确定所述第一指令为预取指令,并获取所述第一指令中的预取地址信息;
基于所述预取地址信息,对预取地址进行预取操作。
2.如权利要求1所述的方法,还包括:响应于所述第一指令为预取指令,在退休单元中标记所述第一指令已执行完成。
3.如权利要求1所述的方法,其中,所述第一指令包含在第一指令组中,所述方法还包括:所述第一指令插入在所述第一指令组中的位置基于所述第一指令组的大小和第一级缓存存储器的容量之间的关系确定。
4.如权利要求1所述的方法,其中,所述第一指令包含在第一指令组中,所述方法还包括:所述第一指令插入在所述第一指令组中的任意位置。
5.如权利要求3或4中所述的方法,其中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在所述第一指令组执行完毕之前,将所述预取地址预取到第一级缓存存储器中。
6.如权利要求3或4中所述的方法,其中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在所述第一指令组执行完毕之后,将所述预取地址预取到第一级缓存存储器中。
7.如权利要求1所述的方法,其中,所述预取地址信息是所预取的指令的绝对地址或指示所述所预取的指令的绝对地址的相对地址。
8.如权利要求7所述的方法,其中,基于所述预取地址信息,对所述预取地址进行预取操作还包括:基于所述预取地址信息获取所预取的指令的虚拟地址,并将所述虚拟地址发送到指令快表单元,其中:
响应于所述预取地址信息是所述所预取的指令的绝对地址,将所述绝对地址作为所述所预取的指令的虚拟地址发送到所述指令快表单元;或
响应于所述预取地址信息是指示所述所预取的指令的绝对地址的相对地址,将所述预取指令的虚拟地址与所述相对地址相加以得到所预取的指令的虚拟地址,并将所述所预取的指令的虚拟地址发送到所述指令快表单元。
9.如权利要求8所述的方法,基于所述预取地址信息,对所述预取地址进行预取操作还包括:在将所述所预取的指令的虚拟地址发送到指令快表单元之后,将所述所预取的指令的虚拟地址转换为物理地址,并将所述物理地址发送到第一级缓存存储器,其中:
响应于所述所预取的指令的虚拟地址存在于所述指令快表单元中,获取与所述所预取的指令的虚拟地址对应的物理地址;
响应于所述所预取的指令的虚拟地址不存在于所述指令快表单元中,向快表地址缺失状态跟踪寄存器发送地址转换请求,基于所述地址转换请求向页表单元获取与所述所预取的指令的虚拟地址对应的所述物理地址,并将获取的所述物理地址返回所述指令快表单元;以及
响应于所述所预取的指令的虚拟地址不存在于所述页表单元中,结束所述预取操作。
10.如权利要求9所述的方法,基于所述预取地址信息,对所述预取地址进行预取操作还包括:确定所述物理地址所对应的指令数据是否在第一级缓存存储器中,其中:
响应于所述物理地址所对应的指令数据在所述第一级缓存存储器中,结束所述预取操作;
响应于所述物理地址所对应的指令数据不在所述第一级缓存存储器中,经由指令地址缺失状态跟踪寄存器向下级缓存存储器或内存获取所述物理地址所对应的指令数据,并将所预取的指令数据返回到所述第一级缓存存储器中,结束所述预取操作。
11.一种信息处理装置,包括:
缓存存储器单元,被配置为接收第一指令;
译码单元,被配置为对所述第一指令进行译码;
分发单元,被配置为确定所述第一指令为预取指令,将所述预取指令发送到预取处理单元;以及
预取处理单元,被配置为获取所述第一指令中的预取地址信息,基于所述预取地址信息,对预取地址进行预取操作。
12.如权利要求11所述的装置,还包括:退休单元,被配置为响应于所述第一指令为预取指令,在退休单元中标记所述第一指令已执行完成。
13.如权利要求11所述的装置,其中,所述缓存存储器单元还包括第一级缓存存储器,并且所述第一指令包含在第一指令组中,所述第一指令插入在所述第一指令组中的位置基于所述第一指令组的大小和第一级缓存存储器的容量之间的关系确定。
14.如权利要求11所述的装置,其中,所述第一指令包含在第一指令组中,并且所述第一指令插入在所述第一指令组中的任意位置。
15.如权利要求13或14所述的装置,还包括执行单元,并且所述预取处理单元还被配置为在所述执行单元将所述第一指令组执行完毕之前,将所述预取地址预取到第一级缓存存储器中。
16.如权利要求13或14所述的装置,还包括执行单元,并且所述预取处理单元还被配置为在所述执行单元将所述第一指令组执行完毕之后,将所述预取地址预取到第一级缓存存储器中。
17.如权利要求16所述的装置,其中,所述预取地址信息是所预取的指令的绝对地址或指示所述所预取的指令的绝对地址的相对地址。
18.如权利要求17所述的装置,还包括地址翻译单元,所述地址翻译单元包括指令快表单元,并且所述预取处理单元还被配置为基于所述预取地址信息获取所预取的指令的虚拟地址,并将所述虚拟地址发送到所述指令快表单元,其中:
响应于所述预取地址信息是所述所预取的指令的绝对地址,将所述绝对地址作为所述所预取的指令的虚拟地址发送到所述指令快表单元;或
响应于所述预取地址信息是指示所述所预取的指令的绝对地址的相对地址,将所述预取指令的虚拟地址与所述相对地址相加以得到所预取的指令的虚拟地址,并将所述所预取的指令的虚拟地址发送到所述指令快表单元。
19.如权利要求18所述的装置,所述地址翻译单元还包括快表地址缺失状态跟踪寄存器,并且所述指令快表单元被配置为将所述所预取的指令的虚拟地址转换为物理地址,并将所述物理地址发送到第一级缓存存储器,其中:
响应于所述所预取的指令的虚拟地址存在于所述指令快表单元中,获取与所述所预取的指令的虚拟地址对应的物理地址;
响应于所述所预取的指令的虚拟地址不存在于所述指令快表单元中,向快表地址缺失状态跟踪寄存器发送地址转换请求,基于所述地址转换请求向页表单元获取与所述所预取的指令的虚拟地址对应的所述物理地址,并将获取的所述物理地址返回所述指令快表单元;以及
响应于所述所预取的指令的虚拟地址不存在于所述页表单元中,结束所述预取操作。
20.如权利要求19所述的装置,其中所述缓存存储器单元还包括指令地址缺失状态跟踪寄存器,并且所述缓存存储器单元还被配置为确定所述物理地址所对应的指令数据是否在第一级缓存存储器中,其中:
响应于所述物理地址所对应的指令数据在所述第一级缓存存储器中,结束所述预取操作;
响应于所述物理地址所对应的指令数据不在所述第一级缓存存储器中,经由指令地址缺失状态跟踪寄存器向下级缓存存储器或内存获取所述物理地址所对应的指令数据,并将所预取的指令数据返回到所述第一级缓存存储器中,结束所述预取操作。
21.一种设备,包括:
处理器;以及
非瞬态存储器,存储有可执行指令
其中,当由所述处理器执行所述可执行指令时,以执行权利要求1-10中任一项所述的方法。
22.一种计算机可读储存介质,其中储存有计算机可读指令,所述计算机可读指令包含用于执行权利要求1-10中任一项所述的方法的程序代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210570597.8A CN114924797A (zh) | 2022-05-24 | 2022-05-24 | 预取指令的方法、信息处理装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210570597.8A CN114924797A (zh) | 2022-05-24 | 2022-05-24 | 预取指令的方法、信息处理装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114924797A true CN114924797A (zh) | 2022-08-19 |
Family
ID=82810982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210570597.8A Pending CN114924797A (zh) | 2022-05-24 | 2022-05-24 | 预取指令的方法、信息处理装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114924797A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971722A (zh) * | 2024-03-28 | 2024-05-03 | 北京微核芯科技有限公司 | 一种取数指令的执行方法及其装置 |
-
2022
- 2022-05-24 CN CN202210570597.8A patent/CN114924797A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971722A (zh) * | 2024-03-28 | 2024-05-03 | 北京微核芯科技有限公司 | 一种取数指令的执行方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5222223A (en) | Method and apparatus for ordering and queueing multiple memory requests | |
JP3820261B2 (ja) | データ処理システムの外部および内部命令セット | |
US8140768B2 (en) | Jump starting prefetch streams across page boundaries | |
US11176055B1 (en) | Managing potential faults for speculative page table access | |
CN112416817B (zh) | 预取方法、信息处理装置、设备以及存储介质 | |
JP5608594B2 (ja) | プレロード命令制御 | |
US7600097B1 (en) | Detecting raw hazards in an object-addressed memory hierarchy by comparing an object identifier and offset for a load instruction to object identifiers and offsets in a store queue | |
US20130246709A1 (en) | Translation address cache for a microprocessor | |
JP2003514299A (ja) | インデックスおよび任意の様式一致に基づいてデータを転送するストアバッファ | |
US9201798B2 (en) | Processor instruction based data prefetching | |
KR20170139659A (ko) | 메모리를 어드레싱하기 위한 별개의 레지스터들을 가진 컴퓨터 프로세서 | |
US9690707B2 (en) | Correlation-based instruction prefetching | |
WO2005088455A2 (en) | Cache memory prefetcher | |
US7093100B2 (en) | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes | |
KR102478766B1 (ko) | 디스크립터 링 관리 | |
US10552334B2 (en) | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early | |
KR20210070935A (ko) | 보안 멀티쓰레딩 실행을 위한 파이프라인들 | |
US11500779B1 (en) | Vector prefetching for computing systems | |
JP6457836B2 (ja) | プロセッサおよび命令コード生成装置 | |
CN108874691B (zh) | 数据预取方法和内存控制器 | |
US6892280B2 (en) | Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system | |
CN114924797A (zh) | 预取指令的方法、信息处理装置、设备及存储介质 | |
US7617380B2 (en) | System and method for synchronizing translation lookaside buffer access in a multithread processor | |
US11016771B2 (en) | Processor and instruction operation method | |
US6615337B1 (en) | Method and apparatus for maintaining coherency in a translation lookaside buffer |
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 |