一种数据预取方法及装置、微处理器制造方法及图纸

技术编号:20944210 阅读:25 留言:0更新日期:2019-04-24 02:17
一种数据预取方法及装置、微处理器,所述方法包括:对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;根据所述存储器访问流的长度确定前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;根据所述前瞻距离从所述存储器中预取数据。通过本发明专利技术的技术方案能够根据程序的存储器访问流的长度动态调整前瞻距离,并基于调整后的前瞻距离进行数据预取,以有效减少程序的运行时间,降低功率消耗。

A Data Prefetching Method, Device and Microprocessor

A data prefetching method and device, microprocessor, comprising: counting the length of the memory access stream of a program with memory access requirements; determining the forward-looking distance according to the length of the memory access stream, in which the forward-looking distance is proportional to the length of the memory access stream; and from the memory according to the forward-looking distance. Prefetch data. The technical scheme of the invention can dynamically adjust the forward-looking distance according to the length of the memory access stream of the program, and carry out data prefetching based on the adjusted forward-looking distance, so as to effectively reduce the running time of the program and reduce power consumption.

【技术实现步骤摘要】
一种数据预取方法及装置、微处理器
本专利技术涉及计算机领域,具体地涉及一种数据预取方法及装置、微处理器。
技术介绍
随着计算机的数据处理能力的飞速提升,现有的微处理器工作在较高(如大于1GHz)的频率,为了保持执行单元处于忙碌状态,需要以高比率向微处理器投喂数据。此外,延迟也很重要,许多微处理器被设计为可以允许4循环负荷(即1GHz的处理器可以有4ns)的延迟。但是,与微处理器不同,现有的存储器,如动态随机存取存储器(DynamicRandomAccessMemory,简称DRAM),具有长访问延迟的工作特征。为了解决与DRAM之间的延迟失配,在实际应用中,微处理器一般会使用一级或多级缓存(cache)来预先缓存DRAM中的数据。具体地,一段数据被从DRAM中取出后,假定其在将来会被再次使用,该数据会被存储在所述微处理器本地的缓存中。而对于流式程序(如memcpy函数)这类在运行时会使用大量数据,但是每段数据只使用一次的程序,微处理器需要进一步采用硬件预取引擎来实现数据预取。例如,所述硬件预取引擎可以监控微处理器运行的程序的数据访问流,以尝试检测到某一模式(pattern)。如果检测到模式,则所述硬件预取引擎可以使用该模式来提前预测该程序接下来可能需要的数据所在的存储单元,并提前发起请求以从预测到的存储单元中预取数据。在理想状态下,硬件预取引擎可以实现百分百的预测正确率,即只要所述硬件预取引擎采用的前瞻距离足够长,所述硬件预取引擎就可以足够快的取回足够长的数据,从而使得程序始终能够在缓存中找到其需要的数据。但是,在实际应用中,由于硬件预取引擎不知道程序的存储器访问流何时结束,这就意味着当存储器访问流结束时,所述硬件预取引擎仍会根据预设的前瞻距离从DRAM取回多余的数据(可以以缓存行为传输单位)。对于流式程序,这些多余的数据是永远不会被程序再次使用的。这无疑增加了程序(尤其是小字串流的流式程序)的运行时间,并且还会产生额外的功耗,严重影响了程序的运行速度,进而影响了计算机的数据处理能力。
技术实现思路
本专利技术解决的技术问题是如何更合理的确定用于数据预取的前瞻距离,以保障程序的运行速度,降低功耗。为解决上述技术问题,本专利技术实施例提供一种数据预取方法,包括:对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;根据所述存储器访问流的长度确定前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;根据所述前瞻距离从所述存储器中预取数据。可选的,所述统计所述程序的存储器访问流的长度包括:跟踪所述程序访问所述存储器时的数据传输;根据传输的数据量确定所述存储器访问流的长度。可选的,所述存储器访问流的长度以缓存行为单位计量。可选的,所述根据所述存储器访问流的长度确定所述前瞻距离包括:根据所述存储器访问流的长度查找对照关系表,以确定与所述存储器访问流的长度相对应的前瞻距离。可选的,所述对照关系表以硬编码或可配置软件的形式存储。本专利技术实施例还提供一种数据预取装置,包括:统计模块,对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;前瞻距离确定模块,用于根据所述存储器访问流的长度确定所述前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;数据预取模块,用于根据所述前瞻距离从所述存储器中预取数据。可选的,所述统计模块包括:缓存行穿过检测器,用于跟踪所述程序访问所述存储器时的数据传输;长度计数器,用于根据传输的数据量确定所述存储器访问流的长度。可选的,所述存储器访问流的长度以缓存行为单位计量。可选的,所述前瞻距离确定模块包括:查找子模块,用于根据所述存储器访问流的长度查找对照关系表,以确定与所述存储器访问流的长度相对应的前瞻距离。可选的,所述对照关系表以硬编码或可配置软件的形式存储。本专利技术实施例还提供一种微处理器,包括上述数据预取装置。与现有技术相比,本专利技术实施例的技术方案具有以下有益效果:对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;根据所述存储器访问流的长度确定所述前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;根据所述前瞻距离从所述存储器中预取数据。较之现有基于恒定数值的预设前瞻距离进行数据预取的技术方案,本专利技术实施例的技术方案能够根据程序的存储器访问流的长度动态调整前瞻距离,并基于调整后的前瞻距离进行数据预取,以有效减少程序的运行时间,降低功率消耗。进一步,通过跟踪所述程序访问所述存储器时的数据传输,并根据传输的数据量确定所述存储器访问流的长度,从而更精准的确定接下来执行数据预取所需使用的前瞻距离,确保数据预取装置(如硬件预取装置,也可称为硬件预取引擎)能够获得更好的性能。进一步地,通过本专利技术实施例的技术方案,数据预取装置以较小的前瞻距离开始进行数据预取,基于本专利技术实施例的技术方案,在程序运行期间,能够持续追踪所述程序的存储器访问流的长度,当所述存储器访问流的长度很短时,所有的数据预取可以以较小的前瞻距离来进行;当所述存储器访问流的长度很长时,所述数据预取装置可以随着所述存储器访问流的长度的增加而逐渐增大前瞻距离,以最小化在程序(如流式程序)的最后预取回不必要的缓存行所导致的开销。附图说明图1是本专利技术的第一实施例的一种数据预取方法的流程图;图2是本专利技术的第二实施例的一种数据预取装置的结构示意图。具体实施方式本领域技术人员理解,如
技术介绍
所言,为了减少微处理器与存储器(如DRAM)之间的延迟失配,硬件预取引擎至少需要能够以与程序(如流式程序)的数据消耗速度相匹配的速度预先从存储器中请求缓存行至数据缓存(datacache)中。例如,如果从DRAM中取回64B的数据行(也可称为缓存行)需要200ns,则相应的数据取回速度需要达到3亿2千万字节/秒;如果所述微处理器以1GHz的频率运行,并且每个循环可以进行一8字节的负荷,则所述微处理器的数据消耗速度是80亿字节/秒,相应的,所述硬件预取引擎需要从DRAM中平行的取回25个缓存行以匹配程序的数据消耗速度。这个数字(即25个数据行)也可以称为所述硬件预取引擎的前瞻距离。基于现有的技术方案,普遍会预先设定较大的前瞻距离,以期能够更好的帮助硬件预取引擎跟上程序的存储器访问流。而在实际应用中,现有硬件预取引擎的前瞻距离是固定不变的,又由于硬件预取引擎不知道程序的存储器访问流的结束时间,这就意味着当程序停止访问存储器时(即所述程序的存储器访问流结束时),若所述硬件预取引擎仍然按照预设的前瞻距离从存储器中预取数据,就势必会取回多余的缓存行,而这些多余的缓存行永远不会被程序使用,这无疑增加了程序的运行时间,还会产生额外的功耗。参考上述前瞻距离为25个缓存行的示例,当所述程序的存储器访问流结束时,所述硬件预取引擎会取回25个无用的缓存行。虽然对于存储器访问流的长度较大的程序(也可称为大字串流,largestream)而言,这样的开销是可以被忽略的;但是,对于存储器访问流的长度较小的程序(也可称为小字串流,smallstream),如1KB(16个64B的缓存行)的memcpy程序,这样的开销会浪费100%的额外运行时间和功率消耗。为了解决上述技术问题,本专利技术实施例提供了一种技术方案,对于具有存储器访问需求的程序,统计所述程本文档来自技高网
...

【技术保护点】
1.一种数据预取方法,其特征在于,包括:对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;根据所述存储器访问流的长度确定前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;根据所述前瞻距离从所述存储器中预取数据。

【技术特征摘要】
1.一种数据预取方法,其特征在于,包括:对于具有存储器访问需求的程序,统计所述程序的存储器访问流的长度;根据所述存储器访问流的长度确定前瞻距离,其中,所述前瞻距离与所述存储器访问流的长度呈正比;根据所述前瞻距离从所述存储器中预取数据。2.根据权利要求1所述的数据预取方法,其特征在于,所述统计所述程序的存储器访问流的长度包括:跟踪所述程序访问所述存储器时的数据传输;根据传输的数据量确定所述存储器访问流的长度。3.根据权利要求2所述的数据预取方法,其特征在于,所述存储器访问流的长度以缓存行为单位计量。4.根据权利要求1所述的数据预取方法,其特征在于,所述根据所述存储器访问流的长度确定所述前瞻距离包括:根据所述存储器访问流的长度查找对照关系表,以确定与所述存储器访问流的长度相对应的前瞻距离。5.根据权利要求4所述的数据预取方法,其特征在于,所述对照关系表以硬编码或可配置软件的形式存储。6.一种数据预取装置,其特征在于,包括:统计模块,对于具有存储器访问需...

【专利技术属性】
技术研发人员:巴萨博·慕克吉
申请(专利权)人:展讯通信上海有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1