TW201800948A - 提取資料至具保證完成指示快取階之處理器、方法、系統及指令 - Google Patents

提取資料至具保證完成指示快取階之處理器、方法、系統及指令 Download PDF

Info

Publication number
TW201800948A
TW201800948A TW106106229A TW106106229A TW201800948A TW 201800948 A TW201800948 A TW 201800948A TW 106106229 A TW106106229 A TW 106106229A TW 106106229 A TW106106229 A TW 106106229A TW 201800948 A TW201800948 A TW 201800948A
Authority
TW
Taiwan
Prior art keywords
cache
instruction
processor
data
instructions
Prior art date
Application number
TW106106229A
Other languages
English (en)
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 TW201800948A publication Critical patent/TW201800948A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

一形態之處理器包括於複數不同快取階上之複數快取。該處理器亦包括解碼單元,用以解碼提取指令。該提取指令係用以指示記憶體位置之位址資訊,及該提取指令係用以指示該些複數不同快取階之一快取階。該處理器亦包括快取控制器,其係與該解碼單元耦合、及與該指示快取階上之快取耦合。該快取控制器係回應於該提取指令以將與該記憶體位置關聯的資料儲存於該快取中,其中該提取指令被架構地保證被完成。其他的處理器、方法、系統、及儲存指令之機器可讀取儲存媒體亦被揭露。

Description

