TWI789421B - 用於預執行資料相依之負載的薄片結構 - Google Patents

用於預執行資料相依之負載的薄片結構 Download PDF

Info

Publication number
TWI789421B
TWI789421B TW107130453A TW107130453A TWI789421B TW I789421 B TWI789421 B TW I789421B TW 107130453 A TW107130453 A TW 107130453A TW 107130453 A TW107130453 A TW 107130453A TW I789421 B TWI789421 B TW I789421B
Authority
TW
Taiwan
Prior art keywords
instruction
slice
load
instructions
occurrence
Prior art date
Application number
TW107130453A
Other languages
English (en)
Other versions
TW201931109A (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 TW201931109A publication Critical patent/TW201931109A/zh
Application granted granted Critical
Publication of TWI789421B publication Critical patent/TWI789421B/zh

Links

Images

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
    • 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/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3824Operand accessing
    • G06F9/383Operand 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
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)
  • Image Processing (AREA)

Abstract

本發明提供用於建構用於預提取一資料相依負載指令之資料的一指令薄片之系統及方法,其包括用於將在一指令序列中之一負載指令識別為將在一末級快取記憶體中未命中的一合格負載指令之一第一次出現的一切片器。一提交緩衝器儲存關於該合格負載指令之該第一次出現及在之後的影子指令的資訊。對於該合格負載指令之一第二次出現,一指令薄片係自該提交緩衝器中之該資訊建構以形成一薄片有效負載。一預執行引擎基於該薄片有效負載預執行該指令薄片以判定資料將被提取以用於執行該合格負載指令之一第三次及任一後續出現所源自之一位址。該資料係自該經判定位址預提取以用於該合格負載指令之該第三次及任一後續出現。

Description

用於預執行資料相依之負載的薄片結構
所揭示態樣係關於改良處理系統之處理速度。更特定言之,例示性態樣係關於用於預執行資料相依負載指令及預提取藉由該資料相依負載指令消耗的資料之薄片結構。
可由處理器執行之一些應用程式(諸如圖表分析、搜尋操作等)可涉及大資料集之利用。用於此等應用程式之相關指令程式碼可包括呈資料相依負載指令形式之指令。如此項技術中已知的資料相依負載指令用以加載來自依賴於藉由先前負載指令加載的資料之位址的資料(記住先前負載指令不必一定為不同負載指令而是可為同一資料相依負載指令之先前執行)。
資料相依負載指令呈現其他形式負載指令可能並未呈現的難題。舉例而言,對於自並不依賴於先前負載之位址加載的負載指令而言,該等位址可遵循在程式碼序列中之負載指令之間的模式,此使得能夠基於判定模式之間的步幅而自該等位址進行預測性預提取。然而,對於資料相依負載指令而言,此類基於模式或基於步幅之預測係不可能的,此係因為加載資料所源自之位址自身依賴於不同指令。
圖1說明指令序列100 (其將藉由熟習此項技術者識別為表示指標追趕程式碼)中之資料相依負載指令的實例。在指令序列100中,說明兩種類型之資料相依負載指令。首先,負載2 (Load 2)為用於加載來自藉由暫存器x5判定的位址之資料的負載指令,其中暫存器x5之內容係藉由不同負載指令負載1 (Load 1)判定。在此實例中,負載1被替代地稱作資料相依負載指令負載2之父代或生產者負載指令。父代及資料相依負載指令(指令序列100中之負載1及負載2)之序列被稱作一指令薄片,其中執行該指令薄片係依賴於提供的暫存器x5之內容。其次,負載1亦為資料相依負載指令。在此情況下,考慮由指令序列100中之「while (ptr)」定義的迴路之兩個連續迭代,在由暫存器x5指向之位址處含有的資料在迴路之第一迭代中在執行負載1時被載入暫存器x5中;及在迴路之連續第二迭代中,來自第一迭代的暫存器x5之值係在執行負載1時被加載,此使得第一迭代之負載1為父代負載指令且使第二迭代之負載1為對應資料相依負載指令。
在上文所提及之實例應用程式(諸如圖表分析及搜尋操作工作負載)中,其中上述指令薄片可由具有記憶體階層中之一或多個快取記憶體的處理器執行,可見存在在指令薄片中之兩個負載(父代及相依)遇到在一或多個快取記憶體中之未命中的高發生率。記憶體階層之末級快取記憶體(或「LLC」)中之未命中可招致高損失。為了解釋,諸如3階(L3)快取記憶體之末級快取記憶體可整合於與處理器相同之晶片上並用以服務在可能時來自較高級快取記憶體(諸如2階(L2)快取記憶體、1階(L1)快取記憶體等)的未命中,該等較高級快取記憶體更鄰近於處理器。但末級快取記憶體中之未命中可招致大的潛時損失,例如,大約數百個循環,此係因為經轉遞至外部記憶體系統或晶片外記憶體(諸如動態隨機存取記憶體(DRAM))的未命中例如待被服務。因此,在父代負載指令(例如,用於提取由暫存器x5指向的位址處之資料)之末級快取記憶體未命中的情況下,任何資料相依負載指令(例如,負載2)以及其任何相依可停止直至藉由存取DRAM來服務父代負載指令為止。當等待父代負載指令被服務時,停止處理相依指令,且處理器之執行管線可以可依賴於父代負載或其相依指令的其他指令支持,此可導致處理器之效能的降級。
因此,在此項技術中需要用於改良效能同時避免處理資料相依負載指令時習知技術的前述缺點。
本發明之例示性態樣係關於用於建構用於預提取資料相依負載指令之資料之指令薄片的系統及方法。切片器經組態以將指令序列中之負載指令識別為將在末級快取記憶體中未命中的合格負載指令之第一次出現。一提交緩衝器儲存關於該合格負載指令之該第一次出現及在之後的影子指令的資訊。對於該合格負載指令之一第二次出現,一指令薄片係自該提交緩衝器中之該資訊建構以形成一薄片有效負載。一預執行引擎基於該薄片有效負載預執行該指令薄片以判定資料將被提取以用於執行該合格負載指令之一第三次及任一後續出現所源自之一位址。該資料係自該經判定位址預提取以用於該合格負載指令之該第三次及任一後續出現。
舉例而言,一例示性態樣係關於一種指令處理之方法。該方法包含將可由處理器執行的指令序列中之負載指令識別為將遇到在與處理器相關聯的快取記憶體階層之末級快取記憶體中之未命中的合格負載指令之第一次出現,及將關於該合格負載指令之第一次出現及在該合格負載指令之後的影子指令的資訊儲存於提交緩衝器中。在偵測到該等影子指令中之一者中的合格負載指令之第二次出現後,自提交緩衝器中之資訊建構一指令薄片以形成薄片有效負載,該指令薄片係基於薄片有效負載而預執行以判定資料將被提取以用於執行合格負載指令之第三次出現所源自之一位址,且資料係自該位址預提取以用於合格負載指令之第三次出現。
另一例示性態樣係關於包含以下各者的設備:一處理器,其經組態以執行指令序列;及該處理器之一切片器,其經組態以將指令序列中之負載指令識別為將遇到與處理器相關聯的快取記憶體階層之末級快取記憶體中之未命中的合格負載指令之第一次出現。提交緩衝器經組態以儲存關於合格負載指令之第一次出現及在合格負載指令之後的影子指令的資訊,其中該切片器經組態以在偵測到影子指令中之一者中的合格負載指令之第二次出現後,自提交緩衝器中之資訊建構指令薄片以形成薄片有效負載,且預執行引擎經組態以基於薄片有效負載預執行指令薄片以判定資料將被提取以用於執行合格負載指令之第三次出現所源自之一位址。記憶體控制器經組態以自該位址預提取用於合格負載指令之第三次出現之資料。
另一例示性態樣係關於包含在由一電腦執行時使該電腦執行用於指令處理之操作之程式碼的非暫時性電腦可讀媒體。非暫時性電腦可讀媒體包含:用於將可由處理器執行的指令序列中之負載指令識別為將遇到與處理器相關聯的快取記憶體階層之末級快取記憶體中之未命中的合格負載指令之第一次出現之程式碼;用於將關於合格負載指令之第一次出現及在合格負載指令之後的影子指令之資訊儲存於提交緩衝器中之程式碼;用於在偵測到影子指令中之一者中的合格負載指令之第二次出現後自提交緩衝器中之資訊建構指令薄片以形成薄片有效負載之程式碼;用於基於薄片有效負載預執行指令薄片以判定資料將被提取以用於執行合格負載指令之第三次出現所源自之一位址之程式碼;及用於自位址預提取用於合格負載指令之第三次出現之資料之程式碼。
又一個例示性態樣係關於一種設備,其包含用於將可由處理器執行的指令序列中之負載指令識別為將遇到與處理器相關聯的快取記憶體階層之末級快取記憶體中之未命中的合格負載指令之第一次出現之構件;用於儲存關於合格負載指令之第一次出現及在合格負載指令之後的影子指令之資訊之構件;用於在偵測到影子指令中之一者中的合格負載指令之第二次出現後自用於儲存的該構件中之資訊建構指令薄片以形成薄片有效負載之構件;用於基於薄片有效負載預執行指令薄片以判定資料將被提取以用於執行合格負載指令之第三次出現所源自之一位址之構件;及用於自位址預提取用於合格負載指令之第三次出現之資料之構件。
本發明之態樣揭示於以下描述及針對本發明之特定態樣的相關圖式中。可在不脫離本發明之範疇的情況下設計出替代性態樣。另外,本發明之眾所熟知之元件將不加以詳細描述或將被省略以便不混淆本發明之相關細節。
詞語「例示性」在本文中用以意謂「充當實例、例子或說明」。本文中被描述為「例示性」之任何態樣未必被認作比其他態樣更佳或更有利。同樣地,術語「本發明之態樣」並不要求本發明之所有態樣皆包括所論述之特徵、優點或操作模式。
本文中所使用之術語僅係出於描述特定態樣之目的,且並不意欲限制本發明之態樣。如本文中所使用,單數形式「一」及「該」意欲包括複數形式,除非上下文另外清楚地指示。應進一步理解,術語「包含」及/或「包括」在本文中使用時指定所陳述之特徵、整體、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整體、步驟、操作、元件、組件及/或其群組的存在或添加。
此外,就待由(例如)計算裝置之元件執行之動作的序列而言描述許多態樣。將認識到本文中所描述的各種動作可藉由特定電路(例如,特殊應用積體電路(ASIC))、藉由由一或多個處理器執行之程式指令或藉由兩者之組合而執行。另外,可認為本文所描述之此等動作序列完全體現於任何形式之電腦可讀儲存媒體內,該電腦可讀儲存媒體儲存有在執行時將使一相關聯之處理器執行本文所描述之功能性的電腦指令之對應集合。因此,本發明之各種態樣可以數種不同形式實施,預期所有形式皆在所主張之標的物之範疇內。另外,對於本文所描述之態樣中每一者,任何此等態樣之對應形式可在本文中被描述為(例如)「經組態以執行所描述動作之邏輯」。
本發明之態樣係關於改良與處理資料相依負載指令相關的效能。更特定言之,例示性態樣係關於最小化資料相依負載指令所依賴的資料之末級快取記憶體未命中的影響。因此,本發明之態樣係關於偵測資料相依負載指令及建構一指令薄片,該指令薄片之執行將為資料相依負載指令所依賴的資料提供一位址。
指令薄片係藉由在本發明中被稱作切片器之例示性機構(其可為處理器之組件並藉由硬體與軟體之合適組合來實施)建構。薄片結構建立包含關於指令薄片之資訊的薄片有效負載。用於資料相依負載指令之薄片有效負載儲存於薄片快取記憶體中,其中薄片有效負載與薄片快取記憶體中之對應資料相依負載指令相關聯(例如,基於薄片快取記憶體中之對應資料相依負載指令而標記)。
對於資料相依負載指令之未來出現,在判定(例如,早在資料相依負載指令之分派階段)薄片快取記憶體中存在薄片有效負載後,薄片有效負載經轉遞至鄰近末級快取記憶體或記憶體控制器提供的預執行引擎。預執行引擎經組態以例如在迴路中、在資料相依負載指令及其對應指令薄片之執行在處理器中完成之前,使用、基於薄片有效負載執行指令薄片。在預執行引擎中執行指令薄片之此處理程序被稱作指令薄片之預執行。預執行提供用於資料相依負載之資料待被提取所源自之位址,且基於此,記憶體控制器係關於自備份記憶體或DRAM (其可為晶片外組件,如上文所提及)提取(或預提取)資料。
資料係自DRAM預提取至緩衝器中,該緩衝器可定位於記憶體控制器中。當資料相依負載在指令處理過程中接下來藉由處理器遇到(例如,指令薄片之接下來迭代)時,相關資料將已經提取至記憶體控制器(其可位於晶片上,亦即,整合於與處理器及末級快取記憶體相同之晶片上)中。因此,舉例而言,即使資料在末級快取記憶體中未命中,資料仍可自記憶體控制器獲得而不帶來與服務來自晶片外DRAM之資料相關聯的損失。
現參看圖2,展示其中可採用本發明之態樣的例示性處理系統200。處理系統200展示為具有處理器202,其中切片器203及1階(L1)快取記憶體204經展示於指示為處理器202之區塊內(但應理解用於展示為切片器203及L1快取記憶體204之此等區塊之其他組態在不脫離本發明之範疇的情況下係可能的)。在例示性實施中,處理器202亦可包括經組態以追蹤未完成的負載指令之負載佇列(LDQ)205。處理器202 (且更特定言之切片器203)可耦接至薄片快取記憶體207,該薄片快取記憶體隨後耦接至預執行引擎218。
處理器202亦可以通信方式耦接至一或多個記憶體結構,諸如L2快取記憶體206、L3快取記憶體210等。在所說明情況下,L3快取記憶體210可為末級快取記憶體且可在晶片上或嵌入於與處理器202相同之晶片上。諸如記憶體控制器214之記憶體控制器可經組態以控制至DRAM 216 (其可為晶片外記憶體)之記憶體介面。然而,應理解對各種上文所描述之組件的晶片上(或內部)及晶片外(或外部)整合的參考僅為例示性以說明本發明之態樣的可能效能益處,但並不意謂為限制;因而,例示性態樣同樣適用於上文所描述之組件的任何其他合適之整合。
L2快取記憶體206與L3快取記憶體210與記憶體控制器214之間的互連件212之間的互連件208亦特別地在圖2中識別。在本發明之例示性態樣中,所識別指令切片之預執行可需要預提取資料至記憶體控制器214中之一緩衝器(圖中未示)中。在此情況下,用於獲得資料的末級快取記憶體(諸如L3快取記憶體210)中之可能未命中中所涉及之潛時將係關於與互連件208及212相關聯的組合潛時。另一方面,若資料並未根據本發明預提取,則若存在末級快取記憶體未命中,則將招致存取DRAM 216之額外潛時。
切片器203為經組態以識別用於預執行之指令切片及識別即時暫存(live-in)的功能區塊,該等即時暫存為非本端產生的暫存器而是藉由指令切片中之指令消耗。即時暫存、諸如在薄片中識別的指令之操作程式碼(op程式碼)之識別符、其程式次序及關於指令薄片之任何其他資訊被稱作薄片有效負載。薄片快取記憶體207包含用於快取或儲存用於經識別或預測為將在末級快取記憶體中未命中的資料相依負載指令之負載指令的薄片有效負載之機構,如將在下文更詳細地解釋。薄片有效負載經提供至預執行引擎218以預執行指令薄片之下一次出現(例如,在迴路之後續迭代中)以實現資料相依負載指令所依賴的資料之預提取。在一個態樣中,預執行引擎218相應地經組態有用於預執行指令薄片之執行引擎。預執行引擎218可指導記憶體控制器216預提取資料,該資料可存儲於如先前所提及的記憶體控制器216中之一緩衝器內,或替代地,預執行引擎218亦可經提供有此緩衝器以用於儲存預提取資料,而與本文中例示性態樣之描述沒有顯著偏差。
現參看圖3,其中展示切片器203之一些組件區塊的另一詳細視圖。切片器203通常經組態以識別用於預執行之指令薄片以及用於指令薄片之即時暫存。以下功能區塊可經提供於切片器203中以用於實施上述功能性。
首先參看提交緩衝器(或「CB」)302,此為經組態以儲存以如指令提交之程式次序例如藉由(圖2之)處理器202執行的指令之識別碼及細節的一功能區塊。就此而言,提交緩衝器302經組態以儲存關於指令的資訊或後設資料,該資訊包含指令之PC、指令編碼或命令、輸入暫存器、輸出暫存器等。提交緩衝器302經組態以使得指令及相關後設資料被置放於提交緩衝器302中並自動地自提交緩衝器302按先進先出(FIFO)方式流出。
在例示性態樣中,在指令及相關後設資料可被置放於提交緩衝器302中之前首先實現指令及相關後設資料至提交緩衝器302中的插入。現將描述用於實現提交緩衝器302中之插入的例示性邏輯。在一態樣中,假設末級快取記憶體中之未命中指示負載指令為資料相依負載指令(因為如先前所提及,用於其他類型之負載指令的資料更適合於例如基於模式或步幅偵測而預提取,且因此其他類型之負載指令可經假設並不遇到現代高效能處理器中之末級快取記憶體未命中),若負載佇列205中之最舊負載指令經判定為將已遇到末級快取記憶體(L3快取記憶體210)中之未命中的負載指令,則可使提交緩衝器302能夠用於插入。判定最舊負載指令將已在末級快取記憶體中未命中可基於判定在負載佇列205中分配的負載指令等待資料返回的時脈循環之數目。
例如,計數器經提供於處理器202中(圖中未明確展示),針對負載佇列205中之每一負載指令,對負載指令保持在負載佇列205中的時脈循環之數目進行計數。當每一負載指令經分派用於執行時,負載指令經分配負載佇列205中之一條目,其中負載指令等待直至獲得其所依賴的資料為止。就此而言,若對於資料在L1快取記憶體204中命中,則資料將相對極快速地(例如,在1至2個循環中)被返回,此將意謂計數值將指示1至2個循環。若負載指令在L1快取記憶體204中未命中但在L2快取記憶體206中命中,則資料將在若干循環之後返回,針對於該若干循環的計數器之值將匹配在L2快取記憶體206中命中之潛時。類似地,若存在在L2快取記憶體206中未命中但在L3快取記憶體208中命中,則計數值將匹配在L3快取記憶體208中命中的潛時。然而,若計數值大於L3快取記憶體208中命中的潛時(或「末級快取記憶體命中潛時」),則負載指令被視為在L3快取記憶體208中未命中或末級快取記憶體未命中。末級快取記憶體命中潛時可預先已知用於處理系統200且將被稱作預定或預先指定數目(例如,40個時脈循環)。
若負載指令在負載佇列205中等待其負載資料的連續時脈循環的數目之計數大於表示末級快取記憶體命中潛時或L3快取記憶體210之命中潛時的預定數目,則負載指令被視為「合格負載指令」,其負載資料將導致L3快取記憶體210中之末級快取記憶體未命中。在此合格負載指令被識別後,在例示性態樣中,使提交緩衝器302能夠用於插入(否則,提交緩衝器302保持停用);且隨後,起始將合格負載指令及在合格負載指令之後的影子指令及其各別相關後設資料插入於提交緩衝器302中。
繼續參看圖3,並行薄片清單304經組態以儲存合格負載指令之程式計數器值(PC),針對該等程式計數器值的薄片結構已在提交緩衝器302中實現。因此,並行薄片清單304提供用於檢查哪一合格負載指令具有進行中之薄片結構的機構。在一態樣中,在由處理器202執行的指令序列中首次遇到合格負載指令時,建立並行薄片清單304中之條目。因此,在由處理器202執行之指令序列中下一次或第二次遇到合格負載指令時,查閱並行薄片清單304將揭示用於合格負載指令之薄片結構工作將起始,且薄片有效負載被建立並儲存在薄片快取記憶體207中。以此方式,若合格負載指令為資料相依負載指令,則對於資料相依負載指令之第三次及未來出現,薄片有效負載經轉遞至預執行引擎218,從而實現用於使用薄片有效負載基於指令薄片之例示性預執行預提取對應資料的機會,而不導致用於合格負載指令之第三次及未來出現的末級快取記憶體未命中。
在一些實例中,並行薄片清單304可支援多個PC值之儲存。儲存在並行薄片清單304中的PC條目之大小或數目指示可支援的指令切片之並行鏈的數目。在所示之實例中,在並行薄片清單304中存在識別為PCx 、PCy 及PCz 之三個PC,其指示薄片結構之至多三個並行鏈可經支援用於各別三個合格負載指令。並行薄片清單304亦可以此等PC插入至並行薄片清單304中之次序建構為FIFO清單,以使得首先進入並行薄片清單304之PC首先出來。在以下描述中,為簡單起見將更詳細地解釋用於單一合格負載指令之薄片結構,同時記住類似解釋適用於其他並行指令切片。此外,應注意在例示性態樣中,提交緩衝器302可在並行薄片清單304為空時停用(以不允許插入指令),此係由於此意謂不存在合格負載指令(存在當前經建構用於合格負載指令的切片),且因此提交緩衝器302及相關邏輯可經停用以省電。
關於將PC插入至並行薄片清單304中,在合格負載指令插入於提交緩衝器302中時,在並行薄片清單304中搜尋其PC。若插入至提交緩衝器302中的合格負載指令之PC不存在於並行薄片清單304中,則彼PC添加至並行薄片清單304中。在並行薄片清單304之上文描述之FIFO組織情況下,若並行薄片清單304充滿,則在並行薄片清單304中插入新的PC可涉及替換並行薄片清單304中之最舊PC。若插入至提交緩衝器302中的合格負載指令之PC被發現已經存在於並行薄片清單304中(亦即,針對在合格負載指令之第一次出現時其PC儲存在並行薄片清單304中的合格負載指令之第二次出現),則指令薄片提取之處理程序被觸發或起始。
關於自並行薄片清單304移除PC,包含PC的並行薄片清單304之條目可由另一合格負載指令之PC替換(例如,在並行薄片清單304充滿情況下)。另外,當負載指令自提交緩衝器302流出時,運用自提交緩衝器302流出的負載指令之PC檢查並行薄片清單304,且若自提交緩衝器302流出的負載指令之PC存在於並行薄片清單304中,則包含自提交緩衝器302流出的指令之PC的對應條目自並行清單304移除。在另一態樣中,若比方說,第一負載指令之第一PC及第二負載指令之第二PC儲存在並行薄片清單304中且發現第二負載指令為第一負載指令之鏈的一部分,則第二負載指令之第二PC自並行薄片清單304移除。
若使提交緩衝器302能夠用於如上文所論述之插入(亦即,至少一個合格負載指令已在負載佇列205中被識別),則當指令提交時,來自開始於合格負載指令之第一次出現並以在此合格負載指令之後的影子指令繼續的負載佇列205之指令經插入至提交緩衝器302中。
在插入於提交緩衝器302中時,為合格負載指令之影子指令的任何負載指令之各別PC係在並行薄片清單304中被搜尋以判定是否存在合格負載指令之第二次出現。若當前提交之負載指令的PC匹配已經存在於並行薄片清單304中的合格負載指令之第一次出現之PC,則此指示提交負載指令之PC在至少一個先前插入之後被插入至並行薄片清單304中,此揭示當前提交之負載指令為合格負載指令之第二次出現。隨後,在偵測到合格負載指令之第二次出現後,指令薄片提取之處理程序係基於儲存於提交緩衝器302中之資訊而開始。
在例示性態樣中,切片器203經組態以自最新至最舊指令串列地分析指令以便建構指令薄片或指令序列。因此,指令薄片包含合格負載指令之第二次出現、合格負載指令之第一次出現的影子指令(亦稱作「最初合格負載指令」)及負載指令之第一次出現。在指令薄片內,一些指令之輸入暫存器可經本端地(亦即藉由薄片內之指令)產生,而一些指令之輸入暫存器可並非本端地產生。不在指令薄片內本端地產生且藉由指令薄片中之指令消耗的此等暫存器被稱作「即時暫存」;且用於指令薄片之即時暫存暫存器之集合通常被稱作即時暫存之集合。用於指令薄片之即時暫存的集合將被獲得以便在預執行引擎218中預執行指令薄片,且因此即時暫存之集合形成薄片有效負載的至少一部分。
現將描述用於追蹤不同類型即時暫存的各種機構。一般而言,即時暫存可使用長度之向量(例如,位元向量)來追蹤,該等長度可例如對應於在例如處理器202之指令集架構中提供的邏輯暫存器之總數目。
切片器203可包括用以擷取由指令薄片中之指令消耗的暫存器之一或多個即時暫存向量,以及用以擷取指令薄片中之指令連同其程式次序的PC向量。即時暫存向量及PC向量形成薄片有效負載且儲存在薄片快取記憶體207中以例如在合格負載指令之第三次出現(及後續/未來出現)時提供至預執行引擎218。因此使預執行引擎218能夠使用薄片有效負載預執行指令薄片中之指令,以便自DRAM 216預提取資料相依負載指令之資料,例如,而不在L3快取記憶體210中之潛在未命中之後等待用於合格的第三次及未來出現之資料自DRAM 216服務。
在即時暫存向量之間,例示性態樣包括用於以下各者之單獨即時暫存向量及PC向量:具有不包括分支及比較指令之指令的指令薄片結構;及具有包括分支及比較指令之指令的指令薄片結構。兩個單獨即時暫存向量經合併以建立合併之即時暫存向量,且類似地兩個單獨PC向量係以PC次序合併以建立合併之PC向量。由合併之即時暫存向量及合併之PC向量表示的對應指令薄片係由預執行引擎218使用以用於預執行指令薄片。現將進一步詳細解釋切片器203之實例即時暫存向量及PC向量。
如圖3中所示,切片器203包括負載薄片即時暫存向量306,其可為經組態以當建構指令薄片時擷取薄片即時暫存的位元向量。更特定言之,負載薄片即時暫存向量306可用於建立用於合格負載指令之指令薄片,且更特定言之,圍繞不包括分支指令及比較指令之合格負載指令的指令薄片。
結合負載薄片即時暫存向量306,負載薄片PC向量308亦提供於切片器203中,以儲存指令之PC,該等指令並非分支指令或比較指令,其包括於指令薄片中。若不存在分支指令或比較指令包括於例示性預執行中,則負載薄片PC向量308可用於識別用於合格負載指令的各別指令薄片中之指令。
在圖3中展示的切片器203之實施中,亦說明經識別為分支薄片即時暫存向量310及分支薄片PC向量312的兩個以上功能區塊,若分支指令包括於實例指令薄片中,則可使用分支薄片即時暫存向量310及分支薄片PC向量312。
更詳細而言,若分支指令包括於指令薄片中,則分支薄片即時暫存向量310經獨立地建立以稍後與負載薄片即時暫存向量306合併。分支薄片即時暫存向量310亦可經組態為用以擷取分支薄片結構中之即時暫存的位元向量。
相應地,若分支指令待包括於在考慮之中的指令切片中,則分支薄片PC向量312經組態以儲存經選擇為分支薄片之部分的指令之PC。
因此,在分支指令包括於指令薄片中的此類情況下,提供合併薄片即時暫存向量314,其中負載薄片即時暫存向量306可與分支薄片即時暫存向量310合併於合併之薄片即時暫存向量314中。相應地,亦提供合併之薄片PC向量316,其中負載薄片PC向量308可以程式次序或PC次序與分支薄片PC向量312合併於合併之薄片PC向量316中。藉由以此方式合併負載薄片PC向量308與分支薄片PC向量312形成的合併之薄片PC向量316可用於建立指令薄片。
現將參考圖4A至4F中展示的實例程式碼序列及相關指令薄片結構描述切片器203之上文所描述之功能區塊在建構指令切片以用於形成待儲存於薄片快取記憶體207中並用於藉由預執行引擎218預執行之薄片有效負載時的協作。
首先參看圖4A,靜態程式碼402展示可由處理器202執行且在沒有自本文所論述之特定指令或指令序列推斷的任何固有限制的情況下將僅僅出於例示性態樣之解釋之目的使用的實例指令序列。因而,靜態程式碼展示標識I0至I9之十個指令,以及各別操作/命令,及用於指令I0至I9中之每一者的生產者及消耗者暫存器(若存在)。其中,指令I3至I9經展示為迴路之一部分,其中此等指令I3至I9經反覆地執行直至遇到指令I9中之迴路的退出條件為止(在所示之實例中,若滿足指令I9中之條件分支不相等(BNE),則執行返回至開始於指令I3的迴路;但若不滿足該條件,則退出迴路)。以下例示性步驟將用以描述與識別及建構用於靜態程式碼402之指令薄片相關的程序流程。由於指令I3至I9為迴路之一部分,所以其執行很可能被重複。在例示性態樣中,自迴路之第一及第二迭代獲得的資訊在例示性處理程序中用以預執行迴路之第三及後續迭代且隨後預提取用於迴路中之資料相依負載指令的資料。在迴路中,指令I6為資料相依負載指令,其可在其第一次出現期間或在迴路之第一迭代期間基於例如在等待其資料時指令I6存在於負載佇列205中之時脈循環的數目而偵測為合格負載指令。若此數目大於表示L3快取記憶體210之命中潛時的預定數目,則指令I6經判定為合格負載指令,其負載資料將導致L3快取記憶體210中之末級快取記憶體未命中。
如所示,指令I6可在步驟S1中在迴路之第一迭代處經偵測為合格負載指令。
在步驟S2處,在將負載指令I6識別為合格負載指令後,負載指令I6之PC插入於並行薄片清單304中(假定在此實例中並行薄片清單304已經不含有負載指令I6之PC)。
在步驟S3處,使提交緩衝器302能夠開始擷取包括負載指令I6及在負載指令I6之後的影子指令的指令。
由於靜態程式碼402之指令I3至I9為迴路之一部分,所以在迴路之後續第二迭代期間存在負載指令I6之第二次出現。步驟S4指示負載指令I6之此第二次出現插入於提交緩衝器302中。
在步驟S5處,觀察到提交緩衝器302中之負載指令I6的第二次出現將具有一具有並行薄片清單304中之匹配PC(或其標記)的條目。藉由預執行將產生獲得用於指令I6之第三次及後續出現之資料所源自之位址之指令薄片,可預提取資料。因此,按以下例示性方式,用於指令I6之第二次出現的並行薄片清單304中之匹配觸發或起始指令薄片結構(用於負載切片以及分支切片兩者)以供用於預提取用於迴路之第三及任何後續迭代(及相應地,指令I6之第三及後續出現)的資料。
現參看圖4B至圖4C,將描述關於負載薄片結構之態樣。在圖4B中,在大體識別為步驟S5之步驟處,已說明包含所消耗之暫存器的各別輸入位元向量及包含針對提交緩衝器302中擷取的指令中之每一者產生的暫存器之輸出位元向量。
在提交緩衝器302中在迴路之第一迭代期間(例如,在步驟S3處)的負載指令I6之第一次出現或第一個例為最舊指令;且在迴路之第二迭代期間(例如,在步驟S4處)負載指令I6之第二個例為提交緩衝器302中擷取之最新指令。在步驟S6處,在提交緩衝器302中擷取之指令被逐步地回溯行走,其中自最新指令開始在每一步驟處識別即時暫存,最新指令為指令I6之第二個例。
在每一步驟處,在負載薄片即時暫存向量306中識別及標記即時暫存,其中對應PC儲存在負載薄片PC向量308中。在指令薄片已經充分地建構(亦即,完成提交緩衝器302中自最新指令回溯行走至最舊指令的處理程序)後,在完成後即時暫存位元向量306之版本提供真即時暫存向量,亦即並非在指令薄片內本端產生的暫存器之集合。在每一步驟處,若指令產生負載薄片即時暫存向量306中之暫存器,則彼指令被添加至指令薄片。若存在匹配之即時暫存,則其以新的指令即時暫存來替換。
舉例而言,在步驟S6a處,開始於最新指令(負載指令I6),藉由負載指令I6消耗的暫存器在此步驟處經假設為即時暫存且因此暫存器R2及R4經標記為負載薄片即時暫存向量306中之即時暫存,其中對應PC作為I6插入於負載薄片PC向量308中。
在步驟S6b處,繼續回溯行走,遇到自(消耗)暫存器R0載入至(產生)暫存器R4中的指令I5。藉由指令I5消耗的暫存器R0被添加至負載薄片即時暫存向量306。但由於暫存器R4藉由指令I5產生,所以暫存器R4藉由指令薄片本端產生且因此並非為真即時暫存。因此,對暫存器R4之引用自負載薄片即時暫存向量306刪除。相應地,用於指令I5之PC作為I5插入於負載薄片PC向量308中。為進一步解釋,藉由預執行指令I5 (其為指令薄片之部分),將產生暫存器R4,此意味著暫存器R4之資料現在不需要作為即時暫存暫存器中之一者被追蹤。
應注意在步驟S6b處指令I4 (其產生暫存器R3)不產生包含暫存器R0及R2的當前即時暫存向量中之暫存器,如此指令I4並不被添加至指令薄片。
在步驟S6c處,產生暫存器R2之指令I3被添加至指令薄片,且更詳細而言,藉由指令I3消耗的暫存器R1被添加至負載薄片即時暫存向量306且藉由指令I3產生的暫存器R2自負載薄片即時暫存向量306刪除(類似於上文解釋之暫存器R4的刪除)。相應地,用於指令I3之PC作為I3插入於負載薄片PC向量308中。
剩餘指令I9、I8及I7中無一者(在到達合格負載指令I6之第一個例之前)產生在步驟S6c處包含暫存器R0及R1之當前即時暫存向量中之暫存器及/或此等指令包括分支指令(例如,經導引至分支不相等(BNE)指令的指令I9)及/或比較指令(例如,經導引至比較(CMP)指令的指令I8),如此此等指令並非為被添加至負載薄片下方結構的指令且因而指令薄片結構現在對於負載薄片係完整的。
現參看圖4C,步驟S1至S6 (其中步驟S6包含如上文所論述之子步驟S6a至S6c)的結果展示為基於合格負載指令I6的用於靜態程式碼402之經建構負載薄片404。經建構負載薄片404包括在負載薄片即時暫存向量306中保留的暫存器R0及R1及用於負載薄片PC向量308中之指令I6、I5及I3的PC。
現參看圖4D至圖4E,將描述與分支薄片結構相關的態樣。圖4D在一些態樣方面類似於圖4B,且因此出於簡潔起見將避免相同概念之詳盡重複。類似於圖4B中,圖4D亦以步驟S5開始,以填充提交緩衝器302中擷取的指令中之每一者的各別輸入及輸出位元向量。
步驟S7涉及自最新指令開始的向後行之類似處理程序,該最新指令為負載指令I6之第二個例。在此情況下,向後行之處理程序用以填充分支薄片即時暫存向量310及分支薄片PC向量312之條目。步驟S7中的向後行之結果為圖4E中展示的經建構分支薄片406。同樣,若指令產生分支薄片即時暫存向量310中之暫存器,則彼指令被添加至鏈。
在步驟S7中之向後行的處理程序中,所遇到的第一分支指令為指令I9。步驟S7a包含添加消耗者暫存器(在此情況下,稱為「FLG」之暫存器)至分支薄片即時暫存向量310並添加作為I9的指令I9之對應PC至分支薄片PC向量312。
步驟S8涉及經遇到用於分支薄片結構之下一指令(其為指令I8,其產生FLG並消耗暫存器R3),如此R3被添加至分支薄片即時暫存向量310,同時FLG被刪除;且指令I8之對應PC作為I8添加至分支薄片PC向量312。
提交緩衝器302中之程式碼作為迴路發生,如此在步驟S7c處遇到下一時間指令I4,其產生暫存器R3並消耗暫存器R8,如此暫存器R8被添加至分支薄片即時暫存向量310,同時暫存器R3被刪除;且指令I4之對應PC作為I4添加至分支薄片PC向量312。
現參看圖4E,展示作為步驟S1至S5繼之以步驟S7 (包含如上文所描述之步驟S7a至S7c)之結果的經建構分支薄片406。經建構分支薄片包含在分支薄片即時暫存向量310中保留的暫存器R8及儲存在分支薄片PC向量312中的指令I9、I8及I4之PC。
圖4F說明在步驟S8中合併經建構負載薄片404與經建構分支薄片406以建立指示為預執行薄片408的用於預執行之指令薄片。更詳細而言,預執行薄片408包括包含暫存器R0、R1、R8之經合併薄片即時暫存向量314,其為合併負載薄片即時暫存向量306之暫存器R0、R1與分支薄片即時暫存向量310之暫存器R8的結果;及包含為按PC次序合併負載薄片PC向量308之PC I6、I5及I3與分支薄片PC向量312之PC I9、I8及I4之結果的PC I9、I8、I6、I5、I4及I3之經合併薄片PC向量316。包含經合併薄片即時暫存向量314、經合併薄片PC向量316 (其亦提供指令之程式次序)的預執行薄片408形成儲存於薄片快取記憶體207中之薄片有效負載。當遇到指令I6之第三個例時,薄片有效負載可自薄片快取記憶體207提供至預執行引擎218以用於指令薄片之預執行。舉例而言,早在分派階段,薄片快取記憶體207可經查詢以查看是否存在標記有指令I6之PC的條目,且若存在,則包含用於指令I6之薄片有效負載的條目經轉遞至預執行引擎218以用於預執行。
更詳細而言,至下次遇到指令I6時(例如,第三及任何後續迭代),儲存於在經合併薄片即時暫存向量314中識別的暫存器中的資料可已經被擷取,或換言之暫存器R0、R1及R8之資料或實體暫存器值可儲存於薄片快取記憶體207中。亦值得注意的是暫存器R1經識別為迴路之第一迭代的即時暫存,但自第二迭代向前,該即時暫存將藉由指令I6本端產生(實現暫存器R1之預提取)。因此,自第二迭代向前,經合併薄片即時暫存向量314將包含暫存器R0及R8而非R1的指示。
更詳細而言,自薄片有效負載,預執行引擎218經提供有指令薄片中之指令序列(其提供推測指令被執行所源自之次序)以及指令薄片中之指令的編碼(使得預執行引擎218經提供關於什麼類型指令將被執行之資訊)。由於預執行引擎218亦經提供有薄片有效負載中之即時暫存的值,所以指令薄片可在預執行引擎218中經預執行。在包含即時暫存暫存器之前述值的薄片有效負載及指令薄片之細節自薄片快取記憶體207發送至預執行引擎218且預執行引擎218開始預執行指令薄片後,R1之內容可被預提取,亦即自指令I6之第三迭代(其依賴於指令I6之第二迭代(其中指令I6之第一迭代饋入指令I3,其隨後饋入指令I6之第二迭代))開始可預提取用於資料相依負載指令I6之資料。在靜態程式碼402之以上實例中,暫存器R1之內容或資料可自DRAM 216預提取並置放在緩衝器(圖中未示)中,其中緩衝器可經提供於記憶體控制器214或預執行引擎218中。
因此,對應於指令I6之第三迭代的暫存器R1之內容係基於預執行用於指令I6之指令薄片而預提取,如上文所描述。因此,若暫存器R1在L3快取記憶體210中未命中,則例如暫存器R1之資料將可在記憶體控制器214中獲得,此係因為資料經預提取至記憶體控制器214或其中之緩衝器中時,且因此,未命中將實際上並不需要對DRAM 216進行存取。
以此方式,用於資料相依負載指令之資料可藉由識別用於資料相依負載指令之指令薄片及預執行指令薄片而預提取。因此,可避免若用於資料相依負載指令之資料將在諸如L3快取記憶體210之末級快取記憶體中未命中則可招致的損失。
因此,應瞭解,例示性態樣包括用於執行本文中所揭示之處理程序、功能及/或演算法之各種方法。舉例而言,圖5說明指令處理之方法500 (例如,根據參看圖4A至圖4F所展示及所描述之實例序列)。
區塊502包含將可由處理器(例如,處理器202)執行的指令序列(例如,靜態程式碼402)中之負載指令(例如,指令I6)識別為將遇到與處理器相關聯的快取記憶體階層之末級快取記憶體中之未命中的合格負載指令之第一次出現(例如,指令I6之第一迭代) (例如,指令I6為資料相依負載指令)。
區塊504包含將關於合格負載指令之第一次出現及在合格負載指令之後的影子指令的資訊儲存於提交緩衝器中(例如,用於圖4A中的提交緩衝器302之步驟S3、S4、S5)。
區塊506包含在偵測到影子指令中之一者中的合格負載指令之第二次出現後,自提交緩衝器中之資訊建構指令薄片(例如,圖4B中的步驟S6)以形成薄片有效負載(例如,以儲存於薄片快取記憶體207中)。
區塊508包含對於合格負載指令之第三次出現,基於薄片有效負載預執行指令薄片(例如,在預執行引擎218中),以判定資料將被提取用於執行合格負載指令之第三次出現所源自之位址。
區塊510包含自位址預提取用於合格負載指令之第三次出現之資料(例如,至記憶體控制器216中之緩衝器中)。
現將關於圖6論述可利用本發明之例示性態樣之一實例設備。圖6展示計算裝置600之方塊圖。計算裝置600可對應於圖2之處理系統200之一例示性實施,其中處理器202可包含經組態以執行參考圖4A至圖4F、圖5所展示及描述之方法的切片器203。在圖5之描述中,計算裝置400經展示為包括展示圖3中展示之L1快取記憶體204、負載佇列205及切片器203的處理器202連同耦接至薄片快取記憶體207之切片器203,該薄片快取記憶體耦接至預執行引擎218。處理器202亦展示為耦接至L2快取記憶體206、L3快取記憶體210、記憶體控制器214、預執行引擎218及記憶體216,記憶體216可為DRAM (記住參考圖2展示及描述之一些其他細節為清楚起見已被省略)。
圖6亦展示耦接至處理器202且耦接至顯示器628之顯示控制器626。在一些情況下,計算裝置600可用於無線通信且圖6亦以虛線展示可選區塊,諸如耦接至處理器202之編碼器/解碼器(編碼解碼器) 634 (例如,音訊及/或話音編碼解碼器)且揚聲器636及麥克風638可耦接至編碼解碼器634;及耦接至耦接至處理器202的無線控制器640之無線天線642。當此等可選區塊中之一或多者存在時,在一特定態樣中,處理器202、顯示控制器626、記憶體632及無線控制器640包括於系統級封裝或系統單晶片裝置622中。
因此,在一特定態樣中,輸入裝置630及電源供應器644耦接至系統單晶片裝置622。此外,在一特定態樣中,如圖6中所說明,當存在一或多個可選區塊時,顯示器628、輸入裝置630、揚聲器636、麥克風638、無線天線642及電源供應器644在系統單晶片裝置622外部。然而,顯示器628、輸入裝置630、揚聲器636、麥克風638、無線天線642及電源供應器644中之每一者可耦接至系統單晶片裝置622之組件,諸如介面或控制器。
應注意,儘管圖6大體上描繪計算裝置,但處理器202及記憶體216亦可整合至機上盒、伺服器、音樂播放器、視訊播放器、娛樂單元、導航裝置、個人數位助理(PDA)、固定位置資料單元、電腦、膝上型電腦、平板電腦、通信裝置、行動電話或其他類似裝置中。
熟習此項技術者應瞭解,可使用多種不同技術及技藝中之任一者來表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子,或其任何組合來表示在貫穿以上描述中可能引用之資料、指令、命令、資訊、信號、位元、符號及碼片。
此外,熟習此項技術者將瞭解,結合本文中所揭示之態樣而描述的各種說明性邏輯區塊、模組、電路及演算法步驟可實施為電子硬體、電腦軟體或兩者之組合。為了清楚地說明硬體與軟體之此可互換性,各種說明性組件、區塊、模組、電路及步驟已在上文大體按其功能性加以了描述。此功能性實施為硬體抑或軟體取決於特定應用及強加於整個系統之設計約束而定。熟習此項技術者可針對每一特定應用以不同方式實施所描述之功能性,但不應將此等實施決策解釋為導致脫離本發明之範疇。
結合本文中所揭示之態樣而描述的方法、序列及/或演算法可直接在硬體中、在由處理器執行之軟體模組中或在兩者之組合中直接體現。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、可移除式磁碟、CD-ROM,或此項技術中已知之任何其他形式之儲存媒體中。例示性儲存媒體經耦合至處理器,使得處理器可自儲存媒體讀取資訊並將資訊寫入至儲存媒體。在替代方案中,儲存媒體可與處理器成一體式。
因此,本發明之一態樣可包括體現用於包括用於預執行之薄片結構之指令處理的方法的電腦可讀媒體。因此,本發明不限於所說明之實例,且用於執行本文中所描述之功能性的任何構件皆包括於本發明之態樣中。
雖然前文揭示內容展示本發明之說明性態樣,但應注意,在不脫離如由所附申請專利範圍所界定之本發明之範疇的情況下,可在此作出各種改變及修改。無需按任何特定次序來執行根據本文中所描述之本發明的態樣之方法請求項的功能、步驟及/或動作。此外,儘管可以單數形式描述或主張本發明之元件,但除非明確陳述限於單數形式,否則亦涵蓋複數形式。
100‧‧‧指令序列200‧‧‧處理系統202‧‧‧處理器203‧‧‧切片器204‧‧‧1階(L1)快取記憶體205‧‧‧負載佇列(LDQ)206‧‧‧L2快取記憶體207‧‧‧薄片快取記憶體208‧‧‧互連件210‧‧‧L3快取記憶體212‧‧‧互連件214‧‧‧記憶體控制器216‧‧‧動態隨機存取記憶體(DRAM)/記憶體218‧‧‧預執行引擎302‧‧‧提交緩衝器/CB304‧‧‧並行薄片清單306‧‧‧負載薄片即時暫存向量308‧‧‧負載薄片PC向量310‧‧‧分支薄片即時暫存向量312‧‧‧分支薄片PC向量314‧‧‧合併薄片即時暫存向量316‧‧‧合併薄片PC向量402‧‧‧靜態程式碼404‧‧‧經建構負載薄片406‧‧‧經建構分支薄片408‧‧‧預執行薄片500‧‧‧指令處理方法600‧‧‧計算裝置622‧‧‧系統單晶片裝置626‧‧‧顯示控制器628‧‧‧顯示器630‧‧‧輸入裝置634‧‧‧編碼解碼器636‧‧‧揚聲器638‧‧‧麥克風640‧‧‧無線控制器642‧‧‧無線天線644‧‧‧電源供應器
呈現附圖以輔助描述本發明之態樣,且提供所述圖式僅用於說明所述態樣而非對其加以限制。
圖1說明用於資料相依負載指令之實例指令序列。
圖2說明根據本發明之態樣的處理系統。
圖3說明根據本發明之態樣的切片器。
圖4A至圖4F說明根據本發明之態樣的薄片結構。
圖5說明根據本發明之態樣的運用薄片結構進行指令處理之方法。
圖6描繪可在其中有利地採用本發明之一態樣的例示性計算裝置。
200‧‧‧處理系統
202‧‧‧處理器
203‧‧‧切片器
204‧‧‧1階(L1)快取記憶體
205‧‧‧負載佇列(LDQ)
206‧‧‧L2快取記憶體
207‧‧‧薄片快取記憶體
208‧‧‧互連件
210‧‧‧L3快取記憶體
212‧‧‧互連件
214‧‧‧記憶體控制器
216‧‧‧動態隨機存取記憶體(DRAM)
218‧‧‧預執行引擎

Claims (30)

  1. 一種指令處理之方法,該方法包含:將可由一處理器執行的一指令序列中之一負載指令識別為將遇到與該處理器相關聯之一快取記憶體階層的一末級快取記憶體中之一未命中的一合格負載指令之一第一次出現;將關於該合格負載指令之該第一次出現及在該合格負載指令之後的影子指令的資訊儲存在一提交緩衝器中;在偵測到該等影子指令中之一者中的該合格負載指令之一第二次出現後,自該提交緩衝器中之該資訊建構一指令薄片以形成一薄片有效負載;基於該薄片有效負載預執行該指令薄片以判定資料將被提取用於執行該合格負載指令之一第三次出現所源自之一位址;及自該位址預提取用於該合格負載指令之該第三次出現之該資料。
  2. 如請求項1之方法,其中將該負載指令識別為該合格負載指令之一第一次出現包含判定該負載指令在該處理器之一負載佇列中等待負載資料的循環之一數目大於若存在用於該負載資料之該末級快取記憶體中之一命中則將在自該末級快取記憶體服務該負載指令中招致的循環之一數目。
  3. 如請求項1之方法,其進一步包含若一並行薄片清單不含有該合格負載指令之該第一次出現的一程式計數器(PC),則在該並行薄片清單中儲存該PC。
  4. 如請求項3之方法,其中該薄片有效負載包含該合格負載指令及一或多個其他影子指令之該第一及該第二次出現的該等程式計數器(PC)、指令編碼、輸入暫存器或輸出暫存器中之一或多者。
  5. 如請求項4之方法,其包含基於偵測到該並行薄片清單包含該合格負載指令之該第二次出現的該PC而偵測到該合格負載指令之該第二次出現。
  6. 如請求項5之方法,其進一步包含建立用於該指令薄片之一或多個即時暫存向量,自該合格負載指令之該第二次出現向後行至在該指令緩衝器中之該合格負載指令的該第一次出現,其中該一或多個即時暫存向量包含即時暫存之一集合,其中該等即時暫存為並不藉由該指令薄片中之該等指令中的任一者產生為輸出暫存器之輸入暫存器。
  7. 如請求項6之方法,其中建立該一或多個即時暫存向量包含:建立包含用於不包括該指令薄片中之分支或比較指令的指令之即時暫存的一負載薄片即時暫存向量;建立包含用於包括該指令薄片中之分支或比較指令的指令之即時暫存的一分支薄片即時暫存向量;及合併該負載薄片即時暫存向量及該分支薄片即時暫存向量以產生一合併之薄片即時暫存向量。
  8. 如請求項6之方法,其進一步包含:建立包含用於不包括該指令薄片中之分支或比較指令的指令之PC的一負載薄片程式計數器(PC)向量;建立包含用於包括該指令薄片中之分支或比較指令的指令之PC的一分支薄片PC向量;及合併該負載薄片PC向量與該分支薄片PC向量以產生一合併之薄片PC向量。
  9. 如請求項8之方法,其中預執行該指令薄片包含提供作為該薄片有效負載之部分的該合併之薄片即時暫存向量與該合併之薄片PC向量以儲存於一薄片快取記憶體中,及對於該負載指令之該第三次出現,在偵測到該薄片快取記憶體包含該薄片有效負載後,提供該薄片有效負載至一預執行引擎並基於該預執行引擎中之該薄片有效負載執行指令以判定該位址。
  10. 如請求項9之方法,其包含預提取該資料至耦接至該末級快取記憶體之一緩衝器中,其中該緩衝器經提供於耦接至該末級快取記憶體之一記憶體控制器中且經組態以控制對一外部記憶體系統之存取。
  11. 如請求項3之方法,其進一步包含若該並行薄片清單為空,則停用該提交緩衝器。
  12. 如請求項3之方法,其中該並行薄片清單及該提交緩衝器為先進先出(FIFO)緩衝器。
  13. 一種用於指令處理之設備,其包含:一處理器,其經組態以執行一指令序列;該處理器之一切片器,其經組態以將該指令序列中之一負載指令識別為將遇到與該處理器相關聯之一快取記憶體階層的一末級快取記憶體中之一未命中的一合格負載指令之一第一次出現;一提交緩衝器,其經組態以儲存關於該合格負載指令之該第一次出現及在該合格負載指令之後的影子指令之資訊;其中該切片器經組態以在偵測到該等影子指令中之一者中的該合格負載指令之一第二次出現後,自該提交緩衝器中之該資訊建構一指令薄片以形成一薄片有效負載;及一預執行引擎,其經組態以基於該薄片有效負載預執行該指令薄片以判定資料將被提取以用於執行該合格負載指令之一第三次出現所源自之一位址;及一記憶體控制器,其經組態以自該位址預提取用於該合格負載指令之該第三次出現之該資料。
  14. 如請求項13之設備,其中該切片器經組態以基於負載指令在該處理器之一負載佇列中等待的循環之一數目大於若存在用於該負載資料之該末級快取記憶體中之一命中則將針對自該末級快取記憶體服務該負載指令而招致的循環之一數目的一判定,將該負載指令識別為該合格負載指令之一第一次出現。
  15. 如請求項13之設備,其進一步包含一並行薄片清單,其經組態以若該並行薄片清單不含有該合格負載指令之該第一次出現的一程式計數器(PC),則儲存該PC。
  16. 如請求項15之設備,其中該薄片有效負載包含該合格負載指令及一或多個其他影子指令之該第一及該第二次出現的該等程式計數器(PC)、指令編碼、輸入暫存器或輸出暫存器中之一或多者。
  17. 如請求項16之設備,其中該切片器經組態以若該並行薄片清單包含該合格負載指令之該第二次出現的該PC,則偵測到該合格負載指令之該第二次出現。
  18. 如請求項17之設備,其進一步包含用於該指令薄片之一或多個即時暫存向量,其中該一或多個即時暫存向量包含即時暫存之一集合,其中該等即時暫存為並不藉由該指令薄片中之該等指令中之任一者產生為輸出暫存器的輸入暫存器。
  19. 如請求項18之設備,其中該一或多個即時暫存向量包含:一負載薄片即時暫存向量,其包含用於不包括該指令薄片中之分支或比較指令的指令之即時暫存;一分支薄片即時暫存向量,其包含用於包括該指令薄片中之分支或比較指令的指令之即時暫存;及一合併之薄片即時暫存向量,其包含與該分支薄片即時暫存向量合 併之該負載薄片即時暫存向量。
  20. 如請求項19之設備,其進一步包含:一負載薄片程式計數器(PC)向量,其包含用於不包括該指令薄片中之分支或比較指令的指令之PC;一分支薄片PC向量,其包含用於包括該指令薄片中之分支或比較指令的指令之PC;及一合併之薄片PC向量,其包含與該分支薄片PC向量合併之該負載薄片PC向量。
  21. 如請求項20之設備,其中該預執行引擎經組態以基於該合併之薄片即時暫存向量與該合併之薄片PC向量預執行該指令薄片以判定該位址。
  22. 如請求項21之設備,其中該記憶體控制器包含經組態以儲存該預提取資料之一緩衝器。
  23. 如請求項15之設備,其中該提交緩衝器經組態以若該並行薄片清單為空,則停用。
  24. 如請求項15之設備,其中該並行薄片清單及該提交緩衝器包含先進先出(FIFO)緩衝器。
  25. 一種包含程式碼之非暫時性電腦可讀媒體,該程式碼在由一電腦執 行時使該電腦執行用於指令處理之操作,該非暫時性電腦可讀媒體包含:用於將可由一處理器執行的一指令序列中之一負載指令識別為將遇到與該處理器相關聯之一快取記憶體階層的一末級快取記憶體中之一未命中的一合格負載指令之一第一次出現之程式碼;用於將關於該合格負載指令之該第一次出現及在該合格負載指令之後的影子指令的資訊儲存在一提交緩衝器中之程式碼;用於在偵測到該等影子指令中之一者中的該合格負載指令之一第二次出現後自該提交緩衝器中之該資訊建構一指令薄片以形成一薄片有效負載之程式碼;用於基於該薄片有效負載預執行該指令薄片以判定資料將被提取用於執行該合格負載指令之一第三次出現所源自之一位址之程式碼;及用於自該位址預提取用於該合格負載指令之該第三次出現之該資料之程式碼。
  26. 如請求項25之非暫時性電腦可讀媒體,其中用於將該負載指令識別為該合格負載指令之一第一次出現之程式碼包含用於判定該負載指令在該處理器之一負載佇列中等待負載資料的循環之一數目大於若存在用於該負載資料之該末級快取記憶體中之一命中則將在自該末級快取記憶體服務該負載指令中招致的循環之一數目之程式碼。
  27. 如請求項25之非暫時性電腦可讀媒體,其進一步包含用於若一並行薄片清單不含有該合格負載指令之該第一次出現的一程式計數器(PC),則將該PC儲存於該並行薄片清單中之程式碼。
  28. 如請求項27之非暫時性電腦可讀媒體,其中該薄片有效負載包含該合格負載指令及一或多個其他影子指令之該第一及該第二次出現的該等程式計數器(PC)、指令編碼、輸入暫存器或輸出暫存器中之一或多者。
  29. 如請求項28之非暫時性電腦可讀媒體,其包含用於基於用於偵測該並行薄片清單包含該合格負載指令之該第二次出現之該PC之程式碼偵測該合格負載指令之該第二次出現之程式碼。
  30. 一種用於指令處理之設備,其包含:用於將可由一處理器執行的一指令序列中之一負載指令識別為將遇到與該處理器相關聯之一快取記憶體階層的一末級快取記憶體中之一未命中的一合格負載指令之一第一次出現之構件;用於儲存關於該合格負載指令之該第一次出現及在該合格負載指令之後的影子指令之資訊之構件;用於在偵測到該等影子指令中之一者中的該合格負載指令之一第二次出現後自用於儲存之該構件中的該資訊建構一指令薄片以形成一薄片有效負載之構件;用於基於該薄片有效負載預執行該指令薄片以判定資料將被提取用於執行該合格負載指令之一第三次出現所源自之一位址之構件;及用於自該位址預提取用於該合格負載指令之該第三次出現之該資料之構件。
