一種數據的預取方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機領域,尤其涉及一種數據的預取方法及裝置。
【背景技術】
[0002]預取技術是軟件性能優化的關鍵技術之一,是指在處理器進行運算時,提前將處理器運算將要使用的數據從內存存入高速緩沖存儲器Cache中,當處理器需要這些數據時,可以直接從高速緩沖存儲器中獲得這些數據。由于處理器從高速緩沖存儲器中讀取數據的時間遠遠小于從內存中讀取數據的時間,并且預取過程可以與處理器運算過程并行執行,因此大大降低了處理器訪問存儲器時的延遲。
[0003]現有的預取技術通常分為硬件預取和軟件預取,這兩種預取都支持指令的預取(即指令代碼的預取)和數據的預取。其中,在采用軟件預取的方式對數據進行預取時,一般通過指令的方式實現,如Intel x86處理器中的PREFETCH指令,MIPS (Mill1nInstruct1ns Per Second,單字長定點指令平均執行速度)指令集中的PERF指令以及ARM (Advanced Reduced Instruct1n Set Computer Machines,精簡指令集微處理器)指令集中的PLD指令。
[0004]現有的一條預取指令只能根據該預取指令所指示的一個地址將數據預取到高速緩沖存儲器中,而實際的數據特點是數量多且離散的,因此在對這些離散的數據進行預取時,不同位置的數據需要執行不同的預取指令,這些預取指令耗費了大量的處理器資源,增加了軟件開發的復雜度。
【發明內容】
[0005]本發明的實施例提供一種數據的預取方法及裝置,能夠通過執行一條預取指令實現將多個離散的數據預取到高速緩沖存儲器中,節省了處理器資源,降低軟件開發的復雜度。
[0006]為達到上述目的,本發明的實施例采用如下技術方案:
[0007]第一方面,本發明實施例提供一種數據的預取方法,包括:
[0008]中央處理器CPU獲取預取指令,其中,所述預取指令包括地址列表信息的標識,所述預取指令用于觸發所述CPU將內存中的至少兩個待預取數據預取到高速緩沖存儲器中,所述至少兩個待預取數據為離散數據;
[0009]所述CPU根據所述地址列表信息的標識,獲取所述地址列表信息;
[0010]所述CPU根據所述地址列表信息,將內存中的至少兩個待預取數據預取到高速緩沖存儲器中。
[0011 ] 本發明實施例提供的預取方法中,CPU能夠獲取預取指令,根據預取指令查找到所述地址列表信息,并根據地址列表信息將內存中的至少兩個待預取數據預取到高速緩沖存儲器中。由于至少兩個待預取數據為離散數據,與傳統的一條預取指令只能根據該預取指令所指示的一個地址將數據預取到高速緩沖存儲器中的方法相比,能夠通過執行一條預取指令實現將多個離散的數據預取到高速緩沖存儲器中,節省了處理器資源,降低軟件開發的復雜度。
[0012]進一步地,所述地址列表信息包括所述至少兩個待預取數據在內存中的地址信息;
[0013]所述CPU根據所述地址列表信息,將內存中的至少兩個待預取數據預取到高速緩沖存儲器中,具體包括:
[0014]所述CPU根據所述地址列表信息中所述至少兩個待預取數據在內存中的地址信息,將內存中的所述至少兩個待預取數據預取到高速緩沖存儲器中。
[0015]本發明實施例提供的預取方法中,CPU根據所述地址列表信息中所述至少兩個待預取數據在內存中的地址信息,將內存中的所述至少兩個待預取數據預取到高速緩沖存儲器中。通過配置在CPU內部的不同的地址列表信息,能夠實現對不同的多個離散的數據進行預取,節省了處理器資源。
[0016]進一步地,對于所述至少兩個待預取數據中的任意一個待預取數據,所述待預取數據在內存中的地址信息包括基地址和相對偏移地址,其中,所述基地址為所述待預取數據所屬的數據結構的首地址,所述相對偏移地址為所述待預取數據在所述數據結構的地址相對于所述數據結構的首地址的偏移量。
[0017]進一步地,所述CPU根據所述地址列表信息中所述至少兩個待預取數據在內存中的地址信息,將內存中的所述至少兩個待預取數據預取到高速緩沖存儲器中,具體包括:
[0018]所述CPU根據所述至少兩個待預取數據的所述基地址和所述相對偏移地址,計算所述至少兩個待預取數據在內存中的地址;
[0019]所述CPU將所述至少兩個待預取數據預取到高速緩沖存儲器中。
[0020]本發明實施例提供的預取方法中,所述待預取數據在內存中的地址信息包括基地址和相對偏移地址,通過這種記錄地址的方式,可以將屬于同一數據結構的待預取數據進行歸類。
[0021]第二方面,本發明實施例提供一種中央處理器CPU,包括獲取模塊和預取模塊;
[0022]所述獲取模塊,用于獲取預取指令,其中,所述預取指令包括地址列表信息的標識,所述預取指令用于觸發所述CPU將內存中的至少兩個待預取數據預取到高速緩沖存儲器中,所述至少兩個待預取數據為離散數據;
[0023]所述獲取模塊,還用于在所述獲取模塊獲取預取指令后,獲取所述地址列表信息;
[0024]所述預取模塊,用于在所述獲取模塊獲取所述地址列表信息后,根據所述地址列表信息,將內存中的至少兩個待預取數據預取到高速緩沖存儲器中。
[0025]本發明實施例提供的CPU的技術效果可以參見上述第一方面中CPU執行的預取方法中描述的CPU的技術效果,此處不再贅述。
[0026]進一步地,所述地址列表信息包括所述至少兩個待預取數據在內存中的地址信息;
[0027]所述預取模塊,具體用于在所述獲取模塊獲取所述地址列表信息后,根據所述地址列表信息中所述至少兩個待預取數據在內存中的地址信息,將內存中的所述至少兩個待預取數據預取到高速緩沖存儲器中
[0028]進一步地,對于所述至少兩個待預取數據中的任意一個待預取數據,所述待預取數據在內存中的地址信息包括基地址和相對偏移地址,其中,所述基地址為所述待預取數據所屬的數據結構的首地址,所述相對偏移地址為所述待預取數據在所述數據結構的地址相對于所述數據結構的首地址的偏移量。
[0029]進一步地,所述預取模塊,具體包括計算子模塊和預取子模塊;
[0030]所述計算子模塊,用于在所述獲取模塊獲取所述地址列表信息后,根據所述至少兩個待預取數據的所述基地址和所述相對偏移地址,計算所述至少兩個待預取數據在內存中的地址;
[0031]所述預取子模塊,用于在所述計算子模塊計算所述至少兩個待預取數據在內存中的地址后,將所述至少兩個待預取數據預取到高速緩沖存儲器中。
[0032]第三方面,本發明實施例還提供一種終端,包括存儲器、具有第二方面任意特征的處理器、通信接口和系統總線;
[0033]所述存儲器、所述處理器和所述通信接口通過所述系統總線連接,所述存儲器用于存儲計算機指令,所述處理器用于執行所述存儲器存儲的計算機指令,以使所述終端執行如上述第一方面或者第一方面的任意一種可選方式中所述的預取方法。
[0034]進一步地,所述存儲器還用于存儲待預取數據。
[0035]本發明實施例提供一種數據的預取方法及裝置,通過中央處理器CPU獲取預取指令,其中,所述預取指令包括地址列表信息的標識,所述預取指令用于觸發所述CPU將內存中的至少兩個待預取數據預取到高速緩沖存儲器中,所述至少兩個待預取數據為離散數據;所述CPU根據所述地址列表信息的標識,獲取所述地址列表信息;所述CPU根據所述地址列表信息,將內存中的至少兩個待預取數據預取到高速緩沖存儲器中。基于上述實施例的描述,CPU能夠獲取預取指令,根據預取指令查找到所述地址列表信息,并根據地址列表信息將內存中的至少兩個待預取數據預取到高速緩沖存儲器中。由于至少兩個待預取數據為離散數據,與傳統的一條預取指令只能根據該預取指令所指示的一個地址將數據預取到高速緩沖存儲器中的方法相比,能夠通過執行一條預取指令實現將多個離散的數據預取到高速緩沖存儲器中,節省了處理器資源,降低軟件開發的復雜度。
【附圖說明】
[0036]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0037]圖1為現有技術中硬件預取的示意圖;
[0038]圖2為現有技術中軟件預取的示意圖;
[0039]圖3為現有技術中某函數訪問的數據結構示意圖;
[0040]圖4為本發明實施例提供的一種數據的預取方法的流程示意圖一;
[0041]圖5為本發明實施例提供的一種數據的預取方法的流程示意圖二;
[0042]圖6為本發明實施例提供的一種數據的預取方法的流程示意圖三;
[0043]圖7為本發明實施例提供的一種數據的預取方法的示意圖;
[0044]圖8為本發明實施例提供的一種CPU的結構示意圖一;
[0045]圖9為本發明實施例提供的一種CPU的結構示意圖二 ;
[0046]圖10為本發明實施例提供的一種終端的硬件示意圖一;
[0047]圖11為本發明實施例提供的一種終端的硬件示意圖二。
【具體實施