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 PDF

Info

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
Application number
TW093136824A
Other languages
English (en)
Other versions
TW200530912A (en
Inventor
Mitchell Alsup
William Gregory Smaus
Original Assignee
Globalfoundries Us Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Globalfoundries Us Inc filed Critical Globalfoundries Us Inc
Publication of TW200530912A publication Critical patent/TW200530912A/zh
Application granted granted Critical
Publication of TWI363992B publication Critical patent/TWI363992B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction 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
TW093136824A 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 TWI363992B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3896419A (en) * 1974-01-17 1975-07-22 Honeywell Inf Systems Cache memory store in a processor of a data processing system
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

Cited By (1)

* Cited by examiner, † Cited by third party
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