CN110727463B - 一种基于动态信用的零级指令循环缓冲预取方法及装置 - Google Patents
一种基于动态信用的零级指令循环缓冲预取方法及装置 Download PDFInfo
- Publication number
- CN110727463B CN110727463B CN201910863815.5A CN201910863815A CN110727463B CN 110727463 B CN110727463 B CN 110727463B CN 201910863815 A CN201910863815 A CN 201910863815A CN 110727463 B CN110727463 B CN 110727463B
- Authority
- CN
- China
- Prior art keywords
- instruction
- prefetch
- credit
- loop
- information
- 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
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
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
技术领域
本发明涉及计算机体系结构与芯片微结构领域,特别是涉及一种基于动态信用的零级指令循环缓冲预取方法及装置。
背景技术
处理器流水线需要完成“取得指令->解析指令->执行指令”这一基本流程。一级指令缓存是处理器流水线中的关键部件,通过将最近执行所需的指令存放在一级指令缓存中,可以避免流水线频繁地访问主存储器,进而带来流水线性能的提升(主存储器的访问时间为指令缓存的访问时间数十倍或数百倍)。为了进一步发挥指令缓存思想的作用,业界提出了零级指令缓存的设计,其核心思想是在距处理器执行指令的部件更近的位置设置一个零级指令缓存(例如在“解析指令”同“执行指令”这两个阶段之间),将近期可能需要执行的指令存放在零级指令缓存中,可以避免对一级指令缓存的访问。
由于零级指令缓存同流水线深度耦合,其中发生的取指不命中(取指脱靶:即需要的指令没有存在于缓存中)容易造成流水线的取指断流,进而影响流水线性能。
在一种具体的零级指令缓存实现方法-零级指令循环缓存的实现中,指令缓存识别程序中存在的循环体结构,当发现循环体后,将允许后续循环体代码的执行从指令缓存中取指。由于循环体在若干次循环执行后,最终将结束循环,此时将在循环缓存中发生脱靶,并带来流水线的取指断流,造成性能损失。
发明内容
本发明目的是提供一种基于动态信用的零级指令循环缓冲预取方法及装置,能够避免零级指令缓存对流水线性能带来的负面影响。
根据本发明的第一方面,提供了一种基于动态信用的零级指令循环缓冲预取方法,包括:
当检测到指令流中存在循环体时,判断循环体的循环方向;
根据循环体的循环方向确定循环体的循环出口指令信息,并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息;
当检测到输出指令到达循环体尾部时,判断循环体的行进方向,若循环体的行进方向为继续循环方向,则向一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若循环体的行进方向为循环出口方向,则向一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
进一步的,在 “并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息”中具体还包括:
获取可装载总指令数与循环体大小,计算出预取指令条数;
当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值;
当预取指令条数大于循环出口指令信息支持的最大信用值时,将最大信用值作为预取信用信息中的预取信用值。
进一步的,在“当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值”之后还包括:
当检测到预取信用值为零时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
进一步的,在“当检测到指令流中存在循环体时,判断循环体的循环方向”时,还包括:
当检测到循环体时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
根据本发明的第二方面,提供了一种基于动态信用的零级指令循环缓冲预取装置,包括:
检测模块:当检测到指令流中存在循环体时,判断循环体的循环方向;
处理模块:根据循环体的循环方向确定循环体的循环出口指令信息,并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息;
发送模块:当检测到输出指令到达循环体尾部时,判断循环体的行进方向,若循环体的行进方向为继续循环方向,则向一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若循环体的行进方向为循环出口方向,则向一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
进一步的,在 “并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息”中具体还包括:
处理模块:获取可装载总指令数与循环体大小,计算出预取指令条数;
当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值;
当预取指令条数大于循环出口指令信息支持的最大信用值时,将最大信用值作为预取信用信息中的预取信用值。
进一步的,在“当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值”之后还包括:
发送模块:当检测到预取信用值为零时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
进一步的,在“当检测到指令流中存在循环体时,判断循环体的循环方向”时,还包括:
发送模块:当检测到循环体时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
本发明的有益效果为:1. 通过预取循环退出后若干时钟周期内所需要执行的执行,避免循环退出时的流水线指令断流,进而避免零级指令缓存对流水线性能带来的负面影响。2. 通过预取循环出口方向的指令,可以在零级指令循环缓存中的循环退出时,立即从零级指令缓存中继续提供出口方向的指令,避免零级指令缓存脱靶时带来的性能气泡。
附图说明
图1是根据本发明一实施例的一种基于动态信用的零级指令循环缓冲预取方法的流程图;
图2是根据本发明一实施例的一种基于动态信用的零级指令循环缓冲预取装置的结构图。
图3是根据本发明一实施例的零级指令缓存以及本发明的处理器流水线示意图;
图4是根据本发明一实施例的出现循环的指令流示意图;
图5是根据本发明一实施例的预取信用状态机的工作示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1、图3、图4、图5示出了根据本发明一实施例的一种基于动态信用的零级指令循环缓冲预取方法的流程,包括:
S11、当检测到指令流中存在循环体时,判断循环体的循环方向。
本方法的执行主体可以是零级循环缓存控制逻辑。
需要说明的是,现有技术中在零级循环缓存控制逻辑的控制下,向执行部件输出了若干轮的循环体指令流,但是程序中的循环体一般不会永远循环。当零级循环缓存控制逻辑判断当前的循环将采取“循环出口方向”时,由于零级指令循环缓存中仅包含循环体内部的指令,下一个时钟周期将无法从零级指令循环缓存中输出指令(循环出口方向的指令)。在该种情形下,需要通知“一级指令缓存控制部件”发起取指,由于从“零级指令缓存”到“一级指令缓存”之间距离若干级流水线站台,一级指令缓冲中取得指令需要经过若干时钟周期才能到达零级指令缓存,并最终送至执行部件。在这若干时钟周期内,执行部件没有指令可供执行,由此形成了流水线的性能损失。
在本说明书实施例中,零级循环缓存控制逻辑在识别出指令流中的循环体时,会进行第一次判断来判断循环体的循环方向。
S12、根据循环体的循环方向确定循环体的循环出口指令信息,并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息。
在本说明书实施例中,当零级循环缓存控制逻辑判断该循环采取“继续循环的方向”时,会通知“一级指令缓存控制部件”进行预取,预取的目标为“循环出口方向”的指令,通过将这些指令提前存放在零级指令缓存中(前提时零级指令缓存的剩余容量允许存放预取的指令),可以避免上述“零级指令缓存脱靶发生时”的性能损失。其中,预取的指令数由预取信用控制。
S13、当检测到输出指令到达循环体尾部时,判断循环体的行进方向,若循环体的行进方向为继续循环方向,则向一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若循环体的行进方向为循环出口方向,则向一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
在本说明书实施例中,状态机默认处于S0(正常取指)状态,该状态下所有取指均来自于一级指令缓存。零级循环缓存控制逻辑输出指令第一次到达当前循环体尾部,并判断循环体会采取“继续循环方向”时,将发出“启动预取”信号,通知预取信用管理部件,状态机由S1状态跃迁到S2状态,同时将预取信用传递给预取信用管理部件。零级循环缓存控制逻辑输出指令第一次到达当前循环体尾部,并判断循环体会采取“继续循环方向”时,将发出“启动预取”信号,通知预取信用管理部件,状态机由S1状态跃迁到S2状态,同时将预取信用传递给预取信用管理部件。
作为优选实施例,在进行步骤S12中“并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息”具体还包括:
获取可装载总指令数与循环体大小,计算出预取指令条数;
当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值;
当预取指令条数大于循环出口指令信息支持的最大信用值时,将最大信用值作为预取信用信息中的预取信用值。
在本说明书实施例中,预取信用的计算方法为:首先计算当前识别出的循环体大小(记为L),同时根据零级指令缓存中可以装载的总指令数(记为C),计算能够预取的指令条数(C-L)。预取采用信用机制进行,每一个信用表示可以预取1条指令。当C-L的结果小于预取机制支持的最大信用值时,预取信用=C-L。当C-L的结果大于等于预取机制支持的最大信用值时,预取信用=最大信用值。
作为优选实施例,在“当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值”之后还包括:
当检测到预取信用值为零时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
在本说明书实施例中,在S2状态时,预取信用管理部件根据得到的信用值,控制一级指令缓存控制部件发起若干次对一级指令缓存的取指,并在信用耗尽时继续暂停取指。
作为优选实施例,在进行步骤S11时,还包括:
当检测到循环体时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
在本说明书实施例中,零级循环缓存控制逻辑在识别出循环体时,将发出“暂停取指”信号,通知预取信用管理部件,状态机由S0状态跃迁到S1状态。在S1状态时,一级指令缓存控制部件不工作,不进行对一级指令缓存的访问,所有取指均来自于零级指令缓存。
图2示出了根据本发明一实施例的一种基于动态信用的零级指令循环缓冲预取装置的结构,包括:
检测模块21:当检测到指令流中存在循环体时,判断循环体的循环方向;
处理模块22:根据循环体的循环方向确定循环体的循环出口指令信息,并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息;
发送模块23:当检测到输出指令到达循环体尾部时,判断循环体的行进方向,若循环体的行进方向为继续循环方向,则向一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若循环体的行进方向为循环出口方向,则向一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
作为优选实施例,在 “并根据循环出口指令信息向一级指令缓存控制部件发送预取信用信息”中具体还包括:
处理模块22:获取可装载总指令数与循环体大小,计算出预取指令条数;
当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值;
当预取指令条数大于循环出口指令信息支持的最大信用值时,将最大信用值作为预取信用信息中的预取信用值。
作为优选实施例,在“当预取指令条数小于循环出口指令信息支持的最大信用值时,将预取指令条数作为预取信用信息中的预取信用值”之后还包括:
发送模块23:当检测到预取信用值为零时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
作为优选实施例,在“当检测到指令流中存在循环体时,判断循环体的循环方向”时,还包括:
发送模块23:当检测到循环体时,向一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其他实施例中所包括的某些特征而不是其他特征,但是不同的实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求的保护的实施例的任意之一都可以以任意的组合方式来使用。
本领域普通技术人员可以理解:以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。
Claims (6)
1.一种基于动态信用的零级指令循环缓冲预取方法,其特征为,包括:
S11、当检测到指令流中存在循环体时,判断所述循环体的循环方向;
S12、根据所述循环体的循环方向确定所述循环体的循环出口指令信息,并根据所述循环出口指令信息向一级指令缓存控制部件发送预取信用信息,包括获取可装载总指令数与循环体大小,计算出预取指令条数;
当所述预取指令条数小于所述循环出口指令信息支持的最大信用值时,将所述预取指令条数作为所述预取信用信息中的预取信用值;
当所述预取指令条数大于所述循环出口指令信息支持的最大信用值时,将所述最大信用值作为所述预取信用信息中的预取信用值;
S13、当检测到输出指令到达所述循环体尾部时,判断所述循环体的行进方向,若所述循环体的行进方向为继续循环方向,则向所述一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若所述循环体的行进方向为循环出口方向,则向所述一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
2.根据权利要求1所述的一种基于动态信用的零级指令循环缓冲预取方法,其特征为,在“当所述预取指令条数小于所述循环出口指令信息支持的最大信用值时,将所述预取指令条数作为所述预取信用信息中的预取信用值”之后还包括:
当检测到所述预取信用值为零时,向所述一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
3.根据权利要求1所述的一种基于动态信用的零级指令循环缓冲预取方法,其特征为,在进行步骤S11时,还包括:
当检测到所述循环体时,向所述一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
4.一种基于动态信用的零级指令循环缓冲预取装置,其特征为,包括:
检测模块:当检测到指令流中存在循环体时,判断所述循环体的循环方向;
处理模块:根据所述循环体的循环方向确定所述循环体的循环出口指令信息,并根据所述循环出口指令信息向一级指令缓存控制部件发送预取信用信息,包括获取可装载总指令数与循环体大小,计算出预取指令条数;
当所述预取指令条数小于所述循环出口指令信息支持的最大信用值时,将所述预取指令条数作为所述预取信用信息中的预取信用值;
当所述预取指令条数大于所述循环出口指令信息支持的最大信用值时,将所述最大信用值作为所述预取信用信息中的预取信用值;
发送模块:当检测到输出指令到达所述循环体尾部时,判断所述循环体的行进方向,若所述循环体的行进方向为继续循环方向,则向所述一级指令缓存控制部件的预取信用管理部件发送启动预取信号;若所述循环体的行进方向为循环出口方向,则向所述一级指令缓存控制部件的预取信用管理部件发送恢复取指信号。
5.根据权利要求4所述的一种基于动态信用的零级指令循环缓冲预取装置,其特征为,在“当所述预取指令条数小于所述循环出口指令信息支持的最大信用值时,将所述预取指令条数作为所述预取信用信息中的预取信用值”之后还包括:
发送模块:当检测到所述预取信用值为零时,向所述一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
6.根据权利要求4所述的一种基于动态信用的零级指令循环缓冲预取装置,其特征为,在“当检测到指令流中存在循环体时,判断所述循环体的循环方向”时,还包括:
发送模块:当检测到所述循环体时,向所述一级指令缓存控制部件的预取信用管理部件发送暂停取指信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863815.5A CN110727463B (zh) | 2019-09-12 | 2019-09-12 | 一种基于动态信用的零级指令循环缓冲预取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910863815.5A CN110727463B (zh) | 2019-09-12 | 2019-09-12 | 一种基于动态信用的零级指令循环缓冲预取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110727463A CN110727463A (zh) | 2020-01-24 |
CN110727463B true CN110727463B (zh) | 2021-08-10 |
Family
ID=69218091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910863815.5A Active CN110727463B (zh) | 2019-09-12 | 2019-09-12 | 一种基于动态信用的零级指令循环缓冲预取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727463B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397296B1 (en) * | 1999-02-19 | 2002-05-28 | Hitachi Ltd. | Two-level instruction cache for embedded processors |
CN101013427A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于管理数据的方法和*** |
CN102541510A (zh) * | 2011-12-27 | 2012-07-04 | 中山大学 | 一种指令缓存***及其取指方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6516384B1 (en) * | 1999-12-30 | 2003-02-04 | Intel Corporation | Method and apparatus to perform a round robin and locking cache replacement scheme |
US8719837B2 (en) * | 2004-05-19 | 2014-05-06 | Synopsys, Inc. | Microprocessor architecture having extendible logic |
CN105306951B (zh) * | 2015-10-11 | 2019-04-09 | 华南理工大学 | 数据压缩编码的流水线并行加速方法及其***架构 |
-
2019
- 2019-09-12 CN CN201910863815.5A patent/CN110727463B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397296B1 (en) * | 1999-02-19 | 2002-05-28 | Hitachi Ltd. | Two-level instruction cache for embedded processors |
CN101013427A (zh) * | 2006-02-03 | 2007-08-08 | 国际商业机器公司 | 用于管理数据的方法和*** |
CN102541510A (zh) * | 2011-12-27 | 2012-07-04 | 中山大学 | 一种指令缓存***及其取指方法 |
Non-Patent Citations (2)
Title |
---|
《零级指令缓存研究综述》;张昆;《计算机工程与科学》;20170331;第39卷(第3期);405-412 * |
Reducing power with an L0 instruction cache using history-based prediction;Weiyu Tang;《International Workshop on Innovative Architecture for Future Generation High-Performance Processors and Systems》;20021107;11-18 * |
Also Published As
Publication number | Publication date |
---|---|
CN110727463A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1889152B1 (en) | A method and apparatus for predicting branch instructions | |
JP5323936B2 (ja) | 推論的割込みベクトルプリフェッチのための装置および方法 | |
CN105074655B (zh) | 用于取消对循环的数据预取请求的方法和设备及介质 | |
US10831494B2 (en) | Event triggered programmable prefetcher | |
TWI403953B (zh) | 用於臆測分支預測最佳化之系統及其方法 | |
EP0449369A2 (en) | A data processing system provided with a performance enhancing instruction cache | |
JP2001134440A (ja) | 命令をプリフェッチする方法 | |
EP1460532A2 (en) | Computer processor data fetch unit and related method | |
CN112148367A (zh) | 用于处理循环指令集合的方法、装置、设备和介质 | |
US8250344B2 (en) | Methods and apparatus for dynamic prediction by software | |
CN116048627B (zh) | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 | |
CN110727463B (zh) | 一种基于动态信用的零级指令循环缓冲预取方法及装置 | |
JPH09330221A (ja) | マイクロプロセッサにおける早期例外を追跡するシステム及び方法 | |
CN113254082B (zh) | 条件分支指令处理方法及***、cpu、芯片 | |
JPH11345121A (ja) | プログラム制御ユニット用の命令取り出し装置および方法 | |
JP2008015668A (ja) | タスク管理装置 | |
JP4413663B2 (ja) | 命令キャッシュシステム | |
US8266414B2 (en) | Method for executing an instruction loop and a device having instruction loop execution capabilities | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
CN111782272B (zh) | 一种vliw处理器中重复程序的执行控制方法及装置 | |
JP2012203655A (ja) | マイクロコンピュータ | |
CN108399146B (zh) | Flash控制器、取指令方法及计算机可读存储介质 | |
CN117170747A (zh) | 程序与指令处理、训练与预测方法与装置、处理器 | |
KR100282225B1 (ko) | 데이타 캐쉬 메모리의 제어장치 | |
JPH01106141A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |