TW201738736A - 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法 - Google Patents

依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法 Download PDF

Info

Publication number
TW201738736A
TW201738736A TW106108083A TW106108083A TW201738736A TW 201738736 A TW201738736 A TW 201738736A TW 106108083 A TW106108083 A TW 106108083A TW 106108083 A TW106108083 A TW 106108083A TW 201738736 A TW201738736 A TW 201738736A
Authority
TW
Taiwan
Prior art keywords
instruction
ownership
storage unit
bit
cache line
Prior art date
Application number
TW106108083A
Other languages
English (en)
Other versions
TWI606393B (zh
Inventor
比恩 布蘭特
艾迪 柯林
Original Assignee
上海兆芯集成電路有限公司
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 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201738736A publication Critical patent/TW201738736A/zh
Application granted granted Critical
Publication of TWI606393B publication Critical patent/TWI606393B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (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)

Abstract

依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法。所有權佇列儲存有快取線位址與對應的所有權索引。快取線資料被轉譯成指令,且每一指令係與相關聯的儲存單元的所有權索引一同被提供。新的每一快取線位址被相對於每一儲存指令的目標位址進行比較,且當決定時,每一目標位址被比較於該所有權佇列中的每一快取線位址。匹配的儲存單元被標記為逾時的,且當依據逾時的儲存單元所產生的每一指令準備好退出時產生例外事件。藉此,快取線與對應的儲存指令間的配對產生例外事件。例外事件刷新處理器以解決潛在的修正的程式碼情況。

Description

依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法
本發明係關聯於記憶體所有權,特別是關聯於基於快取線決定記憶體所有權以偵測自修正程式碼。
自修正程式碼(self modified code, SMC)具有被本地處理器執行的至少一指令以修正另一指令,或者是後續被處理器處理的一程式碼序列。自修正程式碼可能具有一序列的程式碼以修正剛被執行的程式碼,使得被修正而具有新功能的程式碼再被執行一次。於另一個例子中,自修正程式碼用以修正順序緊接的程式碼且就在之前被執行。雖然自修正程式碼現在並不如往昔普遍,許多舊式的程式仍具有自修正程式碼且應被適當的執行。處理器必須能夠偵測自修正程式碼且校正運算以避免不適當的結果。此處所用的「處理器」一詞用以代表任意類型的處理單元,包含微處理器(micro processor)、中央處理器(central processing unit, CPU)、一運算核心或一微控制器(micro controller)等等。此處所用的「處理器」一詞更包含了任意類型的處理器架構,例如整合有多個處理單元的晶片,或者是包含了具有一系統晶片(system of a chip, SOC)的積體電路(integrated circuit, IC)。
現代的處理器經常執行預擷取運算以將記憶體中一或多行讀進指令快取記憶體(icache)。指令快取記憶體的快取線被解析為指令並被執行。為了使效率最大化,擷取單元或者是相仿的元件會試圖填滿指令快取記憶體並維持填滿的狀態以確保指令被連續地供給執行。為了使效能最大化,執行管線(execution pipeline)被希望能夠維持滿載的狀態。現代的處理器經常採用亂序(out-of-order, OOO)執行,也就是說晚收到但已準備好被執行的指令可以先於早收到但還沒準備好被執行指令被執行。預擷取與亂序運算的至少一個問題是,被預擷取與提供執行的指令可能會在之後被自修正程式碼修改。因此,已經被提供執行的指令可能會錯過修正,而可能導致不適當或非原意的運算。
現代的處理器需要偵測或預防逾時指令被完成,逾時指令係指被程式碼修改之後不欲被執行的指令。處理器一般會將記憶體的所有權分割為一指令區域與一資料區域,指令快取記憶體擁有指令區域,資料快取記憶體(data cache, dcache)擁有資料區域。指令區域被預設為只儲存用以執行的指令,而資料區域被預設為可被軟體程式所儲存的資料與訊息所利用。如果指令快取記憶體嘗試讀取資料快取記憶體所擁有的記憶體,所有權必需被從資料快取記憶體轉換,且轉換的過程會緩慢而冗長且使得運算被串列化。
在以往的架構中,所有權係基於分頁的邊界。通常一個分頁的大小是4KB(kilobytes)。雖然,4KB的記憶體並不佔有顯著的容量,自修正程式碼能會產生指令快取記憶體與資料快取記憶體之間的所有權顛簸(thrashing)現象,而降低了運算效率。一種解決方法是降低所有權的大小至四分之一頁,也就是4KB的分頁大小中的1KB的記憶體區塊。但儘管只是1KB的所有權區塊在許多情況中還是足以對自修正程式碼造成麻煩。而且,更大的分頁大小也常被使用,像是2MB(megabytes)甚至是1GB(gigabyte),因此對於降低整體效能來說,所有權區塊一直是個重要的議題。
依據一實施例,一種處理器用以基於快取線決定記憶體所有權以偵測自修正程式碼,處理器具有所有權佇列、擷取系統、處理系統與比較器。處理系統具有處理前端與執行系統。所有權佇列儲存有儲存單元,每一儲存單元對應於其中一快取線。擷取系統將快取線的快取線資料提供至處理前端,以決定每一快取線的所有權索引,且將所有權索引與對應的快取線位址輸入至所有權佇列的儲存單元。處理前端將快取線資料轉譯為指令並提出每一指令以進行執行。每個指令具有所有權佇列中對應的儲存單元的所有權索引。執行系統決定每一儲存指令的目標位址,且當所有權佇列的儲存單元的逾時位元被設定時,執行第一例外事件。所述的儲存單元具有匹配的所有權索引與已準備好被退出的指令。第一比較器比較被輸入進所有權佇列的每一快取線位址與每一目標位址,並在一個相匹配的結果被找到時設定對應的逾時位元。第二比較器比較被執行系統決定的每一目標位址與存在所有權佇列中的每一快取線位址,並設定每匹配的一儲存單元的逾時位元。
第一例外事件被執行時會使執行系統刷新處理器,以避免觸發第一例外事件的指令退出,且第一例外事件更用以使擷取系統重新擷取指令。當輸入對應的快取線位址時,擷取系統會使所有權佇列中的儲存單元有效。處理前端會標註所有權佇列中的儲存最後指令為最後指令。在此實施例中,當對應快取線的退出的指令被標記為最後指令時,執行系統會使儲存單元無效化。
在一實施例中,處理器會具有一逾時偵測器。逾時偵測器依據被提出的指令中的所有權索引讀取所有權快取記憶體中對應的儲存單元中的逾時位元。且當對應的儲存單元中的逾時位元被設定時,逾時偵測器用以使被提出的指令被標記以產生第一例外事件。在此實施例中,當準備好退出的指令被標記以產生第一例外事件時,執行系統執行第一例外事件。處理前端更被用以設定從跨立於二快取線的快取線資料產生的每一指令的跨立位元。在此實施例中,當被提出的指令中的跨立位元被設定時,逾時偵測器會讀取所有權快取記憶體中對應的儲存單元的下一個連續的儲存單元,且當下一個連續的儲存單元的逾時位元被設定時,逾時偵測器會使被提出的指令被標記以產生第一例外事件。
擷取系統會決定所有權索引為二進位計數值。當每一儲存單元被輸入進所有權佇列時,二進位計數值會增加以作為所有權佇列中的儲存單元的總數量。此外,所有權索引的最高有效位元會是纏繞位元。處理器會更具有覆寫偵測器。覆寫偵測器用以依據被提出的指令中的所有權索引以讀取所有權快取記憶體中對應的儲存單元中的纏繞位元。且當對應儲存單元的纏繞位元並不匹配於被提出的指令的纏繞位元時,覆寫偵測器更用以使被提出的指令被標記以產生第一例外事件。當準備好退出的指令被標記以產生第一例外事件時,執行系統會執行第一例外事件。
處理器會具有儲存佇列。儲存佇列會具有多個儲存單元。每一儲存單元被用以儲存處理前端提出的儲存指令,且每一儲存單元用以儲存執行系統決定的一個目標位址。執行系統會更具有儲存管線。儲存管線用以決定被調度以進行執行的每一儲存指令的目標位址。且儲存管線用以提供被決定的每一目標位址給儲存佇列的對應的儲存單元與第二比較器。
處理系統會依據被提出的指令中的所有權索引存取所有權佇列中對應的儲存單元以設定對應的儲存單元中的執行位元。處理器會更具有逾時偵測器。逾時偵測器用以計算第二比較器決定的每匹配的一儲存單元的執行位元。且當匹配的儲存單元中的任何的執行位元被設定時,逾時偵測器會使對應於被決定的目標位址的儲存指令被標記以產生第二例外事件。在此實施例中,當準備好退出的一儲存指令被標記以產生第二例外事件時,執行系統會執行第二例外事件。在一實施例中,第二例外事件使執行系統令被標記以產生第二例外事件的儲存指令退出,以刷新處理器,且以使擷取系統取得指令指標以從指令快取記憶體取得儲存指令後的指令。
處理前端用以設定依據跨立於二快取線的快取線資料產生的每一指令中的跨立位元。處理系統依據被提出的指令中的所有權索引存取所有權佇列中對應的儲存單元以設定對應的儲存單元中的執行位元。此外,當被提出的指令中的跨立位元被設定時,處理前端會用以設定對應的儲存單元後的下一個連續的儲存單元的執行位元。處理器更具有逾時偵測器。逾時偵測器用以計算第二比較器決定的每匹配的一儲存單元的執行位元。且當匹配的儲存單元中的任何的執行位元被設定時,逾時偵測器會使對應於被決定的目標位址的儲存指令被標記以產生待執行的第二例外事件。在此實施例中,當準備好退出的一儲存指令被標記以產生第二例外事件時,執行系統會執行第二例外事件。第二例外事件使執行系統令被標記以產生第二例外事件的儲存指令退出,以刷新處理器,且以使擷取系統取得指令指標以從指令快取記憶體取得儲存指令後的指令。
依據一實施例,在依據快取線決定記憶體所有權以偵測自修正程式碼的方法中係先取得快取線。每一快取線具有快取線位址與快取線資料。決定每一取得的快取線的所有權索引,且將快取線位址與所有權索引加入所有權佇列中的一或多儲存單元。當快取線位址被加入進儲存單元時,於所述的方法中,更比較每一快取線位址與被提出的每一儲存指令的每一目標位址,且標記任何的匹配的儲存單元為逾時的。在所述的方法中,更具有,將快取線的快取線資料轉譯成指令,每一指令具有所有權索引,所有權索引係為了所有權佇列中的儲存單元被決定。儲存單元儲存有被轉譯成的指令所來自的快取線。所述的方法更具有提出指令以執行與決定被提出以執行的每一儲存指令的目標位址。所述的方法更具有,當每一目標位址被決定時,比較每一目標位址與所有權佇列中每一有效的儲存單元的快取線位址,且標記任匹配的一儲存單元為逾時。所述的方法更具有,當準備好退出的指令具有匹配於所有權佇列中的儲存單元的所有權索引,且所述的指令係被標註為逾時的。
所述的方法具有,刷新處理器,避免用以觸發第一例外事件的指令退出,重新擷取用以產生第一例外事件的指令。
所述的方法具有,當接收到新的快取線位址時,有效化所有權佇列中的儲存單元,標記所有權佇列中的每一有效儲存單元中的最後指令為最後指令,且當標記為最後指令的指令退出時,使所有權佇列中的對應的儲存單元無效化。
所述的方法更具有,依據被提出的每一指令具有的所有權索引以存取所有權佇列中對應的儲存單元,且當對應的儲存單元被標記為逾時的時候,標記用以產生第一例外事件的指令,並為準備好退出且被標記以產生第一例外事件的每一指令執行第一例外事件。
所述的方法具有,設定被轉譯自跨立於兩快取線的快取線資料的每一指令的跨立位元。所述的方法更具有,當每一指令被提出時,依據指令所具有的所有權索引存取所有權佇列中對應的儲存單元。且當跨立位元被設定時,取得所有權佇列中下一個連續的儲存單元。當對應的儲存單元被標記為逾時的時候,標記指令以產生第一例外事件。且當跨立位元被設定且所有權佇列中的下一個連續的儲存單元被標記為逾時的時候,標記指令以產生第一例外事件。所述的方法更具有,執行準備好退出且被標記以產生第一例外事件的每一指令的第一例外事件。
所述的方法更具有,重覆地增加所有權索引如二進位計數值,二進位計數值具有一總計數量至少用以作為所有權佇列中的儲存單元的總數量。決定纏繞位元,纏繞位元為二進位計數值的最高有效位元。每一被轉譯的指令的對應的纏繞位元相同於所有權佇列中儲存有指令被轉譯所依據的快取線的儲存單元所被決定的纏繞位元。依據指令中的所有權索引取得所有權快取記憶體中的儲存單元,比較指令中的纏繞位元與曲出的儲存單元的纏繞位元。當纏繞位元並不匹配時,標記用以產生第一例外事件的指令,執行標記以產生第一例外事件的每一指令的第一例外事件。
所述的方法更具有,當提出每一指令時,依據所有權索引取得所有權快取記憶體的儲存單元,且設定取出的儲存單元的執行位元。所述的方法更具有,在轉譯的過程中,設定依據跨立於二快取線的快取線資料產生的每一指令的跨立位元。當提出每一指令時,當指令的跨立位元被設定,取得所有權快取記憶體中的下一個連續的儲存單元,並設定下一個連續的儲存單元的執行位元。所述的方法具有,當比較被決定的目標位址於所有權佇列中的每一有效的儲存單元的快取線位址且匹配的儲存單元被發現時,決定匹配的儲存單元的執行位元是否被設定。當匹配的儲存單元的執行位元被設定時,標記關聯於被決定的目標位址的儲存指令以產生第二例外事件。所述的方法更具有,使被標記以產生第二例外事件且預備退出的儲存指令退出且完成,以刷新處理器,且藉由取得儲存指令於程式順序之後的下一個指令,重新開始操作。
發明人發現了由於自修正程式碼所產生的記憶體所有權的問題。他們開發出了依據快取線建立記憶體所有權的所有權佇列以偵測自修正程式碼。
圖1是處理器100結合一所有權佇列(OWNQ)101的一個簡化的功能區塊圖。所有權佇列101係依據一實施例而實作以建立資料與指令間的所有權。處理器100的標準指令集架構(instruction set architecture, ISA)可以是一個x86巨集架構。此x86巨集架構可以正確地執行被設計成執行於一個x86處理器的大部分的應用程式。一個應用程式的預期結果被取得時,應用程式算是被正確地執行。尤其是,處理器100執行x86指令集中的指令,且具有x86使用者可視的暫存器集。但是本發明並不限制於x86架構,處理器100可依據所屬技術領域具有通常知識者理解的其他可替換的指令集架構。 如圖所示,處理器100耦接一外部系統記憶體102。外部系統記憶體102用以儲存軟體程式、應用程式、資料與所屬技術領域具有通常知識者所理解的其他資料。處理器100可以具有一匯流排介面單元(bus interface unit, BIU)或相仿的元件(未繪示)以耦接記憶體102。在一系統晶片的架構中,處理器100、系統記憶體102與其它處理功能模組(未繪示)可以結合於一共用的積體電路。
處理器100具有一處理系統。處理系統具有處理前端104與執行系統106以及其他於後續說明的處理模組。處理前端104具有一硬體預擷取(PREFETCH)引擎103、一指令快取記憶體(ICACHE)105、一擷取單元107、一解碼器109、一迴圈佇列(LQ)111、一指令轉譯器(XLATE)115、一暫存器別名表(RAT)117與一分支預測器119。執行系統106一般具有一重排序緩衝器(ROB)121、一排程器123(亦稱保留站)、執行單元125與一儲存佇列127。執行單元125具有至少一儲存管線129以及其他的執行單元131。執行單元131例如為一或多個整數(INT)單元、一或多個浮點數(或媒體)單元或至少一負載管線。在一實施例中,負載管線與儲存管線可以被結合進一個記憶體排序緩衝器(MOB)(未繪示)或相仿的元件。儲存管線129可以更耦接一資料快取記憶體(DCACHE)130。資料快取記憶體130具有一或多個級別的資料快取記憶體,例如一第一級別(L1)的快取記憶體或一第二級別(L2)的快取記憶體等等。資料快取記憶體130可以也耦接系統記憶體102。如圖所示,重排序緩衝器121更具有一退出模組135,相關細節請容後再敘。
其他的所有權邏輯與電路連同所有權佇列101一同被提供,以進行所有權決定與偵測自修正程式碼。以下係進行相關細節的介紹。所述的其他的所有權邏輯與電路具有一第一逾時偵測比較器(STALE DETECT COMPARATOR1)137、一第二逾時偵測比較器(STALE DETECT COMPARATOR2)139、一覆寫偵測器141、一第一逾時偵測器(STALE DETECTOR1)143與一第二逾時偵測器(STALE DETECTOR2)145。
在一般性的操作中,預擷取引擎103從系統記憶體102擷取程式資訊並儲存所述的資訊進指令快取記憶體105的快取線中。每一快取線可以具有一預設長度。所述的預設長度例如為64位元組(byte)。快取線的尺寸可以是任意的且在其他的架構之下可以是不同的。擷取單元107從指令快取記憶體105取得每一快取線且提供快取線資料給解碼器109以將所述的資料解析成指令訊息。解碼器109將快取線資料分割且格式化成指令與對應於指令的訊息,例如運算域或相仿的訊息。舉例來說,在處理器100支援x86指令集架構的情況下,所述的指令例如為x86指令。此處提到的每一指令集架構例如是一巨集指令或依據處理器100所支援的指令集的一巨集操作。解碼器109所提供的巨集操作接著被加入迴圈佇列111,且被提供至指令轉譯器115。指令轉譯器115將每一巨集操作轉譯成一或多個對應的微指令或稱微操作(micro operations, uop)。所述的微指令或微操作係依據處理器100的原生指令集編排而成。當每一微操作被提供至重排序緩衝器121時,一指令指標(IP)也被決定且連同每一微操作被提供。微操作被提供至暫存器別名表117。暫存器別名表117用以依據每一微操作的程式排序、運算域源或重命名訊息,產生每一微操作的相依訊息。
來自暫存器別名表117的每一微操作(連同相關聯的訊息)依據程式順序被加入至重排序緩衝器121,且被加入至排程器123。排程器123具有至少一個佇列,所述的佇列用以儲存接收自暫存器別名表117的每一微操作以及其相依訊息。當微操作已準備好被執行時,排程器123調度接收到的微操作至對應的執行單元125。儲存微操作被提供至儲存管線129以進行處理,而所有其他的指令類型被提供至其他執行單元131中的適當的單元(例如整數指令被提供至整數執行單元,媒體指令被提供至媒體執行單元,等等)。當所有的相依關係被解決了,一微操作被認為是準備好進行執行。連同調度一微操作,暫存器別名表117將重排序緩衝器121的一儲存單元安排給所述的微操作。因此,所述的微操作按程式順序被分配至重排序緩衝器121中。重排序緩衝器121例如被編排成一循環佇列,以確保所述的微操作係依據程式順序退出。暫存器別名表117也將對應的指令指標連同對應的相依訊息提供給重排序緩衝器121,以將指令指標連同對應的相依訊息儲存於儲存有微操作的儲存運算元與結果的儲存單元。在一實施例中,一個單獨的物理暫存器堆(PRF)(未繪示)可以被包含進來。暫存器別名表117可以更將物理暫存器堆中的一或多個物理暫存器分配或映射給每一個微操作,以儲存運算元與結果。
執行單元211的結果例如被傳回給重排序緩衝器121。重排序緩衝器121更新對應的欄位且/或更新架構暫存器(architectural register)或相仿的元件。在一物理暫存器堆的實施例中,重排序緩衝器121具有指標,指標用以更新物理暫存器堆中對應的暫存器。在一實施例中,暫存器別名表117將架構暫存器映射至物理暫存器堆中的物理暫存器,並更新重排序緩衝器121中對應於微操作的指標或其他相仿的訊息(未繪示)。重排序緩衝器121中的指標例如在執行中或在執行之後被更新,且指標係用以於運算中更新物理暫存器堆的暫存器中的內容。重排序緩衝器121中的退出模組135最後依據程式碼順序令微操作退出,以確保適當的運算係與軟體程式或應用程式原本的指令一致。當一微操作被標記或者是指示有一例外事件時,退出模組135依據例外事件的類型採取適當的行動。相關細節請見以下詳述。
被加入至儲存管線129以進行運算的儲存微操作也被加入至儲存佇列127中的對應的一個儲存單元。當最初被從暫存器別名表117加入時,儲存微操作的運算元的位址可能是不被確知的。儲存微操作的運算元的位址包含目標位址(DA)。當儲存管線129決定被執行的一儲存微操作的目標位址,儲存管線129提供目標位址至儲存佇列127中的對應的儲存單元。
分支預測器119偵測由解碼器109提供的與/或迴圈佇列111中的分支巨集操作輸出,且分支預測器119依據分支是否被採用而產生分支預測結果。分支預測器119與擷取單元107進行通訊。擷取單元107依據分支預測結果可以在指令快取記憶體105中分支至不同的位置。擷取單元107與預擷取引擎103也彼此進行通訊。因此,當分支位置並不位於指令快取記憶體105中時,預擷取引擎103從系統記憶體102取得對應的位置,以輸入進指令快取記憶體105。
在正常的運算當中,來自解碼器109的巨集操作被經由迴圈佇列111緩衝並被提供至指令轉譯器115。當迴圈偵測器113判斷出迴圈中的指令多次遞迴,所述的迴圈例如全部位於迴圈佇列111或者是至少部分位於迴圈佇列111,迴圈偵測器113辨識一迴圈,所述迴圈中的指令係重覆地從迴圈佇列111中被取出而不是從指令快取記憶體105中被取出。在一實施例中,當一預設數量的迴圈遞迴發生時,迴圈偵測器113偵測到一迴圈。在一具體的實施例中,遞迴個數為24,但其他合適的遞迴個數也可以被使用。在一實施例中,迴圈偵測器113假設迴圈會無限的持續,因此迴圈偵測器113持續重覆的迴圈運算直到預測不正確(迴圈分支不被採用),此時,系統被刷新,且擷取單元107開始在指令快取記憶體105的迴圈之後的下一個位置(或可能是另一個分支位置)取得訊息。
在迴圈偵測器113已偵測到一迴圈的情況下,擷取單元107會持續地取得且將快取線加入至解碼器109的緩衝器,直到緩衝器被填滿,而擷取運算會暫時地停住。在一實施例中,當迴圈偵測器113偵測到一迴圈時,擷取單元107重覆地取得迴圈中的快取線。於另一實施例中,擷取單元107會被通知迴圈偵測器113已偵測到一迴圈,且擷取單元107會開始讀取迴圈外的資料。例如,擷取單元107會開始讀取迴圈的下一個連續的位置。不論哪一個情況中,當一個迴圈進行中,解碼器109會被填滿。
當擷取單元107將快取線資料加入解碼器109時,擷取單元107也將對應的快取線位址(CA)加入所有權佇列101中的一儲存單元並標記此儲存單元為有效的。所有權佇列101會是被編排為循環緩衝器或相仿的結構,所有權佇列101會具有加入指標與推出指標以區別已被分配的儲存單元與已被解除分配的儲存單元。於另一實施例中,所有權佇列101中的每一儲存單元具有一有效位元或一有效值以區別有效儲存單元與無效儲存單元。其中,每一被加入所有權佇列101的新的儲存單元的有效位元被設定。在一實施例中,擷取單元107決定一所有權索引(OWNI)與一纏繞位元(WB)。所有權索引與纏繞位元對應於快取線的快取線位址,且對應的所有權索引值與纏繞位元值被連同快取線位址一同加入所有權佇列101中對應的儲存單元。所有權索引唯一地定義出所有權佇列101中的每一儲存單元。在此纏繞位元被用以偵測所有權佇列101中的一覆寫動作。
暫存器別名表117用以依據對應的所有權索引識別每一快取線中的最後的微操作,並用以標註所述的快取線的微操作為最後一個的微操作,以使此訊息被提供至重排序緩衝器121。當退出模組135退出一個微操作時,退出模組135決定被退出的微操作是否被標註為所有權佇列101中被給定的一快取線的最後一個微操作。若是,退出模組135指示所有權佇列101推出對應的儲存單元或使所有權佇列中的對應的儲存單元無效。
當擷取單元107將每一新的快取線位址加入進所有權佇列101中的一儲存單元時,快取線位址也被提供至第一逾時偵測比較器137的輸入端。逾時偵測比較器137也自儲存佇列127中讀取每一有效的目標位址(DA),並比較每一目標位址與新的快取線位址,以決定是否有相匹配者。逾時偵測比較器137可以被視為一種新儲存單元的比較器。當快取線位址與任何的目標位址相匹配,所有權佇列101中的儲存單元的對應的一個逾時位元被設定。逾時位元STB指示一儲存微操作與快取線命中彼此,亦即,儲存指令已經修改快取線或者是儲存指令將會修改快取線。當一儲存指令與儲存在所有權佇列101一有效儲存單元的一快取線命中彼此或彼此衝突,任何依據此快取線產生的指令會是無效的。當逾時位元STB被設定的時候,任何來自於所述的快取線的微操作可能是無效的(也就是逾時的)。
所有權索引值與纏繞位元值更被加進或關聯至提供到解碼器109的對應的快取線資料。解碼器109具有每一巨集操作的一對應的纏繞位元值與所有權索引值以識別出是由解碼器109從哪個巨集操作對應的快取線取得。當多個巨集操作被自同一條快取線取出時,同樣的纏繞位元與所有權索引被指派給來自同一條快取線的每一巨集操作。在一實施例中,巨集操作並未與資料快取記憶體105中的快取線對齊時,每一巨集操作更具有一跨立位元SDB。跨立位元SDB用以識別出一巨集指令跨立於兩條不同的快取線的情況。也就是說,一巨集指令開始於其中一條快取線並結束於下一個連續的快取線。當這樣的情況發生時,解碼器109加入第一條線的所有權索引並設定巨集操作的跨立位元為真。當巨集操作被包含進一單一的快取線,跨立位元被設定為假。當被加入進指令轉譯器115時,每一巨集操作具有對應的纏繞位元、所有權索引與跨立位元。當一個位元或一個欄位被設定為真或假時,所述的位元或欄位(具有至少一個位元)被設定為邏輯「1」以設定為真,且被設定為邏輯「0」以設定為假。
指令轉譯器115將每一巨集操作轉譯成一或多個微操作。在轉譯的過程當中,由一巨集操作產生的每一微操作同樣具有與所來自的巨集操作一樣的纏繞位元值、所有權索引值與跨立位元值。因此,當一個巨集操作被轉譯成三個個別的微操作時,三個微操作中的每一具有與原本的巨集操作相同的纏繞位元值、所有權索引值與跨立位元值。當傳輸經過暫存器別名表117時,纏繞位元值、所有權索引值與跨立位元值還是被保留於每一微操作。
一示範性微操作uopx示於圖1中的118,且示範性微操作uopx用以被暫存器別名表117推出與被加入進重排序緩衝器121及排程器123中的為處理器100所定義的任意一個微操作。每一微操作具有多個欄位以便於對應的微操作的運算或執行被處理器100的執行系統106所執行。一或多個欄位(未繪示)用以識別特定的指令與指令類型及其相關聯的運算元,例如常數運算元、位址、儲存位置與暫存器索引等等的。其他的欄位係被提供以儲存指令指標IP、纏繞位元WB、所有權索引OWNI與跨立位元SDB。如以下所述地,每一微操作更具有欄位T1以指示第一類型的例外事件,每一微操作更具有欄位T2以指示第二類型的例外事件,每一微操作更具有欄位L以指示指令是否是被暫存器別表117標記為快取線中的最後指令。
當每一微操作自暫存器別名表117中推出且被加入重排序緩衝器121與排程器123中時,暫存器別名表117依據微操作的所有權索引OWNI的索引值存取所有權佇列101中對應的儲存單元,並設定取出的儲存單元中的一個執行位元EXB。當微操作的跨立位元為真以指示其為跨立指令時,暫存器別名表117設定所有權佇列101中下一個連續的儲存單元的執行位元。除此之外。儲存單元的執行位元用以偵測一未被偵測為逾時的儲存微操作的之後的命中。
當每一微操作被自暫存器別名表117中輸出時,覆寫偵測器141藉由微操作所具有的所有權索引值存取所有權佇列101中對應的儲存單元,且覆寫偵測器141藉由微操作所具有的所有權索引值讀取被取出的儲存單元的纏繞位元值。當微操作的纏繞位元值並不匹配於所有權佇列101中的對應的儲存單元的纏繞位元值時,一覆寫作動係曾經發生,且覆寫偵測器141設置微操作的位元T1(或是標記欄位T1為真)以指示一第一例外事件或是第一類型的例外事件於微操作被退出時被執行。在一實施例中,在微操作被加入重排序緩衝器121前,位元T1於微操作被提出之時可以被覆寫偵測器141設定。在另一實施例中,當被加入至重排序緩衝器121時或當被加入至重排序緩衝器121之後,重排序緩衝器121中的儲存單元的位元T1被覆寫偵測器141設定或是被重排序緩衝器121依據覆寫偵測器141的指示設定。一個纏繞位元不匹配通常指示一迴圈引發所有權佇列101中的一覆寫,以至於對應的快取線不再偵測自修正程式碼。退出模組135偵測T1被設定以指示對應於重排序緩衝器121的微操作儲存單元的微操作被標記成第一類型的例外事件。覆寫意味著所有權佇列101中的一個儲存單元被覆寫而使得關聯於對應快取線的自修正程式碼可能變得無法偵測而導致不正確的結果。更進一步地來說,第一類型的例外事件刷新了機器以預防不正確的狀況。
當每一微操作被自暫存器別名表117中輸出時,第一逾時偵測器143依據微操作所具有的所有權索引存取所有權佇列101中對應的儲存單元,且第一逾時偵測器143依據微操作所具有的所有權索引讀取取出的儲存單元的逾時位元。當微操作的跨立位元為真時,第一逾時偵測器43更讀取所有權佇列101中的下一個連續的儲存單元的逾時位元STB。當所有權佇列101中的此逾時位元STB為真,或是微操作係如跨立位元SDB所示地為跨立指令且所有權佇列101中的下一個連續的儲存單元的逾時位元為真,則第一逾時偵測器143藉由設定欄位T1為真(或是藉由設定位元T1)以標記微操作成第一類型的例外事件。逾時偵測器143可以是指用以當指令被提出時,用以偵測可能的無效指令的提交逾時偵測器。如覆寫偵測器141的例子,欄位T1於被加入進重排序緩衝器121中的一儲存單元前、於被加入進重排序緩衝器121中的一儲存單元時、或於被加入進重排序緩衝器121中的一儲存單元後被設定為真,可以是由第一逾時偵測器143或是由重排序緩衝器121設定為真。如前述地,逾時位元STB用以指示快取線已被一儲存微操作修改,因此指令可能是無效的。
每當儲存管線129產生一目標位址(DA)給對應的一儲存微操作時,目標位址除了被提供以更新儲存佇列127中對應的一儲存單元之外,目標位址更提供給第二逾時偵測比較器139的一輸入端。逾時偵測比較器139更存取所有有效的快取線位址且比較新的目標位址於所有權佇列101中每一有效的快取線位址。逾時偵測比較器139可做為新目標位址的比較器。當有一相匹配結果時,逾時偵測比較器139設定所有權佇列101中的對應的儲存單元的逾時位元為真。此外,當逾時偵測比較器139偵測到有一相匹配結果時,對應的所有權索引被提供至第二逾時偵測器145的一輸入端。逾時偵測器145存取所有權佇列101中對應的儲存單元,且讀取此儲存單元中的執行位元EXB。當儲存單元的執行位元EXB被設定為真,則逾時偵測器145使重排序緩衝器121中的儲存微操作儲存單元被標記成第二例外事件類型或者是第二類型的例外事件,這是藉由設定儲存單元的欄位T2為真。逾時偵測器145可做為用以偵測正執行中的可能的無效指令的執行中逾時偵測器。逾時偵測器145可以直接存取重排序緩衝器121中的儲存微操作儲存單元以設定T2,或者逾時偵測器145可以指示重排序緩衝器121以設定T2。
關聯於重排序緩衝器121中的一特定的微操作uopx的示範性的微操作118簡化後被示於圖1中。每一個別的微操作儲存單元具有欄位T1以指示第一類型的例外事件,且每一個別的微操作儲存單元具有欄位T2以指示第二類型的例外事件,每一個別的微操作儲存單元具有欄位L以指示指令是否為被暫存器別名表117標記的快取線的最後一個微操作指令。當微操作為一快取線的最後一個微操作,欄位L被設定為真,反之則欄位L被設定為假。退出模組135偵測重排序緩衝器121的微操作的儲存單元的欄位T1與欄位T2,且退出模組135執行或初始化對應的例外常式(routine)或者是程序。然而,包含儲存微操作的任何的微操作都可能被標記成第一類型的例外事件,但只有儲存微操作會被標記成第二類型的例外事件。
退出模組135偵測每一微操作於何時準備好退出,例如當微操作為重排序緩衝器121中最老的指令時。當一個微操作準備好退出時,退出模組135更偵測對應的微操作的儲存單元中的欄位T1、欄位T2與欄位L。當一微操作的欄位T1為真時,退出模組135產生第一類型的例外事件給所述的微操作,且當欄位T2為真時,退出模組135產生第二類型的例外事件給所述的微操作。當欄位T1與欄位T2為假且欄位L為真時,退出模組135指示所有權佇列101推出所有權佇列101中對應的儲存單元或是使所有權佇列101中的所述的儲存單元無效化,而有效率地從所有權佇列101中移除完整的快取線。
當重排序緩衝器121中最老的微操作(也就是將要退出)被指示為第一類型的例外事件,重排序緩衝器121在處理器100中廣播一對應的例外事件訊號,且處理系統被刷新。在這樣的情況下,執行管線中的任何的巨集操作與微操作被有效率地無效化,包括導致所述的例外事件的微操作。當第一類型的例外事件發生時,所有未退出的微操作被刷新,包括儲存佇列127中任何未退出的儲存微操作。退出的儲存微操作仍持續停留在儲存佇列127中,直到其資料被提交給記憶體架構(如資料快取記憶體130與/或系統記憶體102)。導致第一類型的例外事件的微操作並不被允許退出,微操作記錄於暫存器重排緩衝器121中對應的指令指標可被使用以存取微操作於指令快取記憶體105中的位址。預擷取引擎103與擷取單元107暫時的停住。處理器100中斷於處理器100的一微程式碼唯讀記憶體(未繪示)中的例外常式,且對應的例外程式碼用以指示例外事件的類型。一旦處理系統被刷新時,例外常式取得指令指標且將指令指標傳給擷取單元107以重新擷取關聯於導致例外事件的微操作的巨集操作。
儲存微操作的第二類型的例外事件係相仿於其他類型的微操作的第一類型的例外事件。在此情況中,儲存微操作被允許退出,使儲存微操作完成了其運算且更新其目標位址所指出的記憶體位置。因為記憶體位置係先被指令快取記憶體105所擁有,且儲存微操作是需要被處理器100中的資料快取記憶體130所擁有的資料運算,因此一監控(snoop)單元被初始化以使指令快取記憶體105中對應的快取線無效化。記憶體修正與無效化被確保會在例外事件時發生。相仿於第一類型的例外事件,第二類型的例外事件的例外常式刷新機器,且存取與傳遞指令指標至擷取單元,以於所述的位置重新開始。因為導致第二類型的例外事件的儲存微操作被允許完成,指令指標被增加至儲存微操作於指令快取記憶體105之後的下一指令,且運算由儲存指令之後的所述的位置繼續。
圖2係為依據一實施例實作之圖1中的所有權佇列101具有對應於其他所有權處理模組之介面的的一簡化功能區塊圖。所有權佇列101具有多個儲存單元。每一儲存單元具有一欄位WRAP以儲存纏繞位元。每一儲存單元具有一欄位OWNI以儲存對應的一索引值。每一儲存單元具有一執行欄位以儲存對應的一執行位元。每一儲存單元具有一有效欄位以儲存有效位元。每一儲存單元具有一快取線位址欄位以儲存對應的一快取線位址。每一儲存單元具有一逾時欄位以儲存對應的逾時位元。
在一實施例中,所有權索引係為一計數值。當每一儲存單元被加入進所有權佇列101時,所述的計數值增加。為了確保所有權佇列101中的每一儲存單元的所有權索引具有一獨特的索引值,所有權索引的位元數B對應於所有權佇列101中的儲存單元的個數N,例如2B ≥ N。在一個例子中,如圖2所示,所有權佇列101中的儲存單元的數量為N=32,且所有權索引的位元為5。在一實施例中,擷取單元107以類似方式決定纏繞位元,纏繞位元做為所有權索引的一個額外的最高有效位元。在這樣的情況下,當所有權索引從0計數到一最大值時,纏繞位元是0b(b用以代表一二進位數),其中最大值用以指示所有權佇列101中的儲存單元的總個數。當所有權被重設為0且重新累加至最大值時,且纏繞位元是1b。換句話說,對於所有權佇列101每一次完整的傳遞(pass),纏繞位元WB被切換於兩值之間。對於所有權索引的位元數B,儲存單元的總數可以少於儲存單元最大可能的個數。舉例來說,對總數量為26的儲存單元來說,在第一次遞迴時(OWNI 從十進位的0累計至十進位的25,且WB為0),WB|OWNI從0|00000b 計數至0|11001b。接著,在第二次遞迴中(OWNI 從十進位的0 計數至十進位的25且WB為1),從1|00000b計數至1|11001b。後續係依上述的方式重覆。
如前述地,擷取單元107將一新的快取線位址CA插入快取線位址欄位,並設置有效欄位中對應的有效位元,並決定與插入對應的所有權索引至欄位OWNI,並決定與插入對應的纏繞位元WB至欄位WRAP。新被加入的快取線位址被提供至一逾時偵測比較器137的一輸入端。逾時偵測比較器137也從儲存佇列127接收目標位址DA。當新的快取線位址與來自儲存佇列的任何目標位址之間有相匹配的結果時,逾時欄位中對應的逾時位元被設定為真。當每一微操作被自暫存器別名表117提出時,它依據微操作的所有權索引存取所有權佇列101中對應的儲存單元以設定儲存單元對應的執行位元EXB。此外,當微操作的跨立位元被設定以指示一跨立微操作時,暫存器別名表117存取所有權佇列101中的下一個儲存單元並設定該儲存單元對應的執行位元。當一快取線的最後的微操作退出時,暫存器重排緩衝器121存取所有權佇列101中對應的儲存單元並重置或清除有效位元。
儲存管線129決定每一儲存微操作的目標位址並儲存目標位址於儲存佇列127的對應的儲存單元。目標位址也被提供至第二逾時偵測比較器139。第二逾時偵測比較器139從所有權佇列101中存取快取線位址CA。當新被決定的目標位址匹配來自所有權佇列101的快取線位址中的任何一個時,逾時偵測比較器139設定所有權佇列101中的對應的儲存單元的逾時位元。此外,匹配的所有權索引的索引值被提供至第二逾時偵測器145。第二逾時偵測器145依據所有權索引值存取所有權佇列101中對應的儲存單元以存取對應的執行位元EXB。當所有權佇列101中對應的儲存單元的執行位元被設定為真,逾時偵測器145將重排序緩衝器121中衝突的儲存微操作的儲存單元標記(或是令其被標記)成第二類型的例外事件。
如前述地,覆寫偵測器141從暫存器別名表117提出的微操作接收纏繞位元值與所有權索引值,且覆寫偵測器141依據所有權索引從所有權佇列101中的對應的儲存單元存取纏繞位元值。當所有權佇列101中對應的儲存單元的纏繞位元WB不匹配於微操作的纏繞位元,覆寫偵測器141將微操作標記(或是令其被標記)成第一類型的例外事件。此外,第一逾時偵測器143從暫存器別名表117提出的微操作接收所有權索引值與跨立位元值,且第一逾時偵測器143依據所有權索引值以存取所有權佇列101中對應的儲存單元的逾時位元。當被暫存器別名表117提出的微操作中的跨立位元為真以指示一跨立微操作,則逾時偵測器143存取所有權佇列101中下一個連續的儲存單元的逾時位元。當被存取的儲存單元的任何一個的逾時位元被設定為真,逾時偵測器143將微操作標記(或是令其被標記)成第一類型的例外事件。
一第一儲存單元顯示於所有權佇列101的頂部,第一儲存單元具有一纏繞位元WB、一所有權索引、一執行位元EXB、一有效位元、一對應的快取線位址CA_33與一逾時位元STB。其中,纏繞位元WB=1b。所有權索引的索引值為00000b。執行位元的值為0b。有效位元的值為1b。逾時位元的值為0b。一所有權佇列101中的第二儲存單元係位於第一儲存單元的下方。第二儲存單元具有一纏繞位元WB、一所有權索引、一執行位元EXB、一有效位元、一對應的快取線位址CA_34與一逾時位元STB。其中,纏繞位元WB=1b。所有權索引的索引值為00001b。執行位元的值為0b。有效位元的值為1b。逾時位元的值為0b。一所有權佇列101中的第三儲存單元係位於第二儲存單元的下方。第三儲存單元具有一纏繞位元WB、一所有權索引、一執行位元EXB、一有效位元、一對應的快取線位址CA_03與一逾時位元STB。其中,纏繞位元WB=0b。所有權索引的索引值為00010b。執行位元的值為0b。有效位元的值為0b。逾時位元的值為0b。往所有權佇列101的末端,最後五個儲存單元分別具有快取線位址CA_28 至 CA_32與對應的所有權索引,分別具有所有權索引值11011b – 11111b。具有快取線位址 CA_28的儲存單元更具有執行位元、有效位元與逾時位元。執行位元、有效位元與逾時位元的值皆為0b。而接下來分別具有快取線位址CA_29 – CA_31的三個儲存單元分別具有值為1b的儲存位元與值為1b的有效位元。具有快取線位址CA_29的儲存單元與具有快取線位址CA_31更具有值為0b的逾時位元。而具有快取線位址CA_30的儲存單元則具有值為1b的逾時位元。具有快取線位址CA_32的最後儲存單元係為有效但尚未執行,且被標記為逾時的。
在第一次傳遞中,快取線位址CA_1至快取線位址CA_32以具有值0b的纏繞位元填滿所有權佇列101。在第二次傳遞剛開始時,第一次傳遞中最前面兩個儲存單元會被具有快取線位址CA_33與具有快取線位址CA_34與所有權索引值00000b所有權索引值00001b的儲存單元給分別覆寫,儲存單元各具有值為1b的纏繞位元WB。這些新的儲存單元(33與34)為有效的,但尚未有任何微操作被執行。第三至第二十八個儲存單元已被無效化(可能是完成再無效)。第二十九與第三十一儲存單元為有效的,且每一具有至少一微操作正在執行中。第三十儲存單元為有效的且具有至少一仍在執行中的微操作,但已被標記為逾時的。第三十二個儲存單元並不具有從暫存器別名表117中被提出的微操作,因此第三十二個儲存單元尚未被設定為執行,但是其逾時位元已被設定以指示與一儲存指令衝突或命中。
當擷取單元107計數所有權索引值至11111b,同時纏繞位元WB的值如所有權佇列101中最後的具有快取線位址CA_32(例如第一次傳遞)的儲存單元所指示的為0b,它設定纏繞位元的值如具有快取線位址CA_33(開始第二次傳遞)的儲存單元所指示的為1b且將所有權索引值重置為00000b重新開始計數。 後續被擷取單元107讀取的三十一個儲存單元的纏繞位元WB的值持續維持為1b直到所有權索引被重置為00000b,操作係以如上述的方式重覆。當一個迴圈被偵測到時,迴圈佇列111不再自解碼器109加入巨集操作,擷取單元107仍然持續地自快取記憶體105讀取快取線至所有權佇列101與解碼器109,所有權佇列101中的對應於迴圈指令的一儲存單元可能被擷取單元107覆寫。在這樣的情況下,處理器 100可能不能夠再為所述的快取線偵測自修正程式碼。被暫存器別名表117提出的而位於一迴圈中的微操作的纏繞位元WB的值不再與所有權佇列101中被覆寫的儲存單元的纏繞位元的值一樣。在被提出的微操作的纏繞位元值與所有權佇列101中對應的儲存單元的纏繞位元值不匹配的情況下,覆寫偵測器141偵測被覆寫的快取線並將微操作標記(或是令其被標記)成第一類型的例外事件。即使所有權佇列101中的儲存單元被標記為無效或被自佇列中推出,這依然為真。一個無效的或被推出的儲存單元持續停留在所有權佇列101中直到被覆寫。
圖3係為依據一實施例中處理前端104的運算的流程示意圖。 在第一個區塊301,快取線(例如從系統記憶體102)被讀取且儲存於指令快取記憶體105中,例如是藉由硬體預擷取引擎103。在下一個區塊303,下一條快取線的一個纏繞位元與所有權索引值被決定,例如是藉由擷取單元107,且這些訊息連同快取線位址被加入所有權佇列101中下一個可用的儲存單元。擷取單元107更設定所有權佇列101中的儲存單元中的有效位元。如前述地,所有權佇列101例如被實施成一循環的緩衝器,所述的有效位元係用以決定任意時點中所有權佇列101中的當前的有效儲存單元。在一可替代的實施例中,加入指標與推出指標可被使用。
如下一個區塊305所示,當一個新的快取線位址被加入所有權佇列101,新的快取線位址被比較於儲存佇列127中的每一個有效的目標位址。如下一個詢問區塊307所示,當有一命中被決定時,在區塊309中,接收新的快取線位址的儲存單元的逾時位元STB被設定。在逾時位元值被設定或者並沒有命中時,所有權佇列101的操作結束。
如區塊311所示,同時,當一個新的快取線位址被加入所有權佇列101中時,對應的快取線資料連同纏繞位元與所有權索引被加入解碼器109。而在下一個區塊313,解碼器109解析快取線中的巨集操作,且將巨集運算所在的快取線的對應的纏繞位元與所有權索引加入進每一巨集運算。此外,解碼器109決定巨集操作是否跨立兩條快取線,也就是說巨集操作起始於一條快取線並結束於下一條連續的快取線。若是,則巨集操作的跨立位元被設定。此時,每一巨集操作具有纏繞位元值、所有權索引值與跨立位元值。
如區塊315所示,巨集操作接著被加入迴圈佇列111,且如區塊317所示,接著被加入指令轉譯器115。巨集操作被轉譯成對應的微操作。如前述地,每一巨集操作被轉換成一或多個微操作。每一微操作具有被轉譯的巨集操作的纏繞位元值、所有權索引值與跨立位元值。此時,每一微操作的指令指標也被指定為加入於微操作。在另一例子中,是在區塊319或321時,指令指標被加入於每一微操作。在這些架構中的其中任一,指令指標最終連同每一微操作被加入重排序緩衝器121。在下一個區塊319中,微操作被加入暫存器別名表117中,暫存器別名表117用以依據程式順序、運算元與重命名訊息產生每一微操作的相依訊息。在區塊321中,暫存器別名表117識別出且標註出位於一快取線最後的每一微操作,如前述的一實施例,是藉由設定欄位L為真。此訊息被傳給重排序緩衝器121且被提供給重排序緩衝器121的對應的儲存單元,因此退出模組135可以辨識每一快取線的指令何時被處理。接著,微操作被從暫存器別名表117中提出以進行執行以及後述的所有權與例外事件處理。
圖4係為依據一實施例中所有權與例外事件處理的流程示意圖。在第一個區塊401,暫存器別名表117提出每一個微操作至重排序緩衝器121與排程器123。此外每一儲存微操作更被加入儲存佇列127中。相關操作係繼續進行至區塊402,自暫存器別名表117中提出的微操作的所有權索引用於存取所有權佇列101中對應的儲存單元。此操作已說明於前述的處理器100的多個功能方塊的敘述中,但可以集中於共同的邏輯。當微操作被自暫存器別名表117中提出時,相關操作接著進行至三個不同的區塊,區塊403、區塊405與區塊411。
在區塊403中,儲存單元的執行位元EXB被設定。此外,若微操作的跨立位元也為真,所有權佇列101中的下一個連續的儲存單元也被取出,且儲存單元的執行位元也被設定。此時,所有權佇列101中被取出微操作的至少一快取線被標記為執行中,亦即,至少一快取線的微操作被提出以進行執行。在一或二執行位元被設定後,流程圖中的此分支被完成。
在區塊405,儲存單元中對應的纏繞位元WB被取得且被比較於微操作的纏繞位元WB。當微操作的纏繞位元WB與所有權佇列101中的儲存單元對應的纏繞位元WB不匹配,如在下個詢問區塊407,操作進行至區塊409,而微操作標記成第一類型的例外事件(例如藉由設定T1為真)。在標記(不匹配)之後或在纏繞位元WB被判斷為匹配,流程圖的此分支的相關操作結束。
在區塊411中,所有權佇列101中取出的儲存單元的逾時位元STB被取得。此外,當微操作的跨立位元值為真,所有權佇列101的下一個連續的儲存單元的逾時位元也被取得。當兩個逾時位元其中之一被設定時,相關操作進行至區塊409,微操作標記成第一類型的例外事件(例如藉由設定T1為真)。在於區塊409中標記微操作為第一類型的例外事件之後或當兩個逾時位元都未被設定時,流程圖的此分支的操作結束。
當如前述地準備好被執行時,被提出至排程器123的每一微操作最終會被調度至多個執行單元125中的對應的其中之一。更包含了如區塊415所示地調度儲存微操作至儲存管線129。在下一個區塊417,儲存管線129決定儲存微操作的目標位址且更新儲存佇列127中對應的儲存單元。在下一個區塊419,當每一新的目標位址被決定,目標位址被比較於所有權佇列101中的有效快取線位址。當新的目標位址並不匹配於所有權佇列101中的有效的快取線位址任何一個,相關操作完成。
當一個新的目標位址匹配於一個有效的快取線位址,相關操作進行至區塊423,每個匹配的一儲存單元的逾時位元被設定。此外,匹配的儲存單元的所有權索引被傳至逾時偵測器145。在下一個區塊425,逾時偵測器145依據被提供的所有權索引存取對應的儲存單元以取得儲存單元的執行位元EXB。在下一個詢問區塊427中,當執行位元EXB被決定為真,相關操作進行至區塊429,衝突的儲存微操作標記成第二類型的例外事件(例如藉由設定T2為真)。在區塊427中,當執行位元EXB被決定為假或是在區塊429標記儲存微操作之後,操作結束。
圖5係為依據一實施例中執行、退出與例外事件處理的流程示意圖。在第一個區塊501中,微操作從排程器123如前述地被調度至執行單元125。被調度的為操作會執行,但特定操作情況下並非如此。在下一個區塊503,重排序緩衝器121的退出模組135 識別出下一個要退出的微操作。在下一個詢問區塊505,待退出的微操作的欄位T1被決定是否被設定為真(例如由退出模組135決定)。若是,則相關操作進行至區塊507,第一類型的例外事件被執行,包括刷新處理器100。此外,導致第一類型的例外事件的微操作被如前述地從指令快取記憶體105中重新擷取。例外事件的處理操作係完成。
如下一個詢問區塊509,當T1不為真但T2被決定為真(例如經由退出模組135),相關操作進行至區塊511,此時第二類型的例外事件被執行,儲存微操作被允許完成與退出,且處理器100被刷新。在儲存微操作開始例外事件之後,操作被重新開始於指令快取記憶體105中的下一個指令。例外事件處理的相關操作於此被完成。在區塊513,當T1與T2都不為真,微操作被允許退出。在區塊514,當微操作的欄位L被設定為真,以指示為操作為快取線的最後一個微操作,則在區塊515退出模組135指示所有權佇列101以使對應的儲存單元無效化,且操作被完成。所述的無效化例如是藉由標記儲存單元為無效,或者是推出所有權佇列101中的儲存單元堆疊中的儲存單元。當欄位L為假,在指令被退出後,操作完成。
前述的相關內容被以所屬技術領域具有通常知識者能製造或使用本發明,如所提供關聯於特定應用與必要條件的內容。儘管本發明已參照於某些相關的版本而被相當仔細的方式描述,其他的版本與變異係為可行的且是經過仔細考慮過的。前述提及的實施例的多個變化形對所屬技術領域具有通常知識者來說會是顯而易見的,且上述定義的一般性元則也可以適用於其他的實施例。例如此處所描述的電路可以被實作於適當的方式,例如邏輯裝置或類似的電路。
在不脫離本發明的精神與範圍之下,所屬技術領域具有通常知識者能理解並無歧異地基於上述所揭露的概念與具體實施例設計或改良其他的架構以達到與相同於本發明的目的。因此,本發明並不傾向被限制於前述的特定的實施例,但本發明應符合與前述所揭露的原則與新穎特徵一致的最寬廣的範圍。
100‧‧‧處理器
101‧‧‧所有權佇列
102‧‧‧系統記憶體
103‧‧‧預擷取模組
104‧‧‧處理前端
105‧‧‧指令快取記憶體
106‧‧‧執行系統
107‧‧‧擷取模組
109‧‧‧解碼器
111‧‧‧迴圈佇列
113‧‧‧迴圈偵測器
115‧‧‧指令轉譯器
117‧‧‧暫存器別名表
118‧‧‧微操作
119‧‧‧分支偵測器
121‧‧‧重排序緩衝器
123‧‧‧排程器
125‧‧‧執行單元
127‧‧‧儲存佇列
129‧‧‧儲存管線
130‧‧‧資料快取記憶體
131‧‧‧其他元件
135‧‧‧退出模組
137、139‧‧‧逾時偵測比較器
141‧‧‧覆寫偵測器
143、145‧‧‧逾時偵測器
CA‧‧‧快取線位址
DA‧‧‧目標位址
EXB‧‧‧執行位元
L、T1、T2‧‧‧欄位
IP‧‧‧指令指標
OWNI‧‧‧所有權索引
SDB‧‧‧跨立位元
STB‧‧‧逾時位元
UOP、UOPX‧‧‧微操作
WB‧‧‧纏繞位元
藉由以下的敘述與圖式,本發明的益處、特點與優點可以被更佳的理解。 圖1係為依據一實施例實作以建立資料與指令間的所有權的一所有權佇列結合一處理器的簡化功能區塊圖。 圖2係為依據一實施例實作之圖1中的所有權佇列具有相對於其他所有權處理模組之介面的的一簡化功能區塊圖。 圖3係為依據一實施例中圖1的處理前端的運算的流程示意圖。 圖4係為依據一實施例中所有權與例外事件處理的流程示意圖。 圖5係為依據一實施例中執行、退出與例外事件處理的流程示意圖。
100‧‧‧處理器
101‧‧‧所有權佇列
102‧‧‧系統記憶體
103‧‧‧預擷取模組
104‧‧‧處理前端
105‧‧‧指令快取記憶體
106‧‧‧執行系統
107‧‧‧擷取模組
109‧‧‧解碼器
111‧‧‧迴圈佇列
113‧‧‧迴圈偵測器
115‧‧‧指令轉譯器
117‧‧‧暫存器別名表
118‧‧‧微操作
119‧‧‧分支偵測器
121‧‧‧重排序緩衝器
123‧‧‧排程器
125‧‧‧執行單元
127‧‧‧儲存佇列
129‧‧‧儲存管線
130‧‧‧資料快取記憶體
131‧‧‧其他元件
135‧‧‧退出模組
137、139‧‧‧逾時偵測比較器
141‧‧‧覆寫偵測器
143、145‧‧‧逾時偵測器
CA‧‧‧快取線位址
DA‧‧‧目標位址
EXB‧‧‧執行位元
L、T1、T2‧‧‧欄位
IP‧‧‧指令指標
OWNI‧‧‧所有權索引
SDB‧‧‧跨立位元
STB‧‧‧逾時位元
UOP、UOPX‧‧‧微操作
WB‧‧‧纏繞位元

Claims (21)

  1. 一種處理器,用於依據快取線決定記憶體所有權以偵測自修正程式碼,該處理器包括:一所有權佇列,包括多個儲存單元;一擷取系統,用以提供多條快取線的快取線資料給一處理系統的一處理前端,其中,該擷取系統用以決定每一該快取線的一所有權索引,該擷取系統更用以將該所有權索引與對應的一快取線位址輸入進該所有權佇列的該些儲存單元的其中之一;其中,該處理前端用以將該些快取線的該快取線資料轉譯成多個指令,每一該指令包括該所有權佇列中儲存有一快取線位址的一儲存單元的一所有權索引,該快取線位址對應於產生每一該指令的該快取線資料,且該處理前端用以輸出每一該指令以執行該些指令;其中,該處理系統更包含一執行系統,該執行系統用以決定被輸出的每一儲存指令的一目標位址,當該所有權佇列中與具有將要退出的一指令的所有權索引匹配的一該儲存單元的一逾時位元被設定時,該執行系統執行第一例外事件;一第一比較器,用以對被輸入進該所有權佇列的每一該快取線位址與已被決定的每一該目標位址進行比較,當決定該些快取線位址的其中之一匹配於該些目標位址的其中之一時,該第一比較器用以設定該逾時位元;以及一第二比較器,當每一該目標位址被該執行系統決定時,該第二比較器用以對每一該目標位址與該所有權佇列中儲存的每一有效儲存單元的快取線位址進行比較,且該第二比較器更用以設定每一匹配的該儲存單元的該逾時位元。
  2. 如請求項1所述的處理器,其中該第一例外事件用以指示該執行系統刷新(flush)該處理器,以避免產生該第一例外事件的一指令退出,且使該擷取系統自一指令快取記憶體中重新擷取產生該第一例外事件的該指令。
  3. 如請求項1所述的處理器,其中當輸入該快取線位址時,該擷取系統令該所有權佇列中的對應的該儲存單元為有效;其中,該處理前端將該所有權佇列中的該些儲存單元中對應的一最後指令標記為一最後指令;且其中,當退出的一指令被標記為該最後指令時,該執行系統使該所有權佇列中的該些儲存單元相對應的其中之一無效。
  4. 如請求項1所述的處理器,更包含:一逾時偵測器,用以藉由連同被提出的一指令一同被提供的該所有權索引讀取該所有權佇列的對應的一個儲存單元的該逾時位元,且當對應的該儲存單元的該逾時位元被設定時,該逾時偵測器用以令被提出的該指令被標記,以產生該第一例外事件; 其中,當將要退出的一指令被標記以產生該第一例外事件時,該執行系統執行該第一例外事件。
  5. 如請求項4所述的處理器,其中該處理前端更用以設定至少一該指令中的一跨立位元,該至少一指令係依據跨立其中二該快取線的快取線資料而產生;以及 其中,當被提出的該指令所具有的一跨立位元被設定時,該逾時偵測器用以讀出該所有權佇列中的對應的該儲存單元的連續的下一個儲存單元的該逾時位元,且其中,當該所有權佇列中的對應的該儲存單元的連續的下一個儲存單元的該逾時位元被設定時,該逾時偵測器令被提出的該指令被標記以產生該第一例外事件。
  6. 如請求項1所述的處理器,其中該擷取系統用以決定該所有權索引為一二進位計數值,該二進位計數值係隨著每一儲存單元被輸入進該所有權佇列而增加,該二進位計數值的總計數量至少是該所有權佇列中的儲存單元的總數量;其中,該所有權索引的一最高有效位元包含一纏繞(wrap)位元;更包含一覆寫偵測器,該覆寫偵測器用以依據連同被提出的一指令一同被提供的該所有權索引讀取該所有權佇列中的相對應的一儲存單元的一纏繞位元,且當該儲存單元的該纏繞位元不匹配被提出的該指令對應的該纏繞位元時,該覆寫偵測器用以令被提出的該指令被標記以產生該第一例外事件;其中,當該第一例外事件被標記於將要退出的一指令時,該執行系統執行該第一例外事件。
  7. 如請求項1所述的處理器,更包括:一儲存佇列,包括多個儲存單元,每一該儲存單元用以儲存被該處理前端提出的一儲存指令,且每一該儲存單元用以儲存該執行系統決定的一目標位址;該該執行系統更包括一儲存管線,該儲存管線用以決定出一目標位址,以供被調度的每一該儲存指令的執行程序使用,且該執行系統用以將決定出的該些目標位址提供至該儲存佇列中的對應的儲存單元,該執行系統更用以將決定出的該些目標位址提供至該第二比較器。
  8. 如請求項1所述的處理器,其中該處理系統藉由連同被提出的一指令一同被提供的該所有權索引存取該所有權佇列中的一對應的儲存單元,以設定對應的該儲存單元中的一執行位元;更包含一逾時偵測器,用以計算被第二比較器決定的每一匹配的該儲存單元的該執行位元,且當任何匹配的一儲存單元的任何一執行位元被設定時,該逾時偵測器更用以使對應於被決定的該目標位址的一儲存指令被標記以產生一第二例外事件;其中,當已將要退出的一儲存指令被標記以產生該第二例外事件,該執行系統執行該第二例外事件。
  9. 如請求項8所述的處理器,其中該第二例外事件使該執行系統令被標記以產生該第二例外事件的該儲存指令退出,以刷新該處理器,且以使該擷取系統取得一指令指標以從一指令快取記憶體讀取該儲存指令後的一指令。
  10. 如請求項1所述的處理器,其中該處理前端更用以設定依據跨立於兩快取線的快取線資料產生的每一該指令的一跨立位元;其中,該處理系統依據連同被提出的一指令一同被提供的該所有權索引存取該所有權佇列中的對應的該儲存單元,以設定對應的該儲存單元的一執行位元,且當被提出的該指令的該跨立位元被設定時,設定在對應的該儲存單元之後的下一個連續的儲存單元的一執行位元。
  11. 如請求項10所述的處理器,更包含:一逾時偵測器,用以計算被第二比較器決定的每一匹配的該儲存單元的該執行位元,且當任何匹配的一儲存單元的任何一執行位元被設定時,該逾時偵測器更用以使對應於被決定的該目標位址的一儲存指令被標記以產生待執行的一第二例外事件;其中,當已將要退出的一儲存指令被標記以產生該第二例外事件時,該執行系統執行該第二例外事件,其中,該第二例外事件使該執行系統令被標記以產生該第二例外事件的該儲存指令退出以刷新該處理器,且以使該擷取系統取得一指令指標以從指令快取記憶體讀取該儲存指令之後的一指令。
  12. 一種依據快取線決定記憶體所有權以偵測自修正程式碼的方法,包括:取得多條快取線,每一該快取線具有一快取線位址與快取線資料,決定取得的每一該快取線的一所有權索引,並將該快取線位址與該所有權索引輸入進一所有權佇列中的多個儲存單元的其中之一;當每一該快取線位址被輸入進該所有權佇列的其中一該儲存單元時,比較該快取線位址與每一目標位址,每一目標位置係依據被提出的每一儲存指令而被決定,且將任匹配的一儲存單元標記為逾時的;轉譯該該些快取線的快取線資料為多個指令,每一該指令包括一所有權索引,該所有權索引係為了該所有權佇列中的一儲存單元被決定,該儲存單元儲存有一快取線,該指令係轉譯自該快取線;提出多個指令以執行;決定被提出以執行的每一該儲存指令的該目標位址;當每一該目標位址被決定時,比較被決定的該目標位址與該所有權佇列中有效的每一該儲存單元的該快取線位址,並標記匹配的該儲存單元為逾時;以及當將要退出的一指令的所有權索引匹配於該所有權佇列中被標記為逾時的一儲存單元,執行一第一例外事件,
  13. 如請求項12所述的方法,其中該執行該第一例外事件的步驟更包含刷新處理器,避免用以產生該第一例外事件的該指令退出,且重新擷取產生該第一例外事件的該指令。
  14. 如請求項12所述的方法,更包含:當接收到新的一快取線位址時,使該所有權佇列中的一儲存單元有效;標記該所有權佇列中的每一有效的該儲存單元的一最後指令為一最後指令;以及當被標記為一最後指令的一指令退出時,使該所有權佇列中對應的一儲存單元無效。
  15. 如請求項12所述的方法,更包含:當每一該指令被提出時,藉由被包含的一所有權索引存取該所有權佇列中對應的一儲存單元,且當對應的該儲存單元被標記為逾時的時候,標記該指令以產生該第一例外事件;其中,執行該第一例外事件的步驟中更包含,為將要退出且被標記以產生該第一例外事件的每一該指令執行該第一例外事件。
  16. 如請求項12所述的方法,更包含:在轉譯的過程中,設定從跨立該些快取線其中之二的快取線資料轉譯成的每一該指令的一跨立位元;當每一該指令被提出時,依據每一該指令具有的該所有權索引存取該所有權佇列中對應的該儲存單元,且當該跨立位元被設定時,取得該所有權佇列中下一個連續的該儲存單元;當對應的該儲存單元被標註為逾時的時候,標記該指令以產生該第一例外事件;以及當該跨立位元被設定且該所有權佇列中的下一個連續的該儲存單元被標記為逾時的時,標記該指令以產生該第一例外事件;其中,於執行該第一例外事件的步驟中,更包含,為將要退出且被標記以產生該第一例外事件的每一該指令執行該第一例外事件。
  17. 如請求項12所述的方法,更包含:重覆地增加一二進位計數值的該所有權索引,該二進位計數值的總計數量至少是該所有權佇列中的儲存單元的總數量;決定該二進位計數值的一最高有效位元為一纏繞位元;其中,該轉譯的步驟中更包含將對應的一纏繞位元包含於被轉譯的每一該指令,被轉譯的每一該指令包含的該纏繞位元相同於該所有權佇列中的一儲存單元中被決定的該纏繞位元,該所有權佇列的該儲存單元儲存有被轉譯的指令所轉譯自的快取線;依據指令中的所有權索引取得該所有權佇列中的一儲存單元,並比較取得的該儲存單元的該纏繞位元與指令中的纏繞位元;當該些纏繞位元並不匹配時,標記該指令以產生該第一例外事件;以及其中,執行該第一例外事件的步驟中更具有執行被標記以產生該第一例外事件的每一指令的第一例外事件。
  18. 如請求項12所述的方法,更包含:當提出一指令時,藉由該指令中的一所有權索引取得該所有權佇列中的該儲存單元,且設定取出的該儲存單元的一執行位元;當匹配的一儲存單元於比較該被決定的目標位址與該所有權註列中所有有效的儲存單元的該些快取線位址的過程中被找到時,決定匹配的該儲存單元中的一執行位元是否被設定;且當匹配的該儲存單元的該執行位元被設定時,標記一儲存指令以產生一第二例外事件,該儲存指令係對應於被決定的該目標位址。
  19. 如請求項18所述的方法,更包含: 當將要退出的一儲存指令被標記以產生該第二例外事件時,令該儲存指令退出與結束, 刷新處理器,且藉由取得在程式順序中該儲存指令後的下一個指令重新開始操作。
  20. 如請求項12所述的方法,更包含:於該轉譯的步驟中,設定依據跨立該些快取線的其中之二的快取線資料而產生的每一該指令的一跨立位元,;當提出一指令時,依據該指令具有的一所有權索引取得該所有權佇列中的一儲存單元,並設定取出的該儲存單元中的一執行位元,且當該指令的該跨立位元被設定時,更取得該所有權佇列中下一個連續的儲存單元,並設定所述的下一個連續的儲存單元的執行位元;當匹配的一儲存單元被發現於比較被決定的該目標位址與該所有權佇列的每一該儲存單元的該些快取線位址的過程中,決定匹配的該儲存單元的該執行位元是否被設定,並且當匹配的該儲存單元的該執行位元被設定時,標記對應於被決定的該目標位址的一個儲存指令以產生該第二例外事件。
  21. 如請求項20所述的方法,更包含: 當將要退出的一儲存指令被標記以產生該第二例外事件時,使該儲存指令退出並結束,刷新處理器,且藉由取得在程式順序中該儲存指令後的下一個指令重新開始操作。
TW106108083A 2016-04-20 2017-03-10 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法 TWI606393B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662324945P 2016-04-20 2016-04-20
US15/156,416 US9798669B1 (en) 2016-04-20 2016-05-17 System and method of determining memory ownership on cache line basis for detecting self-modifying code

Publications (2)

Publication Number Publication Date
TW201738736A true TW201738736A (zh) 2017-11-01
TWI606393B TWI606393B (zh) 2017-11-21

Family

ID=60021634

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106108083A TWI606393B (zh) 2016-04-20 2017-03-10 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法

Country Status (2)

Country Link
US (4) US9798669B1 (zh)
TW (1) TWI606393B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US20090164715A1 (en) 2007-12-20 2009-06-25 International Business Machines Corporation Protecting Against Stale Page Overlays
US8656121B2 (en) * 2011-05-17 2014-02-18 International Business Machines Corporation Facilitating data coherency using in-memory tag bits and tag test instructions
US9424427B1 (en) * 2012-03-16 2016-08-23 Bitdefender IPR Management Ltd. Anti-rootkit systems and methods
CN106796506B (zh) * 2014-05-12 2019-09-27 英特尔公司 用于向自修改代码提供硬件支持的方法和装置

Also Published As

Publication number Publication date
TWI606393B (zh) 2017-11-21
US20170308481A1 (en) 2017-10-26
US9792216B1 (en) 2017-10-17
US9798675B1 (en) 2017-10-24
US20170308475A1 (en) 2017-10-26
US9798670B1 (en) 2017-10-24
US9798669B1 (en) 2017-10-24
US20170308477A1 (en) 2017-10-26
US20170308476A1 (en) 2017-10-26

Similar Documents

Publication Publication Date Title
US7552314B2 (en) Fetching all or portion of instructions in memory line up to branch instruction based on branch prediction and size indicator stored in branch target buffer indexed by fetch address
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP3907809B2 (ja) 複合分岐予測およびキャッシュ先取りをするマイクロプロセッサ
US6523109B1 (en) Store queue multimatch detection
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
TWI515567B (zh) 微處理器的轉譯位址快取記憶體
JP5329234B2 (ja) 変換索引マニピェレーション
KR101005633B1 (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
US11176055B1 (en) Managing potential faults for speculative page table access
EP3171264A1 (en) System and method of speculative parallel execution of cache line unaligned load instructions
KR101048258B1 (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
US20080141002A1 (en) Instruction pipeline monitoring device and method thereof
US20060149947A1 (en) Branch instruction prediction and skipping method using addresses of precedent instructions
TWI606393B (zh) 依據快取線決定記憶體所有權以偵測自修正程式碼的處理器與方法
CN114924797A (zh) 预取指令的方法、信息处理装置、设备及存储介质
US20080140993A1 (en) Fetch engine monitoring device and method thereof
TWI283827B (en) Apparatus and method for efficiently updating branch target address cache
CN110178115B (zh) 处理自修改代码的方法和装置
TWI774474B (zh) 處理器電路以及資料處理方法
US20230297381A1 (en) Load Dependent Branch Prediction
US20080141008A1 (en) Execution engine monitoring device and method thereof
CN114358180A (zh) 处理器的预取训练方法、处理装置、处理器和计算设备
CN115686624A (zh) 处理器电路以及数据处理方法
JP2000029693A (ja) 命令キャッシュ装置及びその制御方法