本發明涉及計算機
技術領域:
的處理器設計,尤其涉及一種數據預取方法、處理器和設備。
背景技術:
:現代處理器普遍采用多級高速緩存結構,以緩和處理器與主儲存器之間的性能差距。為了進一步提高處理器的執行效率和數據吞吐率,在處理器取數過程中,通常還采用數據預取技術。該技術將處理器隨后要處理的數據提前放置在高速緩存中,以減少實際訪問數據時需要的較長延遲。數據預取技術通常包括順序預取技術、跨步預取技術、鏈式預取技術,等等。順序預取是指一個接一個地連續預取數據的預取方法,例如預取:地址1的數據、地址2的數據、地址3的數據….。跨步預取是指按照一定的規律讀取數據的預取方法,例如預取:地址1的數據、地址3的數據、地址5的數據…。順序預取和跨步預取多應用于提升數據局部性較好或者訪存模式比較規律的應用程序的訪存性能。鏈式預取基于鏈式數據結構(linkeddatastructure,簡稱lds)(例如指針,鏈表,棧,圖)等不規則數據集。處理器在取數時需要執行訪存指令,從而將數據從存儲器中取到處理器核中。而對于數據的預取,處理器需要分析當前處理器的訪存模式和訪存規律,然后按照此模式或規律提前將隨后可能用到的數據取到處理器中。由于處理器預取是基于之前的訪存操作對隨后的訪存操作進行預測,因此對于規律比較簡單的訪存模式,比較容易通過傳統的順序預取或者跨步預取獲得較高性能。但是,對于鏈式數據結構,往往是先加載指針,然后再以該指針進行訪存。由于處理器無法對指針進行準確預測,因此,使用傳統的預取方法對鏈式數據結構進行預取,往往會導致較低的預取效率和準確率。技術實現要素:本發明提供一種數據預取方法、處理器和設備,提升了數據預取的效率和準確率。本發明提供的數據預取方法,包括:取訪存指令,所述訪存指令指示將指定數據長度的待訪問數據從存儲器中加載到處理器核中,且指示按照指定的訪存模式預取數據;對所述訪存指令譯碼,生成訪存請求;所述訪存請求包括預取標識,所述預取標識指示了所述指定的訪存模式;執行所述訪存請求,以將所述待訪問數據從所述存儲器中加載到所述處理器核中,并根據所述預取標識按照所述指定的訪存模式預取數據。本發明提供的處理器,包括:處理器核,用于取訪存指令,所述訪存指令指示將指定數據長度的待訪問數據從存儲器中加載到處理器核中,且指示按照指定的訪存模式預取數據;對所述訪存指令譯碼,生成訪存請求;所述訪存請求包括預取標識,所述預取標識指示了所述指定的訪存模式;存儲部件,用于執行所述訪存請求,以將所述待訪問數據從所述存儲器中加載到所述處理器核中,并根據所述預取標識按照所述指定的訪存模式預取數據。本發明提供的計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現本發明任一實施例提供的數據預取方法。本發明提供了一種數據預取方法、處理器和設備,通過訪存指令,可以給處理器提供明確的訪存模式提示,處理器可以直接根據指定的訪存模式完成數據預取,提升了處理器的處理效率、數據預取效率和準確率。附圖說明為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例提供的數據預取方法的流程圖;圖2為本發明實施例提供的數據存儲模型示意圖;圖3為本發明實施例提供的訪存指令的一種實現方式的結構示意圖;圖4為本發明實施例提供的訪存指令的另一種實現方式的結構示意圖;圖5為本發明實施例提供的處理器的結構示意圖。具體實施方式為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。本發明實施例提供的數據預取方法,可以適用于基于鏈式數據結構的預取技術,也適用于其他的預取技術。需要說明,本發明實施例提供的訪存指令,也可以適用于本申請人申請的發明名稱為《數據預取方法和內存控制器》以及發明名稱為《數據預取的實現方法和處理器》的專利申請中涉及的訪存指令(也是譯碼后的訪存請求)的相關內容。圖1為本發明實施例提供的數據預取方法的流程圖。本實施例提供的數據預取方法,執行主體可以為處理器。處理器可以包括處理器核、高速緩沖存儲器(cachememory,簡稱cache)和內存控制器,cache可以包括一級緩存(l1cache)和二級緩存(l2cache)。如圖1所示,本實施例提供的數據預取方法,可以包括:s101、取訪存指令。其中,訪存指令為處理器指令集中的一種存儲器數據加載指令。該訪存指令指示將指定數據長度的待訪問數據從存儲器中加載到處理器核中,且指示按照指定的訪存模式預取數據。在程序代碼具體實現時,訪存指令可以為程序員人為插入的,也可以是編譯器根據程序特點自動編譯生成的。其中,存儲器可以包括cache和內存。可見,本實施例提供的訪存指令,可以區分不同數據長度的數據加載,以及區分不同訪存模式的數據預取。通過訪存指令,可以為處理器提供明確的訪存模式提示。從而,處理器不需要在眾多訪存模式中自行選擇一種,而是可以直接根據訪存指令指定的訪存模式完成數據預取,提升了數據預取效率和準確性。可選的,數據長度可以包括:字節(byte)、半字(halfword)、字(word)、雙字(doubleword、dword)和四字(quadword,qword)。在計算機中,用二進制表示的0或者1稱為一位,也稱為比特(bit)。8位稱為1個字節,即,8bit=1byte。兩個字節是一個字,也稱為雙字節,即,2byte=1word=16bit。兩個字是一個雙字,即,2word=1dword=4byte=32bit。兩個雙字是一個四字,即,2dword=1qword=8byte=64bit。需要說明的是,數據長度還可以包括其他的數據長度,本實施例不做特別限定。可選的,訪存模式可以包括:順序方式、跨步方式、鏈式數據訪存方式和間接索引訪存方式。下面結合數據存儲模型、不同訪存模式對應的程序代碼,對上述的順序方式、跨步方式、鏈式數據訪存方式和間接索引訪存方式進行詳細說明。表1示出了不同訪存模式對應的程序代碼的一種示例。圖2為本發明實施例提供的數據存儲模型示意圖。在圖2中,假設每一行均為一個cache行。其中,數組a包括21個數據,分別為a[0]~a[20],存儲在第1~3行。數組b包括8個數據,分別為b[0]~b[7],存儲在第7~8行。數據a、b、c、d、e為鏈式數據,存儲在第4~7行。請參照表1和圖2。1、順序方式所謂順序方式,是指一個接一個地連續取數。程序代碼可以參考表1中第1行的示例。假設,針對圖2中的數組a,訪存指令指示了將a[3]從存儲器中加載到處理器核中。則每次取cache時,將同時預取下一行。即,取a[3]所在第一行的同時預取第二行,連續讀取16個數據。這樣,當處理器后續要訪問a[8]時,就無需再從存儲器中讀取了。2、跨步方式所謂跨步方式,是指按照一定的規律間隔取數。程序代碼可以參考表1中第2行的示例。假設,針對圖2中的數組a,取數間隔為15,則取數順序為a[3]、a[18]。訪存指令指示了將a[3]從存儲器中加載到處理器核中。則每次取cache時,將按照取數間隔同時預取相應的行。即,取a[3]所在第一行的同時預取第三行。這樣,當處理器后續要訪問a[18]時,就無需再從存儲器中讀取了。3、鏈式數據訪存方式所謂鏈式數據,物理存儲上表現為不連續或者根本沒有規律性。對于鏈式數據,上一個鏈式數據通常指示了下一個鏈式數據的存儲位置。例如,將上一次取出來的數值(或者加上一個偏移量)作為地址再進行取數。鏈式數據訪存方式對應的程序代碼可以參考表1中第3行的示例。假設,針對圖2中的數據a~e,取數過程可以為a->b->c->d->e。訪存指令指示了將b從存儲器中加載到處理器核中。則預取的cache行將根據取得的數據來決定。即,將b所在的第4行取入cache的同時,由于b(加上某一偏移量)將會作為下一次的訪存地址,因此將下一次的訪存地址所在的數據行(第7行)進行預取。這樣,當處理器后續要訪問數據c時,就無需再從存儲器中讀取了。表1:不同訪存模式對應的程序代碼4、間接索引訪存方式間接索引訪存方式每次需要對存儲器進行兩次訪問。通常,將初始偏移量(數組索引)加上基地址得到的值再作為偏移量,然后加上某一基地址得到最終的數據地址。間接索引訪存方式對應的程序代碼可以參考表1中第4行的示例。假設,針對圖2中的數組a、b,取數過程可以為a[b[0]]->a[b[1]]->…。訪存指令指示了將b[0]從存儲器中加載到處理器核中。則從存儲器得到b[0]的值的同時,計算a[b[0]]的地址,提前預取a[b[0]]。同樣,若訪存指令指示了將b[1]從存儲器中加載到處理器核中。則從存儲器得到b[1]的值的同時,計算a[b[1]]的地址,提前預取a[b[1]]。需要說明的是,訪存模式還可以包括其他的訪存模式,本實施例不做特別限定。s102、對訪存指令譯碼,生成訪存請求。其中,訪存請求可以包括預取標識,預取標識指示了指定的訪存模式。具體的,訪存請求由處理器核根據訪存指令譯碼生成,處理器核將訪存請求發送給存儲部件,由存儲部件執行。本發明對于訪存請求的具體實現方式和訪存請求中包括的其他信息不做限定。本發明中的訪存請求是在現有訪存請求的基礎上包括預取標識,用于指示訪存模式。訪存請求還包括加載地址,該加載地址中存儲有待訪問數據。需要說明,本發明對于預取標識的實現方式不做限定。可選的,可以通過設置預取標識的不同取值指示不同的訪存模式。例如,預取標識的取值為1、2、3、4時,分別對應了順序方式、跨步方式、鏈式數據訪存方式和間接索引訪存方式。可選的,每一種訪存模式對應一個預取標識,訪存指令指定的訪存模式對應的預取標識的取值可以為1,其他未指定的訪存模式對應的預取標識的取值可以為0。例如,預取標識可以包括順序預取標識、跨步預取標識、鏈式數據預取標識和間接索引預取標識,分別對應于順序方式、跨步方式、鏈式數據訪存方式和間接索引訪存方式。若鏈式數據預取標識取值為1,則說明鏈式數據訪存方式為指定的訪存模式。s103、執行訪存請求,以將待訪問數據從存儲器中加載到處理器核中,并根據預取標識按照指定的訪存模式預取數據。具體的,處理器核在完成訪存指令的譯碼之后,將生成的訪存請求發送給存儲部件。存儲部件執行該訪存請求。由于訪存請求中包括的預取標識指示了指定的訪存模式,因此,存儲部件可以實現將待訪問數據從存儲器中加載到處理器核中,并根據預取標識指示的訪存模式預取數據。可見,本實施例提供的數據預取方法,在處理器指令集中增加了可以區分訪存模式和數據長度的訪存指令。通過訪存指令,可以給處理器提供明確的訪存模式提示,處理器可以直接根據指定的訪存模式完成數據預取,提升了處理器的處理效率、數據預取效率和準確性。進一步地,作為訪存指令的一種具體實現方式,訪存指令可以包括:第一指令碼、源寄存器編號、目的寄存器編號和地址偏移值。其中,第一指令碼指示了待訪問數據的數據長度以及訪存模式,源寄存器存儲待訪問數據在存儲器中的基地址,地址偏移值指示了待訪問數據在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數據。具體的,通過訪存指令中的第一指令碼,可以實現指定數據長度的加載以及指定訪存模式的數據預取。此時,訪存指令可以稱為分離模式。在該種實現方式下,處理器待執行的訪存指令通過處理器的取指令操作預先存儲在處理器中,存儲形式如圖3所示,圖3為本發明實施例提供的訪存指令的一種實現方式的結構示意圖。其中,opcode表示第一指令碼,base表示源寄存器編號,rt表示目的寄存器編號,offset表示地址偏移值。本實施例對于opcode、base、rt、offset分別占用的比特數以及存儲順序不做特別限定。在該種實現方式下,訪存指令對應的匯編指令可以為:opcode$rt,offset($base)其中,本實施例對于匯編指令中各個參數的順序不做限定。表2訪存指令中第一指令碼示例表3第一操作碼~第二十作碼示例數據長度順序方式跨步方式鏈式數據訪存方式間接索引訪存方式字節lb-stmlb-stdlb-ldslb-ii半字lh-stmlh-stdlh-ldslh-ii字lw-stmlw-stdlw-ldslw-ii雙字ld-stmld-stdld-ldsld-ii四字lq-stmlq-stdlq-ldslq-ii可選的,作為第一指令碼的實現方式,請參照表2。作為第一操作碼~第二十操作碼的一種示例,請參見表3。第一指令碼可以為第一操作碼,第一操作碼指示了待訪問數據的數據長度為字節、訪存模式為順序方式;或者,第一指令碼可以為第二操作碼,第二操作碼指示了待訪問數據的數據長度為半字、訪存模式為順序方式;或者,第一指令碼可以為第三操作碼,第三操作碼指示了待訪問數據的數據長度為字、訪存模式為順序方式;或者,第一指令碼可以為第四操作碼,第四操作碼指示了待訪問數據的數據長度為雙字、訪存模式為順序方式;或者,第一指令碼可以為第五操作碼,第五操作碼指示了待訪問數據的數據長度為四字、訪存模式為順序方式;或者,第一指令碼可以為第六操作碼,第六操作碼指示了待訪問數據的數據長度為字節、訪存模式為跨步方式;或者,第一指令碼可以為第七操作碼,第七操作碼指示了待訪問數據的數據長度為半字、訪存模式為跨步方式;或者,第一指令碼可以為第八操作碼,第八操作碼指示了待訪問數據的數據長度為字、訪存模式為跨步方式;或者,第一指令碼可以為第九操作碼,第九操作碼指示了待訪問數據的數據長度為雙字、訪存模式為跨步方式;或者,第一指令碼可以為第十操作碼,第十操作碼指示了待訪問數據的數據長度為四字、訪存模式為跨步方式;或者,第一指令碼可以為第十一操作碼,第十一操作碼指示了待訪問數據的數據長度為字節、訪存模式為鏈式數據訪存方式;或者,第一指令碼可以為第十二操作碼,第十二操作碼指示了待訪問數據的數據長度為半字、訪存模式為鏈式數據訪存方式;或者,第一指令碼可以為第十三操作碼,第十三操作碼指示了待訪問數據的數據長度為字、訪存模式為鏈式數據訪存方式;或者,第一指令碼可以為第十四操作碼,第十四操作碼指示了待訪問數據的數據長度為雙字、訪存模式為鏈式數據訪存方式;或者,第一指令碼可以為第十五操作碼,第十五操作碼指示了待訪問數據的數據長度為四字、訪存模式為鏈式數據訪存方式;或者,第一指令碼可以為第十六操作碼,第十六操作碼指示了待訪問數據的數據長度為字節、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十七操作碼,第十七操作碼指示了待訪問數據的數據長度為半字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十八操作碼,第十八操作碼指示了待訪問數據的數據長度為字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十九操作碼,第十九操作碼指示了待訪問數據的數據長度為雙字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第二十操作碼,第二十操作碼指示了待訪問數據的數據長度為四字、訪存模式為間接索引訪存方式。根據表3,下面通過幾個示例說明上述實施方式提供的訪存指令。1)訪存指令的匯編指令可以為:lh-stm$base_a,$x,$i;該訪存指令指示了將一個半字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照順序方式預取數據。2)訪存指令的匯編指令可以為:lw-lds$base_a,$x,$i該訪存指令指示了將一個字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照鏈式數據預取方式預取數據。3)訪存指令的匯編指令可以為:ld-ii$base_a,$x,$i該訪存指令指示了將一個雙字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照間接索引訪存方式預取數據。需要說明,表3僅是第一操作碼~第二十操作碼的一種示例,本實施例對于第一操作碼~第二十操作碼的實現方式不做限定。進一步地,作為訪存指令的另一種具體實現方式,訪存指令可以包括:第二指令碼、源寄存器編號、目的寄存器編號、地址偏移值和模式值。其中,第二指令碼指示了待訪問數據的數據長度,模式值指示了訪存模式,源寄存器存儲待訪問數據在存儲器中的基地址,地址偏移值指示了待訪問數據在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數據。具體的,通過訪存指令中的第二指令碼,可以實現指定數據長度的加載,通過訪存指令中的模式值,可以實現指定訪存模式的數據預取。此時,訪存指令可以稱為聚合模式,聚合模式與分離模式相對應。當指令集架構中的剩余指令槽充足時,可以選擇使用分離模式。當指令集架構中的剩余指令槽比較有限時,可以選擇使用聚合模式。在該種實現方式下,處理器待執行的訪存指令通過處理器的取指令操作預先存儲在處理器中,存儲形式如圖4所示,圖4為本發明實施例提供的訪存指令的另一種實現方式的結構示意圖。其中,opcode表示第二指令碼,base表示源寄存器編號,rt表示目的寄存器編號,offset表示地址偏移值,mode表示模式值。本實施例對于opcode、base、rt、offset、mode分別占用的比特數以及存儲順序不做特別限定。例如,mode可以占用3比特,二進制取值可以為000、001、010、011、100、101、110、111,每個取值對應一種訪存模式,共計對應8種訪存模式。在該種實現方式下,訪存指令對應的匯編指令可以為:opcode$rt,offset($base),mode其中,本實施例對于匯編指令中各個參數的順序不做限定。可選的,作為第二指令碼的實現方式,請參照表4。作為第二十一操作碼~第二十五操作碼的一種示例,請參見表5。第二指令碼可以為第二十一操作碼,第二十一操作碼指示了待訪問數據的數據長度為字節;或者,第二指令碼可以為第二十二操作碼,第二十二操作碼指示了待訪問數據的數據長度為半字;或者,第二指令碼可以為第二十三操作碼,第二十三操作碼指示了待訪問數據的數據長度為字;或者,第二指令碼可以為第二十四操作碼,第二十四操作碼指示了待訪問數據的數據長度為雙字;或者,第二指令碼可以為第二十五操作碼,第二十五操作碼指示了待訪問數據的數據長度為四字。表4訪存指令中第二指令碼和模式值示例表5第二十一操作碼~第二十五操作碼、第一數值~第四數值示例可選的,作為模式值的實現方式,請參照表4。作為第一數值~第四數值的一種示例,請參見表5,取值為十進制數值。其中,模式值可以為第一數值,第一數值指示了訪存模式為順序方式;或者,模式值可以為第二數值,第二數值指示了訪存模式為跨步方式;或者,模式值可以為第三數值,第三數值指示了訪存模式為鏈式數據訪存方式;或者,模式值可以為第四數值,第四數值指示了訪存模式為間接索引訪存方式。根據表5,下面通過幾個示例說明上述實施方式提供的訪存指令。1)訪存指令的匯編指令可以為:lw-m$base_a,$x,1,$i該訪存指令指示了將一個字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照跨步方式(模式值為1)預取數據。2)訪存指令的匯編指令可以為:lw-m$base_a,$x,2,$i該訪存指令指示了將一個字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照鏈式數據預取方式(模式值為1)預取數據。3)訪存指令的匯編指令可以為:ld-m$base_a,$x,3,$i該訪存指令指示了將一個雙字長度的數據從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照間接索引方式預取數據。需要說明,表5僅是第二十一操作碼~第二十五操作碼、第一數值~第四數值的一種示例,本實施例對于第二十一操作碼~第二十五操作碼、第一數值~第四數值的實現方式不做限定。本實施例提供了一種數據預取方法,包括:取訪存指令,訪存指令指示將指定數據長度的待訪問數據從存儲器中加載到處理器核中,且指示按照指定的訪存模式預取數據,對訪存指令譯碼,生成訪存請求,訪存請求包括預取標識,預取標識指示了指定的訪存模式,執行訪存請求,以將待訪問數據從存儲器中加載到處理器核中,并根據預取標識按照指定的訪存模式預取數據。本實施例提供的數據預取方法,訪存指令可以區分數據長度和訪存模式,通過訪存指令可以給處理器提供明確的訪存模式提示,處理器直接根據指定的訪存模式完成數據預取,提升了處理器的處理效率、數據預取效率和準確性。圖5為本發明實施例提供的處理器的結構示意圖。本實施例提供的處理器,用于執行圖1~圖4所示實施例提供的數據預取方法。如圖5所示,本實施例提供的處理器,可以包括:處理器核11,用于取訪存指令,訪存指令指示將指定數據長度的待訪問數據從存儲器中加載到處理器核中,且指示按照指定的訪存模式預取數據。對訪存指令譯碼,生成訪存請求,訪存請求包括預取標識,預取標識指示了指定的訪存模式。存儲部件12,用于執行訪存請求,以將待訪問數據從存儲器中加載到處理器核中,并根據預取標識按照指定的訪存模式預取數據。其中,存儲部件12可以包括一級高速緩沖存儲器、二級高速緩沖存儲器和內存控制器。可選的,訪存模式包括:順序方式、跨步方式、鏈式數據訪存方式和間接索引訪存方式。可選的,數據長度包括:字節、半字、字、雙字和四字。可選的,訪存指令包括:第一指令碼、源寄存器編號、目的寄存器編號和地址偏移值;第一指令碼指示了待訪問數據的數據長度以及訪存模式,源寄存器存儲待訪問數據在存儲器中的基地址,地址偏移值指示了待訪問數據在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數據。可選的,第一指令碼為第一操作碼,第一操作碼指示了待訪問數據的數據長度為字節、訪存模式為順序方式;或者,第一指令碼為第二操作碼,第二操作碼指示了待訪問數據的數據長度為半字、訪存模式為順序方式;或者,第一指令碼為第三操作碼,第三操作碼指示了待訪問數據的數據長度為字、訪存模式為順序方式;或者,第一指令碼為第四操作碼,第四操作碼指示了待訪問數據的數據長度為雙字、訪存模式為順序方式;或者,第一指令碼為第五操作碼,第五操作碼指示了待訪問數據的數據長度為四字、訪存模式為順序方式;或者,第一指令碼為第六操作碼,第六操作碼指示了待訪問數據的數據長度為字節、訪存模式為跨步方式;或者,第一指令碼為第七操作碼,第七操作碼指示了待訪問數據的數據長度為半字、訪存模式為跨步方式;或者,第一指令碼為第八操作碼,第八操作碼指示了待訪問數據的數據長度為字、訪存模式為跨步方式;或者,第一指令碼為第九操作碼,第九操作碼指示了待訪問數據的數據長度為雙字、訪存模式為跨步方式;或者,第一指令碼為第十操作碼,第十操作碼指示了待訪問數據的數據長度為四字、訪存模式為跨步方式;或者,第一指令碼為第十一操作碼,第十一操作碼指示了待訪問數據的數據長度為字節、訪存模式為鏈式數據訪存方式;或者,第一指令碼為第十二操作碼,第十二操作碼指示了待訪問數據的數據長度為半字、訪存模式為鏈式數據訪存方式;或者,第一指令碼為第十三操作碼,第十三操作碼指示了待訪問數據的數據長度為字、訪存模式為鏈式數據訪存方式;或者,第一指令碼為第十四操作碼,第十四操作碼指示了待訪問數據的數據長度為雙字、訪存模式為鏈式數據訪存方式;或者,第一指令碼為第十五作碼,第十五操作碼指示了待訪問數據的數據長度為四字、訪存模式為鏈式數據訪存方式;或者,第一指令碼為第十六操作碼,第十六操作碼指示了待訪問數據的數據長度為字節、訪存模式為間接索引訪存方式;或者,第一指令碼為第十七操作碼,第十七操作碼指示了待訪問數據的數據長度為半字、訪存模式為間接索引訪存方式;或者,第一指令碼為第十八操作碼,第十八操作碼指示了待訪問數據的數據長度為字、訪存模式為間接索引訪存方式;或者,第一指令碼為第十九操作碼,第十九操作碼指示了待訪問數據的數據長度為雙字、訪存模式為間接索引訪存方式;或者,第一指令碼為第二十作碼,第二十操作碼指示了待訪問數據的數據長度為四字、訪存模式為間接索引訪存方式。可選的,訪存指令包括:第二指令碼、源寄存器編號、目的寄存器編號、地址偏移值和模式值;第二指令碼指示了待訪問數據的數據長度,模式值指示了訪存模式,源寄存器存儲待訪問數據在存儲器中的基地址,地址偏移值指示了待訪問數據在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數據。可選的,第二指令碼為第二十一操作碼,第二十一操作碼指示了待訪問數據的數據長度為字節;或者,第二指令碼為第二十二操作碼,第二十二操作碼指示了待訪問數據的數據長度為半字;或者,第二指令碼為第二十三操作碼,第二十三操作碼指示了待訪問數據的數據長度為字;或者,第二指令碼為第二十四操作碼,第二十四操作碼指示了待訪問數據的數據長度為雙字;或者,第二指令碼為第二十五操作碼,第二十五操作碼指示了待訪問數據的數據長度為四字。可選的,模式值為第一數值,第一數值指示了訪存模式為順序方式;或者,模式值為第二數值,第二數值指示了訪存模式為跨步方式;或者,模式值為第三數值,第三數值指示了訪存模式為鏈式數據訪存方式;或者,模式值為第四數值,第四數值指示了訪存模式為間接索引訪存方式。本實施例提供的處理器,用于執行圖1~圖4所示方法實施例提供的數據預取方法,其技術原理和技術效果類似,此處不再贅述。本發明還提供一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執行時實現圖1~圖4任一方法實施例提供的數據預取方法的方法步驟。本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。當前第1頁12