TWI333629B - Data speculation based on addressing patterns identifying dual-purpose register - Google Patents
Data speculation based on addressing patterns identifying dual-purpose register Download PDFInfo
- Publication number
- TWI333629B TWI333629B TW093101345A TW93101345A TWI333629B TW I333629 B TWI333629 B TW I333629B TW 093101345 A TW093101345 A TW 093101345A TW 93101345 A TW93101345 A TW 93101345A TW I333629 B TWI333629 B TW I333629B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- file
- mode
- entry
- value
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims description 387
- 238000003860 storage Methods 0.000 claims description 115
- 238000012545 processing Methods 0.000 claims description 47
- 230000004044 response Effects 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 34
- 238000006073 displacement reaction Methods 0.000 claims description 28
- 238000012937 correction Methods 0.000 claims description 18
- 230000001419 dependent effect Effects 0.000 claims description 13
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 8
- 235000013399 edible fruits Nutrition 0.000 claims description 6
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 206010011469 Crying Diseases 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000012546 transfer Methods 0.000 claims description 4
- 239000000463 material Substances 0.000 claims description 3
- 238000005259 measurement Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 230000004888 barrier function Effects 0.000 claims description 2
- 230000006386 memory function Effects 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 claims 1
- 239000000872 buffer Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 239000000523 sample Substances 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 4
- 235000013405 beer Nutrition 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 239000003550 marker Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000013078 crystal Substances 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000002689 soil Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 102100036464 Activated RNA polymerase II transcriptional coactivator p15 Human genes 0.000 description 1
- 101100406385 Caenorhabditis elegans ola-1 gene Proteins 0.000 description 1
- TWDJIKFUVRYBJF-UHFFFAOYSA-N Cyanthoate Chemical compound CCOP(=O)(OCC)SCC(=O)NC(C)(C)C#N TWDJIKFUVRYBJF-UHFFFAOYSA-N 0.000 description 1
- 241000269820 Euthynnus affinis Species 0.000 description 1
- 101000713904 Homo sapiens Activated RNA polymerase II transcriptional coactivator p15 Proteins 0.000 description 1
- 229910004444 SUB1 Inorganic materials 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000005034 decoration Methods 0.000 description 1
- 230000006735 deficit Effects 0.000 description 1
- 208000028659 discharge Diseases 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000035622 drinking Effects 0.000 description 1
- RDYMFSUJUZBWLH-UHFFFAOYSA-N endosulfan Chemical compound C12COS(=O)OCC2C2(Cl)C(Cl)=C(Cl)C1(Cl)C2(Cl)Cl RDYMFSUJUZBWLH-UHFFFAOYSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002493 microarray Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 210000003205 muscle Anatomy 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000003389 potentiating effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000010802 sludge Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 210000000952 spleen Anatomy 0.000 description 1
- 239000012484 stacking solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
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)
- Executing Machine-Instructions (AREA)
Description
玖、發明說明: [發明所屬之技術領域] 本發明係關於微處理器之領域 _ ^ ^ ^ ’詳言之,係關於於微 處理器中施行資料推測執行。 [先前技術] 超純量(superscalar)微處理5§益丄 .a 益蜡由同時執行多重指令 和藉由使用最短之與其設計相符人 碴;一 & 〇之可能的時脈週期,而 達成南性能。然而,各指令之間 ., 貧枓和控制流相依性 (dependencies)可限制在任何給定 町0f間可以發出多少個 才曰々。結果,一些微處理器為了能狗 夠達成額外獲得的性能, 而支援推測執行功能。 有一種型式之推測是控制流推,、丨 . 利成推測。控制流推測預測將 進行程式控制(program control)之方@。& v . 7心石向。例如,分支預測可 來預測是否將採用分支。可採用許多種型式之分支預 測,從方法上來區分,範圍從每次只作相同預測之分支預 測,至那些為了根據歷史經驗來作預測而在程式中保留了 複雜的先前分支經歷之分支預測。分支預測可透過硬體最 佳化、編譯程式最佳化、或兼採此二種方式,而促進分支 預測。根據由分支預測機制所提供的制,而可在推測之 情況下取得並執行指令。當最終評估確定了分支指令後, 即可驗證該分支預測。若預測為不正確,則要取消任何根 據此不正確之預測所推測執行之指令。 ^提出之另外—種型式之推測是資料推測。例如,預 測各貝料項之值之值預測,可包含觀察資料中之模式 5 92515修正版 1333629 (Patterns),並根據這些模式而作預測(例如,可藉由觀察索 引計數變數之先前值如何的增加和減少,而預測變數之 值)。位址預測包含預測資料之位址值。另外一種型式之資 Θ推測稱之為3己憶體系統樂觀主義。於多處理器系統中, ,處理器於—致性檢核(c〇herencychecking)完成前,使用 T該處理器之局部快取記憶體來之資料而以推测方式執行 指令時,即會發生記憶體系統樂觀主義。同樣地,另外: 種型式之資料推測可使載入(load)K儲存前於推测之情況 下執行’該儲存於執行該載入時具有未計算之位址,即使 該儲存可儲存資料於該载入存取之相同位址。於所有之這 些型式之資料推測中’最後將評估基礎條件,以驗證或還 原該推測。若該㈣最後為不正確,料再執行使用該推 測資料所執行之指令(例如,使用更新之和/或非推測之資 料)。 —因為推測允許執行繼續進行,而不必等待相依性檢核 之:成,右從正確推測所獲得的性能超過了由不正確推測 所損失的H忐.,則可達成顯著的性能增加。因此,希望能 夠於微處理器中執行資料推測’並對於錯誤的推測提供有 效的恢復機制。 α Θ 許夕的處理器要求於操作(〇perati〇n)中可取用主 體之:之4 “堆疊,,之一部分。早期的χ86微處理器當: Φ和中斷時’使用堆叠來儲存狀態資訊。可使用堆疊 •M ack segment)和堆疊指標p〇inter)(ss:sp 或 μ : ESP)暫存器對’而存取於主記憶體之堆疊部分内之記憶體 6 92515修正版 1333629 位址。16位元SS(堆疊段)暫存器定義包含堆疊之主記憶體 堆疊部伤之中之基礎位址(亦即,堆疊之“底部,,位址)。 16位元SP(堆疊指標)暫存器可提供目前“頂端,,堆疊距 離基礎位址之偏置。最新的x86微處理器具有32位元 ESP(擴展堆疊指標)暫存器。 堆:使用為後入先出(last in,first 〇ut ;簡稱為lif〇) 儲存機制。儲存頂端為包含最近儲存於堆疊内資料之儲存 位置。資料被“推’’至堆疊(亦即,儲存於堆疊頂端)並從 堆疊“取出(popped)’’(亦即,從堆疊頂端移去卜當將資料 推至堆疊上時,通常ESP暫存H減值^換言之,㈣暫存 器-般從基礎位址以向下方向生長。當自堆疊取出資料 時’該移動之資料是最近推至堆疊之資料。 該等暫存器可用來
χ_8 6架構包括相當小量之暫存器 儲存於軟體程式執行期間所處理售
罔此希望加速對主記憶體之堆疊 之存取為相當地慢。 之存取。 可藉由匹配句,合於不m榀νΛ·丄
92515修正版 結(link)暫 各種貫施4 執行核心 7 =之登錄項(entry)e若記憶體操作(亦即,載入 儲存於記憶體中位址值之操作)之定址 錄項中之定址模式,則可配置記憶體檔.案成將:二 別之身枓值連結到記憶體操作之推測 定址模式包括邏輯暫存器之識別# =•作之 作之定址模式是否匹配儲存於登錄項;::判二憶體操 配置記憶體檔案成預測正予指定之邏輯暫:址 而可 目的用之暫0邏㈣存器是否為一般 記憶體操作之;—=ΓΓ框指標暫存器。當執行依附 結果。 呆作時’可配置執行核心以存取推測 2 #實施例中’若記憶體標 作之定址模式中之遵鈕蘄产w «匕己隐體插 存器,則記恒體= 係正用來作為堆疊框指標暫 配儲存於登錄項中之定 ^體才呆作,定址模式並不匹 邏輯暫存器係正用來作S:&之,右d憶體檔案預測 憶體操作之定址槿t 曼目的用之暫存器,則假使記 則記憶體檑案可判=4t儲存於登錄項中之定址模式, 項中之定址模飞4入知作之定址模式匹配儲存於登錄 定址模式中之:輯:”槽案預測包含於記憶體操作之 器,則記憶體檔案亦可用來作為堆疊框指標暫存 憶體操作之定址模 置成不分配新的登錄項以儲存記 器正用來作為然而,若記憶體檔案預測邏輯暫存 定址模式不相等於性六 暫存器,則假使記憶體操作之 檀案可配置成分配錄項中之定址模式,則記憶體 ,且錄項以儲存記憶體操作之定址模 92515修正版 8 1333629 式0 於許多實施例中,記憶體檔案可包括幾個登錄項。可 配置記憶體檔案,若該記憶體檔案預測邏輯暫存器係正用 作為堆疊標案指標暫存器,則判定記憶體操作之定址模式 並不匹配儲存於任何登錄項中之定址模式。 於一個實施例中,記憶體檔案可配置成回應偵測到呼 叫或進入指令而預測邏輯暫存器係正用來作為堆疊框指 標。記憶體檔案亦可配置成回應偵測到返回或離開指令而 預測邏輯暫存器係正用來作為一般目的暫存器。 於另外的實施例中,記憶體檔案可配置成預測邏輯暫 存盗係如何藉由追蹤目前呼叫深度而正被使用。記憶體檔 案可配置成回應偵測到呼叫指令而增加 回應偵測到返回指令而減少目前呼叫深度::了=值: 其他所有值可指示由於遭遇到一個或多個次常式呼叫,目 前之次常式呼叫深度。登錄項可儲存相等於當分配登錄項 後之目前呼叫深度值的呼叫深度值。若當處理記憶體操作 時之目前呼叫深度之值不等於儲存於登錄項中之呼叫深度 值,則可配置記憶體檔案成判定記憶體操作之定址模式並 不匹配儲存於登錄項中之定址模式。若當處理記憶體操作 時之目前呼叫深度之值相等於錯存於登錄項中之呼叫深产 值,而若記憶體操作之定址模式相等於儲存於登錄項中: 定址模式,則可配置記憶體檔案成判定記憶體操作之定址 模式匹配儲存於登錄項中之定址模式。若當處理記憶體 作時之目刖呼叫深度之值不相等於儲存於登錄項中之呼叫 92515修正版 9 1333629 冰度值’可配置記憶體檔案以分配新的登錄項來儲 體操作之f址模式和館存當處理記憶體搡作於新的登錄^ 中時之目前呼叫深度之值。若儲存於登錄項中之^ 識別邏輯暫存器和若當處理操作時之目前呼叫深产之2 等於儲存於登錄項中之啤叫深度值,則回應分^摔作而目 可配置記憶體檔案成使該登錄項無效,且當執行节=而 :喿1乍時修改邏輯暫存器之值。然而,回應於分派二:之 ::處理操作時之目前呼叫深度之值不相等於儲存於 項中之呼叫深度值,則記憶體槽案可不使 益、亲 於-些實施例中,記憶體槽案可追縱與堆叠關二 址模式和與堆疊無關之定址模式。例如,於一個且=之疋 記憶體檔案可包括錯存與堆疊有關之定址模式之登鋒項 置記憶體檔案成當判定操作之定址模式是否=存 於登錄項中之i堆最古M〜ώ匕配儲存 ^ /、且有關之疋址模式時,使用一個機制以 補该堆疊指標之調整。例如,回應分派之操作而可 憶體檔案成藉由修改儲存於 。己 指標之調整,且當執行…中之位移而補償至堆疊 值。或可取而代之,可二作時修改堆疊指標之 址模式調整值施加於新模式調整值和將定 之定址模式與儲存於登錄項中之盘堆1有^後峰新操作 而可配置緣體檔案成補償堆疊指標:調整,…式, 於一些實施例中, 案。若操作之定址模式二’ i'隹疊檔案和記憶體檔 中之—之定槿、’不匹配儲存於堆疊檔案登錄項t 、式’和若操作之定址模式包括邏輯暫存器 92515修正版 10 丄幻3629 操;乍之!!則可配置堆疊檔案成分配—個登錄項以儲存該 二錄《址模式。記憶體㈣亦可針對相同之操作而分配 。於另外的實施例中’記憶體檔案可依於預測邏輯 標:::否指定為一般目的用之暫存器,或者為堆疊框指 荦存器,而選擇地分配登錄項給操作。可配置記憶體樓 堆最二:將記憶體檔案中登錄項分配至任何定址模式包括 暫存器之識別符之操作,同時可配置堆疊槽案成 ;可::登錄項至此等操作時。於一個實施例中,堆疊權 調替Γ疊指標定址模式調整值和堆疊框指標定址指標 :值曰:可配置記憶體槽案成依於堆疊框指標定址指標調 =,有效,而預測邏輯暫存器是否為特定之一般目的 ° ’或堆疊框指標暫存器。 定址法之實施例可包含:預測識㈣記憶體操作之 或為二之邏輯暫存器是否正使用為一般目的暫存器, =二指標暫存器;依於該預測,判定記憶體操作之 之定址匹配早先操作之定址模式;若該記憶體操作 運 2匹配早錢作之定址模式,料由Μ操作之 果、之標記所識別之資料值連結至記憶體操作之推測结 ,从及執行具有依於記憶體操 操作,分j F <、、、°果的運异兀來源之 k记憶體操作之結果係藉由存 料值而得。 ^取由標冗所識別之資 [實施方式] 雖然本發明可容易作各 參考圖式舉例說明之方=:;=代形式’然將用 八而孑田說明本發明之特定實施 92515修正版 11 例。然而,應暸解到舳卢 —— 制本發日月as - 處特疋貫%例之說明並不欲作為限 制本發明為所揭之鞋 — 疋形式,反之,本發明將涵蓋所有 洛於所附申讀專利範圍 斤有 斤界本發明之精神和範圍内 之4飾、專效和替代。應注意的是,標題之目的是僅 2成本說明書’而並非欲用來限制或解釋說明之内容或 办—立 要左思的疋,早子可以(may)’,以 的忍義(亦即,具有潛在性(potent t〇)、能夠(Μ% a ^ to) ’而非以強制的意義(亦即必須㈣叫)而使用於整 個本申請案。“包括(inelude)” 一詞意味著“包括,但不 局限於”。“遠垃, 連接(c〇nnected)詞意味著“直接或著不直 接連接”,而且“叙接r 耦接(coupled) —詞意味著“直接或著 不直接地耦接”。 第1A圖為微處理器1〇〇之一個實施例之方塊圖。微 八器1 00配置用來執行儲存於系統記憶體200中之指 :。許多之這些指令操作儲存於系統記憶體200中之資 料^值得注意的是,系統記憶體·可實際分配遍及整個 電腦系統,並可由一個或多個微處理器】〇〇所存取。 微處理器100可包括指令快取記憶體1〇6和資料快取 記憶體128。微處理器1〇〇可包括耦接到指令快取記憶體 預先取传早元(prefetch unit)i〇g。分派單元(diSpatch mt)1 04可配置成用來接收從指令快取記憶體106來的指 ^ 並分派各操作於一個或多個排程器11 8。一個或多個 排程器11 8可配置成接收從分派單元1 04來的分派操作, 並發出操作至一個或多個執行核心1 24。執行核心124可 12 92515修正版 包括載入/儲存單元226,該截入/參六 ^ ^ 載入/儲存早元126配置以執行 貝枓快取記憶體128之存 丁 子取由執行核心124所產生的結 果可輸出至結果匯流排13〇。 了使用廷些結果作為運算元 值用於後續發出之指令和/或 ^ A保存於暫存器檔案116。退除 分列dequeue)102可輕接至排程ϋ U8和分派單元“ 1〇4。可配置退除件列以決定何時可退除各發出之操作。於 一個貫施例中,微處理器刚可料成與㈣架構相容。 值得注意的是微處理器i⑶亦可包括其他的組件,例如, 微處理器1G0可包括分支預測單糊中未顯示)。 义指令快取記憶體1()6在各指令由分派單元m所接收 之别可暫時地儲存該等指令。可經由預先取得單元⑽自 系統記憶體200㈣取得指令碼以提供至指令快取記憶體 106。指令快取記憶體1〇6可執行於各種配置情況中(例 如,與集合相關聯(set-associative)、完全相關聯 (fiilly-aSS0Ciative)、或直接寫映(direct mapped))。 預先取得單元108可從系統記憶體2〇〇預先取得指令 碼用來儲存於指令快取記憶體1〇6中。於一個實施例中, 預先取得單元1 〇8可配置將從系統記憶體2〇〇來之碼叢發 入指令快取記憶體106中❶預先取得單元1〇8可使用各種 的指定竭預先取得技術和演算法。 分派單元1 04可輸出可藉由執行核心1 24執行之包含 位元編碼操作和運算元位址資訊、立即資料、和/或替換資 料之§fl號。於一些實施例中,分派單元丨〇4可包括解碼電 路(圖令未顯示),用來將某些指令解碼成在執行核心124 13 92515修正版 2可執打之操作。簡單的指令可對應於單一操作。於一些 =施二中’更複雜之指令可對應於多重操作。若操作包含 存盗之更新’則可保留在暫存器稽案⑴内之暫存器位 f⑷如,在該操作之解碼後)以儲存推測之暫存器狀態(於 替代實施例中’可使用重新排序緩衝器以儲存各暫存 盗之—個或多個推測暫存器狀態)。暫存器寫映! 3 4可將來 ^和目=地運算元之邏輯暫存器名稱轉譯成實際暫存器名 ^以為了方便暫存器再命名。暫存器寫映134可追縱在 暫存^檔案U6内之哪個暫存器現在已分配和尚未分配。 第1Α圖之微處理器1〇〇支援奮亂執行(刚心咖 。退除仔列1 Q2可保持追縱對於暫存器讀取和寫 〇呆作原有的㈣序列,允許推測指令之執行和分支錯誤 之恢復二並促使精確的異常(exeeptiQn)。於—些實施 資料值列亦可藉由提供用於推測暫存器狀態之 歹^儲存而支援暫存器更名。於許多實施例中,退除 ^ 102可相似於线排序緩衝 ::::排序緩衝:器,退除一可不二= 值之儲存。於―些實施例中,可用先進先出“ ㈣⑽,其中#操作經驗證後,㈣㈣ = “底部”,因此讓出佇列之mp/移到緩衝盗之 用。當退除操作時,退叶歹//空間供新進入操作使. A 分列102可將暫存器柃安士 之暫存器解除分配,該等暫存:术 :並提供_暫存器寫映13=== 正閒置著。藉由維持在暫存器槽案116中(或於:個替=. 92515修正版 14 丄 施例中’在重新排序緩衝器内)之推測暫 生這些狀態之操作經過驗證後, 心、,直到產 話,則沿著鋩誤、目丨.s 刀支預測為不正確的 者錯誤預測通路之推測執行摔作之蛀里 存器檔案m中變成無效。 丁麵作之、‘果可以在暫 若特定操作所需之運算元為暫存 置資訊可路由到暫存g $ 。 則暫存器位 田幻臀存β寫映134(或至重新排序 例而言,於Χ86架構中…個32位元邏輯;衝二。舉 ⑽、eh EDX m _ = ^, :暫存⑽案116(或重新排序緩衝 只 暫存器内容之結果的儲存文變w些邏輯 器檔案m令之實卜暫^許蒼亂執订。可分配於暫存 暫存器之内容儲存決定修正其中一個邏輯 各不同點上,暫存器檔案116(或者,於一個替代之 重新排序緩衝器)可以有— 、1 輯暫存器之推測執行内容,夕子器包含了某-邏 暫存器寫映134可并〜 暫存器,該邏輯暫存器:::固貫際暫存器至特定的邏輯 m 1 η ° ,疋為用於操作之目的地運算元。 至邏輯暫存器之先寸八:,有一個或多個指定 定為在$ Μ 月』刀-己之貫際暫存器,該邏輯暫存器特 某一知作中之來源運算元。暫存器寫映134可提供 用此:近指定至該邏輯暫存器之實際暫存器之標記。可使 用此^示δ己以存取於暫在哭 經由傳送-果… 6中運算元之資料值,或 「 匯流排130 ’而接收資料值。若運算 …於憶體位址’則運算元值可經由载人/儲存單元 92515修正版 15 1333629 126而提供於結果匯流排(用來結果傳送和/或 器檔案116中”當藉由其中一個 一.子於暫存 時,可提供運算元資料值至執行核:124二=出立操作 於一個替代實施财’當發出操作指令時提=是 值:對應之排程器118(而非當發出操作指令時 之執行核心124)。 ’、對應 了 ::於分派單元104之輪出之位元編碼操作和 枓可路由至一個或多個排程器u ^值彳曰 、 使用之排程器為㈣同時操作當 二忍的是此處所 -,.,t ^ 匕早備好執行和發出準偌 站(”至一個或多個執行單元之裝置。舉例而言,伴留 站0-ervau〇nstation)為一個排程器。 保留 保持住幾㈣待發^執行核心l24y 8可以 訊(例如,位元編碼執行位元和 處理的操作資 或立即資料)。於一些實施例中, π δ 、和 锉在夕、签- 谷排知益118可不提供 錯存之運鼻元值。取而代之,各排程器 "t供 檔案116中獲得的發出操作和 :視可從暫存器 ir M *L 果^ 3^便決定何時能運曾 供執行核心124讀取(從暫存器檔案ιΐ6 : 〇)。於-些實施例中,各排程器118可_:專用二排 扞姑η、、1 〇 ^ 」119聯於專用的勃 摔作/至/ 的實施例中,單—排程H m可發出 才呆作至多於_個的執行核心124。 發出 排程器118可提供將由執行核心 訊的暫時儲存。如前面所敘述之,各=订之知作資 未處理操作之操作資訊。此外,各:二:::118可儲存尚 執行但是也許仍將再發出之操作的摔作儲Γ於已經 J琛作貝訊。當可得到用 92515修正版 16 〜Jozy 於執行之任何所需的 — 、、” 4 算70值時,則將操作發出至執杆如 心12 4。因此,勃斿 山王巩订核 .Λ . 執 作時之次序可與原來程式指令戽w 之次序不同。句全次刺此 '«相7序列 tt _ 3貝#推測之操作可料於排程器118 ^他們變成非為推測時為止,而使得 不正確時可再將其發出。 貝卄推冽為 於一個貫施例中,久# > —^^各執仃核心124可包括配置用來舳 仃加法和減法之整數曾 用來執 曾、条人士4 ’以及位移、旋轉、邏輯運 〇 文探作之組件。亦可包含有浮點單元,以 % 點操作。可gj7署 ., ^ I用’芋 卞了配置-個或多個之執行核心124,以 載入/儲存單元126所施行之用於 ' 之位址產生。 、載入和儲存记憶體操作 …執行核心Η4亦可提供關於狀況分支指令之執行之:, Λ至分支預測單元,而使得若 貝 〇 刀支為錯誤預測時,分古# 測單元可沖洗掉接續於已進入指 6刀支預 支之指令,並將預先取 I &線之錯誤預測分 Α ^ _ 改向。然後該改向之預 先取…1〇8可開始從指令快取 體2〇〇 t取得更正指令組。於此 飞系、'先。己隐 仏此寺情况中,可捨棄掉於锘 誤預測分支指令後於原來寇十& + 果评於錯 曰7佼於原果轾式序列中所發生之指令结果, 包括那些推測執行和暫時儲存於暫存器檔案ιΐ6中之指令 結果。若正要更新暫存器值的 " 只j咔將由執行核心1 24 内組件所產生之結果輸出於結果 禾匯机排130上至暫存器擋 案116。右正要改變記憶體位 、 的話,則在執行核 〜124内產生的結果可提供至載入/儲存單元126β 載入/儲存單元126提供執行核 极〜124和貧料快取記憶 92515修正版 17 1333629 體128之間的介面。於一個實施例中,可配置載入續存單 几具有載入/儲存緩衝器含數個尚未處理之載入或儲 :之資料和位址貢訊之儲存位置。載入/儲存單元上%亦可 ^丁載入指令相對於尚未處理之儲存指令之間相依性檢 核以確保維持著資料一致性。 資料快取記憶體128為快取記憶體,提供用來暫時地 儲存載入/儲存單元126和系統記憶體2〇〇之間傳送之資 枓。如上述之指令快取記憶體1〇6 一樣,資料快取記憶貝體 二ΓΓ種Λ定的記憶體配置施行’包括集合相關的記 二體=…卜於某些實施例中,資料快取記憶體128 快取記憶體1〇6可施行於合成一體之快取記憶體 推叠區域. 由微處理器100所支援之一個邏輯暫存器(例如,於 :=中/如广_暫存器)可識別於記憶體-。 且°β域之基礎絲°另外之邏輯暫存n(例如’ ESP) 可使用為堆疊指標暫存器,以識別堆疊區域之目前的頂 端。可藉由結合堆疊區域之基礎位址與指定於堆疊奸暫 =中堆疊内之偏置,而形成堆疊之目前頂端之位址。丁可 使用此位址以將值推至堆疊,並從堆疊取出值。 某些指令可使得一個或多個暫存器之内容 =疊。例如,於次常式呼叫期間,—個或 現有内容可被推至記憶體之堆疊區域。推進指益之 —堆疊指標,然後將資料值儲存至二該 92515修正版 18 =之堆疊指標所指出之堆疊的頂端。舉例而言 之貫施例中,推進指令可減少推、 之值對應於將推到該堆疊之運算元大值y該減少 修正值以綠在、$ Μ - 里’然後使用該 t正值以儲存運异兀值至堆疊之 ik % ^ ε ^ %同樣地’取出指令 將從堆璺之頂端來之運算元 7 w /{, 至暫存杰或記憶體位置, …、'後修正堆疊指標,使得該 且?日知知向堆疊之新的頂
鳊,以有效地從該堆疊移去取出之運曾 者4 A 時,次常式-開始儲存之值可從:田_人“完成 阳廿心诅J從堆疊取出,並 器檔案U6内之適當位址。 跃设至暫存 二人爷式可以疋程序(pr〇cedure)或令斷處理 (rUpt handIlng)或異常處理(exception-handling)常
:广:執灯★ *式呼叫指令時,-些暫存器值(例如,碼段 值和/或指令指標暫存器值指示返回位址)可以自動 ,儲存。當在呼叫次常式内或於次常式之開始處之包括特 疋的儲存&令’則可儲存其他的暫存ϋ值(例如,於pUSH EAX或M0V【EBP_2】,EAX則儲存於EAX中之值)。 ^回指令可使得某些暫存器值自動地從堆疊取出。當 在人常式中包括取出或儲存指令時,而從該堆疊取出其他 暫存器值。於-些實施例中,微處理器可支援指令,當執 行時,推進所有之邏輯暫存器值至堆疊,和/或從該堆疊取 出所有之邏輯暫存器值。值得注意的是,中斷和異常亦可 引起暫存器值推至堆疊。 吊式了以於堆疊區域内有關聯之堆疊框,其中儲 存傳遞至·1¾ | 4、-V A r- 式之各區域變數和參數。可使用基礎指標 19 92515修正版 暫存器(例如,EBP)作為堆疊柩 用次常式之堆疊框.之基礎位址=次==指向現 = = 該一二 Si 乂人吊式之參數和存取用於今 寸遇主 時=可使用於堆疊框指標之正偏置以存取參數心 時可使用堆疊框指標之負偏置以存取區域變數、而同 因此’可使用堆疊指椤軔左„。二、 何其中之:&或堆疊框指標暫存器任 定w 疊相關定址模式。可使用堆疊指护而 毛址由呼叫常式推至 曰‘而 定址t , 值。可使用堆疊框指標而 儲存雄# 常式内之參數值。當啤叫次常式時,可 子h框指標暫存器(使用於呼叫常式)之現值 叠二=,Γ常式可將堆疊指標暫存器之現值複製入堆 式心:存器’建立框指標至次常式之堆疊框。當次常 ^成時’可將呼叫常式之框指標值再次儲存至框指標暫 —關定址描:忒之資斜推泪,丨 推列:配置微處理器1〇0以使用預測之資料值而施行資料 订’該貢料值係使用各種操作之堆疊相關定址模式 :即〜存取記憶體之堆疊區之定址模式)而預測。舉例而 :操作刀派至排程n 118時,可藉由比較操作之運算 2疋址&式與現存於堆疊檔案中之定址模式,而到別用 排'^固或多個操作之運算元之推測值ϋ實施例中, 推程器118可使用推測值而發出執行之操作。若猶後判定 測值為不正確,則可使用非推測值而再發出操作。 92515修正版 20 1333629 弟2A圖顯不 _ , ^ ^ iyj 踢分派單 凡〇4可根據運算元之定址模式而配置以判別推測之 元值。於此實施例中’分派單元104包括暫存器寫映: 和堆疊檔案132。如上所述,可配置暫存器寫映134以 供暫存器再命名。暫存器寫映134可接受各指令(知 之各來源和目的地運算元之邏輯暫存器名稱,並輸出最 指定到這些邏輯暫存器之實際暫存器之實際暫存器名稱# 暫存器寫映134可指定實際暫存器以儲存操作之結果二。 疊檔案132包括堆疊檔案控制器2〇2和堆疊檔案儲存哭堆 2〇4。於此實施例中可從數個暫存器、鎖存器、計數器= 法器/減法器、正反器、或其他的時脈儲存器而執行堆疊2 案儲存器204。於替代實施例中,堆疊檔案儲存器2 包括一個或多個RAM(隨機存取記憶體)單元。 堆疊檔案儲存器204包括一個或多個登錄項22〇。各 登錄項220可包括定址模式2〇6和與登錄項之定址模式 2〇6相關聯之標記2〇8。各標記可藉由當資料值產生時=示 該貝料值將儲存於何處(例如,在重新排序緩衝器内或是在 暫存器檔案116)而識別該資料值。舉例而f,如例示:實 施例中所示,各標記可識別分配儲存該資料值之實際的= 存器,由暫存器寫# 134所指示。各定址模式可包^用來 識別特定的堆疊位置之所有的或一些的資訊。舉例而言, 很快地參閱第2B圖,該圖顯示了一個範例定址模式2〇6。 於此實施例中,定址模式細包括邏輯暫存器名稱川和 位移量m。邏輯暫存器名稱21()是用來將資料存取於堆 92515修正版 21 ^33629 叠中之邏輯暫存器之名稱(例如 指標暫存器)。位移量 邊扣標暫存器或堆疊框 之位址之值,或從該邏輯暫存存於邏輯暫存器中 定址模式206亦可包括 。之位址減去之值。一些 括八他的資訊,孽如 名稱或索引暫存器之名稱。 θ如奴邏輯暫存器之 當指令或操作之定址 位置時,可分配在堆疊檔半儲存=隐體之堆疊區内之
舉例而言’當-儲存掉作脾Γ Μ内的登錄項I 储存插作將值(例如,從 儲存至堆疊區内之㈣Μ貫際暫存器來之值) 進指令為包括儲在;^祚夕社人 、了刀配一登錄項。推 L㈣存#作之指令的例子。將記 — 為目的地之移動指令,是包括儲存操作之另V 子。i台最播姿^ & 保作之另—個指令的例 且备木控制器202可偵測將資枓 堆疊區域内之呓情@_ 、+值儲存於记憶體中 作碼和/二,Γ作(例如,根據操作之操 土 Α 一 模式)。右偵測到之儲存操作之定址模4黑 未匕括於堆疊檔案登錄項220 可分配新的登錄項22。以儲存該定址一 器亦可儲存識別將由儲存操作所儲 控3 ::言’若堆疊㈣控制器-偵測指令扣二 隹豐棺案控制器可將用來識別現正指定至邏輯暫存器 之二際暫存器之標記,儲存至回應pusH指令而分配 ’於堆豐檔案登錄項22〇中。堆疊檔案控制器可儲存 E㈣(其令+0是以位元組為單位之位移量)作為用於 PUSH指令之定址模式。若在堆疊檔案儲存器⑽内沒有 閒置之登錄項用以分配,則堆疊檔案控制器2〇2可使用譬 92515修正版 22 1333629 如lru(最近最少使用)、FIF〇(先進先出)、隨機位移等之 位移設計來選擇登錄項加以覆寫(overwrite)。 若操作之定址模式已經包括於堆疊檔案登錄項中,則 堆疊檔案控制器2 〇 2可用於該操作中所指出之標記來覆寫 储存於匹配登錄項中之標記。舉例而言,若儲存摔作之定 =於堆疊稽案儲存器204中命中⑽),則堆疊檀案控 =〇2可_存操作之來源運算元之標記覆寫儲存於匹 配登錄項220中之標記。 /隹疊檔案控制器202可比較於未分派操作中指明之定 址杈式與儲存於堆疊檔案^ ^ ^ ^ ^ ^ ^ ^ ^ * 廿中登錄項内之定址模 -錚::址模式匹配儲存於堆疊檀案儲存器2〇4中 ;:二:之定址模式(例如,操作之堆疊相關位移於堆疊檀 τ _ )則堆邊檔案控制器202可使用$ ρ 正(如上所述)包含匹配定址 ,用Μ 從堆疊來之值载人暫0之h 錄項右正在處理把 可輸出錯存於堆疊檔;二:,則堆疊檔案控制器- 標記(例如,實際:暫 存器之操作此處稱之為戴 :广來的值載入暫 入操作指令之例子。值取指令是包括載 實施例中,婦v指令之使用=疋’於施行咖指令组之 因為當儲存資料於堆疊或從:τ=作和載入操作。 (例如,推進和取出指人一 < 噠和去貧料之操作時 堆叠指標值,所以可^ ^會更新堆叠指標值),常修正 錄項—反映修正或^ = = 藉由更新登 /正輪入到堆璺檔案132之定 92515修正版 23 1333629 址模式,和比較修正之定 220中之定以1 式與於各堆疊檔案登錄項 杈式,而補償對堆疊襠案值之修正。 於個霄施例中,每次改變堆疊指芦插性 控制器202可藉由修正 I , H槽驾 了,而補償對堆疊指標值之修正。舉例而 y 率 =可包括減法器和/或加法器(或者,可用上升和/或二案 ==:)’回應推進和取出指令而配置成更 正量可依於運算元之大小而定。例如, / “推4位元組之運算元至堆疊,則堆疊檔案控制 裔202可加4$久A々主tej- ^ 审 至各且錄項t之位移,該登錄項指 :於其定址模式2。…同樣地’若取出指令從堆: 中之各相對位移減去2,該定址模式μ指明 该堆疊指^示。以此種方式久a 指標之現㈣置為=且錄項之定址模式關於堆疊 於其他實施財,堆疊權案控制器202可藉由追跑 個或多個定址模式調整值,並於tb較輸人藉^縦― 於各堆最栌宏八技 較輸入疋址杈式與包含 J用中之定址模式之前,將這些調整 標堆疊安標㈣2之定址模式’而補償堆疊指 如,於控制盗可追蹤用於各邏輯暫存器(例 值,兮邏;^貫施例中之⑽和EBP)之定址模式調整 ㈣存益用來定址位於記憶體之堆疊區中 。舉例而言,堆疊檔案控制器可包括加法器 : 緒存各定址模式調整值。各加法器或計數器‘關聯於= 92515修正版 24 足址於堆疊區域中資斜夕甘士 佟m祕、^ 邏輯暫存11。每次分派 L改關聯於邏輯暫存器之 .^ ., _, 耵彳呆作時,則為了反映該修 或無效。例如,每J1二::!少、載入新值、清除、 指標暫存器之計數号之值H 則可減少關聯於堆疊 数益之值(例如’回應PUSH EBX而 count=count-4) ° 每次由堆疊檔案處理新 啊锞作時,堆豐檔案控制器2〇2 可施予適當的定址模式調整 了划一“、、㈣值至新刼作之定址模式,以為 J疋疋址模式是否於該堆疊。 > 〇 & 保累儲存态命中。舉例而 吕,右目月,J ESP相關定址模 m〇vEax,【ebp+81,目以芒整值為㈣並接收到操作 】 槽案控制$ 202可將定址模 式調正值加至定址模式,蹀二 Λ獲仔私式【膽格12】或 【ESP-4】。若修正之定址 氏政 式【ESP_4】包含於堆疊檔案 丘錄項22〇令,則始最#安 ” 晶;p牵A林、且棺*控制器202可輸出包含於該堆 冗檔案且錄項中之實際的暫存器識別符。 =^案控制器202可包括—個或多個加法器,以將 =料式調整值施予至輸入到堆疊檔案之定址模式。舉 W而5,若各時脈週期可輪入 、 晶拎安格& 徊粽作至堆疊檔案,則堆 冗檔案控制器202可包括二個加 答 去-以細加該疋址模式調 中之相拟 獻藉由修正包含於各堆疊檔案登錄項 T之相對位移而補償雄聶沪 之加Π 改變之實施例,需要較少 之力法态和/或計數器。此外, ^ , 许夕次常式包括施行從堆叠 才曰標減去相當大值之操作, 且 ^ ^ ^ ' 為了为配大的區域堆疊框。 、隹立棺案内處理這歧操作之宭故y丨士 ^ 呆忭之貫施例_,為了作大的偏 92515修正版 25 1333629 置’而也坪需要花費相當貴的加法器和/或計數器。於此等 情況減少加法器和/或計數器之數目也許是重要的設計考 量。 於些追蹤定址模式調整值之實施例令,定址模式調 整值亦可以用來調整將儲存於堆疊檔案登錄項中之定址模 式。舉例而言,考慮第一序列之操作:M〇v【Esp_4】,' EAX,MOV【ESP-8】,EBX ; MOV【ESP-12】,ECX ; ADD ESP ’ -12 ’接著是第二序列之操作:M〇v【Esp_4】, ESI; MOV [ESP-8] - EDI ; MOV [ ESP-12 ] > EBP ; ADD ESP’ 這些序列可藉由將_系列之pusH指令解碼成 MOV和ADD操作,並於解瑪之操作上施行固定值傳播而 產生。當操作之第一序列藉由堆疊樓案控Μ器處理時,堆 疊檔案控制器202可分配或修正具有定址模式【Esp_4】、 【ESP-8】' 和【ESP_12】之登錄項。回應於第—序列中之 加法運算’堆疊檔案控制器2〇2可更新堆疊指標定址模式 調整值從0至-12。當處理操作之第二序列時,於分配用於 該操作之登錄項之前,堆疊檔案控制器2〇2可將定址模式 調整值加至各操作之定址模式。因此,分配於操作之第: 序列之堆疊檔案登錄項可具有定址模式【Esp i6】、 【說-2〇】、和【ESP_24】。回應於在第二序列之加法運管, 堆疊檔案控制器202可更新該堆疊指標定址調整值至二。 若堆疊指標複製至堆疊框指標(例如,M〇VEBP, ESP)(例如,於次常式之開始),則堆叠樓案控制器加可 額外地補償此更新。例如,於一個實施例中,堆疊檔案控 92515修正版 26 1333629 制器202可更新各登錄項22〇,該登錄項22〇之定址模式 中指明堆疊框指標暫存器,而非識別堆疊框指標暫存器。 於一個X86實施例中,回應指令MOVEBP,ESP而可將指 定ESP之各登錄項更新成指定EBp。同樣地,當堆疊框指 軲複製至堆疊指標(例如,於次常式結束之M〇v ESp,EBp) 之操作時,堆疊檔案控制器可將原先更新識別堆疊框指標 改成識別堆疊拓標之各登錄項。或可取而代之,可將任何 指明此種複製操作之目的地暫存器作為定址模式一部分之 登錄項變為無效。例如’回應複製操作M〇v EBp,ESp之 定址模式為EBP+4之登錄項為無效。 於另外的替代實施例中,當發生將堆疊框指標複製至 堆疊指標或反之將堆疊指標複製至堆疊框指標之複製操作 時,堆疊檔案控制器202藉由設定一個或多個旗標陶) 或其他的狀態指示而補償。若使用一個旗標,則可基於偵 測一種型式之複製(例如,M〇VEBp,Esp)而言史定旗標,和 土;偵測另種型式之複製(例如,MOV ESP,EBP)而清除 旗標。若設U旗標和狀態指示以表示堆疊指標已經複製 =疊框指標,則堆疊檀案控制器202可使堆疊棺案儲存 ^ 04内心明堆疊指標暫存器之定址模式相等於指明在未 =作中堆疊框指標之定址模式(或反之,依於發生了哪 ▲ 1之複裏)’刖提是各定址模式中之位移相同。舉例而 二若堆叠檔案登錄項之定址模式2〇6為聊 派載入操作之定址模式為卿+ 8,和若已設定^刀 …丨堆疊楷案控制器202可判定未分派載入操作二 92515修正版 27 1333629 模式匹配包含於登錄項内之定址模式。因此,堆疊檔案控 制器202可將儲存於該登錄項中之標記輸出給未分派載入 操作。 於堆疊檔案控制器202追蹤定址模式調整值之實施例 中,堆疊檔案控制器202可補償複製至堆疊框指標之堆疊 指標,藉由將堆疊指標定址模式調整值複製至堆疊框指標 定址模式調整值。舉例而言,若分派操作MOV EBP,ESP, 則堆疊檔案控制器202可設定EBP定址模式調整值等於目 前ESP定址模式調整值。堆疊檔案控制器202可應用EBP 定址模式調整值至其後處理之指定EBP相關定址模式操 作。當EBP定址模式具有有效值,則堆疊檔案控制器202 可配置成比較輸入至堆疊檔案132之操作中修正之EBP相 關定址模式與於堆疊檔案登錄項中之ESP相關定址模式。 若堆疊檔案包括之登錄項220之ESP相關定址模式含有與 修正之EBP相關定址模式相同位移,則修正之EBP相關 定址模式可命中堆疊檔案。於一些實施例中,當分派任何 指定EBP為目的地暫存器之任何其他操作(除了 MOV EBP,ESP操作),EBP定址模式調整值可以無效。當EBP 定址模式調整值為無效,則堆疊檔案控制器202可能不處 理具有EBP相關定址模式之操作。於一些實施例中,回應 於返回指令,堆疊檔案控制器202亦可(或替換性的)無效 該EBP定址模式調整值。 若操作調整堆疊指標之值(例如,ADD ESP,1 2或MOV ESP,EBP),貝|J堆疊槽案控制器202可更新堆疊槽案指標定 28 92515修正版 丄:^ 值之值。舉例而言,當堆疊框指標複製至堆疊 至:最時’堆疊標案控制器可複製堆疊框指標調整值
兮姶勗曰‘調整值’亚無效該堆疊框指標調整值。當修正 β亥堆疊指標值之接作f也丨L 哭202T, DD運算)時,堆疊樓案控制 二 t新堆疊指標調整值以反映該修正。舉例而言, δ为派了加法土軍筲性 Λ, 前 、,右使用操作ADD ESP,12來回復先 且私’堆疊檔案控制器可加上12以修正該堆疊指標 疋址模式調整值。 ’、 例中,堆疊槽案132可藉由儲存用於各次 二式::整值而處理巢套次常式,以及每當處理返回指令 盼,恢復對應於先前堆叠框 聱忙之調整值。例如,每次處理呼 U曰々,堆疊檔案控制/ TTFn„, 202可儲存目前之定址模式調整 彳入’先出)結構中,相似於返回位址堆疊。告 處理對應之返回指令時,儲存之調整 ^ 制器202中從該結構恢復取得。 4且棺案控 俨;始田扩貝例中’疋址模式調整值可包括指示堆疊指 標和堆豐框指標之間偏差之偏置值。隹:: jh -w j-g pri j. '、下0又疋該一個 兮:暴户〕:偏置值可重設至〇。例如,當操作設定 該堆疊Μ值等於該堆叠框指標值時(例如,觸V ESP,EBP),或相反情況 正ESP和EBP之值時s jU〇°當操作修 為口録好a 當轉正了偏置值。舉例而言, 推進指令減少ESp),可增加偏置值以 反映E S P修正。為回库^5 c D n、』、, 置值。為了反映二=減:某值之操作,可減少偏 負偏置值,而可加正負符號於該偏置 92515修正版 29 堆疊㈣處理操作時,可使用偏置值(和/或堆疊 t疋址模式調整值)以修正用來判定於堆疊檔案 :為新㈣#財絲項之前修正^模式。舉例而言, 有EBP相關定ijt模式之操作輸人至堆疊檔案⑴,則 :比較該定址模式與該等儲存於堆疊檔案登錄項22〇中之 足址模式之前,堆疊檔案控制器2Q2可應用該⑽ ==式調整值和卿.偏置值至操作之定址模式。^ 二只施例中可提供該偏置值替代堆疊框指標調整值或額外 的值。 右载入操作之定址模式於堆疊檔案儲存器2〇4命中, 則可使用由堆疊檔案控制器2G2輸出之標記來連結由標記 至载入操作之推測結果識別之值。舉例而言,於一些實施 J ^ :載入钿作分派至排程器u8時,由堆疊檔案132 1 °己亦可提供至排程器(例如,作為推測之來源運算 凡標記)。排程器118可根據是否有該標記所識別之值(例 如=暫存器檔案116中或於結果匯流排13〇上),而發出 載入操作。執行核心124可執行載入操作,而使得該連結 :於結果匯流排130上廣播作為載入操作之推測結果(值 仔注,的是於—些實施例中,產生為载人結果之值其本身 可不定旗標或識別為推測值)。於其他實施例中,該值可藉 ㈣存標記於推測之寫映中而連結至載人操作之推測結 杲’如下之說明》 連、。之、纟。.果,一旦取得由標記所識別之資料值時(例 92515修正版 30 如,於暫存号p 送該值作為載1摔:乍或於結果匯流排130上),則可傳 用該推測結果執行=果,以便使得相依操作可使 轨行使用該裁入摔作多情況,這種立即允許相依操作 到可取得载入摔作之非^測結果比延遲相依操作之執行直 行。 _作之非推測結果值為止之方式更快得以執 於一些實施例Φ,7 , 值,而使得資料值鈐屮行載入操作而傳送資料 之推測結果。舉例而+ ^ 作為該載入操作 p該貝料值作為操作之結果之標: r執仃载入操作,以# 早人循% 戴入操作(假,…替A代知用二次德環以執行該非推測之 其他實施: 命中該資料快取記㈣128中)。於 法I:::::相依操作時—: 操作(具有由载入操;;產=算供=輪出直接至相依 值,作為推㈣曾1 之#作)而傳送資料 個或多個:分派單元,配置用=貝枓值,機構可包括-推測暫存器至暫存 ,i载入操作以執行作為 為推到運管- Γ ’或提供標記至相依操作作 為推測運鼻几來源標記;排程器 甲乍乍 連結資料值而發出修正哉“ 士 用來依於是否具有 、、 發出修正载入和或相依操作,·以及執行核 連 “二置用來輸出連結資料值作為载人之用 連結資隸㈣行該相依操作。 域用该 ,入/儲存單元126(或其他於微處理器⑽内用來驗 之機構)可以驗證儲存於由堆叠檀案】32所識別之 92515修正版 31 1333629 實際暫存器中之值至載入操作之推測結果之連社。若 =正確,則載入/儲存單元12"再發出裁入操作 =廣播於結果匯流排I3G上載人操作之正確結果。再發出 载入可導致任何使用載入的推測結果而執行之相依摔作, ::使用更新、非推測值而再發出和執行。或可取而代之, 不:確,則處理器⑽可沖洗掉於錯誤推測後發 作Γ 、、’使用載人#作之正確結果再開始執行這些操 7。右使用之登錄項不正確地將諸值連結至载人操作之推 内之登錄項無效…202可以使堆疊檔案儲存器⑽ =所π ’堆疊檔案132追縱於操作中之定址模式,嗜 :存取於資料快取記憶體128(或系統記憶體_中之資 写僧結果’堆疊檔案132允許儲存於實際暫存器中之暫存 將連結到儲存於記憶體巾特定位址之值。 存器個實施例中’儲存於堆疊楷案儲 214 目對位移206可包括少於用來指明於位移攔 内位移之所有的位元。於另外 控制器202可依於在 a堆疊槽案 用於特定操作之所有的定中之登錄項是否能夠儲存 配登錄項於堆疊訊’而選擇性地選擇是否分 柃安德卢抑0 儲存益204中。舉例而言,若於堆疊 厂:子$ 〇4中之各登錄項儲存達16位元之位移資訊, :::特定之操作包括24位元之位移資訊 宰 制斋加可不分配堆疊檔案登錄項給該操作。 控 為了進-步說明堆疊檔案132之一個實施例之操作, 92515修正版 32 1333629 茲假設由分派單元1 〇4所處理之指令序列包括第圖中 所示之指令。第2C圖顯示可包括於範例呼叫常式中之指 以及可包括於範例次常式SUB1中之指令。值得注意 ^ ei ri, ^ ss -. 令 ----Α 1。值得注裒 的是,第2C圖中所顯示之這些指令,可由—個或多個於 程式次序中之***指令(圖中未顯示)所分隔。第⑺圖顯示 堆疊的内容和恰在於次常式啤叫之前之堆疊槽案的内容。 第2E圖顯示堆疊的内容和恰在於次常指令M〇v 【EBP-4】,EBX之後之堆聂拎安AA七—,丄 且檔案的内谷。值得注意的是, 其他的貫施例可以不同的方彳 _ 〕万式處理廷些指令(例如,回應修 2之堆疊指標),—些實施例可更㈣址模式調整值以代替 更新儲存於堆疊檔案中之定址模式。 可使用於呼叫常式中之第—指令pusHEBx,於堆最 上儲存邏輯暫存器值(於此 且 必受到-欠當a ),而使得該值不 作夕― 當㈣來執行簡㈣取之儲存摔 作之定址模式提供至堆叠 储存梯 讀案儲存器204匹配之定址模式。假定定址模 式未Dp中於堆疊檔案儲存器20 以 、 可分配登錚項丨可驻T則堆噓檔案控制器2〇2 經分配之AH 未分配之登錄項或藉由覆寫已 式和來=)以:存推進指令所有之或-些的定址模 BBX指定之命f 2 所不霄施例令,標記為目前 容晷支 K '丁、暫存态之實際暫存器識別符(麸而,A 了 奋易參照,於第2D圖和 W’為了 識別符)。堆晶γ $ π 4 田 軚圮顯示為邏輯暫存器 定址模式未命令於堆〜安^,式為ESP+0。因為 P中於堆龙棺案儲存器中,則堆疊檔案控制器 92515修正版 33 1333629 2 02可不輸出針對該定址模式之標記。 可使用接著之二個指令以推進二個參數,儲存於EDI 和ESI之值到堆疊以供次常式使用。茲假設用於次二個儲 存操作之定址模式於呼叫常式中(用來執行PUSH EDI和 PUSH ESI)亦未於堆疊檔案儲存器204中命中,則堆疊檔 案控制器202可分配另外二個登錄項以儲存各推進操作之 該等標記和定址模式。此外,每次偵測到推進指令(該推進 指令減值堆疊指標),該堆疊檔案控制器可修正包含於現有 之堆疊檔案登錄項中之位移,該登錄項之定址模式指明堆 疊指標ESP。因此,當偵測到PUSH EDI時,堆疊檔案控 制器202可將為了回應PUSH EBX而分配之登錄項位移增 4(因此而使得登錄項之位移變成ESP + 4)。同樣地,當偵測 到PUSH ESI時,堆疊檔案控制器202可增加為回應PUSH EBX分配之登錄項中和為回應PUSH EDI分配之登錄項中 之位移。因此,為回應PUSH EBX分配之登錄項中定址模 式可更新以指定ESP + 8,和為回應PUSH EDI分配之於登 錄項中定'址模式可更新以指定ESP + 4。因此,分派包含於 PUSH參數1指令中之操作後,包含於堆疊檔案中之定址 模式可如第2D圖中所示。 回應於CALL SUB 1指令,將指令指標推到堆疊上(用 作為返回位址)。因為為了回應於CALL指令而修正堆疊指 標,則可更新包括於堆疊檔案中登錄項中之位移,該登錄 項之定址模式指定堆疊指標。舉例而言,回應於PUSH EBX 分配之包含於登錄項中定址模式可更新以指定ESP + 1 2。 34 92515修正版 1333629 CALL指令可包括更新堆疊檔案之儲存操作。舉例而言, 堆疊檔案亦可回應於CALL SUB 1指令而分配一個堆疊檔 案登錄項(第2D至2E圖中未顯示)(例如,具有標記相等於 目前指定於EIP之實際暫存器之實際暫存器識別符,和定 址模式相等於ESP + 0)。 在次常式SUB 1内,指令PUSH EBP可導致將分配一 個新的堆疊檔案登錄項(具有標記相等於目前指定於EBP 之實際暫存器之實際暫存器識別符’和ESP + 0之定址模 式)。此外,因為該推進修改堆疊指標,則可修改包含於定 址模式内指定該堆疊指標之位移(例如,可增加4)。 為了回應指令MOV EBP,ESP,堆疊檔案控制器可將具 有定址模式指定ESP之登錄項更新成指定EBP,如第2E 圖中所示。因此,定址模式ESP+12可更新成指定EBP+12 等等。 次一個指令SUB ESP,4分配空間於堆疊的上端以讓次 常式儲存區域變數。因為於此例子中,堆疊檔案目前係追 蹤EBP修正,堆疊檔案對於此指令之回應可為不分配或修 改任何之登錄項。然而,值得注意的是於其他的譬如定址 模式調整值之該等實施例中,此一指令也許造成一個或多 個定址模式調整值和/或登錄項之定址模式的更新以反映 至ESP之改變。 當MOV EAX,【EBP + 8】之定址模式提供至堆疊檔案 時,來源運算元之定址模式【EBP + 8】匹配其中一個包含 於堆疊檔案中之定址模式。因此,堆疊檔案可輸出於匹配 35 92515修正版 1333629 登錄項中之標記。此處,於匹配登錄項中之標記為實際暫 存器之實際暫存器識別符,之前分配該匹配登錄項時該實 際暫存器指定至ESI。可使用此標記以將實際暫存器中之 資料值連結至MOV EAX,【EBP + 8】之推測結果。同樣地, 當MOV EBX,【EBP+12】之定址模式提供於堆疊檔案時, 該定址模式匹配現有之登錄項,該堆疊檔案可輸出包含於 匹配登錄項中之標記,於此例中,之前分配該登錄項時該 標記係識別指定於EDI之實際暫存器。 對於MOV【EBP-4】,EBX之目的地運算元之定址模式 也許未命中於堆疊檔案132中。因此,堆疊檔案可分配新 的登錄項,具有EBP-4定址模式和目前實際暫存器之實際 暫存器識別符指定於EBX之標記。當包含於ADD EAX, 【EBP-4】中之載入操作之來源運算元之定址模式提供至 堆疊槽案時,定址模式命中和輸出儲存於匹配登錄項中之 標記(當之前建立匹配登錄項時,該標記識別指定於EBX 之實際暫存器)。 指令MOV ESP,EBP複製堆疊框指標值至堆疊指標。 回應此複製指令,堆疊檔案控制器可使任何其定址模式指 定於ESP之堆疊檔案登錄項無效。此外,堆疊檔案控制器 可將任何其定址模式指定EBP堆疊檔案登錄項更改成指 定ESP。於一個實施例中,堆疊檔案控制器可配置成使任 何其定址模式修改成指定負位移和堆疊指標之登錄項無 效。例如,於如此之實施例中,回應MOV【EBP-4】,ΕΒΧ 分配之登錄項,若修改其定址模式指定為EBP-4,則該登 36 92515修正版 1333629 錄項可為無效。 指令POP EBP將堆疊框指標值還原成之前在呼叫常 式中之之值。對於包含於P0P指令之載入操作之來源 兀之定址模式ESP,於該堆疊檔宰中人 算 ,備茱中命中(如上述將定址模 式EB阳修改成指定ESP + Q後),因此該出 ^於該登錄項中之標記。因為包含於pQp指Μ之^ =於载人取出值後修改堆疊指標值,該堆疊檔案控制器 :接:修改各指定堆疊指標之定址模式(例如,藉由將包含 於各定址模式中之位移減去4)。 值得注意的是於一些實施例中當一些譬如推進和取 :指令包括譬如儲存或載入操作之幾種組成操作時,這此 才曰令可分派和排程為單-指令。於另外的實施例中,可: ::地:派和排程包含於此種指令中之一個或多個組成操刀 作。舉例而言,對於取出指令’可使增量堆疊指標之操作, 以及將堆疊頂端之資料載入於辟 地分派與— “的暫存器中之操作分別 安=為堆$檔案132使用為推測結帛,則儲存於堆疊楷 木儲存器204中之資訊的準確度對於微處理器⑽之正確 :作而言可不重要(例如’於堆疊褚案132中之錯誤預測也 =造成於微處理之輪出中之錯誤)。然而,為了增 4正確地連結載入㈣之推測結果至 中:值所提供的好處,和物對於錯誤預測 之任何性能損失’而希望改進堆疊檔案132之準確度。於 一些實施例中,可回應窺視取得寫入存取於特定位址之資 92515修正版 37 丄 4 〇另外裝置’而使堆疊檔案儲存器204中之登錄項無 =地;可:應於偵測之錯誤預測,而使登錄項無‘效。 二::::::: =影響…㈣儲存 錄項無效。然而,因J 夕狀況’而判定何時將登 Π例;不執行-些此等監視方娜,若執二I: :法之額外的硬體成本勝過於堆疊槽案準碟度之可二改 值得注意的是堆最嫂安μ。 頗遠之操作之間相於操作流中彼此相隔 ^ 依存,以用來將值連結至推測砝果。 因此,堆疊檔案可提供操 ],1果 許由幾個***之操作所分2間相依的經歷’該等操作也 第^圖顯不連結载入操作之推測結果至暫存 個方法實施例之流程圖。 ° 式,指示二者可能識別相同:=:,tr聯於定址模 皆於第一載入切户媒 該標記和定址模式 载入或儲存知作所指明、 為载入操作,則標記 右第一刼作 ,^^ 1別只際的暫存器,分配以儲存載 =果,和可使用定址模式計算用於载入之位址。若= 地第—操作為儲存操作,収址模式可指 之位址,和標記可識別由 的地 實施例中,可藉由將二儲存之資料。於-些 ,該標記和定址模登錄項中, ^ ^ 值传庄息、的疋,在關聯於芦印 之别,可依照定址模式調整值(例如 广“ 堆疊指標值而獲得)而修改定址模h X >正值至 92515修正版 38 1333629 右㈤載广作之疋址模式匹配第—操作 式,則載入之推測結果可連結至由該第_ =果 所識別之資料值,如步驟303至305所干\/月之榡記 定址模式不匹配第一操作之定址模式,則可桑作之 址模式與用於載入之目的地之儲入之定 堆疊槽案中之登錄項中),如步驟3〇3i二由儲存二者於 如於步驟313所示,通常可获 斤不。再者, 逋吊可藉由存取資料快 行載入。於一個實施例中,載入操作之定式;^ :個之先前操作之定址模式柄比較。例如,載=二: 式可與現正儲存於堆疊檔荦 戰入之疋址拉 得注1 址模式相^較。亦值 相比::些貫施例中,在與先前操作之定址模式 定址模式。 ^值巾可修改載入操作之 若載入之推測結果連处 該資料值可傳送至一個或::广己所識別之資料值,則 藉由傳送相關操作可使用資科值可經由結果傳送或 指示,此將於下文令作更& 為推測之運算元來源之 若資料值經由結果I:::::明。於-個實施例中, 用貫際暫存器作為推測運算元之來源而傳送該資 即=關St完成執行產生該資料值之操作後,可立 前, 呆 如於步驟309所示,在驗證推測結果之 ° m结果。可傳送推測結果而不須存取資料快 925】5修正版 39 二記憶體(亦即’推測結果比由 非推測之結果更快傳送)^ 科决取s己憶體而產生 若於步驟309驗證該推测处 入操作^㈣行資❹料確的,則可完成載 施行载入摔作而不^ 於其他的實施例中,可 滁作而不s疋否驗證該士 驟3。9判定推測結果為不正確的乂果為正痛。若於步 取以便獲得正確的結果(圖中:示:則:執綱 用載入推測έ士要^' 若如此,則任何使 '、、、。果所執行之相關操作可再執行而# 恭λ 更正結果。值得注意的是於一此=而使用載入之 作Λ. λ — & -度况,在傳送連結資料值 為载入之推測結果(於步驟3〇 错州)。於此等情況,可 則,可執行驗證(於步 確的爷ΒΙ . 吊執订载入,或判定連結為正 的話,則可傳送資料值作為載入 體檔考― 、 非推測、纟β果° 元1。"括圖4不为’底單疋⑻之-個實施例,該分派單 匕括圮憶體檔案136。記情 樓案控制器4〇2和記怜體,㈣:L 136包括記憶體 檔荦u “04。可使用記憶體 疋㈣吴式將儲存於實際暫存n巾之暫存器值 f存於記憶體中㈣位址之值。不像堆疊㈣,二 :己憶體檔案將暫存器值連結至於記憶體區域中而不在 =域中,記憶體值。於一些實施例中,記憶體檀案136 將暫疒亡::執仃一些堆疊檔案132之功能,以便額外地 你 值連結至記憶體之堆疊區域内之記憶體值。或可 而代之刀派早凡104亦可包括分離之堆疊檔案132以 執行該等功能》 92515修正版 40 1333629 記憶體檔案儲存器404包括—伽7 各登錄項4.20可包財個或多個登錄項似。 相關聨之俨 b 06矛°肖登錄項之定址模式 _,聯之W4G8。當產生標記時,各標記_ 不資料值將儲存於何處(例如, 藉由4日 器槽案⑴内),而指示出或在暫存 例令所干久碎 例如,如說明之實施 =如2Γ°8可識別分配以儲存該資料值之實際 =二Γ!映134所指示。各定址模式-可 种,^二資訊,用來指出操作令位址。儲存於記憶 宰?中之定址模式4°6可包括相似於儲存於堆疊檔 模Γ6之資訊。值得注意的是於-些實施 • 、°己心體檔案儲存器404令之定址模式4〇6可 G括少於用於指定握你+ % 士 ^ + _,記憶體資訊。於其他實施例 登錄項可儲^…1b 402可依於是否於記憶體槽案中之 選擇3否八所有用於指出操作之定址資訊,而選擇性地 疊樓登錄項於記憶體檔案儲存器404中。相似堆 广、㈣204,記憶體檔案儲存器404可從數個暫存 态、鎖存器下应 节仔 „ _ 。、一個或多個隨機存取記憶體(RAM) 平兀*、等等而施行。 ) 〜奸隐體檔案控制器4〇2可比較指明於非分派操作中之 疋^ ^ ^與儲存於記憶體檔案健存器404中登錄項42〇内 怜Si式。右操作之定址模式不匹配任何現正儲存於記 =體_儲存中絲仙之定址模式_( 案控制器=記憶體樓案儲存器中),則記憶體標 可刀配新的登錄項420於記憶體檔案儲存器 92515修正版 404中以儲存所有之或一些該操作之定址模式。若沒有閒 置之登錄項分配於記憶體樓案儲存器4〇4巾,則記憶體檔 案控制器402可使用譬如最少最近使用(LRu)、先進先出 (FIF〇)'隨機取代、等料代設計而選擇登錄項以覆寫。 除了儲存操作之定址模式於分配之登錄項内之外,記憶體 =案控制器術亦可儲存標記彻(例如,實際暫存器之名 柄)以識別從記憶體位置所載入或儲存於記憶體位置之 =由%作之定址模式識別該記憶體位置。舉例而古,若 記憶體载入資料之操作,則反應該操作之分:之登 儲存載入握你…暫 該實際暫存器配置成 作 ’、《結果。若處理儲存資料於記憶體位置之摔 作,則記憶體檔案控制器4〇2 名稱,該暫存器儲存將由儲存::f=…際暫存器 器404中之值。 遺谇刼作儲存於記憶體檔案儲存 右麵作之定址模式(或兮 憶體權案404之登錄項中H、式之—部分)已經儲存於記 憶體播案錯存器中),則記 ^作之定址模式命中於記 改該包含匹配之定址模式;:登^控制虚器4〇2可使用或修 從特定位址载入暫存器之摔作)二。右處理載入操作(將值 可輪出儲存於匹配之登錄項令之實=槽案控制器彻 儲存操作(將從暫存器來 $暫存盜名稱。若處理 之值储存於特定位址之操作 隐體檔案控制器402可用 *作)則 匹配之登錄項…標記(例如覆寫館存於 於-些實施例中,若分特:暫=名稱)。 指疋特疋邏輯暫存器(而非用 92幻5修正版 42 來储存堆疊指標和堆 之操作,則記,心暫存器)為目的地運算元 為其定址槿乂 02可使包含該邏輯暫存器 各操作之目的地… 登錄項420無效。因此, ^ . ·暫存盗之邏輯暫存器名稱可輸人至π, 檔案136以便執扞a样s — 僻」翰入至5己憶體 當窥視到另外的二 此外,於-些實施例中, 即令士己㈣於安 特定位址資料之寫入存取時, :隱體檔案儲存器4〇4内之登錄 伯測:錯誤預測時可使登錄項無效。 β 若記憶體檔案1 3 6亦分配用於处於 之定扯疋刀配用於才呆作之登錄項,該操作 疋止拉式才日疋記憶體之堆羼 案控制器402可包…: 位置,則記憶體播 義择安 ,、中一種上述之針對這些登錄項之堆 立槽案補償機制。或者這此八 二 維持於獨立之堆疊檔 朱i 32内(亦即,記憶體檔 案136 了不为配登錄項給各操 該操作之定址模式指定堆疊内之 憶體檔荦栌制考4 ^ ^ 5 §己 仇々…了根據哪—個邏輯暫存器識別符包含 =址模式内,而區別指定堆疊區域内之位置之 式與指定記憶體内其他位址之定址模式之間的不同。因為 §己憶體㈣136為推測結構,%由使用此種機制以區別定 址杈式所發生之可能不正確是可接受的。 於-些架構中,用來指定堆疊框指標之邏輯暫存 如,像是基礎指標暫存器)亦可用作為-般目的暫存 益。因此,包括此種雙目的暫存器之定址模式傷可 在記憶體之堆疊區域内之位置’或不包括於堆疊區域内9位 置之其中任何—種。為了區別此等定址模式之間的不同, 92515修正版 43 作:::案控制器402可包括追縱目前基礎指標暫存器用 ’’、、堆f框指標之可能性之機制。此種機 該旗標當基礎指樟塹左哭7 At A L括旗標’ 定一能作用為堆疊框指標時予以設 和备基礎指標暫存器可能作 以清除。舉例而言,此種旗"“目的暫存器時予 此種旗軚可回應於CALL指令而設 和回應於RET操作而清除。於苴 疋 可回應於謝取指人而机定:的霄施例令,此種旗標 7而认疋,和回應於LEAVE指令而清 搞S可取而代之’此種旗標可回應於Μον、卿、咖 分派而設定,和回應於M0V、ESP、EBP操作之分 =而>月除。當設定旗標時’記憶體檔案控制器402可禁止 =那些定址模式包括基礎指標暫存器之操作(於記憶體 田案136不包括堆疊檔案功能之該等實施例中)。於此等情 :’堆疊檔案!32可替代處理這些操作,或完全不處理這 ^呆作。或可取而代之,於記憶體檔案136亦執行堆疊檀 Γ功能之該等實施例中’當旗標設定時,記憶體檔案控制 .可以八有堆®相關之定址模式之方式處理這些輸入 至記憶體檔案之操作。若當已清除該旗標時,可以具有非 堆疊相關定址模式之方式處理該些操作。 於些κ靶例中,可藉由記憶體檔案控制器4〇2維持 -他的資訊’以便更正確地處理雙使用邏輯暫存器於巢狀 -人㊉式技境。舉例而言’代替以僅維持指示是否已經處理 CALL指令之旗標,記憶體檔案控制器4〇2可追蹤“呼叫 深度(call depth)”。呼叫深度可指示現用巢狀層級—_ el)和用來判定將如何藉由記憶體檔案控制器而處 92515修正版 44 1333629 理特定的基礎指標暫存器定址模式(或甚至是否該處理此 種操作)。 於一個實施例中,記憶體檔案控制器402可包括追蹤 呼叫深度之計數器。於一些實施例中呼叫深度計數器最初 可設定為0。每次處理CALL指令後,記憶體檔案控制器 402可增值呼叫深度計數器。每次處理RET指令後,記憶 體檔案控制器402可減值呼叫深度計數器。當分配登錄項 420時,記憶體檔案控制器402可將現用之呼叫深度附加 到該登錄項,若該登錄項之定址模式406包括基礎指標邏 輯暫存器識別符。 當由記憶體檔案控制器402依序地處理其定址模式包 括基礎指標暫存器之操作後,目前之呼叫深度可與儲存於 各登錄項中之呼叫深度相比較。若該等呼叫深度並不匹 配,則操作將不命中記憶體檔案136中。例如,指令之序 列將包括: MOV EAX,【EBP + 20】
CALL 〈設定EBP之新值之次常式操作〉 MOV EBX,【EBP + 20】 RET〈恢復EBP之CALL之前的值〉 MOV ECX,【EBP + 20】 可藉由一個或多個***指令而分隔各指令。由分派單元 1 04處理此指令序列之前,於記憶體檔案控制器402中之 呼叫深度可等於1。當處理MOV EAX,【EBP + 20】操作時, 45 92515修正版 ^33629 記憶體檔案控制器402可用具有呼叫深度=1之EBp + 2〇來 比較儲存於記憶體檔案儲存器4〇4内之其他登錄項中之定 址模式假°又這些疋址模式沒有一個匹配,則記憶體檔案 控制器402可分配新的登錄項以儲存定址模式EBp + 2〇* 識別EAX之標記。記憶體檔案控制器4〇2可額外地附加識 別目前呼叫深度之值(例如,丨)至新登錄項内之呼叫深度 爛值得庄意的疋,於許多實施例中,記憶體檀案控制器 402可僅附加此值至儲存包括基礎指標之定址模式之登錄 項。 回應CALL操作之分派,記憶體檔案控制器4〇2可更 新目前之呼叫深度(例如,藉由將目前之呼叫深度增加至 2)。於呼叫次常式中之操作可更新堆疊框指標EBp之值(例 如’M〇VEBP,ESP)。因為於登錄項中之呼叫深度不匹配現 用之呼叫深度’則更新EBp,記憶體樓案控制器4〇2並不 會使該登錄項無效。再者,由於更新EBp,則Μ〇νΕΒχ, 【EBP+20】將不命令於記憶體檔案中,因為目前具有定址 模式EBP + 20之δ己憶體檔案登錄項係根據不同的值。 為了正確地判定MOVEBX,【EBP+20】之定址模式不匹配 已經儲存於記憶體㈣錯存器中之定址模式,%記憶體擋 案控制器可比較現用之呼叫深度(2)與存在之登錄項之呼 叫深度(1)。目為目前之呼叫深度不同於存在之登錄項之呼 叫深度,則記憶體檔案控制器可判定新的指令未命令記憶 體權案t。因此’記憶體檔案控制器可分配登錄項以儲存 EBP + 20和將指示目前呼叫深度之值附加至該登錄項。值 92515修正版 46 1333629 得注意的是,現在也許有(至少)二個具有定址模式ebp+2〇 之記憶體檔案登錄項。當處理RET指令時,記憶體檔案控 制器可減少目前之呼叫深度(例如,再至1}。因為目前之呼 叫深度等於當之前登錄項分配至ΜΟν ΕΑχ,【EBp+2〇】之 呼叫深,,則MOV ECX,【膽+20】可命令於記憶體槽案 中。值得注意的是於—些實施例中,記憶體檔案控制器402 可使登錄項無效,該登錄項之呼叫深度要大於目前之呼叫 深度。 打一些·包含堆 姐伯未i j 0之貫施例 ’可使用各種機制來判定哪—結構針對特定的操作而分 配登錄項。於-些實施例中,堆疊槽案132和記憶體槽案 136—可針對具有堆疊相關定址模式(例如,包括EBP或ESP 之疋址模式)之操作而分配登錄項。於其他實施例中,可藉 疊槽案132和記憶體槽案136成為單-結構二 /為除几餘。 之择:其他的替代實施例中,針對定址模式指定堆疊指標 '乍’ 3己憶體擋案j 3 6可不分配a样 案命中和/或未A卜^ 且錄項並判疋記憶體擋 全秋不處理U6可選擇性地處理(或 暫存、=有指定基礎指標暫存器或其他雙使用邏輯 暫存态之疋址模式之操作。於— 案m選擇性地處理 只細例中,右5己憶體檔 作,則記憶體檔定基礎指標暫存 202中之堆疊框址^ 2根據於堆疊檀案控制器 示是否次常整值是否有效,或根據指 人以正在處理之旗標,而判定是否處 92515修正版 47 1333629 作。當堆疊框指標定址槿, 可虚饰a 式調整值為有效時,堆聶栲垒 了處理包括基礎指標暫存器之 ^ -檔案”2 址模式調整值為無效時,記憶體槽案堆疊框指標定 若正在處理載入操作,〃 β處理此等操作。 儲存器404中,則“㈣二操作命中於記憶體檔案 用“ 己憶體檔案控制器402輸出之卜己可 用來連結由標記識別之儲存值至載入: 例而言,於一些實施例中,告八 ’、 ,.,〇果。舉 田刀派載入操作至排程器11 8 ,則由記憶體檔案136所輪出之標記亦可提供至 (例如,作為推測來源運算元俨 、 王n 払5己)。排程器118可針對該 ^己所識狀值之有·效,_如,騎存㈣案u 結果匯流排130上)而可發出操作。執行核心、12何執行載 ^操作,而使得連結值在結果匯流排⑼上廣播作為載入 #作之推測結果(應注意的是,於一些實施例中,產生作為 載入結果之資料值其本身可不設為旗標,或否則識別為推 測值)。於其他的實施例中,資料值可藉由儲存標記於推測 寫映中,而連結至載入操作之推測結果,將於下作詳細說 明。 為了進一步說明記憶體檔案136之操作,茲假設由分 派單元1 0 4所處理之操作之序列包括下列之操作: MOV EBX,【EDX+EAX-位移 A】(載入 1 (LOAD 1)) • · · · · MOV ECX,【EDX+EAX-位移 A】 (載入 2 (LOAD 2)) MOV【EDX+EAX-位移 A】,EAX (儲存 1 (STORE 1)) 48 92515修正版 1333629 這些操作之每一個可藉由於程式順序中***一個或 多個操作而分隔。如所示,此等三個操作之每一個包括相 同的定址模式,EDX + EAX-位移A。 當LOAD 1之定址模式提供至記憶體檔案136時,記 憶體檔案控制器402可檢核記憶體檔案儲存器404之定址 模式是否匹配LOAD 1之定址模式。茲假設定址模式未命 中於記憶體檔案儲存器404中,則記憶體檔案控制器402 可分配登錄項(藉由使用未分配之登錄項或藉由覆寫已經 分配之登錄項)以儲存所有之或一些之載入操作之定址模 式,和載入操作之目的地實際暫存器之實際暫存器名稱, 如由暫存器寫映1 34所提供。因為載入操作未命中於記憶 體檔案儲存器中,則記憶體檔案控制器402可不輸出用於 該載入操作之標記。 當接著由記憶體檔案136處理LOAD 2時,其定址模 式可匹配分配給LOAD 1之登錄項之定址模式(茲假設 LOAD 1之登錄項尚未因為中間***操作而被覆寫)。反應 LOAD 2之定址模式命中於記憶體檔案儲存器404中,記 憶體檔案控制器402可輸出分配成儲存LOAD 1之結果之 實際暫存器之實際暫存器名稱。可使用實際暫存器名稱以 連結由LOAD 1載入之資料值至LOAD 2之推測結果。 當藉由記憶體檔案136而處理STORE 1時,其定址模 式可命中分配給LOAD 1之登錄項中(茲再假設沒有*** 操作已造成此將之登錄項被覆寫)。然而,替代輸出分配成 儲存該LOAD 1結果之實際登錄之實際登錄項名稱(如對 49 92515修正版 1333629 於LOAD 2所施灯的)’記憶體權案控制器樹可用包含由 STORE 1所儲存之資料之暫在 t〈皙存态之貫際暫存器名稱覆寫儲 存於該登錄項中之實際登錄項名稱。因此,當後續之載入 操作命中於此登錄項中,則記憶體㈣控制器4〇2將輸出 WORE !之來源實際暫存器之實際暫存器名稱,以代替輸 出LOAD 1之目的地暫存器之實際暫存器名稱。 如所不,堆豐檔案132和/或記憶體檔案136追蹤存取 於^快取記憶體128(或系統記憶體2⑽)中資料之操作中 之疋址板式。結果,儲存於實際暫存器中之暫存器值可連 結到儲存於記憶體中特定位址之值。 ϋ_推測至源之犊作之 各種之實施例可用許多不同之方法連結載入操作之 推測結果與暫存器資料值。於一些實施例中,可藉由識別 用於運算元之二個來源而連結各值:推測來源與非推測來 源推測來源可以是連結之資料值。可提供推測來源用於 載入操作,以指示連結到載入之推測結果之資料值。於一 一 了把例中,亦可提供推測來源用於相依於此種載入操作 之操作。因此,一些運算元可具有二個標記:一個識別推 測之來源,和一個識別非推測之來源。於此等實施例中, 各排程器11 8可提供標記儲存器用於推測運算元和非推測 運算元’如第5圖中所示。 第5圖顯示排程器n 8之一個實施例,該排程器u 8 可Gs於微處理器中。於所示實施例令,排程器US包括 隹輊«控制盗502和操作儲存器504。回應分派單元分派 50 92515修正版 1333629 ,作程器控制器502可分配操作錯存器 項以儲存對應於該操作之資訊。舉例而言,於摔作:二錄 504内之登錄項522可包括操作碼搁—==! 元:、和結果搁516。結果棚-可儲存識別實際 ^記,其中將儲存該登錄項之操作之結果1發= 二個或多個標記匯流排= 上之各二二t排程器可比較傳送於標記匯流排52〇 ^各^己與未處理之操作之運算元標記(推測的和非推 之運曾元it說?’以便判定何時將可取得未處理操作 貧運广因此’當標記匯流排52。上出現操作之 己而發出(或註明為準備發出)該操作。 ’、 各運算元攔可包括用於識別推測 標記和識別非推測運算元來源之非推測標記測 所列示之登錄項522中,運算…之二個來源:: 記川和推測標記514所識別。排μ ! ^推則示 個指示可得到操作之運算元則發出操:。^ 代和非推測之來源其中任何一者取得運算元,則 得到算元。若從推測之來源和非推測之來源來 該操:二使用從非推測之來源取得的值而執行 作於—些實施例中’排程器118可對具有非推測之 =:作r僅具有推測之來源的操作,給予較高之優 的運:得注意的是一個操作可包括-些具有推測之來源 勺運开疋,和其他的不具有推測之來源的運算元。亦應注 92515修正版 51 1333629 ^ ’同—個來源對於—個操作也許是推測之來源,而 各於2 —個操作也許是非推測之來源。於一些實施例中, 如執仃知作時,對於各運算元也許僅可讀取—個資科值(例 曾—執仃核心124可讀取推測之運算元來源或非推測之運 ^凡來源,但不能同時讀取二者)。如此可使得操作不須增 1外的蟑至暫存槽案i丨6中。於—些實施例中,推測 。。來源和實際來源可儲存於相同之儲存位置(例如,在暫存 盗檔案116内)和推測之來源不可被定旗標或 推測來源。 馬 於許多實施例中,於這些操作已發出至執行核心124 I排釭益U8可配置成仍保持分配於各操作之登錄項。 當根據是否可得一個或多個推測運算元,而藉由排㈣ ^發出操作時,則該排程器可保持分配至該操作之登錄 —522而使得當若該推測連結不正確時能再發出操作。於 一實轭例中,可配置載入/儲存單元以驗證當推測之載入 結果連結至儲存於實際暫存器中之資料值時,所發生之推 測連結。若該連結為正讀,則载入儲存單元可配置成不廣 播非推測之載入結果’因為已經可經由連結而取得正確处 ,。假如如此’若識別用於該操作之非推測運算元來源之 發出操作。 則排h⑴可配置成再 2可取而代之,載竭存單元可廣播該儲存之結果同 :伴隨者掩蔽廣播,或指示推測之連結為正確而不必再發 出該載入之額外狀態位元。然而,若推测之連結為不正確, 92515修正版 52 則裁入/儲存單元可執 獲得用於載入之正確的任果#取:/或記憶體存取,以便 實施例中,總是廣播,額外播該載入結果。於-些 連結為不正確。因此;於許多實:f態位元可指示推柯之 經取得的-些標記和,果^=例中,於微處理器中已 +正確。於其他的實施例令,彳之連結為 制(例如,使用分離U 替代之指示機 排520以#干^ ,130和/或結果標記匯流 M才日不錯誤預測)。 /巩 第6圖顯示具有推測之和非 和再發出操作之一個〃 連异凡來源而發出 〜來源為有效,則可發出操 推测 不。當資料值表現於暫存器Μ内=8〇1至803所 資料值輪出於处果…t 之特疋暫存器令,或當 元來源。值得注意的是於一,情況:::之推測運算 前先得到用於相同運算元之握:f可在推測運算元之 該等情況,在m 、<非推測運算元來源。於 於某些實施例中,之德e p , u可以發出操作。 再發出。 之後疋否传到推測來源並不觸發操作之 操作:::由=運算元來源所提供之資料值而執行 如步驟805所/所指示,並可廣播操作之結果, 作。 心不。廣播該操作之結果使得可執行相依操 推測時間測之來源為不正確(例如,由 -和非推測之來源所提供之f料值並不相同,或 925】5修正版 53 1333629 用來產生推測之來源之標記的推測之連結為不正確),則非 推測之來源之標記可廣播作為推測之來源值為不正確之指 示。廣播非推測之來源之標記包含廣播該標記使排程器^ 再發出操作作為反應。舉例而言,於一些實施例中,若廣 播了標記和關聯於標記之狀態旗標設定於某一值時,則排 程器可反應,而於其他的實施例中,也許沒有關聯之狀綠 旗標’和排程器可配置成於廣播非推測標記時即再發出= 作。 、 推測之暫存器窵映 第7圖顯示分派單元104之另一個實施例,該分派翠 元1〇4可包含於微處理器1〇〇中。於此實施例中,分派翠 凡1〇4包括暫存器寫映134、堆疊檔案132(和/或記憶體檔 案136,时未顯示)、和推測之暫存器寫映 器寫映!34,推測之暫存器寫映8〇〇可將邏輯暫存器 轉譯至實際暫存器名稱。然而,推測之暫存器寫映_可 於㈣㈣132(和/或記㈣檔案136)將儲存於實際 暫存器中之值連結至載入操作之推測結果,而推測地寫映 邏輯暫存器名稱至實際暫存器% ‘’“ 、 仔器名稱。推測之暫存器寫映 可允許用於#作之推測之運算元值,該操作並不包括 到暫存11㈣值之定址模式。舉㈣言,若邏輯暫存 益具有有效的推測寫映, 铒臀存 -^ ^ .. ^ ^ 〜具有EAX作為來源運算 #作可,、有二個來源標記: 之非推測標記和由推測之暫存 4所&供 記。由於-旦得到操作之:=:8°〇所提供之推測標 、J采,原即立刻可發出該操作, 92515修正版 54 ^29 推測之暫存器寫映_可將資料消耗器經由旁通了任 二儲存之推測運算元標記直接連結到資料產生 是,於-些實施例中,推測之寫映可儲存
不疋貫際暫存器名稱之炉Λ:丨; A 哭狀能之… 於具有包含了推測暫存 时狀心之儲存5之重排序緩衝器之各實施例中卜 推測之暫存器寫映8〇〇包括推測 802和推測之暫存器寫 Μ寫映控制益 在 ”,、、啫存态8〇4。推測之暫存器寫映儲 包括-個:❹個之登錄項82〇。各登錄項82。可與 寫:ΐί輯:存:相關·’並指示目前該邏輯暫存器推測 ’”、、貫際暫存器之實際暫存器識別符812。各推測之暫 =映—亦可包括一個關於現正使用=:項 ::有效或無效之指示(圖中未顯示)。於—個實施例 測之暫存器寫映儲存器_可包括 邏輯暫存器。於其他的實施例中,推測之暫存器=: I:可包括較邏輯暫存如要少的登錄項。Si: 知例中,各登錄頊8 9 η -Γ a , ' 暫存器之指示 可包括—個目前登錄項對應之邏輯 之推暫存器寫映控制器8°2可配置成回應載入操作 連結二_已與由特定之實際暫存器名稱所識別之資料值 τ巾更新登錄項820。於所例示之實施例中, 2= = = =提供::其他的實施例中,此等 八 ^ 口己隐體檔案U6所提供。欲更新之 項。、可為載入操作目的地之邏輯暫存器之登錄 ,且祿項以包括由堆疊檔案η2所輸出針對該載 92515修正版 入操作之該實際暫存器識別符。 !二:週實各㈣ 暫存映:结作可提供至推測之暫存器寫映 推測之暫存@_ βΛΛ 邓暫存器更名, 源運算元之-的邏輯暫存器是否連社至之推測來 器。若暫存器寫映錯存器804中有際暫存 有效登錄,則i“… 個邏輯暫存器來源之 ' 、測之暫存器寫映控制器8〇2可幹+ γ 科W存$之登錄項中之實際暫存器 派至排程器!18時,分派單开彳以叮认 田該%作分 存器名稱作為推測之來坪 / A此推測之實際暫 抽、此,若將ADD運算提供至 推測之暫存器寫映8〇〇,和其中一 徒供至 刺之暫在55合j· 、 之來源具有於推 、暫存器寫映儲存器804中之有& # # 别於該替样0 - Τ(有效的且錄項’則對於識 J於該且錄項中之實際暫存器之標 m之推測之來%!曾一栖 故供作為至排程器 儲存推、,丨 "、“標§己。可配置排程器以如上述般 測之運算元標記’並於一些實施例十可 成回應於廣播於結果匯流排上之非推測之標記,而再 受出刼作(如果已經發出了操作)。 可回應將㈣對於特定之邏輯暫存器之資料值之产 =,而使在推測寫映内之登錄項無效。舉例而言,若藉日由‘ 分派單元1〇4而處理操作ADDEAX,ECX,則推測之暫曰 ^寫映控制器術可使現正指定給ΕΑχ之推測寫映登錚項 無效,因為ADD運算將修改該暫存器值。 一般而言’每當—個操作之推測之結果連結到暫存器 92515修正版 1333629 資料值時,則推測之運算元標記可提供至排程器11 8。於 一些實施例中,堆疊檔案1 32和/或記憶體檔案1 36以及追 蹤經過幾個循環之相依性之結構(例如,如於下文中所描述 之推測之暫存器寫映800),可使用來連結推測結果至暫存 器值。例如,分派單元104可當堆疊檔案132或記憶體檔 案1 3 6識別連結時而產生用於操作之推測標記。於一些實 施例中,可產生推測標記而不須使用此種推測寫映。例如, 一序列之指令可包括: ADD ΕΒΧ,ΕΒΧ (相加 1 (ADD 1)) MOV【定址模式A】,EBX (儲存1 (STORE 1)) ADD【定址模式A】,ECX (相加2 (ADD 2)) 這些指令可以為連續指令(例如,他們可以以程式次序而彼 此直接相隨)。這些指令可以分離成下列之組成操作(將邏 輯位址轉譯成實際位址而顯示),且於執行核心1 24内執 行: ADD PR2,PR2,PR1 (ADD 1) MOV【定址模式A】,PR2 (STORE 1) MOV PR3,【定址模式A】 (ADD 2之載入) ADD PR4,PR3,PR5 (ADD 2 之相加) MOV【定址模式A】,PR4 (ADD 2之儲存) 於分配ADD 2之組成之載入、相加、和儲存操作之 前,分配單元1 04可偵測由任何序列組成之操作之間,是 否有任何的相依性以允許推測之結果之連結。此外,由 STORE 1所儲存之資料可以連結至載入之推測結果(例 57 92515修正版 1333629 如,藉由堆疊檔案)。因為沒有***操作,則分派單元可在 同一個分派循環中具有所有需要用來偵測載入操作與相加 操作(由相同之指令導得的二個操作)之間相依性之所有的 資訊。根據此等二個相依性,分配單元1 04可連結由STORE 1,PR2所儲存之資料之標記至施;ί于作為ADD 2部分之載入 操作之推測結果。此推測之連結可接著允許分派單元將施 行作為ADD 2部分之加法運算之來源連結至儲存於PR2 中之值。因此,分配單元1 04可輸出指示PR2可推測地使 用為加法操作之運算元之其中一個來源,但是PR3為該運 算元之非推測之來源。因此,於一個實施例中,可藉由分 派單元而輸出之操作和運算元識別符如下: ADD PR2,PR2,PR1 (ADD 1) MOV【定址模式A】,PR2 (STORE 1) MOV PR3,【定址模式A】 (ADD 2之載入) ADD PR4,PR2*,PR3,PR5 (ADD 2 之相加,其中 PR2*為用於ECX之推測之來源,和PR3為用於ECX之非 推測之來源) MOV【定址模式A】,PR4 (ADD 2之儲存) 於其他實施例中,分配單元1 04可不配置成識別推測 之來源運算元用於依於載入操作之操作。取而代之,分配 單元104可包括操作轉換器108,如第8圖中所示,配置 將載入操作轉換成為一個或多個之包括暫存器至暫存器移 動操作之操作,以便將推測之載入結果提供至依附之操 作。當連結存在於載入操作之推測結果和由特定之實際暫 58 92515修正版 π名稱所識別之資料值之 _ 轉換。於-些實施例中,此…?,而施行载入操作之 該連結 <貞_ U 連結制器182所提供, U6。於其 且检案132和/或記憶體檔案 應譬如有:件之::結相器182可包括_ 条件之移動操作而連結資 於一個竇始加士 '卄值之邏輯,如上所述。 輸入運曾螞,’呆作轉換器180可接收用於操作之 延ν碼’以及是否债測到暫 ^ 果之間之連# 存$值和彳呆作之推測之結 連結,^二操作為载入和已谓測到推測之 乍轉換态18〇可輸出一個 操作之運算喝。分派單元_ °暫存器移動 輸出使用藉由連結偵測單元182 而分至暫存器移動之來源運算元標記, 展皙存森至暫存器移動操作。 之暫中,可配置操作轉換器18°以分派所得 至::=動而使得排程器儲存所需用於暫存器 移動和原來载入操作之運算元 。口 存器移動操作之^ ;暫存器至暫 。。 操作之且錄項中。此使得若價測得暫存写至暫在 盗移動操作之推測結果為不 °暫存 為原也少# , 雉的話,則可再發出操作作 人、作。為了執行此操作,額外的來源運算元 2各錄改之載入操作獲得之暫存器至暫存器移動操 _ -者’於-替代霄施例中,可修改已經存在之來 广以施行此操作)。於—些實施例中m施行原來載:: 址之計算和/或比較連結之資料值與實際载入結果資料 往而驗證暫存器至暫存器移動操作之推測結果。若該推測 ,··。果為不正確,則可存取該資料快取記憶體以便獲得正確 92515修正版 59 1333629 的載入結果。再廣播更正之載入結果可導至排程器ιΐ8再 發出任何使用不正確值所執行之依附操作。 於一些實施例中,可配置操作轉換器18〇以將載入操 作轉換成雙性質(duai-natUfe)操作。如同載人操作此雙 性質操作可包含位址計算和f料移動。而不同於载入操 作’由雙性質操作所起始之f料移動為暫存器至暫存器移 動。再者’由雙性質操作所起始之資料移動可於位址^算 已,丄70成之别發生。可使用位址計算以驗證推測之連結是 Η正確。若推測之連結為不正確,則可再發出雙目的^操 作作為正常之載人操作,和於完成資料快取存取,其結果 可再廣播至依附之操作。 八a 下列之例子顯示不同之實施例如何可以轉換此範例 序列操作: ADD PR2,PR1,PR1 (ADd 1} (STORE 1) (LOAD 1) STORE【定址模式a】 PR:
LOAD PR3,【定址模式A ADDPR4,PR35PR3 (ADD 2) 一個或多個***操作而 現來修改用於定址模式 式A所計算之位址和於 於PR2中之資料值和從 於此序列中,特定的操作可由 分離。然而,假設沒有***操作出 A之值’或者修改儲存於從定址模 PR2中之資料值,則可偵測到儲存 92515修正版 60 1333629 足址模式A所計算之位址之間的推測之連結。 於-個實施例中,為回應由推測連結偵測器18 測連結㈣,操作轉換器180可轉換l〇ad ::操作除了指明暫存器來 1此雙目的移動操作亦可指明定址模式八’而使得可 執仃對於LOAD 1之位址外筲。妙而 位址彳开然而,一旦可得到ECX後, 二立即發出雙目的移動操作之移動部分。_旦廣播雙部 刀刼作之移動部分之結果後,可使 作為谨筲-^ v f切保怍之推測結果 為運异70 m ADD 2。當施行位址計算時,可驗蛾 =結。若該推測之連結為不正確,則載入/儲存單元; 至排程器’該指示使得排程器再發出雙目的移動 刼作作為載入操作。可廣播載 出链如诛忭之結果,而導致再發 作二Λ 何已使用移動推测結果執行之依附操 作 值付注意的是,可使用置—4,L ^ ™ 早—排耘器登錄項而排程此雙 !的::,和排程器118可選擇雙目的操作用於發出二 移動。 位址“和—次用於暫存器至暫存器 =個替代實施例中,操作轉換器180可回應偵測到 之推測連結,而轉換LOAD 1成為-個i 战马一個連結之操作,load R3,【定址模式A】和M〇v pR3 ^ ’ R2。不右先前包含雙 目的單一個操作之例子,此等 3 ^ ^ 110 ^ ^ 导連結知作可各別取得於排程 二U二:登錄項,以代替共用單一排程器登錄項。當暫 存益至暫存益移動操作發出時,壁 /+ s如ADD 2之依附操作可 使用PR3之推測值作為運算元 平作了 值而發出。可標記LOAD操 925丨5修正版 61 1333629 作作為特定型式之載入操作,而使得若決定該推測之連結 正確時,不廣播該载入之結果標記(或者,廣播該移動之結 果為正確,和依附操作不應再發出之指示)。同時,若載入 和移動操作於同一循環中廣播他們的結果,則可提供一指 不而使得載入結果用於依附操作而非移動之結果。於一』 實施例中,此種情況可藉由加上額外的位元至微處理器二 ⑽内之各標記匯流排而發生,該位元指示排程器將對哪 -個標記反應。若推測連結為不正確(例如,當藉由载入之 結果標記之廣播所指示),則可取消移動操作⑽如,排程 =?=排程器118可解除分配現用於分配該暫存器 出)排程②登錄項,而使得該操作不能再發 二::夕實施例中,可配置排程器再發出任何 =結果之依附操作’若載入結果標記再出現於結果匿流 排上。於一個替代實施例中, 出二個連-之掉作…一 排“ 118成同時發 使用讀i 施例中’二個連結之操作可 將由 〜際暫存③檔案,該實際暫存器㈣㈣ 夺由原來的未修正之L0AD i操作所使用。 、 第9圖顯示轉換載人操作以包括㈣ 器移動操作之一個方法之實 。至暫存 1401 - a *如圖中所示,於步驟 ,右偵測到由特定標記所識別之穴 操作之推測結果之間的連結(例如值與載入 檔案),則可修改載入操作以包括_“:案或記憶體 連結到推测載入結果之資料值之栌::异兀標記等於 動操作,如於步驟刚所示二驟之暫存器至暫存器移 於步驟1405,暫存器至暫 92515修正版 62 存器移動操作之勃 及伴隨著載入之处果=3輪出該標記所識別之資料值以 、”口果標記於蛀婁 於步驟1409可驗浐抽;、排上。 來載入之位址計管)。結果(例如,藉由施行對於原 不再廣# 右推测結果為正確,則載入之結果可 个丹贗播於結果匯流排 ^ 結果,並伴p著饮 (或可取而代之,可再廣播載入之 之扑…附操作不應針對再廣播之結果而再發出 以恢復正確之载入結則可存取資料快取記憶體 匯流排上。此可接著造成任何使 之:發::: 附操作再發出 推I。果值之已發明依 器至暫存器移_作之:兄’在施行暫存 為 、刖,可驗證推測結果。若推測結果 為不;:確、,則不施行暫存器至暫存器移動操作。 沒有連H於载入#作之推測結果和暫存器資料值之間 則列如’載入之位址模式於堆疊檔案中未命中), ,體載入。載入可正常地執行’存取該資料快取記 =體和廣播其結果於結果匯流排上,如步驟1417和1419己 /vf >τ^ ° &·ϋ1夫取記憧 第,ΙΒ圖顯示依照一個實施例之微處理器。於此實施 % ’微處理器包括循跡(trace)快取記憶體16〇,配置該 :跡快取記憶體160以快取指令之循跡和/或至少部分: 广作。於所示實施例中’循跡快取記憶體 “器之後端,而使得當各操作被退除時,藉由猶跡填= …62而建立循跡。若再取出循跡内之操作時,可從循 925! 5修正版 63 1333629 跡快取記憶體1 6 0取出握柞% τ >入& & π ®锑作而不從指令快取記憶體1〇6或 系統記憶體2〇0取出操作。值得注意的是於其他實施例 中,循跡填塞單A 162可包含於微處理器之前端(例如,在 分派單元104之前)。 第10圖顯示循跡快取記憶冑160之一個實施例。如 圖中所示’循跡快取記憶體160可包括一個或多個循跡快 取記憶體登錄項170。各循跡快取記憶體登錄項170儲存 指令或操作之循跡172β循跡172可包括從多於一個之基 本區塊來之幾個指令或操作。於特定循跡内之—些操作可 依於包括於循跡内之-個或多個分支操作,而於^循跡 内之其他操作可不依於該等分支操作。於一些實施例中, 循跡m亦可包括流程控制資訊以識別包含於各循跡内之 各#作是否依於包含於該循跡内之一個或多個分支操作, 是否於建立循跡時亦取得該等分支操作,和若當下一 =分支操作時,分支操作以不时式解決㈣,包括二 籤(label)以識別控制將轉換至之操作或指令。 π 各循跡可包括已最佳化之操作。最佳;可包括減少循 /之#作的大小和/或數目,而使得於該循跡内之操作伯 用㈣快取記憶體登錄項17〇和/或排程器US内較少之空 間。最佳化亦造成循㈣之—個或多個操作變成可較^ 出(例如’藉由減少於相同循跡中各操作間 a 性),等等❶ 、丨祁侬 若有任何由於執行該循跡172内之 造堆疊指標(例如,㈣)之改變,各循跡快取㈣= 64 92515修正版 170可包括指示該改變之次告 各操作時,堆燕㈣* / 5 。虽处理包含於循跡内之 術,若_2(>2(或記憶體槽案控制器 資訊以更新該堆“的話)可使用此 案之各操作之定… ㈣輸入到該堆疊檔 处 模式,和/或調整在堆疊擋案儲存器内之 登錄項之定址搓4«斑,, ^ 之一… 式。舉例而言,包括各加4至續疊指標值 作之猶跡快取記憶體登錄項17〇,當分派該等三 = 可指示該堆疊和/或記憶體檔案控制器應加u 且#曰標疋址模式調整值。若另一個操作設定堆疊框指 標專於堆疊指標’則當分派該操作時,循跡快取記憶體登 錄=1 70可包括指示堆疊和/或記憶體檔案控制器應設定 補f員值等於〇之資訊(或設定該堆疊框指標定址模式調整 值等於堆疊指標定址模式調整值)。 於各循跡快取記憶體登錄項170中包含指示對該堆疊 指標和/或堆疊框指標改變之資訊174,可使該堆疊和/或記 憶體檔案保持正確,甚至於分派幾個循跡以後。沒有此資 訊,循跡内各操作之最佳化於堆疊和/或記憶體檔案處理該 等最佳化操作後’可能造成堆疊和/或記憶體檔案内之錯 誤。舉例而言,指令序列可包括: PUSH<> MOV EBP,ESP PUSH<> 這些指令可分解成下列之操作序列: MOV【ESP-4】,<> 92515修正版 65 1333629 ADD ESP,ESP,-4 MOV EBP,ESP ADD ESP,ESP,-4 MOV【ESP】,<> 值得注意的是幾乎所有之上述操作皆依於由先前操 作所產生之資料值。因此,當等待先前操作之結果出來時, 這些操作於排程器中有極大可能性無法進行。當循跡填塞 單元1 62處理該一連串操作,以儲存作為循跡快取記憶體 登錄項170内循跡172之一部分時,循跡填塞單元1 62可 施行某些轉換以便減少各操作之間之資料相依性。例如, 上述之操作序列可最佳化為: MOV【ESP-4】,<> ADD ol,ESP,-4 MOV ΕΒΡ,οΙ ADD【ESP-8】,<> 」· ADD ES>P,ESP,-8 此外,資訊1 74指示在循跡内有共-8之ESP偏置,和 + 4之ESP-ESP偏置可包括於循跡快取記憶體登錄項170 中。循跡填塞單元162可於當處理各原來的操作時一次更 新一個操作資訊,和儲存最後值於包括最佳化操作之循跡 1 72之循跡快取記憶體登錄項1 70中。 由於施行於各操作之轉換,於上述例子中之各最佳化 操作現僅依於ESP值。因此,一旦可取得ESP值時’於循 跡中之所有之操作就立刻變成可發送。然而,某些最佳化, 66 92515修正版 1333629 譬如於ADD運算中將ESP “定位置⑷〇tmed)”至暫時暫 存器〇1之一個最佳化,會模糊資.訊,該資訊否則將由堆疊 和/或記憶體檔案控制器所使用,以維持堆疊和/或記憶^ 檔案之正確性。於此範例中,定位置轉換(sl〇tificati〇n transformation)隱藏M〇VEBp,〇1操作實際上係指定從堆 疊和/或記憶體檔案控制器來之堆疊指標EBp目前的值之 事實,該記憶體檔案控制器可配置成僅藉由比較暫存器邏 輯識別符而偵測此指定。由於執行循跡172内之操作,包 含於循跡快取記憶體登錄項17〇内之資訊174指示可藉= 堆金和/或§己憶體檔案控制器而使用Esp_ebp偏置等於 + 4,回應處理於該循跡中之操作而以適當地調整定址模式 調整值、定址模式、和/或偏置值。 因此,於一些實施例中,最佳化譬如上述之定位置轉 換可導致-些操作將以某種格式儲存於循跡快取記憶體登 錄項170内,該格式於堆疊和/或記憶體㈣中將不會被辨 認出來,即使可藉由於堆疊和/或記憶體檔案中命中或藉由 導致更新一個或多個定址模式、定址模式調整值、和偏 置值而辨認出這些操作之未最佳化形式。不管這些操作有 多混亂,然而,由於包含資訊174於各循跡快取記憶體登 錄項1 70内,堆疊和/或記憶體檔案可保持正確。 若從多於一個基本區塊來之操作係包含於循跡内,則 該循跡可包括對應同一基本區塊内各組操作之資訊^ Μ。 堆疊和/或記憶體檔案控制器可依於與各調整值相關聯之 基本區塊是否分派和/或預測將要(或實際地)執行,而使用 925】5修正版 67 1333629 2 =資訊174。例如,循跡可包括從二個不同之基本區 和母一群操作各一組之資訊174。第二組操作之執行可 ::,包含於第一組操作中之一個分支之採取。當分派該 盾跡I若預測未採取該分支,則堆疊和/或記憶體楷粋 制器可使用關聯於第一組操作之資訊174來作調整。然工 而堆疊和/或記憶體檔案控制器可忽略關聯於另一組操作 之資訊174,因為該分支預測指示將不執行該等操作。'、
MlM t m Α μ. 第u圖顯示電腦系、统400之一個實施例之方塊圖。該 電腦系統400包括處理器100,該處理器1〇〇經由匯流排 橋接器402耦接到各種系統組件。處理器1〇〇可包括如上 述之分派單元1〇4、堆疊檔案132、排程器118、和/或推 測暫存器寫映800之實施例。可能並考量有電腦系統之其 他實施例。於所述系統中,主記憶體2〇〇經由記憶體匯流 排436耦接到匯流排橋接器4〇2,和圖形控制器4〇8經由 AGP匯流排410耦接到匯流排橋接器4〇2。有幾個ρα裝 置412A至41 2B經由PCI匯流排4 1 4耦接到匯流排橋接器 402。亦可設有第二匯流排橋接器416以容納電介面經由 EISA/ISA匯流排430至一個或多個EISA或ISA裝置418。 於此例子中,處理器100經由CPU匯流排424而耦接至匯 流排橋接器402,和耦接至非必須之[2快取記憶體428。 於一些實施例中’處理器1 〇〇可包括整合之L1快取記憶 體(圖中未顯示)。 匯流排橋接器402提供處理器10〇 '主記憶體4〇4、 68 92515修正版 1333629 圖形控制器408、和附接到PCI匯流排414之 #衣置之間 之"面。當從連接到匯流排橋接器4〇2之其中—個裝置接 收操作時,匯流排橋接器402識別該操作之目標(例如,特 定的裹置,或於PC!匯流# 414之情況時,該目標為於Μ 匯流排4i4上)。匯流排橋接器4〇2路由操作至該目標裝 置。匯流排橋接器402通常將操作從由來源裝置或匯流排 所使用之協定轉譯至由1¾目標裝置或匯流排所用之協:。 除了提供介面至PCI匯流排414之isa/Eisa^^·排 之外,第二匯流排橋接器416可合併額外的功能。第:匯 流排橋接器416之外部或與第二匯流排橋接器416整合之 J輸出控制益(圖中未顯不)亦可包括於電腦系統彻 内’以提供用於鍵盤和滑鼠422和用於各種串列和並料 (之:中作二援。於其他的實施例中,外部之快取記憶體單元 (圖中未』不)亦可輕接至處理器1()()與口 排424。或可取而代之,外部㈣^ 接匯流排橋接器402,和用於外部快取記憶體之快 取i己憶體控制邏輯可整a於匯法排 心 、 V㈣们登口於匯机排橋接器402中。L2快取 =體似以背面結構㈣至處理器⑽。應注意的是u 己憶體428可與處理器刚分離,與處理器100整人 1〇〇一之卡半71如,凹槽1或凹槽A),或甚至與具有處理器 1〇〇之丰導體基板整合。 可义=憶體細為應用程式儲存於其中,和處理器100 ==憶體200取得應用程式而主要地執行之記憶 主记憶體200包括動態隨機存取記憶體 92515修正版 69 1333629 (RAM)例如,可適合使用複數個庫(匕⑽乂)之同步動能产 機存取記憶體(SDRAM)或Rambus公司之Rambus動態隨' = 存取記憶體(RDRAM)。 PCI裝置412A至41 2B係例示種種之週邊裝置,嬖如 網路^面卡、視訊加速器、聲頻卡、硬碟或軟碟機或驅動 控制器 '小電腦系統介面(SCSI)配接器和電話卡。同樣地, MA裝置418為例示之各種型式的週邊裝置,譬如數據機、 聲曰卡和言如GPIB或場匯流排介面卡之各種的資料 取卡。 又 提供圖形控制器408以控制顯示器426上文字内容和 影像之顯現。圖形控制器4〇8可具體實現一般為此技藝方 面已知之典型的圖形加速器,以顯現能有效地移入主:憶 體200和從主記憶體200移出之三維資料結構。圖形控制 器408因此可以是AGP匯流排41〇之主控者,其中該圖形 控制器408可請求和接收存取至匯流排橋接^術内之目 標介面’ Φ此獲得至主記憶體2〇〇之存取。專用圖形匯流 排可提供從主記憶體404快速取得資料。對某些操作而 言’圖形控制器408可進-步配置以於術匯流排41〇 上產生pci協定異動。因此匯流排橋接器4〇2之AGp介面 可包括支援AGP協定異動以及PCI協定目標和起始端異動 之功能。顯示器426為影像和文字内容可呈現於其上之任 何的電子顯示器。適當的顯示器426包括陰極射線管 (CRT)、液晶顯示器(LCD),等等。 值得注意的是,雖然於上述說明中AGp、pci、和似 92515修正版 70 1333629 或EISA匯流排已用作範例,但是當需要時可替代任何 匯流排架構。又值得注意的是,電腦系統4〇〇可以是包^ 額外處理器(例如,處理器⑽a顯示為電腦系統彻二非 必須之組件)之多重處理電腦系統。處理器i〇〇a可相似於 處理㈠〇〇。詳言之’處理器職可以是處理器ι〇〇之相 同的複製品。處理器100a可經由獨立匯流排(如第“圖中 所示)而連接至匯流排橋接器4〇2,或可與處理器1〇〇共用 ;CPU匯流排424。再者,處理器⑽&可㈣至與u快取 記憶體428相似之L2快取記憶體428a。 兹參照第12圖,顯示電腦系統彻之另—個實施例, 該電腦系統400可包括如上述之分派單元1〇4、堆疊槽案 ⑴、排程器118、和/或推測暫存器寫映_。其他的實施 為可月b並予以考量。於第12圖所示之實施财,電腦系 統400包括幾個處理節點612八、6ΐ2Β、、和612〇。 各處理節點經由包括於各個別處理節點㈣至“2D内 之記憶體控制器祕至嶋而輕接至個別之記憶體 611八至614D。此外,處理節點612A至612D包括用於處 理:點612A至612D之間通訊之介面邏輯。舉例而言,處 P 2 612A包括用來與處理節點6i2B通訊之介面邏輯 用來與處理節點012C通訊之介面邏輯618B,和用 1又另—處理節點(圖中未顯示)通訊之第三介面邏輯 同樣地,處理節點612B包括介面邏輯、 8F’處理雖點612C包括介面邏輯川川η、和 和處理節點6丨2D包括介面邏輯6丄8)、6丄8κ、和 92515修正版 71 W629
Zil理節點61_接以經由介面邏輯峨而與複數 ^輪出裝置(例如,於雛菊鏈配置之叢置620入至620B) 。裝處理節點可以相似之方式而與其他的輸入/ 處^點㈣至612D施行以封包為基礎之連結,用 向理即點間通訊。於本實施例中’該連結係以數組之單 二路來實施(例如,線路624A用來傳輸封包從處理節點 節點6=理節點612β,和線路624B用來傳輸封包從處理 水 至處理節點612A)。其他組之線路624〇至624h 一舻傳輪封包於其他的處理節點之間’如第12圖中所示。 ’線路624之各組可包括一條或多條之資料線, 示傳應於該等資料線之時脈線、和一條或多條指 〆、】 匕之型式之控制線。對於處理節點之間之通 :點=可以快取記憶體一致性之方式操作,或對於處理 即點和輸入/輸出裳置之間之通訊,連結可以非一致 =呆:(或匯流排橋接器至譬如pci匯流排或脱 =結輸入/輪出匯流排)。再者’連結可使用如所: 之輸入/輪出裝置之間之離菊鏈結構而以非一致性 注意的是將從—個處理節點傳輸至另—個處㈣ Γ 可通過—個或多個之中間節點。舉例而言,〜
處理即點㈣傳輪至處理節點612D 或處理節點612C,如第12圖中所*。可;^即 何適當之路由彡當宜#/ ^ 第12圖中所亍實〇 統4°〇之其他實施例可包括較 所不貫知例中更多或更少之處理節點。 92515修正版 72 1333629 ,封包於各節點之間於線路624上可傳輸為 :個或夕個位元時間。位元時.間可以是於相對應時脈線上 時脈訊號之上升或下降波緣。封包可包括用於起始里動之 命令封包1於維持快取記憶體一致性之探測封包、和反 應於從探測和命令而來之反應封包。 、處理節‘點612A至612D除了記憶體控制器和介面邏輯 以外’尚可包括一個或多個處理器。帛義而言,處理節點 包括至少-個處理器和#需要時可選擇性地包括用於與記 憶體和其他邏輯通訊之記憶體控制器。詳言之,各處理節 點612A至612D可包括一個或多個處理器ι〇〇之複製品。 外部介面早兀18可包括節點内之介面邏輯618,以及記憶 體控制器61 6。 〜 己隐體614A至61 4D可包括任何適當的記憶體裝置, 例如,記憶體614A至614D可包括一個或多個rambus mam (RDRAM)、同步 DRAM (sdram)、靜態 ram 等。 記憶體614A至614D之間劃分電腦系統4〇〇之位址空間。 各處理節點612 A至6丨2 D可包括用來決定哪一個位址寫映 至614A至614D中哪一個記憶體之記憶體寫映,而因此對 於特定位址之記憶體請求將路由到處理節點612八至6i2D 中之該個處理節點。於一個實施例中,對於電腦系統4〇〇 内之位址之一致點為耦·接到對應於位址之記憶體儲存位元 組之記憶體控制器61 6A至61 6D。換言之,記憶體控制器 616A至616D負責確保對應記憶體614人至614D之各記憶 體存取以快取一致性之方式發生。記憶體控制器616八至 92515修正版 73 1333629 616D可包括控制電路,用來介接於記憶體至。 此外’記憶體控制器616A至616D可包括田认从 。 請求之請求仵列。 了…於件列記憶體 介面邏輯6似至6肌可包括用於純從連路來之封 包之各種緩衝器,和用於緩衝將依於連結而發送之封包。 電腦系統400可使用任何適當的用於傳輸封包之流程二制 機制。舉例而言,於一個實施例中,各介面_ 由介面邏輯所連接到之連結另一 LA 力鳊之接收益内各型式緩衝 7之計數數目邏輯並不傳送封包,除非接收介 輯具有間置之緩衝器以儲存封包。告 于57己田猎由路由出封包而空 出接收緩衝器時’接收介面邏輯僂輪 輸讯息至發送介面邏 =曰不緩衝,已經間置。如此之機制可稱之為“連動 式 糸統。 輸入/輸出裝置620A至620R可,、;b k v > 饱 主620Β可以是任何適當的輸入/ :出裝置。舉例而言’輸入/輸出裝置嶋至62〇β可包
用於與另一電腦系統通訊之各I 合装置,该4裝置(例如,網 路"面卡或數據機)可耦接至該 力罨細糸統。再者,輸入 :出裝置㈣…細可包括視訊加速器、聲頻卡、硬 =軟碟機或驅動控制器 '小電腦系統介面(scsi)配接器 錄电:卡‘聲音卡、和譬如GPIB或場匯流排介面卡之各 種的資料獲取卡。值得、'主立从a 思的疋術語“輸入/輪出裝置,,和 ^週邊裝置,,於此文中有相同的義意。 =此處所使用之“時脈週期(eiGek eyeie)”或“週期,,二 '、日時間間距’於此時距期間各種階段之指令處理管線 92515修正版 74 1333629 完成其工作。記憶體元件(譬如暫存器或陣列)依照定義時 脈週期之時脈訊號而獲取各指令和計算之值。例如…己憶 體元件可依照時脈訊號之上升或下降波緣而獲取數值°。叫 ^熟悉'此項技藝者一旦完全瞭解本發明上述揭示内容 後,顯然的可對其作許多的變更和修飾。下列申請專 圍將欲解釋以包含所有之此等變化和修飾。 [圖式簡單說明] 由翏考以上之詳
/J 較佳地瞭解本發明,其中: 第1A圖顯示依照一個實施例之微處理器之方塊圖。 第1B圖顯示依照另—個實施例之微處理器之方塊圖 第2A圖顯示依照一個實施例之分派單元之方塊圖。 第2B圖顯示可使用於一個實施例之範例位址模式。° 第2C至2E圖顯示範例程式指令和範例堆疊,和 一個實施例中產生之堆疊檔案内容。 、 第3圖為顯示連結载入操作之推測結果至由 所識別資料值之一個方法實施例之流程圖。 第4A圖顯示依照一個實施例之分派單元。 第4B圖顯示可使用於一些實施例之範例位址模式。 第5圖顯示依照-個實施例之排程器之方塊圖。 第6圖為回應於資料推測為不正確 和再發出操作之方法實施例之流程圖。 發出知作 f 7圖為依照-些實施例之分派單元之方塊圖。 弟8圖為依照另些實施例之分派單元之方塊圖。 92515修正版 75 1333629 第9圖為 測恢復之另__ 顯示發出具有推測資料值之操作和從錯誤推 方法之流程圖°· 第 塊圖。 1 〇圖顯示依昭 、#、、、 一個實施例之循跡快取記憶 體之方 第11圖顯示依照一個實施例之電腦系統。 第12圖顯示依照另一個實施例之電腦***。 [主要元件符號說明] 18 外部介面單元 100、 l〇〇a微處理器 102 退除佇列 104 分派單元 106 指令快取記憶體 108 預先取得單元 116 暫存器檔案 118 排程器 124 執行核心 126 ' 222 載入/儲存單元 128 資料快取記憶體 130 結果匯流排 132 堆疊檔案 134 暫存器寫映 136 記憶體檔案 160 循跡快取記憶體 162 循跡填塞單元 170 循跡快取記憶體登錄項 172 循跡 174 資訊 180 操作轉換器 182 連結偵測器 200 系統記憶體 202 堆疊檔案控制器 204 堆疊檔案儲存器 206 ' 406 定址模式 208、 408 標記 210 邏輯暫存器名稱 214 位移量 220 > 420 ' 522 ' 820 登錄項 301 > 1405 303、305 至 313、801 、1409 、 1417 、 1419 ' 803、 步驟 805 至 815、1401、1403、 76 92515修正版 1333629 400電腦系統 402記憶體檔案控制器 404 記憶體檔案儲存器410 AGP匯流排 62〇A至620b輸入/輸出$ ,,^ 8〇0推測暫存器寫映 推測之暫存器寫映控制器 推測之暫存器寫映儲存器 實際暫存器識別符 412A 至 412B PCI 裝置 416 匯流排橋接器 422 鍵盤和滑鼠 426 顯示器 430 EISA/ISA 匯流排 502 排程器控制器 510 操作碼欄 514 推測標記 520 標記匯流排 614A至614D記憶體 618A至618L介面邏輯 624A至624H 線路 802 804 812 414 PCI匯流排 418 hSA或ISA裝置 424 CPU匯流排 428 ' 428a L2快取記憶體 436 記憶體匯流排 504 操作儲存器 512 非推測標記 516 結果欄 612A至612D處理節點 92515修正版 77
Claims (1)
1J33629 Γ___ 傳F月价修正本I 拾、申請專利範圍: 1. 一種資料推測系統,包括: 記憶體檔案’該記憶體檔案包括配置成儲存定址本 式和標記之登錄項,其中若記憶體操作之定址模式匹画 儲存於該登錄項中之該定址模式,則該記憶體楷案配置 成連結由該標記所識別之f料值至該記憶體操作 測結果,以及 執行核心,耦接至該記憶體檔案,其中該執行核心 執行依於該記憶體操作之另-操作時,存取該 推測結果; 、其:該記憶體操作之該定址模式包括邏輯暫存器 之識別符,和並中哮今陪骑钟 器e ⑽體㈣配置成預測該邏輯暫存 盗疋否正被特定為一般目的暫 臀存或堆豎框指標暫存 态以便判疋該記憶體操作之.該定 价η久拉在1 模式是否匹配儲存 於該且錄項中之該定址模式。 2.如申s青專利範圍第1頂之备姑 .. 、糸統’其中若該記憶體檔案預 ““體#作之該定址模式中之該邏輯暫存 β係正用來作為該堆疊 g, ψ ^ ^ 知瞀存态,則該記憶體檔案 配置成判定該記憶體操作 .於該登錄項中之…丄 址模式並不匹配儲存 巧T之該疋址模式;以及 若該記憶體檔案預測該邏輯暫 續一勒·曰专存态係正用來作為 ° 的暫存器,則該記憶體檔案配置成 > 兮·ν障 體操作之該定址模式相等於 、成’方以5己憶 址模式,〜 、子於該登錄項中之該定 才、弋判叱該記憶體操作之該定 斗 &址模式匹配儲存於該 92515修正版 78 第93101345號專利申請案 < 9 9年8月3 1日' 登錄項中之該定址模式。 *如申5奢專利範圍第2項之糸έ* . 间罘2項之系統,其中該記憶體檔案進一 ::置成’若該記憶體檔案預測包含於該記憶體操作之 疋址模式中之今遵短射左〆 邏輯暫存益係正用來作為該堆疊框 夺曰標暫存斋,則不公献新沾炊& 刀配新的且錄項以儲存該記憶體操作 之該定址模式;以及 —右該。己隱體檔案預測該邏輯暫存器正用來作為該 ::目的暫存器’則該記憶體檔案配置成,若該記憶: =該定址模式不相等於儲存於該登錄項中之該定 :莫式,分配該新的登錄項以儲存該記憶體操作之該定 址換式。 4·如申請專利範圍第1項 項之系統,其中該記憶體檔案包括 複數個登錄項’和里中該印情 触^ — ,、Τ这記隐體檔案配置成,若該記憔 體檔案預測該邏輯暫存器係 / 則判定該記憶體操作之該定址模式並不匹配儲 存於該複數個登錄項中之任何之複數個定址模式。 5.如申請專利範圍第έ 、包批 項之糸統,其中該記憶體檔案包括 複數個登錄項,和其中該紀情於 隐體檔案配置成,若該記憶 體檔案預測該邏輯暫存器伟正用类 于盗你正用來作為該堆疊框指標 晋存器’則不分配該複數個登錄箱 盆 其中一個以儲存該 s己憶體操作之該定址模式。 1申請專利範㈣1項之系統,其中該記憶體檔案配置 ^應偵❹Η叫指令而預測該邏輯暫存器係正用來 作為該堆疊框指標暫存器。 92515修正版 79 第93101345號專利申請案 (99年8月31日] .如申請專利範圍帛1項之系絡,* 成回應偵測到返回#人、、、,、中該記憶體檔案配置 作為該-般目的暫存日:而預測該邏輯暫存器係正用來 8. 如申請專利範圍帛i 成回應偵測到將—堆聂、、/、中該記憶體檔案配置 之择作而箱·標之值複製入該邏輯暫存器 心部作而預測該邏輯.暫 、杆·1仔斋 標暫存器。 D '、正用來作為該堆疊框指 9. 如申請專利範圍第Μ 成回應偵測到進入指人,’、/、中該記德體檔案配置 作為該堆疊框指標而預測該邏輯暫存器係正用來 10. 如申請專利範圍第1項之系 成藉由追蹤目前之呼叫深产、、',其中該記憶體檔案配置 正被使用,其申J^度,預測該邏輯暫存器係如何 八r a5己憶體檔 令而增加該目前之呼叫深声.置成回應偵測到呼.叫指 減少該目前之呼叫深声。又和回應偵測到返回指令而 11.如申請專利範圍第1〇項之系 時’該登錄項鍺存相等於 … /、中¥分配該登錄項 度值。 ;3 引.呼' 叫深度之值的呼叫深 】2.如申請專利範圍第11項之系祐 體操作時,該目前呼叫深卢’、、’,其中若當處理該記憶 中之該呼叫深度值:之值不等於錯存於該登錄項 體操作之該定址模i 罝成利疋該兄憶 祉模式並不匹配儲存於該登錄項中之該 定址拉式;以及 D 若备處理該記憶體操作時該目前呼叫深度之該值 92515修正版 80 I333629 第93101345號專利申諳索 (9 9年8月3 i日7 相等於儲存於該登錄項中之該呼叫深度值,則該記憶體 檔案配置成,若該記憶體操作之該定址模式相等於儲存 於該登錄項令之該定址模式,判定該記憶體操作之該定 址模式匹配儲存於該登錄項中之該定址模式。 13·如申請專利範圍帛!】項之系統,其t若#處理該記憶 體操作時該目前呼叫深度之該值不相等於儲存於該登 錄項中之該呼叫深度值,則該記憶體檔案配置成,當於 新的登錄項中處理該記憶體操作時,分配該新的登:項 以儲存該記憶體操作之該定址模式和儲存該目前呼叫 深度之該值。 14·如申請專利範圍第U項之系統,其中若健存於該登錄 項中之該定址模式包括該邏輯暫存器之該識別符,則該 記憶體檔案配置成’若當處理一操作時該目前呼叫深度 之值相等於儲存於該登錄項中之該呼叫深度值,回應分 派當被執行時修改該邏輯暫存器之值的操作而使:二 錄項無效;以及 i 且 卉宁該記憶體檔案 ‘ ^ m ®唤段孩操作時該 刖呼叫深度之該值不相等於儲存於該登錄項中之該 叫深度值,則回應分派該操作而不使該登錄項益效。 15.如申請專利額第丨項之系統,其中該記憶體槽案包 其他登錄項,其中該其他登錄項儲存與堆疊有關之定 、式其中該記憶體檀案包括用以補償對堆疊指標之 整的機制,和其中該記憶體檔案配置成當判之 址模式是否匹配儲存於該其他登錄項中該與堆疊有 92515修正版 81 第93101345號專利申請案 (99年8月31日; 之定址模式時,使 整。 使用該機制以補償對該堆疊指標之調 1 6 ·如申請專利範圍第 置成,回庫八、r a 5項之系統,其中該記憶體檔案配 罝成口應刀派當被執行 作,藉由佟抟妙产 町^汉这堆叠扣軚之該值的操 祕田":存於該其他登錄項中之位移而補償對节 堆疊指標之調整。 夕叩補1貝對該 17. 如申請專利範圍第15項 置成藉由修改定址模H敕記憶體槽案配 、式調整值而補償對該堆疊指標之 ° 己憶體檔案配置成將該定址模式調整值施 加至新的操作之宗μ 值苑 、 果式,之後比較該新的操作之該定 、式”儲存於該其他登錄項中之該與堆疊有關 ,模式,以便判定該新的操作之該定址模式是否匹配儲 存於該其他登錄項中之該與堆疊有關之定址模式。 18. 如申請專利範圍第η 、之糸統,其中該記憶體檔案配 罝成,若該新的操作之句r # U M i ㈣探作之該疋址模式不匹配儲存於該其他 登錄項中之該與堆疊有關之定址模式,則分配新的登錄 項以-儲存該新的操作之該定址模式,其中該定址模式調 整值施加至儲存於該記憶體槽案登錄項中之該新的操 作之該定址模式。 19. 如申請專利範.圍第i項之系統’其十該記憶體檔案配置 成回應分派當被執行時修改該堆疊框指標之值的操作 而修改堆疊框指標定址模式調整值;以及 其中該記憶體檔案配置成將該堆疊框指標定址模 式調整值施加至該記憶體操作之該定址模式,之後比較 82' 92515修正版 1333629 操作之該定址模式與儲存於該登錄項中之該 疋X U便判定該記憶體操作之該定址模气 以 配儲存於該登錄項中之該定址模式。……否匹 20·如申請專利範圍第i項之系統’進一 人 個登錄項之堆疊檔案,其t若操作之該定址二= =:於該複數個登錄項中之其中一個登錄 :模式,則該堆疊檔案配置成,若該 定: 括該邏輯暫在哭+ 疋址镇式包 、 之該識別符,分配登錄項以儲存节 之該定址模式。 巧^谲存該操作 21.如申請專利範圍第2〇項之統,i 括複數個登錄項,和其中若該操:己憶體檔案包 配儲存於該 該疋址模式並不匹 -個登錄項二體:二中之該複數個登錄項中之其t 該操作之該定: = 則該記憶體檔案配置成,若 配登_ 邏輯暫存器之該識別符,分 配登錄項以館存該操作之該定址模式。 2m專:範圍第2〇項之系統,其中該記憶體檔案包 邏輯暫I登錄項’其中該記憶體檔案配置成依於預測談 邏輯暫存器是否正祜胜—生A 頂内这 指標暫存器“的暫存器或堆疊框 以儲存該操作之該定址模式。 备案中之登錄項 Sit利範圍第2〇項之系統,其中該記憶體檔案配 、該δ己憶體檔案中之登錄項分' 模式包括該堆疊框Μ刀I。任何其定址 項之系統,其中該堆疊檔案配置 92515修正版 83 1333629 第93101345號專利中請輋 (9 9年8月31日ί 成保持堆疊指標定址模式詷棼佶知地„ > 辑式調整值和堆疊框指標定址指 知調整值;以及 其中該記憶體標案配置成依於該堆疊框指標定址 ,整值是否有效’而預測該邏輯暫存器是否正被特 疋為一般目的暫存器或堆疊框指標暫存器。 25. 如申請專利範圍第i 炙糸統進—步包括用來發送該 標記作為用於該記憶體操 拖# 铞怍之推測運异兀來源標記之 機構。 26. 如申請專利範圍第25項之车 峭义糸統,進一步包括排程器, -己置成回應該推測來海運算元標記被提供給該排程器 而發出該記.憶體操作。 27. 如申請專利範圍第1 统 示、、死進—步包括用來發送於 結果匯流排上之資料值和用來指比 ^ ^ m 水伯不这貢枓值為該記憶 體操作之結果之機構。 28. 如申請專利範圍第1項之系統’其中儲存於該登錄項中 之該定址模式為料操作之定址模式之部分,其中該儲 存操作比該記憶體操作於程式次序上較早發生。 29. —種資料推測方法,包含: 。。預測識別於記憶體操作之定址模式令之邏輯暫存 器疋否正用來作為一般目的暫左努少,“、 奴曰的皙存咨或作為.堆疊框指標 暫存器; 依於該預測,判定該記憶體操作之該定址模式是否 匹配較早操作之定址模式; 右該§己憶體操作之該定;描; 保卜I成疋址模式匹配較早操作之定 92515修正版 84 址模式,則將由用於該較 之資料值連結至該記惊二作之之推運二元之標記所識》. 執行具有運算元來_!^果:以及 操作,其中該執行步驟包括存取^憶體操作之結果之 料值。 由該標記所識別之該資 _ 3〇.如申請專利範圍第29項之 測包含於該記憶體操作之該定址該預測步驟預 器係正用來作為該?拉式中之該邏輯暫存 括判定該記^ Μ # # 9 存器,則該判定步驟包 作之該定址模式;以& 、式並不匹配該較早操 其中若該預測步驟預測該 為該-般目的暫存器,而若該吃总:公係正用來作 相等於該較早操作之 之該定址模式 定該記憶體操作之該定址=式匹則 址模式。 '工匹配該較早操作之該定 31.如申請專利範圍第30項之 步驟預測包含於竽記_ _ y ,進—步包括若該預測 。Α β δ己憶體操作 輯暫存器係正用來作為該堆最f 模式中之該邏 該記憶體操作之兮定4且私標暫存器,則不儲存 =作之該疋址桓式於記憶體檔案中;以及 Μ預測步驟預測該邏輯暫來 一般目的料器,W該記㈣Μ β來作為該 等於該較早操作之該定址模:列=該定址模式不相 該定址模式於該記憶體檔案中。儲存該記憶體操作之 32.如申請專利範圍第29項之方法,其t該預測步驟包括 92515修正版 85 回應偵挪到呼_叫人 1 ?日々而預剛該馮加 為該堆疊框指標暫存器。 邏秤暫存盗係正用來作 33. 如申請專利範圍第32項之 回應偵測到返回、,其中該預測步騍包括 〜w扣令而預测該馮。 為該一般目的暫存器。 邏輯暫存盗係正用來作 34. 如申請專利範圍第29 回應偵測到進入&人 ,其中該預測步驟包括 為該堆疊框指標。 遊輯暫存盗係正用來作 35. 如申請專利範圍第29 田庙枯w 項之方法’其中該預測步驟包括 =到將堆疊指標之值複製至該邏二 36:=該邏輯暫存器係-用來作為該堆疊框指二 36. 如申印專利範圍第29 ^ _ 項之方法,其中該預測步驟包衽 .回應4貞測到呼叫指人&朴,丄 匕括 ., 7而错由增加目前呼叫深度,和回岸 偵測到返回指令而藉由減 _ 應 目前呼叫深度。 減一“呼叫深度,以追縱該 37. 如申請專利範圍第%項 甘士— λ — … 視怠方法,其中該較早操作之該 定址模式係儲存於記憶體檔案登錄項中以及其中該記 憶體檔案登錄項包括呼叫深度值,當分配該記憶體檔案 登錄項時該呼叫深度值等於該目前呼叫深度之值/、 38. 如申請專利範圍第37項之方法,…判定步驟包括 若當處理該記憶體操作時該目前呼叫深度之值不等於 鍺存於該記憶體檔案登錄項中之該呼叫深度值,則判定 該記憶體操作之該定址模式並不匹配該較早操作之該 定址模式;以及 92515修正版 86 1333629 第(9心專3利巧案 若當處理該記憶體操作時該目前呼叫深度之該值 等於儲存於該記憶體檔案登錄項中之該呼叫深度值,則 該判定步驟包括’若該記憶體操作之該定址模式等於儲 存=該記憶體檔案登錄項中之該定址模式,判定該記憶 體操作之該定址模式匹配該較早操作之該定址模式。 39·如申請專利範圍帛則之方法,進—步包括若當處理 該:己憶體操作時該目前呼叫深度之該值不等於儲存於 該記憶體檔案登錄項中之該呼叫深度值,則分配另一記 憶體檔案登錄項以儲存該記憶體操作之該定址模式^ 該目前呼叫深度之該值。 _申請專利範圍第29項之方法,其中該較早操作之該 疋址模式儀儲存於記憶體檔案中之登錄項中,和其中與 堆疊有關之定址模式係儲存於該記憶體樓案中之其= 登錄項中; 該方法進—步包括藉由追縱對堆疊指標之修改,而 式二挺作之又址模式是否匹配該與堆疊有關之定址模 41=請專利範圍第4〇項之方法,其中該追縱對該堆疊 修改的步驟包括回應分派當被執行時修改該堆 之值的操作而修改儲存於該其他登錄項中之位 42.如申凊專利範圍第項之方法 指轉 項方去,其中該追蹤對該堆疊 *之乜改的步驟包括修改定 甘由# 定步隸包括在比較„作之^調整值,其中該判 早乂这栋作之該弋址模式與儲存於該其 92515修正版 87 ::錄項中之該與堆疊有關之定址模式之前,將該定址 杈式調整值施加至該操作之該定址模式。 43.如申請專利範圍第29項之方法,推^ ., 進一步包括回應分派 田破執仃時修改該堆疊框指標 钷共描— 值的刼作而修改堆疊 框心標疋址模式調整值;以及 將該堆4框指㈣址模式㈣值施加至該記 ΐ::Γ定址模式,之後比較該記憶體操作之該定址模 2職早㈣之該定址模式1便判定該記憶體^ 之該疋址模式是否匹配嗲 ^ ^ 该較早知作之該定址模式。 44. 如申請專利範圍 體操作之該定址槿/步包括若該記憶 ,χ 、式不匹配該較早操作之該定址模 式’則分配記情贈嫂安_ & μ 、' 定 "案且錄項以儲存該記憶體操作之該 於 且杧私裇疋址模式調整值修改儲存 於該5己憶體檔幸祭# 式.。 ^ 、中之該記憶體操作之該定址模 45. 如申請專利範圍第29 分配登錄項以儲存摔作之法’進一步包括堆疊檀案 杈式不匹配儲存於包冬 又祉 js ^ η- φ . 在該堆豎檔案中之複數個登錄 項之其中一個登錄 郑 址模式包括該邏輯,和若該操作之該定 弭皙存器之一識別符。 46. 如申請專利範圍第45 太 案依於該預測步驟而.里埋法,進一步包括記憶體檔 登if項以^ γ >擇性地分配該記憶體檔案中之 且錄項以儲存該操作之該定址模式。 47. 如申請專利範圍第45 巧之方法’進一步包括該堆疊檔 92515修正版 88 第93101345號專利申請案 (99年8月31日〉 案保持堆遇社4a & 標調整值1由T 4址杈式調整值和堆疊框指標定址指 調整值_步驟依於該堆疊框指標定址指標 定俚疋否為有效。 48.-種電腦系統,包括: 系統記憶體.;以及 ::理态’耦接至該系統記憶體’該微處理器包括: 錄項體槽案’包括配置成儲存定址模式和標記之登 項中二 憶體操作之定址模式匹配錯存於該登錄 所^ 模式,則該記憶體檔案配置成將由該標記 所識別之資料值連結到該記憶體操作之推測結果,以及 ::核心,耦接至該記憶體播案,其中該執行核心 成备執仃依於該記憶體操作之另—操作時,存取 推測結果; 其中該記憶體操作之Μ模式包括邏輯暫存器之 ,別符’和其令該記憶體檔案配置成預測該邏輯暫存器 是否正被特定為一般目的暫存器或.堆疊框指標暫存 器,以便判定該記憶體操作之該定址模式是否匹配儲存 於該登錄項中之該定址模式。 92515修正版 89
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/348,144 US7024537B2 (en) | 2003-01-21 | 2003-01-21 | Data speculation based on addressing patterns identifying dual-purpose register |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200422948A TW200422948A (en) | 2004-11-01 |
TWI333629B true TWI333629B (en) | 2010-11-21 |
Family
ID=32712491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093101345A TWI333629B (en) | 2003-01-21 | 2004-01-19 | Data speculation based on addressing patterns identifying dual-purpose register |
Country Status (8)
Country | Link |
---|---|
US (1) | US7024537B2 (zh) |
EP (1) | EP1586029B1 (zh) |
JP (1) | JP4538462B2 (zh) |
KR (1) | KR101019224B1 (zh) |
CN (1) | CN1742257B (zh) |
DE (1) | DE602004015568D1 (zh) |
TW (1) | TWI333629B (zh) |
WO (1) | WO2004068341A1 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7366352B2 (en) * | 2003-03-20 | 2008-04-29 | International Business Machines Corporation | Method and apparatus for performing fast closest match in pattern recognition |
US7227994B2 (en) * | 2003-03-20 | 2007-06-05 | International Business Machines Corporation | Method and apparatus for imbedded pattern recognition using dual alternating pointers |
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 |
US7133969B2 (en) * | 2003-10-01 | 2006-11-07 | Advanced Micro Devices, Inc. | System and method for handling exceptional instructions in a trace cache based processor |
US7555633B1 (en) | 2003-11-03 | 2009-06-30 | Advanced Micro Devices, Inc. | Instruction cache prefetch based on trace cache eviction |
US20050114627A1 (en) * | 2003-11-26 | 2005-05-26 | Jacek Budny | Co-processing |
US8069336B2 (en) * | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US7213126B1 (en) | 2004-01-12 | 2007-05-01 | Advanced Micro Devices, Inc. | Method and processor including logic for storing traces within a trace cache |
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 |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
US7870541B1 (en) * | 2004-11-01 | 2011-01-11 | Wind River Systems, Inc. | Context tracing for software with a frame pointer and a stack pointer and with a stack pointer but without a frame pointer |
WO2007051347A1 (en) * | 2005-10-31 | 2007-05-10 | Intel Corporation | System and method for managing a register-based stack of operand tags |
US7624253B2 (en) * | 2006-10-25 | 2009-11-24 | Arm Limited | Determining register availability for register renaming |
US7730289B2 (en) * | 2007-09-27 | 2010-06-01 | Faraday Technology Corp. | Method for preloading data in a CPU pipeline |
US8458671B1 (en) * | 2008-02-12 | 2013-06-04 | Tilera Corporation | Method and system for stack back-tracing in computer programs |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
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 |
US9411590B2 (en) * | 2013-03-15 | 2016-08-09 | Qualcomm Incorporated | Method to improve speed of executing return branch instructions in a processor |
US9164697B2 (en) * | 2013-06-24 | 2015-10-20 | Samsung Electronics Co., Ltd. | Method and architecture for highly scalable data storage |
US9524164B2 (en) * | 2013-08-30 | 2016-12-20 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
GB2518912B (en) * | 2014-01-17 | 2015-08-26 | Imagination Tech Ltd | Stack pointer value prediction |
WO2017006235A1 (en) * | 2015-07-09 | 2017-01-12 | Centipede Semi Ltd. | Processor with efficient memory access |
US10162526B2 (en) * | 2015-10-20 | 2018-12-25 | Micron Technology, Inc. | Logical address history management in memory device |
US10157268B2 (en) * | 2016-09-27 | 2018-12-18 | Microsoft Technology Licensing, Llc | Return flow guard using control stack identified by processor register |
US10534609B2 (en) | 2017-08-18 | 2020-01-14 | International Business Machines Corporation | Code-specific affiliated register prediction |
US10908911B2 (en) | 2017-08-18 | 2021-02-02 | International Business Machines Corporation | Predicting and storing a predicted target address in a plurality of selected locations |
US10884746B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Determining and predicting affiliated registers based on dynamic runtime control flow analysis |
US10884747B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Prediction of an affiliated register |
US10884745B2 (en) | 2017-08-18 | 2021-01-05 | International Business Machines Corporation | Providing a predicted target address to multiple locations based on detecting an affiliated relationship |
US11150908B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US10719328B2 (en) | 2017-08-18 | 2020-07-21 | International Business Machines Corporation | Determining and predicting derived values used in register-indirect branching |
US11150904B2 (en) | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Concurrent prediction of branch addresses and update of register contents |
US11061575B2 (en) | 2017-09-19 | 2021-07-13 | International Business Machines Corporation | Read-only table of contents register |
US10884929B2 (en) | 2017-09-19 | 2021-01-05 | International Business Machines Corporation | Set table of contents (TOC) register instruction |
US10713050B2 (en) | 2017-09-19 | 2020-07-14 | International Business Machines Corporation | Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions |
US10725918B2 (en) | 2017-09-19 | 2020-07-28 | International Business Machines Corporation | Table of contents cache entry having a pointer for a range of addresses |
US10896030B2 (en) | 2017-09-19 | 2021-01-19 | International Business Machines Corporation | Code generation relating to providing table of contents pointer values |
US10620955B2 (en) | 2017-09-19 | 2020-04-14 | International Business Machines Corporation | Predicting a table of contents pointer value responsive to branching to a subroutine |
US10705973B2 (en) | 2017-09-19 | 2020-07-07 | International Business Machines Corporation | Initializing a data structure for use in predicting table of contents pointer values |
US10185595B1 (en) * | 2018-06-04 | 2019-01-22 | Confia Systems, Inc. | Program verification using hash chains |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5127103A (en) * | 1987-10-14 | 1992-06-30 | North American Philips Corporation | Real-time tracing of dynamic local data in high level languages in the presence of process context switches |
US5778219A (en) | 1990-12-14 | 1998-07-07 | Hewlett-Packard Company | Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations |
US5428807A (en) | 1993-06-17 | 1995-06-27 | Digital Equipment Corporation | Method and apparatus for propagating exception conditions of a computer system |
US5584009A (en) | 1993-10-18 | 1996-12-10 | Cyrix Corporation | System and method of retiring store data from a write buffer |
US6237082B1 (en) | 1995-01-25 | 2001-05-22 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage for instruction results corresponding to predefined maximum number of concurrently receivable instructions independent of a number of instructions received |
US5892936A (en) | 1995-10-30 | 1999-04-06 | Advanced Micro Devices, Inc. | Speculative register file for storing speculative register states and removing dependencies between instructions utilizing the register |
US6108769A (en) | 1996-05-17 | 2000-08-22 | Advanced Micro Devices, Inc. | Dependency table for reducing dependency checking hardware |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US5781752A (en) | 1996-12-26 | 1998-07-14 | Wisconsin Alumni Research Foundation | Table based data speculation circuit for parallel processing computer |
US6021485A (en) | 1997-04-10 | 2000-02-01 | International Business Machines Corporation | Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6065103A (en) | 1997-12-16 | 2000-05-16 | Advanced Micro Devices, Inc. | Speculative store buffer |
US6044430A (en) | 1997-12-17 | 2000-03-28 | Advanced Micro Devices Inc. | Real time interrupt handling for superscalar processors |
US6112296A (en) * | 1997-12-18 | 2000-08-29 | Advanced Micro Devices, Inc. | Floating point stack manipulation using a register map and speculative top of stack values |
US6175910B1 (en) | 1997-12-19 | 2001-01-16 | International Business Machines Corportion | Speculative instructions exection in VLIW processors |
JPH11212788A (ja) | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6202204B1 (en) | 1998-03-11 | 2001-03-13 | Intel Corporation | Comprehensive redundant load elimination for architectures supporting control and data speculation |
US6108770A (en) | 1998-06-24 | 2000-08-22 | Digital Equipment Corporation | Method and apparatus for predicting memory dependence using store sets |
US6463580B1 (en) | 1998-11-18 | 2002-10-08 | Intel Corporation | Parallel processing utilizing highly correlated data values |
US6349382B1 (en) | 1999-03-05 | 2002-02-19 | International Business Machines Corporation | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order |
US6658554B1 (en) | 1999-03-09 | 2003-12-02 | Wisconsin Alumni Res Found | Electronic processor providing direct data transfer between linked data consuming instructions |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US6438673B1 (en) | 1999-12-30 | 2002-08-20 | Intel Corporation | Correlated address prediction |
JP2001209535A (ja) | 2000-01-27 | 2001-08-03 | Toshiba Corp | プロセッサの命令スケジューリング装置 |
DE10121792C2 (de) | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
US7028166B2 (en) | 2002-04-30 | 2006-04-11 | Advanced Micro Devices, Inc. | System and method for linking speculative results of load operations to register values |
-
2003
- 2003-01-21 US US10/348,144 patent/US7024537B2/en not_active Expired - Fee Related
-
2004
- 2004-01-09 KR KR1020057010296A patent/KR101019224B1/ko not_active IP Right Cessation
- 2004-01-09 JP JP2006536513A patent/JP4538462B2/ja not_active Expired - Fee Related
- 2004-01-09 WO PCT/US2004/000477 patent/WO2004068341A1/en active Application Filing
- 2004-01-09 CN CN2004800025925A patent/CN1742257B/zh not_active Expired - Fee Related
- 2004-01-09 DE DE602004015568T patent/DE602004015568D1/de not_active Expired - Lifetime
- 2004-01-09 EP EP04701175A patent/EP1586029B1/en not_active Expired - Lifetime
- 2004-01-19 TW TW093101345A patent/TWI333629B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JP2007504575A (ja) | 2007-03-01 |
US7024537B2 (en) | 2006-04-04 |
KR101019224B1 (ko) | 2011-03-04 |
WO2004068341A1 (en) | 2004-08-12 |
KR20050089030A (ko) | 2005-09-07 |
EP1586029B1 (en) | 2008-08-06 |
CN1742257A (zh) | 2006-03-01 |
US20040143721A1 (en) | 2004-07-22 |
TW200422948A (en) | 2004-11-01 |
EP1586029A1 (en) | 2005-10-19 |
JP4538462B2 (ja) | 2010-09-08 |
CN1742257B (zh) | 2010-04-28 |
DE602004015568D1 (de) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI333629B (en) | Data speculation based on addressing patterns identifying dual-purpose register | |
US7089400B1 (en) | Data speculation based on stack-relative addressing patterns | |
US7028166B2 (en) | System and method for linking speculative results of load operations to register values | |
KR100981168B1 (ko) | 데이터-추론-실행을 지원하는 마이크로프로세서에서 사용을위한 스케쥴러 | |
US7962730B2 (en) | Replaying memory operation assigned a load/store buffer entry occupied by store operation processed beyond exception reporting stage and retired from scheduler | |
KR100953207B1 (ko) | 로드/저장 오퍼레이션들을 바이패스하기 위하여 추론적 소스 오퍼랜드를 사용하는 시스템 및 방법 | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
US7415597B2 (en) | Processor with dependence mechanism to predict whether a load is dependent on older store | |
EP1296229B1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US20050247774A1 (en) | System and method for validating a memory file that links speculative results of load operations to register values | |
TW200525355A (en) | Microprocessor and apparatus for performing speculative load operation from a stack memory cache | |
US7165167B2 (en) | Load store unit with replay mechanism | |
US7043626B1 (en) | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming | |
US7222226B1 (en) | System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation | |
US7937569B1 (en) | System and method for scheduling operations using speculative data operands | |
US7069411B1 (en) | Mapper circuit with backup capability | |
KR101057163B1 (ko) | 마이크로프로세서에서 데이터-추론 연산들을 식별하는 추론포인터들 | |
US7269714B2 (en) | Inhibiting of a co-issuing instruction in a processor having different pipeline lengths | |
KR20070019750A (ko) | 로드 동작의 투기적인 결과들을 레지스터 값들에 연결하는메모리 파일을 유효화하기 위한 시스템 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |