本发明专利技术包括一种装置,所述装置包括一种处理器,用于识别程序中的代码段;分析所述代码段以确定内存访问模式;如果所述内存访问模式是规则的,那么通过在所述代码段前设置控制寄存器为所述代码段开启硬件预取;以及通过在所述代码段后重置所述控制寄存器关闭所述硬件预取。本发明专利技术还包括一种方法,所述方法包括识别程序中的代码段;分析所述代码段以确定内存访问模式;如果所述内存访问模式是规则的,那么通过在所述代码段前设置控制寄存器为所述代码段开启硬件预取;以及通过在所述代码段后重置所述控制寄存器关闭所述硬件预取。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及通信网络,具体涉及一,涉及软硬件协同预取。
技术介绍
处理器性能的提升速度一直比内存系统性能的提升更快。因此,现代处理器(例如,微处理器)的速度通常比内存系统的更快,这意味着从内存系统中读/写数据和/或指令的速度不足以使处理器保持繁忙。高速缓冲存储器(缓存)是一种在距离处理器较近的地方存储相对少量的数据和/或指令的性价比较高的方式,因为缓存的存取速度与处理器的处理速度相当。处理器执行程序时首先检查缓存中是否存储有相关的信息(例如,数据或指令)。在缓存未命中(cache miss)的情况下缓存未命中(即,否定的检查结果),处理器需要从内存系统中获取相关信息。预取是一种在程序实际需要信息之前提前将信息存入缓存中来避免缓存未命中缓存未命中的技术。通常存在硬件预取和软件预取两种技术。硬件预取使用缺失历史表(MHT)存储程序的缓存未命中(或未命中的内存访问请求)。处理器基于MHT的条目预测程序随后所需的内存地址。例如,处理器中基于硬件的预测逻辑分析MHT中最近(连续的)3次未命中的内存地址以预测程序需要访问的下一内存地址。随后,下一内存地址中存储的数据在被程序需要之前从内存系统中预取。数据可存储在处理器中的备用预取缓冲器中。通常,数据在内存和缓存之间以固定大小块(例如,64或128字节)的形式传输,该固定大小块也称为缓存行。当缓存行从内存复制到缓存中时,创建了缓存条目。缓存条目包括复制的数据和所请求的内存地址或位置。由于硬件缓存基于对(从MHT获取的)先前内存访问的了解,所以硬件缓存能够更好地预取有规律的内存访问,比如流媒体数据等。然而,硬件预取需要额外的硬件资源来实施MHT、预取缓冲区以及基于硬件的预测逻辑。此外,由于预测逻辑不了解程序(例如,循环结构、代码段),所以经常会预取无用或错误的数据或指令,从而降低了硬件预取的准确性。准确性降低增加了带宽要求并提高了缓存污染的可能性。例如,在一些控制流程序中,硬件预取降低了处理器的性能。此外,一直开启硬件预取会产生功耗问题。另一方面,软件预取依赖编译器在需要数据前插入预取指令。由于编译器了解程序中的逻辑,所以编译器可以预测程序所需的内存访问模式。因此,软件预取的准确性高于硬件预取。然而,软件预取需要额外的指令/寄存器来计算内存地址,这样会产生大量的代码。例如,编译器需要为程序的循环结构中的每个迭代插入预取指令。此外,由于预取反复迭代进行,所以有时及早调度预取事件来消除或最大程度地减少内存时延可能很困难。另夕卜,有时可配置编译器提前进行代码转换(例如,指令调度和循环展开)以充分利用软件预取。代码转换有时会对处理器的性能带来不可预测的影响。
技术实现思路
在一个实施例中,本专利技术实施例包括一种装置,所述装置包括一种处理器,用于识别程序中的代码段;分析所述代码段以确定内存访问模式;如果所述内存访问模式是规则的,通过在所述代码段前设置控制寄存器为所述代码段开启硬件预取,以及通过在所述代码段后重置所述控制寄存器关闭所述硬件预取。在另一个实施例中,本专利技术实施例包括一种方法,所述方法包括识别程序中的代码段;分析所述代码段以确定内存访问模式;如果所述内存访问模式是规则的,通过在所述代码段前设置控制寄存器为所述代码段开启硬件预取,以及通过在所述代码段后重置所述控制寄存器关闭所述硬件预取。在又一个实施例中,本专利技术实施例包括一种装置,所述装置包括用于指示硬件预取状态的片上寄存器,其中所述片上寄存器由编译器控制。结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其它特征。【附图说明】为了更完整地理解本专利技术,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表不相同部分。图1是处理器系统的实施例的示意图。图2是控制寄存器的实施例的图。图3A至3C示出了在示例性代码片段上实施的协同预取方案实施例与传统软件预取方案的对比。图4A和4B示出了在另一示例性代码片段上实施的另一协同预取方案的实施例。图5示出了协同预取方法的实施例。图6示出了网络部件或计算机系统的实施例。【具体实施方式】从一开始应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本专利技术决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。本文公开了用于软硬件协同预取的系统和方法。在所公开的预取方案中,将额外的可编程寄存器并入处理器中以控制硬件预取的状态。在实施例中,控制寄存器包括多个位,某些位用于开启/关闭硬件预取,而另外一些位用于设置硬件预取的步幅。控制寄存器可由编程器或编译器进行编程(即,写入和读取)。具体而言,编译器可用于设置控制寄存器指示硬件预取的开启或关闭状态以及预取步幅。当编译器分析出一个程序段或代码段含有规则的内存访问(可由预取硬件预测)时,编译器开启硬件预取并在代码段前设置合适的预取步幅。另外,编译器在代码段后关闭硬件预取。否则,如果编译器认为内存访问是不规则的,那么照常插入预取指令。本专利技术实施例提供的协同预取方案相比于传统软件或硬件预取方案具有优势。例如,在规则的内存访问中,由于不再需要将预取指令插入代码段中,所以缓解了代码扩展问题,并且优化了指令级并行性。此外,由于所公开的预取方案基于对程序的了解(由编译器分析),所以提高了硬件预取的准确性,这样反过来减少了缓存污染并降低了带宽要求及功耗。图1示出了处理器系统100的实施例,在处理器系统100中实施本专利技术实施例所公开的预取方法。处理器系统100包括处理器110和内存系统130,如图1所示,处理器110包括编译器112、预取控制寄存器114、预取硬件116、数据缓存118 (表示为D$)以及指令缓存120 (表示为1$)。在处理器系统100中,计算机程序102可以输入到编译器112中,编译器112将程序102从源代码转换为目标代码。程序102的源代码以编程语言编写,由编译器112编译的目标代码是二进制形式的可执行程序。例如,编译器112将程序102从高级编程语言(例如,C++或Java)转换为低级语言(例如,汇编语言或机器代码)。此外,编译器分析程序102以确定程序102所需的内存访问模式。基于该分析,编译器进行代码转换(例如,指令调度和循环展开)以优化数据/指令预取。例如,可以改变一些循环的执行顺序以便更高效地访问内存系统130中的数据或指令。总体而言,编译器112 了解程序102的逻辑及其内存访问模式。因此,编译器可确定应当如何预取数据或指令以执行程序102。在一个实施例中,可通过软硬件协同预取模式预取数据或指令。处理器110执行程序102的代码片段或代码段时首先使用编译器112确定代码段(例如,循环)对应的内存访问模式。如果编译器112认为内存访问模式是可预测的或规则的,那么处理器110使用硬件预取来预取代码段所需的数据或指令。如果编译器112认为内存访问模式不可预测或不规则,那么使用软件预取或关闭硬件预取。例如,如果代码段涉及重复执行随机函数,那么编译器不为随机函数预取任何数据。代码片段或代码段是一个编程术语,指的是源代码或目标代码中可重本文档来自技高网...
【技术保护点】
一种装置,其特征在于,包括:处理器,用于:识别程序中的代码段;分析所述代码段以确定内存访问模式;如果所述内存访问模式是规则的,通过在所述代码段前设置控制寄存器为所述代码段开启硬件预取;以及通过在所述代码段后重置所述控制寄存器关闭所述硬件预取。
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:叶寒栋,胡子昂,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。