欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)預(yù)取方法、處理器和設(shè)備與流程

文檔序號:11286187閱讀:722來源:國知局
數(shù)據(jù)預(yù)取方法、處理器和設(shè)備與流程
本發(fā)明涉及計算機
技術(shù)領(lǐng)域
的處理器設(shè)計,尤其涉及一種數(shù)據(jù)預(yù)取方法、處理器和設(shè)備。
背景技術(shù)
:現(xiàn)代處理器普遍采用多級高速緩存結(jié)構(gòu),以緩和處理器與主儲存器之間的性能差距。為了進一步提高處理器的執(zhí)行效率和數(shù)據(jù)吞吐率,在處理器取數(shù)過程中,通常還采用數(shù)據(jù)預(yù)取技術(shù)。該技術(shù)將處理器隨后要處理的數(shù)據(jù)提前放置在高速緩存中,以減少實際訪問數(shù)據(jù)時需要的較長延遲。數(shù)據(jù)預(yù)取技術(shù)通常包括順序預(yù)取技術(shù)、跨步預(yù)取技術(shù)、鏈式預(yù)取技術(shù),等等。順序預(yù)取是指一個接一個地連續(xù)預(yù)取數(shù)據(jù)的預(yù)取方法,例如預(yù)?。旱刂?的數(shù)據(jù)、地址2的數(shù)據(jù)、地址3的數(shù)據(jù)….??绮筋A(yù)取是指按照一定的規(guī)律讀取數(shù)據(jù)的預(yù)取方法,例如預(yù)?。旱刂?的數(shù)據(jù)、地址3的數(shù)據(jù)、地址5的數(shù)據(jù)…。順序預(yù)取和跨步預(yù)取多應(yīng)用于提升數(shù)據(jù)局部性較好或者訪存模式比較規(guī)律的應(yīng)用程序的訪存性能。鏈式預(yù)取基于鏈式數(shù)據(jù)結(jié)構(gòu)(linkeddatastructure,簡稱lds)(例如指針,鏈表,棧,圖)等不規(guī)則數(shù)據(jù)集。處理器在取數(shù)時需要執(zhí)行訪存指令,從而將數(shù)據(jù)從存儲器中取到處理器核中。而對于數(shù)據(jù)的預(yù)取,處理器需要分析當前處理器的訪存模式和訪存規(guī)律,然后按照此模式或規(guī)律提前將隨后可能用到的數(shù)據(jù)取到處理器中。由于處理器預(yù)取是基于之前的訪存操作對隨后的訪存操作進行預(yù)測,因此對于規(guī)律比較簡單的訪存模式,比較容易通過傳統(tǒng)的順序預(yù)取或者跨步預(yù)取獲得較高性能。但是,對于鏈式數(shù)據(jù)結(jié)構(gòu),往往是先加載指針,然后再以該指針進行訪存。由于處理器無法對指針進行準確預(yù)測,因此,使用傳統(tǒng)的預(yù)取方法對鏈式數(shù)據(jù)結(jié)構(gòu)進行預(yù)取,往往會導(dǎo)致較低的預(yù)取效率和準確率。技術(shù)實現(xiàn)要素:本發(fā)明提供一種數(shù)據(jù)預(yù)取方法、處理器和設(shè)備,提升了數(shù)據(jù)預(yù)取的效率和準確率。本發(fā)明提供的數(shù)據(jù)預(yù)取方法,包括:取訪存指令,所述訪存指令指示將指定數(shù)據(jù)長度的待訪問數(shù)據(jù)從存儲器中加載到處理器核中,且指示按照指定的訪存模式預(yù)取數(shù)據(jù);對所述訪存指令譯碼,生成訪存請求;所述訪存請求包括預(yù)取標識,所述預(yù)取標識指示了所述指定的訪存模式;執(zhí)行所述訪存請求,以將所述待訪問數(shù)據(jù)從所述存儲器中加載到所述處理器核中,并根據(jù)所述預(yù)取標識按照所述指定的訪存模式預(yù)取數(shù)據(jù)。本發(fā)明提供的處理器,包括:處理器核,用于取訪存指令,所述訪存指令指示將指定數(shù)據(jù)長度的待訪問數(shù)據(jù)從存儲器中加載到處理器核中,且指示按照指定的訪存模式預(yù)取數(shù)據(jù);對所述訪存指令譯碼,生成訪存請求;所述訪存請求包括預(yù)取標識,所述預(yù)取標識指示了所述指定的訪存模式;存儲部件,用于執(zhí)行所述訪存請求,以將所述待訪問數(shù)據(jù)從所述存儲器中加載到所述處理器核中,并根據(jù)所述預(yù)取標識按照所述指定的訪存模式預(yù)取數(shù)據(jù)。本發(fā)明提供的計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)本發(fā)明任一實施例提供的數(shù)據(jù)預(yù)取方法。本發(fā)明提供了一種數(shù)據(jù)預(yù)取方法、處理器和設(shè)備,通過訪存指令,可以給處理器提供明確的訪存模式提示,處理器可以直接根據(jù)指定的訪存模式完成數(shù)據(jù)預(yù)取,提升了處理器的處理效率、數(shù)據(jù)預(yù)取效率和準確率。附圖說明為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的數(shù)據(jù)預(yù)取方法的流程圖;圖2為本發(fā)明實施例提供的數(shù)據(jù)存儲模型示意圖;圖3為本發(fā)明實施例提供的訪存指令的一種實現(xiàn)方式的結(jié)構(gòu)示意圖;圖4為本發(fā)明實施例提供的訪存指令的另一種實現(xiàn)方式的結(jié)構(gòu)示意圖;圖5為本發(fā)明實施例提供的處理器的結(jié)構(gòu)示意圖。具體實施方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供的數(shù)據(jù)預(yù)取方法,可以適用于基于鏈式數(shù)據(jù)結(jié)構(gòu)的預(yù)取技術(shù),也適用于其他的預(yù)取技術(shù)。需要說明,本發(fā)明實施例提供的訪存指令,也可以適用于本申請人申請的發(fā)明名稱為《數(shù)據(jù)預(yù)取方法和內(nèi)存控制器》以及發(fā)明名稱為《數(shù)據(jù)預(yù)取的實現(xiàn)方法和處理器》的專利申請中涉及的訪存指令(也是譯碼后的訪存請求)的相關(guān)內(nèi)容。圖1為本發(fā)明實施例提供的數(shù)據(jù)預(yù)取方法的流程圖。本實施例提供的數(shù)據(jù)預(yù)取方法,執(zhí)行主體可以為處理器。處理器可以包括處理器核、高速緩沖存儲器(cachememory,簡稱cache)和內(nèi)存控制器,cache可以包括一級緩存(l1cache)和二級緩存(l2cache)。如圖1所示,本實施例提供的數(shù)據(jù)預(yù)取方法,可以包括:s101、取訪存指令。其中,訪存指令為處理器指令集中的一種存儲器數(shù)據(jù)加載指令。該訪存指令指示將指定數(shù)據(jù)長度的待訪問數(shù)據(jù)從存儲器中加載到處理器核中,且指示按照指定的訪存模式預(yù)取數(shù)據(jù)。在程序代碼具體實現(xiàn)時,訪存指令可以為程序員人為插入的,也可以是編譯器根據(jù)程序特點自動編譯生成的。其中,存儲器可以包括cache和內(nèi)存??梢?,本實施例提供的訪存指令,可以區(qū)分不同數(shù)據(jù)長度的數(shù)據(jù)加載,以及區(qū)分不同訪存模式的數(shù)據(jù)預(yù)取。通過訪存指令,可以為處理器提供明確的訪存模式提示。從而,處理器不需要在眾多訪存模式中自行選擇一種,而是可以直接根據(jù)訪存指令指定的訪存模式完成數(shù)據(jù)預(yù)取,提升了數(shù)據(jù)預(yù)取效率和準確性。可選的,數(shù)據(jù)長度可以包括:字節(jié)(byte)、半字(halfword)、字(word)、雙字(doubleword、dword)和四字(quadword,qword)。在計算機中,用二進制表示的0或者1稱為一位,也稱為比特(bit)。8位稱為1個字節(jié),即,8bit=1byte。兩個字節(jié)是一個字,也稱為雙字節(jié),即,2byte=1word=16bit。兩個字是一個雙字,即,2word=1dword=4byte=32bit。兩個雙字是一個四字,即,2dword=1qword=8byte=64bit。需要說明的是,數(shù)據(jù)長度還可以包括其他的數(shù)據(jù)長度,本實施例不做特別限定。可選的,訪存模式可以包括:順序方式、跨步方式、鏈式數(shù)據(jù)訪存方式和間接索引訪存方式。下面結(jié)合數(shù)據(jù)存儲模型、不同訪存模式對應(yīng)的程序代碼,對上述的順序方式、跨步方式、鏈式數(shù)據(jù)訪存方式和間接索引訪存方式進行詳細說明。表1示出了不同訪存模式對應(yīng)的程序代碼的一種示例。圖2為本發(fā)明實施例提供的數(shù)據(jù)存儲模型示意圖。在圖2中,假設(shè)每一行均為一個cache行。其中,數(shù)組a包括21個數(shù)據(jù),分別為a[0]~a[20],存儲在第1~3行。數(shù)組b包括8個數(shù)據(jù),分別為b[0]~b[7],存儲在第7~8行。數(shù)據(jù)a、b、c、d、e為鏈式數(shù)據(jù),存儲在第4~7行。請參照表1和圖2。1、順序方式所謂順序方式,是指一個接一個地連續(xù)取數(shù)。程序代碼可以參考表1中第1行的示例。假設(shè),針對圖2中的數(shù)組a,訪存指令指示了將a[3]從存儲器中加載到處理器核中。則每次取cache時,將同時預(yù)取下一行。即,取a[3]所在第一行的同時預(yù)取第二行,連續(xù)讀取16個數(shù)據(jù)。這樣,當處理器后續(xù)要訪問a[8]時,就無需再從存儲器中讀取了。2、跨步方式所謂跨步方式,是指按照一定的規(guī)律間隔取數(shù)。程序代碼可以參考表1中第2行的示例。假設(shè),針對圖2中的數(shù)組a,取數(shù)間隔為15,則取數(shù)順序為a[3]、a[18]。訪存指令指示了將a[3]從存儲器中加載到處理器核中。則每次取cache時,將按照取數(shù)間隔同時預(yù)取相應(yīng)的行。即,取a[3]所在第一行的同時預(yù)取第三行。這樣,當處理器后續(xù)要訪問a[18]時,就無需再從存儲器中讀取了。3、鏈式數(shù)據(jù)訪存方式所謂鏈式數(shù)據(jù),物理存儲上表現(xiàn)為不連續(xù)或者根本沒有規(guī)律性。對于鏈式數(shù)據(jù),上一個鏈式數(shù)據(jù)通常指示了下一個鏈式數(shù)據(jù)的存儲位置。例如,將上一次取出來的數(shù)值(或者加上一個偏移量)作為地址再進行取數(shù)。鏈式數(shù)據(jù)訪存方式對應(yīng)的程序代碼可以參考表1中第3行的示例。假設(shè),針對圖2中的數(shù)據(jù)a~e,取數(shù)過程可以為a->b->c->d->e。訪存指令指示了將b從存儲器中加載到處理器核中。則預(yù)取的cache行將根據(jù)取得的數(shù)據(jù)來決定。即,將b所在的第4行取入cache的同時,由于b(加上某一偏移量)將會作為下一次的訪存地址,因此將下一次的訪存地址所在的數(shù)據(jù)行(第7行)進行預(yù)取。這樣,當處理器后續(xù)要訪問數(shù)據(jù)c時,就無需再從存儲器中讀取了。表1:不同訪存模式對應(yīng)的程序代碼4、間接索引訪存方式間接索引訪存方式每次需要對存儲器進行兩次訪問。通常,將初始偏移量(數(shù)組索引)加上基地址得到的值再作為偏移量,然后加上某一基地址得到最終的數(shù)據(jù)地址。間接索引訪存方式對應(yīng)的程序代碼可以參考表1中第4行的示例。假設(shè),針對圖2中的數(shù)組a、b,取數(shù)過程可以為a[b[0]]->a[b[1]]->…。訪存指令指示了將b[0]從存儲器中加載到處理器核中。則從存儲器得到b[0]的值的同時,計算a[b[0]]的地址,提前預(yù)取a[b[0]]。同樣,若訪存指令指示了將b[1]從存儲器中加載到處理器核中。則從存儲器得到b[1]的值的同時,計算a[b[1]]的地址,提前預(yù)取a[b[1]]。需要說明的是,訪存模式還可以包括其他的訪存模式,本實施例不做特別限定。s102、對訪存指令譯碼,生成訪存請求。其中,訪存請求可以包括預(yù)取標識,預(yù)取標識指示了指定的訪存模式。具體的,訪存請求由處理器核根據(jù)訪存指令譯碼生成,處理器核將訪存請求發(fā)送給存儲部件,由存儲部件執(zhí)行。本發(fā)明對于訪存請求的具體實現(xiàn)方式和訪存請求中包括的其他信息不做限定。本發(fā)明中的訪存請求是在現(xiàn)有訪存請求的基礎(chǔ)上包括預(yù)取標識,用于指示訪存模式。訪存請求還包括加載地址,該加載地址中存儲有待訪問數(shù)據(jù)。需要說明,本發(fā)明對于預(yù)取標識的實現(xiàn)方式不做限定??蛇x的,可以通過設(shè)置預(yù)取標識的不同取值指示不同的訪存模式。例如,預(yù)取標識的取值為1、2、3、4時,分別對應(yīng)了順序方式、跨步方式、鏈式數(shù)據(jù)訪存方式和間接索引訪存方式。可選的,每一種訪存模式對應(yīng)一個預(yù)取標識,訪存指令指定的訪存模式對應(yīng)的預(yù)取標識的取值可以為1,其他未指定的訪存模式對應(yīng)的預(yù)取標識的取值可以為0。例如,預(yù)取標識可以包括順序預(yù)取標識、跨步預(yù)取標識、鏈式數(shù)據(jù)預(yù)取標識和間接索引預(yù)取標識,分別對應(yīng)于順序方式、跨步方式、鏈式數(shù)據(jù)訪存方式和間接索引訪存方式。若鏈式數(shù)據(jù)預(yù)取標識取值為1,則說明鏈式數(shù)據(jù)訪存方式為指定的訪存模式。s103、執(zhí)行訪存請求,以將待訪問數(shù)據(jù)從存儲器中加載到處理器核中,并根據(jù)預(yù)取標識按照指定的訪存模式預(yù)取數(shù)據(jù)。具體的,處理器核在完成訪存指令的譯碼之后,將生成的訪存請求發(fā)送給存儲部件。存儲部件執(zhí)行該訪存請求。由于訪存請求中包括的預(yù)取標識指示了指定的訪存模式,因此,存儲部件可以實現(xiàn)將待訪問數(shù)據(jù)從存儲器中加載到處理器核中,并根據(jù)預(yù)取標識指示的訪存模式預(yù)取數(shù)據(jù)??梢?,本實施例提供的數(shù)據(jù)預(yù)取方法,在處理器指令集中增加了可以區(qū)分訪存模式和數(shù)據(jù)長度的訪存指令。通過訪存指令,可以給處理器提供明確的訪存模式提示,處理器可以直接根據(jù)指定的訪存模式完成數(shù)據(jù)預(yù)取,提升了處理器的處理效率、數(shù)據(jù)預(yù)取效率和準確性。進一步地,作為訪存指令的一種具體實現(xiàn)方式,訪存指令可以包括:第一指令碼、源寄存器編號、目的寄存器編號和地址偏移值。其中,第一指令碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度以及訪存模式,源寄存器存儲待訪問數(shù)據(jù)在存儲器中的基地址,地址偏移值指示了待訪問數(shù)據(jù)在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數(shù)據(jù)。具體的,通過訪存指令中的第一指令碼,可以實現(xiàn)指定數(shù)據(jù)長度的加載以及指定訪存模式的數(shù)據(jù)預(yù)取。此時,訪存指令可以稱為分離模式。在該種實現(xiàn)方式下,處理器待執(zhí)行的訪存指令通過處理器的取指令操作預(yù)先存儲在處理器中,存儲形式如圖3所示,圖3為本發(fā)明實施例提供的訪存指令的一種實現(xiàn)方式的結(jié)構(gòu)示意圖。其中,opcode表示第一指令碼,base表示源寄存器編號,rt表示目的寄存器編號,offset表示地址偏移值。本實施例對于opcode、base、rt、offset分別占用的比特數(shù)以及存儲順序不做特別限定。在該種實現(xiàn)方式下,訪存指令對應(yīng)的匯編指令可以為:opcode$rt,offset($base)其中,本實施例對于匯編指令中各個參數(shù)的順序不做限定。表2訪存指令中第一指令碼示例表3第一操作碼~第二十作碼示例數(shù)據(jù)長度順序方式跨步方式鏈式數(shù)據(jù)訪存方式間接索引訪存方式字節(jié)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可選的,作為第一指令碼的實現(xiàn)方式,請參照表2。作為第一操作碼~第二十操作碼的一種示例,請參見表3。第一指令碼可以為第一操作碼,第一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為順序方式;或者,第一指令碼可以為第二操作碼,第二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為順序方式;或者,第一指令碼可以為第三操作碼,第三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為順序方式;或者,第一指令碼可以為第四操作碼,第四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為順序方式;或者,第一指令碼可以為第五操作碼,第五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為順序方式;或者,第一指令碼可以為第六操作碼,第六操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為跨步方式;或者,第一指令碼可以為第七操作碼,第七操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為跨步方式;或者,第一指令碼可以為第八操作碼,第八操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為跨步方式;或者,第一指令碼可以為第九操作碼,第九操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為跨步方式;或者,第一指令碼可以為第十操作碼,第十操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為跨步方式;或者,第一指令碼可以為第十一操作碼,第十一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼可以為第十二操作碼,第十二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼可以為第十三操作碼,第十三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼可以為第十四操作碼,第十四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼可以為第十五操作碼,第十五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼可以為第十六操作碼,第十六操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十七操作碼,第十七操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十八操作碼,第十八操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第十九操作碼,第十九操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為間接索引訪存方式;或者,第一指令碼可以為第二十操作碼,第二十操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為間接索引訪存方式。根據(jù)表3,下面通過幾個示例說明上述實施方式提供的訪存指令。1)訪存指令的匯編指令可以為:lh-stm$base_a,$x,$i;該訪存指令指示了將一個半字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照順序方式預(yù)取數(shù)據(jù)。2)訪存指令的匯編指令可以為:lw-lds$base_a,$x,$i該訪存指令指示了將一個字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照鏈式數(shù)據(jù)預(yù)取方式預(yù)取數(shù)據(jù)。3)訪存指令的匯編指令可以為:ld-ii$base_a,$x,$i該訪存指令指示了將一個雙字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照間接索引訪存方式預(yù)取數(shù)據(jù)。需要說明,表3僅是第一操作碼~第二十操作碼的一種示例,本實施例對于第一操作碼~第二十操作碼的實現(xiàn)方式不做限定。進一步地,作為訪存指令的另一種具體實現(xiàn)方式,訪存指令可以包括:第二指令碼、源寄存器編號、目的寄存器編號、地址偏移值和模式值。其中,第二指令碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度,模式值指示了訪存模式,源寄存器存儲待訪問數(shù)據(jù)在存儲器中的基地址,地址偏移值指示了待訪問數(shù)據(jù)在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數(shù)據(jù)。具體的,通過訪存指令中的第二指令碼,可以實現(xiàn)指定數(shù)據(jù)長度的加載,通過訪存指令中的模式值,可以實現(xiàn)指定訪存模式的數(shù)據(jù)預(yù)取。此時,訪存指令可以稱為聚合模式,聚合模式與分離模式相對應(yīng)。當指令集架構(gòu)中的剩余指令槽充足時,可以選擇使用分離模式。當指令集架構(gòu)中的剩余指令槽比較有限時,可以選擇使用聚合模式。在該種實現(xiàn)方式下,處理器待執(zhí)行的訪存指令通過處理器的取指令操作預(yù)先存儲在處理器中,存儲形式如圖4所示,圖4為本發(fā)明實施例提供的訪存指令的另一種實現(xiàn)方式的結(jié)構(gòu)示意圖。其中,opcode表示第二指令碼,base表示源寄存器編號,rt表示目的寄存器編號,offset表示地址偏移值,mode表示模式值。本實施例對于opcode、base、rt、offset、mode分別占用的比特數(shù)以及存儲順序不做特別限定。例如,mode可以占用3比特,二進制取值可以為000、001、010、011、100、101、110、111,每個取值對應(yīng)一種訪存模式,共計對應(yīng)8種訪存模式。在該種實現(xiàn)方式下,訪存指令對應(yīng)的匯編指令可以為:opcode$rt,offset($base),mode其中,本實施例對于匯編指令中各個參數(shù)的順序不做限定??蛇x的,作為第二指令碼的實現(xiàn)方式,請參照表4。作為第二十一操作碼~第二十五操作碼的一種示例,請參見表5。第二指令碼可以為第二十一操作碼,第二十一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié);或者,第二指令碼可以為第二十二操作碼,第二十二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字;或者,第二指令碼可以為第二十三操作碼,第二十三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字;或者,第二指令碼可以為第二十四操作碼,第二十四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字;或者,第二指令碼可以為第二十五操作碼,第二十五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字。表4訪存指令中第二指令碼和模式值示例表5第二十一操作碼~第二十五操作碼、第一數(shù)值~第四數(shù)值示例可選的,作為模式值的實現(xiàn)方式,請參照表4。作為第一數(shù)值~第四數(shù)值的一種示例,請參見表5,取值為十進制數(shù)值。其中,模式值可以為第一數(shù)值,第一數(shù)值指示了訪存模式為順序方式;或者,模式值可以為第二數(shù)值,第二數(shù)值指示了訪存模式為跨步方式;或者,模式值可以為第三數(shù)值,第三數(shù)值指示了訪存模式為鏈式數(shù)據(jù)訪存方式;或者,模式值可以為第四數(shù)值,第四數(shù)值指示了訪存模式為間接索引訪存方式。根據(jù)表5,下面通過幾個示例說明上述實施方式提供的訪存指令。1)訪存指令的匯編指令可以為:lw-m$base_a,$x,1,$i該訪存指令指示了將一個字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照跨步方式(模式值為1)預(yù)取數(shù)據(jù)。2)訪存指令的匯編指令可以為:lw-m$base_a,$x,2,$i該訪存指令指示了將一個字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照鏈式數(shù)據(jù)預(yù)取方式(模式值為1)預(yù)取數(shù)據(jù)。3)訪存指令的匯編指令可以為:ld-m$base_a,$x,3,$i該訪存指令指示了將一個雙字長度的數(shù)據(jù)從存儲器的地址($base_a+$i)加載到處理器核(編號為$x的寄存器)中,并按照間接索引方式預(yù)取數(shù)據(jù)。需要說明,表5僅是第二十一操作碼~第二十五操作碼、第一數(shù)值~第四數(shù)值的一種示例,本實施例對于第二十一操作碼~第二十五操作碼、第一數(shù)值~第四數(shù)值的實現(xiàn)方式不做限定。本實施例提供了一種數(shù)據(jù)預(yù)取方法,包括:取訪存指令,訪存指令指示將指定數(shù)據(jù)長度的待訪問數(shù)據(jù)從存儲器中加載到處理器核中,且指示按照指定的訪存模式預(yù)取數(shù)據(jù),對訪存指令譯碼,生成訪存請求,訪存請求包括預(yù)取標識,預(yù)取標識指示了指定的訪存模式,執(zhí)行訪存請求,以將待訪問數(shù)據(jù)從存儲器中加載到處理器核中,并根據(jù)預(yù)取標識按照指定的訪存模式預(yù)取數(shù)據(jù)。本實施例提供的數(shù)據(jù)預(yù)取方法,訪存指令可以區(qū)分數(shù)據(jù)長度和訪存模式,通過訪存指令可以給處理器提供明確的訪存模式提示,處理器直接根據(jù)指定的訪存模式完成數(shù)據(jù)預(yù)取,提升了處理器的處理效率、數(shù)據(jù)預(yù)取效率和準確性。圖5為本發(fā)明實施例提供的處理器的結(jié)構(gòu)示意圖。本實施例提供的處理器,用于執(zhí)行圖1~圖4所示實施例提供的數(shù)據(jù)預(yù)取方法。如圖5所示,本實施例提供的處理器,可以包括:處理器核11,用于取訪存指令,訪存指令指示將指定數(shù)據(jù)長度的待訪問數(shù)據(jù)從存儲器中加載到處理器核中,且指示按照指定的訪存模式預(yù)取數(shù)據(jù)。對訪存指令譯碼,生成訪存請求,訪存請求包括預(yù)取標識,預(yù)取標識指示了指定的訪存模式。存儲部件12,用于執(zhí)行訪存請求,以將待訪問數(shù)據(jù)從存儲器中加載到處理器核中,并根據(jù)預(yù)取標識按照指定的訪存模式預(yù)取數(shù)據(jù)。其中,存儲部件12可以包括一級高速緩沖存儲器、二級高速緩沖存儲器和內(nèi)存控制器??蛇x的,訪存模式包括:順序方式、跨步方式、鏈式數(shù)據(jù)訪存方式和間接索引訪存方式??蛇x的,數(shù)據(jù)長度包括:字節(jié)、半字、字、雙字和四字??蛇x的,訪存指令包括:第一指令碼、源寄存器編號、目的寄存器編號和地址偏移值;第一指令碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度以及訪存模式,源寄存器存儲待訪問數(shù)據(jù)在存儲器中的基地址,地址偏移值指示了待訪問數(shù)據(jù)在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數(shù)據(jù)。可選的,第一指令碼為第一操作碼,第一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為順序方式;或者,第一指令碼為第二操作碼,第二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為順序方式;或者,第一指令碼為第三操作碼,第三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為順序方式;或者,第一指令碼為第四操作碼,第四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為順序方式;或者,第一指令碼為第五操作碼,第五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為順序方式;或者,第一指令碼為第六操作碼,第六操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為跨步方式;或者,第一指令碼為第七操作碼,第七操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為跨步方式;或者,第一指令碼為第八操作碼,第八操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為跨步方式;或者,第一指令碼為第九操作碼,第九操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為跨步方式;或者,第一指令碼為第十操作碼,第十操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為跨步方式;或者,第一指令碼為第十一操作碼,第十一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼為第十二操作碼,第十二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼為第十三操作碼,第十三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼為第十四操作碼,第十四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼為第十五作碼,第十五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為鏈式數(shù)據(jù)訪存方式;或者,第一指令碼為第十六操作碼,第十六操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié)、訪存模式為間接索引訪存方式;或者,第一指令碼為第十七操作碼,第十七操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字、訪存模式為間接索引訪存方式;或者,第一指令碼為第十八操作碼,第十八操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字、訪存模式為間接索引訪存方式;或者,第一指令碼為第十九操作碼,第十九操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字、訪存模式為間接索引訪存方式;或者,第一指令碼為第二十作碼,第二十操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字、訪存模式為間接索引訪存方式??蛇x的,訪存指令包括:第二指令碼、源寄存器編號、目的寄存器編號、地址偏移值和模式值;第二指令碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度,模式值指示了訪存模式,源寄存器存儲待訪問數(shù)據(jù)在存儲器中的基地址,地址偏移值指示了待訪問數(shù)據(jù)在存儲器中的偏移地址,目的寄存器位于處理器核中、存儲待訪問數(shù)據(jù)??蛇x的,第二指令碼為第二十一操作碼,第二十一操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字節(jié);或者,第二指令碼為第二十二操作碼,第二十二操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為半字;或者,第二指令碼為第二十三操作碼,第二十三操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為字;或者,第二指令碼為第二十四操作碼,第二十四操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為雙字;或者,第二指令碼為第二十五操作碼,第二十五操作碼指示了待訪問數(shù)據(jù)的數(shù)據(jù)長度為四字??蛇x的,模式值為第一數(shù)值,第一數(shù)值指示了訪存模式為順序方式;或者,模式值為第二數(shù)值,第二數(shù)值指示了訪存模式為跨步方式;或者,模式值為第三數(shù)值,第三數(shù)值指示了訪存模式為鏈式數(shù)據(jù)訪存方式;或者,模式值為第四數(shù)值,第四數(shù)值指示了訪存模式為間接索引訪存方式。本實施例提供的處理器,用于執(zhí)行圖1~圖4所示方法實施例提供的數(shù)據(jù)預(yù)取方法,其技術(shù)原理和技術(shù)效果類似,此處不再贅述。本發(fā)明還提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)圖1~圖4任一方法實施例提供的數(shù)據(jù)預(yù)取方法的方法步驟。本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
葵青区| 商南县| 通化市| 拜泉县| 德安县| 莱西市| 蒙山县| 林口县| 黄浦区| 沁阳市| 东台市| 岑巩县| 兰州市| 宝兴县| 洛隆县| 八宿县| 晋江市| 资阳市| 方山县| 湘潭市| 元氏县| 读书| 精河县| 盐边县| 霞浦县| 东阿县| 安图县| 澄迈县| 海淀区| 普兰店市| 梁山县| 西盟| 宜宾县| 台安县| 城步| 栾川县| 星子县| 商水县| 简阳市| 湛江市| 尚义县|