一种数据预取方法、相关装置及系统制造方法及图纸

技术编号:9721750 阅读:122 留言:0更新日期:2014-02-27 14:48
本发明专利技术实施例公开了一种数据预取方法、相关装置及系统,其中,所述方法包括运行可执行程序;当运行到插入在所述可执行程序中的预取代码时,根据该预取代码的指示对到数据存储器中预取数据进行控制;其中,所述根据该预取代码的指示对到数据存储器中预取数据进行控制包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能到数据存储器中预取数据;若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能停止到数据存储器中预取数据。采用本发明专利技术,可直接控制缓存器等进行数据预取的装置的预取功能的开启或关闭,降低了功耗,并且可有效避免预取误操作带来的缓存污染问题。

【技术实现步骤摘要】
【国外来华专利技术】一种数据预取方法、相关装置及系统
本专利技术涉及计算机
,尤其涉及一种数据预取方法、相关装置及系统。
技术介绍
在现有的计算机系统中,虽然处理器如CPU(CentralProcessingUnit,中央处理器)主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。若CPU工作速度较高,但内存存取速度相对较低,则造成CPU等待,降低处理速度,浪费CPU的能力。当前减少CPU与内存之间速度差异的方法主要有以下几种方式:在基本总线周期中插入等待,但这样会浪费CPU的能力;采用存取时间较快的SRAM作存储器,这样虽然解决了CPU与存储器间速度不匹配的问题,但却大幅提升了系统成本;在慢速的DRAM和快速CPU之间插入一速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高,这就是Cache法;采用新型的高速存储器。目前,一般采用Cache法减少CPU与内存之间速度差异,它使硬件系统在不大增加成本的前提下,使计算处理性能提升的一个非常有效的技术。Cache的工作原理是基于程序访问的局部性。对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。虽然数据分布的这种集中倾向不如指令明显,但是对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速但容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器Cache。系统正是依据局部性原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。CPU对存储器进行数据请求时,通常先访问Cache。由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率,即CPU在任一时刻从Cache中可靠获取数据的几率。命中率越高,正确获取数据的可靠性就越大。为了提高数据的命中率,就需要选择适当的数据预取方式。数据预取技术是提高计算机系统处理速度的有效方法。预取是指在指令或数据即将访问之前,将所需指令或数据提前从内存取至Cache,以达到访问时Cache命中的目的。针对预取的对象是指令还是数据,可分为指令预取和数据预取。目前使用的预取技术大多为软硬件结合预取技术。软硬件结合的预取技术中,首先确定任务中需要预取数据的程序段,然后由计算机系统的硬件来决定预取的数据的数目并到内存中预取相应的数据流。专利技术人发现,现有技术中的软硬件结合的预取方式预取数据时,在任务对应的可执行程序的运行过程中,硬件需要一直处于预取状态,会带来不必要的能量消耗,并且硬件一直处理预取状态还可能产生不必要的预取操作,导致Cache污染等问题。
技术实现思路
本专利技术实施例提供一种数据预取方法、相关装置及系统,可控制硬件的预取状态的开启和关闭,以节约功耗并一定程度上避免Cache污染。第一方面,本专利技术实施例提供了一种数据预取方法,包括:运行可执行程序;当运行到插入在所述可执行程序中的预取代码时,根据该预取代码的指示,对到数据存储器预取数据进行控制;其中,所述根据该预取代码的指示对到数据存储器中预取数据进行控制包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能以到数据存储器中预取数据;若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能以停止到数据存储器中预取数据。结合第一方面,在第一种可能的实现方式中,所述运行可执行程序之前,还包括:在所述可执行程序的预编译过程中,识别确定出所述可执行程序中密集访存的代码区间,并在所述密集访存的代码区间插入所述预取代码。结合第一方面,或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:检测到从所述可执行程序切换至其他程序时,存储当前所述可执行程序所处的预取状态,所述预取状态包括预取已开启的状态和预取已关闭的状态;检测到由所述其他程序切换回所述可执行程序时,查找存储的所述可执行程序所处的预取状态;若预取状态包括预取已开启的状态,控制开启预取功能以到数据存储器中预取数据;若预取状态包括预取已关闭的状态,控制关闭预取功能以停止到数据存储器中预取数据。结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能以到数据存储器中预取数据,包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,设置预取指令中的预取开启控制位为有效得到控制指令,以控制开启缓存器的预取功能以到数据存储器中预取数据;所述若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能以停止到数据存储器中预取数据,包括:若所述预取代码包括用于指示关闭预取功能的预取关闭代码,设置预取指令中的预取结束控制位为有效得到控制指令,以控制关闭缓存器的预取功能以停止到数据存储器中预取数据。结合第一方面,第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据该预取代码的指示对到数据存储器中预取数据进行控制,还包括:若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取模式的预取模式代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取模式的预取模式控制位的模式值得到控制指令,以控制开启缓存器的预取功能并按模式值所指示的预取模式到数据存储器中预取数据的预取控制指令;若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取的数据量大小的预取数代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取的数据量大小的预取数控制位的数量值得到控制指令,以控制开启缓存器的预取功能并按数量值所指示的数量到数据存储器中预取数据。结合第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,或者第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述识别确定出所述可执行程序中密集访存的代码区间,包括:查找预编译过程中所述可执行程序中预置的预取关键字;根据预取关键字标记出候选密集访存的代码区间;判断所述被标记为候选密集访存的代码区间是否满足预取条件;若满足,则将所述被标记为候选密集访存的代码区间确定为所述可执行程序的密集访存的代码区间。结合第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实本文档来自技高网
...
一种数据预取方法、相关装置及系统

