TWI352927B - System and method for handling exceptional instruc - Google Patents

System and method for handling exceptional instruc Download PDF

Info

Publication number
TWI352927B
TWI352927B TW093129526A TW93129526A TWI352927B TW I352927 B TWI352927 B TW I352927B TW 093129526 A TW093129526 A TW 093129526A TW 93129526 A TW93129526 A TW 93129526A TW I352927 B TWI352927 B TW I352927B
Authority
TW
Taiwan
Prior art keywords
instruction
cache
tracking
group
instructions
Prior art date
Application number
TW093129526A
Other languages
English (en)
Other versions
TW200517955A (en
Inventor
Mitchell Alsup
Gregory William Smaus
James K Pickett
Brian D Mcminn
Michael A Filippo
Benjamin T Sander
Original Assignee
Globalfoundries Us Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Globalfoundries Us Inc filed Critical Globalfoundries Us Inc
Publication of TW200517955A publication Critical patent/TW200517955A/zh
Application granted granted Critical
Publication of TWI352927B publication Critical patent/TWI352927B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Description

^27 九、發明說明: 【發明所屬之技術領域】 本發明係關於處理器之筇 之處理器。 。。之錢,尤係關於具有追縱快取 【先前技術】 在處理器中所執行之指令έ 列。爲碼成為壹及零之序 夕J對於某些處理器架構,指令 諸如拉中叙 乂固疋的長度做編碼, 渚如特疋數目的位元組。對於 ’ 指令之長度可予改嫩。兮0 、匕木構,诸如Χ86架構, 于改义。s亥χ86處理哭架棋—致 的指令隼f音卽扣八隹士 处里木構疋義的可變長度 •^曰7本(思即指令集中之不 ^ 數目所宏羔山、 7乃错由不同的位元組 数目所疋義出),例如,8〇386及 、且 用在1 $ i ς 處理态之後續版本使 用在1至15位兀組之間的位元組 便 具有運瞀碑,兮M s 疋義特疋的“令。指令 π % W喝’戎運异碼可以 位元組可以加入ιν —装, 芏2位兀組,並且額外的 J以加入以疋義位址模式、 指令之額外㈣節。 k减較待執行之 在某些處理器架構中,每個指 _ 成為-個或-個以上之較簡單的運曾订之別可以解碼 以包含存取暫存器重新更名對映以:^碼一個指令亦可 邏輯暫存器所對映的實體暫存器及;;在該指令中之每個 儲存該指令之結果。醫。。及/或以分配實體暫存器 ♦曰令可以部分依據在該處理器 測而提取^南m。。 1 所產生之分支預 至處理裔之解碼部分内。通 提取之相办n4 项吊’該處理器之指令 促取之頻見及解碼部分可以決定是 執行週砷翔η β X + Μ執行核心在母一個 、功期間疋完全使用的。因此, 取好能夠在該處理器 9269] 5 1-352927 【實施方式】 雖然本發明易於實施各種修正及替代形式’本發明之 特定的實施例藉由在該圖式中之例子而作呈現並且在此將 作坪細描述。然而’應該瞭解的是對於本發明之圖式及詳. 細說明並非意在限定本發明於所揭示之特定的形式,而相 反地’本發明是在於涵括落在由該附加的申請專利範圍所 定義之本發明之精神及料之内之所有的修正、等同及替 代。應該注意的是本標題僅用於組織化之目的並且並非意 在,用於限定或說明該描述或申請專利範圍。再者,應該φ 注意的是該文字“可以(may)”在本申請案全文中是允許的 s心(,、,曰在有、旎夠的意思),而非強制的含意(意即必須 (must))。該名詞“包含(include),,及該“包含,,之衍生詞意指 ^ 5仁非限疋於。該名詞“連接(connected),,意指“直接 地或非直接地連接”,並且該名詞“連結(c〇up】ed)”意指“直 接或非直接地連結”。 第1圖為包含於處理器100之一實施例内之邏輯組件籲 之方塊圖。處理器100係組構成用以執行儲存於系統記憶 體200内之指令。很多這些指令係執行在儲存於系統記憶 體200内之資料上,該系統記憶體2〇〇可以是實體分佈於 整個電腦系統上並且藉由一個或一個以上之處理器】所 存取。在某些實施例中,該處理器1〇〇可相容於χ86架構。 處理森]00可以包含指令快取! 〇6及資料快取i 28。 處理态1 00可以包含連結至該系統記憶體2〇〇之預先提取 單元]08。預先提取單元ι〇8可以預先提取來自該系統記 92691 1-352927 憶體200以儲存在指令快取1〇6内部之指令碼。在一實施 例中,預先提取單元108可組構成用以從該系統記憶體2〇〇 捽發程式碼進入指令快取1〇6内。預先提取單元⑽可以 使用各種特定程式碼預先提取技術及演算法。預先提取單 元⑽亦可以提取來自指令快取1〇6之指令及來自追縱快 取160之追縱進入發送單元1〇4心指令可以從指令快取 1〇6提取以回應於在追縱快取16〇内逸失之特定指令位 #ai&ώ 可以從系、統記憶體提取以回應於在 才曰々快取106内逸失之特定位址。
發送單元1〇4可組構成用以接收來自指令快取⑽之 ^及可組構成用以接收來自追㈣取i6G ==令。該發送單元〗。…包含解碼單元2 取⑽所接收之指令。該發送翠元ΠΜ 亦了/匕3虽處理微碼指令時而使用之微碼單元。 ,發送單元1()4係組構成用以發送解碼的指令給 〇口 11 8。一 個或 一 jrgi ... , 收來自發r 排程器118可以經由連結以接 x早701〇4所發送的指令及發出指令給一個戋 :亡,核心124。執行核心124可以包含二 心124所產生之姓要叮7 /儲存早兀126°由執行核 果::使用作為用於後續發出指令之運算元數值二;; 至暫存器檀案116。 個發出的二該退返仔列可組構成用以決定每 士出的拐々何時可以隱退。 9269] 9 Γ352927 B广、取106在由發送單元1〇4收到指令之前可以斬 時地儲存指令。指令碼藉由從該系統記憶體2〇〇透過預^ 提取单兀108預先提取程式碼而可以提供給指令快取 1〇6。指令快取106可以以各種配置(例如集合聯合… 聯合或直接對映)而實現。 70王 Π在此所使㈣’該名詞指令通常可以意指未解碼 的、。Ρ刀解碼的及完全解碼的指令。部分及完全 : 令亦可以稱作為運算。例如,未解碼的指令可以藉由^ 早兀140描述作為受到解碼成為一個或—個以上 接 =^:'124内執行之㈣運算。= 出包含可猎由該執行核心124執行之位元 了=輸 以及運算元位址資訊、即時資 ’开之讯號 包含暫存器之更新之指令時,該發送單元 田接收 暫存器檔案116内部之軔存可以保留在 〜v V 一 a存态位置以儲存推測暫存哭壯能 (在另一個貫施例中,重新定 口。狀心、 或一個以上夕田认—y 友衝-了以使用以儲存—個 上之用於母個暫存器之推 對映可以轉譯來源及目的運算元之邏輯暫存:二暫二器 ,器名稱《促使暫存器重新命名。二== 派或未分派案n6内部之暫存器何者目前為已分 當藉指令由發送單元104處 為暫存器位置,斬在。。y . 守右所需的運算元 重新定序緩衝區曰1 貧訊可以遞送至暫存器對映或 位元邏輯暫存二:在該X86架構中,具有八個32 存。口(例如 EAX、EBX、ECX、£DX、EBp、Esi、 92691 10 1352927 EDI及ESP)。實體暫存器槽案116(或重新定序緩衝區)包 含用於,變這些邏輯暫存器之内容之結果的儲存,而允許 脫序執仃。在暫存器稽案116内之實體暫存器可以分派以 儲存修正其中—個該邏輯暫存器之内容之每個指令的結 ^因此在特定程式之執行期間之各種位置處,暫存器 =116(或者在另—個實施例中,重新定序緩衝區)可以具 A -:或-個以上含有給定邏輯暫存器之該推測執行的内 谷之暫存器。 暫存f對映可以指定實體暫存器給定義成用於指令 算元之特定的邏輯暫存器。暫存器檔案可以 暫/疋給定義成為在給定的指令中之來源運算元的邏輯 六I裔之一個或一個以上之預先分配的實體暫存器。該暫 映可以提供標籤給最新指定給該邏輯暫存器之實體 =。此標籤可以使用於存取在該暫存器槽案116内之 =异元的資料數值或用於接收經由傳遞在該結果匯流排 置之該資料數值。若該運算元符合記憶體位 注果可以透過載入儲存單元126而提供在該 排(用於傳遞及/或儲存於暫存器樓案116之内 時。之上。當遠指令藉由其中一個該排程器118發出 、’運异兀資料數值可以提供給執行核心124。需要:主咅 提個實施例中,當指令發送時,運算元數值可: 杈供給對應的排程器118(而非t 應的執行核心124)。 “發出時,提供給對 第1圖之該處理器100支援脫序執行。退返符列 π 92691 1352927 102(或者另外,重新定序緩 及耷入、璽瞀♦ 4広 。)了 ^保持用於暫存器讀取 • t广之该原始程式順序之追蹤、允許推測指令執行 及为支錯㈣㈣復騎進精確聽 '退返佇列102可以吝吐相, 社很夕貝知例中’ ⑽了以產生類似於重新定 而,不像典型的重新定序緩衝區,退返力匕提 數值儲存。在另-個實施例中,退返仵列t 可以產生更加類似於重新定序緩衝區之功 供用於推測暫存哭狀能$倥 ^ b亚且亦錯由提 κ八 叙料之資料數值而支援斬存哭會 新命名。在某些實施例中,退返件列1〇2可以以2 = 配置方式而實現,其中當運了出 衝區之“底部(b〇U〇m),,,因此玄運算移至該緩 用於新的登錄之空間。當指令 之,㈣)”處產生 在曰存。。铋案116内解除分配暫存器, 要儲存推測暫存器狀態,該 子二逐不再# 暫存器對映而顯示那一個暫存哭目」/2然後提供訊號給 在暫存哭#幸m “ 是閒置的。藉由維持 ,暫存4案116内部之推測暫存 貫施例中,在重新定序緩衝區 在另一個 指令是有效的,若分支預測是:正:)的直到= 峨之 路徑之推測執行的指令結果 二預測的 無效的。 仔田案1I6内可以是 提供在發送單元104之輸 時資料可以傳遞至-個或一個以上運算及即 意如同在此所使用的,排程哭 σ 應5亥注 行及發出即Γ 用以偵測何時指令已待執 …出即g令給一個或一個以上之執行單元。例如, 92691 12 ,留站(reservatlon statl0n)為排程器之—種形式。每個排程 器11 8可以能夠保留指令資訊(例如,位元編碼的執行位= 以及運算元數值'運算元標籤及/或即時資料)用於數 待發出至執行核心124之待決指令。在某些實施例中,每 二固排程n m可以不提供運算元數值儲存。相反地,每個 $程器可以監測發出的指令及在暫存器槽案ιΐ6内既有之 :,以決定何時運算元錄料#由執行核心】24(從暫存 ^案或結果匯流排13〇)讀取。在某些實施例中,每 個排程态118可以盘預吟的 _ /、預》又的功此性早兀(例如整數單元、浮 點早7L、載入儲存單元笤笼、β / I—— 仔早兀及/或執行核心124結合。在 的接收器。 ⑴可以發出指令給超過-個 排程器11 8可暫時儲存藉由哕鈾 運瞀 仔稭由°玄執仃核心124所執行之 何;;二 出至執行核心124以供執行,俾回應任 可即時獲得以供執行的運算元之數值。因此,執 二之順序可以不同於該原始程式指令序列之順序。 單元;ΓΓΓ每個該執行核心124可以包含功能性 二=如用以執行加法及減法之整數算術運算 矛夕疑轉' 邏輯運算及分支運算。洋點 内以供浮點運算。-或一個以上之=早兀亦可以包含在 成用以#/ 上之忒執行核心124可組構 成用以執行用於藉由載入儲存單 存記憶體運算之位址產生。 &彳了之載入及儲 該執行核心124亦可以提供關 之資訊給分支預測單元,32=::分支指令之執行 水自遠執行核心124之資 92691 13 1-^52927 訊顯示分支預測是不正確’該分支預測單元132可以清除 接續於已經進入該指令處理管線之錯誤分支之指令並且重 新私向預先提取單元i08。該重新指向預先提取單元^⑽. 接著可以攸指令快取i06、及/或系統記憶體2〇〇開始提: 取°亥正確的指令集。在此種狀況下,在該錯誤分支指令之 後所發生之該原始程式序列内之指令之結果可以捨棄,包 含推測執行及暫時儲存於載入儲存單元126及/或暫存器 植案116内之結果。 右更新暫存态數值,在執行核心i 24内之元件所產生φ ^結果可以輸出在該結果匿流排13〇之上而至該暫存器槽 案116。若更改記憶體位置之内容,在執行核心124乂部田 所產生之結果可以提供給該載入儲存單元!%。 載入儲存單元126提供介面於執行核心124及資料快 取128之間。在一實施例中,載入儲存單元126可與-載 堵存緩衝區配置’该載入儲存緩衝區具有數個用於待決 載入或儲存之資料及位址資訊之儲存位置。該載入儲存單癱 兀⑶亦可以執行用於載入指令對照待決儲存指令之附屬 性確έ忍以確保資料一致性之維持。 /資料快取128為用以暫時儲存在載入儲存單元126及 該系統記憶體200之間轉移之資料的快取記憶體。類似於 上文所描述之該指令快取1〇6,該資料快取128可以以各 種特定的記憶體配置而實現’包含集合聯合配置。此外, 貢料快取Η)6及指令快取128在某些實施例中可於單一化 的快取中實現。 u 92691 1352927 退返〇列1G2可以提供雄認程式追縱之訊號予追縱產 裔17〇。追蹤產生器170亦可為填覆單元。追蹤產生器 W可將藉由退返仔列1()2所確認之追蹤存人 ⑽ 内。每個追縱可以包含儲存在順序而非程式順序内之指令 2且該指令為部分數個不同的基本區塊。基本區塊為所有 曰7將會執行或所有指令將不執行之指令集。換言之,若 任何在基本區塊内之指令執行時,在該基本區塊二之所有 該其餘的指令亦將會執行。基本區塊之例子為剛好在分支 ::令之後開始及隨著另一個分支指令而結束。儲存在追蹤 快取160之内的追縱在某些實施例中可以包含解碼或部分 =碼的指令。如同在此所使用的’ “追縱,,為儲存在該追縱 快取⑽内之單-追蹤快取登錄(例如單—列或線路則 之指令群組。在登錄内之所有資訊可以在同—時間存 如回應於追蹤讀取週期之宣告)。應該注意的是在另一每 ::送追敵-產t_V7〇可以連結至該處理器之前端(例如在 5亥發送早兀之削或之後)及用以產生追縱以回應於所 及/或發送之指令。 預先提取單元108可以從追縱快取16〇提取指令進入 發送單元1〇4。從追縱快取16〇提取指令,相對於從7 快取H)6提取’可以提供跨越分支邊界之改良的提取^ 能。例如’若分支是經預測而予採用,在該預測採用師 内之指令可已儲存在如同於追蹤快取]6〇之分支内力工 同的追縱内。此外’在指令是以至少部分解料式儲目 追縱快取160中之實施例内’來自該追縱快取之提取指令 9269] ]5 1352927 可允許該解碼單元140成為至 取指令之狹4分旁通,以使用於該快 A 士 延早兀之數目減少。因此,當執行追蹤超過一 :二:,縱快取160可使用以部分(或完全地)解碼該快 取才曰々所耗時間攤列於數個執行疊代。 應該注意的是除了在此所呈現的組件之外,處理器 00可以包含及/或連結至很多其它的組件。例如,額外 Γ Γ取,層可以包含(内部及/或外部連結至處理器10。) :理0 100及系統記憶體200之間。同樣地,處理器⑽ 貫施例中可以包含組構成用以控制系統記憶體200 之^合的記«控制ϋ。此外,在邏輯組件之間之内連接 在貫施例之間可以作變化。 技縱快取· 第2圖依據一實施例說明例示性的追蹤快取。該 追縱快取⑽可以包含數個登錄162β每個登錄162儲存/ 包含數個指令165之追m。在追縱内之該指♦ 165可以不 儲存於程式順序内。例如’當採用該分支時(相對於依循在 程式順序内之之分支之指令)’登錄162可以儲存分支指令
及,該分支之目的之指令。在某些實施例中,該指令MS 在每個追縱快取登錄162内可以以至少部分解碼的形式而 儲存。如同在此所制的,該名詞“追縱”是使用於意指儲 存在單一追蹤快取登錄162内之一個或—個以上之指令 群組。 返回參閱第1圖, 提取之指令串列之處理 應邊注意的是從該追蹤快取所 可以不同於從指令快取106所提取 9269] ]6 1352927 之指令串列。來自指令快取1〇6之指令串歹 指令邊界之資訊,卽佶扣八 匕3確6忍 也件運使 解碼成為—個或—個以上之 、 r之後。讀邊界資訊可以藉由退返 以決定對應於特定指令之運算何時可以隱退 返件歹4102以原始的程式順序操作以退返運算\ = 相同的指令之運算可以在相同的時間隱退。 ‘… 相反地,若該指令在儲存於追縱快取16(^之前已婉 解碼及/或修正(例如藉由結合指令以婵 、二 之内部之物⑼,來自㈣絲⑽二1^取160 指令邊界之資訊。因此,退二 ::在運行表面上之此類指令串列内之指令。例如,在 些=例中,退返仵列102可以不退返包含在: 何▲令,直到在該追縱内之所有指令得予退返。 在某些追縱快取型處理器之内可能產生之並中 問題在於某些指令’在此稱為“特殊,,指令,可能員 的處理’該處理影響該些指令何時可以退返。由於在= 同的追縱中如同異常指令之其它指令(包含在程式順序; 乂=產生之指令)之退返可以視準備好退返之該異常指令 而定,此類異常指令可以阻擔在該追财之其它指令之7 在某些情況下,若該異常指令之不退返,則可阻擔包 3於,玄相同蹤内之較舊的運算之退返。此外,若異常指八 由於缺乏來自該追縱快取所提供之指令邊界資訊而阻^ 該相同的追縱内之其它指令之退返,在該追縱内之所有 \ 非可退返的指令(及在程式順序中,已經準備好發送之任^ 9269】 】7 較新的指 行。 令)可能必須從該指 令快取重新提取並且重新執 於非二或中斷之指令。異常指令相對 行核心124::此會化費明顯較長時間來完成。例如,執 指令。相 至二個執行週期内可以完成典型的非異常 之執行週期二異Γ令可能須10倍(或更多)於用以執行 對所二斷。具有至少某些異常指令, 獨立㈣里4 亥指令(在程式順序中)能夠 如同上ί所!退返可能是Μ的或甚至是需要的。 或矣车 k及的,在追蹤中缺乏指令邊界資訊可能減少 此 不同的指令於該相同的追縱中獨立退S之能力。因 該追縱^中之異常指令包含於其它指令可能最後造成在 邊界資訊,所有該指令必須從指令快取重新提取以獲得該 盆為了減J/異常指令阻擋其餘指令之退返及/或造成 其匕扼令捨棄、重新提取及重新執行之可能性,追蹤產生 m组構成用則貞測異常指令及不儲存在包含任何其它 指令之追縱内之此類指令。在某些實施例中,追縱產生器 二可以儲存在僅包含該異常指令之追蹤中所偵測到的異 #指令。雖然此類配置可能降低追蹤快取儲存效率,然其 得從該追蹤快取繼續提取而非造成在該指令快取1〇6及追 蹤快取〗60之間提取的切換。在其它實施例中,追蹤產生 态1 70可以完全不儲存在追蹤快取16〇内所偵測到之異常 指令,造成該異常指令一直從指令快取1〇6提取。追蹤產 92691 18 生益170為用於在追蹤快取内邻 令群組之工具的例子。^之切快取登錄中儲存指 备始追蹤產生器170藉由檢驗用於儲存在該追蹤快取内之 :::選指令的特定運算碼、運算元、位址模式及Si 俨八之;:偵測出異吊指令。在-實施例中,確認潛在里常 1曰C特性可以程式化於該追縱產生器m之内。需二 :::等實施例中,該追縱產生㈣。可組構成用以: 二:確認特定形式的指令為異常指令,即使料形式: :二能是可執行的而不需要特別的處理。 確二。=桿Γΐη4!在指令解碼㈣可以產生 入 丁 母個‘籤可以透過該處理器100 ί士 為異常的之解碼指令而遞送。除能(Μ 除了)獨立地決定解碼的指令是否特殊之外 170可視藉由解碼單元Μ。戶斤產生之標籤而定以二二 指令。因此,追蹤吝吐。。知織而疋以確,忍異常 态170及解碼單元140兩者為用於 偵測在该指令群組内部之異常指令之工具的例子。 旦^f於積!1儲存在該追縱快取160中之指令串列内之 了: 7 “產生杰170可以結束指令儲存於該目前追 (D即使在該追縱内仍有儲存額外指令之空間)。若追蹤 產生S 17G組構成用以在追縱快取⑽内之獨立追縱中儲 存^吊指令’該追縱產生器可以分配新的追縱快取登錄以 玄,常指令。該追蹤產生器no可以儲存下一個指 :中= 個追縱快取登錄内之程式順 灸產生。若δ亥追縱產生器1 7 〇為相反地 92691 ]9 ,且構成用以從該追縱快取 到該異常指令時(除非異當偵測 於該目前追二追=匕售的指令已經準備好健存 R 内5亥追鞑產生器可以僅結束該目前追蹤甘 為式順序中之該下-個非異常指令,該指令 孓"下一個追縱之追縱快取内之候選指令。需 左思的疋该追蹤產生器17〇可以設 、, 蹤内以指示該異常指八為 °…"貝。。"目前追 回應於所提取之追縱二:之指令。因此, 指令快取咖預先提取rt 構成用以從 預先k取在㈣程資訊内所確認之指令。田 此,由於該異常指令係從該追縱快取160排除,該執行串 列將從該追縱快取16〇士刀換至該指令快取1〇6。 某些異常指令不-定能為追蹤產生器170所偵測到。 例如’某些指令每-次執行時,其行為可^不同的/ 料些指令之特性(例如此類指令甚少是異常的),追縱產因 生益17G可組構成用以被動料認指令為特殊者。因此, m常指令可以藉由追縱產生器17〇與其它指令健存在 追縱内。由於在該相同的追縱内之其它指令之阻擔的退 返’為了避免此類異常指令之排除造成問題,重新啟 輯190可以監測退返符列1〇2前一次退返任何運算後,已 經過多少阻擋週期。若沒有運算在時脈週期之預;的數目 内已經退返’重新啟動邏輯19〇可以從指令快取1〇6重新 啟動處理器100之執行。在一實施例中’重新啟動邏輯⑽ 巧·以藉由清除該處理管線及藉由重新提取在處理器丨㈧内 部與該最舊待決的非退返指令開始之指令而重新啟動執 92691 1352927 行。當該指令從指令快取106提取時,關於指令邊界之資 訊將可提供予退返佇歹U 102。因此,若藉由重新啟動邏輯 1 90所偵到之该非退返是藉由阻擋追蹤之退返之異常指令 所造成,從指令快取106提取該指令可以允許該退返佇列 102獨立地退返該有問題的異f指令而不需要非必要地阻 擋其它指令之退返。 某些指令可以是不可重新執行的,並且若該指令從 縱快取⑽而執行、藉由包含在該相同的追縱内之里常指 令之退返所阻擋以及接著因為重新啟動邏輯19〇之運算: 重新執行’此類的指令可能是不正確的。例如,特定負^例 如某些輸人/輸出負載)之效能可以修正所讀取之數值。若 此類指令重新執行,為了 iΑ 一 仃為了要避免可能造成之問題,追蹤產 生為17G可組構成用以確認這些指 在追縱内的異常指令之另-個類別。因此’該 一、“"於不包含任何其它指令(例如-般如同上文所 描述關於異常指令)之單獨追蹤内。 如同某些其它異常指令,—些非可重新執行 :…追縱產…7。所偵測出。例如,載入 : 取系._體2二出間可以存 餘存於追縱内。在該下八可以 暫存器讀取之待性該載人可以是非ς =輸人/輸出 若在該相同追蹤内作為該載入之另個於入仃的。因此, 戰入之另一個指令是異常的(例 92691 2] 丄乃2927 =若另-個指令產生頁面錯誤),該追縱之退返可以延遲 °長的時間以觸發重新啟動邏輯190。然而,這可能令 =無法接文地造成該載人之重新執行。為了避免這種情 —發送單元1Q4或處理器⑽内部之之另—個組件可组 =用以確認在該載人實際地執行之前該以在特定時點 =非可重新執行的。回應於在從追縱快取⑽所提取 部之非可线執行的指令之制,重新啟動 ==可造成該處理器管線受到清除(在該非可重新執 ‘ίΓ行之前)並且從指令快取106重新啟動執行。 追跑ί从圖說明組構成用以儲存至少部分解碼的指令之 登錄162之—實施例。在該第从圖之實施例中, 追紙快取登錄162可以儲存多達包含於運算儲存單元 m至=6Η内之解碼及/或部分解碼的指令群組中之八 :件運异。需要注意㈣其它實施例可以 2運算儲存單元166,而允許在每個追縱快取登錄162 内。卩之運算之不同的數目的儲存。 、 在追縱快取錄!62内部之某些運算儲存單元 ㈣予某些形式的運算。例在—實施例中,運算儲存 =二至細可以使用於儲存記憶體運算。同樣地, 存早元麗至細可以使用於儲存資料運算。需 ㈣是其,實施例可以不同地結合某些形式的運算與 某i運异儲存單元(或者並非全部)。 /、 除了包含數個運算储存單元]66之外,每個追縱快取 92691 1352927 錄162亦包含確認標籤164及流程控制資訊168。標籤164 可以類似於在指令快取1〇6内之標籤,允許預先提取單元 108決定給定的運算於追蹤快取16〇内是否是正確或錯誤 的。例如,標籤164可以包含所有或某些該位址位元而確 認在該追蹤快取登錄内部之指令(例如在裎式序順中,該標 籤可以包含儲存在該追縱内之該最早指令之位址)。在某: 實施例中,該標籤可以包含足夠的資訊,該f訊乃指每個 指令之位址(或者至少在每個存在群組内部之該最早的指 令,於下文中作更詳細的描述)可以使用儲存在該追蹤内之 資訊而獨立地確認者。在其它實施例中,只有在追蹤内之 最早的指令之位址可以獲得。 在所述的實施例中,每個追蹤可以包含多達兩個之分 支指令。其它實施例可以包含較少或額外的分支指令於每 個追蹤内。流程控制資訊168可以包含用於包含在該追蹤 内之每個分支指令之標記。視個別的分支之解析度(採用, 不採用)而定,該標記可以是確認控制所應分支至之位址之 指不。因此,流程控制資訊168之每個項目可以結合特定 的分支運算。例如,在一實施例中,在追蹤内之一個流程 控制資訊儲存位置可以結合在該追蹤内之第一分支運算, 且其它流程控制資訊儲存位置可以結合在該追蹤内之第二 分支。另外,該流程控制資訊可以包含確認該流程控制資 訊所結合之該分支運算之標籤或其它資訊。在另—實施例 中,確認那一個流程控制資訊對應於分支 及/或資訊可以與在運算儲存166内之該細; 9269] 23 1352927 存。 度(Granularitv) 如同上文所提及的,在追縱内關於指令邊界之資訊是 有限的。例如,在儲存於追縱内之前,若指令是部分解碼 成為該指令本身的組件運算,在該追蹤内缺乏描述該不同 的指令之資訊可以包含於該追㈣。再者,若在解碼之後, =同的指令之組件運算之組合 '重新定序及/或修正,可 旎使確認指令邊界更為困難。 =在追縱内提供增加的指令邊界資訊,在追縱内之 …曰7可以再細分成為不同的存在群組。追蹤產生哭 二=記儲存在特定追蹤快取登錄内部之每個解二 屬於在該追縱内之特定存在群組。關於在每個存 之經解碼的指令之指令邊界的資訊可能無法獲 該存在群組本身可以創造使得該解碼指令可以 在存在群組邊界上退返。 7 J以 在追縱内之每個谨管 示。每一、軍具有相關聯的存在指 一個運』以與本身相結合的運算在其令 徊連异儲存早兀】66内一 個運曾戶斤屈M f + 子存在指示係確認出每 管群^ .. 在_、,且為在該追縱内之運 ^群組,该追蹤為部分該相 連 Μ ^ φ , ^ j 7基本區塊。例如,在程式 順序中,在該追縱内之㈣及包㈣ 料式 可以包含於1巾袖六 〇 刀支運异之運异 G名万、具中一個存在群 分支iff β # 本身的執行依賴該第一 刀又建_之%析度之運算可以包 , 内。因此,;^ 、另一個存在群組之 存在群_似於基本區塊,因在該㈣的存在 9269] 24 1352927 群組内之運算將全部執行或者全部不執行。存在群組不同 於基本區塊,因在該相同的基本區塊内之運算可以包含於 不同的追蹤内(例如在該基本區塊内之某些運算可以包含 於其中-個追縦内之最終存在群組内並且在該I本區塊内 之剩餘運异可以包含於另—個追縱内之該第—存在群組 中)°因此’在該相同的存在群組内之運算必須是該相同的 品鬼之邻刀,但疋在該相同的基本區塊内之運算可 以不需要是該相同的存在群組之一部分(意即若該基本區 塊超過—個以上之追蹤快取登錄)。 亥存在私不確涊相對於包含在該相同的追蹤快取登 錄内之騎支運算之每—個,運算的程式順序。在第 独^運算並非視在該追縱内之第—分支運算之結果而 二二要,主意!是由於該第一分支運算非有條件的執行, 支料為該第—存在群組之—部分。在該第—存 -分算可以以不同於經由使用以確認發生在該第 开之後的運算之第二存在群組之存在指示而確 :呼第::在視該第一分支運算及第二分支運算(意即包含 在二:在群組内之該最終運算)兩者之結果而定之位 認。存:於群1且内之指令’可以以另-個存在指示而確 儲存在追;同於本身的程式順序之順序而 式顺序(相對於該分.支運算/,時仍決定出該運算之程 之運::者= 指示在允送單元104預測在特定追縱内 在5玄弟一存在群組内之運算(意即非視 92691 25 2在追縱内之第-分支而定之運算)將一直執行(在該追 執竹内之任何運算)。然而,在該第二存在群組内之運管 之執仃(意即視該第-分支而定之運算)視該第_分支之; =定。例如’在其中該追縱產生器17Q包含 ^ ^理管線之後段處的實施例中,運算可依據運算執行之 首 1而儲存於追縱内,以便若該運算隨後再次執行,該運 ;;;從該追縱快取而非從該指令快取所存取。因此,: 儲存,該追蹤内之第—分支之執行為該第一次分支之執 J運該第—分支已採料,儲存在第二存在群组内之 该運异可以是應該執行之 '内之 給發送單元ΠΜ並且用㈣第=右该相稍後提供 “未採用,,,該發逆單=分支之目前的分支預測 之運算不應該執行。若”可該第二存在群組内 \丄, 右4弟一分支並未採用,釺人訪铱 刀運异之該流程控制資訊168亦可開妗預先裎〆 行之指令或追蹤。 η開始預先提取應該執 第3Β圖顯示可以使用一 _ 編碼。該第一存I ^ 之例示性的存在 存在、扁碼,“非條件式存在”, 該追縱内之該第—(在程式順序 用乂確遇在 群組内之運算是非條件式存在 執°>在峻個存在 些運算將-直執行。該第 '右執㈣追縱,這 為在該存在群組内之最 ^且可以包含分支運算成 敢、’X運异(在程式順岸φ )。^ 非視包含在該相同的追縱内運 這二運算 序而儲存。 ^對於彼此在該追㈣可以以任何順 9269] 26 1352927 該次一個存在編碼,“ 在今追縱内之气第-r六 分支”是使用於確認 在紅^内U乐一(在程式順序中)存 是視該第一分支運算之結杲而定,㈣一、Λ 异 前-個存在群組内。需要注 =:刀支運具包含於 群組内之任何運算,在嗜存 疋右非推測執灯在該存在 該第三存在編:,;=且内:所有指令將會執行。 該追縱内之第三(在程式順序中)基本區i二 該追縱内之該第—及該第二分支運 不執行。如同上述,若非推測 ,二广些運具可以 算,在該存在群组内之所有運算將會^行鮮組内之任何運 用存在編碼可 最大數目發生在運瞀隹入 。-刀支運异之 !66。例如,若多達;不使用運算儲存單元 兩個分支運管τ "'可以儲存在追蹤内並且若僅有 可以儲存在追縱内,則若給定的八個運4 合包含二個分支運算時,該追縱可錯存少於八個=开集 此,若最大限制係設在可 、運异。因 目Ν,在該追蹤内 内之分支運算之數 追縱。再者,在t切算之料可以結束該 即使運瞀可^\ : 右特疋運算儲存在追縱内, 存在該:縱内:Π:”算(在程式料中)可以不错 如,以在今子#。^程式呼叫運算可以結束追縱(例 社°亥子転式内部之第一運算可 追蹤内之第一運I走 5子成為在另一個 ” ^之“成為追縱標籤)。同樣 92691 27 1352927 快取產生器170。電腦系統之其它實施例是可能且能推及 的。在該描述的系統中,主記憶體2〇〇透過記憶體匯流排 406連結至匯流排橋接4〇2,並且繪圖控制器408透過繪圖 加速埠匯流排41 〇連結至匯流排橋接4〇2。數個週邊組件 介面裝置412A至412B透過週邊組件介面匯流排414連結 至匯流排橋接402。第二匯流排橋接4丨6亦可供一電子介 界透過延伸工業標準架構/工業標準架構匯流排(EISa/ IS A bus)420而相容於一個或一個以上之延伸工業標準架 構或工業標準架構裝置418。在這個例子中,處理器1〇〇 透過中央處理單元匯流排424連結至匯流排橋接術及連 結至選擇的L2快取428。在某些實施例中,該處理器ι〇〇 可以包含整合的L1快取(未圖示)。 匯流排橋接402提供介面於處理器1〇〇、主記憶體 40:、繪圖控制器彻及連結至週邊組件介面匯流排… ί置Li::當運算從其中一個連接至匯流排橋接402之 定的u 該運算之目標(例如特 1者在遇邊組件介面匯流排414之例子中,兮 目標疋在週邊組件介面pg泣由 幵;丨面匯机排4〗4之上的裝置)。匯ώ 接402遞送該運算給該目/罝)I排橋 藉由唁來、:署·+、Γ* Α 、、置匯〜排橋接402通常從 楮田3木源裝置或匯流排 目擇F m“ 17使用之協夂轉譯運算給藉由該 ㈢如褒置或匯流排所使用之協定。 除了^供介面至用於週邊八 捍準_槿/ &你 、 Jl面匯流排414之工章 ‘準木構/延伸工業標準架構匯流菜 接416可以併入額外 。 弟-匯、•排橋 如入/輸出控制器(未圖 9269] 30 1352927 示),不論是從第二匯流排橋接416外部或與第二匯流排橋 接416整合,亦可以包含在電腦系統400内部,以提供運 算支援給鍵盤及滑鼠422及各種序列及平行埠。外部快取 單元(未圖示)在其它實施例中亦可以連結至在處理器100 及匯流排橋接402之間之中央處理器單元匯流排424。另 外,該外部快取可以連結至匯流排橋接402並且用於該外 部快取之快取控制邏輯可以整合至匯流排橋接402之内。 L2快取428係示為該處理器100之背面組構。需要注意的 是L2快取428可以與處理器100分離,與處理器100整 合至卡匣(例如插槽1或插槽A)内,或者甚至與處理器100 整合至半導體基板之上。 主記憶體200為儲存應用程式及處理器100主要由其 所執行之記憶體。適當的主記憶體200可以包含動態隨機 存取記憶體(Dynamic Random Access Memory,DRAM) 〇 例如,複數組同步動態隨機存取記憶體(Synchronous Dynamic Random Access Memory,SDRAM)或 Rambus 動 態隨機存取記憶體(Rambus Dynamic Random Access Memory,RDRAM)均可適用。 週邊組件裝置412A至412B係用以說明各種週邊裝 置,諸如網路介面卡、視訊加速器、音訊卡、硬式或軟式 磁碟機或驅動控制器、小型電腦系統介面(Sma]】 Computer Systems Interface,SCSI)轉接器及電話卡。同樣地,工業 標準架構裝置41 8係用以說明各種形式的週邊裝置,諸如 數據機、音效卡及諸如通用介面匯流排(BPIB)或攔位匯流 31 92691 1352927 排介面卡(field bus interface cards)之各種資料擷取卡。 繪圖控制器408係用以控制在顯示器426上之文字及 影像之呈現。繪圖控制器408可包括一般在該技藝中已知 之典型的繪圖加速器,以呈現能有效地移轉至主記憶體 200内及由主s己憶體200移轉出之三維資料結構。繪圖控 制器408因此可以是繪圖加速埠匯流排4丨〇之主控者,因 該繪圖控制器408能請求及接收存取在匯流排橋接4〇2内 部之目標介面,藉以取得主記憶體2〇〇之存取。所成之繪 圖匯流排係供應從主記憶體404而來之資料的快速取回。 對於特定運算,繪圖控制器408更可組構成用以產生週邊 組件介面協定處理於繪圖加速埠匯流排41〇之上。匯流排 橋接402之繪圖加速埠介面可以因此包含功能性支援繪圖 加速埠協定處理以及週邊組件介面目標及啟始器處理兩者 之功能。顯示器426為影像或文字能呈現在其上之任何電 子顯示器。適當的顯示器426包含陰極射線管(“cath〇de ray tube ’ CRT”)、液晶顯示器(“liquid crystal display,LCD”) 等等。 應該注意的是,雖然該繪圖加速埠、週邊組件介面及 工業“準架構或延伸工業標準架構匯流排已做為所述之例 子’任何匯流排架構可以依所需而替換。更應該注音的是 電腦系統400可以是包含額外的處理器之多工處理的電腦 系統(例如顯示為電腦系統400之選擇性的組件之處理器 100a)。處理器l〇〇a可以類似於處理器ι〇〇。尤其,處理 器〗00a在一實施例中可以是處理器100之相同複製。處理 92691 32 1352927 器l〇〇a經由獨立的匯流排(如同在第6圖中所示者)可以連 接至匯流排橋接402或者可以與處理器1〇〇分享中央處理 器單元匯流排224。再者,處理器1〇〇a可以連結至類似於 L2快取428之選擇的L2快取428a。 兄广π弟7圖,該圖顯示電腦系統4〇〇之另一實施 例。其它的實施例是可能並可推及的。在第7圖之實施例 中,電腦系統400包含數個處理節點612Α、612Β、612匸 及612D。每個處理節點經由包含在每個個別的處理節點 612A至612D内部之記憶體控制器616八至6i6D而連結至 相對的記憶體614八至6141)。此外,處理節點612八至612〇 包含用以在該處理節點612A至612D之間通訊之介面邏 輯。例如’處理節點612A包含用於與處理節點6ub通訊 之介面邏輯618A、用於與處理節點⑽通訊之介面邏輯 6⑽及用於與另一個處理節點通訊之第三介面邏輯 618C(未圖示)。同樣地,處理節點6i2B包含介面邏輯 _、_及_;處理節點612C包含介面邏輯6观、 6_及6181;及處理節點6咖包含介面邏輯61心既 =肌。處理節點獅經由介面邏輯峨而連結以與 I個輸入/輸出裝置通訊(例如在菊鏈式串接組構中之 至繼)。其它的處理節點可以與其它輸入/輸 出農置以類似的方式而產生通訊。 點⑽至612D係實現用於内部處理節點通訊 現^在本實施例中’該連結以單向線路組而實 (例如,線路624 A用以從處理節點6 i 2八傳送封包至處 92691 33 ⑽並且線路624B用以從處理節點6i2 包,節點612A)。其它組線路624。至 迗封包於其它處理節 ’、用以傳 常,每組線路624可以包二個::,中之說明。通 對應於該池路: 上之資料線路、 !=包類型之一個或-個以上之控制線路。該』3 非^ M合的方切作而詩處理節關之通訊或者以
Hr方式而用於處理節點及輸入/輸出裝置(或匯流 人:至f知架構之輪人/輸出匯流排,諸如該週邊έ且件 介面匯流排或工業標準卒/週邊組件 結传如sm_ 羊木構匯流排)間之通訊。再者,該連 係如圖所不’可以在輸入/輸出裝置 構以非耦合性方彳 和羽鏈式架 節點至另,"運作。應該注意的是從其中一個處理 :節所傳送之封包可以透過-個或-個以上之中 ,丨即點而傳遞。例如, τ 612D之封包可Ί占612八傳送至處理節點
^ ^ f 同於第7圖所示之處理節點612B ^電;:點6沉而傳送。任何適當的遞送演算法均可使 電月旬糸統4Θ0之复它者# /?;丨 示之實施例f Μ φ Ϊ 可以包含比在第7圖中所 貝%例更多或更少的處理節點。 點之包可以以—個或-個以上之位元次數在節 脈線上傳送。位元次數可以是在該對應的時 ㈣虎之上升或下降緣。該封包可以包含用 及==指令封包、用於維持快取耗合性之 及采自表回應探測及指令之回應封包。 除了記憶體控制器及介面邏輯之外,處理節點612Α 34 92691 1352927 至612D可以包含一個或一個以上之處理器。廣泛地說, 處理節點包含至少一個處理器並且可以選擇性地包含用於 與記憶體及其它所需邏輯通訊之記憶體控制器。尤其,每 一個處理器節點612A至612D可以包含一個或一個以上之 : 處理器100之複製。每一個處理節點6〗2可以包含處理器. 1〇〇,如同上文所描述,該處理器100包含發送單元1〇4、 追蹤快取160、退返佇列1〇2、重新啟動邏輯19〇及/或追 蹤快取產生器170。外部介面單元18可以包含在該節點内 部之介面邏輯618 ’以及該記憶體控制器6丨6。 籲 舌己憶體614A至614D可以包含任何適當的記憶體裝 置。例如,記憶體614A至614D可以包含一個或一個以上 之RAMBUS動態隨機存取記憶體、同步動態隨機存取記 憶體、靜態隨機存取記憶體等等。電腦系統4〇〇之位址空 間在記憶體614A至614D間係予分隔開。每個處理節點 612A至612D可以包含用以決定那一個位址為對映至那一 個記憶體614人至614D之記憶體對映,及繼而決定特定位籲 址之比憶體請求應遞送至該處理節點612八至μ之何 者。在一實施例中,對於位址在電腦系統4〇〇之内部之耦 合點為記憶體㈣器616A至616D連結至對應於該位址之 記憶體健存位元組處。易言之’該記憶體控制器616A至 H6D負責確保存取該對應記憶體61从至6抑之每—個 。己U月旦以!·夬取耦合方式而產生。記憶體控制器6! 6 A至 6]6D可以包含用於與記憶體6】4A至614D介面接合之押 制電路。此外’記憶體控制㈣6 A至6 ] 6 D可以包含用^ 9269】 35 1352927 專待記憶體請求之請求彳宁列。 介面邏輯618Ai618L^以包含用於從該連結接收封 包及用於在連結時緩衝所傳送之封包之各種緩衝區。電腦 系統侧可以使用用於傳送封包之任何適當的流程控制機 制例如在一貝把例中’每個介面邏輯6丨8儲存在該介 面邏輯所連接之連結之另—端處的該接收器内部之每個形 式的緩衝區之數目的計數。該介面邏輯不傳送封包,除非 該接收介面邏輯具有閒置的緩衝區以儲存該封包。當接收 的緩衝區藉由向前傳遞封包而閒置時,該接收介面^輯傳 运訊息至該發出介面邏輯以顯示該緩衝區已經是閒置的。 此類的機制可以稱為“附加型(c〇up〇n_based)„系統。 /浐:二輪咖“Μ至6_可以是任何適當的輸入 /別出裝置。例如,輸入/輸出裝置620A至62〇B可以勺 3用於與另—個電腦系統通訊之裝置,該裝置可以盘 一個電腦系統連結(例如網路介面卡或數據機)。再者二 入/輸出裝置620Α^ 620B可以包含視訊加速器、音J 卡、:广戍軟式磁碟機或驅動控制器、小型電腦系心面 (ma computer system ⑽也“ ’ scsi)轉接器及 ’諸如通用介面匯流排或搁位匯 名詞“週邊裝置,,在此是意指同義的。 】出裝置及該 如同在此所使用的’該名詞“時脈週期,,或 其中该指令處理管線之各種行程完成本身任務之:B 隔。指令及計算的數值是藉由記憶體元件(諸如暫存哭或: 9269] 36 1352927 義該時脈週期之時脈訊號而捕捉。例如1 、據该時脈訊號之上升或下_可以捕 對於熟習此項技蓺之人士力―入& 祌办 右之人士在元全瞭解上文之揭示 ”各種變化及修正將變得明顯。該下文的申 應該解釋為涵括所有此類的變化及修正。β乾圍 【圖式簡單說明】 當參酌下列詳細的說明並結合下列的 地瞭解本發明,其中: 7心佳 弟1圖員不處理器之一實施例。 第2圖為依據實施例之追縱快取之方塊圖。 第3Α圖說明依據實施例之例示性追縱快取登錄。 〜第3Β圖為依據實施例可用以判別在追蹤内之每個運 异歸屬之該存在群組的存在編碼之表袼。 〜第4圖為依據實施例在追蹤快取内產生用於儲存之追 縱的方法之實施例之流程圖。 第5圖為依據實施例執行包含$常指令之追縱的方法 之其中一實施例之流程圓。 第6圖係依據實施例以顯示出電腦系統之方塊圖 第7圖為依據另一實施例之電腦系統之方塊圖。 【主要元件符號說明】 10 步驟 12 步驟 14 步驟 16 步驟 20 步驟 22 步驟 24 步驟 26 步驟 92691 37 步驟 30 步驟 處理器 100a 處理器 退返佇列 104 7«6» » »/ 〇〇 一 發迗早兀 指令快取 108 預先提取單元 暫存器檔案 118 排程器 執行核心 126 載入儲存單元 資料快取 130 結果匯流排 分支預測單元 140 解碼單元 追縱快取 162 登錄 標籤 165 指令 運算儲存單元 166 A 運算儲存單元 運算儲存單元 166C 運算儲存單元 運算儲存單元 166E 運算儲存單元 運算儲存單元 166G 運算儲存單元 運算儲存單元 168 流程控制育訊 追蹤產生器 190 重新啟動邏輯 主記億體 266 編碼 電腦糸統 402 匯流排橋接 主記憶體 406 記憶體匯流排 繪圖控制器 410 繪圖加速槔匯流排 週邊組件介面裝置 412B 週邊組件介面裝置 週邊組件介面匯流排 416 第二匯流排橋接 工業標準架構裝置 延伸工業標準架構/工業標準架構匯流排 38 92691 1352927 422 鍵盤及滑鼠 426 顯示器 428a L2快取 612B 處理節點 612D 處理節點 614B 記憶體 614D 記憶體 616B 記憶體控制器 616D 記憶體控制器 618B 介面邏輯 618D 介面邏輯 618F 介面邏輯 618H 介面邏輯 618J 介面邏輯 618L 介面邏輯 620B 輪入/輪出裝置 624B 線路 624D 線路 624F 線路 624H 線路 424 中央處理器單元匯流排 428 L2快取 612A處理節點 612C處理節點 614A記憶體 614C記憶體 616A記憶體控制器 616C記憶體控制器. 61 8 A介面邏輯 618C介面邏輯 618E介面邏輯 618G介面邏輯 6181 介面邏輯 618K介面邏輯 620A輪入/輪出裝置 624A線路 624C線路 624E 線路 624G線路 9269] 39

Claims (1)

  1. 第93129526號專利申請案 年4月1日修正替換頁 十、申請專利範園: P付件3-- h 一種用於處理異常指令之系統,包括: 指令快取; 匕二複數個追蹤快取登錄之追縱快取;以及 連結至該指令快取及該追蹤快取之追蹤產生器; 二 X追蹤產生器係組構成接收藉由該指令快取 之扣^群組而儲存在該複數個追蹤快取登錄之 入 者内,其中,該追蹤產生器係組構成偵測在該指 :存令’其中’該追縱產生器係組構成 H、吊才曰令於不同於任何非異常指令的追縱快取 么錄内。 2·,申請專利範圍第i項之系統,其中,該追縱產生器係 、、且構成以至少部分解碼的形式儲存指令於該追蹤快取 内。 2項之系統’更包括連結以退返執行 心令之退返仔列,其中,該退返㈣係組構成避免從該 追蹤决取&取之任何指令之退S,直到包含在與該指令 相同之追蹤快取登錄内之所有的指令準備好退返。 4·如申請專利範圍第3項<系統,更包括組構成監測自該 退返仔列别一次退返一指令後所經過之週期數目之重 新啟動邏輯,其中,若該週期數目超過臨界數目,該重 新啟動邏輯係組構成清除執行從該追蹤快取所提取之 指令的處理管線及從該指令快取重新啟動執行。 5.如申請專利範圍第4項之系統,更包括組構成發送從該 40 9269]修正版 1352927 __ 第93129526號專利申請案 100年4月1曰修正替換頁 追蹤快取所接收之指令之發送單元,其中,該發送單元 係組構成彳貞測從該追蹤快取所接收之指令群組内部之 非重新執行的指令及提供該非重新執行的指令之指示 給該重新啟動邏輯; _ 其中,回應於該指示,在該非重新執行的指令執行 m,S亥重新啟動邏輯係組構成清除該處理管線及從該指 令快取重新啟動執行。 6. 如申凊專利範圍第2項之系統,更包括組構成發送從該 指令快取所接收之指令之發送單元,其中,該發送單元_ 係組構成偵測從該指令快取所接收之指令群組内部之 該異常指令及提供該異常指令之指示給該追蹤產生 器,其中,回應於來自該發送單元之該指示,該追蹤產 生器係組構成偵測該異常指令。 7. 如申請專利範圍第2項之系統,其中,回應於該異常指 令之特性,該追蹤產生器係組構成偵測該異常指令。 8. 如申明專利範圍第2項之系統,其中,該異常指令為導籲 致中斷或特例之指令。 9·如申請專利範圍第2項之系統,其中,該追蹤產生器係 組構成不儲存具有該異常指令之任何其它的指令於該 不同的追蹤快取登錄内。 10. 如申請專利範圍第2項之系統,其中,該異常指令為非 重新執行的指令。 11. = :清專利範圍第2項之系統,更包括連結以退返執行 & 7之退返仔列’其中’該退返仔列係組構成避免自該 41 92691修正版 1352927 第93129526號專利申請索 100年4月1 .日修正替換頁 追蹤快取所提取之任何指令之退返,直到包含在與該指 令相同的追蹤快取登錄内部之相同的存在群組内之所 有的指令準備好退返。 12. —種用於處理異常指令之方法,包括·· 接收用於儲存在追蹤快取内部之追蹤快取登錄内· 之指令群組; 儲存包含在該追縱快取登錄内之該指令群組中之 一個或多個指令; 偵測在該指令群組内部之異常指令;以及 參 回應於該偵測,儲存該異常指令於不同於任何非異 常指令的追蹤快取登錄内。 13. 如申請專利範圍第12項之方法,其中,該儲存包括以 至少4刀解碼的形式儲存該一個或多個指令於該追蹤 快取登錄内。 .如申明專利fc圍第13項之方法’更包括避免從該追蹤 决取所提取之任何指令之退返,直到包含在與該指令相籲 同之追蹤快取登錄内之所有的指令準備好退返。 15.如申請專利範圍第14項之方法,更包括: ^测自任何指令之退返後所經過之週期數目;以及 右該週,月數目超過臨界數目,清除執行從該追蹤快 取所提取之指令的處理管線及從該指令快取重新啟動 執行。 16·如申請專利範圍第14項之方法,更包括: 積測自該追蹤快取所提取之指令群組内部之非重 92691修正版 42 ill 第93129526號專利申請案 100年4月1曰修正替換頁 新執行的指令;以及 t回應於該非重新執行指令之偵測,在該非重新執行 指令之執行前’清除該處理管線及從該指令快取重新啟 動執行。 如申明專利範圍第13項之方法,更包括發送自該指令 快取所接收之指令,其中,該偵測該異常指令係在該發 送期間執行。 18.如申請專利範圍第13項之方法,其中,㈣測包括回 應於該異常指令之特性,追縱產生器_該異常指令。修 19t申請專利範圍第13項之方法,其中,該異常指令為 導致中斷或特例之指令。 心申請專利範圍第13項之方法,更包括避免任何其它 的指令與該異常指令-起儲存在該不同的追縱快取登 錄内。 21.如申請專利範圍第13項之方法,其中,該異常指令為 非重新執行的指令。 .如申明專利fe圍第13項之方法,更包括避免自該追縱 快取所提取之任何指令之退返,直到包含在與該指令相 同的追蹤快取登錄内部之相同的存在群組内之所有指 令準備好退返。 23.—種電腦系統,包括: 系統記憶體;以及 連結至該系統記憶體之處理器,其中,該處理器包 92691修正版 43 1352927 第93129526號專利申請案 100年4月1曰修正替換頁 指令快取; 包含複數個追蹤快取登錄之追蹤快取;以及 連結至該指令快取及該追蹤快取之追蹤產生器; 其中,該追蹤產生器係組構成接收藉由該指令快取 所輸出之指令群組而儲存在其中一個該複數個追蹤快 取登錄内,其中,該追蹤產生器係組構成偵測在該指令 群組内部之異常指令,其中,該追蹤產生器係組構成儲 存該異常指令於不同於任何非異常指令的追蹤快取登 錄内。 _ %如:請專利範圍第23項之電腦系統,其令,該追蹤產 生器係組構成以至少部分解碼的形式儲存指令於該追 縱快取内。 仏如申請專利範圍第24項之電腦系統,更包括連結以退 返執行指令之退返㈣,其中,該退返❹係組構成避 免自該追蹤快取所提取之任何指令之退返,直到包含在 與該指令相同的追縱快取登錄内之所有的指令 i艮诉。 零 6.如申請專利範圍第25項之電腦系統,更包括組構成龄 測自該退返狩列前-次退返指令後所經過之週期數目 之重新啟動邏輯’其巾’若該週期數目超過 該重新啟動邏輯係組構成清除執行從該追縱快取所提 取之指令的處理管線及從該指令快取重新啟動執行。 27.如申請專利範圍第26項之電腦系統,更包括組構成發 送從該追蹤快取所接收之指令之發送單元,其中,咳發 92691修正版 44 1352927 第93129526號專利申請案 100年4月1曰修正替換頁 送單元係組構成偵測自該追蹤快取所接收之指令群組 内部之非重新執行的指令及提供該非重新執行指令之 指示給該重新啟動邏輯; 其中,回應於該指示,在該非重新執行的指令之執 行前,該重新啟動邏輯係組構成清除該處理管線及從該 * 指令快取重新啟動執行。 28. 如申請專利範圍第24項之電腦系統,其中,該異常指 令為導致中斷或特例之指令。 29. 如申請專利範圍第24項之電腦系統,更包括連結以退離 返執行指令之退返佇列,其中,該退返佇列係組構成避 免自該追蹤快取所提取之任何指令之退返,直到包含在 與該指令相同的追蹤快取登錄内部之相同的存在群組 内之所有指令準備好退返。 30. —種用於處理異常指令之系統,包括: 用於儲存指令群組在追蹤快取内部之追蹤快取登 錄内之裝置; 用於偵測在該指令群組内部之異常指令之裝置;以癱 及 & * 其中,回應於該偵測,該用於儲存之裝置儲存該里 常指令於不同於任何非異常指令的追蹤快取登錄内。八 92691修正版 45 1352927 96年9月6曰修正替換頁
    第4圖 1352927 96年9月6曰修正替換頁
    第5圖 1352927 96年9月6日修正替換頁
TW093129526A 2003-10-01 2004-09-30 System and method for handling exceptional instruc TWI352927B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/676,437 US7133969B2 (en) 2003-10-01 2003-10-01 System and method for handling exceptional instructions in a trace cache based processor

Publications (2)

Publication Number Publication Date
TW200517955A TW200517955A (en) 2005-06-01
TWI352927B true TWI352927B (en) 2011-11-21

Family

ID=34393582

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093129526A TWI352927B (en) 2003-10-01 2004-09-30 System and method for handling exceptional instruc

Country Status (8)

Country Link
US (1) US7133969B2 (zh)
JP (1) JP2007507791A (zh)
KR (1) KR100993018B1 (zh)
CN (1) CN100407134C (zh)
DE (1) DE112004001854T5 (zh)
GB (1) GB2422464B (zh)
TW (1) TWI352927B (zh)
WO (1) WO2005041024A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561882B2 (en) 2016-09-13 2023-01-24 Arm Limited Apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7437512B2 (en) * 2004-02-26 2008-10-14 Marvell International Ltd. Low power semi-trace instruction/trace hybrid cache with logic for indexing the trace cache under certain conditions
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US7568070B2 (en) * 2005-07-29 2009-07-28 Qualcomm Incorporated Instruction cache having fixed number of variable length instructions
US7949854B1 (en) 2005-09-28 2011-05-24 Oracle America, Inc. Trace unit with a trace builder
US8015359B1 (en) 2005-09-28 2011-09-06 Oracle America, Inc. Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit
US7953961B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US7953933B1 (en) 2005-09-28 2011-05-31 Oracle America, Inc. Instruction cache, decoder circuit, basic block cache circuit and multi-block cache circuit
US8370576B1 (en) 2005-09-28 2013-02-05 Oracle America, Inc. Cache rollback acceleration via a bank based versioning cache ciruit
US7783863B1 (en) 2005-09-28 2010-08-24 Oracle America, Inc. Graceful degradation in a trace-based processor
US7987342B1 (en) 2005-09-28 2011-07-26 Oracle America, Inc. Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer
US8019944B1 (en) 2005-09-28 2011-09-13 Oracle America, Inc. Checking for a memory ordering violation after a speculative cache write
US8037285B1 (en) 2005-09-28 2011-10-11 Oracle America, Inc. Trace unit
US8051247B1 (en) 2005-09-28 2011-11-01 Oracle America, Inc. Trace based deallocation of entries in a versioning cache circuit
US7814298B1 (en) 2005-09-28 2010-10-12 Oracle America, Inc. Promoting and appending traces in an instruction processing circuit based upon a bias value
US8499293B1 (en) 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7676634B1 (en) 2005-09-28 2010-03-09 Sun Microsystems, Inc. Selective trace cache invalidation for self-modifying code via memory aging
US7966479B1 (en) 2005-09-28 2011-06-21 Oracle America, Inc. Concurrent vs. low power branch prediction
US8032710B1 (en) 2005-09-28 2011-10-04 Oracle America, Inc. System and method for ensuring coherency in trace execution
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7877630B1 (en) 2005-09-28 2011-01-25 Oracle America, Inc. Trace based rollback of a speculatively updated cache
US7849292B1 (en) 2005-09-28 2010-12-07 Oracle America, Inc. Flag optimization of a trace
US7870369B1 (en) 2005-09-28 2011-01-11 Oracle America, Inc. Abort prioritization in a trace-based processor
US7797517B1 (en) 2005-11-18 2010-09-14 Oracle America, Inc. Trace optimization via fusing operations of a target architecture operation set
CN100444119C (zh) * 2005-12-28 2008-12-17 中国科学院计算技术研究所 一种面向服务体系结构中消息层异常处理方法
US8370609B1 (en) 2006-09-27 2013-02-05 Oracle America, Inc. Data cache rollbacks for failed speculative traces with memory operations
US8010745B1 (en) 2006-09-27 2011-08-30 Oracle America, Inc. Rolling back a speculative update of a non-modifiable cache line
US8074060B2 (en) * 2008-11-25 2011-12-06 Via Technologies, Inc. Out-of-order execution microprocessor that selectively initiates instruction retirement early
CN102360344B (zh) * 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US20220100626A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Monitoring performance cost of events

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3896419A (en) * 1974-01-17 1975-07-22 Honeywell Inf Systems Cache memory store in a processor of a data processing system
WO1993017385A1 (en) * 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
US6167536A (en) 1997-04-08 2000-12-26 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US6018786A (en) * 1997-10-23 2000-01-25 Intel Corporation Trace based instruction caching
US6185675B1 (en) * 1997-10-24 2001-02-06 Advanced Micro Devices, Inc. Basic block oriented trace cache utilizing a basic block sequence buffer to indicate program order of cached basic blocks
US5930497A (en) * 1997-12-11 1999-07-27 International Business Machines Corporation Method and means for generation of realistic access patterns in storage subsystem benchmarking and other tests
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
GB2381101B (en) 1998-04-20 2003-06-25 Intel Corp System and method for maintaining branch information
US6256727B1 (en) * 1998-05-12 2001-07-03 International Business Machines Corporation Method and system for fetching noncontiguous instructions in a single clock cycle
US6339822B1 (en) * 1998-10-02 2002-01-15 Advanced Micro Devices, Inc. Using padded instructions in a block-oriented cache
US6345295B1 (en) * 1999-01-22 2002-02-05 International Business Machines Corporation Conducting traces in a computer system attachment network
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6578128B1 (en) * 2001-03-29 2003-06-10 Emc Corporation Address management for a shared memory region on a multi-processor controller board
US20020144101A1 (en) * 2001-03-30 2002-10-03 Hong Wang Caching DAG traces
US6973543B1 (en) * 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US6823428B2 (en) * 2002-05-17 2004-11-23 International Business Preventing cache floods from sequential streams
US7139902B2 (en) * 2002-10-29 2006-11-21 Broadcom Corporation Implementation of an efficient instruction fetch pipeline utilizing a trace cache
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7143273B2 (en) * 2003-03-31 2006-11-28 Intel Corporation Method and apparatus for dynamic branch prediction utilizing multiple stew algorithms for indexing a global history
US7003629B1 (en) * 2003-07-08 2006-02-21 Advanced Micro Devices, Inc. System and method of identifying liveness groups within traces stored in a trace cache
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561882B2 (en) 2016-09-13 2023-01-24 Arm Limited Apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
TWI820005B (zh) * 2016-09-13 2023-11-01 英商Arm股份有限公司 用於產生及處理指示由處理電路系統所進行之指令執行的追蹤流的裝置及方法

Also Published As

Publication number Publication date
DE112004001854T5 (de) 2006-08-03
JP2007507791A (ja) 2007-03-29
TW200517955A (en) 2005-06-01
US20050076180A1 (en) 2005-04-07
US7133969B2 (en) 2006-11-07
CN1864131A (zh) 2006-11-15
GB2422464B (en) 2007-02-14
GB2422464A (en) 2006-07-26
KR20060108644A (ko) 2006-10-18
KR100993018B1 (ko) 2010-11-09
CN100407134C (zh) 2008-07-30
GB0606179D0 (en) 2006-05-10
WO2005041024A2 (en) 2005-05-06
WO2005041024A3 (en) 2006-05-11

Similar Documents

Publication Publication Date Title
TWI352927B (en) System and method for handling exceptional instruc
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
JP4170292B2 (ja) データの投機的実行をサポートするマイクロプロセッサで用いるスケジューラ
EP1586029B1 (en) Data speculation based on addressing patterns identifying dual-purpose register
US7415597B2 (en) Processor with dependence mechanism to predict whether a load is dependent on older store
US6301655B1 (en) Exception processing in asynchronous processor
CN107003896B (zh) 具有共享事务处理资源的装置和数据处理方法
TW200842703A (en) Branch predictor directed prefetch
JP2005302025A (ja) 複数の未解決命令を追跡するための方法、完了テーブルおよびプロセッサ
EP1504340A1 (en) System and method for linking speculative results of load operations to register values
TWI412918B (zh) 管理電子裝置中之電源的設備與方法
TW475149B (en) Secondary reorder buffer microprocessor
CN105005463A (zh) 具有世代重命名的计算机处理器
US7165167B2 (en) Load store unit with replay mechanism
TWI338249B (en) System and method to prevent in-flight instances of operations from disrupting operation replay within a data-speculative microprocessor
US7979682B2 (en) Method and system for preventing livelock due to competing updates of prediction information
TWI457827B (zh) 具有同時的無序調度之分布式調度
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
JP5093237B2 (ja) 命令処理装置
TW200401194A (en) Method and apparatus for determining a processor state without interrupting processor operation