TW107130453A 2017-09-21 2018-08-31 用於預執行資料相依之負載的薄片結構 TWI789421B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/712,119 US10379863B2 (en) 2017-09-21 2017-09-21 Slice construction for pre-executing data dependent loads
US15/712,119 2017-09-21

Publications (2)

Publication Number Publication Date
TW201931109A TW201931109A (zh) 2019-08-01
TWI789421B true TWI789421B (zh) 2023-01-11

Family

ID=63579750

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107130453A TWI789421B (zh) 2017-09-21 2018-08-31 用於預執行資料相依之負載的薄片結構

Country Status (6)

Country Link
US (1) US10379863B2 (zh)
EP (1) EP3685260B1 (zh)
CN (1) CN111065998B (zh)
ES (1) ES2906874T3 (zh)
TW (1) TWI789421B (zh)
WO (1) WO2019060068A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080194B2 (en) * 2018-12-27 2021-08-03 Intel Corporation System, method, and apparatus for enhanced pointer identification and prefetching
US11531544B1 (en) 2021-07-29 2022-12-20 Hewlett Packard Enterprise Development Lp Method and system for selective early release of physical registers based on a release field value in a scheduler
US11687344B2 (en) * 2021-08-25 2023-06-27 Hewlett Packard Enterprise Development Lp Method and system for hard ware-assisted pre-execution

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101100A1 (en) * 2005-10-28 2007-05-03 Freescale Semiconductor, Inc. System and method for decoupled precomputation prefetching
CN102171650A (zh) * 2008-11-24 2011-08-31 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6928645B2 (en) 2001-03-30 2005-08-09 Intel Corporation Software-based speculative pre-computation and multithreading
US20020199179A1 (en) * 2001-06-21 2002-12-26 Lavery Daniel M. Method and apparatus for compiler-generated triggering of auxiliary codes
US6959435B2 (en) * 2001-09-28 2005-10-25 Intel Corporation Compiler-directed speculative approach to resolve performance-degrading long latency events in an application
US20030145314A1 (en) 2002-01-31 2003-07-31 Khoa Nguyen Method of efficient dynamic data cache prefetch insertion
US8095920B2 (en) * 2002-09-17 2012-01-10 Intel Corporation Post-pass binary adaptation for software-based speculative precomputation
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US20050050534A1 (en) * 2003-09-02 2005-03-03 Chi-Keung Luk Methods and apparatus to pre-execute instructions on a single thread
US8166282B2 (en) * 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7458065B2 (en) * 2004-09-21 2008-11-25 Intel Corporation Selection of spawning pairs for a speculative multithreaded processor
US7373482B1 (en) * 2005-05-26 2008-05-13 Sun Microsystems, Inc. Software-based technique for improving the effectiveness of prefetching during scout mode
US7383393B2 (en) * 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US20070118696A1 (en) 2005-11-22 2007-05-24 Intel Corporation Register tracking for speculative prefetching
US7730263B2 (en) 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
EP3106982B1 (en) * 2015-06-18 2021-03-10 ARM Limited Determination of branch convergence in a sequence of program instructions
US20170046158A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Determining prefetch instructions based on instruction encoding
US9430240B1 (en) * 2015-12-10 2016-08-30 International Business Machines Corporation Pre-computation slice merging for prefetching in a computer processor
US9921833B2 (en) * 2015-12-15 2018-03-20 International Business Machines Corporation Determining of validity of speculative load data after a predetermined period of time in a multi-slice processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101100A1 (en) * 2005-10-28 2007-05-03 Freescale Semiconductor, Inc. System and method for decoupled precomputation prefetching
CN102171650A (zh) * 2008-11-24 2011-08-31 英特尔公司 用于将顺序程序分解为多个线程、执行所述线程和重构该顺序执行的系统、方法和装置

Also Published As

Publication number Publication date
US20190087192A1 (en) 2019-03-21
US10379863B2 (en) 2019-08-13
WO2019060068A1 (en) 2019-03-28
ES2906874T3 (es) 2022-04-20
EP3685260B1 (en) 2022-01-19
CN111065998B (zh) 2023-11-14
TW201931109A (zh) 2019-08-01
EP3685260A1 (en) 2020-07-29
CN111065998A (zh) 2020-04-24

Similar Documents

Publication Publication Date Title
US11853763B2 (en) Backward compatibility by restriction of hardware resources
JP5137948B2 (ja) ローカル及びグローバル分岐予測情報の格納
US10235219B2 (en) Backward compatibility by algorithm matching, disabling features, or throttling performance
US9678758B2 (en) Coprocessor for out-of-order loads
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
JP2009545820A (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
TWI789421B (zh) 用於預執行資料相依之負載的薄片結構
JP2007207246A (ja) 命令ラインのための自己プリフェッチl2キャッシュ機構
US20090113192A1 (en) Design structure for improving efficiency of short loop instruction fetch
US20170046158A1 (en) Determining prefetch instructions based on instruction encoding
TW202105176A (zh) 減少處理系統中的資料快取記憶體存取
JP5335440B2 (ja) オペランドの早期の条件付き選択
US20080162908A1 (en) structure for early conditional branch resolution
US20090204791A1 (en) Compound Instruction Group Formation and Execution
US11847060B2 (en) Data cache with prediction hints for cache hits
US20170083333A1 (en) Branch target instruction cache (btic) to store a conditional branch instruction
US20080162894A1 (en) structure for a cascaded delayed execution pipeline
CN109564510B (zh) 用于在地址生成时间分配加载和存储队列的系统和方法
US7984272B2 (en) Design structure for single hot forward interconnect scheme for delayed execution pipelines
TWI792546B (zh) 用於管線化控制的設備以及方法
US20080162905A1 (en) Design structure for double-width instruction queue for instruction execution
US12014176B2 (en) Apparatus and method for pipeline control