TWI514275B - 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 - Google Patents
用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 Download PDFInfo
- Publication number
- TWI514275B TWI514275B TW101142617A TW101142617A TWI514275B TW I514275 B TWI514275 B TW I514275B TW 101142617 A TW101142617 A TW 101142617A TW 101142617 A TW101142617 A TW 101142617A TW I514275 B TWI514275 B TW I514275B
- Authority
- TW
- Taiwan
- Prior art keywords
- speculative load
- speculative
- load instruction
- instruction
- tlb
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000002269 spontaneous effect Effects 0.000 title description 12
- 238000006243 chemical reaction Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims description 45
- 238000013519 translation Methods 0.000 claims description 39
- 230000014616 translation Effects 0.000 claims description 39
- 238000003860 storage Methods 0.000 claims description 17
- 230000003111 delayed effect Effects 0.000 claims description 13
- 239000000463 material Substances 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 8
- 238000007689 inspection Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000007774 longterm Effects 0.000 claims 1
- 230000001568 sexual effect Effects 0.000 claims 1
- 238000013461 design Methods 0.000 description 16
- 230000001934 delay Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000011084 recovery Methods 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 235000012431 wafers Nutrition 0.000 description 8
- 238000000605 extraction Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002035 prolonged effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007334 memory performance Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明實施例係關於以自發載入延遲與轉換至預提取來消除管線阻塞之技術。
長時間以來,處理器性能比記憶體性能更快地增展。在處理器以及記憶體性能之間的這成長間隙意謂著今日多數處理器花費更多它們的時間在等候資料。現代處理器時常具有許多晶片上(on-chip)位準以及也許晶片外(off-chip)快取。這些快取藉由保持頻繁地存取更接近、更快的快取之線以協助減低資料存取時間。在資料是軟體需要之前,資料預提取是將資料自一較慢位準之快取/記憶體階層移動至一較快的位準之實施。長潛時載入可能阻礙電腦管線中之向前行進。例如,當一載入錯失一資料轉譯後備緩衝器(TLB)時,其可能在等候一硬體頁查表器(Hardware Page Walker)去尋找以及嵌入一資料轉譯於TLB
中時,而阻礙該管線。於一有序管線中之另一可能的管線阻礙情節是,當一指令試圖在那可能地長潛時載入完成之前使用一載入目標暫存器之時。
依據本發明之一實施例,係特地提出一種電腦實現方法,其包括下列步驟:決定一推測性載入指令是否遭遇一長潛時情況;如果該推測性載入指令遭遇該長潛時情況,則自發地延遲該推測性載入指令;如果該推測性載入指令遭遇該長潛時情況,則啟動需要長潛時存取之一轉譯或資料的一預提取;以及決定是否需要該推測性載入指令。
100‧‧‧電腦實現方法
102-116‧‧‧電腦實現步驟
200、300、400、500、990、1311、1481‧‧‧處理器架構
202、302、402、502‧‧‧暫存器檔案
204、206‧‧‧轉譯後備緩衝器階層
208、210、308、310、408、410、508、510‧‧‧記憶體階層
221、222、223、224、321、322、323、421、422、423、424、425、521、522、523‧‧‧操作步驟
304、306、404、406、504、506‧‧‧TLB階層
900、1300、1500‧‧‧系統
905、1310、1315、1470、1480‧‧‧處理器
907‧‧‧機器可存取媒體
910‧‧‧系統記憶體
915‧‧‧非依電性記憶體
920‧‧‧資料儲存單元
925‧‧‧通訊鏈路
930‧‧‧晶片組
950、1414、1514‧‧‧輸入/輸出裝置
1320‧‧‧GMCH
1340、1432、1434、1442、1444‧‧‧記憶體
1345‧‧‧顯示器
1350‧‧‧輸入/輸出控制器中樞
1360‧‧‧外部圖形裝置
1370‧‧‧週邊裝置
1395‧‧‧前端匯流排
1400‧‧‧多處理器系統
1416‧‧‧匯流排
1418‧‧‧匯流排橋
1420‧‧‧第二匯流排
1422‧‧‧鍵盤/滑鼠
1424‧‧‧音訊輸入/輸出
1426、1427‧‧‧通訊裝置
1428‧‧‧資料儲存單元
1430‧‧‧指令碼
1438‧‧‧高性能圖形電路
1439‧‧‧高性能圖形界面
1450‧‧‧點對點互連
1452、1454、1476、1478、1486、1488‧‧‧點對點界面
1472、1482‧‧‧整合記憶體控制中樞
1472、1482‧‧‧控制邏輯
1476、1486、1494、1498‧‧‧點對點界面電路
1490‧‧‧晶片組
1492、1496‧‧‧界面
1515‧‧‧遺留式輸入/輸出裝置
本發明各種實施例經由範例而圖解地被說明,並且不是作為限制,於附圖的圖示中:第1圖是圖解地說明依據本發明一實施例對於自發地延遲一有序管線之推測性指令的電腦實現方法之實施例的流程圖;第2圖是圖解地說明依據本發明一實施例之具有非阻礙執行的處理器架構;第3圖是圖解地說明依據本發明一實施例之具有一復原碼執行的處理器架構;第4圖是圖解地說明依據本發明另一實施例之具有非阻礙執行的處理器架構;第5圖是圖解地說明依據本發明另一實施例之具有復原碼執行的處理器架構;
第6圖是依據本發明一實施例之一系統的方塊圖;第7圖是依據本發明一實施例之第二系統的方塊圖;第8圖是依據本發明一實施例之第三系統的方塊圖;以及第9圖是圖解地說明依據本發明一實施例所實現之一系統的功能方塊圖。
用於自發延遲一推測性指令之系統以及方法被說明。於一實施例中,如果指令遭遇一長潛時情況而仍然允許載入啟動一硬體頁查表(Hardware Page Walk),則一方法自發地延遲一推測性指令。於管線可能被阻礙等候長潛時推測性載入之任何情況中,這本發明實施例允許主要管線往前行進。
於下面說明中,許多特定細節,例如,邏輯實現、信號以及匯流排之尺度與名稱、系統構件之型式與相互關係、以及邏輯分割/整合選擇被設定以便提供更完全的了解。但是,應了解,一熟習本技術者應明白,本發明實施例可被實施而不必此等特定細節。於其他實例中,控制架構與閘位準電路不詳細地被展示以避免混淆本發明實施例。那些本技術通常習知者,配合包含的說明,將是可實現適用的邏輯電路而不必過度之實驗。
於下面說明中,某些專有名詞被使用以說明本發明實施例特點。例如,名詞“邏輯”是表示被組態以進行一個或多個功能之硬體及/或軟體。例如,“硬體”範例包含,
但是不受限定於或被限制於,積體電路、有限狀態機器或甚至組合邏輯。積體電路可採用處理器之形式,例如,微處理機、特定應用積體電路、數位信號處理器、微控制器、或其類似者。在晶片間之互連各可以是點對點或各可以是多點配置之方式,或一些可以是點對點而其他者可以是多點配置。
一處理器架構(例如,Itanium®架構)經由ld.s
以及chk.s
指令而支援推測性載入。一控制推測性載入是在一先前分支之上藉由指令碼產生器被提起之一者。換言之,其是在知道被需要之前被執行。此等載入可能產生當該指令碼以原始程式順序被執行時將不會發生的錯誤。於該處理器架構(例如,Itanium®架構)中,為了控制推測一載入,該載入利用該指令碼產生器被轉換成為一ld.s
指令以及一chk.s
指令。該ld.s
接著被提起至所需的位置,而該chk.s
被留在原始位置中。如果ld.s
指令遭遇一長潛時情況(例如,因無序執行、非法位置、無可用的轉譯等等所導致之錯誤),其設定被稱為一虛無(NAT)位元之一特殊位元於其之目標暫存器中以取代錯誤。這被稱為“延遲”該錯誤。這NAT位元藉由多數指令自來源暫存器被傳輸至目的地暫存器。當一NAT位元利用一chk.s
指令被消耗時,該chk.s
導致一再引導至復原碼,其接著執行採用程式順序中之錯誤的非推測性載入。該ld.s
指令可被考慮作為進入目標暫存器之資料預提取。其他處理器架構特點,例如,用於斷定以及資料推測之架構性支援也有助於增加軟體資料預提取之有效性。
第1圖是圖解地說明依據一實施例用於自發地延遲一有序管線之多個推測性指令的電腦實現方法100之實施例流程圖。方法100藉由處理邏輯被進行,該處理邏輯可包括硬體(電路、專用邏輯等等)、軟體(例如,在一般用途電腦系統或一專用機器或一裝置上被進行)、或其二者之組合。於一實施例中,方法100藉由關聯此處討論之架構的處理邏輯被進行。
在方塊100,該處理邏輯啟動一軟體演算法。在方塊102,處理邏輯決定一推測性載入指令(例如,ld.s
)是否遭遇一長潛時情況。例如,一長潛時情況可能包含錯失一資料轉譯後備緩衝器(TLB)或錯失一資料快取(例如,中間位準資料快取(MLD))之載入。一TLB是記憶體管理硬體使用以改進虛擬位址轉譯速率之CPU快取。一TLB被使用以對映虛擬以及實際位址空間,並且其是普遍存在於採用虛擬記憶體之任何硬體中。該TLB一般被實現為內容可定址記憶體(CAM)。該CAM搜尋鑰匙是虛擬位址並且搜尋結果是一實際位址。如果要求的位址是呈現於該TLB中,則該CAM搜尋快速地產生一匹配並且所取得的實際位址可被使用以存取記憶體。這被稱為一TLB命中。如果要求的位址不是在該TLB中,其是一錯失,並且該轉譯藉由查詢在處理程序中被稱為一頁查表的頁列表往前進。該頁查表可能是時間消耗程序,由於其包含讀取複數個記憶體位置內容並且使用它們以計算實際位址。在該實際位址利用頁查表被決定之後,虛擬位址至實際位址之對映被輸進入TLB中。
在方塊104,對於沒有長潛時情況(例如,一TLB命中),該處理邏輯前進至下一個軟體碼演算法之操作。在方塊106,如果推測性載入指令遭遇一長潛時情況(例如,錯失資料緩衝器,TLB錯失),則目前設計之處理邏輯自發地延遲該推測性載入指令。為了性能理由,處理器架構允許一ld.s
產生一NAT位元。這被稱為“自發延遲”。在方塊108,處理邏輯啟動需要長潛時存取的一轉譯或資料之一預提取。在方塊110,處理邏輯決定該推測性載入指令(例如,ld.s
)是否為執行指令碼所需。如果經由指令碼之執行管線導致對應的檢查指令(例如,chk.s
)之執行,則載入是所需。如果是,在方塊112,則對應的檢查指令(例如,chk.s
)將被達到並且將再引導至復原碼。在方塊114,復原碼將執行載入之非推測性版本,其將拖延以及等待預提取的轉譯或資料。但是,在方塊116,如果該推測性載入不是所需,則不達成對應的檢查指令並且管線避免拖延長潛時情況。這特點構成ld.s
指令,其可以更有效地被考慮作為進入暫存器之預提取。
如上所述,目前設計可自發地延遲錯失中間位準資料快取(MLD)之一推測性載入指令。其理由是相似於TLB錯失之情況。錯失MLD之一載入是將具有長的潛時。如不具自發延遲,這載入之目標暫存器的使用將拖延管線。載入之目標暫存器的使用實際上可以是一寫入或一讀取。自發延遲避免長潛時。但是,目前設計轉換該推測性載入成為一資料預提取並且於該推測性載入實際上是所需的情況中將
其傳送至下一個快取位準(LLC)上。再次地,如果該推測性載入是所需,則achk.s
指令將再引導至復原碼。
目前揭示之處理器架構包含一硬體頁查表器,其可查詢記憶體中之虛擬散列頁表(VHPT)中的轉譯並且將它們嵌入TLB中。於先前的處理器(例如,Itanium®處理器)中,當一推測性載入錯失資料TLB並且啟動一硬體頁查表時,管線被拖延經過硬體頁查表之持續期間。同時,一無用的推測性載入也可拖延管線經一長時間。因為一推測性載入指令是固有地具推測性,其可能無用地試圖參考將是從未被非推測性指令所參考的一頁。值得注意經常投下錯失資料TLB的推測性載入指令也不是良好的選擇,因為有時(亦即,比無更時常些)該推測性載入是有用的。目前設計可被概念化為對於一有序管線之一低廉、軟體可見的無序執行。
無序的管線藉由賦能緊隨於使用之後的非從屬指令之軟體透明無序執行而避免載入目標暫存器使用上之拖延。這軟體透明無序執行需要包含暫存器複製以及附屬性檢查之主要的硬體資源。
無序管線是比有序管線更昂貴,並且該等無序管線減少最佳化指令碼執行的一些軟體性能。該目前設計提供避免一些管線於一有序管線中拖延的好處。
同時,一些先前方法也嘗試使用自發延遲以避免阻礙該管線,但是卻付出降低記憶體存取之代價。這實際上導致性能下降。
目前的設計提供一能力來處理與一非拖延管線同時的一硬體頁查表。同時,目前設計配合資料存取命中而工作,其可依載入基礎而在一載入上導通與關閉這技術。對於這之理由是於一些限定情況(例如,間接預提取)中,對於推測性載入也許是較佳地阻礙該管線而非藉由一NAT位元而自發地延遲。具有資料存取命中之目前設計提供顯著的性能改進。
目前設計之實施例可藉由下面的軟體碼執行範例被實現:C類似指令碼if(ptr !=NULL){//避免非關聯化指示虛無之NULL指示器x=*ptr;//取得指示器之值}else{ x=0;//在指示器無值,故設定x為0 } MORE_CODE:y=y+x;//累積x於y
成為(Itanium-類似者)組合碼之一簡單轉譯如下所述:movl ra=PTR;;movl rn=NULL;;cmp.eq p7,p6=ra,rn;;//避免非關聯化(p7)br ELSE//一個NULL指示器ld rx=[ra]//取得指示器之值(非推測性載入)
br MORE_CODE ELSE:movl rx=0;;//在指示器無值,故設定x為0 MORE_CODE:add ry=ry,rx//累積x於y
於一實施例中,一更最佳化轉譯成為(Itanium類似者)組合碼可使用控制推測以較早地移動該載入而協助隱藏一些潛時:L1:movl ra=PTR;;L2:ld.s rx=[ra]//取得指示器之值(推測性載入-自發地延遲長潛時)L3:movl rn=NULL;;L4:cmp.eq p7,p6=ra,rn;;//避免非關聯化L5:(p7)br ELSE//一個NULL指示器L6:chk.s rx,RECOVERY_CODE//如果rx包含NAT,則再引導至復原碼L7:br MORE_CODE RECOVERY_CODE:L8:ld rx=[ra]//取得指示器之值(非推測性載入)L9:br MORE_CODE ELSE:L10:movl rx=0;;//在指示器無值,故設定x為0 MORE_CODE:L11:add ry=ry,rx//累積x於y
下面的情節應用於上面最佳化指令碼:A)PTR是虛無(NULL)並且轉譯不是在TLB中B)PTR是虛無(NULL)並且轉譯是在TLB中,但是資料不是在快速快取中C)PTR不是虛無(NULL)並且轉譯不是在TLB中D)PTR不是虛無(NULL)並且轉譯是在TLB中,但是資料不是在快速快取中
先前的處理器將如下所示地執行各個該等情節中之指令碼:A)L1、L2(由於阻礙管線而阻礙硬體頁查表之長拖延(例如,30週期、100週期))、L3、L4、L5、L10、L11 B)L1、L2、L3、L4、L5、L10(等候推測性載入以寫入rx之長拖延)、L11 C)L1、L2(由於阻礙管線而阻礙硬體頁查表之長拖延(例如,30週期、100週期))、L3、L4、L5、L6、L7、L11 D)L1、L2、L3、L4、L5、L6、L7、L11(等候推測性載入以寫入rx之長拖延)
對於情況A以及C,由載入位址ra進入rx的一推測性載入指令(例如,ld.srx←ra)所發生之管線阻礙執行,其可被儲存在一暫存器檔案中。首先,處理邏輯試圖找出對於一第一TLB階層中關聯rx之一虛擬位址的轉譯(操作1)。對於情況A以及C,rx錯失第一TLB階層並且這導致一頁查表至第二TLB階層,其具有對於rx之虛擬位址的轉譯(操作2)。因此,第二TLB階層返回該實際位址,PA(rx),其產生
自轉譯rx中之虛擬位址至第一TLB階層(操作3)。處理邏輯接著傳送該PA(rx)至一第一記憶體階層(例如,快速快取)(操作4),其傳送關聯PA(rx)之資料至暫存器檔案(操作5)。推測性載入指令預提取資料至暫存器檔案。但是,由於因第一TLB階層之錯失所導致的硬體頁查表而一長拖延發生。該長拖延阻礙該管線。
對於情況B以及D,由於等候一推測性載入以寫入rx而發生一長拖延。該長拖延阻礙管線。首先,處理邏輯試圖找出關聯於一第一TLB階層中之rx的虛擬位址之一轉譯(操作1)。對於情況B以及D,rx命中第一TLB階層並且這導致將被傳送至一第一記憶體階層之ra的虛擬位址,PA(rx),之轉譯(操作2)。這階層(例如,快速快取)不具有資料,因此處理邏輯接著傳送PA(rx)至一第二記憶體階層(例如,快速快取)(操作3)。處理邏輯傳送關聯於PA(rx)之資料至第一記憶體階層(操作4)。這資料接著被寫入至暫存器檔案中(操作5)。推測性載入指令預提取資料至暫存器檔案。但是,由於等候該推測性載入以寫入rx而有一長拖延發生。該長拖延阻礙管線。
本發明實施例,可如下所示執行各個這些情節中之指令碼:A)L1、L2(發出非阻礙硬體頁查表,自發地延遲載入,沒有拖延)、L3、L4、L5、L10、L11[推測性載入不是所需]B)L1、L2(發出預提取,自發地延遲載入,沒有拖延)、L3、L4、L5、L10、L11[推測性載入不是所需]
C)L1、L2(發出非阻礙硬體頁查表、自發地延遲載入、沒有拖延)、L3、L4、L5、L6、L8(由於阻塞硬體頁查表,而稍微較短的長拖延(例如,24週期))、L9、L11[推測性載入是所需]D)L1、L2(發出預提取、自發地延遲載入、沒有拖延)、L3、L4、L5、L6、L8、L9、L11(等候推測性載入以寫入rx之稍微較短的長拖延)[推測性載入是所需]
第2-5圖是圖解說明依據一實施例之具有非阻礙執行的處理器架構。第2圖是圖解地說明依據一實施例之具有非阻礙執行的處理器架構200。對於情況A以及C,一非阻礙執行發生於載入位址ra進入rx之一推測性載入指令(例如,ld.srx←ra),其可被儲存於暫存器檔案202中。處理邏輯試圖找出第一TLB階層204中對於關聯rx的虛擬位址之轉譯(操作221)。對於情況A以及C,rx錯失第一TLB階層204並且這導致一自發延遲(NAT位元)被設定於暫存器檔案202之rx中(操作222)。同時,TLB錯失也導致頁查表至第二TLB階層206(操作223),其具有對於rx之虛擬位址的轉譯。因此,處理邏輯導致第二TLB階層206傳送實際位址,PA(rx),其產生自轉譯rx中之虛擬位址,至第一TLB階層204(操作224)。由於推測性載入指令的長潛時之可能的長拖延已藉由被設定於暫存器檔案202中之NAT位元而自發地被延遲。因為自發延遲,管線不被拖延。於這範例中,記憶體階層208以及210不被存取。
第3圖是圖解地說明依據一實施例之具有復原碼
執行的處理器架構300。第3圖中之元件可以是相同或相似於第2圖中所說明之相同元件。例如,暫存器檔案202可以是相同於暫存器檔案302或相似於暫存器檔案302。一檢查(例如,chk.s
)指令之執行啟動進行一非推測性載入(例如,ldrx←ra)之一復原碼執行。對於情況A以及C,處理邏輯試圖找出供用於關聯rx之虛擬位址的轉譯,其被儲存於暫存器檔案302中,於一第一TLB階層304中(操作321)。對於情況A與C以及復原碼之執行,rx命中第一TLB階層並且這導致第一TLB階層傳送實際位址,PA(rx),其產生自轉譯rx中之虛擬位址,至第一記憶體階層308(操作322)。接著,處理邏輯導致第一記憶體階層自記憶體階層308中之PA(rx)傳送資料至暫存器檔案302(操作323)。於這範例中,第二TLB階層306以及第二記憶體階層310不被存取。
第4圖是圖解地說明依據一實施例之具有非阻礙執行的處理器架構400。對於情況B以及D,非阻礙執行依據載入位址ra進入rx之推測性載入指令(例如,ld.srx<--ra)而發生,其可被儲存於暫存器檔案402中。處理邏輯試圖找出供用於關聯第一TLB階層404中之rx的虛擬位址之轉譯(操作421)。對於情況B以及D,rx命中第一TLB階層並且這導致處理邏輯傳送實際位址,PA(rx),其產生自第一TLB階層404轉譯rx中之虛擬位址,至第一記憶體階層408(操作422)。但是,記憶體階層408不具有PA(rx)。因此,這藉由被設定於暫存器檔案402中之一NAT位元而導致自發延遲(操作423)。記憶體階層410具有PA(rx)(操作424)並且處理邏
輯導致記憶體階層310傳送關聯PA(rx)之資料至記憶體階層408(操作425)。由於推測性載入指令的長潛時之可能的長拖延已藉由被設定於暫存器檔案中之NAT位元而自發地被延遲。於這範例中,TLB階層406不被存取。
第5圖是圖解地說明依據一實施例之具有復原碼執行的處理器架構500。第5圖中之元件可以是相同或相似於第4圖中說明之相同元件(例如,暫存器檔案402、暫存器檔案502)。chk.s指令之執行啟動進行非推測性載入之復原碼執行。對於情況B以及D,首先,處理邏輯試圖找出對於關聯第一TLB階層504中之rx的虛擬位址之轉譯(操作521)。一暫存器檔案502儲存rx。對於情況B與D以及復原碼之執行,rx命中第一TLB階層並且這導致第一TLB階層傳送實際位址,PA(rx),其產生自轉譯rx中之虛擬位址,至第一記憶體階層508(操作522)。接著,處理邏輯導致第一記憶體階層傳送關聯PA(rx)之資料至暫存器檔案502(操作523)。於這範例中,第二TLB階層506以及第二記憶體階層510不被存取。
於一實施例中,一處理器架構包含一暫存器檔案、一耦接至該暫存器檔案的第一轉譯後備緩衝器(TLB)。該第一TLB包含用於對映虛擬位址至實際位址的一些埠。一第二TLB被耦接至該第一TLB。第二TLB進行當該載入推測性指令錯失第一TLB時被啟動的一硬體頁查表。快取儲存器儲存包含關聯於實際位址之資料的資料,而該實際位址是關聯於載入推測性指令。處理邏輯被組態以決定一推
測性載入指令是否遭遇一長潛時情況,以便如果該推測性載入指令遭遇該長潛時情況的話,則藉由設定一位元於暫存器檔案中而自發地延遲該推測性載入指令,並且經由一硬體頁查表或快取線預提取操作而啟動錯失轉譯或快取線資料的預提取。“自發延遲”之“自發”部份指示即使一錯誤不發生,目前設計亦自發地延遲一推測性載入之事實。因此,初始地被產生以便允許錯誤之延遲的延遲機構也被使用以延遲長潛時操作。
該處理邏輯更被組態以決定是否需要該推測性載入指令。該推測性載入指令是關聯於一檢查指令。達成該檢查指令意指推測性載入是所需並且因此該檢查指令再引導至復原碼。如果推測性載入不是所需,則檢查指令不被執行並且處理器架構避免拖延硬體頁查表。
目前設計之處理器架構包含資料預提取特點(例如,控制推測性載入)。一微架構被產生,其引動具有最小成本以及複雜性的這些預提取機構並且同樣地也將容易引動添加其他預提取機構。
第6圖是圖解地說明可被耦接至記憶體1340(例如,可以是一動態隨機存取記憶體(DRAM))的GMCH 1320。該DRAM,對於至少一實施例,可以是關聯於非依電性快取。
GMCH 1320可以是晶片組,或晶片組之一部份。GMCH 1320可通訊於處理器1310、1315並且控制在處理器1310、1315以及記憶體1340之間的互動。GMCH 1320
也可作用如同在處理器1310、1315以及系統1300的其他元件之間的加速匯流排界面。對於至少一實施例,GMCH 1320經由一多點匯流排,例如,一前端匯流排(FSB)1395而通訊於處理器1310、1315。
更進一步地,GMCH 1320被耦接至一顯示器1345(例如,一平面顯示)。GMCH 1320可包含一整合圖形加速裝置。GMCH 1320進一步被耦接至一輸入/輸出(I/O)控制器中樞(ICH)1350,其可被使用以耦接各種週邊裝置至系統1300。被展示,例如,於第6圖之實施例中的是一外部圖形裝置1360,其可以是與另一週邊裝置1370,一起被耦接至ICH 1350的一離散圖形裝置。
該處理器1310可包含如此處討論之一處理器架構1311(例如,200、300、400、500)。另外地,額外的或不同的處理器也可以出現於系統1300中。例如,另外的處理器1315可包含相同如處理器1310之另外的處理器、另外的處理器,其是相異於或非對稱於處理器1310、加速裝置(例如,圖形加速裝置或數位信號處理(DSP)單元)、場式可程控閘陣列、或任何其他處理器。就包含建築學、微建築學、熱量學、功率消耗特性、以及其類似者之價值度量學頻譜而論,在物理資源1310、1315之間可以是多種差異。這些差異可能有效地表明它們自己在處理元件1310、1315間的對稱性以及異質性。對於至少一實施例,各種處理元件1310、1315可能存在於相同晶圓封裝中。
接著參看至第7圖,其展示依據本發明一實施例
之第二系統1400的方塊圖。如於第7圖之展示,多處理器系統1400是點對點互連系統,並且包含經由點對點互連1450被耦接的第一處理器1470以及第二處理器1480。另外地,一個或多個處理器1470、1480可以是除了處理器之外的元件,例如,加速裝置或場式可程控閘陣列。雖然僅以二個處理器1470、1480被展示,應了解,本發明實施例之範疇是不因此受限定。於其他實施例中,一個或多個另外的處理元件可以是出現於所給的處理器中。
處理器1470可進一步包含一整合記憶體控制器中樞(IMC)1472以及多個點對點(P-P)界面1476與1478。同樣地,第二處理器1480可包含IMC 1482以及P-P界面1486、1488。處理器1470、1480可使用PtP界面電路1478、1488經由點對點(PtP)界面1450而交換資料。如於第7圖之展示,IMC之1472以及1482耦接處理器至分別的記憶體,亦即,記憶體1442以及記憶體1444,其可以是區域性地被附帶至分別處理器的主要記憶體之部份。處理器1470以及1480可包含如此處討論之處理器架構1481(例如,200、300、400、500)。
處理器1470、1480各可使用點對點界面電路1476、1494、1486、1498,經由分別的P-P界面1452、1454與晶片組1490交換資料。晶片組1490也可經由高性能圖形界面1439與高性能圖形電路1438交換資料。
一共用快取(未被展示)可被包含於在兩處理器之外的任一處理器中之,而經由P-P互連連接於該等處理器,
以至於如果一處理器被安置成為低功率模式,則處理器之任一者或兩者的區域性快取資訊可被儲存在共用快取中。
晶片組1490可經由一界面1496被耦接至一第一匯流排1416。於一實施例中,第一匯流排1416可以是週邊構件互連(PCI)匯流排,或匯流排,例如,PCI快速匯流排或另一第三代I/O互連匯流排,雖然本發明實施例範疇是不因此受限定。
如於第7圖之展示,各種I/O裝置1414可與匯流排橋1418一起被耦接至第一匯流排1416,而匯流排橋1418耦接第一匯流排1416至一第二匯流排1420。於一實施例中,第二匯流排1420可以是低引線數(LPC)匯流排。各種裝置可被耦接至第二匯流排1420,包含,例如,鍵盤/滑鼠1422、通訊裝置1426以及資料儲存單元1428,例如,碟片驅動器或其他大量儲存裝置,於一實施例中,其可包含指令碼1430。進一步地,一音訊I/O 1424可被耦接至第二匯流排1420。注意到,其他架構也是可能的。例如,取代第7圖之點對點架構,一系統可實現一多點匯流排或此其他架構。
接著參看至第8圖,其展示的是依據本發明一實施例之第三系統1500的方塊圖。第7圖與第8圖中之相同元件具有相同參考號碼,並且第7圖之某些論點已自第8圖中被省略以便避免混淆第8圖的其他論點。
第8圖是圖解地說明處理元件1470、1480可分別包含整合記憶體以及I/O控制邏輯(“CL”)1472以及1482。對於至少一實施例,該CL 1472、1482可包含記憶體控制器中
樞邏輯(IMC),例如,如配合第6以及7圖之上面所述。此外,CL 1472、1482也可包含I/O控制邏輯。第8圖圖解地說明不只是記憶體1442、1444被耦接至CL 1472、1482,且I/O裝置1514同時也耦接至控制邏輯1472、1482。遺留式I/O裝置1515被耦接至晶片組1490。處理元件1470以及1480可包含如此處討論之處理器架構1481(例如,200、300、400、500)。
第9圖是圖解地說明功能性方塊圖,其說明依據一實施例實現之系統900。圖解說明之處理系統900的實施例包含一個或多個處理器(或中央處理單元)905,其具有處理器架構990(例如,200、300、400、500)、系統記憶體910、非依電性("NV")記憶體915、資料儲存單元("DSU")920、通訊鏈路925、以及晶片組930。圖解說明之處理系統900可代表任何電腦系統,如包含桌上型電腦、筆記型電腦、工作站、手持電腦、伺服器、刀鋒型伺服器或其類似者。
處理系統900之元件如下所述地被互連。處理器905經由晶片組930連通地被耦接至系統記憶體910、NV記憶體915、DSU 920、以及通訊鏈路925,以傳送以及接收指令或資料至/從該處。於一實施例中,NV記憶體915是快閃記憶體裝置。於其他實施例中,NV記憶體915包含唯讀記憶體("ROM")、可程控ROM、可消除可程控ROM、電氣地可消除可程控ROM、或其類似者之任何一者。於一實施例中,系統記憶體910包含隨機存取記憶體("RAM"),例如,動態RAM("DRAM")、同步DRAM、("SDRAM")、雙重資料率SDRAM("DDRSDRAM")、靜態RAM("SRAM")、以及其
類似者。DSU 920代表供用於軟體資料、應用、及/或操作系統之任何儲存裝置,但是一般多數將是非依電性儲存裝置。DSU 920可選擇地包含一個或多個整合驅動電子("IDE")硬碟、增強IDE("EIDE")硬碟、獨立碟片之冗餘陣列("RAID")、小電腦系統界面("SCSI")硬碟以及其類似者。雖然DSU 920圖解地被說明為內接於處理系統900,但DSU 920也可以是外部地被耦接至處理系統900。通訊鏈路925可耦接處理系統900至網路,以至於處理系統900可在網路上通訊於一個或多個其他電腦。通訊鏈路925可包含數據機、以太卡、Gigabit以太卡、通用串列匯流排("USB")埠、無線網路界面卡、光纖界面或其類似者。
該DSU 920可包含機器可存取媒體907,一個或多個指令組(例如,軟體)被儲存在其上,該一個或多個指令組實施如此處說明之任何一個或多個方法或功能。該軟體也可,完全地或至少部份地,於利用處理器905執行的期間存在於處理器905內,處理器905也構成機器可存取儲存媒體。
雖然機器可存取媒體907以單一媒體之實施範例被展示,名詞“機器可存取媒體”應被視為包含單一媒體或複數個媒體(例如,集中制或分佈式資料庫、及/或相關聯的快取以及伺服器),其儲存該一個或多個指令組。名詞“機器可存取媒體”將也被採用以包含任何媒體,其是可儲存、編碼或攜帶用以利用機器執行的一組指令並且其將導致該機器進行本發明實施例之任何的一個或多個方法。名詞“機
器可存取媒體”將因此被採用以包含,但是不受限定於,固態記憶體、光學以及磁式媒體。
因此,機器可存取媒體包含任何機構,其提供(亦即,儲存及/或傳送)可利用機器(例如,電腦、網路裝置、個人數位助理、製造器具、一組的一個或多個處理器之任何裝置、等等)存取之形式的資訊。例如,機器可存取媒體包含可記錄/非可記錄媒體(例如,唯讀記憶體(ROM);隨機存取記憶體(RAM);磁碟片儲存媒體;光學儲存媒體;快閃記憶體裝置;等等)、以及電氣、光學、聽覺或、其他形式的傳輸信號(例如,載波、紅外線信號、數位信號、等等);等等。
如第9圖中之圖形說明,各個處理系統900附屬構件之包含用於彼此通訊之輸入/輸出("I/O")電路950。I/O電路950可包含阻抗匹配電路,其可被調整以達成一所需的輸入阻抗,因而減低在該等附屬構件之間的信號反射以及干擾。於一實施例中,PLL架構900(例如,PLL架構100)可被包含在各種數位系統之內。例如,PLL架構990可被包含在處理器905之內及/或連通地被耦接至處理器以提供一彈性時脈來源。該時脈來源可被提供至供用於處理器905之狀態元件。
應了解,為簡明之目的,處理系統900的各種其他元件已排除在第9圖以及這討論之外。例如,處理系統900可進一步包含圖形卡、另外的DSU、其他永久資料儲存裝置、以及其類似者。晶片組930也包含系統匯流排以及用以
互連附屬構件(例如,記憶體控制器中樞以及輸入/輸出("I/O")控制器中樞)的各種其他資料匯流排、以及,包含用以連接週邊裝置至晶片組930的資料匯流排(例如,週邊構件互連匯流排)。相對應地,處理系統900可操作而不必有圖形說明的一個或多個元件。例如,處理系統900不一定需要包含DSU 920。
於一實施例中,此處說明之系統包含一個或多個處理器,其包含一轉譯後備緩衝器(TLB)。該TLB包含用以對映虛擬位址至實際位址的一些埠口。一第一快取儲存器被耦接至TLB。當推測性載入指令命中TLB時,第一快取儲存器接收關聯於一推測性載入指令之實際位址。第二快取儲存器被耦接至第一快取儲存。第二快取儲存器用以儲存包含關聯於一實際位址之資料的資料,該實際位址是關聯於該推測性載入指令。一個或多個處理器被組態以執行指令而決定關聯該推測性載入指令之實際位址是否位於第一快取儲存器中,以當關聯於該推測性載入指令之實際位址不位於第一快取儲存器中時,則藉由設定一位元於暫存器檔案中而自發地延遲該推測性載入指令,並且用以決定關聯於該推測性載入指令之實際位址是否位於第二快取儲存器中。
該一個或多個處理器更被組態來執行指令以自第二快取儲存器傳送關聯於該實際位址之資料至該第一快取儲存器。一個或多個處理器進一步被組態以當檢查指令接收設定位元時,依據一檢查指令執行指令而再引導至復
原碼。如果推測性載入不是所需,則檢查指令不被執行,並且一個或多個處理器之管線避免因為該推測載入被延遲而拖延。
此處說明之處理器設計包含積極的新微架構設計。於一特定實施例中,這設計包含在一單矽片上的8個多線程核心並且每個週期可發出高至12個指令至執行管線。該等12管線可包含2個M-管線(記憶體)、2個A-管線(ALU)、2個I-管線(整數)、2個F-管線(浮動-點)、3個B-管線(支線)、以及1個N-管線(NOP)。在先前的Itanium®處理器上,M-管線之數目自4個被減低至2個。如先前的Itanium®處理器設計,指令依序地被發出並且被除役。記憶體操作在除役之前檢測任何錯誤,但是它們可在記憶體操作完成之前除役。使用載入目標暫存器之指令以延遲它們的執行直至載入完成為止。使用記憶體儲存結果之記憶體指令可在儲存被完成之前除役。快取階層保證此等記憶體操作將以適當之順序完成。
資料快取階層可藉由下面的快取位準被構成:16KB第一位準資料快取(FLD-核心私用)256KB中間位準資料快取(MLD-核心私用)32MB最後位準指令以及資料快取(LLC-共用所有的8個核心)
LLC是包括所有的其他快取。所有的8個核心可共用該LLC。MLD以及FLD是單一核心所私用。在一特定核心上的線程共用所有的快取位準。所有的資料快取可具
有64-位元組快取線。MLD錯失一般觸發對於二個64-位元組線的擷取,其組成一對齊的128-位元組區塊以便模擬先前Itanium®處理器之128-位元組快取線的性能。這最後特點被稱為MLD搭檔線預提取軟體,其將在此處說明之處理器設計上執行,因為Itanium®架構之支援以及集中於包含軟體資料預提取之軟體最佳化,其將是比先前架構中的情況更有可能包含軟體資料預提取。這軟體資料預提取在提高性能方面已是相當成功。於一實施例中,用以在目前處理器設計上進行的一重要軟體將是大企業等級之應用。這些應用趨向於具有大的快取以及記憶印跡以及高記憶體帶寬需求。資料預提取,相同於所有的推測形式,當推測是不正確時,可導致性能損失。因為這樣,使無用的資料預提取數量(不消除一快取錯失之資料預提取)最小化是重要的。資料預提取於進入、離開、以及在各種記憶體階層位準之間消耗有限之帶寬。資料預提取將其他線自快取偏移。無用的資料預提取消耗這些資源而無任何好處且可能損傷此等資源之較佳使用。於如此處說明之多線程、多核心處理器中,諸如通訊鏈路以及快取之共用資源可能非常嚴重地被非推測性存取所採用。大的企業應用傾向於緊縮這些共用資源。於此一系統中,限制無用的預提取數目是緊要的以避免浪費可能被非推測性存取所使用之資源。有趣地,軟體資料預提取技術比許多硬體資料預提取技術傾向於產生較少無用的預提取。但是,由於它們輸入之動態性質,硬體資料預提取技術是可產生軟體有時無法辨識之
有用的資料預提取。軟體以及硬體資料預提取具有多種其他的互補強度以及弱點。目前處理器設計使得軟體預提取更有效、增加穩當性、補充以及不傷害軟體資料預提取之高度精確硬體資料預提取,達成具有廣泛增益而無主要損失以及很少之次要損失之強健性能增益,並且最小化設計資源所需。
應了解,這說明全文中涉及之“一實施例”或“一個實施例”意謂著於相關實施例中所說明的一特定特點、架構或特性係被包含在至少一實施例中。因此,其被強調並且應了解,於這說明文各部份中,二個或更多個關連的“一實施例”或“一個實施例”或“一不同實施例”不必定得是都關連於相同實施例。更進一步地,特定特點、架構或特性可適用地被組合於一個或多個實施例中。
在上面各種實施例的詳細說明中,參考至附圖,其形成關於此說明之一部份,並且其中經由圖解說明被展示,而且不是作為限制,本發明可於其中被實施之特定實施例。於圖形中,相同號碼大致說明相似構件。所說明之實施例充分詳細地被說明以使得那些熟習本技術者能夠實施此處揭示之技術。其他實施例可被採用並且自其被導出,以至於架構以及邏輯可以替代以及改變而不脫離這揭示範疇。因此,下面的詳細說明,不是被採用作為限制意思,並且各種實施例範疇僅藉由附加申請專利範圍、與等效於此等申請專利範圍的全部範圍一起被界定。
100‧‧‧電腦實現方法
102-116‧‧‧電腦實現步驟
Claims (20)
- 一種電腦實現方法,其包括下列步驟:判定一推測性載入指令是否遭遇一長潛時情況;如果該推測性載入指令遭遇該長潛時情況,則自發地延遲該推測性載入指令;如果該推測性載入指令遭遇該長潛時情況,則啟動需要長潛時存取之一轉譯或資料的一預提取;以及判定是否需要該推測性載入指令。
- 如申請專利範圍第1項之電腦實現方法,其中該推測性載入指令是關聯於一檢查指令,其中判定是否需要該推測性載入指令之步驟包括執行關聯於該方法之軟體碼,並且如果該軟體碼到達關聯於該推測性載入指令之一目標暫存器的該檢查指令時,則需要該推測性載入指令。
- 如申請專利範圍第2項之電腦實現方法,其更包括:如果需要該推測性載入指令,則再引導至復原碼,該復原碼用以執行該載入之一非推測性版本並且等待需要長潛時存取之該預提取的轉譯或資料。
- 如申請專利範圍第1項之電腦實現方法,其中判定一推測性載入指令是否遭遇一長潛時情況之步驟包括判定該推測性載入是否命中或錯失一資料快取。
- 如申請專利範圍第1項之電腦實現方法,其中判定一推測性載入指令是否遭遇一長潛時情況之步驟包括判定該推測性載入是否命中或錯失一資料轉譯後備緩衝器 (TLB)。
- 如申請專利範圍第1項之電腦實現方法,其中如果該推測性載入指令遭遇該長潛時情況則自發地延遲該推測性載入之步驟,包括產生於該推測性載入之一目標暫存器中被設定的一虛無(NAT)位元。
- 一種包含資料之機器可存取媒體,當該資料被一機器存取時,導致該機器進行包括下列步驟之操作:判定一推測性載入指令是否遭遇一長潛時情況;如果該推測性載入指令遭遇該長潛時情況,則自發地延遲該推測性載入指令;如果該推測性載入指令遭遇該長潛時情況,則啟動需要長潛時存取之一轉譯或資料的一預提取;以及判定是否需要該推測性載入指令。
- 如申請專利範圍第7項之機器可存取媒體,其中該推測性載入指令是關聯於一檢查指令,其中判定是否需要該推測性載入指令的步驟包括執行關聯於該方法之軟體碼,並且如果該軟體碼到達關聯於該推測性載入指令之一目標暫存器的該檢查指令時,則需要該推測性載入指令。
- 如申請專利範圍第8項之機器可存取媒體,其中該等操作更包括:如果需要該推測性載入指令,則再引導至復原碼,該復原碼用以執行該載入之一非推測性版本並且等待需要長潛時存取之該預提取的轉譯或資料。
- 如申請專利範圍第7項之機器可存取媒體,其中判定一 推測性載入指令是否遭遇一長潛時情況之步驟包括判定該推測性載入是否命中或錯失一資料快取。
- 如申請專利範圍第7項之機器可存取媒體,其中判定一推測性載入指令是否遭遇一長潛時情況之步驟包括判定該推測性載入是否命中或錯失一資料轉譯後備緩衝器(TLB)。
- 如申請專利範圍第7項之機器可存取媒體,其中如果該推測性載入指令遭遇該長潛時情況而自發地延遲該推測性載入之步驟,包括產生於該推測性載入之一目標暫存器中被設定之一虛無(NAT)位元。
- 一種處理器架構,其包括:一暫存器檔案;一耦接至該暫存器檔案之第一轉譯後備緩衝器(TLB),該第一TLB具有一些埠,供對映虛擬位址至實際位址;一耦接至該第一TLB之第二TLB,該第二TLB進行一硬體頁查表,該硬體頁查表是當該載入推測性指令錯失該第一TLB時則被啟動;一快取儲存裝置,其儲存包含關聯於該載入推測性指令的一實際位址之資料;以及處理邏輯,其被組態以判定一推測性載入指令是否遭遇該第一TLB之一長潛時TLB錯失,如果該推測性載入指令遭遇該長潛時TLB錯失,則藉由於該暫存器檔案中設定一位元而自發地延遲該推測性載入指令,並且如 果該推測性載入指令遭遇該長潛時TLB錯失,則啟動對該第二TLB之一硬體頁查表。
- 如申請專利範圍第13項之處理器架構,其中該推測性載入指令是關聯於一檢查指令,其中判定是否需要該推測性載入指令包括藉由該處理邏輯而執行軟體碼,並且如果該軟體碼到達關聯於該推測性載入指令之一目標暫存器的該檢查指令,則需要該推測性載入指令。
- 如申請專利範圍第14項之處理器架構,其中如果該推測性載入指令是所需,則該處理邏輯更被組態以再引導至復原碼,該復原碼執行該載入之一非推測性版本並且等待該硬體頁查表。
- 如申請專利範圍第15項之處理器架構,其中如果不需要該推測性載入,則該處理器架構避免拖延該硬體頁查表。
- 一種系統,其包括:一個或多個處理器,其包括,一轉譯後備緩衝器(TLB),該TLB具有一些埠,供對映虛擬位址至實際位址;一耦接至該TLB之第一快取儲存裝置,當一推測性載入指令命中該TLB時,則該第一快取儲存裝置用以接收關聯該推測性載入指令之一實際位址;一耦接至該第一快取儲存裝置之第二快取儲存裝置,該第二快取儲存裝置儲存資料,該資料包含關聯於一實際位址的資料,該實際位址關聯於該推測性載入指 令;其中該等一個或多個處理器被組態以執行指令而判定關聯該推測性載入指令之該實際位址是否位於該第一快取儲存裝置中,當該實際位址不位於該第一快取儲存裝置中時,則藉由於一暫存器檔案中設定一位元而自發地延遲該推測性載入指令,並且判定關聯於該推測性載入指令之該實際位址是否位於該第二快取儲存裝置中。
- 如申請專利範圍第17項之系統,其中該等一個或多個處理器更被組態以執行指令而自該第二快取儲存裝置傳送關聯於實際位址之該資料至該第一快取儲存裝置。
- 如申請專利範圍第18項之系統,其中該等一個或多個處理器更被組態以執行一檢查指令,當該檢查指令接收該設定的位元時則再引導至復原碼。
- 如申請專利範圍第19項之系統,其中當該推測載入被延遲時,該等一個或多個處理器之一管線避免拖延。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066215 WO2013095392A1 (en) | 2011-12-20 | 2011-12-20 | Systems and method for unblocking a pipeline with spontaneous load deferral and conversion to prefetch |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201337753A TW201337753A (zh) | 2013-09-16 |
TWI514275B true TWI514275B (zh) | 2015-12-21 |
Family
ID=48669051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101142617A TWI514275B (zh) | 2011-12-20 | 2012-11-15 | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140208075A1 (zh) |
TW (1) | TWI514275B (zh) |
WO (1) | WO2013095392A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588841B2 (en) * | 2014-09-26 | 2017-03-07 | Intel Corporation | Using reliability information from multiple storage units and a parity storage unit to recover data for a failed one of the storage units |
US9501284B2 (en) | 2014-09-30 | 2016-11-22 | Apple Inc. | Mechanism for allowing speculative execution of loads beyond a wait for event instruction |
JP7041353B2 (ja) * | 2018-06-06 | 2022-03-24 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP7053998B2 (ja) * | 2018-06-06 | 2022-04-13 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11176055B1 (en) | 2019-08-06 | 2021-11-16 | Marvell Asia Pte, Ltd. | Managing potential faults for speculative page table access |
US11962518B2 (en) | 2020-06-02 | 2024-04-16 | VMware LLC | Hardware acceleration techniques using flow selection |
US11960404B2 (en) * | 2020-09-23 | 2024-04-16 | Advanced Micro Devices, Inc. | Method and apparatus for reducing the latency of long latency memory requests |
US11593278B2 (en) | 2020-09-28 | 2023-02-28 | Vmware, Inc. | Using machine executing on a NIC to access a third party storage not supported by a NIC or host |
US12021759B2 (en) | 2020-09-28 | 2024-06-25 | VMware LLC | Packet processing with hardware offload units |
US20220100432A1 (en) | 2020-09-28 | 2022-03-31 | Vmware, Inc. | Distributed storage services supported by a nic |
US11636053B2 (en) | 2020-09-28 | 2023-04-25 | Vmware, Inc. | Emulating a local storage by accessing an external storage through a shared port of a NIC |
US11792134B2 (en) | 2020-09-28 | 2023-10-17 | Vmware, Inc. | Configuring PNIC to perform flow processing offload using virtual port identifiers |
US11875172B2 (en) | 2020-09-28 | 2024-01-16 | VMware LLC | Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC |
US11314657B1 (en) * | 2020-12-02 | 2022-04-26 | Centaur Technology, Inc. | Tablewalk takeover |
US11863376B2 (en) | 2021-12-22 | 2024-01-02 | Vmware, Inc. | Smart NIC leader election |
US11995024B2 (en) | 2021-12-22 | 2024-05-28 | VMware LLC | State sharing between smart NICs |
US11928062B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Accelerating data message classification with smart NICs |
US11899594B2 (en) | 2022-06-21 | 2024-02-13 | VMware LLC | Maintenance of data message classification cache on smart NIC |
US11928367B2 (en) | 2022-06-21 | 2024-03-12 | VMware LLC | Logical memory addressing for network devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
TW200422947A (en) * | 2003-04-23 | 2004-11-01 | Ip First Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US6931515B2 (en) * | 2002-07-29 | 2005-08-16 | Hewlett-Packard Development Company, L.P. | Method and system for using dynamic, deferred operation information to control eager deferral of control-speculative loads |
TW200820070A (en) * | 2006-08-16 | 2008-05-01 | Qualcomm Inc | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
US7475230B2 (en) * | 2003-05-16 | 2009-01-06 | Sun Microsystems, Inc. | Method and apparatus for performing register file checkpointing to support speculative execution within a processor |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742108B1 (en) * | 1995-12-29 | 2004-05-25 | Intel Corporation | Method and apparatus for executing load instructions speculatively |
US6658559B1 (en) * | 1999-12-31 | 2003-12-02 | Intel Corporation | Method and apparatus for advancing load operations |
US6895527B1 (en) * | 2000-09-30 | 2005-05-17 | Intel Corporation | Error recovery for speculative memory accesses |
US6918030B2 (en) * | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US20040123081A1 (en) * | 2002-12-20 | 2004-06-24 | Allan Knies | Mechanism to increase performance of control speculation |
US7313790B2 (en) * | 2003-06-23 | 2007-12-25 | Intel Corporation | Methods and apparatus for preserving precise exceptions in code reordering by using control speculation |
JP4169771B2 (ja) * | 2005-01-05 | 2008-10-22 | 富士通株式会社 | Webサーバ、Webアプリケーションテスト方法、Webアプリケーションテストプログラム |
CN101103336A (zh) * | 2005-01-13 | 2008-01-09 | 皇家飞利浦电子股份有限公司 | 数据处理***和任务调度的方法 |
US7484217B2 (en) * | 2005-02-24 | 2009-01-27 | International Business Machines Corporation | Method for automatic adjustment of time a consumer waits to access data from a queue during a waiting phase and transmission phase at the queue |
US8806177B2 (en) * | 2006-07-07 | 2014-08-12 | International Business Machines Corporation | Prefetch engine based translation prefetching |
US7616468B2 (en) * | 2006-08-04 | 2009-11-10 | Qualcomm Incorporated | Method and apparatus for reducing power consumption in a content addressable memory |
US8108874B2 (en) * | 2007-05-24 | 2012-01-31 | International Business Machines Corporation | Minimizing variations of waiting times of requests for services handled by a processor |
-
2011
- 2011-12-20 WO PCT/US2011/066215 patent/WO2013095392A1/en active Application Filing
- 2011-12-20 US US13/995,904 patent/US20140208075A1/en not_active Abandoned
-
2012
- 2012-11-15 TW TW101142617A patent/TWI514275B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
US6931515B2 (en) * | 2002-07-29 | 2005-08-16 | Hewlett-Packard Development Company, L.P. | Method and system for using dynamic, deferred operation information to control eager deferral of control-speculative loads |
TW200422947A (en) * | 2003-04-23 | 2004-11-01 | Ip First Llc | Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts |
US7475230B2 (en) * | 2003-05-16 | 2009-01-06 | Sun Microsystems, Inc. | Method and apparatus for performing register file checkpointing to support speculative execution within a processor |
TW200820070A (en) * | 2006-08-16 | 2008-05-01 | Qualcomm Inc | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
Also Published As
Publication number | Publication date |
---|---|
TW201337753A (zh) | 2013-09-16 |
WO2013095392A1 (en) | 2013-06-27 |
US20140208075A1 (en) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI514275B (zh) | 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法 | |
CN111506534B (zh) | 具有非阻塞高性能事务信用***的多核总线架构 | |
US11210099B2 (en) | Persistent commit processors, methods, systems, and instructions | |
US9043559B2 (en) | Block memory engine with memory corruption detection | |
US9026705B2 (en) | Interrupt processing unit for preventing interrupt loss | |
US8335912B2 (en) | Logical map table for detecting dependency conditions between instructions having varying width operand values | |
JP5706588B2 (ja) | メモリ要求を行う方法、装置、およびコンピュータ・プログラム製品(システム・メモリへの効率的なメタビットの記憶) | |
US20100274961A1 (en) | Physically-indexed logical map table | |
US20130024647A1 (en) | Cache backed vector registers | |
KR102268601B1 (ko) | 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
WO2018229702A1 (en) | Reducing cache transfer overhead in a system | |
US20170286118A1 (en) | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion | |
CN111353156A (zh) | 可缩放多密钥总存储器加密引擎 | |
US20130138888A1 (en) | Storing a target address of a control transfer instruction in an instruction field | |
US10705962B2 (en) | Supporting adaptive shared cache management | |
US8516200B2 (en) | Avoiding cross-interrogates in a streaming data optimized L1 cache | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US8504805B2 (en) | Processor operating mode for mitigating dependency conditions between instructions having different operand sizes | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
WO2018022524A1 (en) | Apparatus and method supporting code optimization | |
US9304767B2 (en) | Single cycle data movement between general purpose and floating-point registers | |
US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |