TWI416408B - 一種微處理器和其資訊儲存方法 - Google Patents
一種微處理器和其資訊儲存方法 Download PDFInfo
- Publication number
- TWI416408B TWI416408B TW099112636A TW99112636A TWI416408B TW I416408 B TWI416408 B TW I416408B TW 099112636 A TW099112636 A TW 099112636A TW 99112636 A TW99112636 A TW 99112636A TW I416408 B TWI416408 B TW I416408B
- Authority
- TW
- Taiwan
- Prior art keywords
- branch
- instruction
- information
- items
- microprocessor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 12
- 239000000872 buffer Substances 0.000 claims abstract description 45
- 238000000605 extraction Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004088 simulation Methods 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
本發明係有關於微處理器,特別是有關於非循序執行之微處理器內的分支預測。
微處理器的架構規格(例如x86架構微處理器)都要求指令依照程式的順序將其結果寫入微處理器架構的可視狀態中(此時通常稱為指令循序引退(in-order retirement))。然而,就指令執行而言,循序引退指令之微處理器的微架構是以非循序方式(out-of-order)(也就是不會依照程式順序,或稱亂序)執行指令以產生指令結果。這類的微處理器通常會使用一稱為重排序緩衝器(reorder buffer,ROB)的硬體架構或是類似的架構,用以在指令非循序執行的情況下循序引退指令。
重排序緩衝器用以儲存處理器中每一個未引退指令的資訊。未引退指令是指已經被提取、解碼、甚至被執行(即執行單元已經產生其結果),或者是等待發送以被執行的指令,其結果仍未寫入微處理器架構的狀態中。特別的是,重排序緩衝器儲存的資訊包含未引退指令之間的程式順序(program order)。此外,重排序緩衝器也用以儲存每一個未引退指令的其他大量資訊。
所有微處理器都包括複數分支指令於其指令集內。一般而言,處理器會依序地提取指令。然而,分支指令卻會指示處理器自不連續的位置(non-sequential location)提取指令。因為分支指令在微處理器管線的前級被提取,卻在管線的後級才被執行(即分支方向(direction)和目標位址最後才被決定),所以分支指令會造成管線泡(pipeline bubbles),而使得微處理器無法有效利用,並且會增加指令時脈週期數(clocks per instruction,CPI),這是微處理器設計領域常見的問題。
為了克服上述問題,現今的微處理器都包括分支預測器(branch predictors),當指令被提取時,可用來預測分支指令和分支結果。分支預測是微處理器設計領域一種的技術手段。然而,當分支指令在管線中被執行時,大量的資訊(分支資訊)會被儲存,用以修正分支指令的錯誤預測,以及用以更新分支預測器中的分支歷史資訊,使得分支預測器能夠更正確的預測分支指令後續的執行操作。每一個分支指令需要儲存之分支資訊的位元數(分支資訊位元)為200位元。再者,用以儲存分支資訊的重排序緩衝器,其項目(entry)的數量也非常重要。當微處理器的執行資源(execution resources)增加時,重排序緩衝器中所需的項目數量亦需大幅增加,如此才能充分利用微處理器的執行資源。但是,如此一來,分支資訊位元的儲存會造成重排序緩衝器的晶片面積變大,且亦會增加功率的消耗。
本發明一實施例提供一種非循序執行暨循序引退的微處理器,包括:分支資訊表以及重排序緩衝器。分支資訊表包括N個分支資訊項目,N個分支資訊項目的每一者用以儲存對應分支指令的相關分支資訊。重排序緩衝器耦接於分支資訊表,重排序緩衝器包括M個項目,M個項目的每一者用以儲存微處理器內之未引退指令的相關資訊,其中M個項目的每一者均包括第一欄位,用以指示未引退指令是否為分支指令,若是,則更包括第二欄位用來儲存分支資訊表之對應標籤,對應標籤用以指示分支資訊表中儲存分支指令的相關分支資訊之對應分支資訊項目,其中N小於M。
本發明另一實施例提供關於非循序執行暨循序引退之微處理器的資訊儲存方法,包括:儲存分支資訊表,其包括N個分支資訊項目,其中N個分支資訊項目之每一者用以儲存對應分支指令的相關分支資訊;以及儲存微處理器內之複數未引退指令的相關資訊於重排序緩衝器,重排序緩衝器包括M個項目,其中M個項目之每一者用以儲存未引退指令的相關資訊,其中M個項目的每一者均包括第一欄位,用以指示未引退指令是否為分支指令,若是,則更包括第二欄位用來儲存分支資訊表之對應標籤,對應標籤用以指示分支資訊表中儲存分支指令的相關分支資訊之對應分支資訊項目,其中N小於M。
一般而言,分支指令僅佔程式指令的15-20%。因此,發明人注意到:對多數混合程式指令來說,重排序緩衝器中的多數項目其所儲存的分支資訊是沒有使用到的。根據本發明實施例,本發明使用一種分立架構(separate structure)-『分支資訊表』-來儲存分支資訊,即此分支資訊對分支指令而言是具有獨特性(unique)。本發明的優點在於:相較於重排序緩衝器中項目的數量,分支資訊表中項目的數量較少。在一實施例中,重排序緩衝器的大小為48個項目,而分支資訊表的大小為16個項目。分支資訊表中的每一項目是由一個標籤(tag)作為索引(index)。每一個重排序緩衝器的項目均具有一個欄位(field)用以指示與此項目有關之指令是否為分支指令,以及另一個欄位,用來儲存分支指令對應分支資訊表中一項目的標籤。
第1圖為根據本發明之微處理器100的方塊圖。微處理器100包括由複數級(stages)或複數功能單元所構成的管線,此管線包括提取單元126、指令快取記憶體102、x86指令位元組佇列104(x86 instruction byte queue,XIBQ)、指令格式器(instruction formatter)106、已格式化指令佇列(formatted instruction queue)108、指令轉譯器112、暫存器別名表(register alias table,RAT)116、複數個保留站(reservation station)118,以及複數個執行單元122。提取單元126提供提取位址142至指令快取記憶體102以選擇一包含複數指令位元組(instruction bytes)的快取列(cache line),上述快取列被提供至x86指令位元組佇列104。微處理器100更包括加法器144,加法器144用以將目前的提取位址142增量(increment)而產生下一個接續的提取位址152至提取單元126。提取單元126也從分支預測器128接收預測目標位址(predicted target address)146。提取單元126由執行單元122接收已執行目標位址(executed target address)148。
分支預測器128提供分支資訊154至x86指令位元組佇列104。此外,分支資訊154用以指示分支預測器128是否預測一分支指令將出現於x86指令位元組佇列104中的上述快取列。若分支資訊154指示要取用(taken)此分支指令(亦即分支發生),則提取單元126選擇由分支預測器128提供的預測目標位址146。在一實施例中,分支資訊154除了包含是否取用(taken/not taken,T/NT)分支指令之預測指示(prediction indicator)之外,還包括預測目標位址146、全域分支樣式(global branch pattern)、提取快取列之提取位址142、對應一傳回堆疊之複數指標(stack pointers)和有效位元(valid bits)和由分支預測器128的分支目標位址快取記憶體(branch target address cache,BTAC)所提供之複數指示位元,其中全域分支樣式用來作出預測結果(例如在gshare預測器中使用的預測),分支預測器128係使用提取快取列的提取位址142進行預測,前述複數指示位元並包括複數路徑命中/有效位元(way hit/valid bits)和複數分支型態位元(branch type bits)(例如條件分支型態、非條件分支型態、傳回(return)型態、呼叫(call)型態)。上述複數路徑命中/有效位元用以指示提取分支指令之上述提取位址是否命中上述分支目標位址快取記憶體。
x86指令位元組佇列104是包含複數項目的佇列,其每一項目均包含來自於指令快取記憶體102的複數位元組之資料。一般而言,指令格式器106為一指令解碼器。在一實施例中,微處理器100是x86架構的微處理器,其指令集包括可變長度指令(variable length instructions)。指令格式器106用以檢查由x86指令位元組佇列104提取回來之複數指令位元組的串流(stream),並且決定串流內每一個指令的起始位元組(beginning byte)和終止位元組(ending byte),並且藉此將位元組的串流斷開(格式化)為複數x86指令的串流。已格式化之x86指令的串流被提供至已格式化指令佇列108,並加以儲存以讓微處理器100剩餘的管線處理。指令轉譯器112將巨指令(例如x86分支巨指令)轉譯為成複數微指令,用以實現此巨指令。在一實施例中,指令轉譯器112將每一個分支巨指令轉譯為一分支微指令。
微處理器100也包括重排序緩衝器117,其耦接至暫存器別名表116、保留站118,以及執行單元122。微處理器100也包括分支資訊表(branch information table,BIT)107,其耦接至指令格式器106、重排序緩衝器117,以及分支預測器128。重排序緩衝器117為具有複數項目的環形佇列(關於重排序緩衝器117項目的細節如第3圖所示)。暫存器別名表116依程式順序指派指令轉譯器112產生的複數微指令至重排序緩衝器117中的複數項目。分支資訊表107為具有複數項目的環形佇列(關於分支資訊表107項目的細節如第2圖所示)。在一實施例中,分支資訊表107中項目的數量小於重排序緩衝器117中項目的數量的一半。指令格式器106依程式順序指派遇到(encounter)的複數分支指令至分支資訊表107中的複數項目。以下將搭配圖示詳述重排序緩衝器117和分支資訊表107的技術內容和相關操作。
根據本發明之一實施例,第2圖係為一方塊圖用以顯示分支資訊表107內一項目之內容。每一個項目都包括48位元的預測目標位址欄位202、40位元的全域分支樣式欄位(global branch pattern field)204、32位元的提取位址欄位206、20位元的傳回堆疊指標/有效欄位(return stack pointers/valid field)208、8位元的分支目標位址快取記憶體路徑命中/有效欄位(BTAC way hit/valid field)212、10位元的分支型態欄位(branch type field)214,以及複數個效能追蹤位元(performance tracking bits)216。在一實施例中,在分支資訊表107中每一個項目內儲存的資料量約為170位元。在另一實施例中,在分支資訊表107中每一個項目內儲存的資料量至少100個位元。
根據本發明之一實施例,第3圖係為一方塊圖用以顯示重排序緩衝器117內一項目之內容。每一個項目包括一正常指令資訊欄位302,用以儲存被指派至該項目的一指令之正常指令資訊(normal instruction information),上述指令也包含分支指令。正常指令資訊欄位302儲存上述指令之指令結果和指令狀態。當該指令被不同的管線級處理時,該項目中的指令結果和指令狀態(包括異常資訊)會被更新。每一個項目也包括一分支旗標304,若指令為分支指令,分支旗標304則為真值。每一個項目也包括一分支發生旗標(branch taken flag)306,若分支預測器128預測分支指令被取用(亦即分支發生),分支發生旗標306則為真值。最後,每一個項目包括分支資訊表標籤欄位(BIT tag field)308,用以儲存分支資訊表107之一標籤,而該標籤係為一索引,用以指示分支資訊表107中具有與分支指令相關之分支資訊的項目。
根據本發明之實施例,第4圖為第1圖之微處理器100的操作流程圖。流程始於步驟402。
在步驟402,提取單元126從提取位址142提取指令快取記憶體102中一包含複數指令位元組的快取列。流程前進至步驟404。
在步驟404,分支預測器128預測在已提取的快取列中具有一分支指令,並且產生相關的分支資訊154。流程前進至步驟406。
在步驟406,經由x86指令位元組佇列104向下遞送分支資訊154至指令格式器106。流程前進至步驟408。
在步驟408,指令格式器106解碼分支指令。流程前進至步驟412。
在決定步驟412,指令格式器106判斷分支資訊表107是否填滿(full),即指令格式器106試圖在分支資訊表107中指派一個項目給分支指令,若不能夠指派一個項目給分支指令,則表示分支資訊表107是填滿的。若分支資訊表107是填滿的,流程前進至步驟414;否則,流程前進至步驟416。
在步驟414,指令格式器106設置一訊號,用以拖延(stall)指令格式器106之上的指令提取管線,並且流程回到決定步驟412,直到分支資訊表107不再是填滿的。在一實施例中,指令提取管線將根據一設置訊號暫停指令的提取。
在步驟416,指令格式器106將與分支指令有關的分支資訊填入分支資訊表107中被指派到的項目之內。流程前進至步驟418。
在步驟418,指令格式器106儲存分支指令以及分支資訊表107中被指派到之項目的分支資訊表標籤至已格式化指令佇列108。流程前進至步驟422。
在步驟422,在管線中向下遞送分支資訊表標籤以及分支指令至暫存器別名表116。流程前進至步驟424。
在步驟424,暫存器別名表116指派分支指令至重排序緩衝器117中的一個項目,並且將分支資訊表標籤填入重排序緩衝器117中被指派到的項目之內。流程前進至步驟426。
在步驟426,執行管線使用分支資訊表標籤來存取分支資訊表107中一項目的分支資訊以執行分支指令。具體的說,執行單元122比較預測目標位址146與執行單元122計算出的實際目標位址(或正確目標位址)來判斷是否有預測錯誤的情況發生。在一實施例中,執行單元122比較重排序緩衝器117中被指派一條件分支指令之一項目中的已預測的分支發生旗標306與執行單元122從條件碼旗標(condition code flag)計算出的實際分支方向(或正確分支方向)來判斷是否有預測錯誤的情況發生,以執行上述條件分支指令。此外,執行管線通知分支預測器128分支指令已經被執行,並且為了更新分支歷史資訊(branch history information),分支預測器128對應地使用分支資訊表107的標籤來存取分支資訊表107中其他項目的分支資訊以更新分支資訊。在一實施例中,微處理器100用以更新分支資訊表107中的分支資訊,例如效能追蹤位元216。流程前進至步驟428。
在步驟428,當分支指令已被執行,重排序緩衝器117引退分支指令並歸還(deallocate)分支資訊表107中被指派給上述分支指令的項目,以及歸還重排序緩衝器117中被指派給上述分支指令的項目。流程結束於步驟428。
由前述可知,相較於習知的設計(即在每一個重排序緩衝器117的項目內儲存分支資訊),本發明的優點在於:分支資訊表107對於縮小晶片面積和降低消耗功率極有助益。在另一方面,也可能會降低具有複數密集之分支指令之程式的效能,例如在一個由48個指令構成的指令群組中具有16個以上的分支指令。這是因為部分分支指令無法取得分支資訊表而造成管線泡。
雖然本發明已經由數種實施例揭露如上,但其僅用以作為例子,並非用以限定本發明。計算機領域的習知技藝者應能理解,在不脫離本發明之精神的前提下,當可對本發明作些許更動。舉例而言,軟體能夠致能本發明之裝置和方法的功能、製造、模型建立、模擬、各種性質,以及/或測試。其能夠藉由不同的程式語言而達成,例如程式語言(如C、C++)、硬體描述語言(hardware description language,HDL,如Verilog HDL、VHDL),或是其他可能的程式語言。上述軟體能夠設置於任何已知的計算機可讀取儲存媒體(computer usable medium),例如半導體、磁碟,或光碟(如CD-ROM、DVD-ROM)。本發明的裝置和方法可能包括於任何半導體智慧財產核心(semiconductor IP core)之內,例如(以HDL嵌入的)微處理器核心,或是當積體電路製造時,轉移至硬體。此外,本發明可能藉由硬體和軟體的組合而實現。因此,本發明不應被此處所述之任何實施例所限制,本發明應該是根據所附申請專利範圍與其等效的裝置/方法而被定義。特別的是,本發明能夠設置於一般用途計算機的微處理器裝置內。最後,習知技藝者應能理解到:在不脫離由申請專利範圍定義之本發明範疇的前提下,其能夠以本發明揭露的概念和特定的實施例作為基礎,用以設計或修改其他架構來執行與本發明相同之目的。
100...微處理器
102...指令快取記憶體
104...x86指令位元組佇列
106...指令格式器
107...分支資訊表
108...已格式化指令佇列
112...指令轉譯器
116...暫存器別名表
117...重排序緩衝器
118...保留站
122...執行單元
126...提取單元
128...分支預測器
142...提取位址
144...加法器
146...預測目標位址
148‧‧‧已執行目標位址
152‧‧‧提取位址
154‧‧‧分支資訊
202‧‧‧預測目標位址欄位
204‧‧‧全域分支樣式欄位
206‧‧‧提取位址欄位
208‧‧‧傳回堆疊指標/有效欄位
212‧‧‧分支目標位址快取記憶體路徑命中/有效欄位
214‧‧‧分支型態欄位
216‧‧‧效能追蹤位元
302‧‧‧正常指令資訊欄位
304‧‧‧分支旗標
306‧‧‧分支發生旗標
308‧‧‧分支資訊表標籤欄位
第1圖為本發明之微處理器的方塊圖;
第2圖為本發明之一方塊圖用以顯示分支資訊表內項目之內容;
第3圖係為一方塊圖用以顯示重排序緩衝器內項目之內容;
第4圖為第1圖之微處理器的操作流程圖。
100...微處理器
102...指令快取記憶體
104...x86指令位元組佇列
106...指令格式器
108...已格式化指令佇列
112...指令轉譯器
116...暫存器別名表
118...保留站
122...執行單元
144...加法器
152...提取位址
148...已執行目標位址
126...提取單元
142...提取位址
146...預測目標位址
128...分支預測器
154...分支資訊
107...分支資訊表
117...重排序緩衝器
Claims (14)
- 一種非循序執行暨循序引退的微處理器,包括:一分支預測器,用以預測提取自一指令快取記憶體之指令是否存在複數分支指令以及用以產生該等分支指令的相關資訊;一指令解碼器,用以解碼上述提取之該等分支指令;一分支資訊表,包括N個分支資訊項目之一環形佇列,其中依照該指令解碼器解碼該等分支指令之程式順序對應指派上述N個分支資訊項目,上述N個分支資訊項目的每一者用以儲存一對應分支指令的相關分支資訊,該相關分支資訊產生自該分支預測器之該等分支指令之一相關分支指令,其中該被指派的資訊項目會在其對應之分支指令被執行之後被重新指派;以及一重排序緩衝器,耦接於上述分支資訊表,上述重排序緩衝器包括M個項目,上述M個項目的每一者用以儲存上述微處理器內之一未引退指令的相關資訊,其中上述M個項目的每一者均包括一第一欄位,用以指示上述未引退指令是否為一分支指令,若是,則更包括一第二欄位用來儲存上述分支資訊表之一對應標籤,該對應標籤用以指示上述分支資訊表中儲存上述分支指令的相關分支資訊之一對應分支資訊項目;其中N小於M。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,其中該分支預測器更根據上述分支資訊表,更新上述 分支預測器的分支資訊。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,更包括:一執行單元,用以藉由儲存於上述分支資訊表中之上述對應分支指令的相關分支資訊,執行上述對應分支指令;其中上述N個分支資訊項目的每一者用以儲存該對應分支指令的相關分支資訊包括該對應分支指令的一預測目標位址;其中為了執行該對應分支指令,該執行單元藉由該重排序緩衝器中該對應分支指令相關項目中的該標籤得到該預測目標位址,以及比對該預測目標位址與一正確目標位址以決定該分支預測器是否錯誤預測該對應分支指令之目標位址。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,更包括:一暫存器別名表,用以指派上述分支指令至上述重排序緩衝器之一項目,並將上述分支指令於上述分支資訊表之該分支資訊項目的一標籤填入上述重排序緩衝器之該項目。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,其中上述指令解碼器用以在無法指派上述分支資訊表之上述N個分支資訊項目之一者時,拖延上述微處理器的指令提取。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,其中儲存於上述分支資訊表之上述N個分 支資訊項目之每一者之上述對應分支指令的相關分支資訊包括以下一者或其組合之一:上述對應分支指令的該預測目標位址;一全域分支樣式;一提取位址,用以提取上述對應分支指令;上述微處理器之一傳回堆疊的複數指標;複數分支型態位元,用以指示上述對應分支指令之的分支型態;以及上述對應分支指令的複數效能追蹤位元。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,其中儲存於上述分支資訊表之上述N個分支資訊項目之每一者之上述對應分支指令的上述分支資訊包括複數指示位元,用以指示上述對應分支指令之一提取位址是否命中上述微處理器之一分支目標位址快取記憶體。
- 如申請專利範圍第1項所述之非循序執行暨循序引退的微處理器,其中上述M個項目之每一者更包括一第三欄位,用以指示上述分支指令是否發生。
- 一種關於非循序執行暨循序引退之微處理器的資訊儲存方法,包括:預測提取自一指令快取記憶體之指令是否存在複數分支指令,以及產生該等分支指令的相關資訊;決定被提取之該等分支指令;儲存該等分支指令的相關資訊於一分支資訊表,該分支資訊表包括N個分支資訊項目之一環形佇列,其中依照 該指令解碼器解碼該等分支指令之程式順序對應指派上述N個分支資訊項目,其中上述N個分支資訊項目之每一者用以儲存一對應分支指令的相關分支資訊,該相關分支資訊產生自該分支預測器之該等分支指令之一相關分支指令,其中該被指派的資訊項目會在其對應之分支指令被執行之後被重新指派;以及儲存上述微處理器內之複數未引退指令的相關資訊於一重排序緩衝器,上述重排序緩衝器包括M個項目,其中上述M個項目之每一者用以儲存一未引退指令的相關資訊,其中上述M個項目的每一者均包括一第一欄位,用以指示上述未引退指令是否為一分支指令,若是,則更包括一第二欄位用來儲存上述分支資訊表之一對應標籤,該對應標籤用以指示上述分支資訊表中儲存上述分支指令的相關分支資訊之該對應分支資訊項目;其中N小於M。
- 如申請專利範圍第9項所述之關於非循序執行暨循序引退之微處理器的資訊儲存方法,更包括:根據上述分支資訊表,更新上述微處理器之該分支預測器的分支資訊。
- 如申請專利範圍第9項所述之關於非循序執行暨循序引退之微處理器的資訊儲存方法,更包括:藉由儲存於上述分支資訊表中之上述對應分支指令的相關分支資訊,執行上述對應分支指令;其中上述N個分支資訊項目的每一者用以儲存該對應分支指令的相關分支資訊包括該對應分支指令的一預測目 標位址;其中執行上述對應分支指令,該執行單元藉由該重排序緩衝器中該對應分支指令相關項目中的該標籤得到該預測目標位址,以及比對該預測目標位址與一正確目標位址以決定該分支預測器是否錯誤預測該對應分支指令之目標位址。
- 如申請專利範圍第9項所述之關於非循序執行暨循序引退之微處理器的資訊儲存方法,更包括:指派上述分支指令至上述重排序緩衝器之一項目,並將上述分支指令於上述分支資訊表之該分支資訊項目之一標籤填入上述重排序緩衝器之該項目。
- 如申請專利範圍第9項所述之關於非循序執行暨循序引退之微處理器的資訊儲存方法,更包括:在無法指派上述分支資訊表之上述N個分支資訊項目之一者時,拖延上述微處理器的指令提取。
- 如申請專利範圍第9項所述之關於非循序執行暨循序引退之微處理器的資訊儲存方法,其中儲存於上述分支資訊表之上述N個分支資訊項目之每一者之上述對應分支指令的相關分支資訊包括以下一者或其組合之一:上述對應分支指令的該預測目標位址;一全域分支樣式;一提取位址,用以提取上述對應分支指令;上述微處理器之一傳回堆疊的複數指標;複數分支型態位元,用以指示上述對應分支指令之分支型態;以及 上述對應分支指令的複數效能追蹤位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US22582809P | 2009-07-15 | 2009-07-15 | |
US12/581,000 US8281110B2 (en) | 2009-07-15 | 2009-10-16 | Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201102919A TW201102919A (en) | 2011-01-16 |
TWI416408B true TWI416408B (zh) | 2013-11-21 |
Family
ID=43466058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099112636A TWI416408B (zh) | 2009-07-15 | 2010-04-22 | 一種微處理器和其資訊儲存方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8281110B2 (zh) |
TW (1) | TWI416408B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI755744B (zh) * | 2020-05-28 | 2022-02-21 | 芯鼎科技股份有限公司 | 控制命令列隊的裝置及方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886920B2 (en) * | 2011-05-13 | 2014-11-11 | Oracle International Corporation | Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage |
US9354886B2 (en) * | 2011-11-28 | 2016-05-31 | Apple Inc. | Maintaining the integrity of an execution return address stack |
US9436476B2 (en) | 2013-03-15 | 2016-09-06 | Soft Machines Inc. | Method and apparatus for sorting elements in hardware structures |
US9582322B2 (en) | 2013-03-15 | 2017-02-28 | Soft Machines Inc. | Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping |
US9627038B2 (en) | 2013-03-15 | 2017-04-18 | Intel Corporation | Multiport memory cell having improved density area |
US20140281116A1 (en) | 2013-03-15 | 2014-09-18 | Soft Machines, Inc. | Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits |
US9405544B2 (en) | 2013-05-14 | 2016-08-02 | Apple Inc. | Next fetch predictor return address stack |
JP2017516228A (ja) | 2014-05-12 | 2017-06-15 | インテル・コーポレーション | 自己書き換えコードのハードウェアサポートを提供する方法及び装置 |
US10198260B2 (en) * | 2016-01-13 | 2019-02-05 | Oracle International Corporation | Processing instruction control transfer instructions |
US10747540B2 (en) * | 2016-11-01 | 2020-08-18 | Oracle International Corporation | Hybrid lookahead branch target cache |
US10747539B1 (en) | 2016-11-14 | 2020-08-18 | Apple Inc. | Scan-on-fill next fetch target prediction |
US11074184B2 (en) | 2019-04-15 | 2021-07-27 | International Business Machines Corporation | Maintaining data order between buffers |
US11360774B2 (en) * | 2020-10-23 | 2022-06-14 | Centaur Technology, Inc. | Dual branch format |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
US5815700A (en) * | 1995-12-22 | 1998-09-29 | Intel Corporation | Branch prediction table having pointers identifying other branches within common instruction cache lines |
TW200516492A (en) * | 2003-04-21 | 2005-05-16 | Ibm | Dynamically shared group completion table between multiple threads |
TW200912738A (en) * | 2007-07-18 | 2009-03-16 | Advanced Micro Devices Inc | Multiple-core processor with hierarchical microcode store |
-
2009
- 2009-10-16 US US12/581,000 patent/US8281110B2/en active Active
-
2010
- 2010-04-22 TW TW099112636A patent/TWI416408B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5574871A (en) * | 1994-01-04 | 1996-11-12 | Intel Corporation | Method and apparatus for implementing a set-associative branch target buffer |
US5815700A (en) * | 1995-12-22 | 1998-09-29 | Intel Corporation | Branch prediction table having pointers identifying other branches within common instruction cache lines |
TW200516492A (en) * | 2003-04-21 | 2005-05-16 | Ibm | Dynamically shared group completion table between multiple threads |
TW200912738A (en) * | 2007-07-18 | 2009-03-16 | Advanced Micro Devices Inc | Multiple-core processor with hierarchical microcode store |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI755744B (zh) * | 2020-05-28 | 2022-02-21 | 芯鼎科技股份有限公司 | 控制命令列隊的裝置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US8281110B2 (en) | 2012-10-02 |
TW201102919A (en) | 2011-01-16 |
US20110016292A1 (en) | 2011-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI416408B (zh) | 一種微處理器和其資訊儲存方法 | |
US7437537B2 (en) | Methods and apparatus for predicting unaligned memory access | |
US10073698B2 (en) | Pipelined processor with multi-issue microcode unit having local branch decoder | |
US6502185B1 (en) | Pipeline elements which verify predecode information | |
US9104399B2 (en) | Dual issuing of complex instruction set instructions | |
US7437543B2 (en) | Reducing the fetch time of target instructions of a predicted taken branch instruction | |
TWI436275B (zh) | 微處理器及其快速執行呼叫及返回指令類型之程式指令之方法 | |
US7117347B2 (en) | Processor including fallback branch prediction mechanism for far jump and far call instructions | |
US8856496B2 (en) | Microprocessor that fuses load-alu-store and JCC macroinstructions | |
WO2000017746A1 (en) | Mechanism for store to load forwarding | |
EP3321811B1 (en) | Processor with instruction cache that performs zero clock retires | |
JP2009536770A (ja) | ブロックに基づく分岐先アドレスキャッシュ | |
US11816489B1 (en) | Microprocessor with prediction unit pipeline that provides a next fetch address at a rate of one per clock cycle | |
TWI436274B (zh) | 一種微處理器及其執行方法 | |
US12008375B2 (en) | Branch target buffer that stores predicted set index and predicted way number of instruction cache | |
US12014178B2 (en) | Folded instruction fetch pipeline | |
US20080040576A1 (en) | Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set | |
EP1121635A1 (en) | Mechanism for load block on store address generation and universal dependency vector | |
US7519799B2 (en) | Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof | |
CN101840330B (zh) | 一种微处理器和其信息储存方法 | |
US7900027B2 (en) | Scalable link stack control method with full support for speculative operations | |
EP3321810B1 (en) | Processor with instruction cache that performs zero clock retires | |
TWI773391B (zh) | 微處理器和分支處理方法 | |
JPWO2012132214A1 (ja) | プロセッサ及びその命令処理方法 | |
JP2001236225A (ja) | 演算装置及び分岐予測方法並びに情報処理装置 |