提取資料至具保證完成指示快取階之處理器、方法、系統及指令
文中所述之實施例一般係有關於處理器。特別地,文中所述之實施例一般係有關於將資料從記憶體載入處理器。
為了增進性能,處理器通常具有至少一快取。快取可代表相對小的、快速存取的、本地的儲存,其係相對地接近於處理器。於操作期間,系統記憶體中之資料的子集可被儲存於快取中。當處理器想要從系統記憶體讀取資料(或寫入資料至系統記憶體)時,處理器可首先檢查看看該資料之副本是否被儲存於快取中。假如資料是被儲存在快取中,則處理器可從該快取存取該資料,以取代需從系統記憶體存取該資料。通常,資料可更快速地被存取自快取,相較於自系統記憶體。舉例而言,從快取存取資料快 取可通常花費不超過數個處理器時脈循環,而存取系統記憶體中之資料通常花費至少更長一級的大小(假如不是更多的話)。
100‧‧‧系統
101‧‧‧處理器
102‧‧‧系統記憶體
103-1‧‧‧第一核心
103-N‧‧‧第N核心
104‧‧‧指令集
105‧‧‧載入指令
106‧‧‧提取指令
107‧‧‧預提取指令
108‧‧‧管線組件
109‧‧‧架構暫存器
110‧‧‧資料
111-1‧‧‧L1指令快取
111-N‧‧‧L1指令快取
112-1‧‧‧L1資料快取
112-N‧‧‧L1資料快取
113‧‧‧L2快取
114‧‧‧L3快取
115‧‧‧快取階層
116‧‧‧記憶體控制器
117‧‧‧資料
118‧‧‧終止預提取指令
120‧‧‧資料
121‧‧‧資料
201‧‧‧處理器
206‧‧‧提取指令
209‧‧‧架構暫存器
210‧‧‧資料
214‧‧‧快取
215‧‧‧快取階層
217‧‧‧資料
230‧‧‧解碼單元
231‧‧‧快取控制器
232‧‧‧記憶體位置
233‧‧‧要求載入
406‧‧‧提取指令
440‧‧‧機器可讀取媒體
441‧‧‧運算碼
442‧‧‧位址資訊指示欄位
443‧‧‧快取階指示欄位
444‧‧‧表
550‧‧‧表
606‧‧‧提取指令
640‧‧‧機器可讀取媒體
641‧‧‧運算碼
642‧‧‧位址資訊指示欄位
643‧‧‧快取階指示欄位
655‧‧‧資料量指示欄位
656‧‧‧表
701‧‧‧處理器
706‧‧‧提取指令
714‧‧‧快取
730‧‧‧解碼單元
731‧‧‧快取控制器
732‧‧‧記憶體位置
770‧‧‧快取線載入遮蔽
772‧‧‧暫存器
799‧‧‧快取線
799-1‧‧‧第一快取線
799-2‧‧‧第二快取線
799-3‧‧‧第三快取線
799-N‧‧‧第N快取線
800‧‧‧處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧配置級
810‧‧‧重新命名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫入回/記憶體寫入級
822‧‧‧例外處置級
824‧‧‧確定級
830‧‧‧前端單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令變換後備緩衝(TLB)
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧重新命名/配置器單元
854‧‧‧撤回單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧第二階(L2)快取單元
890‧‧‧處理器核心
900‧‧‧指令解碼器
902‧‧‧晶粒上互連網路
904‧‧‧第二階(L2)快取
906‧‧‧L1快取
906A‧‧‧L1資料快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌合單元
922A-B‧‧‧數字轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮蔽暫存器
928‧‧‧16寬的ALU
1000‧‧‧處理器
1002A-N‧‧‧核心
1006‧‧‧共用快取單元
1008‧‧‧特殊用途邏輯
1010‧‧‧系統代理
1012‧‧‧環狀為基的互連單元
1014‧‧‧集成記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110,1115‧‧‧處理器
1120‧‧‧控制器集線器
1140‧‧‧記憶體
1145‧‧‧共處理器
1150‧‧‧輸入/輸出集線器(IOH)
1160‧‧‧輸入/輸出(I/O)裝置
1190‧‧‧圖形記憶體控制器集線器(GMCH)
1195‧‧‧連接
1200‧‧‧多處理器系統
1214‧‧‧I/O裝置
1215‧‧‧額外處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧音頻I/O
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/碼及資料
1232‧‧‧記憶體
1234‧‧‧記憶體
1238‧‧‧共處理器
1239‧‧‧高性能介面
1250‧‧‧點對點互連
1252,1254‧‧‧P-P介面
1270‧‧‧第一處理器
1272,1282‧‧‧集成記憶體控制器(IMC)單元
1276,1278‧‧‧點對點(P-P)介面
1280‧‧‧第二處理器
1286,1288‧‧‧P-P介面
1290‧‧‧晶片組
1294,1298‧‧‧點對點介面電路
1296‧‧‧介面
1300‧‧‧系統
1314‧‧‧I/O裝置
1315‧‧‧舊有I/O裝置
1400‧‧‧SoC
1402‧‧‧互連單元
1410‧‧‧應用程式處理器
1420‧‧‧共處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二元碼
1508‧‧‧指令集編譯器
1510‧‧‧指令集二元碼
1512‧‧‧指令轉換器
1514‧‧‧沒有至少一x86指令集核心之處理器
1516‧‧‧具有至少一x86指令集核心之處理器
本發明可藉由參考其被用以闡明實施例之以下描述及後附圖形而被最佳地瞭解。於圖形中:圖1為一種包括處理器及系統記憶體之實施例的系統。
圖2為一種可操作以履行提取指令之實施例的處理器之實施例的方塊圖。
圖3為一種履行提取指令之實施例的方法的實施例之方塊流程圖。
圖4為提取指令之第一範例實施例的方塊圖。
圖5為一表,其闡明不同的3位元快取階指示欄位值至不同的指示快取階之映射的適當範例。
圖6為提取指令之第二範例實施例的方塊圖。
圖7為一種可操作以履行提取指令之實施例的處理器之範例實施例的方塊圖。
圖8A為闡明依序管線之一實施例及暫存器重新命名失序問題/執行管線之一實施例的方塊圖。
圖8B為處理器核心之實施例的方塊圖,該處理器核心包括一耦合至執行引擎單位之前端單元且兩者均耦合至記憶體單元。
圖9A為單處理器核心之實施例的方塊圖,連同與晶粒上互連網路之其連接、以及第二階(L2)快取之其本地子集。
圖9B為圖9A之處理器核心的部分之展開視圖的實施例之方塊圖。
圖10為一種處理器之實施例的方塊圖,該處理器可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形。
圖11為一種電腦架構之第一實施例的方塊圖。
圖12為一種電腦架構之第二實施例的方塊圖。
圖13為一種電腦架構之第三實施例的方塊圖。
圖14為一種電腦架構之第四實施例的方塊圖。
圖15為依據本發明之實施例的一種軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令。
【發明內容】及【實施方式】
文中所揭露者為提取指令,用以執行該些提取指令之處理器,當處理或執行該些提取指令時由該些處理器所履行的方法,及結合一或更多用以處理或執行該些提取指令之處理器的系統。於某些實施例中,處理器可具有解碼單元或其他邏輯,用以接收及/或解碼提取指令;及快取控制器、其他執行單元、或其他邏輯,用以履行提取指令。於以下描述中,提出了多樣特定的細節(例如,特定指令 操作、資料格式、處理器組態、微架構細節、操作之序列,等等)。然而,實施例可被實行而無這些特定的細節。於其他例子中,眾所周知的電路、結構及技術未被詳細地顯示以免妨礙對本說明書之瞭解。
圖1為一種包括處理器101及系統記憶體102之系統100的方塊圖。於各個實施例中,系統可代表桌上型電腦、膝上型電腦、筆記型電腦、輸入板電腦、小筆電、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器、開關,等等)、媒體播放器、智慧型電視、桌上型易網機、機上盒、視頻遊戲控制器、工業控制裝置、具有嵌入式控制器之機器或裝置、或者其他類型的電子裝置。處理器及記憶體被耦合、或彼此通連,藉由傳統耦合機制(例如,透過一或更多匯流排、集線器、記憶體控制器、晶片組組件,等等)。
處理器可選擇性地為多核心處理器,其可包括第一核心103-1至第N核心103-N,其中核心之數目可為針對特定實施方式所欲的任何合理的數目(例如,經常範圍從一至數十等級的核心)。第一核心具有指令集104。指令集可包括巨指令、機器階指令、組合階指令、或者處理器能夠解碼並履行之其他指令或控制信號。第一核心亦具有一組管線組件108。舉例而言,管線組件可包括選擇性的預提取單元、提取單元、解碼單元、一組執行單元、撤回或其他確定單元、選擇性地失序管線組件,等等。指令集之指令可被提供至管線組件以供解碼、執行、或者履行。
第一核心亦包括架構暫存器109(例如,一或更多架構暫存器檔)。架構暫存器可代表軟體及/或編程器可見的暫存器、及/或由指令集之指令所指明或指示以識別運算元的暫存器。架構暫存器通常代表晶粒上處理器儲存位置,其係用以儲存指令之運算元。架構暫存器可或可不被重新命名、別名,等等。為了簡化,架構暫存器亦可於文中被簡稱為暫存器。其他核心(例如,第N核心)可選擇性地相同於(或不同於)第一核心。
於操作期間,處理器101可從系統記憶體102載入或擷取資料117、處理該資料、及接著將處理過的或更新的資料儲存回至系統記憶體。有一挑戰是其對於系統記憶體中所儲存之資料的存取通常傾向於具有相當高的潛時。為了增進性能,處理器可常具有至少一快取(例如,快取111-1)或快取階層115,其包括多數快取(例如,快取111-1,111-N,112-1,112-N,113,114)於不同的快取階。該些快取之各者可代表相對小的、快速存取的、本地的儲存,其係比系統記憶體102相對地更接近於核心103及/或管線組件108(例如,執行單元)。於操作期間,快取可被用以從系統記憶體快取或儲存資料之子集,其已從系統記憶體被載入處理器。接著,當處理器想要從系統記憶體讀取資料(或寫入資料至系統記憶體)時,處理器可首先檢查看看該資料之副本是否被儲存於快取中。假如資料是被儲存在快取中,則處理器可從該些快取存取該資料,以取代需從系統記憶體存取該資料。通常,資料可更快速 地被存取自快取,相較於自系統記憶體。舉例而言,從快取存取資料快取可通常花費不超過數個處理器時脈循環,而存取系統記憶體中之資料通常花費至少更長一級的大小(假如不是更多的話)。結果,在處理器中包括一或更多快取可協助減少其用以將資料擷取入處理器所需的平均時間量,其依次可協助增進處理器性能及/或通量。
再次參考圖1,所示的處理器具有快取階層115,其包含至少二快取(例如,快取111-1,111-N,112-1,112-N,113,114)於二或更多不同的快取階。快取階的差異在於其與核心103及/或其管線組件108(例如,執行單元)的相對接近度。於所示之快取階層的特定範例中,第一核心103-1具有用以快取或儲存指令之專屬第一階或階1(L1)指令快取111-1、及用以快取或儲存資料之專屬L1資料快取112-1。類似地,第N核心103-1具有用以快取或儲存指令之專屬第一階或階1(L1)指令快取111-N、及用以快取或儲存資料之專屬L1資料快取112-N。專屬L1快取之各者可專供由相應的核心(該專屬L1快取係包括於該核心中)所使用(例如,用以快取其資料)。L1快取為最接近於核心及/或其執行單元之快取階。特定所示的快取階層亦包括共用的統一第二階或階2(L2)快取113。術語「統一」係用以指示其L2快取可儲存指令及資料兩者。L2快取為次接近於核心及/或其執行單元之快取階。共用的L2快取可由該些核心之至少部分或全部所共用(例如,快取資料),相對於專屬於任一特定單核 心。如圖所示,闡明的快取階層亦可選擇性地/潛在地包括選擇性共用的統一第三階或階3(L3)快取114,雖然此並非必要。L3快取可為離開核心及/或執行單元又更遠的快取階,但仍比系統記憶體更接近於核心及/或執行單元。於另一實施例中,取代共用的L2快取113,核心之各者可替代地包括專屬的統一L2快取,而快取階層可選擇性地/潛在地包括共用的L3快取,及選擇性地/潛在地共用的第四階或階4(L4)快取,雖然此並非必要。其他快取階層亦為適當的並可廣泛地包括至少二快取於二或更多不同的快取階上。
對於來自更接近於核心之快取的資料之存取通常傾向於比對於來自更遠離核心之快取的資料之存取更為快速。例如,對於L1快取中之資料的快取通常傾向於比對於L2快取中之資料的快取更為快速,對於L2快取中之資料的快取通常傾向於比對於L3快取中之資料的快取更為快速,依此類推。因此,於某些實施例中,可能有利的是能夠指明或者識別哪個快取階將被用以儲存既定資料及/或指令。例如,此一決定可至少部分地基於資料/指令將多頻繁地被存取、快速地存取資料/指令有多重要、有多確定其資料/指令將被需要,等等。此外,常見地其較接近於核心之快取(例如,L1快取)通常傾向於比其較遠離核心之快取(例如,L2快取及L3快取)更小。因此,較小快取中之儲存空間的量可能是更有限的,進一步強化其能夠至少部分地基於針對既定資料/指令之特性、所欲使 用、預期、等等以指明或者指示哪個快取階將被用來快取該既定資料/指令的優點。
於操作期間,快取中之資料通常將隨著時間而被改變,藉由逐出其已老化的及/或另在最近未來不太可能需要的資料以保留空間給其在最近未來很可能需要的資料。針對此目的之各種取代演算法及策略於本技術中是已知的。此等取代演算法及策略經常將逐出部分地基於資料之年齡及/或依據暫時局部性之最近使用。此外,處理器可實施快取同調性機制或協定以協助確保其快取中之資料被同調地管理並於適當的時間寫回至系統記憶體,以致所有核心、處理器、或系統中之其他實體同調地檢視該資料之正確且當前的版本。適當快取同調性協定之範例包括(但不限定於)MESI、MOSI、MOESI,等等。MESI協定包括四個狀態,亦即修飾的(M)、互斥的(E)、共用的(S)、及無效的(I),其係由兩個MESI位元所指示。MOSI協定利用擁有的(O)狀態以取代專屬的(E)狀態。MOESI協定利用專屬的(E)及擁有的(O)狀態兩者。修飾的狀態指定髒快取線。
為了使快取為最有效率的,通常重要的是保持該些快取填入以其在最近未來很可能需要的相關資料。例如,假如第一核心103-1係用以履行一指令,則其可通常立即履行該指令(假如該指令已被事先儲存於快取階層115中的話),而該指令之履行可被延遲(假如替代地該指令尚未被儲存於快取階層中而是需被載入自系統記憶體102在當 第一核心103-1具有資源且準備好履行該第一指令的時刻)。類似地,假如第一核心係用以履行一指令於既定資料上,則其可通常立即履行該指令(假如該指令和該既定資料兩者均已被事先儲存於快取階層中的話),而該指令之履行可被延遲(假如該指令及/或該既定資料之任一者尚未被儲存於快取階層中而是需被載入自系統記憶體在當其被需要的時刻)。因此,快取之非最佳使用可傾向於產生其中處理器準備好履行工作之條件;並具有用以履行該工作之時間和資源和可用性;但可能被拖延以等待指令及/或其資料被擷取自系統記憶體。此等條件通常傾向於代表處理器資源之無效率使用,並可能傾向於降低性能。幸運地,於許多情況下,有可能事先知道(例如,藉由編程器及/或編譯器或其他軟體)哪些指令及/或資料是需要的。
再次參考圖1,第一核心103-1之指令集104可包括一或更多指令105、106、107,用以將資料及/或指令載入處理器之快取。舉例而言,編程器及/或編譯器可包括這些不同類型的指令之一或更多者於程式中,以在資料及/或指令被實際需要之前將該些資料及/或指令載入快取。經常,資料及/或指令可被載入快取就在其被實際地需要之前,以致其不會不必要地長期佔據快取及/或老化而在被使用之前被逐出。當以此方式被使用時,此等指令可協助將資料及/或指令置於快取中,在該些資料及/或指令被需要之前。此可協助避免(或至少減少)快取喪失 之數目,其依次可協助增進處理器性能及/或通量。
指令集可包括提取指令106之實施例。此外,於某些實施例中,指令集可選擇性地包括載入指令105及/或可選擇性地包括預提取指令107。這三種不同類型的指令之各者可不同地履行載入及/或可提供不同情況下之不同的可能優點。
於某些實施例中,載入指令105可指示系統記憶體中之資料117,而無法指明或明確地指示快取階層115中之快取階。載入指令105(當被履行時)可操作以致使處理器從系統記憶體102載入指示的資料117,並將載入的資料儲存為其已由載入指令105所載入的資料110於執行核心之架構暫存器109中。載入指令105(當被履行時)亦可操作以致使處理器將載入的資料儲存為其已由載入指令105所載入的資料121於快取階層中(例如,於此情況下於L3快取114中)但非於快取階層中之任何指明的或明確地指示的快取階上。於某些實施例中,載入指令可被架構上地保證被履行及完成。例如,相應於載入指令之載入可由處理器處置為所謂的要求載入,其具有高優先權且其為處理器所無法一般地決定不履行或完成。
於某些實施例中,預提取指令107可指示系統記憶體中之資料117;可指明或者指示快取階層115中之既定快取階(例如,於此特定範例中為相應於L2快取113之階);及可由處理器所處置為架構式暗示及/或無法被架構地保證被履行及/或完成。於某些情況下,假如被履行 且完成,則預提取指令可操作以致使處理器從系統記憶體102載入指示的資料117;及將載入的資料儲存為其已由預提取指令107所載入的資料120於指示的既定快取階(例如,於此特定範例中為相應於L2快取113之階)上之既定快取中。相反於載入指令105,預提取指令107(假如被履行且完成的話)無法操作以致使處理器將載入的資料儲存於執行核心之架構暫存器109中。
然而,於其他情況下,預提取指令107無法被履行及/或無法被完成。如先前所述,預提取指令可代表架構暗示及/或無法被架構地保證被履行及/或完成。該暗示可對處理器建議其載入該指示的資料可能是理想的,但處理器無法被架構地限制或要求實際地載入該指示的資料。反之,處理器可架構上為自由的或被容許決定其是否想要履行或完成預提取指令。例如,處理器可基於諸如(例如)以下之各種因素以做出此決定:目前工作負擔、可用的資源、處理器是否具有其另外想要執行之某些其他事、時間及/或資源是否另需要以供要求載入,等等。於某些情況下,處理器(例如,其記憶體子系統組件之一)可慎重地決定或判定不履行及/或完成預提取指令。當作一範例,如於118所示,記憶體控制器116可判定終止預提取指令(例如,從其緩衝器移除相應於預提取指令之操作、履行預提取指令為無操作NOP,等等)。因此,針對預提取指令之載入可具有比要求載入更低的優先權,且無法被架構地保證被履行或完成。
於某些實施例中,提取指令106可指示系統記憶體中之資料117(例如,提供位址資訊以指示潛在地與記憶體位置之其他資訊結合),並可指明或者指示既定的快取階。於此特定範例中,指示的階為相應於L3快取114之階;但於其他範例中,快取階層115中之任何其他所欲的快取階可選擇性地被指示。提取指令106(當被履行時)可操作以致使處理器從系統記憶體102載入指示的資料117;及將載入的資料儲存為其已由提取指令106所載入的資料121於指示的既定快取階(例如,於此特定範例中為相應於L3快取114之階,但於其他範例中為任何其他所欲的快取階)上之既定快取中。提取指令可從記憶體或較高階的快取階將資料帶入指示的快取階。然而,相反於載入指令105,預提取指令106(當被履行時)無法致使處理器將載入的資料儲存於執行核心之架構暫存器109中。有利地,此可潛在地容許資料被載入快取階層在其被實際地需要之前而無須將該資料載入架構暫存器,其可傾向於佔用架構暫存器中之通常有限的空間,特別當該資料被載入於當其被實際地需要以前。
相反於預提取指令107(並類似於載入指令105),提取指令106可被架構地保證被履行及完成。如文中所使用,指令或操作被架構地保證完成係表示其處理器不是架構上有彈性得以由其自行決定是否完成該指令或操作(例如,其並非該處理器可隨意地決定不完成之架構式暗示)。於某些實施例中,相應於提取指令106之載入可被 架構地保證由處理器所處置為一種該處理器所無法自行決定或一般地決定不履行及/或不完成的載入。於某些實施例中,相應於提取指令106之載入可由處理器所處置為具有比相應於預提取指令107之載入更高的優先權。於某些實施例中,相應於提取指令106之載入可由處理器所處置為具有如相應於載入指令105之載入的相同或實質上類似的優先權。於某些實施例中,相應於提取指令106之載入可由處理器所處置為一種所謂的要求載入,其具有類似於或相同於相應於載入指令105之載入的優先權之極高優先權或最高優先權。現在,在某些時刻,系統崩潰、系統重新開機、藍螢幕事件、無備用電力故障、裝置故障、或其他此等極端狀況可潛在地造成提取指令不被中斷及不完成。此外,在某些時刻,提取指令可能嘗試其不被允許或容許做(或者其無法做)的某些事,而此亦可能潛在地造成提取指令被中斷及不完成。例如,此可發生於假如提取指令嘗試存取其不被允許存取的記憶體之區、假如其造成位址範圍違反、假如其造成分段錯誤、假如其嘗試特權違反,等等。用語「架構地保證完成」不排除此可能性,而是不同地表示其處理器不是架構地可隨意自行決定是否履行及/或完成指令及/或操作。
因為預提取指令不被架構地保證完成,所以編程器及/或軟體不具有其資料將實際地被載入之完全的或保證的控制。利用預提取指令,處理器可決定忽略該暗示,而假如其確實決定如此則資料無法實際地被載入快取階層。此 無法完成編程器及/或軟體所欲者。此外,此可導致在當指令及/或資料實際地被需要的時刻之快取喪失、以及相關的相對地長且潛在地可變歷時存取需從系統記憶體獲得該資料。此可傾向於降低性能。
此外,此可傾向於特別有問題的,針對某些類型的即時及/或時間關鍵的應用,其須即時地及/或於關鍵時間週期內履行動作。舉例而言,此等即時及/或時間關鍵的應用常被發現於通訊、信號處理、嵌入式控制應用等等之領域中。無法保證其預提取指令實際地將資料載入快取階層可能傾向於使其難以得知或保證其工作可被完成於某時間量之內(例如,因為是否將有快取喪失是未知的變數)。例如,可使其難以得知或保證其工作可被完成於最差情況執行時間(WCET)內。WCET為常用以評估能滿足即時應用需求之系統能力的量度之一範例。無法保證其預提取指令實際地被完成且實際地將資料載入快取階層,於某些情況下,為了估計WCET,可能需要假設其不會將資料載入快取階層,其可延長實際的完成時間。
然而,提取指令106被架構地保證被履行及完成。因此,可安全地假設(例如,為了WCET計算之目的)其資料已被提取指令所載入快取中且其無快取喪失將發生。再者,於許多即時應用中(諸如於可編程邏輯控制器(PLC)中),未來碼路徑及待存取資料可為事先可判定的,其可容許提取指令被用於佔據存取(在該些指令及資料被需要之前)。載入操作可被保證被履行且為可預測及 決定性的,以致其WCET計算可假設資料被實際地載入快取中。此外,提取指令可指示既定的快取階,因此其可(於某些實施例)甚至被假設其資料已被載入既定的指示快取階。
圖2為一種可操作以履行提取指令206之實施例的處理器201之實施例的方塊圖。於某些實施例中,處理器可為通用處理器(例如,用於桌上型電腦、筆記型電腦、或其他電腦之類型的通用微處理器或中央處理單元(CPU))。另一方面,處理器可為特殊用途處理器。適當的特殊用途處理器之範例包括(但不限定於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入處理器、數位信號處理器(DSP)、及控制器(例如,微控制器)。處理器可具有多種複雜指令集計算(CISC)架構、減少指令集計算(RISC)架構、極長指令字元(VLIW)架構、併合架構、其他類型的架構之任一者,或者具有不同架構之組合(例如,不同核心可具有不同架構)。於各個實施例中,處理器可代表積體電路之至少一部分、可被包括於晶粒或半導體基底上、可包括半導體材料、可包括電晶體,等等。
於操作期間,處理器201可接收提取指令206。例如,指令可透過匯流排或其他互連而被接收自記憶體。指令可代表巨集指令、機器碼指令、組合語言指令、或者處理器之指令集的其他指令或控制信號。
於某些實施例中,提取指令可明確地指明(例如,透 過一或更多欄位或一組位元)、或者指示(例如,隱含地指示)具有待載入資料217之記憶體位置232的位址資訊。術語「資料」被廣泛地使用於文中以指稱資料(亦即,非指令)及/或指令。各種不同類型的位址資訊是可能的。位址資訊可代表絕對記憶體位址資訊或相對記憶體位址資訊,其可指示相對於基礎記憶體位址之記憶體位置或其他記憶體位置。此外,各種不同的間接記憶體定址模式可選擇性地被使用。當作一特定範例,提取指令可隱含地指示一暫存器(例如,通用暫存器),其被用以儲存相對記憶體位址資訊,其可與另一隱含暫存器(例如,碼、資料、或延伸段暫存器)中所儲存的額外記憶體位址資訊結合以產生最後記憶體位址,用以識別具有待載入資料217之第一位元組或其他資料元件的記憶體位置232。隱含地或暗示地指示的暫存器可由處理器所瞭解,雖然未透過明確值來表達。例如,處理器可瞭解或辨識(在識別該指令之運算碼後)其固有或隱含使用該暫存器。此僅為一範例。其他形式的位址資訊亦為可能的。同時,取代其位址資訊被提供於一或更多暫存器中,潛在地某些或所有位址資訊可由指令之位元(例如,即刻)所提供。
於某些實施例中,提取指令可明確地指明(例如,透過一或更多欄位或一組位元)、或者指示(例如,隱含地指示)快取階層之複數不同快取階的一快取階。於某些實施例中,提取指令可具有快取階指示欄位或位元組,用以提供值來指示既定的快取階。用以指示既定的快取階可包 括用以指示於既定快取階之既定快取及/或用以指示既定的快取階。如文中所使用,術語「欄位」並非暗示相連位元,而是涵蓋分離的位元,其係邏輯地被一起群聚入欄位中。各種不同可能的約定可被用以將快取階指示欄位或位元集任意值映射至不同的快取階。例如,第一值可指示第一快取階、第二不同的值可指示第二不同的快取階、第三又不同的值可指示第三又不同的快取階,依此類推。於其他實施例中,快取階可隱含提取指令(例如,提取指令之運算碼)。例如,數個不同的提取指令(例如,數個不同的提取指令運算碼)可被提供且各專用於不同的相應快取階。例如,第一提取指令運算碼可專用於將指示的資料提取至第一隱含快取階,第二不同的提取指令運算碼可專用於將指示的資料提取至第二不同的隱含快取階,依此類推。於某些實施例中,提取指令可指示該快取階為第一階(L1)資料快取、L1指令快取、及第二階(L2)快取、選擇性的第三階(L3)快取、及選擇性的第四階(L4)快取的任一個。替代地,更少或更多的快取階可選擇性地被使用。
再次參考圖2,處理器包括解碼單元或解碼器230。解碼單元可接收並解碼提取指令。解碼單元可輸出一或更多相對較低階的指令或控制信號(例如,一或更多微指令、微運算、微碼進入點、已解碼指令或控制信號,等等),其係反應、代表、及/或衍生自相對較高階的提取指令。於某些實施例中,解碼單元可包括:一或更多輸入 結構(例如,埠、互連、介面),用以接收該提取指令、指令辨識並解碼邏輯,其係與之耦合以辨識並解碼該提取指令、及一或更多輸出結構(例如,埠、互連、介面),其係與之耦合以輸出較低階指令或控制信號。解碼單元可使用各種不同的機制來實施,包括(但不限定於)微碼唯讀記憶體(ROM)、查找表、硬體實施方式、可編程邏輯陣列(PLA)、及適於實施解碼單元之其他機制。
於某些實施例中,取代其提取指令被直接地提供至解碼單元,可選擇性地使用指令仿真器、翻譯器、編輯器、解譯器、或其他指令轉換模組。各種類型的指令轉換模組可被實施以軟體、硬體、韌體、或其組合。於某些實施例中,指令轉換模組可位於處理器外部,諸如(例如)於分離的晶粒上及/或於記憶體中(例如,當作靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組可接收提取指令,其可屬於第一指令集;並且可仿真、翻譯、編輯、解譯、或者轉提取指令為一或更多相應的中間指令或控制信號,其可屬於第二不同指令集。第二指令集之一或更多中間指令或控制信號可被提供至解碼單元(例如,解碼單元230),其可將其解碼為可由處理器之本機硬體(例如,快取控制器及/或一或更多執行單元)所執行的一或更多較低階指令或控制信號。
再次參考圖2,快取控制器231與解碼單元230耦合。快取控制器亦與快取214耦合,該快取214係位於由提取指令所指示之快取階。快取214為快取階層215之二 或更多不同快取階上的至少二不同快取之一。於各個實施例中,快取階層可包括至少一L1快取(例如,L1指令快取及L1資料快取、或統一的L1快取)、至少一L2快取、選擇性地至少一L3快取、及選擇性地至少一L4快取。快取控制器可代表執行單元,其係履行或實施提取指令之操作。快取控制器可接收一或更多已解碼或者已轉換指令或控制信號,其係代表及/或衍生自提取指令。快取控制器亦可接收記憶體位置之位址資訊及快取階之指示。快取控制器可操作以,回應於及/或由於提取指令(例如,回應於從該指令所解碼之一或更多指令或控制信號及/或回應於該指令被解碼及/或回應於該指令被提供至解碼器),載入與記憶體位置232關聯的資料217(例如,指令或非指令資料)、及將此資料儲存入在指示的快取階上之快取214。於某些實施例中,如將進一步解釋於下者,提取指令亦可指明或者指示待載入的資料量,且該指示的資料量可被載入。有利地,提取指令可容許軟體及/或編程器將指令及/或非指令資料載入所欲的快取階以致其較接近於執行管線(當稍後需要時)。此可協助防止快取喪失以及在當資料被實際地需要時需從記憶體存取資料所致的高潛時。
於某些情況下,與記憶體位置關聯的資料217可能尚未已被儲存於快取中而可自記憶體位置被載入。於某些實施例中,記憶體位址可被檢查以確定其被對準並確保其存取係於完整的快取線塊中而不越過頁邊界。於其他情況 下,與記憶體位置關聯的資料217可已存在於快取階層中(例如,可已被事先載入)。於此等情況下,假如資料係位於比指示快取階上之快取更高階的快取中,則其可被帶入指示快取階上之較低階的快取;或假如資料已存在於指示快取階上,則快取線可被「碰觸」以重設快取線之年齡或最近最少使用的元資料以延遲逐出;或假如資料係位於比指示快取階上之快取更低階的快取中,則其可被容許保持於較低階的快取上或被移動至指示快取階上之快取。快取控制器或處理器可首先檢查L1快取、及接著檢查L2快取、依此類推升高階層朝向系統記憶體。
於某些實施例中,如於234所示,提取指令206可被架構地保證由處理器所履行及完成(例如,處理器並非架構上有彈性的來自行決定是否履行及/或完成提取指令)。有利地,此可協助使載入被保證或斷定。於某些實施例中,載入操作可被履行為要求載入233。於某些實施例中,用以實施提取指令之要求載入或其他載入操作可具有更高的優先權,相較於其可被視為架構暗示之針對預提取指令的相應載入操作(例如,其亦可由解碼單元所解碼且由處理器所履行)。於某些實施例中,用以實施提取指令之要求載入或其他載入操作可具有相同或實質上類似的優先權,相較於其用以將資料載入處理器的架構暫存器之針對載入指令的相應載入操作(例如,其亦可由解碼單元所解碼且由處理器所履行)。
於某些實施例中,如一般由交叉通過資料210所顯 示,處理器可完成提取指令之履行而不將其與記憶體位置關聯的已載入資料儲存於處理器之任何架構暫存器209中。於某些實施例中,即使載入操作可被履行為要求載入233,其可具有如其用以將資料載入處理器之架構暫存器(例如,通用暫存器、緊縮資料暫存器,等等)的載入之相同或類似的優先權,以供即刻處理,該提取指令(當被履行時)仍無法將資料載入架構暫存器。此等架構暫存器通常代表有價值的且稀少的儲存空間,且通常不應被消耗直到實際地需要。於某些實施例中,提取指令可被用以將資料帶入快取,在資料實際地需被處理之前,以將存取資料之某些通常長的潛時自記憶體隱藏。一旦資料已被帶入快取,則相對低潛時的載入操作可隨後被履行以將資料帶入架構暫存器,就在當資料實際地需被處理時。
於某些實施例中,提取指令可選擇性地被撤回或者確定(例如,藉由確定單元,現在顯示),在資料被儲存入指示階上之快取以前,雖然此並非必要。提取指令可設定或建立載入,其將被履行、且接著處理以撤回或確定,當載入操作朝向完成而進行時。至少觀念上,提取指令(當被履行時)可設定或組態直接記憶體存取(DMA)操作或DMA引擎(例如,於隱含的快取控制器上)以將資料載入指示快取階上之快取。
快取控制器及/或處理器可包括特定或特別邏輯(例如,電晶體、積體電路、或潛在地與韌體(例如,非揮發性記憶體中所儲存之指令)及/或軟體結合之其他硬 體),其可操作以履行提取指令及/或回應於及/或由於提取指令來儲存資料於指示的快取階中(例如,回應於從提取指令所解碼之一或更多指令或控制信號)。於某些實施例中,快取控制器可包括:一或更多輸入結構(例如,埠、互連、介面),用以接收資料、電路或邏輯,其係與之耦合以處理資料、及一或更多輸出結構(例如,埠、互連、介面),其係與之耦合以輸出資料至快取。
為了避免妨礙說明,已顯示及描述一相對簡單的處理器201。然而,處理器可選擇性地包括其他處理器組件。例如,各個不同實施例可包括針對圖xx-xx之任一者所顯示並描述的組件之各個不同組合及組態。處理器之所有組件可被耦合在一起以容許其操作如所欲。
圖3為一種履行提取指令之實施例的方法330的實施例之方塊流程圖。於各個實施例中,該些方法可由處理器、指令處理設備、數位邏輯裝置、或積體電路來履行。於某些實施例中,圖3之方法可由圖2之處理器所履行及/或被履行於圖2之處理器內。針對圖2之處理器之文中所述的組件、特徵、及特定選擇性細節亦選擇性地適用於圖3之方法。替代地,圖3之方法可由類似或不同的處理器或設備所履行及/或被履行於類似或不同的處理器或設備內。此外,圖2之處理器可履行相同於、類似於、或不同於圖3之那些的方法。於某些實施例中,該方法可選擇性地被履行為處理器之部分及/或同時以處理器履行即時應用,該處理器可選擇性地為通用中央處理單元(CPU) 或其他通用處理器,雖然本發明之範圍未如此限制。
該方法包括於處理器上接收提取指令,於區塊331。於各個形態中,指令可被接收於處理器或其一部分上(例如,指令提取單元、解碼單元、匯流排介面單元,等等)。於各個形態中,指令可被接收自處理器外及/或晶粒外來源(例如,自記憶體、互連,等等),或者自處理器上及/或晶粒上來源(例如,自指令快取、指令佇列,等等)。提取指令可指明或者指示記憶體位置之位址資訊。位址資訊之前述形式為適當的。提取指令亦可指明或者指示快取階為複數不同快取階之任一者。於某些實施例中,提取指令可得以替代地指示L1指令快取或L1資料快取之任一者、以及其他階的快取。於某些實施例中,該提取指令亦可選擇性地指明或者指示待載入的資料量。
該方法亦包括(回應於及/或由於提取指令)將與記憶體位置關聯的資料儲存在其處於指示快取階上之處理器的快取,於區塊332。於某些實施例中,處理器可完成提取指令之履行而不將其與記憶體位置關聯的資料儲存於處理器之任何架構暫存器中。於某些實施例中,載入指令可被架構地保證被處理器所完成。於某些實施例中,提取指令可透過要求載入而被履行,該要求載入可具有如要求載入(其被用以將資料載入處理器之架構暫存器以供即刻處理)之相同的或實質上相同的優先權,且該要求載入可具有比載入操作(其被用以履行一其為架構暗示且不被架構地保證完成之預提取指令)更高的優先權。
所闡明之方法涉及架構操作(例如,從軟體觀點之那些可見者)。於其他實施例中,該方法可選擇性地包括一或更多微架構操作。舉例而言,指令可被提取、解碼、失序排程;來源運算元可被存取;執行單元可履行微架構操作以實施該指令,等等。於某些實施例中,用以實施該指令之微架構操作可選擇性地包括使用指示的位址資訊以產生其可被用來存取來自系統記憶體之資料的全記憶體位址。於某些實施例中,用以實施該指令之微架構操作亦可選擇性地包括檢查以確定記憶體位址被對準並確認其存取係於完整快取線塊中且不越過頁邊界(例如,用以協助避免產生頁錯誤)。用以實施該指令之微架構操作亦可選擇性地包括從系統記憶體載入資料(例如,透過匯流排或其他互連以傳輸資料,等等)。
圖4為提取指令406之第一範例實施例的方塊圖。提取指令被儲存或者提供於機器可讀取媒體440上。媒體可包括一種機制,其係以可由電腦系統或其他機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供(或已於其上儲存)提取指令,而提取指令(假如及/或當由電腦系統或其他機器履行時)可操作以致使機器履行及/或導致機器履行文中所揭露的操作、方法、或技術之一。
該提取指令包括操作碼或運算碼441。運算碼可代表複數位元(或者一或更多欄位),其可操作以識別指令及/或待履行操作(例如,提取操作)。該指令亦包括選擇性位址資訊指示欄位442,用以指示位址資訊。舉例而 言,選擇性位址資訊指示欄位可包括位元以指明暫存器之位址、記憶體位置、或其中位址資訊所將被儲存之其他儲存位置。另一方面,選擇性位址資訊指示欄位(例如,即刻)可直接地提供位址資訊以取代間接地透過暫存器或其他儲存位置。當作又進一步範例,位址資訊指示欄位可選擇性地被省略,並取代具有此欄位而可使提取指令(例如,運算碼441)隱含或固有其位址資訊係被儲存於既定的暫存器或其他儲存位置中。例如,處理器可瞭解或辨識(在識別運算碼之後)其為固有的或隱含的(雖未表達)來從某固定暫存器讀取位址資訊。
該指令亦具有快取階指示欄位443。快取階指示欄位可提供一值來指明或者指示其中已載入資料所將被儲存之快取階。該些值與相關快取階的特定映射是任意的,且可選擇性地採用許多不同的傳統手段。快取階指示欄位可具有二位元、三位元、四位元、或選擇性地更多位元,根據欲被指示之快取階數以及應被指明或指示之其他可能選擇。另一方面,取代直接地提供該值,快取階指示欄位可選擇性地指示暫存器或其他儲存位置,其可被用以儲存該值來指示快取階。
為了進一步闡明某些觀念,表444闡明將不同的2位元快取階指示欄位值映射至不同的指示快取階之一適當範例,雖然此僅為一可能的範例且本發明之範圍不限於此特定範例。依據此特定範例,「00」之2位元值係指示L1指令快取,「01」之值係指示L1資料快取,「10」之值 係指示L2快取、而「11」之值係指示L3快取。應理解:此僅為一說明性範例。
圖5為一表550,其闡明不同的3位元快取階指示欄位值至不同的指示快取階之映射的適當範例。此僅為一特定範例且本發明之範圍不限於此特定範例。依據此特定範例,「000」之3位元值係指示L1指令快取,「001」之值係指示L1資料快取,「010」之值係指示L2快取,而「100」之值係指示L3快取。繼續下去,「011」之值係指示L4快取,「101」之值係指示具有容許至L2快取之溢流的L1資料快取,「110」之值係指示具有容許至L2快取之溢流的L2指令快取,而「111」之值係指示具有容許至L3快取之溢流的L2快取。應理解:此僅為一說明性範例。於此範例中,比不同快取階更多的3位元值之不同可能組合是可得的,而因此3位元值之可得組合的部分被用以指示額外的資訊(例如,於此情況下其溢流至更高階快取被容許)。
圖6為提取指令606之第二範例實施例的方塊圖。提取指令被儲存或者提供於機器可讀取媒體640上。提取指令包括運算碼641、選擇性位址資訊指示欄位642、及快取階指示欄位643。除非另有指明,這些可選擇性地具有圖4之提取指令的相應地命名的運算碼及欄位之部分或所有特性。為了避免混淆說明,將主要地描述不同及/或額外的特性而不重複共同特性。
提取指令亦包括選擇性資料量指示欄位655。資料量 指示欄位可提供一值以指明或者指示將被載入並儲存至指示快取階上之快取的資料量。該些值與相關資料量的特定映射是任意的,且可選擇性地採用許多不同的傳統手段。資料量指示欄位可具有二位元、三位元、四位元、五位元、六位元、或選擇性地更多位元,根據欲被指示之不同資料量數及/或應被指明或指示之其他可能選擇。於某些實施例中,至少四個不同的資料量可被指明。於某些實施例中,資料量之範圍可從具有資料(例如,512位元)之單一快取線,至其適於單一頁內之快取線的最大數目(例如,六十四快取線可適於四千位元組頁內),或選擇性地於某些實施例高達數頁記憶體。
為了進一步闡明某些觀念,表656係闡明不同的3位元資料量指示欄位值至待載入資料量之不同的範例之映射的一適當範例。此僅為一特定範例且本發明之範圍不限於此特定範例。依據此特定範例,「000」之3位元值係指示一(例如,單一)快取線,「001」之值係指示兩相連快取線,「010」之值係指示四相連快取線,而「100」之值係指示八相連快取線。繼續下去,「011」之值係指示十六相連快取線,「101」之值係指示三十二相連快取線,「110」之值係指示六十四相連快取線(例如,單一四千位元組頁的快取線),及「111」之值係指示一百二十八相連快取線(例如,兩相連四千位元組頁的快取線)。應理解:此僅為一說明性範例。例如,於其他實施例中,取代指示多數頁(例如,其可潛在地導致頁錯 誤),其他數目的相連快取線(例如,三個相連快取線或六個相連快取線)可替代地被指示。於其他實施例中,可有選擇多於兩個頁之選項。再者,快取線之不同分佈及/或間隔可選擇性地被使用。
於所示的範例實施例中,資料量指示欄位655之值係相應於如表656中所示之固定資料量,雖然此並非必要。於其他實施例中,圖6之提取指令可選擇性地包括資料粒度欄位(例如,一或更多位元),用以指示針對資料量指示欄位655中所指示之值的資料粒度。例如,資料粒度欄位可指示資料量指示欄位655中所提供之值是否於快取線粒度(例如,表達或選擇數個快取線)、或者於頁粒度(例如,表達或選擇數個頁)。舉例而言,資料量指示欄位655中之「100」的值可指示其八個單元將被載入,而資料粒度欄位可具有第一值(用以指示其這些單元為快取線、或第二不同的值(用以指示其這些單元為頁)。此一資料粒度欄位可被使用與文中所揭露之提取指令的其他實施例之任一者。
藉由履行單指令以載入多數快取線的能力可協助減少碼中之指令的數目(例如指令膨脹(instruction bloat))及/或可協助減少其需被履行之指令的數目,其可協助增進執行性能。例如,指令可具有執行單指令以載入上述所有不同的資料量之固定負擔。舉例而言,單一提取指令可被用以載入整個庫函數,其將很快被執行入L1指令快取。於某些情況下,然而,藉由留下一些間隙 於提取的快取線之間(假如處理器之自律硬體預提取單元可得的話)則可獲得良好或最佳性能,因為此一硬體預提取單元可得以有機會載入中間非提取的快取線而不執行指令。然而,於其中重要的是保證其快取線被載入之情況下,來自硬體預提取單元之此等提取亦可(於某些實施方式中)不被架構地保證被履行及/或完成。
圖4及6顯示其可被包括於某些實施例之提取指令中的欄位類型之範例。欄位之所示的配置並非必要,反之該些欄位可被不同地重新配置。該些欄位之各者可由相連組的位元所組成,或者可包括其邏輯上代表該欄位之非相連或分離的位元。替代實施例可包括所示欄位之子集及/或可加入額外的欄位。當作一範例,於某些實施例中,圖4及/或圖6之提取指令可選擇性地包括一欄位(例如,一或更多位元),用以指示資料是否將被修改或僅被讀取而不修改。舉例而言,軟體可組態該欄位,假如其知道資料是否將被修改或僅被讀取而不修改的話。於一形態中,處理器(例如,快取控制器)可使用此欄位以判定或協助判定已載入快取線之狀態,當其被儲存於指示快取階上之快取中時。例如,假如該欄位指示其資料將被修改,則快取線可被賦予擁有(O)之狀態(於MOSI協定之情況下)或者互斥(E)之狀態(於MESI協定之情況下);而假如該欄位指示其資料將僅被讀取而不修改,則快取線將被賦予共用(S)之狀態(於MESI及MOSI協定中)。此欄位可被選擇性地使用與文中所揭露之提取指令的其他實 施例之任一者。
圖7為一種可操作以履行提取指令706之實施例的處理器701之範例實施例的方塊圖。處理器701可為(或可被包括於)圖2之處理器201。處理器701包括解碼單元730、快取控制器731、及快取714(於由提取指令706所指示之快取階上)。除非另有指明,這些組件可選擇性地具有圖2之相應地命名的組件之部分或所有特性。為了避免混淆說明,將主要地描述不同及/或額外的特性而不重複共同特性。
提取指令706可指明或者指示快取線載入遮蔽770。快取線載入遮蔽可選擇性地被儲存於暫存器772中,諸如(例如)32位元或64位元的通用暫存器、用於緊縮資料斷定之專屬遮蔽暫存器,等等。另一方面,快取線載入遮蔽可選擇性地被儲存於另一儲存位置中。於某些實施例中,快取線載入遮蔽可包括多數遮蔽位元或其他遮蔽元件,其可各相應於不同的快取線。遮蔽元件可為已遮蔽以指示其相應的快取線不應被載入、或為未遮蔽以指示其相應的快取線應被載入。例如,遮蔽位元可被清除為二元零以指示其相應的快取線不應被載入、或設定為二元一以指示其相應的快取線應被載入。
快取控制器(回應於提取指令)可操作以從由提取指令所指示之記憶體位置732選擇性地載入快取線799,依據由快取線載入遮蔽770所提供的控制。例如,如於所闡明之特定範例中所示,快取線載入遮蔽之位元0被設定為 二元一,而因此第一快取線799-1可被載入並儲存於快取714中。相反地,快取線載入遮蔽之位元1被清除為二元零,而因此第二快取線799-2可被載入並儲存於快取中。繼續下去,快取線載入遮蔽之位元2被設定為二元一,而因此第三快取線799-3可被載入並儲存於快取中。類似地,快取線載入遮蔽之位元(N-1)被設定為二元一,而因此第N快取線799-N可被載入並儲存於快取中。以此方式,提取指令可指示數個快取線(例如,相連範圍的快取線),而快取線載入遮蔽可組態成選擇這些快取線之任何所欲的型態或配置以依快取線接快取線為基的方式來載入或不載入該些快取線。當作一範例,具有「1010101010101010」之值的快取線載入遮蔽可被用以載入十六條快取線之區塊中的每一間隔快取線。舉例而言,此型態可潛在地被用以平衡硬體預提取單元,其係自動地載入未載入的快取線。當作另一範例,具有「11001100110011001100110011001100」之值的快取線載入遮蔽可被用以載入相連快取線之對而不載入相連快取線之交錯對。
範例核心架構,處理器,及電腦架構
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施方式可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通 量)計算之特殊用途核心。不同處理器之實施方式可包括:1)CPU,其包括用於通用計算之一或更多通用依序核心及/或用於通用計算之一或更多通用失序核心;及2)共處理器,其包括主要用於圖形及/或科學(通量)之一或更多特殊用途核心。此等不同處理器導致不同的電腦系統架構,其可包括:1)在來自該CPU之分離晶片上的共處理器;2)在與CPU相同的封裝中之分離晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(於該情況下,此一共處理器有時被稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)在一可包括於相同晶粒上之所述CPU(有時稱為應用程式核心或應用程式處理器)、上述共處理器、及額外功能的晶片上之系統。範例核心架構被描述於下,接續著範例處理器及電腦架構之描述。
範例核心架構 依序或失序核心方塊圖
圖8A為闡明範例依序管線及範例暫存器重新命名、失序問題/執行管線兩者之方塊圖,依據本發明之實施例。圖8B為一方塊圖,其闡明將包括於依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名、失序問題/執行架構核心兩者。圖8A-B中之實線方盒係闡明依序管線及依序核心,而虛線方盒之選擇性加入係闡明暫存器重新命名、失序問題/執行管線及核 心。假設其依序形態為失序形態之子集,將描述失序形態。
於圖8A中,處理器管線800包括提取級802、長度解碼級804、解碼級806、配置級808、重新命名級810、排程(亦已知為分派或發送)級812、暫存器讀取/記憶體讀取級814、執行級816、寫入回/記憶體/寫入級818、例外處置級822、及確定級824。
圖8B顯示處理器核心890,其包括一耦合至執行單元引擎單元850之前端單元830,且兩者均耦合至記憶體單元870。核心890可為減少指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者併合或替代核心類型。當作又另一種選擇,核心890可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元830包括一分支預測單元832,其係耦合至指令快取單元834,其係耦合至指令變換後備緩衝(TLB)836,其係耦合至指令提取單元838,其係耦合至解碼單元840。解碼單元840(或解碼器)可解碼指令;並可將以下產生為輸出:一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其被解碼自(或者反應)、或被衍生自原始指令。解碼單元840可使用各種不同的機制來實施。適當機制之範例包括(但不限定於)查找表、硬體實施方式、可編程邏輯陣列(PLA)、微碼 唯讀記憶體(ROM),等等。於一實施例中,核心890包括微碼ROM或者儲存用於某些巨指令之微碼的其他媒體(例如,於解碼單元840中或者於前端單元830內)。解碼單元840被耦合至執行引擎單元850中之重新命名/配置器單元852。
執行引擎單元850包括重新命名/配置器單元852,其係耦合至撤回單元854及一組一或更多排程器單元856。排程器單元856代表任何數目的不同排程器,包括保留站、中央指令窗,等等。排程器單元856被耦合至實體暫存器檔單元858。實體暫存器檔單元858之各者代表一或更多實體暫存器檔,其不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為下一待執行指令之位址的指令指標),等等。於一實施例中,實體暫存器檔單元858包含向量暫存器單元、寫入遮蔽暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮蔽暫存器、及通用暫存器。實體暫存器檔單元858係由撤回單元854所重疊以闡明其中暫存器重新命名及失序執行可被實施之各種方式(例如,使用記錄器緩衝器和撤回暫存器檔;使用未來檔、歷史緩衝器、和撤回暫存器檔;使用暫存器映圖和暫存器池,等等)。撤回單元854及實體暫存器檔單元858被耦合至執行叢集860。執行叢集860包括一組一或更多執行單元862及一組一或更多記憶體存取單元864。執行單元862可履行各種操作 (例如,偏移、相加、相減、相乘)以及於各種類型的資料上(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括數個專屬於特定功能或功能集之執行單元,但其他實施例可包括僅一個執行單元或者全部履行所有功能之多數執行單元。排程器單元856、實體暫存器檔單元858、及執行叢集860被顯示為可能複數的,因為某些實施例係針對某些類型的資料/操作產生分離的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,其各具有本身的排程器單元、實體暫存器檔單元、及/或執行叢集-且於分離記憶體存取管線之情況下,某些實施例被實施於其中僅有此管線之執行叢集具有記憶體存取單元864)。亦應理解:當使用分離管線時,這些管線之一或更多者可為失序發送/執行而其他者為依序。
該組記憶體存取單元864被耦合至記憶體單元870,其包括資料TLB單元872,其耦合至資料快取單元874,其耦合至第二階(L2)快取單元876。於一範例實施例中,記憶體存取單元864可包括載入單元、儲存位址單元、及儲存資料單元,其各者係耦合至記憶體單元870中之資料TLB單元872。指令快取單元834被進一步耦合至記憶體單元870中之第二階(L2)快取單元876。L2快取單元876被耦合至一或更多其他階的快取且最終至主記憶體。
舉例而言,範例暫存器重新命名、失序發送/執行核心架構可實施管線800如下:1)指令提取838履行提取和長度解碼級802和804;2)解碼單元840履行解碼級806;3)重新命名/配置器單元852履行配置級808和重新命名級810;4)排程器單元856履行排程級812;5)實體暫存器檔單元858和記憶體單元870履行暫存器讀取/記憶體讀取級814;執行叢集860履行執行級816;6)記憶體單元870和實體暫存器檔單元858履行寫入回/記憶體寫入級818;7)各個單元可參與例外處置級822;及8)撤回單元854和實體暫存器檔單元858履行確定級824。
核心890可支援一或更多指令集(例如,x86指令集,具有其已被加入以較新版本之某些延伸);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON之選擇性額外延伸),包括文中所述之指令。於一實施例中,核心890包括支援緊縮資料指令集延伸(例如,AVX1、AVX2)之邏輯,藉此容許由許多多媒體應用程式所使用的操作使用緊縮資料來履行。
應理解:核心可支援多線程(執行二或更多平行組的操作或線緒),並可以多種方式執行,包括時間切割多線程、同時多線程(其中單一實體核心提供邏輯核心給其實體核心正同時地多線程之每一線緒)、或者其組合(例如,時間切割提取和解碼以及之後的同時多線程,諸如 Intel® Hyperthreading科技)。
雖然暫存器重新命名被描述於失序執行之背景,但應理解其暫存器重新命名可被使用於依序架構。雖然處理器之所述的實施例亦包括分離的指令和資料快取單元834/874以及共用L2快取單元876,但替代實施例可具有針對指令和資料兩者之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階內部快取。於某些實施例中,該系統可包括內部快取與外部快取之組合,該外部快取是位於核心及/或處理器之外部。替代地,所有快取可於核心及/或處理器之外部。
特定範例依序核心架構
圖9A-B闡明更特定的範例依序核心架構之方塊圖,該核心將為晶片中之數個邏輯區塊之一(包括相同類型及/或不同類型之其他核心)。邏輯區塊係透過高頻寬互連網路(例如,環狀網路)來通訊,利用某些固定功能邏輯、記憶體I/O介面、及其他必要I/O邏輯,根據其應用而定。
圖9A為單處理器核心之方塊圖,連同與晶粒上互連網路902之其連接、以及第二階(L2)快取904之其本地子集,依據本發明之實施例。於一實施例中,指令解碼器900支援具有緊縮資料指令集延伸之x86指令集。L1快取906容許針對快取記憶體之低潛時存取入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元908 及向量單元910使用分離的暫存器組(個別地,純量暫存器1912及向量暫存器914),且於其間轉移的資料被寫入至記憶體並接著從第一階(L1)快取906被讀取回;但本發明之替代實施例可使用不同的方式(例如,使用單一暫存器組或者包括一通訊路徑,其容許資料被轉移於兩暫存器檔之間而不被寫入及讀取回)。
L2快取904之本地子集為其被劃分為分離本地子集(每一處理器核心有一個)之總體L2快取的部分。各處理器核心具有一直接存取路徑通至L2快取904之其本身的本地子集。由處理器核心所讀取的資料被儲存於其L2快取子集904中且可被快速地存取,平行於存取其本身本地L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集904中且被清除自其他子集,假如需要的話。環狀網路確保共用資料之一致性。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理於晶片內部彼此通訊。各環狀資料路徑於每方向為1012位元寬。
圖9B為圖9A中之處理器核心的部分之延伸視圖,依據本發明之實施例。圖9B包括L1快取904之L1資料快取906A部分、以及有關向量單元910和向量暫存器914之更多細節。明確地,向量單元910為16寬的向量處理單元(VPU)(參見16寬的ALU 928),其係執行整數、單精確度浮點、及雙精確度浮點指令之一或更多者。VPU支援以拌合單元920拌合暫存器輸入、以數字轉 換單元922A-B之數字轉換、及於記憶體輸入上以複製單元924之複製。寫入遮蔽暫存器926容許斷定結果向量寫入。
具有集成記憶體控制器及圖形之處理器
圖10為一種處理器1000之方塊圖,該處理器1000可具有多於一個核心、可具有集成記憶體控制器、且可具有集成圖形,依據本發明之實施例。圖10中之實線方塊闡明處理器1000,其具有單核心1002A、系統代理1010、一組一或更多匯流排控制器單元1016;而虛線方塊之選擇性加入闡明一替代處理器1000,其具有多核心1002A-N、系統代理單元1010中之一組一或更多集成記憶體控制器單元1014、及特殊用途邏輯1008。
因此,處理器1000之不同實施方式可包括:1)CPU,具有其為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心)之特殊用途邏輯1008、及其為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合)之核心1002A-N;2)共處理器,具有其為主要用於圖形及/或科學(通量)之大量特殊用途核心的核心1002A-N;及3)共處理器,具有其為大量通用依序核心的核心1002A-N。因此,處理器1000可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多數集成核心(MIC)共處理器(包括 30或更多核心)、嵌入式處理器,等等。該處理器可被實施於一或更多晶片上。處理器1000可為一或更多基底之部分及/或可被實施於其上,使用數個製程技術之任一者,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括該些核心內之一或更多階快取、一組或者一或更多共用快取單元1006、及耦合至該組集成記憶體控制器單元1014之額外記憶體(未顯示)。該組共用快取單元1006可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中環狀為基的互連單元1012將以下裝置互連:集成圖形邏輯1008、該組共用快取單元1006、及系統代理單元1010/集成記憶體單元1014,但替代實施例可使用任何數目之眾所周知的技術以互連此等單元。於一實施例中,一致性被維持於一或更多快取單元1006與核心1002-A-N之間。
於某些實施例中,一或更多核心1002A-N能夠進行多線程。系統代理1010包括協調並操作核心1002A-N之那些組件。系統代理單元1010可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者包括用以調節核心1002A-N及集成圖形邏輯1008之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
核心1002A-N可針對架構指令集為同質的或異質的;亦即,二或更多核心1002A-N可執行相同的指令 集,而其他者可執行該指令集或不同指令集之僅一子集。
範例電腦架構
圖11-21為範例電腦架構之方塊圖。用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之技術中已知的其他系統設計和組態亦為適當的。通常,能夠結合處理器及/或其他執行邏輯(如文中所揭露者)之多種系統或電子裝置為一般性適當的。
現在參考圖11,其顯示依據本發明之一實施例的系統1100之方塊圖。系統1100可包括一或更多處理器1110、1115,其被耦合至控制器集線器1120。於一實施例中,控制器集線器1120包括圖形記憶體控制器集線器(GMCH)1190及輸入/輸出集線器(IOH)1150(其可於分離的晶片上);GMCH 1190包括記憶體及圖形控制器(耦合至記憶體1140及共處理器1145);IOH 1150為通至GMCH 1190之耦合輸入/輸出(I/O)裝置1160。另一方面,記憶體與圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1140及共處理器1145被直接地耦合至處理器1110、及具有IOH 1150之單一晶片中的控制器集線器1120。
額外處理器1115之選擇性本質於圖11中被標示以斷線。各處理器1110、1115可包括文中所述的處理核心之一或更多者並可為處理器1000之某版本。
記憶體1140可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1120經由諸如前側匯流排(FSB)等多點分支匯流排、諸如QuickPath互連(QPI)等點對點介面、或類似連接1195而與處理器1110、1115通訊。
於一實施例中,共處理器1145為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器,等等。於一實施例中,控制器集線器1120可包括集成圖形加速器。
於實體資源1110、1115間可有多樣差異,針對價值矩陣之譜,包括架構、微架構、熱、功率耗損特性,等等。
於一實施例中,處理器1110執行其控制一般類型之資料處理操作的指令。指令內所嵌入者可為共處理器指令。處理器1110辨識這些共處理器指令為其應由裝附之共處理器1145所執行的類型。因此,處理器1110將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發送至共處理器1145。共處理器1145接受並執行該些接收的共處理器指令。
現在參考圖12,其顯示依據本發明之實施例的第一更特定範例系統1200之方塊圖。如圖12中所示,多處理器系統1200為點對點互連系統,並包括經由點對點互連1250而耦合之第一處理器1270及第二處理器1280。處理器1270及1280之每一者可為處理器1000之某版本。於本發明之一實施例中,處理器1270及1280個別為處理器1110及1115,而共處理器1238為共處理器1145。於另一實施例中,處理器1270及1280個別為處理器1110及共處理器1145。
處理器1270及1280被顯示為個別地包括集成記憶體控制器(IMC)單元1272及1282。處理器1270亦包括其匯流排控制器單元點對點(P-P)介面1276及1278之部分;類似地,第二處理器1280包括P-P介面1286及1288。處理器1270、1280可使用P-P介面電路1278、1288而經由點對點(P-P)介面1250來交換資訊。如圖12中所示,IMC 1272及1282將處理器耦合至個別記憶體,亦即記憶體1232及記憶體1234,其可為本地地裝附至個別處理器之主記憶體的部分。
處理器1270、1280可各經由個別的P-P介面1252、1254而與晶片組1290交換資訊,使用點對點介面電路1276、1294、1286、1298。晶片組1290可經由高性能介面1239而選擇性地與共處理器1238交換資訊。於一實施例中,共處理器1238為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖 形處理器、GPGPU、嵌入式處理器,等等。
共用快取(未顯示)可被包括於任一處理器中或者於兩處理器外部,而經由P-P互連與處理器連接,以致處理器之任一者或兩者的本地快取資訊可被儲存於共用快取中,假如處理器被置於低功率模式時。
晶片組1290可經由一介面1296而被耦合至第一匯流排1216。於一實施例中,第一匯流排1216可為周邊組件互連(PCI)匯流排、或者諸如PCI快速匯流排或其他第三代I/O互連匯流排等匯流排,雖然本發明之範圍未如此限制。
如圖12中所示,各種I/O裝置1214可被耦合至第一匯流排1216,連同匯流排橋1218,其係將第一匯流排1216耦合至第二匯流排1220。於一實施例中,一或更多額外處理器1215(諸如共處理器、高通量MIC處理器、GPGPU加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器)被耦合至第一匯流排1216。於一實施例中,第二匯流排1220可為低管腳數(LPC)匯流排。各個裝置可被耦合至第二匯流排1220,其包括(例如)鍵盤/滑鼠1222、通訊裝置1227、及資料儲存單元1228,諸如磁碟機或其他大量儲存裝置(其可包括指令/碼及資料1230),於一實施例中。此外,音頻I/O 1224可被耦合至第二匯流排1220。注意:其他架構是可能的。例如,取代圖12之點對點架構,系統可實施多點分支匯流排其他 此類架構。
現在參考圖13,其顯示依據本發明之實施例的第二更特定範例系統1300之方塊圖。圖12與13中之類似元件具有類似的參考數字,且圖12之某些形態已從圖13省略以免混淆圖13之其他形態。
圖13闡明其處理器1270、1280可包括集成記憶體及I/O控制邏輯(「CL」)1272和1282,個別地。因此,CL 1272、1282包括集成記憶體控制器單元並包括I/O控制邏輯。圖13闡明其不僅記憶體1232、1234被耦合至CL 1272、1282,同時其I/O裝置1314亦被耦合至控制邏輯1272、1282。舊有I/O裝置1315被耦合至晶片組1290。
現在參考圖14,其顯示依據本發明之一實施例的SoC 1400之方塊圖。圖10中之類似元件具有類似的參考數字。同時,虛線方塊為更多先進SoC上之選擇性特徵。於圖14中,互連單元1402被耦合至:應用程式處理器1410,其包括一組一或更多核心132A-N及共用快取單元1006;系統代理單元1010;匯流排控制器單元1016;集成記憶體控制器單元1014;一組一或更多共處理器1420,其可包括集成圖形邏輯、影像處理器、音頻處理器、及視頻處理器;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;及顯示單元1440,用以耦合至一或更多外部顯示。於一實施例中,共處理器1420包括特殊用途處理器,諸如(例如)網路或 通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器,等等。
文中所揭露之機制的實施例可被實施以硬體、軟體、韌體、或此等實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其被執行於可編程系統上,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼(諸如圖12中所示之碼1230)可被應用於輸入指令以履行文中所述之功能並產生輸出資訊。輸出資訊可被應用於一或更多輸出裝置,以已知的方式。為了本申請案之目的,處理系統包括任何系統,其具有處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或目標導向的編程語言來與處理系統通訊。程式碼亦可被實施以組合或機器語言,假如想要的話。事實上,文中所述之機制在範圍上不限於任何特定編程語言。於任何情況下,該語言可為編譯或解讀語言。
至少一實施例之一或更多形態可由其儲存在機器可讀取媒體上之代表性指令所實施,該機器可讀取媒體代表處理器內之各個邏輯,當由機器讀取時造成該機器製造邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)可被儲存在有形的、機器可讀取媒體上,且被供應至各個 消費者或製造設施以載入其實際上製造該邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包括(無限制)由機器或裝置所製造或形成之物件的非暫態、有形配置,包括:儲存媒體,諸如硬碟、包括軟碟、光碟、微型碟唯讀記憶體(CD-ROM)、微型碟可再寫入(CD-RW)、及磁光碟等任何其他類型的碟片;半導體裝置,諸如唯讀記憶體(ROM)、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)等隨機存取記憶體(RAM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)、磁或光學卡、或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)等設計資料之非暫態、有形的機器可讀取媒體,該硬體描述語言(HDL)係定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二元翻譯、碼變形,等等)
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換至目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、動態二元翻譯,包括動態編譯)、變形、仿真、或者轉換至一或更多其他指令以 供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或者部分於處理器上而部分於處理器外。
圖15為一種對照軟體指令轉換器之使用的方塊圖,該轉換器係用以將來源指令集中之二元指令轉換至目標指令集中之二元指令,依據本發明之實施例。於所述之實施例中,指令轉換器為一種軟體指令轉換器,雖然替代地該指令轉換器亦可被實施以軟體、韌體、硬體、或其各種組合。圖15顯示一種高階語言1502之程式可使用x86編譯器1504而被編譯以產生x86二元碼1506,其可由具有至少一x86指令集核心之處理器1516來本機地執行。具有至少一x86指令集核心之處理器1516代表任何處理器,其可藉由可相容地執行或者處理以下事項來履行實質上如一種具有至少一x86指令集核心之Intel處理器的相同功能:(1)Intel x86指令集核心之指令集的實質部分或者(2)針對運作於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體之物件碼版本,以獲得如具有至少一x86指令集核心之Intel處理器的實質相同結果。x86編譯器1504代表一種編譯器,其可操作以產生x86二元碼1506(例如,物件碼),其可(具有或沒有額外鏈結處理)被執行於具有至少一x86指令集核心之處理器1516上。類似地,圖15顯示高階語言1502之程式可使用替代的指令集編譯器1508而被編譯以產生替代的指令集二元碼1510,其可由沒有至少一x86指令集核心之處 理器1514來本機地執行(例如,具有其執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或其執行ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1512被用以將x86二元碼1506轉換為其可由沒有x86指令集核心之處理器1514來本機地執行的碼。已轉換碼不太可能相同於替代的指令集二元碼1510,因為能夠執行此功能之指令很難製造;然而,已轉換碼將完成一般性操作並由來自替代指令集之指令所組成。因此,指令轉換器1512代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許處理器或其他不具有x86指令集處理器或核心的電子裝置來執行x86二元碼1506。
針對圖1及4-7之任一者所述之組件、特徵、及細節亦可選擇性地應用於圖2-3之任一者。針對文中所揭露的處理器之任一者所述之組件、特徵、及細節可選擇性地應用於文中所揭露的方法之任一者,其在實施例中可選擇性地由及/或以此類處理器所履行。實施例中於文中所述之處理器的任一者(例如,處理器201、處理器701)可選擇性地被包括於文中所揭露之系統的任一者(例如,圖xx-xx之系統的任一者)。
於說明書及申請專利範圍中,術語「耦合」及/或「連接」(連同其衍生詞)可被使用。這些術語並非被用為彼此的同義詞。反之,於實施例中,「連接」可被用以指示其二或更多元件係彼此直接地實體及/或電氣接觸。 「耦合」可表示二或更多元件係彼此直接地物理及/或電氣接觸。然而,「耦合」亦可表示其二或更多元件不是彼此直接接觸,而仍彼此合作或互動。例如,快取控制器可透過一或更多中間組件而與解碼單元耦合。於圖形中,箭號被用以顯示連接或耦合。
文中所揭露之組件及先前圖形中所描繪之方法可被實施以邏輯、模組、或單元,其包括硬體(例如,電晶體、閘、電路,等等)、韌體(例如,儲存微碼或控制信號的非揮發性記憶體)、軟體(例如,儲存於非暫態電腦可讀取儲存媒體之上者)、或其組合。於某些實施例中,邏輯、模組、或單元可包括潛在地與某些選擇性軟體結合之硬體及/或韌體的至少某些或主要混合。
術語「及/或」可已被使用。如文中所使用者,術語「及/或」表示一者或另一者或兩者(例如,A及/或B表示A或B或A與B兩者)。
於以上說明中,已提出數個特定細節以提供實施例之透徹瞭解。然而,其他實施例可被實行而無這些特定的細節。本發明之範圍並非由以上所提供的特定範例來決定,而僅由底下的申請專利範圍來決定。於其他例子中,眾所周知的電路、結構、裝置、及操作已被顯示於方塊圖形式及/或無細節地,以避免妨礙對描述之瞭解。在適當情況下,參考數字、或參考數字之末端部已被重複於圖形中以指示相應的或類似的元件,其可選擇性地具有類似的或相同的特性,除非另有指明或清楚明白的。
某些操作可由硬體組件來履行,或者可被實施以機器可執行或電路可執行指令,其可被用以致使及/或導致以指令編程之機器、電路、或硬體組件(例如,處理器、處理器之部分、電路,等等)履行該些操作。該些操作亦可選擇性地由硬體與軟體之組合來履行。處理器、機器、電路、或硬體可包括特定或特殊的電路或其他邏輯(例如,潛在地與韌體及/或軟體結合之硬體),其可操作以執行及/或處理指令並回應於該指令而儲存結果。
某些實施例包括製造物件(例如,電腦程式產品),其包括機器可讀取媒體。媒體可包括一種機制,其係以可由機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供(或於其上儲存)指令或指令序列,其(假如及/或當由機器執行時)可操作以致使機器履行及/或導致機器履行文中所揭露的操作、方法、或技術之一。
於某些實施例中,機器可讀取媒體可包括有形及/或非暫態機器可讀取儲存媒體。例如,非暫態機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除且可編程ROM(EPROM)、電可抹除且可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、相位改變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置,等等。非暫態 機器可讀取儲存媒體不包括暫態傳播信號。於某些實施例中,儲存媒體可包括有形媒體,其包括固態物質或材料,諸如(例如)半導體材料、相位改變材料、磁性固態材料、固態資料儲存材料,等等。替代地,可選擇性地使用非有形暫態電腦可讀取傳輸媒體,諸如(例如)電、光、聲或其他形式的傳播信號-諸如載波、紅外線信號、及數位信號。
適當機器之範例包括(但不限定於)通用處理器、特殊用途處理器、數位邏輯電路、積體電路,等等。適當機器之又其他範例包括電腦系統或其他電子裝置,其包括處理器、數位邏輯電路、或積體電路。此類電腦系統或電子裝置之範例包括(但不限定於)桌上型電腦、膝上型電腦、筆記型電腦、輸入板電腦、小筆電、智慧型手機、行動電話、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MID)、媒體播放器、智慧電視、桌上型易網機、機上盒、及視頻遊戲控制器。
遍及本說明書針對「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」(舉例而言)之參考係指示其特定特徵可被包括於本發明之實施中但並不一定必要。類似地,於說明書中,各個特徵有時被組合在一起於單一實施例、圖形、或其描述中,以供解釋本發明及協助瞭解實施例之各個發明性形態的目的。然而,本發明之方法不應被解讀為反應其本發明需要比各申請專利範圍中所明確記載之更多特徵的企圖。反之,如以下申請專利範圍 所反應者,發明性形態在於比單一所揭露實施例之所有特徵更少的特徵。因此,接續著實施方式之申請專利範圍於此被清楚地併入此實施方式中,以各項申請專利範圍本身可獨立成為本發明之一分離的實施例。
範例實施例
下列範例係有關進一步的實施例。範例中之明確細節可被使用於一或更多實施例中的任何地方。
範例1為一種處理器,其包括於複數不同快取階上之複數快取、及一用以解碼提取指令之解碼單元。該提取指令係用以指示記憶體位置之位址資訊,及該提取指令係用以指示該些複數不同快取階之一快取階。該處理器亦包括快取控制器,其係與該解碼單元耦合、及與該指示快取階上之快取耦合。該快取控制器係回應於該提取指令以將與該記憶體位置關聯的資料儲存於該快取中。該提取指令被架構地保證被完成。
範例2包括範例1之處理器,其中該提取指令將由該處理器所履行為要求載入。
範例3包括範例1之處理器,其中該提取指令將由該處理器所履行以如載入指令之相同優先權,該載入指令將被用以從記憶體位置載入資料至該處理器之架構暫存器。
範例4包括範例1之處理器,其中該解碼單元亦用以解碼預提取指令,該預提取指令係用以指示記憶體位置之位址資訊,及其中該預提取指令不被架構地保證被完成。
範例5包括範例1之處理器,其中該處理器係用以完成該提取指令之履行而不將其與該記憶體位置關聯的該資料儲存於該處理器之任何架構暫存器中。
範例6包括範例1至5之任一者的處理器,其中該解碼單元係用以解碼其用以具有快取階指示欄位之該提取指令,該快取階指示欄位係用以具有一用以指示該快取階之值。
範例7包括範例1至5之任一者的處理器,其中該解碼單元係用以解碼其用以指示該快取階為至少第一階(L1)資料快取與L1指令快取之任一者的該提取指令。
範例8包括範例7之處理器,選擇性地其中該解碼單元係用以解碼其用以指示該快取階為至少該L1資料快取、該L1指令快取、第二階(L2)快取、及第三階(L3)快取之任一者的該提取指令。
範例9包括範例1至5的任一者之處理器,其中該解碼單元係用以解碼其用以指示將被儲存於該快取中之資料量的該提取指令。
範例10包括範例9之處理器,其中該提取指令係用以指示其將被儲存於該快取中之該資料量為至少四個不同資料量之任一者。同時,選擇性地其中該些至少四個不同資料量的範圍係從單一快取線至其適於頁內之最大數目快取線。
範例11包括範例9之處理器,其中該解碼單元係用以解碼其用以具有資料量欄位之該提取指令,該資料量欄 位係用以具有一用以指示該資料量之值。
範例12包括範例1至5的任一者之處理器,進一步包括確定單元。同時,選擇性地其中該確定單元係用以確定該提取指令,在與該記憶體位置關聯的該資料已被儲存於該快取中之前。
範例13為一種由處理器所履行之方法,包括於該處理器上接收提取指令。該提取指令係指示記憶體位置之位址資訊,及該提取指令係指示快取階為複數不同快取階之任一者。該方法亦包括(回應於該提取指令)將與記憶體位置關聯的資料儲存在其處於指示快取階上之該處理器的快取中。該提取指令被架構地保證由該處理器所完成。
範例14包括範例13之方法,進一步包括完成該提取指令之履行而不將其與該記憶體位置關聯的該資料儲存於該處理器之任何架構暫存器中。
範例15包括範例13之方法,進一步包括履行該提取指令以如載入指令之相同優先權,該載入指令將被用以從記憶體位置載入資料至該處理器之架構暫存器。
範例16包括範例13之方法,進一步包括履行該提取指令為要求載入。
範例17包括範例13至16的任一者之方法,其中接收包括接收其指示資料量之提取指令。
範例18包括範例17之方法,其中接收包括接收其能夠指示該資料量為至少四個不同資料量之任一者的該提取指令,該些至少四個不同資料量的範圍係從單一快取線至 其適於頁內之最大數目快取線。
範例19包括範例13至16之任一者的方法,其中接收包括接收其能夠指示該快取階為至少第一階(L1)資料快取、L1指令快取、及第二階(L2)快取之任一者的該提取指令。
範例20包括範例13至16之任一者的方法,進一步包括確定該提取指令,在與該記憶體位置關聯的該資料被儲存於該快取中以前。
範例21包括範例13至16之任一者的方法,被履行在當履行即時應用程式於該處理器上時,該處理器為通用中央處理單元(CPU)。
範例22為一種用以處理指令之系統,其包括互連、及一與該互連耦合之處理器。該處理器包括於複數不同快取階上之複數快取。該處理器係用以接收提取指令。該提取指令係用以指示記憶體位置之位址資訊,及用以指示複數不同快取階之一快取階。該處理器係回應於該提取指令以將與該記憶體位置關聯的資料儲存於該指示快取階上之快取中。該提取指令被架構地保證被完成。該系統亦包括與該互連耦合之動態隨機存取記憶體(DRAM)。該DRAM係儲存即時應用程式之指令。該即時應用程式之該些指令包括該提取指令。該即時應用程式之該些指令係用以使用該提取指令來決定性地將該資料儲存至該指示快取階上之該快取。
範例23包括範例23之系統,其中該提取指令係用以 指示資料量。
範例24為一種包括非暫態機器可讀取儲存媒體之製品。該非暫態機器可讀取儲存媒體係儲存提取指令。該提取指令係用以指示記憶體位置之位址資訊,及該提取指令係用以指示快取階為複數不同快取階之任一者。該提取指令(假如由機器所執行的話)係用以致使該機器履行包括以下之操作:將與該記憶體位置關聯的資料儲存在其處於該指示快取階上之該處理器的快取中。該提取指令被架構地保證將由該機器所完成。
範例25包括範例24之製品,其中該非暫態機器可讀取儲存媒體進一步儲存一組指令,該些指令(假如由該機器所執行的話)係致使該機器實施即時演算法。同時,選擇性地其中該組指令包括並使用該提取指令以決定性地儲存該資料至該指示快取階,其中該提取指令係用以指示資料量。
範例26包括範例1至12的任一者之處理器,進一步包括用以預測分支之選擇性分支預測單元、及與該分支預測單元耦合之選擇性指令預提取單元,該指令預提取單元係用以預提取包括該提取指令之指令。該處理器亦可選擇性地包括:與該指令預提取單元耦合之第1階(L1)指令快取、用以儲存資料之選擇性L1資料快取、及用以儲存資料和指令之選擇性第2階(L2)快取,該L1指令快取係用以儲存指令。該處理器亦可選擇性地包括與該解碼單元、該L1指令快取、及該L2快取耦合之指令提取單元, 用以(於某些情況下)從該L1指令快取與該L2快取之一提取該提取指令;並提供該提取指令至該解碼單元。該處理器亦可選擇性地包括:暫存器重新命名單元,用以重新命名暫存器、選擇性排程器,用以排程一或更多已從該提取指令所解碼的操作以供執行、及選擇性確定單元,用以確定該提取指令之執行結果。
範例27包括一種系統單晶片,其包括至少一互連、與該至少一互連耦合之範例1至12的任一者之該處理器、與該至少一互連耦合之選擇性圖形處理單元(GPU)與該至少一互連耦合之選擇性數位信號處理器(DSP)、與該至少一互連耦合之選擇性顯示控制器、與該至少一互連耦合之選擇性記憶體控制器、與該至少一互連耦合之選擇性無線數據機、與該至少一互連耦合之選擇性影像信號處理器、與該至少一互連耦合之選擇性通用串列匯流排(USB)3.0相容的控制器、與該至少一互連耦合之選擇性藍牙4.1相容的控制器、及與該至少一互連耦合之選擇性無線收發器控制器。
範例28為一種可操作以履行範例13至21的任一者之方法的處理器或其他設備。
範例29為一種包括用以履行範例13至21的任一者之方法的機構之處理器或其他設備。
範例30為一種包括用以履行範例13至21的任一者之方法的模組及/或單元及/或邏輯及/或電路及/或機構之任何組合的處理器或其他設備。
範例31為一種選擇性非暫態及/或有形機器可讀取媒體,其係選擇性地儲存或者提供包括第一指令之指令,假如及/或當由處理器、電腦系統、電子裝置、或其他機器所執行時,則該第一指令係操作以致使該機器履行範例13至21的任一者之方法。
範例32為一種實質上如文中所述的處理器或其他設備。
範例33為一種可操作以履行實質上如文中所述的任何方法之處理器或其他設備。
範例34為一種可操作以履行實質上如文中所述的任何提取指令之處理器或其他設備。
範例35為一種電腦系統或其他電子裝置,其包括具有可操作以解碼第一指令集之指令的解碼單元之處理器。該處理器亦具有一或更多執行單元。該電子裝置亦包括與該處理器耦合之儲存裝置。該儲存裝置係操作以儲存第一指令,該第一指令可為實質上如文中所揭露之任何指令,且其係屬於第二不同的指令集。該儲存裝置亦操作以儲存將該第一指令轉換為該第一指令集之一或更多指令的指令。當由該處理器履行時,該第一指令集之該些一或更多指令係操作以致使該處理器載入資料及將該已載入資料儲存為如將由該第一指令所執行者。
100‧‧‧系統
101‧‧‧處理器
102‧‧‧系統記憶體
103-1‧‧‧第一核心
103-N‧‧‧第N核心
104‧‧‧指令集
105‧‧‧載入指令
106‧‧‧提取指令
107‧‧‧預提取指令
108‧‧‧管線組件
109‧‧‧架構暫存器
110‧‧‧資料
111-1‧‧‧L1指令快取
111-N‧‧‧L1指令快取
112-1‧‧‧L1資料快取
112-N‧‧‧L1資料快取
113‧‧‧L2快取
114‧‧‧L3快取
115‧‧‧快取階層
116‧‧‧記憶體控制器
117‧‧‧資料
118‧‧‧終止預提取指令
120‧‧‧資料
121‧‧‧資料

Claims (25)

  1. 一種處理器,包含:於複數不同快取階上之複數快取;解碼單元,用以解碼提取指令,該提取指令係用以指示記憶體位置之位址資訊,及該提取指令係用以指示該些複數不同快取階之一快取階;及快取控制器,其係與該解碼單元、及與該指示快取階上之快取耦合,該快取控制器係回應於該提取指令以將與該記憶體位置關聯的資料儲存於該快取中,其中該提取指令被架構地保證被完成。
  2. 如申請專利範圍第1項之處理器,其中該提取指令將由該處理器所履行為要求載入。
  3. 如申請專利範圍第1項之處理器,其中該提取指令將由該處理器所履行以如載入指令之相同優先權,該載入指令將被用以從記憶體位置載入資料至該處理器之架構暫存器。
  4. 如申請專利範圍第1項之處理器,其中該解碼單元亦用以解碼預提取指令,該預提取指令係用以指示記憶體位置之位址資訊,及其中該預提取指令不被架構地保證被完成。
  5. 如申請專利範圍第1項之處理器,其中該處理器係用以完成該提取指令之履行而不將其與該記憶體位置關聯的該資料儲存於該處理器之任何架構暫存器中。
  6. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以具有快取階指示欄位之該提取指令,該快取階指示欄位係用以具有一用以指示該快取階之值。
  7. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以指示該快取階為至少第一階(L1)資料快取與L1指令快取之任一者的該提取指令。
  8. 如申請專利範圍第7項之處理器,其中該解碼單元係用以解碼其用以指示該快取階為至少該L1資料快取、該L1指令快取、第二階(L2)快取、及第三階(L3)快取之任一者的該提取指令。
  9. 如申請專利範圍第1項之處理器,其中該解碼單元係用以解碼其用以指示將被儲存於該快取中之資料量的該提取指令。
  10. 如申請專利範圍第9項之處理器,其中該提取指令係用以指示其將被儲存於該快取中之該資料量為至少四個不 同資料量之任一者,該些至少四個不同資料量的範圍係從單一快取線至其適於頁內之最大數目快取線。
  11. 如申請專利範圍第9項之處理器,其中該解碼單元係用以解碼其用以具有資料量欄位之該提取指令,該資料量欄位係用以具有一用以指示該資料量之值。
  12. 如申請專利範圍第1項之處理器,進一步包含確定單元,及其中該確定單元係用以確定該提取指令,在與該記憶體位置關聯的該資料已被儲存於該快取中之前。
  13. 一種由處理器所履行之方法,包含:於該處理器上接收提取指令,該提取指令係指示記憶體位置之位址資訊,及該提取指令係指示快取階為複數不同快取階之任一者;及回應於該提取指令以將與該記憶體位置關聯的資料儲存在其處於該指示快取階上之該處理器的快取中,其中該提取指令被架構地保證由該處理器所完成。
  14. 如申請專利範圍第13項之方法,進一步包含完成該提取指令之履行而不將其與該記憶體位置關聯的該資料儲存於該處理器之任何架構暫存器中。
  15. 如申請專利範圍第13項之方法,進一步包含履行該 提取指令以如載入指令之相同優先權,該載入指令被用以從記憶體位置載入資料至該處理器之架構暫存器。
  16. 如申請專利範圍第13項之方法,進一步包含履行該提取指令為要求載入。
  17. 如申請專利範圍第13項之方法,其中接收包含接收其指示資料量之該提取指令。
  18. 如申請專利範圍第17項之方法,其中接收包含接收其能夠指示該資料量為至少四個不同資料量之任一者的該提取指令,該些至少四個不同資料量的範圍係從單一快取線至其適於頁內之最大數目快取線。
  19. 如申請專利範圍第13項之方法,其中接收包含接收其能夠指示該快取階為至少第一階(L1)資料快取、L1指令快取、及第二階(L2)快取之任一者的該提取指令。
  20. 如申請專利範圍第13項之方法,進一步包含確定該提取指令,在與該記憶體位置關聯的該資料被儲存於該快取中之前。
  21. 如申請專利範圍第13項之方法,被履行在當履行即時應用程式於該處理器上時,該處理器為通用中央處理單 元(CPU)。
  22. 一種用以處理指令之系統,包含:互連;與該互連耦合之處理器;該處理器包括於複數不同快取階上之複數快取,該處理器係用以接收提取指令,該提取指令係用以指示記憶體位置之位址資訊,及用以指示複數不同快取階之一快取階,該處理器係回應於該提取指令以將與該記憶體位置關聯的資料儲存於該指示快取階上之快取中,其中該提取指令被架構地保證被完成;及與該互連耦合之動態隨機存取記憶體(DRAM),該DRAM係儲存即時應用程式之指令,該即時應用程式之該些指令包括該提取指令,該即時應用程式之該些指令係用以使用該提取指令來決定性地將該資料儲存至該指示快取階上之該快取。
  23. 如申請專利範圍第22之系統,其中該提取指令係用以指示資料量。
  24. 一種包含非暫態機器可讀取儲存媒體之製品,該非暫態機器可讀取儲存媒體係儲存提取指令,該提取指令係用以指示記憶體位置之位址資訊,及該提取指令係用以指示快取階為複數不同快取階之任一者,該提取指令(假如由機器所執行的話)係用以致使該機器履行包含以下之操 作:將與該記憶體位置關聯的資料儲存在其處於該指示快取階上之該處理器的快取中,其中該提取指令被架構地保證由該機器所完成。
  25. 如申請專利範圍第24項之製品,其中該非暫態機器可讀取儲存媒體進一步儲存一組指令,該些指令(假如由該機器所執行的話)係致使該機器實施即時演算法,其中該組指令包括並使用該提取指令以決定性地儲存該資料至該指示快取階,其中該提取指令係用以指示資料量。
TW106106229A 2016-04-01 2017-02-23 提取資料至具保證完成指示快取階之處理器、方法、系統及指令 TW201800948A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/088,327 US20170286118A1 (en) 2016-04-01 2016-04-01 Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US15/088,327 2016-04-01

Publications (1)

Publication Number Publication Date
TW201800948A true TW201800948A (zh) 2018-01-01

Family

ID=59961557

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106106229A TW201800948A (zh) 2016-04-01 2017-02-23 提取資料至具保證完成指示快取階之處理器、方法、系統及指令

Country Status (5)

Country Link
US (1) US20170286118A1 (zh)
CN (1) CN108885586B (zh)
DE (1) DE112017001700T5 (zh)
TW (1) TW201800948A (zh)
WO (1) WO2017172240A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198261B2 (en) * 2016-04-11 2019-02-05 Advanced Micro Devices, Inc. Flexible framework to support memory synchronization operations
US10317888B2 (en) * 2017-03-01 2019-06-11 PLETHORA IloT, S.L. Device and system including multiple devices for supervision and control of machines in industrial installation
CN109669897B (zh) * 2017-10-13 2023-11-17 华为技术有限公司 数据传输方法和装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11586539B2 (en) * 2019-12-13 2023-02-21 Advanced Micro Devices, Inc. Adaptive cache management based on programming model information
WO2021235988A1 (en) * 2020-05-22 2021-11-25 Telefonaktiebolaget Lm Ericsson (Publ) Efficient loading of code portions to a cache
CN111427837B (zh) * 2020-06-11 2020-11-13 杭州万高科技股份有限公司 一种总线设备连接调整的异构多核处理器
US11847055B2 (en) * 2021-06-30 2023-12-19 Advanced Micro Devices, Inc. Approach for reducing side effects of computation offload to memory
US20240078114A1 (en) * 2022-09-07 2024-03-07 Microsoft Technology Licensing, Llc Providing memory prefetch instructions with completion notifications in processor-based devices

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5491811A (en) * 1992-04-20 1996-02-13 International Business Machines Corporation Cache system using mask bits to recorder the sequences for transfers of data through cache to system memory
US7529907B2 (en) * 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US7089368B2 (en) * 2002-02-12 2006-08-08 Ip-First, Llc Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory
US20040044881A1 (en) * 2002-08-28 2004-03-04 Sun Microsystems, Inc. Method and system for early speculative store-load bypass
US6957305B2 (en) * 2002-08-29 2005-10-18 International Business Machines Corporation Data streaming mechanism in a microprocessor
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US8533437B2 (en) * 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
US8595471B2 (en) * 2010-01-22 2013-11-26 Via Technologies, Inc. Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register
US8683129B2 (en) * 2010-10-21 2014-03-25 Oracle International Corporation Using speculative cache requests to reduce cache miss delays
US9442861B2 (en) * 2011-12-20 2016-09-13 Intel Corporation System and method for out-of-order prefetch instructions in an in-order pipeline
CN104011653B (zh) * 2011-12-29 2017-09-15 英特尔公司 打包数据操作掩码比较处理器、方法、系统
US9612972B2 (en) * 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US9251377B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Instructions processors, methods, and systems to process secure hash algorithms
US9465744B2 (en) * 2014-07-29 2016-10-11 International Business Machines Corporation Data prefetch ramp implemenation based on memory utilization

Also Published As

Publication number Publication date
WO2017172240A1 (en) 2017-10-05
US20170286118A1 (en) 2017-10-05
CN108885586A (zh) 2018-11-23
CN108885586B (zh) 2024-02-20
DE112017001700T5 (de) 2018-12-13

Similar Documents

Publication Publication Date Title
US11347680B2 (en) Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
JP6708335B2 (ja) ユーザレベルの分岐及び結合を行うプロセッサ、方法、システム、及び命令
JP6124463B2 (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
US10452551B2 (en) Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
JP6143872B2 (ja) 装置、方法、およびシステム
TW202334810A (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
TW201741872A (zh) 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統
TWI465920B (zh) 結構存取處理器、方法、系統及指令
TWI515653B (zh) 指令順序執行之指令對、處理器、方法及系統
WO2017105716A1 (en) Instructions and logic for even and odd vector get operations
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US9880839B2 (en) Instruction that performs a scatter write
TW201734766A (zh) 使用處理器指令前綴的二進制轉譯支援
US20220197803A1 (en) System, apparatus and method for providing a placeholder state in a cache memory
US20160378497A1 (en) Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding