TW202311938A - 用於管線化控制的設備以及方法 - Google Patents
用於管線化控制的設備以及方法 Download PDFInfo
- Publication number
- TW202311938A TW202311938A TW110133582A TW110133582A TW202311938A TW 202311938 A TW202311938 A TW 202311938A TW 110133582 A TW110133582 A TW 110133582A TW 110133582 A TW110133582 A TW 110133582A TW 202311938 A TW202311938 A TW 202311938A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- load
- preload
- instruction
- address
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 13
- 239000000872 buffer Substances 0.000 claims abstract description 110
- 230000036316 preload Effects 0.000 claims abstract description 104
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000001174 ascending effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000012805 post-processing Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 231100000957 no side effect Toxicity 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30098—Register arrangements
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Pipeline Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明提供一種用於管線化控制的設備以及方法,其中該設備可包含一預加載預測器、一算術邏輯單元以及一資料緩衝器。該預加載預測器是用來判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果。該算術邏輯單元是用來進行算術邏輯運作,以及該資料緩衝器是用來提供資料給該算數邏輯單元使用。尤其,當該預加載判斷結果指出該載入指令符合該至少一特定條件,該資料緩衝器依據該載入指令所載有的資訊自一快取記憶體擷取預加載資料並且將該預加載資料儲存於該資料緩衝器內,其中該預加載資料為一後續載入指令所請求的資料。
Description
本發明係關於指令管線化(instruction pipeline),尤指一種用於管線化控制的設備(apparatus)以及方法。
在一個電子裝置中的記憶體組織架構可包含多個層級,諸如暫存器(register)、快取(cache)記憶體、主記憶體以及輔助(auxiliary)記憶體。由於最靠近中央處理單元的記憶體層級存取速度最快但儲存空間最小,因此存取速度由快到慢依序為暫存器、快取記憶體、主記憶體以及輔助記憶體,而儲存空間由大到小依序為輔助記憶體、主記憶體、快取記憶體以及暫存器
最外部的層級存取速度則越快但儲存空間最大。
在指令管線化的架構下運作時,中央處理單元可透過載入指令將位於快取記憶體的資料載入至暫存器以供後續指令快速地取得。然而,快取記憶體內的資料依然是在執行載入指令的數個週期後才能在暫存器備妥以供使用,這導致某些指令的執行需要被延遲而導致管線化排程出現「氣泡(bubble)」,因而降低了中央處理單元在管線化指令的架構下運作的效能。尤其,現代的中央處理器利用較深的管線化階段以達到較快的時脈率,而上述問題在較深的管線化階段的架構下尤其嚴重
因此,需要一種新穎的方法以及設備,以在沒有副作用或較不會帶來副作用的情況下最佳化指令管線化的效能。
本發明之一目的在於提供一種用於管線化(pipeline)控制的設備以及方法,以解決相關技術的問題。
本發明至少一實施例提供一種用於管線化控制的設備。該設備可包含一預加載(preload)預測器、一算術邏輯單元(arithmetic logic unit, ALU)以及一資料緩衝器,其中該資料緩衝器耦接至該預加載預測器與該算術邏輯單元的。該預加載預測器是用來判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果。該算術邏輯單元是用來進行算術邏輯運作,以及該資料緩衝器是用來提供資料給該算數邏輯單元使用,其中該算數邏輯單元自該資料緩衝器擷取資料的速度快於該算數邏輯單元自一快取記憶體擷取資料的速度。尤其,當該預加載判斷結果指出該載入指令符合該至少一特定條件,該資料緩衝器依據該載入指令所載有的資訊自該快取記憶體擷取(fetch)預加載資料並且將該預加載資料儲存於該資料緩衝器內,其中該預加載資料為一後續載入指令所請求的資料。
本發明至少一實施例提供一種用於管線化控制的方法。該方法可包含:利用一預加載預測器判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果;當該預加載判斷結果指出該載入指令符合該至少一特定條件,該資料緩衝器依據該載入指令所載有的資訊自一快取記憶體擷取預加載資料並且將該預加載資料儲存於該資料緩衝器內,其中該預加載資料為一後續載入指令所請求的資料;以及利用一資料緩衝器提供該預加載資料給一算數邏輯單元進行算術邏輯運作,其中該算數邏輯單元自該資料緩衝器擷取資料的速度快於該算數邏輯單元自一快取記憶體擷取資料的速度。
本發明的實施例所提供的設備以及方法能基於空間局部性(spatial locality)與時間局部性(temporal locality)有效地減少載入-使用指令對(load-use instruction pairs)所導致的拖延週期。尤其,本發明的實施例不會大幅增加額外成本,因此本發明能在沒有副作用或較不會帶來副作用的情況下解決相關技術的問題。
快取(cache)記憶體是一種能快速存取的記憶體,用來儲存近期被使用過或是較容易被頻繁使用的資料或指令。為了滿足快速存取的需求,快取記憶體可由靜態隨機存取記憶體(static random access memory,簡稱SRAM)組成。然而,靜態隨機存取記憶體依然需要在接收到存取位址的週期先鎖存這個存取位址,並且直到下個週期才能回傳對應的資料。
第1圖為依據本發明一實施例之一設備100(例如中央處理單元)在指令管線化的架構下運作的示意圖。在本實施例中,該指令管線化的架構可為五階段管線,包含指令擷取(instruction fetch, IF)階段、指令解碼(instruction decode, ID)階段、指令執行階段、記憶體存取階段以及資料寫回階段,其中以上階段在圖中分別標示為「IF」、「ID」、「EXE」、「MEM」以及「WB」以求簡明。設備100首先可透過運作於其上的指令擷取模組110(標示為「指令擷取」以求簡明)於該指令擷取階段取得某一指令,接著進入該指令解碼階段。於該指令解碼階段,該設備可利用其內的指令解碼器120(標示為「指令解碼」以求簡明)對這個指令進行解碼以取得這個指令所載有(carry)的資訊諸如指令類型、基址(base address)、偏移值(offset)等,接著進入該指令執行階段。於該指令執行階段,若這個指令是一載入指令,設備100可利用其內的位址產生器130依據這個指令所載有的基址與偏移值產生存取位址,再接著進入記憶體存取階段;而若這個指令是一算術指令,該設備可利用其內的算術邏輯單元(arithmetic logic unit, ALU)140進行算數邏輯運作諸如該算數指令所對應的運算。於該記憶體存取階段,設備100可自其內的載入儲存單元150(尤指載入儲存單元150內的快取記憶體151)擷取對應於該存取位址的資料,再接著進入該資料寫回階段。於該資料寫回階段,設備100可將擷取出的資料寫回最靠近中央處理單元的記憶體諸如暫存器堆(register file)160以供後續指令使用,其中若快取記憶體151並未命中(例如快取記憶體151並未儲存有該載入指令所請求的資料),設備100於該資料寫回階段則可利用其內的匯流排介面單元170對外發出匯流排請求,以自外部記憶體(例如硬式磁碟機、固態硬碟或是外接輔助記憶體)取得該載入指令所請求的資料(例如第1圖所示之匯流排資料)。
在第1圖的實施例中,雖然一載入指令能在該記憶體存取階段自快取記憶體151取得資料,但是若某一算數指令在管線架構中是與該載入指令背靠背(back to back)地執行(例如該算數指令緊跟在該載入指令後面),這個算數指令依然需要等到下一個週期(例如等到該載入指令進入該資料寫回階段)才能使用自該快取記憶體取得的資料。
表1
操作 | 指令 |
載入 | load r0, [r8]; |
相加 | add r5, r0, #8; |
載入 | load r1, [r9]; |
表1為一個指令組合的例子,其中表1的第一行的指令(以下稱之為第一載入指令)表示將快取記憶體151中之位址[r8]的資料載入暫存器r0,表1的第二行的指令(以下稱之為相加指令)表示將暫存器r0的值加8的算術結果儲存在暫存器r5,而表1的第三行的指令(以下稱之為第二載入指令)表示自該快閃記憶體中之位址[r9]的資料載入暫存器r1。
表2
ID | EX | MEM | WB | |
第一週期 | 相加 | 載入 | ||
第二週期 | 相加 | 氣泡 | 載入 | |
第三週期 | 載入 | 相加 | 氣泡 | 載入 |
表2為表1中的三個指令於管線化架構中的三個週期的排程,其中上述指令解碼階段、指令執行階段、記憶體存取階段以及資料寫回階段於表2中分別標示為「ID」、「EXE」、「MEM」以及「WB」以求簡明。在第一週期,該第一載入指令是在該指令執行階段而該相加指令是在該指令解碼階段。在第二週期,該第一載入指令進入該記憶體存取階段,然而由於此時該第一載入指令所請求的資料尚未能自快取記憶體151中取得,因此設備100會延遲該相加指令進入該指令執行階段的時間,使得在該第一載入指令與該相加指令之間出現「氣泡(bubble)」。在第三週期,由於該第一載入指令進入該資料寫回階段(表示暫存器r0的資料已備妥),因此該相加指令可進入該指令執行階段以進行相關運算,而該第二載入指令則可進入該指令解碼階段。
由於上述第一載入指令與相加指令為一對載入-使用(load-use)指令,即該相加指令涉及該第一載入指令且該第一載入指令與該相加指令是背靠背地執行,導致該相加指令必須等待該載入指令所對應的資料(例如載入至暫存器r0的資料)備妥後才能進入該指令執行階段,從而造成載入-使用停頓(stall),整體運作效率也受到影響。
第2圖為依據本發明一實施例之一載入-使用資料緩衝器200的示意圖。在本實施例中,載入-使用資料緩衝器200可提供一資料暫存空間,其中載入-使用資料緩衝器內部的該資料暫存空間利用正反器(flip-flop)作為儲存單元以達到單週期存取的目的,例如在接收到存取位址時,載入-使用資料緩衝器200可在當下的週期回傳對應的資料供後續指令使用。基於上述特性,載入-使用資料緩衝器200可用來移除上述載入-使用指令對(例如背靠背執行的該第一載入指令與該相加指令)所產生的載入-使用氣泡。在本實施例中,載入-使用資料緩衝器200可包含一資料儲存區以及一標籤儲存區,其中N筆資料諸如DATA[0]、DATA[1]、…及DATA[N](N可為正整數)可被分別儲存於該資料儲存區的N個條目(entry),而分別對應於該N筆資料的N個位址諸如TAG[0]、TAG[1]、…及TAG[N]則可分別被儲存於該標籤儲存區的N個條目。另外,該標籤儲存區的N個條目的每一條目的狀態可由各自的有效位元VLD以及鎖定位元LOCK來判斷。例如,當某一條目的有效位元為「1」,表示這個條目儲存的位址與對應的資料是有效的或可使用的;而當這個條目的有效位元為「0」,表示這個條目儲存的位址所對應的資料是無效的或不可使用的。又例如,當某一條目的鎖定位元為「1」,表示這個條目儲存的位址以及對應的資料處於鎖定狀態(例如正在被更新因此不允許使用);而當這個條目的鎖定位元為「0」,表示這個條目儲存的位址以及對應的資料並未處於鎖定狀態。具體來說,有效位元VLD[0]與鎖定位元LOCK[0]可用來表示標籤位址TAG[0]與資料DATA[0]的狀態,有效位元VLD[1]與鎖定位元LOCK[1]可用來表示標籤位址TAG[1]與資料DATA[1]的狀態,而依此類推,有效位元VLD[N]與鎖定位元LOCK[N]可用來表示標籤位址TAG[N]與資料DATA[N]的狀態。
在本實施例中,當載入-使用資料緩衝器200收到一存取位址ADDR,載入-使用資料緩衝器200可將存取位址ADDR的至少一部分與儲存在載入-使用資料緩衝器200的該標籤儲存區的標籤位址逐一進行比對,以確認存取位址ADDR所請求的資料是否已被儲存於載入-使用資料緩衝器200內。舉例來說,當該N筆資料的每一筆資料為64位元(bit),載入-使用資料緩衝器200可將存取位址ADDR的第31個位元至第3個位元(可表示為ADDR[31:3])與標籤位址TAG[0]、TAG[1]、…、及TAG[N]逐一比對以產生N個比對結果。另外,載入-使用資料緩衝器200內的選擇控制器220可依據這N個比對結果產生一載入-使用緩衝器(例如對這N個比對結果進行或邏輯處理以產生有效訊號LUB_VALID),其中若這N個比對結果中的任一者指出其比對結果為「命中(hit)」,有效訊號LUB_VALID可指出載入-使用資料緩衝器200命中(表示存取位址ADDR所請求的資料可在載入-使用資料緩衝器200被找到)。尤其,當有效訊號LUB_VALID指出載入-使用資料緩衝器200命中,選擇控制器220可依據這N個比對結果產生一選擇訊號SEL,以使載入-使用資料緩衝器200內的選擇電路諸如多工器230依據選擇訊號SEL選擇相對應的條目以輸出對應的資料。若這N個比對結果全部都為「錯過(miss)」,表示存取位址ADDR所請求的資料並未儲存於載入-使用資料緩衝器200內,載入-使用資料緩衝器200內的載入-使用緩衝(load-use buffer,簡稱LUB)控制器210則可自快取記憶體151取得快取資料或者透過匯流排介面單元170自外部取得匯流排資料,但本發明不限於此。
當存取位址ADDR自快取記憶體151或外部記憶體取得存取位址ADDR所請求的新資料後,LUB控制器210可將這個新資料儲存至載入-使用資料緩衝器200內的該資料儲存區。如此一來,當載入-使用資料緩衝器200在未來再一次接收到存取位址ADDR時,就能快速地提供這個新資料。需注意的是,若載入-使用資料緩衝器200內的儲存空間已滿,LUB控制器210需要依據一更新替代方針將其中一個條目內的資料捨棄才能提供儲存空間給這個新資料。因此,這N比資料的每一筆資料可對應於一權重值,而該權重值可用來判斷對應的資料被使用的頻率,以供LUB控制器210據以進行資料更新。例如,該N筆資料中的某筆資料可因為長時間未被使用而具有較低的權重值,而該N筆資料中的另一筆資料可因為較頻繁地被使用而具有較高的權重值。當載入-使用資料緩衝器200內的儲存空間已滿但LUB控制器210依然決定將一筆尚未儲存於載入-使用資料緩衝器200內的新資料儲存至載入-使用資料緩衝器200內,LUB控制器210可選擇將這N筆資料中權重值最低的那筆資料捨棄,並且以上述新資料取代。因此,本能藉助於資料的時間局部性,以容許被頻繁使用的資料被儲存在存取速度較快的載入-使用資料緩衝器200,從而最佳化設備100的整體效能。
表3
i0 | 初始 | r2, 10; |
i1 | 載入 | r1, [r0], #16; |
i2 | 相加 | r5, r4, r1; |
i3 | 相加 | r3, r1, r2; |
i4 | 相減 | r2, r2, 1; |
i5 | 返回 | i1 |
表3為另一個指令組合的例子,其中表3所示之指令組合包含有六個指令並且依序編號為i0、i1、i2、i3、i4及i5。指令i0表示將數值「10」寫入暫存器r2作為初始值,指令i1表示將快取記憶體151中之位址[r0]的資料載入暫存器r1,指令i2表示將暫存器r4的值加上暫存器r1的值的結果寫入暫存器r5,指令i3表示將暫存器r1的值加上暫存器r2的值的結果寫入暫存器r3,指令i4表示將暫存器r2的值減去數值「1」的結果寫入暫存器r2,而指令i5表示程式流程回到指令i1。由表3可看出指令i1及i2為一對載入-使用指令,然而第2圖所示之載入-使用資料緩衝器200尚無法避免表3所示之指令組合發生載入-使用停頓。詳細來說,指令i2被執行時會將前一次的基址[r0]加上16以作為本次的目標位址。例如,在第一個週期時,指令i2是將快取記憶體151中之位址[r0]的資料載入暫存器r1;而在第二週期時,指令i2則是將快取記憶體151中之位址[r0 + 16]的資料載入暫存器r1。由上可知,雖然指令i2被重複地執行,但每次的目標位址都被平移了「16」,因此載入-使用資料緩衝器200總是會得到「錯過」的結果而無法避免載入-使用停頓的情況發生。
第3圖為依據本發明一實施例之一載入-使用資料緩衝器300的示意圖,其中載入-使用資料緩衝器300可視為第2圖所示之載入-使用資料緩衝器200的增強型版本。具體來說,載入-使用資料緩衝器300是基於載入-使用資料緩衝器200的架構,針對該標籤儲存區的N個條目的每一條目的狀態位元進行改良。例如,除了有效位元VLD以及鎖定位元LOCK外,該N個條目的每一條目的狀態可另依據一備妥位元RDY諸如RDY[0]、RDY[1]、RDY[2]、…及RDY[N]來判斷。此外,載入-使用資料緩衝器300可另包含一選擇電路諸如多工器240,其中多工器240是透過一內部路徑耦接至該資料緩衝器內部的一資料暫存空間(尤其是偶街至多工器230的輸出端子),並且透過一旁通路徑耦接至載入-使用資料緩衝器300外部的快取記憶體151。當載入-使用資料緩衝器300的該資料暫存空間並未儲存有該載入資料時(例如針對存取位址ADDR[INDEX_RANGE]進行的比對所產生的N個比對結果全部都為「錯過」),載入-使用資料緩衝器300可依據上述更新替代方針選擇某一條目諸如第i個條目(i為0到N的範圍內的整數),以依據該載入資料更新該資料暫存空間內的資料諸如該第i個條目所儲存的資料。在本實施例中,存取位址ADDR中被用來進行比對的位元範圍INDEX_RANGE可依據各個條目所儲存的資料的大小予以變化,為簡明起見在此不贅述。若該載入資料可在快取記憶體151中被找到,LUB控制器210可自快取記憶體151取得該載入資料(在第3圖以快取資料CACHE_DATA表示);而若該載入資料在快取記憶體151無法被找到,LUB控制器210則可另透過匯流排介面單元170取得該載入資料(在第3圖中以匯流排資料BUS_DATA表示)。
需注意的是,在LUB控制器210取得快取資料CACHE_DATA後,針對被選到的條目進行的資料更新並非能立即完成。在本實施例中,多工器230可依據被選擇到的條目的備妥位元(例如第i個條目的備妥位元RDY[i])自該內部路徑與該旁通路徑選擇其中一者,以在該指令執行階段提供一載入指令(例如上述第一載入指令)所請求的載入資料給算術邏輯單元140。舉例來說,當載入-使用資料緩衝器300的該資料暫存空間並未儲存有該載入資料但快取記憶體151儲存有該載入資料時,LUB控制器210可將第i個條目的備妥位元RDY[i]由「0」更新為「1」,而多工器240可致能該旁通路徑,以容許算數邏輯單元140於該資料暫存空間內的資料(例如上述第i個條目的資料)尚未更新完成的情況下自快取記憶體151取得該載入資料諸如快取資料CACHE_DATA。又例如,當載入-使用資料緩衝器300的該資料暫存空間儲存有該載入資料時,備妥位元RDY[i]可被維持在「0」,而多工器230可致能該內部路徑以容許該算數邏輯單元自該資料暫存空間取得該載入資料。
第4圖為依據本發明一實施例之一設備400(例如中央處理單元)在指令管線化的架構下運作的示意圖,其中設備400可視為第1圖所示之設備的增強型版本。在本實施例中,設備400可包含一預加載(preload)預測器310、一載入-使用指令偵測器320、以及第3圖所示之載入-使用資料緩衝器300。預加載預測器310可用來判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果PRELOAD。載入-使用資料緩衝器300可耦接至預加載預測器310,並且可另耦接至算術邏輯單元140以提供資料給該算數邏輯單元140使用。另外,載入-使用指令偵測器320可偵測該載入指令與緊跟在其後的一後續指令是否為一載入-使用指令對,以產生一載入-使用偵測結果lu_instr,其中當載入-使用偵測結果lu_instr指出該載入指令與該後續指令為該載入-使用指令對,表示該後續指令涉及該載入指令所請求的資料。
當一個指令組合中包含有多個載入指令,且這多個載入指令所對應的存取位址是以升序(ascending)排列或是以降序(descending)排列,例如表3會被反覆地執行的指令i1,第1圖所示之設備100即使藉助於第2圖所示之載入-使用緩衝器200,仍然無法避免在指令管線化的排程中產生氣泡。在本實施例中,當預加載判斷結果PRELOAD指出該載入指令符合該至少一特定條件,載入-使用資料緩衝器300可依據該載入指令所載有的資訊自快取記憶體151擷取預加載資料並且將該預加載資料儲存於載入-使用資料緩衝器300內,其中該預加載資料為一後續載入指令所請求的資料。例如,當預加載預測器310偵測到上述以升序排列或是以降序排列的載入指令,且載入-使用指令偵測器偵測到該載入指令與該後續指令為該載入-使用指令對,預加載預測器310可對載入-使用資料緩衝器300發出一預加載請求,而LUB控制器210可據以觸發一預加載流程以依據於該指令解碼階段取得的載入-使用資訊對載入-使用資料緩衝器300進行存取。當載入-使用資料緩衝器300針對存取位址ADDR進行比對的結果命中(在第4圖中標示為「LU命中」),載入-使用資料緩衝器300可在該載入指令於該指令執行階段時輸出該目標資料,以容許算術邏輯單元140在該後續指令進入該指令執行階段時取用該目標資料。當該載入指令所請求的目標資料並未能在載入-使用資料緩衝器300中找到,該預加載請求可在該記憶體存取階段檢查該目標資料是否能在快取記憶體151中找到,其中若快取記憶體151命中(表示可找到該目標資料),該目標資料(例如快取資料CACHE_DATA)可先被預加載至載入-使用資料緩衝器300,也可另利用第3圖所示之備妥位元RDY[i]的控制將該目標資料直接輸出(標示為「預加載備妥」)。當快取記憶體151錯過(即該目標資料未能在快取記憶體151中找到),設備400可透過匯流排介面單元170發出匯流排請求,以自外部的儲存裝置取得該目標資料(標示為「匯流排資料」)。
第5圖依據本發明一實施例繪示一載入指令於第4圖所示之指令管線化的架構下的某些細節,其中第5圖為簡明起見僅展示該指令解碼階段、該指令執行階段以及該記憶體存取階段。在本實施例中,預加載預測器依據該載入指令的至少一欄位產生該預加載判斷結果,以及預加載判斷結果PRELOAD是用來指出該載入指令所對應的一載入位址於該載入指令執行完成後是否被更新,其中該預加載資料是對應於更新該載入位址所產生的一更新後載入位址,以及當預加載判斷結果PRELOAD指出該載入位址於該載入指令執行完成後被更新時,該載入指令符合該至少一特定條件。在本實施例中,當該載入指令被解碼過後得到了後處理遞增(post-increment)欄位或後處理遞減(post-decrement)欄位,即表示該載入指令符合該至少一特定條件,其中上述後處理遞增欄位可包含欄位Inc及欄位P,而上述後處理遞減欄位可包含欄位Dec及欄位P。此外,該載入指令被解碼過後可載有一基址(於第5圖中標示為「基址暫存器」)以及一偏移值,且當預加載判斷結果PRELOAD指出該載入位址於該載入指令執行完成後被更新時,該更新後載入位址等於該載入位址加上該偏移值或是該載入位址減去該偏移值。例如,當該載入指令被解碼過後得到了欄位Inc及欄位P,表示該載入指令執行完成後該基址可被更新為該基址加上該偏移值;而當該載入指令被解碼過後得到了欄位Dec及欄位P,表示該載入指令執行完成後該基址可被更新為該基址減去該偏移值。
在本實施例中,位址產生器130可依據預加載判斷結果PRELOAD產生該載入指令所對應的該載入位址。如第5圖所示,位址產生器130可包含一第一選擇器諸如多工器131、一第二選擇器諸如多工器132、以及耦接至多工器131及132的一加總電路133。多工器131可用來依據預加載判斷結果PRELOAD自該載入指令所載有的基址ADDR(n)與一先前載入指令所對應的一先前載入位址ADDR(n-1)之中選擇一最終基址,而多工器132可用來依據預加載判斷結果PRELOAD自該載入指令所載有的偏移值OFFSET(n)與該先前載入指令所載有的先前偏移值OFFSET(n-1)之中選擇一最終偏移值,其中加總電路133是用來將該最終基址加上(或減去)該最終偏移值以產生該載入位址(可稱為「最終位址」)。尤其,當預加載判斷結果PRELOAD指出該載入位址於該載入指令執行完成後會被更新時(例如PRELOAD的邏輯值為「1」),多工器131選擇先前載入位址ADDR(n-1)作為該最終基址,以及多工器132選擇先前偏移值OFFSET(n-1)作為該最終偏移值。另外,當預加載判斷結果PRELOAD指出該載入位址於該載入指令執行完成後不會被更新時(例如PRELOAD的邏輯值為「0」),多工器131選擇基址ADDR(n)作為該最終基址,以及多工器132選擇偏移值OFFSET(n)作為該最終偏移值。需注意的是,本實施例是以該載入指令被解碼過後得到了欄位Inc及欄位P的情況作為例子進行說明,但本發明不限於此,其中本領域中具通常知識者可依此類推得知在該載入指令被解碼過後得到了欄位Dec及欄位P的情況下的相關細節,為簡明起見在此不贅述。
表4
ID | EX | MEM | WB | |
第一週期 | 相加 | 載入0x00 | ||
第二週期 | 相加 | 相加 預加載0x10 | 載入 | |
第三週期 | 相減 | 相加 | 相加 | 載入 |
第M週期 | 相加 | 載入0x10 | ||
第M+1週期 | 相加 | 相加 預加載0x20 | 載入 | |
第M+2週期 | 載入 | 相加 | 氣泡 | 載入 |
表4為表3中的某些指令於管線化架構中的三個週期的排程,其中上述指令解碼階段、指令執行階段、記憶體存取階段以及資料寫回階段於表4中分別標示為「ID」、「EXE」、「MEM」以及「WB」以求簡明。在第一週期,載入指令i1是在該指令執行階段以載入位址0x00的資料,而相加指令i2是在該指令解碼階段,其中由於載入指令i1與相加指令i2為一對載入-使用指令且載入指令i1的存取位址為升序排列(每執行完成即對存取位址平移16),因此預加載預測器310可發出一預加載請求。在第二週期,載入指令i1進入該記憶體存取階段,相加指令i2進入該指令執行階段,而相加指令i3則進入該指令解碼階段,其中於相加指令i2在該指令執行階段的同時,該預加載請求可將存取位址0x10(對存取位址0x00平移16後取得的位址)的資料預加載至載入-使用資料緩衝器300中(標示為預加載0x10)。在第三週期,載入指令i1進入該資料寫回階段,相加指令i2進入該記憶體存取階段,相加指令i3進入該指令執行階段,而相減指令i4進入該指令解碼階段。經過數個週期後,返回指令i5使得程式流程再次回到載入指令i1。由於存取位址0x10的資料已被預加載至載入-使用資料緩衝器300中,因此在第M週期(M為正整數)載入指令i1可得到載入使用緩衝器命中的結果。類似地,在第M+1週期,相加指令i2在該指令執行階段的同時,該預加載請求可將存取位址0x20(對存取位址0x10平移16後取得的位址)的資料預加載至載入-使用資料緩衝器300中(標示為預加載0x20),因此在後續週期執行載入指令i1時即可得到。載入使用緩衝器命中的結果。由於第M週期至第M+2週期的運作與第一週期至第三週期類似,為簡明起見相關細節不重複贅述。
需注意的是,快取記憶體151典型地是以靜態隨機存取記憶體來實施,而本發明的載入-使用資料緩衝器300可採用正反器作為儲存單元。因此,算數邏輯單元140自載入-使用資料緩衝器300擷取資料的速度快於自算數邏輯單元140自快取記憶體151擷取資料的速度。基於上述特性,當某一載入指令於該指令執行階段得到載入-使用緩衝器命中的結果(即這個載入指令所請求的資料可在載入-使用資料緩衝器300中找到),載入-使用資料緩衝器300可在單週期內輸出這個載入指令所請求的資料,從而避免在指令管線化的排程中產生氣泡。尤其,當某一載入指令會被反覆地執行並且每一次執行時的目標位址是以升序排列或降序排列時,表示後續即將執行的載入指令的目標位址是可預期的。本發明的預加載預測器310能基於這樣的空間局部性發出預加載請求,以將這些升序排列或降序排列的目標位址的資料在需要使用之前即提早被搬移至載入-使用資料緩衝器300內,從而避免載入-使用停頓的問題。
第6圖為依據本發明一實施例之一種用於管線化控制的方法的工作流程,其中該方法是可應用於第4圖所示之設備400。需注意的是,第6圖所示之工作流程僅為了說明之目的,並非對本發明的限制。尤其,一或多個步驟可於第6圖所示之工作流程中被新增、刪除或修改。此外,只要不妨礙整體結果,這些步驟並非必須完全依照第6圖所示之順序執行。
於步驟S610中,設備400可利用預加載預測器310判斷一載入指令是否符合至少一特定條件,以產生預加載判斷結果PRELOAD。
於步驟S620中,當預加載判斷結果PRELOAD指出該載入指令符合該至少一特定條件,設備400可利用載入-使用資料緩衝器300依據該載入指令所載有的資訊自快取記憶體151擷取預加載資料並且將該預加載資料儲存於載入-使用資料緩衝器300內,其中該預加載資料為一後續載入指令所請求的資料。
於步驟S630,設備400可利用載入-使用資料緩衝器400提供該預加載資料給算數邏輯單元進行算術邏輯運作,其中該算數邏輯單元自該資料緩衝器擷取資料的速度快於該算數邏輯單元自一快取記憶體擷取資料的速度。
第7圖為依據本發明一實施例之執行一預加載請求的工作流程,其中該預加載請求可由第4圖所示之預加載預測器310發出,而該工作流程可由第3圖所示之LUB控制器210控制,但本發明不限於此。需注意的是,第7圖所示之工作流程僅為了說明之目的,並非對本發明的限制。尤其,一或多個步驟可於第7圖所示之工作流程中被新增、刪除或修改。此外,只要不妨礙整體結果,這些步驟並非必須完全依照第7圖所示之順序執行。
於步驟S700中,該預加載請求開始。
於步驟S702中,LUB控制器210可檢查是否命中LUB(例如載入-使用資料緩衝器300),以產生一LUB檢查結果。
於步驟S704中,若該LUB檢查結果顯示為「是」,該工作流程進入步驟S722;若該LUB檢查結果顯示為「否」,該工作流程進入步驟S706。
於步驟S706中,LUB控制器210可將有效位元VLD[i]設為「1」,將備妥位元設為「0」,並且將鎖定位元LOCK[i]設為「1」。
於步驟S708中,LUB控制器210可檢查是否命中快取(例如快取記憶體151),以產生一快取檢查結果。
於步驟710中,若該快取檢查結果顯示為「是」,該工作流程進入步驟S712;若該快取檢查結果顯示為「否」,該工作流程進入步驟S720。
於步驟S712中,LUB控制器210可自快取(例如快取記憶體151)預加載資料至LUB(例如載入-使用資料緩衝器300)。
於步驟S714中,LUB控制器210可將有效位元VLD[i]設為「1」,將備妥位元設為「1」,並且將鎖定位元LOCK[i]設為「1」。
於步驟S716中,LUB控制器210可用SRAM資料(例如快取資料CACHE_DATA)更新LUB資料。
於步驟S718中,LUB控制器210可將有效位元VLD[i]設為「1」,將備妥位元設為「0」,並且將鎖定位元LOCK[i]設為「0」。
於步驟S720中,LUB控制器210可將有效位元VLD[i]設為「0」,將備妥位元設為「0」,並且將鎖定位元LOCK[i]設為「0」。
於步驟S720中,該預加載請求結束。
第8圖為依據本發明一實施例之執行一載入指令的工作流程,其中該載入指令是可應用於第4圖所示之設備400。需注意的是,第8圖所示之工作流程僅為了說明之目的,並非對本發明的限制。尤其,一或多個步驟可於第8圖所示之工作流程中被新增、刪除或修改。此外,只要不妨礙整體結果,這些步驟並非必須完全依照第8圖所示之順序執行。
於步驟S800中,該載入指令開始。
於步驟S802中,設備400可檢查是否命中LUB(例如載入-使用資料緩衝器300)以產生一LUB結果。
於步驟S804中,若該LUB結果顯示為「是」,該工作流程進入步驟S806;若該LUB結果顯示為「否」,該工作流程進入步驟S818。
於步驟S806中,設備400可判斷鎖定位元LOCK[i]是否為「1」。若判斷結果顯示為「是」,該工作流程進入步驟S812;若判斷結果顯示為「否」,該工作流程進入步驟S808。
於步驟S808中,設備400可更新一替代方針(例如更新上述各個條目所對應的權重值)。
於步驟S810中,設備400可利用載入-使用資料緩衝器300對核心管線回傳LUB資料(例如於載入-使用資料緩衝器300中被命中的條目的資料)並且宣稱LUB資料有效(例如以邏輯值「1」輸出有效訊號LUB_VALID)。
於步驟S812中,設備400可檢查LUB預加載是否正在進行中(例如檢查對應的條目的備妥單元RDY[i])。
於步驟S814中,設備400可判斷備妥位元RDY[i]是否為「1」。若判斷結果顯示為「是」,該工作流程進入步驟S816;若判斷結果顯示為「否」,該工作流程進入步驟S824。
於步驟S816中,設備400可對核心管線回傳SRAM資料(諸如自快取記憶體151擷取的快取資料CACHE_DATA)並且宣稱LUB資料有效(例如以邏輯值「1」輸出有效訊號LUB_VALID)。
於步驟S818中,設備400可判斷該載入指令與跟在其後的一後續指令是否為一載入-使用指令對(標示為「lu_instr?」以求簡明)。若判斷結果顯示為「是」,該工作流程進入步驟S820;若判斷結果顯示為「否」,該工作流程進入步驟S824。
於步驟S820中,設備400可依據替代方針(例如更新上述各個條目所對應的權重值)選擇一條目索引i(即選擇第i個條目)。
於步驟S822中,設備400可將第i個條目的鎖定位元LOCK[i]設為「1」。
於步驟S824中,設備400可檢查是否命中快取(例如是否命中快取記憶體151)以產生一快取檢查結果。
於步驟S826中,若該快取判斷結果顯示為「是」,該工作流程進入步驟S828;若該快取判斷結果顯示為「否」,該工作流程進入步驟S836。
於步驟S828中,設備400可回傳快取資料諸如CACHE_DATA給核心管線。
於步驟S830中,設備400可判斷LUB是否命中(例如載入-使用資料緩衝器300是否命中)。若判斷結果顯示為「否」,該工作流程進入步驟S844;若判斷結果顯示為「是」,該工作流程進入步驟S832。
於步驟S832中,設備400可用SRAM資料(例如快取資料CACHE_DATA)更新LUB資料(例如第i個條目的DATA[i])。
於步驟S834中,設備400可將第i個條目的鎖定位元LOCK[i]設為「0」。
於步驟S836中,設備400可透過匯流排介面單元170發送請求諸如匯流排請求給匯流排,並且回傳匯流排介面單元170取得的匯流排資料給核心管線。
於步驟S838中,設備400可判斷LUB是否命中(例如載入-使用資料緩衝器300是否命中)。若判斷結果顯示為「否」,該工作流程進入步驟S844;若判斷結果顯示為「是」,該工作流程進入步驟S840。
於步驟S840中,設備400可用匯流排資料更新LUB資料(例如第i個條目的DATA[i])。
於步驟S842中,設備400可將第i個條目的鎖定位元LOCK[i]設為「0」。
於步驟S844中,該載入指令結束。
總結來說,基於時間局部性(例如某些資料近期被使用過或是頻繁地被使用)與空間局部性(例如某些位址的資料是可被預期將會被使用的),本發明的能提前將某些資料搬移至存取速度較快的載入-使用資料緩衝器中,以容許在出現載入-使用指令對時能在不產生氣泡或較不容易產生氣泡的情況下執行指令管線化的運作,從而降低載入-使用停頓發生的機率。尤其,本發明的實施例不會大幅地增加額外成本,因此本發明能在沒有副作用或較不會帶來副作用的情況下解決相關技術的問題。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:設備
110:指令擷取
120:指令解碼
130:位址產生器
131:多工器
132:多工器
133:加總電路
140:算術邏輯單元
150:載入儲存單元
151:快取記憶體
160:暫存器堆
170:匯流排介面單元
200:載入-使用資料緩衝器
210:LUB控制器
220:選擇控制器
230:多工器
240:多工器
300:載入-使用資料緩衝器
310:預加載預測器
320:載入-使用指令偵測器
400:設備
PRELOAD:預加載判斷結果
lu_instr:載入-使用偵測結果
CACHE_DATA:快取資料
BUS_DATA:匯流排資料
ADDR:存取位址
VALID[0]~VALID[N]:有效位元
LOCK[0]~LOCK[N]:鎖定位元
TAG[0]~TAG[N]:標籤位址
DATA[0]~DATA[N]:資料
SEL:選擇訊號
LUB_VALID:有效訊號
ADDR(n):基址
ADDR(n-1):先前載入位址
OFFSET(n]:偏移值
OFFSET(n-1):先前偏移值
Inc, P:欄位
S610~S640, S700~S722, S800~S844:步驟
第1圖為依據本發明一實施例之一設備在指令管線化的架構下運作的示意圖。
第2圖為依據本發明一實施例之一載入-使用資料緩衝器的示意圖。
第3圖為依據本發明一實施例之一載入-使用資料緩衝器的示意圖。
第4圖為依據本發明一實施例之一設備在指令管線化的架構下運作的示意圖。
第5圖依據本發明一實施例繪示一載入指令於第4圖所示之指令管線化的架構下的某些細節。
第6圖為依據本發明一實施例之一種用於管線化控制的方法的工作流程。
第7圖為依據本發明一實施例之執行一預加載請求的工作流程。
第8圖為依據本發明一實施例之執行一載入指令的工作流程。
400:設備
110:指令擷取
120:指令解碼
130:位址產生器
140:算術邏輯單元
150:載入儲存單元
151:快取記憶體
160:暫存器堆
170:匯流排介面單元
300:載入-使用資料緩衝器
310:預加載預測器
320:載入-使用指令偵測器
PRELOAD:預加載判斷結果
lu_instr:載入-使用偵測結果
CACHE_DATA:快取資料
BUS_DATA:匯流排資料
ADDR:存取位址
Claims (10)
- 一種用於管線化控制的設備,包含: 一預加載(preload)預測器,用來判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果; 一算術邏輯單元(arithmetic logic unit, ALU),用來進行算術邏輯運作; 一資料緩衝器,耦接至該預加載預測器以及該算術邏輯單元,用來提供資料給該算數邏輯單元使用,其中該算數邏輯單元自該資料緩衝器擷取資料的速度快於該算數邏輯單元自一快取記憶體擷取資料的速度; 其中當該預加載判斷結果指出該載入指令符合該至少一特定條件,該資料緩衝器依據該載入指令所載有的資訊自該快取記憶體擷取(fetch)預加載資料並且將該預加載資料儲存於該資料緩衝器內,以及該預加載資料為一後續載入指令所請求的資料。
- 如申請專利範圍第1項所述之設備,其中該資料緩衝器包含: 一選擇電路,透過一內部路徑耦接至該資料緩衝器內部的一資料暫存空間並且透過一旁通路徑耦接至該資料緩衝器外部的該快取記憶體; 其中該選擇電路自該內部路徑與該旁通路徑選擇其中一者,以提供該載入指令所請求的載入資料給該算術邏輯單元。
- 如申請專利範圍第2項所述之設備,其中當該資料緩衝器的該資料暫存空間儲存有該載入資料時,該選擇電路致能該內部路徑以容許該算數邏輯單元自該資料暫存空間取得該載入資料。
- 如申請專利範圍第2項所述之設備,其中當該資料緩衝器的該資料暫存空間並未儲存有該載入資料時,該資料緩衝器依據該載入資料更新該資料暫存空間內的資料,以及該選擇電路致能該旁通路徑,以容許該算數邏輯單元於該資料暫存空間內的資料尚未更新完成的情況下自該快取記憶體取得該載入資料。
- 如申請專利範圍第1項所述之設備,其中該預加載預測器依據該載入指令的至少一欄位產生該預加載判斷結果,以及該預加載判斷結果是用來指出該載入指令所對應的一載入位址於該載入指令執行完成後是否被更新,其中該預加載資料是對應於更新該載入位址所產生的一更新後載入位址。
- 如申請專利範圍第5項所述之設備,其中當該預加載判斷結果指出該載入位址於該載入指令執行完成後被更新時,該載入指令符合該至少一特定條件。
- 如申請專利範圍第5項所述之設備,其中該載入指令載有(carry)一偏移(offset)值,以及當該預加載判斷結果指出該載入位址於該載入指令執行完成後被更新時,該更新後載入位址等於該載入位址加上該偏移值或是該載入位址減去該偏移值。
- 如申請專利範圍第7項所述之設備,另包含: 一位址產生器以用來依據該預加載判斷結果產生該載入位址,其中該位址產生器包含: 一第一選擇器,用來依據該預加載判斷結果自該載入指令所載有的一基址(base address)與一先前載入指令所對應的一先前載入位址之中選擇一最終基址; 一第二選擇器,用來依據該預加載判斷結果自該載入指令所載有的該偏移值與該先前載入指令所載有的一先前偏移值之中選擇一最終偏移值: 一加總電路,耦接至該第一選擇器以及該第二選擇器,用來將該最終基址加上或減去該最終偏移值以產生該載入位址。
- 如申請專利範圍第8項所述之設備,其中當該預加載判斷結果指出該載入位址於該載入指令執行完成後會被更新時,該第一選擇器選擇該先前載入位址作為該最終基址,以及該第二選擇器選擇該先前偏移值作為該最終偏移值。
- 一種用於管線化控制的方法,包含: 利用一預加載(preload)預測器判斷一載入指令是否符合至少一特定條件,以產生一預加載判斷結果; 當該預加載判斷結果指出該載入指令符合該至少一特定條件,利用該資料緩衝器依據該載入指令所載有的資訊自一快取記憶體擷取(fetch)預加載資料並且將該預加載資料儲存於該資料緩衝器內,其中該預加載資料為一後續載入指令所請求的資料;以及 利用一資料緩衝器提供該預加載資料給一算數邏輯單元(arithmetic logic unit, ALU)進行算術邏輯運作,其中該算數邏輯單元自該資料緩衝器擷取資料的速度快於該算數邏輯單元自該快取記憶體擷取資料的速度。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110133582A TWI792546B (zh) | 2021-09-09 | 2021-09-09 | 用於管線化控制的設備以及方法 |
US17/903,057 US12014176B2 (en) | 2021-09-09 | 2022-09-06 | Apparatus and method for pipeline control |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110133582A TWI792546B (zh) | 2021-09-09 | 2021-09-09 | 用於管線化控制的設備以及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI792546B TWI792546B (zh) | 2023-02-11 |
TW202311938A true TW202311938A (zh) | 2023-03-16 |
Family
ID=85478422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110133582A TWI792546B (zh) | 2021-09-09 | 2021-09-09 | 用於管線化控制的設備以及方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US12014176B2 (zh) |
TW (1) | TWI792546B (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US8327115B2 (en) * | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US7827389B2 (en) * | 2007-06-15 | 2010-11-02 | International Business Machines Corporation | Enhanced single threaded execution in a simultaneous multithreaded microprocessor |
US7962770B2 (en) * | 2007-12-19 | 2011-06-14 | International Business Machines Corporation | Dynamic processor reconfiguration for low power without reducing performance based on workload execution characteristics |
TWI435267B (zh) | 2011-01-28 | 2014-04-21 | Realtek Semiconductor Corp | 處理器電路及讀取資料的方法 |
US9727388B2 (en) * | 2011-12-29 | 2017-08-08 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
US9152424B2 (en) * | 2012-06-14 | 2015-10-06 | International Business Machines Corporation | Mitigating instruction prediction latency with independently filtered presence predictors |
US11106467B2 (en) * | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
AU2018289605B2 (en) * | 2017-06-22 | 2023-04-27 | Icat Llc | High throughput processors |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
-
2021
- 2021-09-09 TW TW110133582A patent/TWI792546B/zh active
-
2022
- 2022-09-06 US US17/903,057 patent/US12014176B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230083375A1 (en) | 2023-03-16 |
US12014176B2 (en) | 2024-06-18 |
TWI792546B (zh) | 2023-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101493019B1 (ko) | 희소 및 조밀 예측 캐쉬들을 갖는 하이브리드 브랜치 예측 장치 | |
US7917731B2 (en) | Method and apparatus for prefetching non-sequential instruction addresses | |
JP5894120B2 (ja) | ゼロサイクルロード | |
US9367471B2 (en) | Fetch width predictor | |
US8341357B2 (en) | Pre-fetching for a sibling cache | |
US9396117B2 (en) | Instruction cache power reduction | |
US20090006803A1 (en) | L2 Cache/Nest Address Translation | |
US7680985B2 (en) | Method and apparatus for accessing a split cache directory | |
US20180267801A1 (en) | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric | |
US11816489B1 (en) | Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle | |
US10067875B2 (en) | Processor with instruction cache that performs zero clock retires | |
US7937530B2 (en) | Method and apparatus for accessing a cache with an effective address | |
US12106111B2 (en) | Prediction unit with first predictor that provides a hashed fetch address of a current fetch block to its own input and to a second predictor that uses it to predict the fetch address of a next fetch block | |
JP2015530683A (ja) | 異種計算システムにおけるコールド変換索引バッファミスを低減させること | |
US12020032B2 (en) | Prediction unit that provides a fetch block descriptor each clock cycle | |
US20090006754A1 (en) | Design structure for l2 cache/nest address translation | |
KR20150079408A (ko) | 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
JP2016505972A (ja) | 仮想アドレス−物理アドレスページクロスバッファを用いた推測的なアドレッシング | |
TWI805831B (zh) | 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體 | |
TWI789421B (zh) | 用於預執行資料相依之負載的薄片結構 | |
US20090006753A1 (en) | Design structure for accessing a cache with an effective address | |
TW200815981A (en) | Methods and apparatus for reducing lookups in a branch target address cache | |
TWI739159B (zh) | 基於載入路徑歷史的分支預測 | |
CN108874690B (zh) | 数据预取的实现方法和处理器 | |
TWI792546B (zh) | 用於管線化控制的設備以及方法 |