【技术保护点】
一种数据预取方法,其特征在于,包括:运行可执行程序;当运行到插入在所述可执行程序中的预取代码时,根据该预取代码的指示对到数据存储器中预取数据进行控制;其中,所述根据该预取代码的指示对到数据存储器中预取数据进行控制包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能到数据存储器中预取数据;若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能停止到数据存储器中预取数据。

【技术特征摘要】
【国外来华专利技术】1.一种数据预取方法,其特征在于,包括:运行可执行程序;当运行到插入在所述可执行程序中的预取代码时,根据该预取代码的指示对到数据存储器中预取数据进行控制;其中,所述根据该预取代码的指示对到数据存储器中预取数据进行控制包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能以到数据存储器中预取数据;若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能以停止到数据存储器中预取数据;所述方法还包括:检测到从所述可执行程序切换至其他程序时,存储当前所述可执行程序所处的预取状态,所述预取状态包括预取已开启的状态和预取已关闭的状态;检测到由所述其他程序切换回所述可执行程序时,查找存储的所述可执行程序所处的预取状态;若预取状态包括预取已开启的状态,控制开启预取功能以到数据存储器中预取数据;若预取状态包括预取已关闭的状态,控制关闭预取功能以停止到数据存储器中预取数据。2.如权利要求1所述的方法,其特征在于,所述运行可执行程序之前,还包括:在所述可执行程序的预编译过程中,识别确定出所述可执行程序中密集访存的代码区间,并在所述密集访存的代码区间插入所述预取代码。3.如权利要求1所述的方法,其特征在于,所述若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能以到数据存储器中预取数据,包括:若所述预取代码包括用于指示开启预取功能的预取开启代码,设置预取指令中的预取开启控制位为有效得到控制指令,以控制开启缓存器的预取功能以到数据存储器中预取数据;所述若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能以停止到数据存储器中预取数据,包括:若所述预取代码包括用于指示关闭预取功能的预取关闭代码,设置预取指令中的预取结束控制位为有效得到控制指令,以控制关闭缓存器的预取功能以停止到数据存储器中预取数据。4.如权利要求1所述的方法,其特征在于,所述根据该预取代码的指示对到数据存储器中预取数据进行控制,还包括:若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取模式的预取模式代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取模式的预取模式控制位的模式值得到控制指令,以控制开启缓存器的预取功能并按模式值所指示的预取模式到数据存储器中预取数据的预取控制指令;若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取的数据量大小的预取数代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取的数据量大小的预取数控制位的数量值得到控制指令,以控制开启缓存器的预取功能并按数量值所指示的数量到数据存储器中预取数据。5.如权利要求2所述的方法,其特征在于,所述识别确定出所述可执行程序中密集访存的代码区间,包括:查找预编译过程中所述可执行程序中预置的预取关键字;根据预取关键字标记出候选密集访存的代码区间;判断所述被标记为候选密集访存的代码区间是否满足预取条件;若满足,则将所述被标记为候选密集访存的代码区间确定为所述可执行程序的密集访存的代码区间。6.如权利要求2所述的方法,其特征在于,所述识别确定出所述可执行程序中密集访存的代码区间,包括:识别确定出所述可执行程序中为循环体的代码区间;将所述可执行程序中被识别为循环体的代码区间标记为候选密集访存的代码区间;判断所述被标记为候选密集访存的代码区间是否满足预取条件;若满足,则将所述被标记为候选密集访存的代码区间确定为所述可执行程序中密集访存的代码区间。7.如权利要求2所述的方法,其特征在于,所述识别确定出所述可执行程序中密集访存的代码区间,包括:根据所述可执行程序被预编译过程中的数据访问规律,将以呈线性规律变化的方式访问存储单元的代码区间标记为候选密集访存的代码区间;判断所述被标记为候选密集访存的代码区间是否满足预取条件;若满足,则将所述被标记为候选密集访存的代码区间确定为所述可执行程序中密集访存的代码区间。8.如权利要求2所述的方法,其特征在于,所述在所述密集访存的代码区间插入所述预取代码,包括:在所述密集访存的代码区间的代码入口处插入预取开启代码;在所述密集访存的代码区间的代码出口处插入预取关闭代码。9.如权利要求8所述的方法,其特征在于,所述在所述密集访存的代码区间插入所述预取代码,还包括:在所述密集访存的代码区间的代码入口处插入预取模式代码;或在所述密集访存的代码区间的代码入口处插入预取数代码。10.如权利要求1-9任一项所述的方法,其特征在于,还包括:根据预取控制寄存器配置的预取缓存配置信息,将从数据存储器中预取的数据缓存到缓存器中或者缓存到专用于缓冲预取到的数据的预取缓冲器中;其中,将从数据存储器中预取的数据缓存到缓存器中时,若缓存器的存储单元分配超过预设时间值、或者缓存器正在存入其他数据,则将所述数据存储器中预取的数据缓存到预取缓冲器中。11.如权利要求1-9任一项所述的方法,其特征在于,还包括:根据对缓存器中缓存的数据的命中率,获取缓存器中命中率超过预设阈值的数据或者连续存储的数组数据;将获取的数据或者连续存储的数组数据存储到一级缓存器中。12.一种数据预取控制装置,其特征在于,包括:程序运行模块,用于运行可执行程序;预取控制模块,用于当运行到插入在所述可执行程序中的预取代码时,根据该预取代码的指示对到数据存储器中预取数据进行控制;其中,所述预取控制模块具体包括:预取开启控制单元,用于若所述预取代码包括用于指示开启预取功能的预取开启代码,控制开启预取功能以到数据存储器中预取数据;预取关闭控制单元,用于若所述预取代码包括用于指示关闭预取功能的预取关闭代码,控制关闭预取功能以停止到数据存储器中预取数据;所述装置还包括:状态存储模块,用于在检测到从所述可执行程序切换至其他程序时,存储当前所述可执行程序所处的预取状态,所述预取状态包括预取已开启的状态和预取已关闭的状态;查找模块,用于在检测到由所述其他程序切换回所述可执行程序时,查找存储的所述可执行程序所处的预取状态;所述预取控制模块还用于若预取状态包括预取已开启的状态,控制开启预取功能以到数据存储器中预取数据;若预取状态包括预取已关闭的状态,控制关闭预取功能以停止到数据存储器中预取数据。13.如权利要求12所述的装置,其特征在于,还包括:区间识别模块,用于在所述可执行程序的预编译过程中,识别确定出所述可执行程序中密集访存的代码区间;代码插入模块,用于在所述密集访存的代码区间插入所述预取代码。14.如权利要求12所述的装置,其特征在于,所述预取开启控制单元,具体用于若所述预取代码包括用于指示开启预取功能的预取开启代码,设置预取指令中的预取开启控制位为有效得到控制指令,以控制开启缓存器的预取功能以到数据存储器中预取数据;所述预取关闭控制单元,具体用于若所述预取代码包括用于指示关闭预取功能的预取关闭代码,设置预取指令中的预取结束控制位为有效得到控制指令,以控制关闭缓存器的预取功能以停止到数据存储器中预取数据。15.如权利要求12所述的装置,其特征在于,所述预取控制模块还包括:模式控制单元,用于若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取模式的预取模式代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取模式的预取模式控制位的模式值得到控制指令,以控制开启缓存器的预取功能并按模式值所指示的预取模式到数据存储器中预取数据的预取控制指令;预取数控制单元,用于若所述预取代码包括用于指示开启预取功能的预取开启代码和用于指示预取的数据量大小的预取数代码,设置预取指令中的预取开启控制位为有效,并设置用于指示预取的数据量大小的预取数控制位的数量值得到控制指令,以控制开启缓存器的预取功能并按数量值所指示的数量到数据存储器中预取数据。16.如权利要求13所述的装置,其特征在于,所述区间识别模块包括:第一标记单元,用于查找预编译过程中所述可执行程序中预置的预取关键字;并根据预取关键字标记出候选密集访存的代码区间;第一判断单元,用于判断所述被标记为候选密集访存的代码区间是否满足预取条件;第一确定单元,用于在所述第一判断单元的判断结果为满足时,将所述被标记为候选密集访存的代码区间确定为所述可执行程序的密集访存的代码区间。17.如权利要求13所述的装置,其特征在于,所述区间识别模块包括:第二标记单元,用于识别确定出所述可执行程序中为循环体的代码区间;并将所述可执行程序中被识别为循环体的代码区间标记为候选密集访存的代码区间;第二判断单元,用于判断所述被标记为候选密集访存的代码区间是否满足预取条件;第二确定单元,用于在所述第二判断单元的判断结果为满足时,将所述被标记为候选密集访存的代码区间确定为所述可执行程序中密集访存的代码区间。18.如权利要求13所述的装置,其特征在于,所述区间识别模块包括:第三标记单元,用于根据所述可执行程序被预编译过程中的数据访问规律,将以呈线性规律变化的方式密集访问同一存储单元的代码区间或者以呈线性规律变化的...

【专利技术属性】
技术研发人员:钟云德陈龙毕波
申请(专利权)人:华为技术有限公司
类型:
国别省市:

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

1