亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于進行預取的數據處理方法和裝置的制造方法

文檔序號:8257906閱讀:286來源:國知局
用于進行預取的數據處理方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及數據處理領域。更具體地,本發(fā)明涉及在數據處理裝置中進行預取(prefetching)。
【背景技術】
[0002]在包括處理電路和存儲器的數據處理裝置中,對于處理電路而言執(zhí)行存儲器訪問指令可能耗費大量時間。尤其,處理電路必須向存儲器設備發(fā)送請求以訪問特定的存儲器地址并檢索位于該地址的數據。存儲器設備然后必須訪問存儲器,檢索所請求的數據,然后向處理電路轉發(fā)所請求的數據。這可能花費幾個處理循環(huán)來發(fā)生,其間處理電路可能被暫?;驘o法進一步地進行。如果處理電路執(zhí)行許多存儲器訪問指令,則當該存儲器訪問指令被處理時,處理電路可能被延遲一段時間。為了幫助緩解這個問題,數據處理電路可使用所謂的預取,其中做出關于接下來最可能請求哪些存儲器地址的預報。隨后,這些地址處的數據在被明確地請求之前就被讀取,并且當系統(tǒng)的各個部分未被以其他方式占用時可以執(zhí)行讀取過程。因此,如果隨后那些存儲地址被請求,則相較于未發(fā)生預取來說,處理電路能夠更快地獲取必要的數據。對于當所請求的數據被訪問時暫停處理電路的需求可被減少,因此為處理電路帶來了提升的效率。
[0003]預報可使用空間局部性原理。即,如果線程訪問特定存儲器地址位置,則同一線程將很可能向鄰近的存儲地址發(fā)出后續(xù)的存儲器訪問指令。這種情況的一個特定示例是當線程訪問多個數據元素時,這些數據元素中的每個均在數組中占用定長。通過檢查兩個或者多個存儲器訪問指令被發(fā)布到的存儲器地址,能夠推斷出所請求的存儲器地址中的模式。例如,給定兩個存儲器地址,則能夠確定跨步長度(strid length),其表示在兩個鄰近數據元素之間的存儲器地址的差值。因此,可以合乎邏輯的假設后續(xù)存儲器訪問指令將被指向下一鄰近數據元素,該數據元素的地址是先前訪問的存儲器地址和跨步長度之和。
[0004]需要理解的是已知預取途徑依賴于存儲器以可預測的方式或模式被訪問。如果發(fā)布數量不充足的存儲器訪問指令,則例如在短暫線程的情況下,或者如果以復雜的或不可預測的方式發(fā)布存儲器訪問指令,則不可能或很難適當地執(zhí)行預取。

【發(fā)明內容】

[0005]根據一個方面,本發(fā)明提供的數據處理設備包括:處理電路,其被配置為執(zhí)行到存儲器設備的第一地址的第一存儲器訪問指令和到所述存儲裝置的第二地址的第二存儲器訪問指令,其中所述第一地址不同于所述第二地址;預取電路,其被配置為根據跨步長度,從所述存儲器設備預取數據;指令分析電路,其被配置為確定所述第一地址和所述第二地址之間的差值;跨步求精電路,其被配置為基于所述跨步長度的因數和所述差值的因數對所述跨步長度進行求精。
[0006]處理電路執(zhí)行多個存儲器訪問指令,這些存儲器訪問指令包括第一存儲器訪問指令和第二存儲器訪問指令。每個存儲器訪問指令針對存儲器設備的特定地址,其中第一存儲器訪問指令針對第一地址,并且第二存儲器訪問指令針對第二地址,該第二地址不同于第一地址。指令分析電路分析存儲器訪問指令以確定存儲器訪問指令所指向的地址間的差值。差值可以是非絕對值,例如,差值可能是正數或是負數,其分別表明第一地址小于或大于第二地址。當從處理電路向存儲器設備發(fā)送存儲器訪問指令時,可通過指令分析電路監(jiān)控存儲器訪問指令來做出分析,或是可通過處理電路明確通知處理電路這些存儲器訪問指令來做出分析。預取電路被提供以基于跨步長度執(zhí)行從存儲器設備預取數據。例如,給定跨步長度和上一存儲器訪問指令,則預取電路可被配置為從存儲器設備檢索保留在上一存儲器訪問指令的地址和該跨步長度之和的地址處的數據??绮角缶娐繁慌渲脼榛诳绮介L度的因數和由指令分析電路計算得出的差值的因數來對跨步長度進行求精。也就是說,一旦確定了跨步長度,跨步求精電路就可以使用由指令分析電路計算得出的差值來產生新的跨步長度。該求精是基于差值的因數和當前跨步長度的因數而實現(xiàn)的。此處,數字的“因數”是整數,當其乘以另一整數時得出該數字。
[0007]根據上文,即使當以復雜的模式訪問存儲器地址時,執(zhí)行預取仍然是可能的。例如,如果數組的成員以非連續(xù)的順序被訪問。系統(tǒng)可初步確定跨步長度,所確定的跨步長度是“真實”跨步長度的倍數。然而,求精電路可經過一段時間通過一次或多次求精使確定該真實跨步長度成為可能。例如,如果以隨機方式訪問數組的成員,其后兩個連續(xù)的存儲器訪問指令的存儲器地址位置的差值可被當成跨步長度。然而,這樣的差值在連續(xù)的存儲器訪問指令對之間可能大幅度地改變。由于在每對連續(xù)的指令之間的存儲器地址的差值可不斷變化,因此已知的預取系統(tǒng)盡力確定跨步長度。通過提供基于跨步長度(例如,當前跨步長度)的因數和兩個存儲器訪問指令間的差值的因數來對跨步長度進行求精的跨步求精電路,可能推斷出真實跨步長度,例如,在當前示例中,數列的兩個鄰近成員之間的存儲器地址之差值。從而,預取電路可預取處理電路較可能請求的數據,并因此提高了系統(tǒng)的效率。
[0008]處理電路可被配置為執(zhí)行包括第一存儲器訪問指令的第一線程和包括第二存儲器訪問指令的第二線程。因此,盡管存儲訪問請求跨兩個或多個線程發(fā)生,數據處理裝置也能夠確定跨步長度,其中這些線程本身可能是短暫的。然后,不論那些特定的線程有多短暫,可為那些線程或者甚至是其他線程實施預取。此場景可能出現(xiàn)在SIMT (單指令多線程)系統(tǒng)中,其中多個線程各自并行執(zhí)行大體上相同的、可能是短暫的代碼片段。處理電路能夠以任何順序執(zhí)行第一線程和第二線程。因此,不論以何種順序執(zhí)行線程,仍然可以推斷出跨步長度,這將使預取電路能夠從存儲器設備預取后續(xù)將被請求的相關數據。
[0009]第一存儲器訪問指令和第二存儲器訪問指令可具有相同的程序計數器值。因此,可計算得出關于特定指令的跨步值,從而使得多個相關數據元素更有可能被訪問。多個數據元素可通過循環(huán)或通過每個線程訪問不同元素并對該元素執(zhí)行相同操作而被迭代地訪問。還將理解的是預取電路可維護多個不同跨步長度并計算得出各自指向特定指令的多個差值,正如該指令的程序計數器值所指示的。
[0010]跨步求精電路可被配置為將跨步長度精確到跨步長度和差值的最大公因數。也就是說,給定跨步長度和在第一存儲器訪問指令的存儲器地址和第二存儲訪問的存儲器地址之間的差值,跨步求精電路將把跨步長度更新為上個跨步長度和由指令分析電路計算得出的差值的最大公因數。兩個數的最大公因數(也稱為最大公約數或最高公因數)是可以去除那兩個數而沒有任何余數的最大正整數。例如,如果跨步長度是50,并且兩個存儲器訪問指令間的差值是48,那么最大公因數是2。本領域技術人員將理解的是可通過包括通過歐幾里得(Euclid)算法的多種方法計算最大公因數。用于計算最大公因數的其他技術還因用于使用減法和以2為除數的除法的組合的二進制中而著名。
[0011]計算兩個值之間的最大公因數能夠是計算昂貴的(expensive)。另一對跨步長度進行求精的方法反而是考慮兩個存儲器訪問指令之間的差值是否是跨步長度的因數,如果是,則將跨步長度更新為該差值。確定一個數值是否是另一數值的因數相較于確定兩個數的最大公因數計算量可能較少,因此在某些情況下途徑方法更為可取。通過這種方法,在進行多次求精之后能夠收斂于最大公因數,每次求精均耗費較低的計算成本。
[0012]為了維護與跨步值相關聯(lián)的置信值,可以提供跨步置信電路。響應于存儲器訪問指令指向于已由預取電路預取的數據的地址,置信值可被增加,這是因為這可表明正確的數據已被預取。此外,響應于跨步求精電路對跨步長度進行求精,跨步置信電路可重置置信值以表示新跨步長度還未被測試的事實。通過這種方式可提供跨步值代表真實跨步長度的可能性的指示。例如,置信值可表示跨步值代表數組的鄰近數據元素之間的間隔的可能性,這些數據元素由在處理電路上執(zhí)行的一個或多個線程訪問。預取電路可被配置為依靠置信值進一步預取數據。例如,預取電路可被配置為直到置信值超過某個閾值的時刻才預取數據。或者,可以基于置信值預取一定量的數據。例如,如果置信值為高值,則預取電路可預取較大量的數據,而當置信值為低值時,則讀取較小量的數據,以降低預取數據將不會被請求的可能性。
[0013]如果使用了這樣的置信值,響應于以下情況中的至少一種,可通過跨步置信電路降低該置信值:差值與跨步長度的比值大于第一預定值,以及,差值與跨步長度的比值小于第二預定值。因此,如果由指令分析電路計算得出的差值表明相較于當前跨步長度,跨步長度應該顯著改變,則這可能表明了當前跨步長度不精確的事實,因此置信值應被降低。例如,第一預定值可能是16并且第二預定值可能是-16。因此,如果差值與跨步長度的比值大于16或小于-16,則置信值可被降低。在其他實施例中,跨步置信電路可考慮絕對差值。也就是說,如果差值值是負數,其乘以-1以產生在兩
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1