【技术实现步骤摘要】
【国外来华专利技术】一种数据预取方法、相关装置及系统
本专利技术涉及计算机
,尤其涉及一种数据预取方法、相关装置及系统。
技术介绍
在现有的计算机系统中,虽然处理器如CPU(CentralProcessingUnit,中央处理器)主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。若CPU工作速度较高,但内存存取速度相对较低,则造成CPU等待,降低处理速度,浪费CPU的能力。当前减少CPU与内存之间速度差异的方法主要有以下几种方式:在基本总线周期中插入等待,但这样会浪费CPU的能力;采用存取时间较快的SRAM作存储器,这样虽然解决了CPU与存储器间速度不匹配的问题,但却大幅提升了系统成本;在慢速的DRAM和快速CPU之间插入一速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高,这就是Cache法;采用新型的高速存储器。目前,一般采用Cache法减少CPU与内存之间速度差异,它使硬件系统在不大增加成本的前提下,使计算处理性能提升的一个非常有效的技术。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所述的装置,其特征在于,所述区间识别模块包括:第三标记单元,用于根据所述可执行程序被预编译过程中的数据访问规律,将以呈线性规律变化的方式密集访问同一存储单元的代码区间或者以呈线性规律变化的...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。