TWI610224B - 微處理器加速編碼最佳化器 - Google Patents
微處理器加速編碼最佳化器 Download PDFInfo
- Publication number
- TWI610224B TWI610224B TW100142885A TW100142885A TWI610224B TW I610224 B TWI610224 B TW I610224B TW 100142885 A TW100142885 A TW 100142885A TW 100142885 A TW100142885 A TW 100142885A TW I610224 B TWI610224 B TW I610224B
- Authority
- TW
- Taiwan
- Prior art keywords
- sequence
- instruction
- microinstruction
- dependency
- microprocessor
- Prior art date
Links
Landscapes
- Advance Control (AREA)
Abstract
一種用以在一微處理器中加速編碼最佳化之方法。方法包含使用一指令抓取構件抓取一收到巨集指令序列以及轉移所抓取之巨集指令至一解碼構件以解碼為微指令。最佳化程序係藉由重排序微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行。最佳化微指令序列係輸出至一微處理器管線(pipeline)以執行。最佳化微指令序列之一複本係儲存至一序列快取,供在對最佳化微指令序列之一後續點擊時的後續使用。
Description
本申請案係關於美國專利申請案案號2010/0161948,其專利名稱為「用以在支援多種脈絡交換模式及虛擬化方案的多線程架構中處理複雜指令格式之裝置及方法(APPARATUS AND METHOD FOR PROCESSING COMPLEX INSTRUCTION FORMATS IN A MULTITHREADED ARCHITECTURE SUPPORTING VARIOUS CONTEXT SWITCH MODES AND VIRTUALIZATION SCHEMES)」,由Mohammad A.Abdallah於2010年1月5日所申請,其整體內容係併入本文。
本申請案係關於美國專利申請案案號2009/0113170,其專利名稱為「用以處理在相依性操作中指定並行的指令矩陣之裝置及方法(APPARATUS AND METHOD FOR PROCESSING AN INSTRUCTION MATRIX SPECIFYING PARALLEL IN DEPENDENT OPERATIONS)」,由Mohammad A.Abdallah於2008年12月9日所申請,其整體內容係併入本文。
本申請案係關於美國專利申請案案號61/384,198,其專利名稱為「包含針對早期遠分支預測之陰影快取之單一循環多分支預測(SINGLE CYCLE MULTI-BRANCH PREDICTION INCLUDING SHADOW CACHE FOR EARLY FAR BRANCH PREDICTION)」,由Mohammad A.Abdallah於2010年9月17日所申請,其整體內容係併入本文。
本申請案係關於美國專利申請案案號61/467,944,其專利
名稱為「藉由使用由可劃分引擎所例示之虛擬核心執行指令序列編碼區塊(EXECUTING INSTRUCTION SEQUENCE CODE BLOCKS BY USING VIRTUAL CORES INSTANTIATED BY PARTITIONABLE ENGINES)」,由Mohammad A.Abdallah於2011年3月25日所申請,其整體內容係併入本文。
本發明一般係關於數位電腦系統,特別是關於用以選擇包含一指令序列之指令的系統及方法。
處理器需要處理相關或完全無關的多樣任務。此類處理器的內部狀態通常由暫存器組成,其可保持在程式執行的每一特定瞬間之不同數值。在程式執行的每一瞬間,內部狀態影像(internal state image)係稱作處理器的架構狀態。
當編碼執行係切換以執行另一功能(例如另一線程、程序或程式),則需儲存機器/處理器的狀態,使得新功能可利用內部暫存器來建立其新狀態。一旦新功能終止,則可拋棄其狀態,且先前脈絡(context)的狀態將恢復並重新開始執行。此一切換程序係稱作脈絡切換(context switch),且通常包含數十或數百循環,特別是具有使用大量暫存器(如64、128、256個)及/或無序執行的現代架構。
在線程感知硬體架構中,標準情況為硬體針對有限數量的硬體支援線程支援多個脈絡狀態。在此情況中,硬體針對每一
支援線程複製所有架構狀態元件。這消除了當執行一新的線程時脈絡切換的需要。然而,這仍具有多個缺點,即針對硬體中所支援之每一額外線程而複製所有架構狀態元件(即暫存器)之面積、功率、及複雜度。此外,若軟體線程的數量超過所明確支援之硬體線程的數量,則仍必須執行脈絡切換。
這已成為普遍的,如同需要大量線程之精細粒度基礎上所需之平行化。硬體線程感知架構與複製的脈絡狀態硬體儲存無助於非線程軟體編碼,且僅降低線程化軟體之脈絡切換的數量。然而,那些線程通常係針對粗粒平行化(coarse grain parallelism)而建構,且導致沉重的軟體花費以初始化及同步化,捨棄細粒平行化,例如功能呼叫及迴圈平行執行,而無有效的線程初始化/自動產生。這類所描述的花費係也會造成針對非明確/簡易平行化/線程軟體編碼使用最新式的編譯器或使用者平行化技術的這類編碼之自動平行化變為困難。
在一具體實施例中,本發明係實施為用以在一微處理器中加速編碼最佳化之方法。此方法包含:使用一指令抓取構件(instruction fetch component)抓取一收到巨集指令序列以及轉移所抓取之巨集指令至一解碼構件以解碼為微指令。最佳化程序係藉由重排序微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行。最佳化微指令序列係輸出至一微處理器管線以執行。最佳化微指令序列之一複本係儲存至一序列快取,供在對最佳化微指令序列之一後續點擊時的後續使用。
前述為發明內容,因此必然包含簡化、概括且省略細節。因此,熟此技藝者將了解,發明內容僅為說明性而無意圖做任何方式的限制。本發明的其他態樣、發明特徵及優點係僅由申請專利範圍所定義,且在以下所提出之非限制性詳細說明中將變得明顯。
雖然本發明已相關於具體實施例而描述,本發明並不意欲限制於在本文中所提出之特定形式。相反地,本發明係意圖涵蓋可合理地包括於由後附申請專利範圍所定義之本發明範疇內之替代、修改及等效物。
在以下的詳細描述中,提出了許多具體的細節,像是特定的方法順序、結構、元件及連接。然而,應了解到,可不需利用這些及其他具體細節來實行本發明的具體實施例。在其他情況下,省略或沒有特別地詳細描述習知結構、元件、或連接,以避免不必要地模糊了說明內容。
說明書中所提到的「一個具體實施例(one embodiment)」或「一具體實施例(an embodiment)」係意指,關聯於一具體實施例而描述的特定特徵、結構或特性係包括於本發明之至少一個具體實施例中的一具體實施例。在本說明書中許多地方所出現的「在一個具體實施例中」一詞並不需全指相同的具體實施例,也不需是與其他具體實施例互相排斥的單獨或另外的具體實施例。此外,所描述的許多特徵可能會在某些具體實施例中呈現而沒有在其他具體實施例中呈現。類似地,所描述的許多需求
可能為某些具體實施例的需求,但不為其他具體實施例的需求。
詳細說明的某些部分將於下文中以電腦記憶體內之資料位元上操作的程序、步驟、邏輯塊、處理、及其他符號表示。這些描述及表示為熟習資料處理技藝者所使用的手段,以最有效地將其工作的實質內容傳達給其他熟此技藝者。程序、電腦執行步驟、邏輯塊、處理等等於此處且一般而言係設想為導致所需結果之自相一致順序的步驟或指令。這些步驟為需要實體量的實體操作。通常情況下,但非必須,這些量的形式為電腦可讀儲存媒體的電性或磁性訊號,且能夠被儲存、轉移、結合、比較、或操作於電腦系統中。已證實有時(主要為了平常使用)將此等訊號稱作位元、值、元件、符號、字元、術語、數字或其類似者係便利的。
然而,應注意,所有這些或類似用語與適當實體量有關,且僅為應用到這些量的便利符號。於下討論中除非有特別指明,不然應知本發明中使用例如「處理(processing)」、「存取(accessing)」、「寫入(writing)」、「儲存(storing)」、「複製(replicating)」、或類似者等用語之討論,係指電腦系統或類似電子計算裝置的動作及程序,其將電腦系統暫存器及記憶體及其他電腦可讀媒體內表示為實體(電子)量的資料操控且轉換成在電腦系統記憶體或暫存器或其他此類資訊儲存、傳輸、或顯示裝置內類似地表示為實體量的其他資料。
在一具體實施例中,本發明係實施為用以在微處理器中加速編碼最佳化的方法。方法包含使用一指令抓取構件而抓取一
收到巨集指令序列,以及轉移所抓取之巨集指令至一解碼構件以解碼為微指令。最佳化程序係藉由重排序微指令序列為包含複數個相依編碼群組之一最佳微指令序列而實施。最佳化微指令序列係輸出至一微處理器管線供執行。最佳化微指令序列的複本係儲存於序列快取中供在對最佳化微指令序列之後續點擊時的後續使用。
圖1顯示根據本發明一具體實施例之微處理器100的分派/發布階段的概要圖式。如圖1所示,微處理器100包含一抓取構件101、原生解碼構件102、以及微處理器的指令排程及最佳化器構件110及剩餘管線105。
在圖1的具體實施例中,巨集指令由抓取構件101所抓取且由原生解碼構件102解碼為原生微指令,其接著提供微指令至微指令快取121及指令排程及最佳化器構件110。在一具體實施例中,所抓取的巨集指令包含一指令序列,其藉由預測特定分支而匯編。
巨集指令序列係由原生解碼構件102解碼為一結果微指令序列。微指令序列接著透過多工器103傳輸至指令排程及最佳化器構件110。指令排程及最佳化器構件係藉由執行最佳化程序而作用,其係例如藉由重排序微指令序列的特定指令以供更有效率的執行。這產生了一最佳化的微指令序列,其接著經由多工器104而轉移至剩餘管線105(如分派、配送、執行及引退階段等)。最佳化微指令序列造成更快且更有效率的指令執行。
在一具體實施例中,巨集指令可為來自高階指令組架構的指令,而微指令為低階機器指令。在另一具體實施例中,巨集指令可為來自複數個不同指令組架構的客指令(如似CISC、x86、似RISC、MIPS、SPARC、ARM、似虛擬(virtual like)、JAVA、及類似者),而微指令為低階機器指令或不同原生指令組架構的指令。類似地,在一具體實施例中,巨集指令可為一架構的原生指令,且微指令可為已重排序且最佳化之該相同架構的原生微指令。舉例來說,X86巨集指令以及X86微編碼微指令。
在一具體實施例中,為加速經常遇到之編碼(如熱編碼(hot codes))的執行效率,經常遇到的微指令序列之複本係快取於微指令快取121中,且經常遇到之最佳化微指令序列係快取於序列快取122中。當編碼被抓取、解碼、最佳化、及執行,可根據序列快取的尺寸而經由所繪示之逐出(eviction)及填充路徑130而逐出或抓取特定的最佳化微指令序列。此逐出及填充路徑允許最佳化微指令序列在微處理器的記憶體階層(如L1快取、L2快取、特定可快取記憶體範圍、或類似者)來回轉移。
應注意,在一具體實施例中,可省略微指令快取121。在這樣的具體實施例中,熱編碼的加速係藉由最佳化微指令序列在序列快取122內的儲存而提供。舉例來說,因省略微指令快取121所省下的空間可用以例如實現較大的序列快取122。
圖2顯示描述根據本發明具體實施例之最佳化程序的概要圖式。圖2的左邊顯示一收到微指令序列,從例如原生解碼構件102或微指令快取121所接收。一開始接收這些指令時,它
們並未最佳化。
最佳化程序的一目的為定位及識別彼此相依的指令,且將其移動至其個別的相依性群組,使其可更有效率地執行。在一具體實施例中,相依指令的群組可一起配送,使其可更有效率地執行,因為其個別的來源及目的地係針對地域性(locality)而群組在一起。應注意,最佳化程序可用於無序處理器以及按順序的處理器兩者。舉例來說,在按順序的處理器內,指令係依序配送。然而,指令可四處移動,使得相依指令係設置於個別群組,使群組可接著獨立地執行,如上所述。
舉例來說,收到指令包含載入、操作及儲存。舉例來說,指令1包含加入來源暫存器(如暫存器9及暫存器5)之一操作以及儲存於暫存器5中的結果。因此,暫存器5為目的地,而暫存器9及暫存器5為來源。在此方式中,16個指令之序列包含目的地暫存器以及來源暫存器,如圖所示。
圖2的具體實施例執行指令的重排序,以產生相依性群組,其中屬於一群組的指令係彼此相依。為完成此,執行一演算法,其執行關於16個收到指令之載入及儲存的危害檢查。舉例來說,在無相依性檢查下,儲存無法越過較早的載入。儲存無法通過較早的儲存。在無相依性檢查下,載入無法通過較早的儲存。載入可通過載入。指令可藉由使用一更名技術而通過先前的路徑預測分支(例如動態建構的分支)。在非動態預側之分支的情況下,指令的移動需要考慮分支的範圍。每一個上述規則可藉由加入虛擬的相依性而實施(例如藉由人為地加入虛擬來源
或目的地至指令以執行規則)。
仍參考圖2,如上所述,最佳化程序的一目的係定位相依指令並將其移入一共同的相依性群組。此程序必須根據危害檢查演算法而完成。最佳化演算法係尋找指令相依性。指令相依性更包含真實相依性、輸出相依性、及反相依性。
演算法首先由尋找真實相依性開始。為識別真實相依性,16個指令序列的每一目的地係與在16個指令序列中較晚發生的其他序列來源比較。真實相依於一較早指令的後續指令係標記為「_1」以表示其真實相依性。這係以指令數字顯示於圖2中,其從左到右遍及16個指令序列而進行。舉例來說,考慮指令數字4,目的地暫存器R3係相較於後續指令的來源,且每一後續來源係標記為「_1」以指示該指令的真實相依性。在此情況中,指令6、指令7、指令11及指令15係標記為「_1」。
演算法接著尋找輸出相依性。為識別輸出相依性,每一目的地係與其他後續指令的目的地比較。而且,針對16個指令的每一個,匹配的每一後續目的地係標記為「1_」(例如,有時表示為紅色)。
演算法接著尋找反相依性(anti-dependency)。為識別反相依性,針對16個指令的每一個,每一來源係與較早指令的來源比較以識別匹配。若發生匹配,則考慮中的指令將其本身標記為「1_」(例如,有時表示為紅色)。
在此方式中,演算法針對16個指令的序列集結具有列及行的一相依性矩陣。相依性矩陣包含標記,其係針對16個指令之每一個指示不同的相依性類型。在一具體實施例中,相依性矩陣係使用CAM匹配硬體及適當的廣播邏輯而於一循環中集結。舉例來說,目的地係經由剩餘指令向下廣播,以相較於後續指令的來源(如真實相依性)及後續指令的目的地(如輸出相依性),而目的地可經由先前指令向上廣播,以相較於先前指令的來源(如反相依性)。
最佳化演算法使用相依性矩陣以選擇哪些指令將一起移動至共同相依性群組。較佳係將彼此真實相依的指令移動至相同群組。暫存器更名係用以消除反相依性,以允許那些反相依指令被移動。移動係根據上述規則及危害檢查而完成。舉例來說,在無相依性檢查的情況下,儲存無法通過較早的載入。儲存無法通過較早的儲存。在無相依性檢查下,載入無法通過較早的儲存。載入可通過載入。指令可藉由使用更名技術而通過先前的路徑預測分支(例如動態建構的分支)。在非動態預側之分支的情況下,指令的移動需要考慮分支的範圍。
在一具體實施例中,可實現優先性編碼器,以決定哪些指令被移動而與其他指令成組。優先性編碼器將根據相依性矩陣所提供之資訊而作用。
圖3及圖4顯示根據本發明一具體實施例之一多步驟最佳化程序。在一具體實施例,最佳化程序為疊代(iteration)的,其中在指令藉由移動其相依性行而移入第一通道後,相依性矩陣
係再次集結並再次審查新的機會以移動指令。在一具體實施例,此相依性矩陣集結程序係重複三次。這顯示於圖4中,其顯示已被移動且接著再次審查的指令,尋找機會以移動其他指令。在16個指令之每一個之右側上的數字序列顯示指令在開始程序所在之群組以及指令在程序結束時所在的群組,其具有中介群組於其間。舉例來說,圖4顯示指令6如何開始於群組4但移動至群組1中。
在此方式中,圖2至圖4描述根據本發明一具體實施例之一最佳化演算法之操作。應注意,雖然圖2至圖4描述一分派/發布階段,此功能也可實施於一本地排程器/配送階段中。
圖5顯示根據本發明一具體實施例之一範例硬體最佳化程序500的步驟流程圖。如圖5所示,根據本發明一具體實施例,流程圖顯示最佳化程序之操作步驟為實施於一微處理器之一分派/發布階段中。
程序500開始於步驟501,其中一收到巨集指令序列係使用一指令抓取構件(如圖1的抓取構件101)而抓取。如上述,所抓取的指令包含藉由預測特定指令分支而匯編之一序列。
在步驟502中,所抓取的巨集指令係轉移至一解碼構件以解碼為微指令。巨集指令序列係根據分支預測而解碼為微指令序列。在一具體實施例中,微指令序列接著儲存至一微指令快取中。
在步驟503中,接著藉由重排序包含序列之微指令為相依性群組而對微指令序列進行最佳化程序。重排序係藉由一指令重排序構件(如指令排程及最佳化器構件110)而執行。此程序係描述於圖2至圖4中。
在步驟504中,最佳化微指令序列為一輸出至微處理管線供執行。如上述,最佳化微指令序列係轉呈至機器的剩餘部分供執行(如剩餘管線105)。
隨後,在步驟505中,最佳化微指令序列的一複本係儲存至一序列快取中供在對該序列之後續點擊時的後續使用。在此方式中,序列快取在對這些序列的後續點擊時致能對最佳化微指令序列的存取,藉此加速熱編碼。
圖6顯示根據本發明一具體實施例之另一範例硬體最佳化程序600的步驟流程圖。如圖6所示,根據本發明另一具體實施例,流程圖顯示最佳化程序之操作步驟為實施於一微處理器之一分派/發布階段中。
程序600開始於步驟601,其中一收到巨集指令序列係使用一指令抓取構件(如圖1的抓取構件101)而抓取。如上述,所抓取的指令包含藉由預測特定指令分支而匯編之一序列。
在步驟602中,所抓取的巨集指令係轉移至一解碼構件以解碼為微指令。巨集指令序列係根據分支預測而解碼為微指令序列。在一具體實施例中,微指令序列接著儲存至一微指令快
取中。
在步驟603中,所解碼的微指令係儲存於在微指令序列快取中之序列中。在微指令快取中之序列係根據基本區塊邊界而形成以開始。這些序列在此時並未最佳化。
在步驟604中,接著藉由重排序包含序列之微指令為相依性群組而對微指令序列進行最佳化程序。重排序係藉由一指令重排序構件(如指令排程及最佳化器構件110)而執行。此程序係描述於圖2至圖4中。
在步驟605中,最佳化微指令序列為一輸出至微處理管線供執行。如上述,最佳化微指令序列係轉呈至機器的剩餘部分供執行(如剩餘管線105)。
隨後,在步驟606中,最佳化微指令序列的一複本係儲存至一序列快取中供在對該序列之後續點擊時的後續使用。在此方式中,序列快取在對這些序列的後續點擊時致能對最佳化微指令序列的存取,藉此加速熱編碼。
圖7顯示一圖表,其顯示根據本發明一具體實施例之分派/發布階段之CAM匹配硬體及優先性編碼硬體的操作。如圖7所繪示,指令的目的地係從左廣播收到CAM陣列。顯示三個範例指令目的地。較輕陰影的CAM(例如綠色)係針對真實相依性匹配以及輸出相依性匹配,因此目的地係向下廣播。較暗陰影CAM(例如藍色)為反相依性匹配,因此目的地係向上廣播。這
些匹配集結一相依性矩陣,如上述。優先性編碼器係顯示於右,且其藉由掃描CAM的列而作用以找出第一匹配,「_1」或「1_」。如前文中對圖2至圖4的討論,程序可為疊代的執行。舉例來說,若「_1」由「1_」所阻擋,則可重新命名且移動該目的地。
圖8顯示描述根據本發明一具體實施例之在一分支前之最佳化排程指令的一圖表。如圖8所示,一硬體最佳化範例係與一傳統及時編譯器範例並排地繪示。圖8的左邊顯示原始未最佳化編碼,其包括未取分支偏誤「分支C至L1」。圖8的中間一行顯示傳統及時編譯器最佳化,其中暫存器係重新命名且指令係移動至分支之前。在此範例中,及時編譯器插入補償編碼以說明分支偏誤決定為錯之那些情況(例如實際上取得分支,與未取相反)。相反地,圖8之右邊的一行顯示硬體展開最佳化。在此情況中,暫存器係重新命名且指令係移動至分支之前。然而,應注意,沒有插入補償編碼。硬體持續追蹤分支偏誤決定是否為真。在失誤預測分支的情況中,硬體自動地退回其狀態以執行正確的指令序列。硬體最佳化器解決方案能夠避免使用補償編碼,因為在分支為失誤預測的那些情況中,硬體跳至記憶體中的原始碼並從那裡執行正確的序列,並排清(flushing)失誤預測的指令序列。
圖9顯示一圖表,其描述根據本發明一具體實施例之在一儲存之前最佳化排程一載入。如圖9所示,硬體最佳化範例係沿一傳統及時編譯器範例而繪示。圖9的左邊顯示包含儲存之一原始未最佳化編碼,「R3<-LD[R5]」。圖9中間之一行顯示傳統及時編譯器最佳化,其中暫存器係重新命名且載入係移動
至儲存之前。在此範例中,及時編譯器插入補償編碼以說明載入指令之位址係化名為儲存指令之位址的那些情況(例如,載入移動至儲存之前為不適當的情況)。相反地,圖9右邊的一行顯示硬體展開最佳化。在此情況中,暫存器係重新命名且載入也移動至儲存之前。然而,應注意到,沒有插入補償編碼。在移動載入至儲存之前為錯誤的情況中,硬體係自動地退回其狀態,以執行正確的指令序列。硬體最佳化器解決方案能夠避免使用補償編碼,因為在位址別名-檢查分支為失誤預測的情況中,硬體跳至記憶體中的原始編碼,且由該處執行正確序列,同時排清失誤預測的指令序列。在此情況中,序列係假設無別名。應注意,在一具體實施例中,圖9所示的功能可由圖1的指令排程及最佳化器構件110所執行。類似地,應注意到,在一具體實施例中,圖9所示的功能可由以下圖10所描述之軟體最佳化器1000所執行。
此外,關於動態展開(unroll)序列,應注意指令可藉由使用重新命名而通過先前路徑預測分支(如動態建構的分支)。在非動態預測分支的情況中,指令的移動應考慮分支的範圍。迴圈可展開至想要的範圍,且最佳化可應用在整個序列。舉例來說,這可藉由重新命名穿過分支而移動之指令的目的地暫存器而實施。此特徵的其中一好處為不需要補償編碼或是對分支範圍的廣泛分析。此特徵因此大大地加速且簡化了最佳化程序。
有關分支預測及指令序列之匯編的額外資訊可於美國專利申請號61/384,198中找到,其標題為「包含針對早期遠分支預測之陰影快取之單一循環多分支預測(Single Cycle
Multi-Branch Prediction Including Shadow Cache For Early Far Branch Prediction)」,由Mohammad A.Abdallah於2010年9月17日申請,其整體內容係併入本文。
圖10顯示根據本發明一具體實施例之範例軟體最佳化程序的示意圖。在圖10的具體實施例中,指令排程及最佳化器構件(如圖1的構件110)係由基於軟體之最佳化器1000所取代。
在圖10的具體實施例中,軟體最佳化器1000執行由基於硬體之指令排程及最佳化器構件110所執行之最佳化程序。軟體最佳化器維持在記憶體階層(例如L1、L2、系統記憶體)中之最佳化序列的複本。相較於序列快取中所儲存,這允許軟體最佳化器維持最佳化序列之更大的收集。
應注意到,軟體最佳化器1000可包含常駐於記憶體階層中的編碼,如對最佳化的輸入以及來自最佳化程序的輸出。
應注意,在一具體實施例中,可省略微指令快取。在此一具體事實例中,僅快取最佳化微指令序列。
圖11顯示根據本發明一具體實施例之SIMD基於軟體之最佳化程序的流程圖。圖11的頂部顯示基於軟體的最佳化器如何審查輸入指令序列的每一指令。圖11顯示SIMD比較如何可用以匹配一對多(例如SIMD位元組比較第一來源「Src1」與所有第二來源位元組「Src2」)。在一具體實施例中,Src1包含任何指令的目的地暫存器,且Src2包含來自每一其他序列指令的一
來源。針對每一目的地與所有後序指令來源完成匹配(如真實相依性檢查)。這是一配對匹配,其指示指令所需的群組。匹配係完成於每一目的地與每一後續指令目的地之間(例如輸出相依性檢查)。這是一阻擋匹配,其可以重新命名解決。匹配係完成於每一目的地與每一先前指令來源之間(例如反相依性檢查)。這是阻擋匹配,其可以重新命名解決。結果可用以集結相依性矩陣的列與行。
圖12顯示根據本發明一具體實施例之一範例SIMD基於軟體之最佳化程序1200的流程圖。程序1200係在圖9流程圖的背景下描述。
在步驟1201中,指令的輸入序列係藉由使用實體化(instantiated)於記憶體之一基於軟體之最佳化器而存取。
在步驟1202中,使用SIMD指令而集結(populate)一相依性矩陣,其具有藉由使用SIMD比較指令之一序列而從指令的輸入序列擷取之相依性資訊。
在步驟1203中,針對第一匹配(如相依性標記)而從右至左掃描矩陣的列。
在步驟1204中,分析每一第一匹配以決定匹配的類型。
在步驟1205中,若第一標記匹配為一阻擋相依性(blocking dependency),則針對此目的地完成重新命名。
在步驟1206中,識別針對矩陣每一列的所有第一匹配,且該匹配所對應的行係移動至給定的相依性群組。
在步驟1207中,重複掃描程序數次,以重排序包含輸入序列的指令,以產生一最佳化輸出序列。
在步驟1208中,最佳化指令序列係輸出至微處理器的執行管線供執行。
在步驟1209中,最佳化輸出序列係儲存於一序列快取中供後續的消耗(如加速熱編碼)。
應注意,軟體最佳化可使用SIMD指令而連續地(serially)完成。舉例來說,最佳化可藉由在一時間掃描指令的來源及目的地處理一指令而實施(例如,從在一序列中較早的指令至後續的指令)。根據上述最佳化演算法及SIMD指令,軟體使用SIMD指令以並聯地比較目前的指令來源及目的地與先前的指令來源及目的地(例如,偵測真實相依性、輸出相依性及反相依性)。
圖13顯示根據本發明一具體實施例之基於軟體之相依性廣播程序。圖13具體實施例顯示一範例軟體排程程序的流程圖,其處理指令的群組而不需有如上述之完整並聯硬體實施的花費。然而,圖13具體實施例仍可使用SIMD以並聯地處理較小的指令群組。
圖13的軟體排程程序係進行如下。首先,程序初始化三個暫存器。程序取得指令數字並將其載入第一暫存器。接著,程序取得目的地暫存器數字並將其載入第二暫存器。接著,程序取得在第一暫存器的數值並將根據在第二暫存器中的一位置數字而將其廣播至在第三結果暫存器中的一位置。程序接著在第二暫存器中從左到右複寫,在廣播係進行至結果暫存器中之相同位置的那些情況中,最左邊的數值將複寫一右邊的數值。在第三暫存器中尚未被寫入的位置將被略過(bypassed)。此資訊息用以集結一相依性矩陣。
圖13具體實施例也顯示指令的輸入序列可處理為複數個群組的方式。舉例來說,16個指令輸入序列可處理為8個指令的第一群組以及8個指令的第二群組。以第一群組,指令數字係載入至第一暫存器、指令目的地數字係載入第二暫存器、且在第一暫存器中之數值係根據第二暫存器中的位置數字而廣播(broadcast)至第三暫存器(例如結果暫存器)中的位置(例如群組廣播)。在第三暫存器中尚未被寫入的位置將被略過。第三暫存器現在變成處理第二群組的基礎。舉例來說,來自群組1的結果暫存器現在變成處理群組二的結果暫存器。
以第二群組,指令數字係載入第一暫存器、指令目的地數字係載入第二暫存器、且在第一暫存器中的數值係根據第二暫存器中的位置數字而廣播至第三暫存器(如結果暫存器)中的位置。第三暫存器中的位置可複寫在第一群組處理過程中所寫入的結果。在第三暫存器中尚未被寫入的位置將被略過。在此方式中,第二群組更新來自第一群組的基礎,並因而產生新的基
礎供第三群組的處理等等。
在第二群組中的指令可繼承在第一群組的處理中所產生的相依性資訊。應注意,並不需要處理全部的第二群組以更新在結果暫存器中的相依性。舉例來說,指令12的相依性可在第一群組的處理中產生,接著處理在第二群組中直到指令11的指令。這更新了結果暫存器至直到指令12的一狀態。在一具體實施例中,可使用遮罩以避免第二群組之剩餘指令(例如指令12至16)的更新。為決定指令12的相依性,結果暫存器係針對R2及R5而審查。R5將以指令1更新,而R2將以指令11更新。應注意,在群組2全部被處理的情況中,R2將以指令15更新。
此外,應注意,第二群組的所有指令(如指令9至16)可彼此獨立地處理。在此情況中,第二群組的指令僅依賴第一群組的結果暫存器。一旦結果暫存器從第一群組的處理更新,則第二群組的指令可並聯地處理。在此方式中,指令群組可接連地並聯處理。在一具體實施例中,每一群組係使用SIMD指令(如SIMD廣播指令)處理,藉此而並聯地處理該每一群組的所有指令。
圖14顯示一範例流程圖,其顯示根據本發明一具體實施例之指令的相依性群組如何可用以建立相依性指令的可變界限群組。在圖2至圖4的描述中,群組的尺寸係受限,在那些情況中每群組為三個指令。圖14顯示指令如何可重排序為可變尺寸的群組,其可接著分派至複數個計算引擎。舉例來說,圖14顯示4個引擎。由於群組可根據其特徵而可變地調整尺寸,引擎1
可分派比例如引擎2大的群組。這可例如發生在引擎2具有未特別地相依於該群組中其他指令之一指令的情況中。
圖15顯示一流程圖,其繪示根據本發明一具體實施例之指令的階層排程。如前述,指令的相依性群組可用以建立可變界限群組。圖15顯示其中各種等級的相依性存在於一相依性群組內的特徵。舉例來說,指令1並未相依於在此指令序列內的任何其他指令,因此使指令1為L0相依性等級。然而,指令4係相依於指令1,因此使指令4為L1相依性等級。在此方式中,指令序列的每一指令係分派一相依性等級,如圖所示。
每一指令的相依性等級係由第二等級階層排程器所使用,以此一方式配送指令以確保有可用的資源供相依性指令以執行。舉例來說,在一具體實施例中,L0指令係載入由第二等級排程器1至4所處理之指令佇列。L0指令係載入使得其在每一佇列前、L1指令係載入使得接在每一佇列之後、L2指令係接在其後等。在圖15中,這藉由相依性等級而顯示,從L0至Ln。排程器1至4的階層排程係有利地利用時間局部性(locality-in-time)及指令對指令相依性而以一最佳方式做出排程決定。
在此方式中,本發明的具體實施例顯示指令序列之指令的相依性群組槽分派(slot allocation)。舉例來說,實施一無序微架構,指令序列之指令的配送為無序。在一具體實施例中,在每一循環中,檢查指令的準備狀態。若一指令所相依的所有指令在先前已配送,則此指令為準備好的。排程器結構由檢查那些
相依性而作用。在一具體實施例中,排程器為一聯合排程器,且所有相依性檢查係在聯合排程器結構中執行。在另一具體實施例中,排程器功能係分散在複數個引擎之執行單元的配送佇列。因此,在一具體實施例中排程器為聯合的,而在另一具體實施例中排程器為分散的。以這兩個解決方案,在每一循環,對配送指令的目的地檢查每一指令來源。
因此,圖15顯示由本發明具體實施例所執行之階層排程。如前述,指令首先分組以形成相依性鏈(如相依性群組)。這些相依性鏈的資訊可藉由軟體或硬體而靜態地或動態地完成。一旦這些相依性鏈已經形成,其可分布/配送至一引擎。在此方式中,藉由相依性的分組允許依序形成之群組的無序排程。藉由相依性的分組也將全部的相依性群組分散至複數個引擎(例如核心或線程)。藉由相依性的分組也有助於階層排程,如前所述,其中相依性指令在第一步驟中分組並在第二步驟中排程。
應注意,圖14至19所示的功能可獨立於指令藉以分組的任何方法而作用(例如分組功能是否由硬體、軟體等所執行)。此外,圖14至19所示的相依性群組可包含相依性群組之一矩陣,其中每一群組更包含相依性指令。此外,應注意,排程器也可為引擎。在此具體實施例中,排程器1至4的每一個可併入其個別引擎內(如圖22所示,其中每一區段包含一共同劃分排程器)。
圖16顯示一流程圖,其繪示根據本發明一具體實施例之三槽相依性群組指令的階層排程。如前所述,指令的相依性群組
可用以建立可變界限群組。在此具體實施例中,相依性群組包含三個槽。圖16顯示相依性的各種等級平均的在三槽相依性群組中。如前所述,指令1並無相依於在此指令序列中的任何其他指令,因此使得指令1為L0相依性等級。然而,指令4係相依於指令1,因此使得指令4為L1相依性等級。在此方式中,指令序列的每一指令係分派一相依性等級,如圖所示。
如前所述,每一指令的相依性等級係由第二等級階層排程器所使用,以此一方式配送指令以確保有可用的資源供相依性指令以執行。L0指令係載入由第二等級排程器1至4所處理之指令佇列。L0指令係載入使得其在每一佇列前、L1指令係載入使得其在每一佇列之後、L2指令係接在其後等,如相依性等級所示,從圖16的L0至Ln。應注意,群組數字四(例如從頂部的第四群組)係開始於L2,即使其為一獨立群組。這是因為指令7相依於指令4,其又相依於指令1,因而給定指令7為L2相依性。
在此方式中,圖16顯示每三個相依性指令係共同地排程於給定之排程器1至4之其中之一上。第二等級群組係排程於第一等級群組之後,接著旋轉群組。
圖17顯示一流程圖,其繪示根據本發明一具體實施例之三槽相依性群組指令的階層移動視窗排程。在此具體實施例中,三槽相依性群組的階層排程係經由一聯合移動視窗排程器而執行。移動視窗排程器處理在佇列中的指令,以此一方式配送指令以確保有可用的資源供相依性指令以執行。如前述,L0指令
係載入由第二等級排程器1至4所處理之指令佇列。L0指令係載入使得其在每一佇列前、L1指令係載入使得其在每一佇列之後、L2指令係接在其後等,如相依性等級所示,從圖17的L0至Ln。移動視窗描述L0指令如何可從每一佇列配送,即使其在一佇列中可多於另一佇列。在此方式中,移動視窗排程器係配送指令如由左至右的佇列流,如圖17所示。
圖18根據本發明一具體實施例顯示指令的可變尺寸相依性鏈(例如可變界限群組)如何分派至複數個計算引擎。
如圖18所示,處理器包含一指令排程器構件10及複數個引擎11至14。指令排程器構件產生編碼區塊及遺傳向量,以支援相依性編碼區塊(如可變界限群組)於其個別引擎上的執行。每一相依性編碼區塊可屬於相同邏輯核心/線程或屬於不同的邏輯核心/線程。指令排程器構件將處理相依性編碼區塊及個別遺傳向量。這些相依性編碼區塊及個別遺傳向量係分派至特定引擎11至14,如圖所示。通用互連30支援對引擎11至14之每一個的必要通訊。應注意,有關指令的相依性分組以建立相依性指令的可變界限群組(如上述對圖14的討論)係由圖18具體實施例之指令排程器構件10所執行。
圖19顯示一流程圖,其繪示根據本發明一具體實施例之區塊分派至排程佇列及三槽相依性群組指令的階層移動視窗排程。如前述,三槽相依性群組的階層排程可經由一聯合移動視窗排程器執行。圖19顯示相依性群組如何變成載入排程佇列的區塊。在圖19的具體實施例中,兩個相依性群組可載入每一佇
列作為半區塊。這顯示在圖19的頂部,其中群組1形成一半區塊而群組4形成另一半區塊,其係載入第一排程佇列。
如前所述,移動視窗排程器處理在佇列中的指令,以此一方式配送指令以確保有可用的資源供相依性指令以執行。圖19的底部顯示L0指令如何載入至由第二等級排程器所處理之指令佇列。
圖20根據本發明一具體實施例顯示相依性編碼區塊(如相依性群組或相依性鏈)如何執行於引擎11至14上。如前述,指令排程器構件產生編碼區塊及遺傳向量(inheritance vector),以支援相依性編碼區塊(如可變界限群組、三槽群組等)於其個別引擎上的執行。如圖19所述,圖20更顯示兩個獨立群組如何可載入至每一引擎作為編碼區塊。圖20顯示這些編碼區塊如何配送至引擎11至14,其中相依性指令執行於每一引擎的堆疊(如串列地連接)執行單元。舉例來說,在圖20的左上方,在第一相依性群組或編碼區塊中,指令係配送至引擎11,其中其係以其相依性順序堆疊於執行單元上,使得L0係堆疊於L1的頂部,而L1係堆疊於L2上。如此,L0的結果係流向L1的執行單元,接著其可流向L2的執行。
在此方式中,圖20所示的相依性群組可包含獨立群組的一矩陣,其中每一群組更包含相依性指令。群組為獨立的好處是並聯地將其配送及執行的能力及屬性,藉此最小化在引擎之間橫越互連之通訊的需求。此外,應注意,顯示於引擎11至14中之執行單元可包含CPU或GPU。
根據本發明一具體實施例,應了解到,指令係根據其相依性而提取收到相依性群組或區塊或指令矩陣。根據其相依性的分組指令有助於具有較大指令視窗(如較大的指令輸入序列)之更簡化的排程程序。前述的分組係移除指令變動且均勻地提取此變動,因而允許簡單、同質及均勻的排程決定。上述的分組功能提高了排程器的產量,而無增加排程器的複雜度。舉例來說,在針對四個引擎的一排程器中,排程器可配送四個群組,其中每一群組具有三個指令。如此,排程器僅處理四線道的超標量複雜度,同時配送12個指令。此外,每一方塊可含有並行的獨立群組,其更增加配送指令的數量。
圖21顯示根據本發明一具體實施例之複數個引擎及其構件的概圖,其包含一多核心處理器之一通用前端抓取&排程器及暫存器檔案、通用互連、及一片段記憶體次系統。如圖21所示,顯示了四個記憶體片段101至104。記憶體片段階層在每一快取階層為相同(例如L1快取、L2快取、及載入儲存緩衝)。資料可經由記憶體通用互連110a而在每一L1快取、每一L2快取、及每一載入儲存緩衝之間交換。
記憶體通用互連包含一路由矩陣,其允許複數個核心(如位址計算及執行單元121-124)存取資料,資料可儲存於片段快取階層(如L1快取、載入儲存緩衝及L2快取)中的任一點。圖21也繪示每一片段101至104可由位址計算及執行單元121至124經由記憶體通用互連110a而存取的方式。
執行通用互連110b類似地包含一路由矩陣,允許複數個核心(如位址計算及執行單元121至124)存取儲存於任何區段暫存器檔案的資料。因此,核心具有經由記憶體通用互連110a或執行通用互連110b之對儲存於任何片段中之資料及儲存於任何區段中之資料的存取。
圖21更顯示一通用前端抓取/排程器,其具有對整體機器的觀察且其管理暫存器檔案區段及分段記憶體次系統的使用。位址產生包含針對片段定義的基礎。通用前端抓取&排程器係藉由分派指令序列至每一區段而作用。
圖22顯示根據本發明一具體實施例之複數個區段、複數個區段共同劃分排程器及互連及至區段的埠。如圖22所示,每一區段係顯示為具有一共同劃分排程器。共同劃分排程器藉由排程在其個別區段內的指令而作用。這些指令接著從通用前端抓取及排程器接收。在此具體實施例中,通用劃分排程器係組態以與通用前端抓取及排程器聯合作用。區段亦顯示為具有4個讀取寫入埠,其提供讀取/寫入存取至運算元/結果緩衝器、線程暫存器檔案、及共同劃分排程器。
在一具體實施例中,執行一非集中式存取程序以使用互連且本地互連使用保留加法器及臨界限制器控制對每一競爭資源的存取,在此情況中,至每一區段的埠。在此具體實施例中,為存取一資源,一核心需保留所需的匯流排及保流所需的埠。
圖23顯示根據本發明一具體實施例之範例微處理器管線
2200的圖表。微處理器管線2200包含一抓取模組2301,其執行程序之功能以識別及擷取包含一執行之指令,如前述。在圖23的具體實施例中,抓取模組係繼之以一解碼模組2202、分派模組2203、配送模組2204、執行模組2205、及引退模組2206。應注意,微處理器管線2200只是管線的一範例,其執行上述之本發明具體實施例的功能。熟此技藝者將了解到其他微處理器管線可實施為包含上述解碼模組之功能。
為解釋目的,前文之描述係指特定具體實施例,其無意為詳盡或限制本發明。在符合上述教示下可能有許多修改及變化。具體實施例係選擇及描述以最佳地解釋本發明的原理及其實際應用,以致能其他熟此技藝者最佳地使用本發明及其具有可適合於特定使用之各種修改的各種具體實施例。
10‧‧‧指令排程器構件
11‧‧‧引擎
12‧‧‧引擎
13‧‧‧引擎
14‧‧‧引擎
30‧‧‧通用互連
100‧‧‧微處理器
101‧‧‧抓取構件
102‧‧‧原生解碼構件
103‧‧‧多工器
104‧‧‧多工器
105‧‧‧剩餘管線
110‧‧‧指令排程及最佳化器構件
110a‧‧‧記憶體通用互連
110b‧‧‧執行通用互連
121‧‧‧微指令快取
122‧‧‧序列快取
123‧‧‧位址計算及執行單元
124‧‧‧位址計算及執行單元
130‧‧‧逐出及填充路徑
1000‧‧‧軟體最佳化器
2200‧‧‧微處理器管線
2201‧‧‧抓取模組
2202‧‧‧解碼模組
2203‧‧‧分派模組
2204‧‧‧配送模組
2205‧‧‧執行模組
2206‧‧‧引退模組
本發明係經由範例而非經由限制的方式而描述,在所附隨圖式之各圖中,類似的元件符號係指類似的元件。
圖1顯示根據本發明一具體實施例之微處理器的分派/發布階段的概要圖式;圖2顯示描述根據本發明具體實施例之最佳化程序的概要圖式;圖3顯示根據本發明一具體實施例之一多步驟最佳化程序;圖4顯示根據本發明一具體實施例之一多步驟最佳化及指令移動程序;圖5顯示根據本發明一具體實施例之一範例硬體最佳化程序步驟流程圖;
圖6顯示根據本發明一具體實施例之另一範例硬體最佳化程序的步驟流程圖;圖7顯示一圖表,其顯示根據本發明一具體實施例之分派/發布階段之CAM匹配硬體及優先性編碼硬體的操作;圖8顯示描述根據本發明一具體實施例之在一分支前之最佳化排程的一圖表;圖9顯示一圖表,其描述根據本發明一具體實施例之在一儲存之前的最佳化排程;圖10顯示根據本發明一具體實施例之範例軟體最佳化程序的示意圖;圖11顯示根據本發明一具體實施例之SIMD基於軟體之最佳化程序的流程圖;圖12顯示根據本發明一具體實施例之一範例SIMD基於軟體之最佳化程序的流程圖;圖13顯示根據本發明一具體實施例之基於軟體之相依性廣播程序。
圖14顯示一範例流程圖,其顯示根據本發明一具體實施例之指令的相依性群組如何用以建立相依性指令的可變界限群組;圖15顯示一流程圖,其繪示根據本發明一具體實施例之指令的階層排程;圖16顯示一流程圖,其繪示根據本發明一具體實施例之三槽相依性群組指令的階層排程;圖17顯示一流程圖,其繪示根據本發明一具體實施例之三槽相依性群組指令的階層移動視窗排程;圖18根據本發明一具體實施例顯示指令的可變尺寸相依性
鏈(例如可變界限群組)如何分派至複數個計算引擎;圖19顯示一流程圖,其繪示根據本發明一具體實施例之區塊分派至排程佇列及三槽相依性群組指令的階層移動視窗排程;圖20根據本發明一具體實施例顯示相依性編碼區塊(如相依性群組或相依性鏈)如何執行於引擎上;圖21顯示根據本發明一具體實施例之複數個引擎及其構件的概圖,其包含一多核心處理器之一通用前端抓取&排程器及暫存器檔案、通用互連、及一片段記憶體次系統;圖22顯示根據本發明一具體實施例之複數個區段、複數個區段的共同劃分排程器及互連及至區段的埠;以及圖23顯示根據本發明一具體實施例之範例微處理器管線的圖表。
101‧‧‧抓取構件
102‧‧‧原生解碼構件
103‧‧‧多工器
104‧‧‧多工器
105‧‧‧剩餘管線
110‧‧‧指令排程及最佳化器構件
121‧‧‧微指令快取
122‧‧‧序列快取
130‧‧‧逐出及填充路徑
Claims (26)
- 一種用以在一微處理器中加速編碼最佳化之方法,包含:使用一指令抓取構件抓取一收到巨集指令序列;轉移該抓取之巨集指令至一解碼構件以解碼為微指令;藉由重排序該微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行最佳化程序,其中該最佳化程序使用相依性矩陣來確定該微指令序列中的哪些微指令係分組成該複數個相依性編碼群組中的相同相依性編碼群組;輸出該最佳化微指令序列至一微處理器管線以執行;以及儲存該最佳化微指令序列之一複本至一序列快取,供在對最佳化微指令序列之一後續點擊時的後續使用。
- 如請求項1所述之方法,其中該解碼微指令之一複本係儲存於一微指令快取中。
- 如請求項1所述之方法,其中該最佳化程序係使用該微處理器之一分派及發布階段而執行。
- 如請求項3所述之方法,其中該分派及發布階段更包含一指令排程及最佳化器構件,該指令排程及最佳化器構件重排序該微指令序列為該最佳化微指令序列。
- 如請求項1所述之方法,其中該最佳化程序更包含動態地展開(unroll)微指令序列。
- 如請求項1所述之方法,其中該最佳化程序係經 由複數個疊代而執行。
- 如請求項1所述之方法,其中該最佳化程序係經由一暫存器重新命名程序以致能該重排序而執行。
- 一種微處理器,包含:一指令抓取構件,用以抓取一收到巨集指令序列;一解碼構件,耦合至該指令抓取構件以接收所抓取之巨集指令序列並解碼為一微指令序列;一分派及發布階段,耦合至該解碼構件以接收該微指令序列,藉由重排序該微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行最佳化程序,其中該最佳化程序使用相依性矩陣來確定該微指令序列中的哪些微指令係分組成該複數個相依性編碼群組中的相同相依性編碼群組;一微處理器管線,耦合至該分派及發布階段以接收並執行該最佳化微指令序列;以及一序列快取,耦合至該分派及發布階段以接收並儲存該最佳化微指令序列之一複本,供在對該最佳化微指令序列之一後續點擊時的後續使用。
- 如請求項8所述之微處理器,其中該解碼微指令之一複本係儲存於一微指令快取中。
- 如請求項8所述之微處理器,其中該最佳化程序係使用該微處理器之一分派及發布階段而執行。
- 如請求項10所述之微處理器,其中該分派及發布階段更包含一指令排程及最佳化器構件,該指令排程及 最佳化器構件重排序該微指令序列為該最佳化微指令序列。
- 如請求項8所述之微處理器,其中該最佳化程序更包含動態地展開微指令序列。
- 如請求項8所述之微處理器,其中該最佳化程序係經由複數個疊代而執行。
- 如請求項8所述之微處理器,其中該最佳化程序係經由一暫存器重新命名程序以致能該重排序而執行。
- 一種用以在一微處理器中加速編碼最佳化之方法,包含:使用實體化於記憶體中的一基於軟體之最佳化器存取一輸入微指令序列;使用SIMD指令以集結具有從該輸入微指令序列擷取之相依性資訊的一相依性矩陣;掃描該相依性矩陣之複數個列以藉由重排序該微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行最佳化程序,其中該最佳化程序使用相依性矩陣來確定該微指令序列中的哪些微指令係分組成該複數個相依性編碼群組中的相同相依性編碼群組;輸出該最佳化微指令序列至一微處理器管線以執行;以及儲存該最佳化微指令序列之一複本至一序列快取,供在對最佳化微指令序列之一後續點擊時的後續使用。
- 如請求項15所述之方法,其中該最佳化程序更 包括掃描該相依性矩陣之複數個列以識別匹配指令。
- 如請求項16所述之方法,其中該最佳化程序更包含分析該匹配指令以決定該匹配指令是否包含一阻擋相依性,以及其中重新命名係執行以移除該阻擋相依性。
- 如請求項17所述之方法,其中對應該相依性矩陣之每一列之第一匹配的指令係移動至一對應相依性群組中。
- 如請求項15所述之方法,其中該最佳化微指令序列之複本係儲存於該微處理器之一記憶體階層中。
- 如請求項19所述之方法,其中該記憶體階層包含一L1快取及一L2快取。
- 如請求項20所述之方法,其中該記憶體階層更包含一系統記憶體。
- 一種微處理器,包含:一指令抓取構件,用以抓取一收到巨集指令序列;一解碼構件,耦合至該指令抓取構件以接收該所抓取之巨集指令序列並解碼為一微指令序列;一分派及發布階段,耦合至該解碼構件以接收該微指令序列,藉由重排序該微指令序列為包含複數個相依性編碼群組之一最佳化微指令序列而執行最佳化程序,其中該最佳化程序使用相依性矩陣來確定該微指令序列中的哪些微指令係分組成該複數個相依性編碼群組中的相同相依性編碼群組;一微處理器管線,耦合至該分派及發布階段以接收並 執行該最佳化微指令序列;一序列快取,耦合至該分派及發布階段以接收並儲存該最佳化微指令序列之一複本,供在對該最佳化微指令序列之一後續點擊時的後續使用;以及一硬體構件,用以移動在該收到微指令序列中的指令。
- 如請求項22所述之微處理器,其中至少一暫存器係重新命名且至少一指令係移動至分支之前而無插入補償編碼。
- 如請求項23所述之微處理器,其中該硬體構件持續追蹤一分支偏誤決定(biased decision)是否為真,以及其中在一錯誤預測分支的情況中,該硬體構件係自動地退回狀態以執行一正確的指令序列。
- 如請求項24所述之微處理器,其中在一錯誤預測分支的情況中,該硬體構件跳至記憶體中的原始編碼以執行該正確的指令序列。
- 如請求項25所述之微處理器,其中在一錯誤預測分支的情況中,該硬體構件係造成一失誤預測指令序列的一排清。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100142885A TWI610224B (zh) | 2011-11-23 | 2011-11-23 | 微處理器加速編碼最佳化器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW100142885A TWI610224B (zh) | 2011-11-23 | 2011-11-23 | 微處理器加速編碼最佳化器 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201322122A TW201322122A (zh) | 2013-06-01 |
TWI610224B true TWI610224B (zh) | 2018-01-01 |
Family
ID=49032390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100142885A TWI610224B (zh) | 2011-11-23 | 2011-11-23 | 微處理器加速編碼最佳化器 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI610224B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5517651A (en) * | 1993-12-29 | 1996-05-14 | Intel Corporation | Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes |
US5710902A (en) * | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
TW200405201A (en) * | 2002-08-28 | 2004-04-01 | Advanced Micro Devices Inc | Scheduler for use in a microprocessor that supports data-speculative execution |
US20090150890A1 (en) * | 2007-12-10 | 2009-06-11 | Yourst Matt T | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
-
2011
- 2011-11-23 TW TW100142885A patent/TWI610224B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5517651A (en) * | 1993-12-29 | 1996-05-14 | Intel Corporation | Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes |
US5710902A (en) * | 1995-09-06 | 1998-01-20 | Intel Corporation | Instruction dependency chain indentifier |
TW200405201A (en) * | 2002-08-28 | 2004-04-01 | Advanced Micro Devices Inc | Scheduler for use in a microprocessor that supports data-speculative execution |
US20090150890A1 (en) * | 2007-12-10 | 2009-06-11 | Yourst Matt T | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
Also Published As
Publication number | Publication date |
---|---|
TW201322122A (zh) | 2013-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2783282B1 (en) | A microprocessor accelerated code optimizer and dependency reordering method | |
US10521239B2 (en) | Microprocessor accelerated code optimizer | |
KR101842550B1 (ko) | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 | |
CN108108188B (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN108376097B (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
US8046563B1 (en) | Virtual architectures in a parallel processing environment | |
CN109074260A (zh) | 乱序的基于块的处理器和指令调度器 | |
US20130339711A1 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
CN108885551A (zh) | 存储器复制指令、处理器、方法和系统 | |
US9588769B2 (en) | Processor that leapfrogs MOV instructions | |
TWI610224B (zh) | 微處理器加速編碼最佳化器 | |
TWI512613B (zh) | 多引擎微處理器之加速編碼最佳化器 | |
TWI506548B (zh) | 微處理器加速編碼最佳化器與相依性重排序之方法 | |
US11977896B2 (en) | Issuing a sequence of instructions including a condition-dependent instruction | |
US11347506B1 (en) | Memory copy size determining instruction and data transfer instruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |