TW201901439A - 空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法 - Google Patents

空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法 Download PDF

Info

Publication number
TW201901439A
TW201901439A TW107112143A TW107112143A TW201901439A TW 201901439 A TW201901439 A TW 201901439A TW 107112143 A TW107112143 A TW 107112143A TW 107112143 A TW107112143 A TW 107112143A TW 201901439 A TW201901439 A TW 201901439A
Authority
TW
Taiwan
Prior art keywords
offset
entry
field
pht
value
Prior art date
Application number
TW107112143A
Other languages
English (en)
Other versions
TWI773749B (zh
Inventor
艾德華 A. 柏瑞柯本
艾倫 瑞達克里斯納
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 TW201901439A publication Critical patent/TW201901439A/zh
Application granted granted Critical
Publication of TWI773749B publication Critical patent/TWI773749B/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/0877Cache access modes
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本發明描述用於空間記憶體串流(SMS)預取引擎的設備及製造其之方法、系統以及方法。在一個態樣中,SMS預取引擎包含圖案歷史表(PHT),所述圖案歷史表具有表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位。當激活PHT條目時,對應於PHT條目之偏移列表欄位中之每一偏移值的每個偏移之置信度值藉由使當前存取與所激活PHT條目之偏移列表欄位中的所儲存偏移值匹配來更新。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。

Description

螺旋記憶體串流自信機制
本揭露內容大體上是關於處理器記憶體管理,且更特定言之,是關於空間記憶體串流置信度機制。
電腦處理器執行快取預取以藉由在實際上需要提取指令或資料之前將指令或資料自較慢記憶體(即,具有較慢讀取/寫入時間)中的其初始儲存裝置提取至較快本端記憶體(即,具有較快讀取/寫入時間且通常較接近指令/資料管線定位)來增強執行效能。大部分現代電腦處理器具有一或多個快速及本端的快取記憶體,其中保存所預取之資料及/或指令直至需要。
然而,預取藉由推測來操作。更技術而言,預取藉由處理引擎來使用資料/指令的當前系列的記憶體需求,以基於例如過去效能、概率模型及/或算法來預測處理引擎接下來將需要什麼資料/指令。因此,不精確的預取存在問題,因為必須將錯誤資料自本端較快記憶體移除,且必須存取正確資料並將所述正確資料移動至本端較快記憶體中。不精確的預取不必要地增大功率消耗、產生系統擁塞(至少由錯誤資料與正確資料的添加的移動/交換造成),且明顯地污染快取的正常運作且使所述正常運作不穩定。
存在通常藉由用於預取資料/指令的預取圖案來區分的不同預取方法,諸如依序預取及步幅預取。儘管有些過於簡化,但依序預取可視為預取連續相鄰記憶體區塊,而步幅預取可視為向前跳(或「跨越」 s 數目的區塊)以便預取記憶體區塊。
亦存在與跨域相關之稱為空間記憶體串流的更特定方案。參看例如索莫奇(Somogyi)等人,空間記憶體串流(Spatial Memory Streaming),第33次電腦體系結構國際會議(Int'l Symposium on Computer Architecture)(ISCA 2006),第252-263頁(下文中簡稱為「索莫奇2006」);以及索莫奇等人,空間記憶體串流,指令級平行度期刊(Journal of Instruction-Level Parallelism)13(2011),第1-26頁(下文中簡稱為「索莫奇2011」),所述文獻兩者以全文引用的方式併入本文中。在空間記憶體串流(spatial memory streaming;SMS)中,程式碼與存取圖案之間的強相關性經偵測且用於預測具有類似相對間隔(「空間相關性」)之組中的記憶體存取圖案。
然而,SMS方案具有多種劣勢。SMS無法處理圖案關於快取之間的線邊界的移位對準。另外,通常用於空間圖案的空間位向量迫使每次存取的較大粒度,且無法追蹤時間次序。SMS亦缺乏穩固置信度機制,且不是動態適應性的,亦即,諸如當動態分支行為改變偏移圖案時,SMS無法適應程式相變。這些劣勢導致覆蓋度及精確度減小以及及時性損失,由此減小效能且增大功率消耗。
因此,已使得本揭露內容解決至少本文中所描述的問題及/或缺點且提供至少下文所描述的優點。
根據本揭露內容之態樣,提供一種空間記憶體串流(SMS)預取引擎,包含圖案歷史表(pattern history table;PHT),所述圖案歷史表包含至少一個表,其中每一條目具有包含來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包含對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位,其中,當激活PHT條目時,藉由使當前存取與所激活之PHT條目中所儲存之偏移值匹配來更新對應於每一偏移值的每個偏移之置信度值,且其中至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
根據本揭露內容之態樣,提供一種用於空間記憶體串流(SMS)預取引擎的方法,包含維持圖案歷史表(PHT),所述圖案歷史表包含至少一個表,其中每一條目具有包含來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包含對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度水平欄位;以及當激活PHT目時,藉由使當前存取與所激活PHT條目中的所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值,其中至少藉由每個偏移之置信度水平將連續學習提供到SMS引擎。
根據本揭露內容之態樣,提供一種設備,所述設備包含:一或多個非暫時性電腦可讀媒體;以及至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述處理器執行為空間記憶體串流(SMS)預取引擎的至少一部分,所述SMS引擎執行以下步驟:維持圖案歷史表(PHT),所述圖案歷史表包含至少一個表,其中每一條目具有包含來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包含對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及當激活PHT條目時,藉由使當前存取與所激活PHT條目中的所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
根據本揭露內容之態樣,提供一種製造晶片組之方法,所述晶片組包含至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述處理器執行以下步驟:維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),所述PHT包含至少一個表,其中每一條目具有包含來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包含對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及當激活PHT條目時,藉由使當前存取與所激活PHT條目中的所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
根據本揭露內容之態樣,提供一種測試設備之方法,所述方法包含:測試設備是否具有至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述處理器執行以下步驟:維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),所述PHT包含至少一個表,其中每一條目具有包含來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包含對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及當激活PHT條目時,藉由使當前存取與所激活PHT條目中的所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值;以及測試設備是否具有儲存指令之一或多個非暫時性電腦可讀媒體。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
在下文中,將參考附圖來詳細描述本揭露內容之實施例。應注意,儘管所述相同元件展示於不同圖式中,但相同元件由相同圖式元件符號指定。在以下描述中,僅提供諸如詳細組態及組件的特定細節來幫助對本揭露內容之實施例的總體理解。因此,對於本領域具通常知識者顯而易見的是,可在不脫離本揭露內容之範疇的情況下,對本文中所描述的實施例作出各種變化及修改。另外,出於清楚及簡潔起見,省略對熟知的功能及構造的描述。下文所描述的術語為考慮本揭露內容中的功能所定義的術語,且可根據使用者、使用者之意圖或習慣而不同。因此,術語之定義應基於整個說明書中的內容而確定。
本揭露內容可具有各種修改及各種實施例,在所述揭露內容中在下文參考附圖詳細描述實施例。然而,應理解,本揭露內容不限於實施例,但包含本揭露內容之範疇內的所有修改、等效物以及替代例。
儘管包含諸如第一及第二之序數的術語可用於描述各種元件,但結構元件不受術語限制。術語僅用於將一個元件與另一元件區分開。舉例而言,在不脫離本揭露內容之範疇的情況下,第一結構元件可稱為第二結構元件。類似地,第二結構元件亦可稱為第一結構元件。如本文中所使用,術語「及/或」包含一或多個相關聯項目的任何組合及所有組合。
本文中之術語僅用於描述本揭露內容的各種實施例但並不意欲限制本揭露內容。除非上下文另外明確指示,否則單數形式意圖包含複數形式。在本揭露內容中,應理解,術語「包含」或「具有」指示特徵、編號、步驟、操作、結構組件、部件或其組合的存在,且不排除一或多個其他特徵、編號、步驟、操作、結構組件、部件或其組合的存在或添加所述一或多個其他特徵、編號、步驟、操作、結構組件、部件或其組合的可能性。
除非不同定義,否則本文中所使用之所有術語具有與本揭露內容所屬領域之技術人員理解的那些術語相同的含義。諸如一般使用的辭典中定義的那些術語的術語應解釋為具有與相關技術領域中的內容相關含義相同的含義,且不應解釋為具有理想或過度形式化含義,除非在本揭露內容中清楚地定義。
各種實施例可包含一或多個元件。元件可包含經配置以執行某些操作之任何結構。儘管實施例可藉助於實例使用呈一定配置之有限數目的元件來描述,但實施例可包含視需要用於給定實施的呈替代配置的更多或更少元件。值得注意的是,「一個實施例」或「一實施例」之任何參考意謂結合實施例所描述之特定特徵、結構或特性包含於至少一個實施例中。片語「一個實施例」(或「實施例」)在本說明書中之各個地方呈現未必是指相同實施例。
本揭露內容之實施例提供用於更新及控制預取引擎之系統、方法以及設備。根據一個實施例,本揭露內容提供用以改變程序行為之連續學習。
根據一個實施例,本揭露內容提供採集時間以及空間次序之偏移列表,由此導致改進及時性。根據一個實施例,代替將一個位元儲存於區域中之每一快取線,本揭露內容使用偏移列表。在另一實施例中,偏移儲存為空間位向量。
根據一個實施例,本揭露內容提供位元組粒度,所述位元組粒度能夠區分至前一行或後續快取線之存取(快取加載指令)。根據本揭露內容之實施例可將起始偏移記憶體位置向下儲存至位元組。在一個實施例中,存取所要求之大小亦儲存於額外欄位中。
根據各種實施例,本揭露內容提供允許出於準確度評定個別偏移的每個偏移之置信度。因此,根據本揭露內容之系統用以例如改變由分支所致之程序相行為。根據本揭露內容之一個實施例的本發明系統可使用存取佇列以確認訓練。根據本揭露內容之一個實施例的本發明系統可使用置信度水平以例如按比例調整未處理預取的數目。根據一個實施例,本發明系統提供允許大部分預取自最佳經訓練之條目發出的確認方案。
根據各種實施例,本揭露內容亦藉由對觸發器之第二次出現具有提昇作用且使用觸發器至觸發器戳記來提供智能訓練;提供觸發器之黑名單(可為行內或行外的);提供觸發器至觸發器步幅偵測;以及提供對索引表條目之觸發器的散列的使用。
圖1說明根據一個實施例的本發明系統之相關組件的例示性方塊圖。一或多個核心處理器150執行兩者皆儲存於記憶體中之涉及資料的指令。為了這樣做,一或多個核心處理器150在處理時存取一級(L1)快取160之資料及指令。L1快取160轉而存取二級(L2)快取170。
就存取儲存於L2快取170內之資料/指令而言,L2快取170分解為空間區域,所述空間區域在下文更詳細地描述。預取器165在多步幅引擎175及SMS引擎110之控制下執行自L2快取170區域的提取。如上文所論述,基於核心處理器150將極快需要所述資料之預測,預取器165存取L2快取170中之記憶體位址且將資料加載至L1快取160中。針對關於這類組件之操作及交互的更多細節,參看拉達克利先(Radhakrishan)等人名稱為《調諧預提取[sic]串流之程度的適應機制(Adaptive Mechanism to Tune the Degree of Pre-Fetches [sic] Streams)》的美國專利第9,665,491號及桑達拉姆(Sundaram)等人名稱為《用於亂序處理器中之活動預取訓練的位址重排序機制(Address Re-Ordering Mechanism for Efficient Pre-Fetch Training in an Out-Of-Order Processor)》的申請中之美國專利公開第2017/0116128號,所述專利兩者由與本申請案相同的受讓人共同擁有且特此以引用的方式併入。
多步幅引擎175在其預測圖案中使用多個步幅,且超出本揭露內容之範疇。針對關於多步幅引擎175之操作的更多細節,參見拉達克利先等人名稱為《預取鏈(PrefetchChaining)》的美國專利第9,569,361號及拉達克利先等人名稱為《具有步幅預取機制之計算系統及其操作之方法(Computing System with Stride Prefetch Mechanism and Method of Operation Thereof)》的申請中之美國專利公開第2016/0054997號,所述專利兩者由與本申請案相同的受讓人共同擁有且特此以引用的方式併入。
SMS引擎110包含活動生成表(active generation table;AGT)120及圖案歷史表(PHT)130。基本上,AGT 120記錄且查找空間圖案,而PHT 130儲存來自AGT 120之包含其觸發器之空間圖案(亦即,開始空間圖案之起始程序計數器(PC)值),如下文進一步論述。當識別觸發器時,如由觸發器指示之所儲存空間圖案所指示,基於核心處理器150將需要這類資料之概率,PHT 130將來自L2快取170中之記憶體位址的資料存取且加載至L1快取160中。
取決於實施例,AGT 120自身可為單一表或多個表。共同結構含有至少兩個表:過濾表及訓練表,所述表用作學習/查找系列指令加載中之空間圖案之處理的部分,如下文參考圖4詳細地論述。
因此,本揭露內容可視為針對兩種不同處理:由AGT 120執行之訓練/學習及由PHT 130執行之實際操作。在闡釋訓練/學習處理之前,在下文提供SMS引擎110中之空間圖案之儲存裝置的簡短概述。
圖2為根據本公開之一實施例的L2快取170內之區域的例示性圖,而圖3為PHT 130中之條目300的例示性圖。
如上文所論述,一旦空間圖案由AGT 120識別,則將包含用於空間圖案之觸發器的空間圖案儲存於PHT 130中。在圖3中,PHT條目300分解為若干欄位。觸發器儲存為PC觸發器欄位310,所述觸發器呈用於特定空間圖案之觸發器的程序計數器(PC)的值的形式,且區域欄位320為以PC觸發器欄位310中之PC觸發器開始的空間圖案之區域的位置。基礎偏移欄位330指示與PC觸發器欄位310中所鑑別之PC觸發器相關聯之起始記憶體位置(基礎偏移),如從由區域欄位320所鑑別之區域的區域邊界所量測。
偏移列表欄位340儲存關於基礎偏移欄位330中之所鑑別的基礎偏移的系列偏移值(或「偏移」),所述偏移值在觸發器之後構成空間圖案。如於本領域具通常知識者將理解,這類偏移可例如儲存為單一空間向量(亦稱作空間位向量)或按順序儲存為系列位置,所述位置在與PC觸發器欄位310中之值相關聯的空間圖案之區域欄位320所鑑別的區域內。在此實施例中,偏移儲存為來基礎偏移之一系列偏移,如圖2之區域200中所示之一系列偏移的實例。在將偏移儲存為空間位元組向量之實施例中,空間圖案保持N次迭代。在每次迭代時,按位元及功能(保守性)或按位元或功能(積極性)利用(上一迭代的)舊圖案來執行於(本迭代的)新圖案上。
返回至圖3,每個偏移之置信度欄位350儲存與儲存於偏移列表欄位340中之偏移中之每一者相關聯的置信度水平,而總體置信度欄位360儲存全部系列偏移之置信度水平,亦即,與PC觸發器欄位310中之值相關聯的空間圖案。置信度水平為動態的且隨著SMS引擎110自加載指令之持續串流學習而變化。
圖4說明根據一個實施例的繪示其中之資訊移動的SMS引擎之相關組件的例示性方塊圖。如上文所論述,SMS引擎400拆分為活動生成表(AGT)410及圖案歷史表(PHT)420。儘管AGT 410可概念上及邏輯上作為單一表(且以同樣方式構建),但在此實施例中,AGT 410經實施為兩個表:過濾表413及訓練(或記憶體頁)表415。出於闡釋方便起見,儘管當然,在此實施例中僅存在一個ROQ,重排序佇列(ROQ)展示於SMS引擎400之兩側,所述重排序佇列採用當前可獲得之各種快取加載指令且將所述指令按執行程序所需要的次序放置。
處理開始於ROQ中之快取加載指令行,所述快取加載指令行可為(或可不為)新空間圖案之未命中/觸發器,所述新空間圖案臨時儲存/分配於過濾表413中。在此實施例中,條目包含與PHT條目300中之前三個欄位相同之欄位,所述欄位為PC觸發器欄位、區域(亦即區域位址)欄位以及基礎偏移(亦即,自區域邊界)欄位,如下文所示:過濾表條目欄位
若下一加載指令在相同區域內,其意謂可由僅當前區域內之偏移提取而非提取另一區域,則對應條目在訓練表415中得到。在此實施例中,訓練表條目包含與PHT條目300之前四個欄位相同之欄位,亦即PC觸發器欄位、區域欄位、基礎偏移欄位以及偏移列表欄位。如下文所指示,偏移列表欄位儲存來自基礎偏移之一系列八個不同偏移。訓練表條目欄位
一旦將來自過濾表413之PC觸發器條目分配至訓練表條目,若快取加載指令仍在相同區域內,則訓練表條目儲存偏移列表欄位中的額外偏移。
收回(其在PC觸發器再次呈現於ROQ中時出現)或失效(其在處於使用中之區域多於訓練表中的條目時出現)可停止空間圖案,所述空間圖案引起在PHT 420中產生新PHT條目之訓練表條目收回/失效。
在一個實施例中,代替等待收回及失效,智慧訓練由使用觸發器至觸發器戳記來提供,其中在PC觸發器再次呈現於ROQ中時,出現自訓練表至PHT之提昇。在此實施方案中,在第一未命中時使用PC觸發器、區域位址以及基礎偏移將條目分配於過濾表413中。在相同區域(具有不同PC)中之第二未命中時,過濾表條目經複製至訓練表415,且計算與基礎偏移之偏移且亦儲存於新訓練表條目之偏移列表欄位中。在與PC觸發器相同之PC之值下一次出現時,訓練表條目提昇至圖案歷史表420中之條目,且使用作為基礎區域及偏移之新位址來開始預取。在提昇之前,相同區域中之任何額外存取具有其偏移,所述偏移經計算且儲存於訓練表條目中。
上文大致描述學習/訓練處理,且現在下文簡單描述SMS引擎400之活動操作。
亦如圖4中所展示,SMS引擎400可自ROQ中之當前快取加載指令中識別PHT 420中之所儲存圖案的PC觸發器,且隨後提供對應於來自PHT 420之PC觸發器的先前所識別且所儲存之空間圖案以用於基於儲存於PHT 420條目中之空間圖案預取資料。
圖5為根據本揭露內容之一實施例的用於訓練/學習以及儲存所發現空間圖案之例示性方法的經修改的流程圖。
圖5開始於重排序佇列(ROQ)505,所述重排序佇列將當前可用之各種快取加載指令置於程式中實際所執行之次序中。在本實施例中,為了效率實質上同時執行510、520以及530。在510處,本發明系統確定快取加載指令中所指示之記憶體存取是否已在L1快取中,在此情況下,方法返回515處以用於ROQ中之下一快取加載指令。若在由快取加載指令指示之記憶體位址處所存取之所需資料不可用於L1快取中,則本發明系統在550處執行SMS訓練,如下文更充分所描述。在520處,本發明系統確定快取加載指令是否用於多步幅引擎。若快取加載指令用於多步幅引擎,則將快取加載指令轉遞至多步幅引擎。若快取加載指令不用於多步幅引擎,則本發明系統在550處執行SMS訓練。
在530處,本發明系統確定含有由快取加載指令指示之記憶體位址處之所需資料的區域是否屬於活動圖案區域。若含有由快取加載指令指示之記憶體位址處之所需資料的區域屬於活動圖案區域,則在535處本發明系統確定含有在由快取加載指令指示之記憶體位址處所存取之所需資料的區域中之位置是否由本發明PHT條目中的任何偏移識別出。若含有在由快取加載指令指示之記憶體位址處所存取之所需資料的區域中的位置未由本發明PHT條目中之任何偏移識別,則在540處將所需資料之位置之偏移添加至訓練表或執行另一形式之再訓練。若含有在由快取加載指令所指示之記憶體位址處所存取之所需資料的區域中的位置由本發明PHT條目中之(下一個)偏移識別,則在545處偏移之每個偏移之置信度水平增大。此增大亦計數為總體置信度水平之「確認」,如下文更詳細論述。
下文表1說明在本揭露內容之一個實施例中以邏輯輸入及邏輯輸出形式訓練之SMS的結果。更特定言之,基於過濾表及訓練表之狀態,或更準確地基於過濾表或訓練表之PC欄位及區域欄位是否與當前快取線加載指令中的相同值匹配,表1展示結果。表1僅意欲輔助用於解釋/描述,且並不對應於硬體中之實際表(諸如,查找表(lookup table;LUT),而是展示硬體組件系統之輸出,所述輸出基於輸入(當前快取線加載指令)及訓練表狀態以及過濾表狀態產生這類結果。 表1:SMS訓練之結果
對於表1中之標記為「(不可能)」之條目,在程式碼/暫存器轉移語言(Register Transfer Language;RTL)中存在阻止結果不斷出現之斷言。條目n1 n1 (例如條目01 01 及條目01 11 列為「不可能」,因為區域對於過濾表或訓練表中之條目是唯一的,且一旦過濾表條目經提昇至訓練表條目,相同區域中之任何稍後PC存取僅更新訓練表條目。條目1 n1 n(例如,條目1 01 0及條目1 11 1)列為「不可能」,因為一旦給定PC在訓練表中,第二次出現使得條目提昇至PHT,且因此稍後出現之PC觸發器不能分配至過濾表,而用於再訓練PHT條目。
圖6A至圖6C提供根據本揭露內容之一實施例的基於呈不完整流程圖格式之過濾表狀態及訓練表狀態的SMS訓練結果的實例。類似於表1,圖6A至圖6C中之流程圖決定菱形是出於解釋/描述之目的,且並不對應於以軟體或硬體實施之決定點,而是基於輸入(當前快取線加載指令)及訓練表狀態以及過濾表狀態展示根據本揭露內容之硬體組件系統的特定輸出。
參考圖6A,在610處,本發明系統確定當前ROQ快取加載指令或存取之PC是否與訓練表條目之PC匹配。若當前ROQ快取加載指令或存取之PC與訓練表條目之PC匹配(在610處,是(YES)=1),則在615處訓練表條目經提昇至PHT條目。若當前ROQ快取加載指令或存取之PC不與訓練表條目之PC匹配(在610處,不(NO)=0),則在620處本發明系統確定當前ROQ快取加載指令之PC是否與過濾表條目之PC匹配。若當前ROQ快取加載指令之PC與過濾表條目之PC匹配(在620處,是=1),則在625處過濾表條目經重置至新區域。若當前ROQ快取加載指令之PC不與過濾表條目之PC匹配(在620處,不=0),則在627處不採取行動。
參考圖6B,在630處,本發明系統確定當前ROQ快取加載指令之區域是否與過濾表條目之區域匹配。若當前ROQ快取加載指令之區域與過濾表條目之區域匹配(在630處,是=1),其意謂下一記憶體存取在相同區域內且可由偏移定義,則在635處過濾表條目經提昇至訓練表條目。若當前ROQ快取加載指令之區域不與過濾表條目之區域匹配(在630處,不=0),則在637處不採取行動。將過濾表之PC值及區域值與當前ROQ快取加載指令(例如,圖6A中之620及圖6B中之630)進行比較/匹配之這些操作通常在相同時間(同時)操作。
參考圖6C,在640處,本發明系統確定當前ROQ快取加載指令之區域是否與訓練表條目之區域匹配。若當前ROQ快取加載指令之區域與訓練表條目之區域匹配(在640處,是=1),則在645處將區域內之新記憶體位置之偏移添加至訓練表條目。當在640處存在訓練表區域匹配時,更新所有訓練表條目。訓練表條目根據其PC觸發器是唯一的,及此處可存在針對一個區域之多個PC觸發器。為處理此情況,更新進入的區域之所有訓練表條目。若當前ROQ快取加載指令之區域不與訓練表條目之區域匹配(在640處,NO=0),則在647處不採取行動。
根據一個實施例,將特定PC觸發器列入黑名單以避免污染訓練結構,且能夠甚至在嘈雜條件下進行優良訓練。列入黑名單之PC觸發器不能用於預取,因而阻止無用訓練及公告不良預取。「行內」黑名單使用PHT條目自身儲存之置信度水平來阻止其自身使用,然而「行外」黑名單使用單獨表來保存PHT容量。
另外,觸發器至觸發器步幅偵測允許預取串流獲得更前之需求。在觸發器至觸發器步幅偵測中,在觸發器PC之第二次出現的情況下,步幅在觸發器PC之第一次出現與觸發器PC之第二次出現之間計算且儲存於圖案歷史表420中。在觸發器PC之每次新出現的情況下,計算距先前觸發器PC之新步幅。這些步幅充當標準步幅偵測算法之輸入,所述步幅之輸出可用於驅動更遠區域中之空間相關預取。
根據一個實施例,訓練表及/或PHT條目之PC觸發器為散列的且用作表條目之索引值(代替PC觸發器本身),因而減小儲存同時維持用於訓練及激活之存取圖案的分離。完整PC具有多個位元,在64位元架構中至少40個,且PC之部分可以保持大部分資訊(及散列版本可彼此識別之至少足夠之資訊)但使用較少位元之方式算術地組合(「散列」),而非儲存完整40個位元。在這些實施例中,較小「散列」值儲存於表之「PC觸發器」欄位中而非PC觸發器之實際40個位元中。此外用於儲存PC值之任何欄位可由其散列值置換,而非儲存其完整值。
圖7說明PHT條目如何自ROQ中之一系列快取線加載指令或存取產生之實例。圖7展示SMS之過濾表、訓練表以及PHT,以及來自ROQ之一系列快取加載命令。圖7中之訓練表條目僅展示來自基礎偏移之前3個偏移(O1 、O2 、O3 ),其中省略號指示此處可存在儲存於訓練表或PHT條目中之任何數目之偏移,儘管在此實施例中僅存在儲存於訓練表條目及PHT條目兩者中之八個偏移。類似地,圖7中之PHT條目具有前3個偏移(O1 、O2 、O3 )以及省略號,並且,在那些欄位下面,存在對應欄位Cf1 、Cf2 、Cf3 …,所述對應欄位為每個偏移之對應置信度值。此組態僅為易於描述,因此每個偏移鄰接於其每一偏移置信度水平呈現。用於全部空間圖案之總體置信度水平Cfall 為最後欄位。
在圖7中,具有PC=x之第一命令為加載記憶體位置103C中之資料/指令(呈十六進制標記法形式,其中每個數字可為0至F,亦即,0至15)。在此實施例中,每一區域假定為4kB=4,096位元組,且因為十進制標記法中之4,096等於十六進制標記法中之1,000,所以記憶體位置之第一個數字識別其區域,在此情況下,區域1000。在710處,存在未命中,且因此條目產生於過濾表中,其中所述條目具有(可能)PC觸發器、區域(1000)以及基礎偏移(3C)。
下一加載指令用於記憶體位置1044,所述記憶體位置在與先前加載相同之區域內。因此,隨著兩個加載指令在區域形成空間圖案,在720處在訓練表中製作新條目。訓練表中之條目具有觸發器(x)、區域(1000)、基礎偏移(3C)以及偏移723,所述偏移723是與基礎偏移(在十進制中+8以自十六進制表示法之103C獲得1044)組合時獲得正加載之當前記憶體位置之值。
下一加載在記憶體位置1000處,所述記憶體位置仍在新訓練表條目之區域內。因此,將新偏移725(十進制標記法中之-60)添加至訓練表條目,因而增大區域內之空間圖案的長度。
第四個加載指令及最後加載指令在記憶體位置5C0A處,所述記憶體位置遠在新訓練表條目之區域外。因此,在715處,最老過濾表條目經新過濾表條目置換,其中新條目具有(可能)新空間圖案、起始區域(5000)以及基礎偏移(C0A)之PC觸發器。
在一些時間點處,訓練表條目經解除分配且在730處成為新PHT條目。儘管在圖7中715及730似乎為同時的,但將訓練表條目提昇至PHT條目完全地獨立於過濾行為。因為PHT條目為新的,所以每一偏移之置信度水平欄位或總體置信度水平欄位中不存在值。下文參考圖8描述此類值如何建立及改變。
圖8說明當所儲存之PHT條目之PC觸發器認識於ROQ中時,PHT條目如何用於自由儲存於其偏移列表欄位中之空間圖案指示的記憶體位置預取資料/指令之實例。另外,根據本發明之實施例,使用PHT條目中之每一偏移欄位及總體置信度欄位追蹤個別偏移及總體空間圖案兩者之準確度。
圖8僅展示具有來自ROQ之系列快取加載命令之SMS之PHT,及另一「預取/加載」欄經添加以展示加載指令如何根據本揭露內容的實施例來實現。因為偏移以十進制標為單位,所以預取/加載欄之部分展示自記憶體位置之十進制值添加及減除。
在圖8中,第一負載命令具有PC=x,其匹配具有x之PC觸發器的PHT條目,其在810處激活用於預取之PHT條目。至少因為起始位置為任意的,且實際空間圖案由距起點之相對偏移定義,在820處第一加載命令之區域及基礎偏移值置換先前值。儘管此替代在820處展示為鄰接於第二加載命令,在本實施例中,此替代將與激活之PHT同時出現,亦即,大致與第一加載命令同時。
根據PHT條目,下一加載在距第一加載指令+8偏移處。然而,典型地,自L2快取下載之快取線(或區塊)為32位元組、64位元組或128位元組長,以加載指令中之記憶體位置為開始。因此,+8偏移處之記憶體位置已由先前加載指令下載。在根據本揭露內容之實施例中,偏移之大小依序使用以防止不必要的加載,且因此不存在自L2快取至L1快取之額外下載,因為+8偏移處之記憶體位置已在來自先前加載指令之L1快取中。
然而,本揭露內容之實施例之另一態樣為以總體及每一偏移置信度水平粒度兩者來追蹤空間圖案之準確度。因為第二加載指令與PHT條目中之+8偏移(亦即,30F8)處之所預測記憶體位置匹配,所以在830處將加一(+1)添加至對應於第一偏移O1 之每一偏移置信度欄位Cf1 。類似地,因為O2 之-60偏移亦與下一加載指令(30B4)匹配,且因此在840處將加一(+1)添加至對應於第二偏移O2 之每一偏移置信度欄位Cf2
儘管上文所論述為一系列事件,但PHT條目之函數為預取的,且在810處來自L2快取之30B4快取線/區塊下載以與PHT條目經激活之大致相同時間製作,因為偏移值可即刻在激活之PHT條目中獲得。僅每一偏移置信度水平之分配必須等待ROQ中之實際加載指令以便評估所下載/預取的是否是實際所需的。
空間圖案儲存於O2 =-60處之PHT條目端部中,如圖7中原先所記錄。然而,在此系列指令中,用於記憶體位置(3100)之下一加載指令在PHT條目之區域(3000)內。由此,在850處,將下一記憶體位置之偏移(+16)作為O3 添加至PHT條目。因此,在本揭露內容之實施例中,在核心處理器之操作期間不斷地改進且評估PHT條目。因為僅將O3 添加至PHT條目,其尚不具有對應置信度水平Cf3 。根據本揭露內容之其他實施例,新添加之偏移的置信度水平可最初經分配+1值或另一值,所述另一值已將自身展示為用於此系列指令之良好開始置信度水平。
在本揭露內容之其他實施例中,特定偏移之每一偏移置信度水平隨時間可用於消除預取,所述預取並不具有匹配實際加載指令之合理的足夠機率。在下文PHT條目之實例中,六個偏移之空間圖案具有比其他偏移(O2 、O3 以及O5 )具有更高置信度平之一些偏移(O1 及O6 )。在本揭露內容之一個實施例中,當PHT條目激活時,置信度水平為0之任何偏移,如O3 未與偏移之其餘部分經預取。由錯誤預取造成之資源浪費超出未使用可能良好,但亦可不良之預取的風險(亦即,未使用正確預取之風險被忽略是由於其置信度水平過低)。
作為另一實例,在本揭露內容之另一實施例中,臨限值設定在將不預取較低的任何偏移值。使用下文實例,若建立臨限值>1,則由偏移O2 、O3 以及O5 指示之記憶體位置將未經預取。以此方式,本揭露內容之實施例可消除由總體空間圖案之較弱成員造成之錯誤預取,同時保持隨時間展示為精確之預取。PHT 條目之實例
用於儲存於PHT條目中之整個空間圖案之總體置信度水平(CFall )可以多種不同方式計算及用於改良預取準確度。舉例而言,總體置信度水平CFall 可計算為飽和計數器,所述飽和計數器在確認時之值中增大,及當觸發器PC將不具有對應確認之PHT條目激活時(在最差情境中)減小。如上文所論述,可在所儲存PHT條目之空間圖案中之偏移展示為正確且其每一偏移置信度水平遞增+1時確認,如圖5中在535處所展示。
總體置信度水平CFall 可用於藉由例如判定在第一確認可見之前應該公告多少次預取及/或每次確認公告多少次預取(此可為非線性,例如,第一確認觸發另外2次預取,而第二確認觸發3次預取等)來改良預取準確度。
如上述詳細所描述,本揭露內容尤其提供:用以改變程式行為之連續學習;捕獲時間次序之偏移列表、能夠區分前一行或後一行存取之位元組粒度;允許追蹤個別偏移隨時間推移之準確度的每一偏移置信度;以及允許大部分預取自最佳經訓練條目公告之確認方案。
本揭露內容亦尤其提供:藉由使PC觸發器之第二次出現提昇及使用觸發器至觸發器戳記來進行智慧訓練;PHT(可為行內或行外)中之PC觸發器的黑名單;觸發器至觸發器步幅偵測;以及使用PC觸發器之散列以索引PHT條目。
圖9說明根據一個實施例之本發明設備的例示性圖。設備900包含至少一個處理器910及一或多個非暫時性電腦可讀媒體920。當執行儲存於一或多個非暫時性電腦可讀媒體920上之指令時至少一個處理器910執行以下步驟:維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),PHT包括至少一個表,其中每一條目具有包括與區域內之基礎偏移值之偏移值的子欄位的偏移列表欄位及包括用於對應於每一偏移值之每一偏移置信度水平的子欄位之每一偏移置信度欄位;以及當PHT條目激活時,藉由將當前存取與所激活之PHT條目中之所儲存偏移值匹配來更新對應於激活的PHT條目中之每一偏移值的每一偏移之置信度值。此外,一或多個非暫時性電腦可讀媒體920儲存用於使至少一個處理器910執行那些步驟的指令。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
在另一實施例中,當執行儲存於一或多個非暫時性電腦可讀媒體920上之指令時至少一個處理器910執行以下步驟:維持用於空間記憶體串流(SMS引擎)之過濾表,其中過濾表中之每一條目包括程式計數器(PC)觸發器、區域位址以及基礎偏移;維持用於SMS引擎之訓練表,其中訓練表中之每一條目包括PC觸發器、區域位址、基礎偏移以及偏移列表,所述偏移來自與區域位址相同之區域內之記憶體位置的基礎偏移;當SMS引擎之重排序佇列(ROQ)中的當前加載指令/存取導致未命中時,分配過濾表中之新條目,其中新條目之PC觸發器為當前指令/存取之PC且新條目之區域位址及基礎偏移包括由當前加載指令/存取指示之記憶體位置;當由ROQ中之下一加載指令/存取指示之記憶體位置在相同區域內時,藉由分配新訓練表條目將新過濾表條目提昇至訓練表中之條目,所述新訓練表條目包括過濾表條目之PC觸發器、過濾表條目之區域位址、過濾表條目之基礎位址以及偏移列表中之第一偏移,其中第一偏移為如所量測之區域內之記憶體位置距基礎偏移之距離;以及每當由ROQ中之下一加載指令/存取指示之記憶體位置在相同區域內時,將另一偏移添加至訓練表條目中之偏移列表,其中所述另一偏移為如所量測之區域內之記憶體位置距基礎偏移之偏移距離。此外,一或多個非暫時性電腦可讀媒體920儲存用於使至少一個處理器910執行那些步驟的指令。
圖10說明根據一個實施例的用於製造及測試包括空間記憶體串流(SMS)預取引擎之本發明設備的例示性流程圖。.
在1050處,製造設備(在此情況下為晶片組),包含至少一個處理器及一或多個非暫時性電腦可讀媒體。當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,至少一個處理器執行以下步驟:維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),PHT包括至少一個表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及當激活PHT條目時,藉由將當前存取與所激活PHT條目中之所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值。一或多個非暫時性電腦可讀媒體儲存用於使至少一個處理器執行那些步驟的指令。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
在1060處,測試設備(在此情況下為晶片組)。測試1060包含測試設備是否具有至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述處理器執行以下步驟:維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),所述PHT包括至少一個表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及當激活PHT條目時,藉由將當前存取與所激活PHT條目中之所儲存偏移值匹配來更新對應於所激活PHT條目中之每一偏移值的每個偏移之置信度值;以及測試設備是否具有一或多個非暫時性電腦可讀媒體,所述非暫時性電腦可讀媒體儲存指令以用於使至少一個處理器來執行上述步驟。可至少藉由每個偏移之置信度水平來將連續學習提供至SMS引擎。
在另一實施例中,製造晶片組,所述晶片組包含至少一個處理器及一或多個非暫時性電腦可讀媒體。當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,至少一個處理器執行以下步驟:維持用於串流記憶體串流(SMS)引擎之過濾表,其中過濾表中之每一條目包括程式計數器(PC)觸發器、區域位址以及基礎偏移;維持用於SMS引擎之訓練表,其中訓練表中之每一條目包括PC觸發器、區域位址、基礎偏移以及偏移列表,所述偏移來自與區域位址相同之區域內之記憶體位置的基礎偏移;當SMS引擎之重排序佇列(ROQ)中之當前加載指令/存取導致未命中時,分配過濾表中之新條目,其中新條目之PC觸發器為當前加載/指令之PC且新條目之區域位址及基礎偏移包括由當前加載指令/存取指示之記憶體位置;當由ROQ中之下一加載指令/存取指示之記憶體位置在相同區域內時,藉由分配新訓練表條目將新過濾表條目提昇至訓練表中之條目,所述新訓練表條目包括過濾表條目之PC觸發器、過濾表條目之區域位址、過濾表條目之基礎位址以及偏移列表中之第一偏移,其中第一偏移為如所量測之區域內之記憶體位置距基礎偏移之距離;以及每當由ROQ中之下一加載指令/存取指示之記憶體位置在相同區域內時,將另一偏移添加至訓練表條目中之偏移列表,其中另一偏移為如所量測的區域內之記憶體位置距基礎偏移之偏移距離。此外,所述一或多個非暫時性電腦可讀媒體儲存用於使至少一個處理器執行以上步驟的指令。
上文關於本揭露內容之實施例所描述的步驟及/或操作可取決於特定實施例及/或實施方案按不同次序或並行或針對不同時期同時等發生,如將由於本領域具有通常知識者所理解。不同實施例可以不同次序或藉由不同方法或方式執行動作。如將由於本領域具通常知識者所理解,一些圖式是所執行動作的簡化表示,其描述在本文中簡化綜覽,且現實世界實施方案將複雜得多、需要更多階段及/或組件,且亦將取決於特定實施方案的要求而變化。為了簡化表示,這些圖式並未展示其他所需步驟,因為這些步驟可能是於本領域具有通常知識者已知及理解的,且可不與本描述相關及/或並非對本發明描述有幫助。
類似地,一些圖式是僅展示相關組件的簡化方塊圖,且這些組件中的一些僅表示領域中熟知的功能及/或操作,而非一件實際硬體,如將由於本領域具有通常知識者所理解。在這類情況下,組件/模組中之一些或全部可以多種及/或組合方式實現或提供,諸如至少部分地以韌體及/或硬體實現或提供,所述韌體及/或硬體包含(但不限於):一或多個專用積體電路(「application - specific integrated circuits;ASIC」)、標準積體電路、執行適當指令的控制器,且包含微控制器及/或嵌入型控制器、場可程式化閘陣列(「field-programmable gate arrays;FPGA」)、複雜可程式化邏輯裝置(「complex programmable logic devices;CPLD」)以及類似者。系統組件及/或資料結構中之一些或全部亦可儲存為非暫時性電腦可讀媒體(例如,如硬碟;記憶體;電腦網路或蜂窩式無線網路或其他資料傳輸媒體;或待由適當驅動器或經由適當連接讀取的攜帶型媒體物品,諸如DVD或快閃記憶體裝置)上的內容(例如,如可執行或其他機器可讀軟體指令或結構化資料)以便實現或組態電腦可讀媒體及/或一或多個相關計算系統或裝置以執行或以其他方式使用或提供內容來執行所描述技術中之至少一些。
一或多個處理器、簡單微控制器、控制器以及類似物,不論單獨或在多處理配置中,可用以執行儲存於非暫時性電腦可讀媒體上之指令序列以實現本揭露內容之實施例。在一些實施例中,硬佈線電路可用於代替軟體指令或與軟體指令組合。因此,本揭露內容之實施例不限於硬體電路、韌體以及/或軟體之任何特定組合。
如在本文中所使用之術語「電腦可讀媒體」是指儲存指令的任何媒體,所述指令可提供至處理器用於執行。這類媒體可呈多種形式,包含(但不限於)非揮發性媒體及揮發性媒體。非暫時性電腦可讀媒體之常見形式包含例如軟碟、可撓性磁碟、硬碟、磁帶或任何其他磁性媒體、CD-ROM、任何其他光學媒體、打孔卡、紙帶、具有孔圖案之任何其他實體媒體、RAM、PROM以及EPROM、FLASH-EPROM、任何其他記憶體晶片或卡匣、或儲存可由處理器執行的指令的任何其他媒體。
本揭露內容之一些實施例可至少部分地在攜帶型裝置上實現。如本文所使用的「攜帶型裝置」及/或「行動裝置」是指具有接收無線信號能力之任何攜帶型或可移動電子裝置,包含(但不限於)多媒體播放機、通信裝置、計算裝置、導航裝置等。因此,行動裝置包含(但不限於)使用者裝備(user equipment;UE)、膝上型電腦、平板電腦、攜帶型數位助理( Portable Digital Assistant;PDA)、mp3播放器、手持型PC、即時通信裝置(Instant Messaging Device;IMD)、蜂巢式電話、全球導航衛星系統(Global Navigational Satellite System;GNSS)接收器、手錶或可穿戴及/或攜帶於一個人上的任何此類裝置。
鑒於本揭露內容,本揭露內容之各種實施例可實施於積體電路(integrated circuit;IC)中,所述積體電路亦稱作微晶片、矽晶片、電腦晶片或僅如於本領域具有通常知識者將理解的「晶片」。這類IC可為例如寬頻帶及/或基頻帶數據機晶片。
本揭露內容不限於本文中所論述之實施例,並且,如於本領域具有通常知識者將理解,特定實施方案之細節將取決於預定用途、環境等而變化,且因此本揭露內容意欲應用於其範疇內之任何實施方案。
儘管已描述若干實施例,但應理解,可在不脫離本揭露內容之範疇的情況下進行各種修改。因此,對於本領域具有通常知識者將顯而易見的是,本揭露內容不限於本文中所描述的實施例中的任一者,而是具有僅由所附申請專利範圍及其等效物所定義的覆蓋範圍。
110、400‧‧‧空間記憶體串流引擎
120、410‧‧‧活動生成表
130、420‧‧‧圖案歷史表
150‧‧‧核心處理器
160‧‧‧L1快取
165‧‧‧預取器
170‧‧‧L2快取
175‧‧‧多步幅引擎
200‧‧‧區域
300‧‧‧條目
310‧‧‧PC觸發器欄位
320‧‧‧區域欄位
330‧‧‧基礎偏移欄位
340‧‧‧偏移列表欄位
350‧‧‧偏移置信度欄位
360‧‧‧總體置信度欄位
413‧‧‧過濾表
415‧‧‧訓練表
505‧‧‧重排序佇列
510、515、520、530、535、540、545、550、610、615、620、625、627、630、635、637、640、645、647、710、715、720、730、810、820、830、840、850、1050、1060‧‧‧步驟
723、725、O1、O2、O3、O4、05、O6‧‧‧偏移
900‧‧‧設備
910‧‧‧處理器
920‧‧‧非暫時性電腦可讀媒體
Cf1、Cf2、Cf3、Cfall‧‧‧欄位
藉由以下結合附圖進行的詳細描述將更加清楚地瞭解本揭露內容的某些實施例的上述及其他態樣、特徵以及優點,其中: 圖1說明根據一個實施例之本發明系統之相關組件的例示性方塊圖。 圖2為根據本揭露內容之實施例的L2快取170內之區域的例示性圖。 圖3為根據本揭露內容之實施例的圖案歷史表(PHT)130中之條目300的例示性圖。 圖4說明根據本揭露內容之實施例的顯示其內之資訊移動的SMS引擎之相關組件的例示性方塊圖。 圖5為根據本揭露內容之一實施例的用於訓練/學習以及儲存所發現空間圖案之例示性方法的修改的流程圖。 圖6A至圖6C提供根據本揭露內容之實施例的基於呈部分流程圖格式之過濾表狀態及訓練表狀態的SMS訓練結果之實例。 圖7說明根據本揭露內容之實施例的如何自重排序佇列(reorder queue;ROQ)中之一系列存取或快取線加載指令或存取產生PHT條目的實例。 圖8說明根據本揭露內容之實施例的當在ROQ中識別所儲存PHT條目之程序計數器(program counter;PC)觸發器時,PHT條目如何用於自由儲存於其偏移列表欄位中之空間圖案所指示之記憶體位置預取資料/指令的實例。 圖9說明根據本揭露內容之實施例的本發明設備之例示性方塊圖。 圖10說明根據本揭露內容之實施例的用於製造及測試本發明設備的例示性流程圖。

Claims (19)

  1. 一種空間記憶體串流(SMS)預取引擎,包括: 圖案歷史表(PHT),包括至少一個表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於所述偏移列表欄位中之偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位, 其中,當激活PHT條目時,其中對應於所述偏移值的所述每個偏移之置信度值藉由使當前存取與所激活之所述PHT條目中的所儲存的所述偏移值匹配來更新,且 其中至少藉由所述每個偏移之置信度水平來將連續學習提供至所述SMS預取引擎。
  2. 如申請專利範圍第1項所述之SMS預取引擎,其中每個偏移之置信度水平在對應於所述每個偏移之置信度水平的偏移值與對應存取匹配時藉由使所述每個偏移之置信度水平遞增來更新,且 其中所述每個偏移之置信度水平在對應於所述每個偏移之置信度水平的所述偏移值未與兩個觸發器程式計數器(PC)之間的任何對應存取匹配時藉由使所述每個偏移之置信度水平遞減來更新,所述兩個觸發器PC具有相同值,所述相同值開始並結束指令佇列中之空間圖案。
  3. 如申請專利範圍第1項所述之SMS預取引擎,其中所述每個偏移之置信度水平是用於自所述PHT條目之所述偏移列表欄位消除一或多個偏移值。
  4. 如申請專利範圍第3項所述之SMS預取引擎,其中一或多個預設臨限值應用於所述每個偏移之置信度水平以確定是否自所述PHT條目之所述偏移列表欄位消除所述一或多個偏移值。
  5. 如申請專利範圍第1項所述之SMS預取引擎,其中,當對應於所述偏移列表欄位內之多個偏移值的記憶體位置在單一快取線內時,所述SMS預取引擎僅預取所述單一快取線一次。
  6. 如申請專利範圍第1項所述之SMS預取引擎,其中每一PHT條目更包括總體置信度欄位,所述總體置信度欄位之值表示由儲存於所述偏移列表欄位中之所述偏移值得到之所述完整空間圖案中的置信度水平,且 其中至少藉由所述總體置信度欄位來將連續學習提供至所述SMS預取引擎。
  7. 如申請專利範圍第6項所述之SMS預取引擎,其中所述PHT條目中之所述偏移列表欄位中的偏移值之每個偏移之置信度水平的每一增大包括確認,所述確認轉而增大所述PHT條目之所述總體置信度欄位中之所述總體置信度水平,且 其中所述PHT條目中之所述偏移列表欄位中的所述偏移值之所述每個偏移之置信度水平的每一降低導致所述PHT條目之所述總體置信度欄位中之所述總體置信度水平的降低。
  8. 如申請專利範圍第1項所述之SMS預取引擎,其中每一PHT條目更包括基礎偏移欄位,所述基礎偏移欄位包含所述區域內之所述基礎偏移值,且 其中所述基礎偏移值提供位元組粒度。
  9. 一種用於空間記憶體串流(SMS)預取引擎之方法,包括: 維持包括至少一個表之圖案歷史表(PHT),其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及 當激活PHT條目時,藉由將當前存取與所激活之所述PHT條目中之所儲存的所述偏移值匹配來更新對應於所激活之所述PHT條目中之所述偏移值的所述每個偏移之置信度值, 其中至少藉由所述每個偏移之置信度水平來將連續學習提供至所述SMS預取引擎。
  10. 如申請專利範圍第9項所述之用於SMS預取引擎之方法,其中更新所述每個偏移之置信度水平包括: 當對應於所述每個偏移之置信度水平的所述偏移值與對應存取匹配時,使所述每個偏移之置信度水平遞增,以及 當對應於所述每個偏移之置信度水平的所述偏移值未與兩個觸發器程式計數器(PC)之間的任何對應存取匹配時,使所述每個偏移之置信度水平遞減,所述兩個觸發器PC具有相同值,所述相同值開始並結束指令佇列中的空間圖案。
  11. 如申請專利範圍第9項所述之用於SMS預取引擎之方法,更包括: 根據所述每個偏移之置信度水平而自所述PHT條目之所述偏移列表欄位消除一或多個偏移值。
  12. 如申請專利範圍第11項所述之用於SMS預取引擎之方法,其中自PHT條目之所述偏移列表欄位消除一或多個偏移值包括: 將一或多個預設臨限值應用於所述每個偏移之置信度水平以確定是否自所述PHT條目之所述偏移列表欄位消除所述一或多個偏移值。
  13. 如申請專利範圍第9項所述之用於SMS預取引擎之方法,其中,當對應於所述偏移列表欄位內之多個偏移值的記憶體位置在單一快取線內時,所述SMS預取引擎僅預取所述單一快取線一次。
  14. 如申請專利範圍第9項所述之用於SMS預取引擎之方法,其中每一PHT條目更包括總體置信度欄位,所述總體置信度欄位表示由儲存於所述偏移列表欄位中之所述偏移值得到之所述完整空間圖案中的置信度水平,且 其中至少藉由所述總體置信度欄位來將連續學習提供至所述SMS預取引擎。
  15. 如申請專利範圍第14項所述之用於SMS預取引擎之方法,其中對應於所述PHT條目中之所述偏移欄位列表中之偏移值的每個偏移之置信度水平之每一增大包括確認,所述確認轉而增大所述PHT條目之所述總體置信度水平,且 其中所述PHT條目中之所述偏移列表欄位中的偏移值之每個偏移之置信度水平的每一降低導致所述PHT條目之所述總體置信度欄位中之所述總體置信度水平的降低。
  16. 如申請專利範圍第9項所述之用於SMS預取引擎之方法,其中每一PHT條目更包括所述基礎偏移欄位,所述基礎偏移欄位包含所述區域內之所述基礎偏移值,且 其中所述基礎偏移值提供位元組粒度。
  17. 一種設備,包括: 一或多個非暫時性電腦可讀媒體;以及 至少一個處理器,當執行儲存於所述一或多個非暫時性電腦可讀媒體上之指令時,所述至少一個處理器包括空間記憶體串流(SMS)預取引擎之至少一部分,所述空間記憶體串流預取引擎執行以下步驟: 維持包括至少一個表之圖案歷史表(PHT),其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及 當激活PHT條目時,藉由使當前存取與所激活之所述PHT條目中之所儲存的所述偏移值匹配來更新對應於所激活之所述PHT條目中之所述偏移值的所述每個偏移之置信度值。
  18. 一種方法,包括: 製造晶片組,所述晶片組包括: 至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述至少一個處理器執行以下步驟: 維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),所述PHT包括至少一個表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及 當激活PHT條目時,藉由使當前存取與所激活PHT條目中之所儲存的所述偏移值匹配來更新對應於所激活之所述PHT條目中之所述偏移值的所述每個偏移之置信度值;以及 所述一或多個非暫時性電腦可讀媒體,儲存所述指令。
  19. 一種測試設備之方法,包括: 測試所述設備是否具有至少一個處理器,當執行儲存於一或多個非暫時性電腦可讀媒體上之指令時,所述至少一個處理器執行以下步驟: 維持用於空間記憶體串流(SMS)預取引擎之圖案歷史表(PHT),所述PHT包括至少一個表,其中每一條目具有包括來自區域內之基礎偏移值的偏移值之子欄位的偏移列表欄位及包括對應於每一偏移值的每個偏移之置信度水平之子欄位的每個偏移之置信度欄位;以及 當激活PHT條目時,藉由使當前存取與所激活之所述PHT條目中之所儲存的所述偏移值匹配來更新對應於所激活之所述PHT條目中之每一偏移值的所述每個偏移之置信度值;以及 測試所述設備是否具有儲存所述指令之所述一或多個非暫時性電腦可讀媒體。
TW107112143A 2017-05-12 2018-04-09 空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法 TWI773749B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762505318P 2017-05-12 2017-05-12
US62/505,318 2017-05-12
US201762535460P 2017-07-21 2017-07-21
US62/535,460 2017-07-21
US15/690,931 US10540287B2 (en) 2017-05-12 2017-08-30 Spatial memory streaming confidence mechanism
US15/690,931 2017-08-30

Publications (2)

Publication Number Publication Date
TW201901439A true TW201901439A (zh) 2019-01-01
TWI773749B TWI773749B (zh) 2022-08-11

Family

ID=64097810

Family Applications (2)

Application Number Title Priority Date Filing Date
TW107111669A TWI791505B (zh) 2017-05-12 2018-04-02 空間記憶體串流預取引擎的設備與方法、製造及測試方法
TW107112143A TWI773749B (zh) 2017-05-12 2018-04-09 空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW107111669A TWI791505B (zh) 2017-05-12 2018-04-02 空間記憶體串流預取引擎的設備與方法、製造及測試方法

Country Status (4)

Country Link
US (2) US10540287B2 (zh)
KR (2) KR102657076B1 (zh)
CN (2) CN108874692B (zh)
TW (2) TWI791505B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055217B2 (en) * 2018-06-01 2021-07-06 Apple Inc. Using additional intermediate buffer queues to identify interleaved media data to be read together
US10817426B2 (en) * 2018-09-24 2020-10-27 Arm Limited Prefetching techniques
CN109446111B (zh) * 2018-10-15 2021-01-26 上海兆芯集成电路有限公司 存储器集成电路及其预取地址决定方法
KR20200043842A (ko) 2018-10-18 2020-04-28 주식회사 실리콘웍스 차량용 램프 제어 장치
US11249909B2 (en) * 2018-12-28 2022-02-15 Intel Corporation Systems and methods for adaptive multipath probability (AMP) prefetcher
US11106463B2 (en) 2019-05-24 2021-08-31 Texas Instruments Incorporated System and method for addressing data in memory
US11520588B2 (en) 2019-06-10 2022-12-06 International Business Machines Corporation Prefetch filter table for storing moderately-confident entries evicted from a history table
WO2021009925A1 (ja) * 2019-07-18 2021-01-21 三菱電機株式会社 ネットワークセキュリティ装置、ネットワークセキュリティシステムおよびネットワークセキュリティ方法
US11874773B2 (en) * 2019-09-20 2024-01-16 Intel Corporation Apparatuses, methods, and systems for dual spatial pattern prefetcher
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
CN112084122B (zh) * 2019-09-30 2021-09-28 成都海光微电子技术有限公司 计算机存储器中对区域预取器的置信度和侵略性控制
US11809558B2 (en) * 2020-09-25 2023-11-07 Advanced Micro Devices, Inc. Hardware security hardening for processor devices
KR20220127504A (ko) * 2021-03-11 2022-09-20 삼성전자주식회사 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법
US11630670B2 (en) 2021-07-21 2023-04-18 Apple Inc. Multi-table signature prefetch
TW202345004A (zh) * 2021-12-31 2023-11-16 美商賽發馥股份有限公司 具亂序過濾預取器訓練佇列之預取器
US20240111676A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Apparatus, system, and method for throttling prefetchers to prevent training on irregular memory accesses

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000011607A1 (en) 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6311260B1 (en) * 1999-02-25 2001-10-30 Nec Research Institute, Inc. Method for perfetching structured data
US6934809B2 (en) 2002-02-22 2005-08-23 Sun Microsystems, Inc. Automatic prefetch of pointers
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US20060190552A1 (en) * 2005-02-24 2006-08-24 Henze Richard H Data retention system with a plurality of access protocols
US7657729B2 (en) * 2006-07-13 2010-02-02 International Business Machines Corporation Efficient multiple-table reference prediction mechanism
US8769207B2 (en) * 2008-01-16 2014-07-01 Via Technologies, Inc. Caching method and apparatus for a vertex shader and geometry shader
US8166251B2 (en) * 2009-04-20 2012-04-24 Oracle America, Inc. Data prefetcher that adjusts prefetch stream length based on confidence
EP2539821B1 (en) 2010-02-24 2019-08-28 Marvell World Trade Ltd. Caching based on spatial distribution of accesses to data storage devices
US10007523B2 (en) * 2011-05-02 2018-06-26 International Business Machines Corporation Predicting cache misses using data access behavior and instruction address
US8856452B2 (en) 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US8843690B2 (en) 2011-07-11 2014-09-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Memory conflicts learning capability
US9477834B2 (en) * 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
US9116815B2 (en) 2012-06-20 2015-08-25 Advanced Micro Devices, Inc. Data cache prefetch throttle
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
US9043613B2 (en) * 2013-06-28 2015-05-26 International Business Machines Corporation Multiple volume encryption of storage devices using self encrypting drive (SED)
US10671535B2 (en) * 2013-07-17 2020-06-02 Advanced Micro Devices, Inc. Stride prefetching across memory pages
US10133678B2 (en) 2013-08-28 2018-11-20 Advanced Micro Devices, Inc. Method and apparatus for memory management
JP6523274B2 (ja) * 2013-10-25 2019-05-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US20150199276A1 (en) 2014-01-13 2015-07-16 Samsung Electronics Co., Ltd. Pre-fetch confirmation queue
US9542323B2 (en) 2014-03-28 2017-01-10 Samsung Electronics Co., Ltd. Address re-ordering mechanism for efficient pre-fetch training in an out-of-order processor
US9665491B2 (en) * 2014-07-17 2017-05-30 Samsung Electronics Co., Ltd. Adaptive mechanism to tune the degree of pre-fetches streams
US9582282B2 (en) 2014-07-17 2017-02-28 Arm Limited Prefetching using a prefetch lookup table identifying previously accessed cache lines
KR101681423B1 (ko) 2015-08-11 2016-11-30 인하대학교 산학협력단 변위 히스토리 버퍼를 이용한 명령어 및 데이터 프리페치 방법 및 시스템
US10108549B2 (en) 2015-09-23 2018-10-23 Intel Corporation Method and apparatus for pre-fetching data in a system having a multi-level system memory
US10866896B2 (en) 2015-09-30 2020-12-15 Arm Limited Apparatus and method for prefetching access request addresses in an adjacent region of memory
CN106021128B (zh) * 2016-05-31 2018-10-30 东南大学—无锡集成电路技术研究所 一种基于步幅和数据相关性的数据预取器及其预取方法

Also Published As

Publication number Publication date
CN108874694A (zh) 2018-11-23
US10417130B2 (en) 2019-09-17
CN108874694B (zh) 2023-11-28
KR102657076B1 (ko) 2024-04-15
KR102538139B1 (ko) 2023-05-30
TW201901438A (zh) 2019-01-01
US20180329823A1 (en) 2018-11-15
KR20180124712A (ko) 2018-11-21
TWI773749B (zh) 2022-08-11
US10540287B2 (en) 2020-01-21
CN108874692B (zh) 2023-10-31
US20180329822A1 (en) 2018-11-15
CN108874692A (zh) 2018-11-23
KR20180124709A (ko) 2018-11-21
TWI791505B (zh) 2023-02-11

Similar Documents

Publication Publication Date Title
TWI773749B (zh) 空間記憶體串流預取引擎、其方法、設備、製造方法以及測試方法
KR101361928B1 (ko) 스레드 이송 시의 캐시 프리필링
TWI506434B (zh) 預取單元、資料預取方法、電腦程式產品以及微處理器
TWI396131B (zh) 排程一指令在一處理器中之執行方法及使用該方法之積體電路裝置
JP5894120B2 (ja) ゼロサイクルロード
CN109871341B (zh) 用于堆栈指针值预测的方法和装置
US11416253B2 (en) Multiple-table branch target buffer
US8782629B2 (en) Associating program execution sequences with performance counter events
US9753857B2 (en) Two handed insertion and deletion algorithm for circular buffer
GB2518022A (en) Stack saved variable value prediction
US9830152B2 (en) Selective storing of previously decoded instructions of frequently-called instruction sequences in an instruction sequence buffer to be executed by a processor
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
GB2577050A (en) Allocation filter for prediction storage structure
US11301253B2 (en) Branch prediction structure indexed based on return address popped from a call-return stack
US9223714B2 (en) Instruction boundary prediction for variable length instruction set
CN114546485A (zh) 用于预测子程序返回指令的目标的取指单元
JP2023524642A (ja) プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング
JP2017537408A (ja) アウトオブオーダー(ooo)プロセッサにおける早期命令実行を提供すること、ならびに関連する装置、方法、およびコンピュータ可読媒体
EP3568755A1 (en) Implementation of register renaming, call-return prediction and prefetch