TWI363992B - Microprocessor, computer system and method for fetching instructions from caches, method for constructing traces, and microprocessor for starting traces - Google Patents
Microprocessor, computer system and method for fetching instructions from caches, method for constructing traces, and microprocessor for starting traces Download PDFInfo
- Publication number
- TWI363992B TWI363992B TW093136824A TW93136824A TWI363992B TW I363992 B TWI363992 B TW I363992B TW 093136824 A TW093136824 A TW 093136824A TW 93136824 A TW93136824 A TW 93136824A TW I363992 B TWI363992 B TW I363992B
- Authority
- TW
- Taiwan
- Prior art keywords
- tracking
- instruction
- memory
- cache memory
- branch
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 18
- 230000015654 memory Effects 0.000 claims description 187
- 238000012545 processing Methods 0.000 claims description 49
- 238000000605 extraction Methods 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 25
- 239000000284 extract Substances 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000010276 construction Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 7
- 230000008901 benefit Effects 0.000 claims description 6
- 238000012937 correction Methods 0.000 claims description 5
- 239000000463 material Substances 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 239000000203 mixture Substances 0.000 claims description 3
- 230000001934 delay Effects 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims 1
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 5
- 206010011469 Crying Diseases 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- WCUXLLCKKVVCTQ-UHFFFAOYSA-M Potassium chloride Chemical compound [Cl-].[K+] WCUXLLCKKVVCTQ-UHFFFAOYSA-M 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229940101580 micro-k Drugs 0.000 description 1
- 239000002994 raw material Substances 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002023 wood Substances 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
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/3802—Instruction prefetching
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)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
1363992 九、發明說明: [發明所屬之技術領域】 本發明係有關微處理器之領域,尤有關具有追蹤快取 記憶體之微處理器。 【先前技術】 以微處理器處理的指令係編碼為,由一和零所組成的 序列。對於某些微處理器架構而言,可以如某一數目的位 以長度將指令編妈。對於諸如聊架構等的 構而言,指令的長度可以改變。χ86微處理器架構 才曰疋可變長度的指今隹广 、 — $ 、卜以不同數目的位元組分別指 =,令的指令集)。例如,咖86及後來的娜微處理器 用^15個位元組來指定-特定的指令。指令有可 疋1至2位元組的運算石馬, # 4b ^ ^ , 且可加入額外的位元組,以 額夕曰卜=址模式、運算元、以及與所要執行的指令有關的 在某些微處理器架構中,在執行之前,可將 及=;=較簡單的操作。將—指令解碼也可二 令中每輯; 來健存該指令的結果之實體暫存器,存。。’和/或分配用 到指若干連續區塊的方式自系統記憶體提取 7决取έ己憶體。這些區塊中包人 的順序而儲# ,拓7钻按照編譯後 在指令=指令快取記憶體。在程式執行期間,如當 仃—分支時’通“按照不同的順序執行各 92733 5
'V 指令。在此種情形中,通常無法在 tb白4匕入ΙΛ 刀支4日令相同的週期 中M"快取記憶體提取在所 j 是因為這些指令被储存在-些非連續的位 服提取頻寬的限制,許多超純量微處理 》克 nna〇pr〇CeSSOrs)採用一追蹤快取 追縱快取記億體不同於指令絲2 ra=e eache)。 常係按照執行順序。而非按學的=之處在於。通 取記憶體中所儲存的指令。按、S後的:序’儲存追縱快 ^ 祕恥執行順序儲存各操作時,, :::::期中自追縱快取記憶體存取含有執行的分支摔· :而自指令快取記憶體存取相同的序列時:、 將茜要數個週期。 ~ 微處理器通常在每—時脈週期中將數個指令解 —二U快取&己憶體中以起始追縱位址解碼的群址内 之母一指令的位址匹配所需之硬體數量可能是過高的。因
而可能增加了某些情形中決定追蹤快取記憶體中之一命中 之困難度。 P甲I 【發明内容】 —本勒明揭不了用來實施—微處理器的方法及系統之久 =例’該微處理11包含追縱快取記憶體,並嘗試唯有: 標戴邊界(1 abe 1 boundary)上將提取自指令快取記憶體轉 變到追縱快取記憶體。在一實施例中’微處理器可包含指 令快取記憶體、分支預測單元、及追蹤快取記憶體。在該 分支預測單元輸出分支指令的預測目標位.址之前,預先提 取單元可自該指令快取記憶體提取指令。當該分支預測單 92733 6 1363992 = = = :時,該預先提取單元可檢查該追縱快 己“中疋否有與該預測目標 發現匹配’則該預先提取單元可不自^°如果· 取指令,而是自,不自幻曰令快取記憶體提、 當分支心丨: 憶體提取—個或多個追縱。 田刀支預測早兀遇到預測 該分支預測單元可輸出預測目桿位址:::“指令時, 無條件分支指令或預測將要滿=二,這將是任何 刀又錯决預測時,該分支預 只生_ 址。當有條件分支指八已.“ :::了輪出預測目標位 估當必要資料A # f 1 仃官線時,功能單元可評 I縱=士 =的相關聯之分支條件。在-些情形 使在先刖提取指令時預測不要尨俶甘 的評估也可能使得該分支受到採取。也木==支’上述. 形,且任何-種情形都可能造成分支錯1生相反的情· 錯誤預測可能使該分支預測· ' U,而忒分支 哕代卢f 兀輸出預測目標位址。 該追= 縱產生器。在-些實施Μ,· 他的實施例中,該追縱產生器可 2追跟。在其 解碼的指令建構各追縱m執=則解碼的或部分 為最含====按照程式順序·. 而該攔位包含該追蹤所包含的每—::二流控制櫚位, 移目標的指令之標籤。 77日令中作為控制轉 該追縱產生器在開始新追縱的建構之前’可等候到其 7 1363992 ==應於分支目標位址的指令為止。-旦開始追縱的 有該追縱的ΪΓί生器可檢查該追縱快取記憶體中是否: 生器可捨棄正/ ’且如果發現該拷貝,則該追縱產 縱產生哭7 €構中的追縱。在—些實施例中,當該追 之重亥追縱快取記憶體中識別出正在建構中的追蹤 中θ否右料貝8” 5玄追蹤產生器可檢查該追蹤快取記憶體 ==於將要產生的次一追縱之資料項,且如果發 則該追縱產生器可捨棄正在建構中的追縱。· 轉鐵到追含在於標&邊界上自指令快取記憶體(106) t 椒快取記憶體(160)的微處理器(100)的-實施例 中之各邏輯組成部分的方塊圖。微處理器(1。0_^ C〇n lgUred)執行系統記憶體(2G0)中儲存的指令。許多这 些指令對系統記憶體(2〇〇)中儲存的資料執行操作。往、主 系統記憶體⑽)可以在實體上分散於一電腦系統各 處’且—個或多個微處理器(⑽)可存取該系、統記憶體 # 例中,可將微處理器(_設計編6 木構相谷。…、,除了圖中所示的那些組成部分之外, 微處理器(1〇〇)亦可包含和/或箱合至許多其他的構件。例 如,可在微處理器(100)與系統記憶體(2〇〇)之間包含 — 的快取記憶體層級(在微處理器(1〇〇)之内和/或之外)。、同 樣地’微處理器(100)在一些實施例中可包含組構 : 統記憶體(2GQ)的記憶體控制器。此外,各邏輯組成;分:
之内連線可隨著不同的實施例而有所不同。 刀B 92733 8 1363992 微處理器(100)可包含指令快取記憶體(1〇6)及資料快 取記憶體(128)。微處理器(100)可包含耦合到系統記憶體· (200)的預先提取單元(108)。預先提取單元(1〇8)可自系統、 記憶體(200)預先提取指令碼,以供儲存在指令快取記憶體 (106)内。在一實施例中,可將預先提取單元(1〇8)組構成 自系統記憶體(200)將整段的指令碼叢發到指令快取記憶 體(106)。預先提取單元(ι〇8)可採用各種特定的指令碼預 先提取技術及演算法。預先提取單元(1〇8)亦可自指令快取 記憶體(106)提取指令到派發單元(1〇4),並自追蹤快取記鲁 憶體(160)提取追蹤到派發單元(1〇4)。可回應特定的指令 位址並未命中追蹤快取記憶體(16〇),而自指令快取記憶^ (106)提取指令。同樣地,可回應特定的位址並未命中指: 快取記憶體(106),而自系統記憶體(2〇〇)提取指令。 將一 派叙單元(104)係組構成自指令快取記憶體 (106)接收指令,並自追縱快取記憶體(16())接收解^的和/ 或部分解碼的操作。派發單元(1〇4)可包含解碼單元 (140),用以將自指令快取記憶體(1〇6)接收的指令解碼。 派發單元(d1SPatch Unit)(104)亦可包含在處理微碼指丄 時使用的微碼單元。 曰7 派發單元(1 0 4)係組構成將操作派發到—個或多個排 ,器(118)。該等一個或多個排程器⑴8)可搞合成自 單兀(104)接收被派發.的操作,並耦合成將操作笋出到—X 或多個執行核心⑴…執行核心闺可包含:構成執個 對貧料快取記憶體(⑽之存取的載人/儲存單元(126) 了 92733 9 1363992 可將執:核心(124)所產生的結果耦合到—結果匯流排 (130)。這些結果可作為後續發出的指令之運算元值及(或)· 儲存到暫存㈣⑴6)。可將退除仵列(retire(iueue)(1〇2)、 祸合到-個或多個排程器⑴8)及派發單元(1〇4)。可將該 錢符列之組構設定成決定何時可使每—發出的操作退 早元(1〇4)接收到指令之前,指令快取記憶體 夺儲存&些指令。可經由預先提取單元⑽)自 預先提取指令碼,而將指令碼提供給指令 關":(亩 1G6)。可以各種組構(例如,組關聯式、完全 式)來組構指令快取記憶體(_。 的::Χ早以104)可輸出其中包括執行核心(124)可執行 的位兀編碼操作、運算元 )了執仃 的信號。解碼單元⑽)可用於將某1;:=移:料 操作。較複雜的指令可對應於;應… 接收到涉及暫存器的更新之操作時,:早二1。4) 内的暫存器位置,以便儲存預測哭日⑴6) 例中,可將重新排序緩衝區用來儲存;:在替她 多個預測的暫存器狀態)。暫存4::;暫存器的一個或 f元的邏輯暫存器名稱轉換為實體;存二:源及目標運 存器更名。該暫存器對應、表可 曰存^牙冉,以助於暫 暫存器目前被分配及未被分g己…為檔(116)内的哪些 當派料元⑽)處理錢作時,W的運算元是 99m 10 992 或重新排序緩衝:送到暫存器對應表 元的邏輯如,在Χδ6架構中,有八個32位 EDi、^Pi 'EBX、ECX、EDXm 含 體暫存㈣(116)(或重新排序緩衝區)包 因而可供非循庠計曰存益的内谷的結果之儲存空間, 供非循序執仃。可分配暫存器槽(116)中之 二::儲存將修改其中-個邏輯暫存器的内容的 作之結果。因此,在執 甘私 ⑴6)(或替代,::仃4…式的各時點上,暫存器播 特定邏辕好 U㈣可具有存放了 特疋^暫存器的推測式執行内容之一個或多個暫存哭。 暫存器對應表可將實許暫在哭八 〇 算元之特定邏Μ操作的運 ΓΓ操作的來源運算元㈣輯暫存器之-個❹ 邏輯暫存器的實體暫;:;:對應表可提供最近分派給該 存器稽⑴6)中之運算元值:1 Γ記用來存取暫 Γ上轉送的結果而接收資料值。如果該運 :位置,則可經由載人/儲存單元⑽^在該結果匯流排 収/或暫存㈣(⑽中之儲存内容)上提Γ :‘由其中—個排程器(118)發出該操作時,可 將運异^㈣值提供給執行心⑽)。請注意,在替代总 施例中,當派發操作.時,可- Λ Μ,不是在發出操作時將二值提 行核心(124))。 了ι的執 92733 1363992 第1圖所示之微處理器(1⑹支援非循序執行。退除仵 列(102)(或替代實施例中之重新排序緩衝區)可針對暫存· 器讀取及寫人操作而追縱原始的程式順序,可進行推^式、 指令執行及分支錯誤預測的恢復,並可協助精確的里常^ 理。在許多實施例中,退除符列(1〇2)的功能可類似於重2 排序緩衝區。然而’不同於典型的重新排序緩衝區,退除 件列(1G2)可不提供任何資料值的儲存。在#代實施例中^ 退除件列(102)的功能更像重新排序緩衝區,且將資料值儲 存提供給預測的暫存器狀態,而也支援暫存器更名。在某f 些實施例中,可以先進Μ的組構來組構退除❹川⑺、, ‘而在該組構中,當操作確認時’該等操作移到該緩衝區的 底口Ρ,而將空間讓給在該作列的“頂部”之新資料項。者 操作退除時’退㈣列⑴2)可將暫存器棺⑴6)中不再: 要儲存預測㈣存⑽態之暫存ϋ解除分配,絲用來^ 不哪些暫存器現在空出來的信號提供給暫存器對應表 由維破暫存器檔(116)内(或在替代實施例中為在重新排序修 緩衝區内)的預測的暫存器狀態到產生這些狀態的該等操 作確認為止,因而若分支_是錯誤的,料在暫存 ⑴6)中使以推測方式執行輯作之結果以及錯誤預 路徑無效。. 、 ι退除仵列(102)亦可將用來識別程式追縦的信號提供 二追縱產生H (1 7 0 )。亦可將追輕生器(丨7 Q )描述為填充 追縱產生器⑽)可將退除传列(1〇2)所識別的追蹤 。者存到追縱快取記憶體(16〇)。每一追縱可包含係為數個不 92733 12 1363992 同之基=之部分的操作。可將—基本區塊 block)疋義為一組連續的指令,i 之任一指令,則將執 二果執仃基本區塊中 孔订5玄基本區塊中之所有指令。一 ==塊:以是恰好在編令之後開始且終止二 取二Γ〇)的且,令。在某些實施例中’儲存在追縦快 礼的切可包含數個解碼 令。可將解碼的或部分 刀解馬的才日 的用法中,一“追縱,,(“加“::儲„本作。在本說明書
操作。 取冗憶體資料項内之-組指令或 預先提取單元(1G8)可將操作自追 提取到派發單元(104)。在—此者 己L版(160) 仔列(! 〇 2)的解碼的或n 例中,可利用來自退除 =_提取此種追縱時,可至少部分地繞二: 二:),因而造成追縱快取記憶體操作中有較少數目的: 發週期。因此,如果執行 = 文目的派 體(160)可在數次勃—应承士 -人,則追蹤快取記憶 單亓n4m 士 钗令讓派發單元(〗〇4)分攤在解碼 碼所耗用之時Γ取記憶體中儲存的操作部分(或完幻解 及立端上提供的位元編碼操作 說明書的用法t ::,:Γ叫請注意,在本 = -個議執行單元之裝置 U 站(reSerVdtwnstaU〇n)是一種排程器。 92733 13 1363992 每-排程器⑴8)可保留數個等候發出到執行核心⑽)的 待處理㈣作之操作:纽(例如,經位元編碼的執行位元及. 運异^值、運算元標記、和/或立即資料)。在一些實施例· 中,每一排程器(118)可不提供運算元值儲存空間。每一排 程器,代之方式為可監視發出的操作及暫存器檀⑴6)中 可取件的結果’以便決定一個或多個執行核心(】24)何時可 (自暫存H播⑴6)或結果匯流排(13G))取得運算元值。在 =實施例中,可使每—排程器⑴8)與專用的執行核心赢 (124)相關聯。在其他的實施例中,單一的排程器⑴8)可, 將“作發出到一個以上的執行核心(1 μ)。 可提供排程器(118)以暫時性地儲存將要由一個或多 純行核心(124)執行的操作資訊。如前文所述,每—排程 :(118)可儲存待處理的操作之操作資訊。此外,每一排程 為可儲存已執行過但仍然可能再度發出的操作之操作資 訊。係回應於執行時可取得任何一個或多個所需運算元 值’而將細作發出到一個或多個執行核心。以)。因此
操作的執行順序可能與原始程式指令序列的順序並不相 同C 、在,'施例中,每—執行核心(124)可包含組構成執行 加法及減法的塾數算術運算、以及移位、旋轉、邏輯運算、 ,刀士插作之若干構件。亦可包含浮點單元’以便配合浮 個或多個執行核心(124)組構成為載入,儲 )將要執行的載入及儲存記憶體操作而執 址產生。 轨仃位 92733 14 1363992 執行核心(124)亦可將與有條件分支指令的執行有關 之資訊提供給分支預測單元(132)。如果來自執行核心(ΐ24)· 的資訊指示分支預測是錯誤的,則分支預測單元(丨3 2 )可清,. 除在該錯誤預測的分支之後的已進入指令處理管線之各= 令,並重新指示預先提取單元(1〇8)。受重新指示的預先提 取單元(108)然後可開始自指令快取記憶體(1〇6) '追蹤快 取記憶體(1 60)、和/或系統記憶體(2〇〇)提取一組正確的指 令。在此種情形中,可捨棄原始程式序列中在該錯誤予^ 的分支指令之後發生的指令結果,某中包括先前以推測方f 式執行的且暫時被儲存在載入/儲存單元(126)和/或暫存 器檔(116)中之那些指令結果。 如果正在更新暫存器值,則可經由結果匯流排(130) 將一個或多個執行核心(124)内的各構件所產生的結果輪 ^到暫存器檔(116)。如果正在改變一記憶位置的内容,則 可將一個或多個執行核心(124)内產生的結果提供給載入、 /儲存單元(126)。 _ 快取記憧艚 可將追蹤產生器(170)組構成自退除佇列(102)接收已 退除的知作之基本區塊,並將這些基本區塊儲存在追縱快 取記憶體(160)中之各追縱内。請注意,在#代實施例中, 追蹤產生器(170)耦合到微處理器的前端(例如,在派 ,早7L之前或之後),並將追縱產生器(⑽組構成利用在 :處理器的管線内之該點上所偵測到的基本區塊而產生追 输在追蹤建構的期間,追蹤產生器(170)可對自退除佇列 92733 15 1363992 (102)接收的操作之基本區塊執行變換,以便形成追蹤。在 某些實施例中’這些變換可包括各操作的重新排序、及掉 作的取消。 本 第2圖示出追蹤快取記憶體(16〇)以及耦合到該追蹤 快取記憶體和/或與該追蹤快取記憶體互動的微處理器 (100)之一些組成部分之一實施例。追蹤快取記憶體(“ο) 可包含數個追蹤快取記憶體資料項(162)。每一追蹤快取記 憶體資料項(162)可儲存稱為追蹤(i66)的一組操作。除了 追蹤(166)之外,每一追蹤快取記憶體資料項(162)亦可包 含識別標記(164)及指令流控制(f.c.)資訊(168)。追蹤快 取記憶體資料項(162)可包含追蹤中的每一分支之指令流、 控制攔位(168)。每一控制欄位(168)可包含位址資訊,用 以決定在要採取或不採取分支的情形中接下去要執行的指 令。例如,指令流控制攔位(168A)可對應於追蹤快取記情 體資料項(162)中包含的第一分支指令。該第一分支可°以: 有條件的,且指令流控制攔位(16 8 A)可存放有兩個位址。 八中個位址可以是在該條件為真的情形中於該分支指令 之後將要執行的指令之位址。另一位址可指示在該分支條 件為假的情形中接下去要執行的指令之位址◎指令流控制 攔位(1 68B、168A)可對應於追蹤快取記憶體資料項(丨62) 中包含的第二分支指令。該分支可以是無條件的,且指令 流控制欄位(I68B)因而可只存放有在任何情況中都應將控 制流轉移到的指令之位址。 標記(164)可類似於指令快取記憶體(1〇6)中之標記, 92733 16 0 1363992 7該標記可讓預先提取單元(1〇8)決定某一操作是命中或 疋未D-P中追縦快取έ己憶體(16 〇 )。例如,標記(16 4)可包含 用來識別追蹤快取記憶體資料項内的一操作之全部或部分. 的位址位元(例如,該標記可包含該追蹤内儲存的按照程式 =序為最早的操作之位址)。在—些實施例中,該標記可包 含足夠的資訊,因而可在追蹤内獨立地定址到某些操作。 例如,可利用該標記内儲存的資訊而定址到每一基本區塊 内之第一操作。在其他的實施例中,只可定址到一追蹤内 之第一操作。 % 在一些實施例中,指令流控制資訊(168)可包含該追蹤 内包含的每一分支操作的一標籤。該標籤可以是用來識別 控制應分支到的位址之指示。例如,組合語言程式碼的一 區段可包含分支指令’用以將執行流程的控制轉移到在程 式碼撰寫順序上並非緊接在該分支之後的指令之指令。為 了顧及程式設計師的方便,一些編譯器可容許將一個或多 個文數字符號(alpha__numerical 57油〇1)加入分支指令。★ 亦可在作為該分支指令目標的指令之前—組合語言程式碼 中包含該標籤。在編譯該組合語言程式碼時,編譯器可決 定作為該分支指令目標的指令之位址,且可以該位 該分支指令中包含的該等文數字符號,且該目標指令的位 址現在可變為該標籤。在其他的實施例中’可將標藏用來 識別任何基本區塊的指令。標籤邊界此時可以是指令碼中 用來將控制流程轉移到其位址是標籤的指令之任何:Y追 蹤的產生及命中追蹤快取記憶體的嘗試可在各標籤邊界上 92733 17 1363992 執行指令時發生。 在許多實施例中’追蹤快取記憶體資料項(162)可包含 多個分支指令及多個指令流控制欄位(1 68)。可使指令流控 制資(16 8 )的母一攔位與特定的分支操作相關聯。例如, 在一貫%例中,可使追縱内之指令流控制資訊儲存位置 (168A)與該追蹤中之第一分支操作相關聯’並可使另一指 々Sil控制資A儲存位置(16 8 B)與該追縱中之第二分支相關 聯。或者該指令流控制資訊可包含@記、或用來識別與該 指令流控制資訊相關聯的分支操作I其他資訊。在其他的 實施例中,可將分支預測及(或)用來識別哪一指令流控制 資訊對應於分支操作的資訊連同該分支操作儲存在操作儲 存區(166)内。 指令/追蹤描取 預先提取單元(108)可自記憶體(200)提取行指令,孟 將該行指令儲存錢令快取記憶體(1{)6>可按照編譯後^ 順序將各指令儲存在指令快取記憶體⑽)。視執行期㈣ 狀況而定,指令快取記憶體⑽)中之各指q 能經常不同於該等指a的 、序1 指令快取記憶體(;[〇6 )的八* 木自 到在㈣ 時’可能造成控制流程刹 到在騎後的順序下與該分支指令隔 指令之指令。因而可处、止Λ、π *上 H t間的 了此k成預先提取單元(108)自李續今卜 體(200)提取另一行$ a 目糸、、先纪憶 仃耘7。當正在載入在下一行指令 快取記憶體時’各勃耔妨、,】〜、 7之扣令 候次一操作。^仃核心(124)可能處於閒置狀態,而等 1363992 在-些實施例中,預先提取單元(1〇8)可將分支目標位 址的-部分用來作為到追縱快取記憶體(16〇)的指標。如果 有效的追蹤快取記憶體資料項(162)存在於該指標所指向、 的位置’則該預先提取單元可將標記欄位(164)與該分s支目 ,位址比較。如果該標記與該目標位址相符,則預:提取 單兀(108)可將追蹤(166)提取到派發單元,以供執 ^。視自該等執行核心和/或分支預測單元接收的資訊而 定’預先提取單元(1〇8)可持續將各追縱自追縱快取記情體 (16〇)提取到派發單切⑷’直到再也找不到其標記攔位 =應=要執行的次-指令的位址之任何資料項為止。預先 提取單兀(1 〇8)然後可重新開始自指令快取記憶體(1⑹提 取相令。 第3圖是根據—實施例而自指令快取記憶體提取指令 或自相快取記憶體提取追縱之方法的流程圖。如步驟 (301)所示’可自該指令快取記憶體提取—個或多個指令。 f-些情形中,對提取的指令之處理可能不會造成分支目 正的產生例如,在並未自該等指令中解碼出任何分 支操作或並未採取解碼後的分支操作之情形中,前一句所 述的狀況可以是真的。在此種情形了,如步驟(3G3)所示, 將繼續自該指令快取記憶體提取指令。 八在其他的情形中,對提取的指令之處理可能會造成一 支目心位址的產纟。例如,如果預測將要滿足有條件分 支的條件’或者如果碰到無條件分支,或者如果發生 目標錯誤襲,财產生分支目標位址。在這些情形中, 92733 快取記憶體的搜尋。可將所產生的分支目標 彳分用來作為到該追縱快取記憶體的指標,且如 櫚位在對應的位置,·則可將該資料項的標記 示。二= 的另一部分比較,如步驟(職 快取記先提取單^將追縱自該追縱 (307k 料項提取到該派發單元,如步驟 未命中該追位可=止提取追縱’直到其碰到 指令快取記憶體提取。 了料自这 如前文所述,自指令快取4愔萨 / 支的該八古i〜士 ^取°己隐體&取文預測要採取分 含1八^ a"’可使該預先提取單元開始提取其中包 3该刀支目標指令的列(π n e )。此種方式玄 ,給該派發單元時的嚴重延遲,尤其在儲二該八曰令 2令的列縣存在於指令絲記憶料更是會嚴二延目 可建後續的指令退除時,追縱產生器(17〇) 建構跨越刀支標戴邊界的追蹤。縱使可能已將…' 標指令儲存在指令快取記憶體的不同財,目 能同時退除,且追縱產生器(17。)可建:心:: 令對應的操作之追蹤。 匕a,、故兩個指 心過包含該分支指令的指令碼部分,則 二追縱快取記憶體⑽)提取對應的追 攸而非自^快取記憶體(關提取指令。因為業已將作 92733 20 1363992 為該分支指令目標的各操作放入該追蹤中,所以可以比執 行來自指令快取記憶體(106)的各原始指令快許多的速度 來執行該追蹤。 ^ 自追縱快取記憶體(160)提取而非自指令快取記慎體 (1〇6)提取所得到的微處理器效能之提高係與追縱的長度 (追蹤包含的操作數目)成正比。因此,最好是建構:中又包 含所能達到的最多的操作之追縱。在—些實施例卜追縱 ^生器(Π0)可利用自指令快取記憶體(_提取的退除摔 ::建構追縱。當預先提取單元由自指令快取記憶體提取 k切換到自追㈣取記憶體提取追料,該追縱產生器 可終止追蹤的建構。因此,最好是限制提取自指令快取呓 2切換到追蹤快取記憶體之發生率。可將預先 元 對命中追縱快取記憶體的嘗試限制在各«邊界,而達到 上述之目的。 。…追縱產生器(17_建構的追縱之長度可與預先提取 = (1G8)以命中追縱快取記憶體(⑽)的頻度成反比。 例如,如果針對自指令快取記憶體提取的每 :命中追縱快取記憶體的嘗試,則預先提取單元可能= ===縱並由亦提取指令切換到提取追縱。該追 私、…追蹤的建構’並產生包含自前一次切換開 士口退除的那些操作之追縱。如果 、 二6 如果係在少數的指令内即發生 Γ一次命Γ追縦快取記憶體,則在過渡期間中退除的操作 提取且執行以前文所述操作…。 Λ升y成的紐追蹤時,可能造 92733 21 叫992 單元(1°8)在指令快取記憶體與追縱快取記憶 因提取二:的頻度進一步增加。例如,當追縱產生器(17°) ===令快取記憶體切㈣追㈣取記憶體而終止追 可原先可能並入於終止之追縱的某些操作或許 行H切換之前尚未退除,而無法並入於該追蹤。執 =到終止的追縱時’可能造成自追縱快取記憶體切 快取記憶體以提取未命中的指令。與執行來自指 W、理體的原料令比較時,執行較短的追縱在提高, U處理β效率上可能只有很小的效益。 ^在—些實施例中,預先提取單元(108)可將命中追蹤快 八心It體的嘗試延遲到分支預測單元(132)產生了目標指 令的位址為止。自指令快取記憶體提取分支指令時,可能 在=行時造成分支預測單元(132)預測要採取或是不採取 该分支。如果該預測是將要採取該分支,則該分支預測單 凡可產生作為該分支指令的目標之指令的位址。在發生分 ^錯誤預測的情形中,分支預測單元(132)亦可產生在分支% 2 v之後將要執行的次一指令的位址。例如,如果提取有 條^分支指令,且分支預測單元(132)預測將採取該分支, 但是在有該條件的解答時決定不應採取該分支,則預先提 取單π (108)可使用按照編譯後的順序在該有條件分支之 後的次一指令之先前產生的位址作為將要提取的次一指令 的位址^藉由將命中追蹤快取記憶體(丨6 〇)的嘗試延遲到可 侍到預測要採取的分支之分支目標或分支錯誤預測之後的 /刀支目標’即可產生較長的追蹤。 92733 22 1363992
在預先提取單元在言試命中追縱快取記憶體之前先等 候標籤邊界之實施例中,用於比對的位址通常可以是一八 支目標。如前文所述,可在任何時間進行自追蹤快取記: ,至指令快取記憶體的提取切換,以便提取在追蹤快取: 憶,中並未命中的指令。因此,可在與標鐵邊界有關的任 =時點開始進到追縦產生器(17Q)的退除指令流。在只於標 籤邊界上進行命中追蹤快取記憶體之嘗試的實施例中,'^ 延遲追蹤建構的開始時間,以便與各標籤邊界一致。此種 方式可確保各追縱的第一指令之位址將是標籤。
^該追蹤產生器執行對該追蹤快取記憶體的搜尋時 如果發現與新完成的追蹤的標記相符之現有的資料項, :使該:符的資料項無效,可捨棄新完成的追蹤,且該 :產生态在開始建構新追蹤之前’可等候將要退除的來 次-分支邊界之操作。在一些實施例中,當該追蹤產生 在相快取記憶體中識別出與建構中之追縱完全相同的 貝才4追路產生器可檢查追縱快取記憶體中是否有與 要產生的次—追_應的資料項,如果找到該資料項二 1 亥追縱產生11可捨封财之該輕。在其他的實施命/ 追縱ΐ = ί生單元可先等候到兩個或更多個相繼產生〗 貝抖項,、追縱快取記憶體中現有的f料項^全相同 邊HI棄料追縱,並將新建制開始延遲至到達⑸ ^別另外的其他實施例中,當在追縱快取記憶骨 别出相同的現有資料項時,可使這些資料項盎效。 弟4圖是根據—實施例而建構追縱之方法的流程圖。 92733 23 步驟(351)顯示接收指令。在步驟(3 憶體中並未識別出盥正在 巾錢蹤快取記 次一追縱相同的一個構中之追縱和/或將要建構的 應於該指令二= ,則可在步驟(355)中將對 勺知作用来填滿追蹤中空的操
=:_357)…該指令並:於:分支支T。 支標藏對應:::::繼續捨棄指令’直到接收到與分 上的中,如果決定所接收的操作是在分支標藏 操作位置。m可在步驟(359)中開始填滿次—追縱的各 中搜尋該追::广取=):示完成追縱時,可在步驟(363) :::r果在步驟_==== °字錢追如儲存在—追縱快取記憶體資料項中。在、一 些f施例中’在發現數個連續的相同資料項之前,可以不 捨棄相同的資料項。.
M# tJIAM 第5圖示出電腦系統(4〇〇)的一實施例之一方塊圖,該 電腦系統()包含微處理以⑽),該微處理器(_)經由 匯流排橋接器(則而_合到各種系統組件。微處理器(_ 可包含前文所述的追縱產生器⑽)之實施例。電腦系統的 其他實施例也是可行的且可考慮採用。在所示之系統甲, 92733 24 1363992 主記憶體(404)係經由記憶體匯流排(4〇6)而耦合到匯流排· 橋接器(402),且一圖形控制器(4〇8)係經由一 AGp匯流排. (410)而被耦合到匯流排橋接器(4〇2)。數個ρπ裝置(4i2A _ 至412B)係經由_PCI匯流排(414)而耦合到匯流排橋接器 (402)。亦可設有第二匯流排橋接器(416),以便經由 EISA/ISA匯流排(420)而提供—個或多個£1以或丨以裝置 (418)之電性介面。在該例子中,微處理器(1〇〇)係經由 匯流排(424)而耦合到匯流排橋接器(4〇2),且耦合到任選 L2快取記憶體(。ptional L2 cache)(428)。在一些實施例% 中,微處理(1〇〇)可包含整合式L1快取記憶體(未圖示)。 匯流排橋接器(402)提供了微處理器(100)、主記憶體 (404)、圖形控制器(4〇8)、與連接到pci匯流排(414)的各 裝置間之介面。當自連接到匯流排橋接器(4〇2)的其中一個 裝置接收到操作時,11流排橋接器(4〇2)識別該操作的目標 (例如θ特定的裳置,或者在PCI匯流排(414)的情形中,該 目‘疋在PCI匯流排(414)上)。匯流排橋接器(4〇2)將該操· 作傳送到目標裝置。H賴橋接器(則料將操作由來自 來源裝置或匯流排所使用的協定轉換為目標裳置或匯流排 所使用的協定。 輔助匯流排橋接器⑷6)除了將ISA/EISA匯流排的介 面提供給PCIg流排(414),還可具有額外的功能。亦可在 电月® π统(400)内設有在輔助匯流排橋接器(4丨6)之外或與 輔助匯流排橋接器⑷6)整合的輸入/輸出控制器(未圖〃 不)’以便將操作支援提供給鍵盤及滑氣(422)、以及各種 92733 25 二ί 的實施例中,亦可將-外部快取 2月豆早兀(未圖示)在微處理器⑽)與匯流排橋接器 立之間_合到咖匯流排(424)。或者,可將該外部快 體耗合龍流排橋接器⑷2),可使該外部快取⑽ 體的快取記憶體控制邏輯整合到匯流排橋接器(術)。圖^ 所不之^2快取記憶體(42δ)是在微處理器(1〇〇)的背部組 構中。請注意,L2快取記憶體(428)可與微處理器(⑽)分 離’可連同微處理ΙΙΠΟΟ)而被整合到切(例如擴充槽1 或擴充槽Α)中,或者甚至可連同微處理器(ι〇〇)而整合到 半導體基材中。 。。主5己k體(404)是-種應用程式儲存在其中且微處理 (100)執仃時所主要使用的記憶體^適用的主記憶體(4以) 可包括動態隨機存取記憶體(Dynamic —
Memoir ;簡稱DRAM)。例如,複數組的同步drm (SynChr〇n〇UsDRAM;簡稱 SDRAM)或 RambusDRAM(Rambus DRAM ;簡稱rdraM)可能是適當的。 PCI裝置(412A至412B)是諸如網路介面卡、視訊加速 益、曰效卡、硬碟機或軟碟機或其控制器、小型電腦系統 ji 面(Small Computer System Interface; 稱 SCSI)配 接器、以及電話介面卡等各種周邊裝置的範例。同樣地, ISA裝置(41 8)是諸如數據機、音效卡、以及gPIb或現場 匯流排介面卡(fie丨d bus interface card)等各種資料擷 取介面卡等的各種類型的周邊裝置之範例。 設有圖形控制器(408) ’用以控制顯示器(426)上的文 26 92733 1363992 字及影像之著色。圖形控制器(彻)可採用此項技術中羽知. 的一典型圖形加速器,用以將可有效地移進及移出主f白己憶. ,(404)的三維資料結構著色^圖形控制器(侧)因而可以’ 是AGP匯流排⑷0)的主控農置,這是因為圖形控制器(4⑻ 可要求並接收對匯流排橋接器(4 〇 2 )内的目標介面之主杵 權’因而可存取主記憶體(4Q4)。專用的圖形m流排可配工合 自主記憶體(404)迅速地擷取資料。圖形控制器(_可針 對-些操作而進一步組構成產生AGp匯流排(4⑻上的pC 協定交易。®流排橋接器(術)的AGp介面因而可包含用來等 f援仰協定交易以及PCI協定目標及發出者交易的功 (426)是其上可呈現影像或文字的任何電子顯示 ^適用的顯示器(426)包括陰極射線f (GathGde 一 巧;簡稱CRT)及液晶顯示器(Llquid 簡稱LCD)等的顯示器。 請注意,雖然前文說明中以使用AGP、PCI、及ISA或 EISA匿流排作為例子,但是亦可視需要而以任何廬流排架鲁 構代之。又主意’電腦系統(侧)可以是包含額外的微處 理器(例如圖中示為電腦系統(_的任選組件之微處理器 (100=))之多重處理電腦系統。微處理器(刚a)可類似於微 處理杰(1GG)。更具體而言,在_實施例中,微處理器⑴⑻ 可與微處理1完全相同。微處判⑽a)可經由獨立 勺[机排(如第5圖所不)而連接到匯流排橋接器⑷”, 或者可與微處理器(100)共用咖匯流排麵。此外,微 處理WlGGa)可麵合到類似於u快取記憶體(⑽的任 92733 27 1363992 選的L2快取記憶體(428a)。 現在請參閱第6圖,圖中示出可.包含所述的追蹤產生. 器(Π0)的電腦系統(4〇〇)之另一實施例。其他實施例也是-可打的且可被考慮採用。在第6圖所示之實施例中,電腦 系統(400)包含數個處理節點(612Α)、(612β)、(6i2c)、及 (612D)。每一處理節點係經由每一各別處理節點至 612D)内包含的一記憶體控制器(616A至616〇)而耦合到各 別的纪憶體(614A至614D)。此外,處理節點(612a至612D) 包含用來在該等處理節點⑷^至612D)之間通訊的介面% 邏輯例如,處理節點(612A)包含用來與處理節點(612B) 通訊的介面邏輯(618A)、用來與處理節點(612C)通訊的介 面邏輯(618B)、以及用來與另一處理節點(未圖示)通訊的 介面邏輯(618C)。同樣地,處理節點(612B)包含介面邏輯 (618D)、(618E)、及(618F);處理節點(6l2c)包含介面邏 輯(jl8G)、(618H)、及(6181);且處理節點(612D)包含介 面避輯(618J)、(618K)、及(618L)。處理節點(612d)耦合% 成經由介面邏輯(618L)與複數個輸入/輸出裝置(在菊鍊 組構(daisy chain configuration)中之裝置(620A 至 620B))通訊。其他的處理節點可以類似之方式而與其他的 I / 0裝置通訊。 處理筇點(612人至6120)實施封包型鏈路,以便進行處 理節點間之通訊。在本實施例中,係將該鏈路實施為若干 組的單向線路(例如,利用線路(624A)將封包自處理節點 (612A)傳輸到處理節點(612]8),且利用線路(624B)將封包 92733 28 1363992 ’二::⑻晴輸到處理㈣612')〜^ 7 至624H)在第6圖所示的其他處理節點之間傳輸 =::::!亡組線路(624)可包含-條或多條資料 用心、°玄寻貝料線路的一條或多條時脈線路、以及 用來才曰不傳輸的封包類型之一條或多條控制線路。係以一 種快取記恒體_ &夕t 4。’、 式刼作該鏈路,以便進行各處理節
:二广:’或者以一種非一致之方式操作該鏈路,以便 進仃处理節點與1/0裝置(或通到諸如PCI匯流排或ISA 匯流排等的傳統結構的1/0匯流排之匯流排橋接器)間之 ;:。此夕卜在如圖所示的各"ο裝置之間,可使用菊鍊 、·,。構而以—種非—致之方式操作該鏈路。請注意,將要自 —處理節點傳輸到另-處理節點的-封包可通過一個或多 個中間即點。例如’如第6圖所示,由處理節點(612A)傳 輸到處理節點⑹2D)的-封包可通過處理節點(_)或處 理節點(612C)。可使用任何適當的路由演算法。電腦系統 (彻)的其他實施例可包含比第6圖所示實施例多或少的 處理節點。 一般而言,可在各節點之間經由線路(624)而以一個或 f個位兀時間(bit time)之方式傳輸封包。位元時間可以 是對應的時脈線路上的時脈信號之上升緣或下降緣。該等 封包可包括用來啟動交易的命令封包、用來維持快取記憶 體-致性的探測封包、以及來自對探測及命令封包的回應 之回應封包。處理節點(612A至612D)除了包含記憶體控制 器及介面邏輯之外,尚可包含一個或多個微處理器。廣義 92733 29 1363992 而言,處理節點包含至少一個處理節點,且可任意包含用 來與一記憶體及其他的邏輯電路通訊之一記憶體控制器。’ 更具體而言,每一處理節點(612A至612D)可包含一個或多· 個微處理器(10 〇)。外部介面單元(18 )可包含節點内之介面 邏輯(618)、以及記憶體控制器(616)。 έ己fe體(614A至614D)可包括任何適用的記憶體襄 置。例如,一記憶體(614A至614D)可包括一個或多個 RAMBUS DRAM(RDRAM)、同步 DRAM(SDRAM)、及靜態 RAM。電 腦系統(400)的位址空間係分佈在記憶體(614A至614d)之 間。每一處理節點(612人至612D)可包含一記憶體對應表, =以決定記憶體(614 A至614 D )對應到哪些位址,並因而決 定應將對特定位址的記憶體要求傳送到哪一處理節點 (61.2A至612D)。在一實施例中,電腦系統(4〇〇)内的一位 址之-致性點是躺合到用來儲存該位址的位元組的·邮 =憶體控制器麵竭D)。換言之,記憶體控制: A至61 6D)負責_保以—種快取記憶體—致性之 進行對該對應的記憶體(61“至614D)之每—記情;
體控制器(6⑽至㈣D)可包含作為記憶體(6i4A 至6 之控制電路。此外,記憶體控制器(6心 刚可包含用來使各記憶體要求㈣㈣的若 介面邏輯(6似至_)可包含各種緩衝哭 鏈路接收封包,並緩衝儲存將 。。以自5亥 電腦系統(4,可採用用來傳輸:上傳輸的封包。 水傳輸封包的任何適當之封包流 92733 30 控制機制。例如,在一會 〆 用來μ苑例中,母—介面邏輯(618)儲存 =連接㈣面邏輯的鏈路的另—端上的接收⑼之每一 緩衝器之數目。除非接收端的介面邏輯有可儲存封 ι之未使用的緩衝哭, 八 m 。°否則该"面璉輯將不傳輸該封包。 今—接收端的緩衝哭ίέι治仏w +,- J友衡。。向刖繞迗一封包而將該緩衝器空出 於到=端的介面邏輯將指示該緩衝器已空出的一訊息傳 别至J㈣送端的介面邏輯。可將該機制稱為一配給券型 、c〇up〇n-based)”系統。
1/0裝置(620A至620B)可以是任何適用的1/〇裝置。 Γ?二裝置⑽"至_可包含用來使其可輕合到的 :一心系統通訊之裝置(例如網路介面卡或數據機)。此 ,/0裝置(620AS 620B)可包括視訊加速器 '音效卡、 硬碟機或軟碟機或其控制器、小型電腦系統介面㈤⑴
Co聊ter System lnterface;簡稱s⑶)配接器、電話介 面卡以及4如GPIB或現場匯流排介面卡等的各種資料操 取”面卡。凊 >主意,在本說明書中,術語“丨/〇裝 語“周邊裝置,,將是同義的。 及術 在本說明書的用法中,術語“時脈週期,,或“週期,,音指 指令處理管線的各階段完成其工作所用的時間間隔。:; 憶元件(例如暫存器或陣列)根據用來定義時脈週期的時脈 信號。而擷取指令及計算出的值。例如,記憶元件可根據時 脈仏號的上升緣或下降緣而擷取一值。 熟習此項技術者在完全了解前文所揭示的本發明之 後,將可易於作出各種變化及修改。將把最後的申請專利 92733 31 1363992 範圍S全釋為包含所有此種變化及修改。 【圖式簡單說明】 若參照前文中之詳細說明並配合下列的圖式,將可更 易於了解本發明,這些圖式有: ”圖示出根據一實施例之設有追縱快取記憶體之微 k埋态; 第2圖示出根據一實施例之例示追縦快取記憶體項; 第3圖是根據一實施例而自指令快取記憶體提取相令 或自追蹤快取記憶體提取追蹤之方法的流程圖; 第4圖是根據一實施例而建構追縱之方法的流程圖; 第5圖示出電腦系統的一實施例;以及 第6圖示出電腦系統的另一實施例。 、雖然易於對本發明作出各種修改及替代形式,但是將 =式ί例▲之方式:出本發明的-些特定實施例,且本說 月曰已έ羊細說明了這此特定麻 从、 —付疋貝鈿例。然而,我們當了解, 發明的該等圖式及詳細說明之用意並非將本發明限於所 ^的特㈣式,相反地,本發明將涵蓋在最後中請專利 乾圍所界定的本發明赭袖 〃 申及乾圍内的所有修改、等效物、 及替代方式。本文所用的栲Β . ]夺不崎疋為了組織上的目的,並 非用來限制或詮釋說明或申& > 乂甲5月專利範圍。此外,請注意, 在本申請案全文的用法令,扭 心巧可月b”(“may,,)是一種容許 性的用法(亦即,其意義且古 '、有可月b性),而不是一種強制性 的用法(亦即,JL音羞盍ν π、 R ^ 為必須)。措詞“包括"(“include”) 及其衍生語意指“包括但不 R 万、(including, but not 92733 1363992 limited to,,) 間接地連接”, 接地耦合”。 【主要元件符號說明】 18 外部介面單元 100 ' 102 退除佇列 104 106 指令快取記憶體 108 118 排程器 124 126 载入/儲存单元 128 132 分支預測單元 140 160 追縱快取記憶體 162 164 識別標記 166 166A至166H操作 168、168A、168B指令流控制攔 170 追蹤產生器 200 400 電腦系統 402 404 主記憶體 406 408 圖形控制器 410 412A ' 412B PCI 裝置 414 416 輔助匯流排橋接器 418 420 EISA/ISA匯流排 422 424 CPU匯流排 426 428、 428a L2快取記憶體 612A至612D處理節點 614A 至 。術浯“連接"(“connected”)意指“直接地或 且術語“耗合"(“coupled”)意指“直接地或間 l〇〇a微處理器 派發單元 預先提取單元 執行核心 資料快取記憶體 解碼單元 追蹤快取記憶體資料項 追縱 系統記憶體 匯流排橋接器 記憶體匯流排 AGP匯流排 pci匯流排 EISA或isa裝置 鍵盤及滑鼠 顯示器 92733 33
Claims (1)
1363992
W日修正j'申請專利範圍: 第093136824號專利申請案 100年12月13日補正替換頁' 種用來從快取記憶體提取指令之微處理器,包括: 組構成儲存指令之指令快取記憶體; 分支預測單元; 組構成儲存複數個指令追蹤之追蹤快取記憶體;以 及 耦合到該指令快取記.憶體、該分支預測單元、及該 追蹤快取記憶體的預先提取單元; 其中,該預先提取單元係組構成在該分支預測單元籲 輸出預測目標位址之前自該指令快取記憶體提取指令; 其中,如果該預先提取單元在該追蹤快取記憶體中 識別對該預測目標位址有匹配,則該預先提取單元係組 構成自該追蹤快取記憶體提取該等複數個追蹤中之一 個或多個追蹤;以及 其中,該分支預測單元係組構成回應偵測到分支錯 誤預測而輸出該預測目標位址。 2.如申請專利範圍第J項之微處理器,其中,該分支預測· 單疋係組構成回應將採取分支的預測而輸出該預測目 標位址。 3· —種用來從快取記憶體提取指令之微處理器,包括: 組構成儲存指令之指令快取記憶體; 分支預測單元; 組構成儲存複數個指令追蹤之追縱快取記憔體; 耦合到該指令快取記憶體、該分支預測單元、及該 (修正本)92733 35 第09313682*}號專利申請案 100年12月13曰補正替換頁 追縱快取記憶體的預先提取單元;以及 追蹤產生器’其中’該追蹤產生器係組構成以對應 ;標籤邊界的指令而開始追蹤, 其中’該預先提取單元係㈣成在該分支預測單元 =出預測目標位址之.前自該指令快取記憶體提取指 々;以及 心其中,如果該預先提取單元在該追縱快取記憶體中 播i對該預測目標位址有匹配’則該預先提取單元係組 幕成自該追蹤快取記憶體提取該等複數個追蹤中之一 個或多個追蹤。 :申請專利範圍第3項之微處理器’其中,該追蹤產生 組構成檢查該追破快取記憶體中是否有該追蹤產 生器正在建構的該追蹤之完全相同之拷貝。 :二:利範圍第4項之微處理器,其中,如果該追蹤 器係㈣成捨棄正在建射之該追蹤。㈣追縱產生 = 第4項之微處理器’其令,如果該追縱 項,則該/該追縱之完全相同之拷貝對應的資料 是否有食職生器係組構成檢查該追縱快取記憶體令 /、將要產生的次一追蹤對應的資料項。 第6項之微處理器,其卜如果該追縱 料項,㈣μ线料對相追縦資 縱。、…相產生器餘構餘棄μ建射之該追 (修正本)92733 36 第093136824辣專利申請案 100年12月13日補正替換頁' 8 如由上 [丄W午U月丄;1曰補正替換j .甲請專利範圍第3項之微處理器,其中,該追蹤產生 9器係組構成回應若干退除的指令而產生若干追蹤。 申請專利範圍第3項之微處理器,其中,該追蹤產生 °°係、卫構成回應若干解碼的指令而產生若干追蹤。 〇.如申請專利範圍第3項之微處理器,其中,該等複數個 追蹤中之母一追縱包括若干部分解碼的指令。 U·如申請專利範圍第3項之微處理H,其中,該等複數個 ,中之母追縱與一標§己相關聯,而該標記包括該追 12蹤内所儲存之按照程式順序為最早之指令的位址。 申叫專利範圍第3項之微處理器,其中,該等複數個 八蹤中之每一追蹤與一指令流控制欄位相關聯,而該指 1流控制攔位包括冑對於在該追縱中包含的每一分支 13 ^作作為控制轉移之目標之指令的標籤。 •種用來從快取記憶體提取指令之電腦系統,包括: 系統記憶體;以及 括耦合到該系統記憶體的微處理器,該微處理器包 、,且構成儲存指令之指令快取記憶體,· 分支預測單元; 及組構成儲存複數個指令追縱之追蹤快取記憶體;以 輕合到該指令快取記憶體、該I支預 遣蹤快取記憶體的預先提取單元; ^及°玄 其中,該預先提取單元係組構成在該分支預測單元 (修正本)92733 37 1363992 第093136824號專利申請案 ^ I 100年12月13日補正替換頁 出預測目標位址之前自該指令快取記憶體提取指令; 其中,如果該預先提取單元在該追蹤快取記憶體冲 識別對該預測目標位址有匹配,則該預先提取單元係組 構成自該追蹤快取記憶體提取該等複數個追蹤中之一 個或多個追蹤; ^其中,該分支預測單元係組構成回應偵測到分支錯 誤預測而輸出該預測目標位址。 14·如:請專職圍第13項之電腦系統,其中,該分支預 、貝j單元係.組構成回應將採取分支的預測而輸出該預測_ 目標位址。 15·種用來從快取記憶體提取指令之電腦系統,包括: 系統記憶體;以及 耦合到該系統記憶體的微處理器,該微處理 括: 組構成儲存指令之指令快取記憶體; 分支預測單元; 叙構成儲存複數個指令追縱之追縱快取記憶體;♦ 耦合到該指令快取記憶體、該分支預測單元、及該 追蹤快取記憶體的預先提取單元;以及 =產生器,其中,該追蹤產生器係組構成以對應 於“識邊界的指令開始追蹤, 其中該預先提取單元係組構成在該分支預測單元 輸出預測目標位址之前自該指令快取記憶體提取指 (修正本)92733 38 1363992 第093136824號專利申請案 ^ , .一 100年12月13日補正替換頁 〃、中,如果該預先提取單元在該追蹤快取記憶體中 識別對該預測目標位址有匹配,則該預先提取單元係組 構成自該追蹤快取記憶體提取該等複數個追蹤中之一 個或多個追蹤。 Μ.如申請專利範圍第15項之電腦系統,其中,該追縱產 生器,組構成檢查該追縱快取記憶體令是否有該追縱 產生器正在建構的該追蹤之完全相同之拷貝。 π.如申請專利範圍第16項之電腦系統,其中,如果該追 峨^生器識別出該追縱之完全相同之拷貝,則該追縱產籲 生器係組構成捨棄正在建構中之該追蹤。 Μ·如申請專利範圍第16項之電腦系統’其中,如果該追 2產生器識別出與該追縱之完全相同之拷貝對應的資 1項則°亥追縱產生益係組構成檢查該追蹤快取記憶體 中是否有與將要產生的次一追蹤對應的資料項。 19.如申請,圍第18項之電腦系統,其中,如果該追 ^產生裔識別出與將要產生的該次一追蹤對應的追蹤翁 :料項’則該追蹤產生器係組構成捨棄正在建構中之該 .如申请專利範圍第15項之電腦.系統,其中,該追蹤產 生益係組構成回應若干退除的指令而產生若干追縱。 21·如申請專利範圍第15項之電腦系統,其中,該追蹤產 生益係組構成回應若干解碼的指令而產生若干追蹤。 22·如申請專利範圍第15項之電腦系統哕 個追蹤中之每-追縦包括若干部分解碼的中指/。4複數 (修正本)92733 39 1363992 23·如申請專利範圍第i5項之電 电細糸統,其1f7,該等複數 個追縱t之每-追縱與—標記相關聯,而_記包㈣ 追縱内所儲存的按照程式卿為最早㈣令之位址。 24.=請專利範圍第15項之電腦系統,其中,該等複數 個追縱中之每一追縱盥一指人冷 1机控制攔位相關聯,而該 b k控制櫚位包括將對於在該追财包含之每一分 支操作作為控制轉移的目標之指令的標籤。 25.-種用來建構追縱之方法,包括下列步驟: « 接收退除的指令; 追二=所接收的指令與分支標鐵相關聯,則開始新 之追蹤與追蹤快取記憶體中 收的指令對應於分支標籤為止。 L遲到該所接 26. 如申請專利範圍第託 進行中之4 、之方法,進一步包括繼續已在 進仃中之尚未元成之追縱的建構。 27. 如申請專利範圍第25 快取記憶體,以便得知’進一步包括搜尋追蹤 28. 如.申請專利r n贫 疋否有完全相同之資料項。 驟:果::第27項之方法,進-步包括下列步 快取記憶體中產生一新資料項。 貞則在追敗 29·^申請專利範圍第27項之方法,進-步包括下列牛 驟.如果識別出完全相π - 下列乂 30. 一種用來從 冋之貢料項,則捨棄一追蹤。 種用來雜取記憶體提取指令之方法,包括下列步 (修正本)92733 40 1363992 第093136824號專利申請案 100年12月13日補正替換頁 自指令快取記憶體提取指令; 在產生分支目標位址之前’持續從該指令快取記憶 體提取指令; 如果產生分支目標位址’則搜尋追縱快取記憶體中 疋否有與該分支目標位址對應的資料項。 31. 如申請專利範圍第3〇項之方法,進一步包括下列步 :·如果在該追縱快取記憶體中並未朗出與該分支目 標位址對應的任何資料項’闕續自指令快取記憶體提 取指令。 32. =申請專利範圍第30項之方法,進一步包括下列步 驟·如果找㈣絲記憶體巾削 址對應的資料項,貝丨丨白兮、6 , 刀又曰知位 個追縱。、M该追縱快取記憶體提取-個或多 33. -種用來開始追蹤之微處理器,包括: 用來接收退除的操作之手段; 如果該所接收的操作3 則開始-新追縱之手段;=及为支標籤上的第一操作 延遲手段’如果正在建構中之义, 記憶體中之追蹤完全相 則一追蹤與追蹤快取 蹤直到該所接收的摔作^則該延遲手段延遲開始新追 呆作封應於分支標籤為止。 (修正本)92733 41
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/726,902 US8069336B2 (en) | 2003-12-03 | 2003-12-03 | Transitioning from instruction cache to trace cache on label boundaries |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200530912A TW200530912A (en) | 2005-09-16 |
TWI363992B true TWI363992B (en) | 2012-05-11 |
Family
ID=34633400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093136824A TWI363992B (en) | 2003-12-03 | 2004-11-30 | Microprocessor, computer system and method for fetching instructions from caches, method for constructing traces, and microprocessor for starting traces |
Country Status (8)
Country | Link |
---|---|
US (1) | US8069336B2 (zh) |
JP (1) | JP2007515715A (zh) |
KR (1) | KR20070001900A (zh) |
CN (1) | CN100520712C (zh) |
DE (1) | DE112004002365T5 (zh) |
GB (1) | GB2423852B (zh) |
TW (1) | TWI363992B (zh) |
WO (1) | WO2005062167A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10140210B2 (en) | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US8719837B2 (en) * | 2004-05-19 | 2014-05-06 | Synopsys, Inc. | Microprocessor architecture having extendible logic |
US7365007B2 (en) * | 2004-06-30 | 2008-04-29 | Intel Corporation | Interconnects with direct metalization and conductive polymer |
US20060212654A1 (en) * | 2005-03-18 | 2006-09-21 | Vinod Balakrishnan | Method and apparatus for intelligent instruction caching using application characteristics |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US7937564B1 (en) | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
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 |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
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 |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
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 |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US8218635B2 (en) | 2005-09-28 | 2012-07-10 | Synopsys, Inc. | Systolic-array based systems and methods for performing block matching in motion compensation |
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 |
US7783863B1 (en) | 2005-09-28 | 2010-08-24 | Oracle America, Inc. | Graceful degradation in a trace-based processor |
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 |
US7676634B1 (en) | 2005-09-28 | 2010-03-09 | Sun Microsystems, Inc. | Selective trace cache invalidation for self-modifying code via memory aging |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
KR101260632B1 (ko) | 2005-09-30 | 2013-05-03 | 모사이드 테크놀로지스 인코퍼레이티드 | 출력 제어 메모리 |
US7652922B2 (en) | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
US11948629B2 (en) | 2005-09-30 | 2024-04-02 | Mosaid Technologies Incorporated | Non-volatile memory device with concurrent bank operations |
US7797517B1 (en) | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
TWI448901B (zh) * | 2006-03-28 | 2014-08-11 | Mosaid Technologies Inc | 非揮發性記憶體系統及控制非揮發性記憶體系統之方法 |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
TWI502357B (zh) * | 2009-08-11 | 2015-10-01 | Via Tech Inc | 資料預先提取方法、裝置及電腦系統 |
KR101086457B1 (ko) * | 2009-12-28 | 2011-11-25 | 전남대학교산학협력단 | 저 전력 트레이스 캐쉬 및 명령어 세트 예측기를 구비한 프로세서 시스템 |
GB2481385B (en) | 2010-06-21 | 2018-08-15 | Advanced Risc Mach Ltd | Tracing speculatively executed instructions |
CN102306092B (zh) * | 2011-07-29 | 2014-04-09 | 北京北大众志微系统科技有限责任公司 | 超标量处理器实现指令缓存路选择的方法及装置 |
US8935574B2 (en) | 2011-12-16 | 2015-01-13 | Advanced Micro Devices, Inc. | Correlating traces in a computing system |
WO2013101031A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses |
US9311247B1 (en) | 2012-03-20 | 2016-04-12 | Marvell International Ltd. | Method and apparatus for detecting patterns of memory accesses in a computing system with out-of-order program execution |
US20130307860A1 (en) * | 2012-03-30 | 2013-11-21 | Mostafa Hagog | Preempting Fixed Function Media Devices |
US9164900B1 (en) | 2012-05-23 | 2015-10-20 | Marvell International Ltd. | Methods and systems for expanding preload capabilities of a memory to encompass a register file |
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 |
KR20140134421A (ko) * | 2013-05-14 | 2014-11-24 | 한국전자통신연구원 | 이중 명령어 페치 장치 및 방법 |
US10740105B2 (en) * | 2014-04-04 | 2020-08-11 | Texas Instruments Incorporated | Processor subroutine cache |
US20160335089A1 (en) * | 2015-05-11 | 2016-11-17 | Qualcomm Incorporated | Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN107103116B (zh) * | 2017-03-27 | 2019-07-30 | 中国科学院计算技术研究所 | 一种复用追踪缓存的触发装置及设计方法 |
US10268630B1 (en) * | 2017-10-24 | 2019-04-23 | Hewlett Packard Enterprise Development Lp | Noncoherent interprocessor communication remapping node controller |
CN112286577B (zh) * | 2020-10-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法 |
US20230305992A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor using target instructions |
Family Cites Families (37)
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 |
US5210843A (en) * | 1988-03-25 | 1993-05-11 | Northern Telecom Limited | Pseudo set-associative memory caching arrangement |
AU3776793A (en) * | 1992-02-27 | 1993-09-13 | Intel Corporation | Dynamic flow instruction cache memory |
US5896528A (en) * | 1995-03-03 | 1999-04-20 | Fujitsu Limited | Superscalar processor with multiple register windows and speculative return address generation |
US5745724A (en) * | 1996-01-26 | 1998-04-28 | Advanced Micro Devices, Inc. | Scan chain for rapidly identifying first or second objects of selected types in a sequential list |
WO1997013201A1 (en) * | 1995-10-06 | 1997-04-10 | Advanced Micro Devices, Inc. | Unified multi-function operation scheduler for out-of-order execution in a superscalar processor |
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 |
US6256728B1 (en) * | 1997-11-17 | 2001-07-03 | Advanced Micro Devices, Inc. | Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction |
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 |
US6216206B1 (en) * | 1997-12-16 | 2001-04-10 | Intel Corporation | Trace victim cache |
US6182210B1 (en) * | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6014742A (en) * | 1997-12-31 | 2000-01-11 | Intel Corporation | Trace branch prediction unit |
US6219827B1 (en) * | 1998-03-12 | 2001-04-17 | Hewlett-Packard Company | Trace ranking in a dynamic translation system |
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 |
US6493821B1 (en) * | 1998-06-09 | 2002-12-10 | Intel Corporation | Recovery from writeback stage event signal or micro-branch misprediction using instruction sequence number indexed state information table |
US6339822B1 (en) | 1998-10-02 | 2002-01-15 | Advanced Micro Devices, Inc. | Using padded instructions in a block-oriented cache |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
US6247097B1 (en) | 1999-01-22 | 2001-06-12 | International Business Machines Corporation | Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions |
US6345295B1 (en) | 1999-01-22 | 2002-02-05 | International Business Machines Corporation | Conducting traces in a computer system attachment network |
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 |
US7260684B2 (en) | 2001-01-16 | 2007-08-21 | Intel Corporation | Trace cache filtering |
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 |
US7178134B2 (en) * | 2003-04-24 | 2007-02-13 | International Business Machines Corporation | Method and apparatus for resolving memory allocation trace data in a computer system |
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 |
US8069336B2 (en) | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US7219207B2 (en) * | 2003-12-03 | 2007-05-15 | Intel Corporation | Reconfigurable trace cache |
-
2003
- 2003-12-03 US US10/726,902 patent/US8069336B2/en active Active
-
2004
- 2004-11-22 GB GB0611775A patent/GB2423852B/en not_active Expired - Fee Related
- 2004-11-22 DE DE112004002365T patent/DE112004002365T5/de not_active Ceased
- 2004-11-22 WO PCT/US2004/039269 patent/WO2005062167A2/en active Application Filing
- 2004-11-22 CN CNB200480036205XA patent/CN100520712C/zh active Active
- 2004-11-22 KR KR1020067011089A patent/KR20070001900A/ko not_active Application Discontinuation
- 2004-11-22 JP JP2006542625A patent/JP2007515715A/ja active Pending
- 2004-11-30 TW TW093136824A patent/TWI363992B/zh active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10140210B2 (en) | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
Also Published As
Publication number | Publication date |
---|---|
TW200530912A (en) | 2005-09-16 |
GB2423852A (en) | 2006-09-06 |
KR20070001900A (ko) | 2007-01-04 |
JP2007515715A (ja) | 2007-06-14 |
WO2005062167A3 (en) | 2006-02-09 |
CN100520712C (zh) | 2009-07-29 |
US20050125632A1 (en) | 2005-06-09 |
WO2005062167A2 (en) | 2005-07-07 |
US8069336B2 (en) | 2011-11-29 |
GB0611775D0 (en) | 2006-07-26 |
CN1890631A (zh) | 2007-01-03 |
DE112004002365T5 (de) | 2006-11-09 |
GB2423852B (en) | 2007-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI363992B (en) | Microprocessor, computer system and method for fetching instructions from caches, method for constructing traces, and microprocessor for starting traces | |
US7003629B1 (en) | System and method of identifying liveness groups within traces stored in a trace cache | |
US6367006B1 (en) | Predecode buffer including buffer pointer indicating another buffer for predecoding | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
US6101577A (en) | Pipelined instruction cache and branch prediction mechanism therefor | |
TWI263169B (en) | Method and data processing system having an external instruction set and an internal instruction set | |
US5845101A (en) | Prefetch buffer for storing instructions prior to placing the instructions in an instruction cache | |
US6233657B1 (en) | Apparatus and method for performing speculative stores | |
US6108769A (en) | Dependency table for reducing dependency checking hardware | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
US5835968A (en) | Apparatus for providing memory and register operands concurrently to functional units | |
US5845323A (en) | Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time | |
TWI515567B (zh) | 微處理器的轉譯位址快取記憶體 | |
KR100698493B1 (ko) | 좁은 피연산자들에서 계산을 수행하는 방법 및 장치 | |
KR20050037596A (ko) | 데이터-추론-실행을 지원하는 마이크로프로세서에서 사용을위한 스케쥴러 | |
TW201419143A (zh) | 微處理器及其執行之方法 | |
TW200821924A (en) | Self prefetching L2 cache mechanism for instruction lines | |
CN107038125A (zh) | 具有加速预取请求的独立流水线的处理器高速缓存 | |
WO2007019001A1 (en) | Call return stack way prediction repair | |
US6301654B1 (en) | System and method for permitting out-of-order execution of load and store instructions | |
TWI235918B (en) | Apparatus and method for renaming a cache line | |
US6212621B1 (en) | Method and system using tagged instructions to allow out-of-program-order instruction decoding | |
CN104854556A (zh) | 建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体 | |
KR101123378B1 (ko) | 인덱스 검사를 사용하는 저장-로드 포워딩 버퍼 | |
TW200415514A (en) | Apparatus and method for allocation and initialization of a cache line |