TWI514156B - 推測式快取修改技術 - Google Patents

推測式快取修改技術 Download PDF

Info

Publication number
TWI514156B
TWI514156B TW101143231A TW101143231A TWI514156B TW I514156 B TWI514156 B TW I514156B TW 101143231 A TW101143231 A TW 101143231A TW 101143231 A TW101143231 A TW 101143231A TW I514156 B TWI514156 B TW I514156B
Authority
TW
Taiwan
Prior art keywords
cache
pipeline
memory
integrated circuit
cache memory
Prior art date
Application number
TW101143231A
Other languages
English (en)
Other versions
TW201337572A (zh
Inventor
Mccormick, Jr
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201337572A publication Critical patent/TW201337572A/zh
Application granted granted Critical
Publication of TWI514156B publication Critical patent/TWI514156B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

推測式快取修改技術 版權聲明
本專利文獻之揭示內容之一部分含有受版權保護之材料。版權所有人在專利文獻或專利揭示內容出現在專利商標局的專利檔案或記錄中時不反對任何人對其之摹真複製,但在其他情況下無論如何都保留所有版權權利。
發明領域
本文所述之主題大體而言係關於運算領域,且更具體而言,係關於用於實行推測式快取修改設計之系統及方法。
發明背景
不應僅僅由於在背景部分中提及在背景部分中所論述之主題而認為該主題係先前技術。類似地,不應假設在背景部分中提及之問題或與背景部分之主題相關聯之問題在先前技術中先前已被認知到。背景部分中之主題僅表示不同方法,該等不同方法本身亦可對應於所請求標的之實施例。
一般而言,更靠近CPU之記憶體可被存取的速度更快。CPU內之記憶體可被稱為快取記憶體,且可能在不同階層等級上係可存取的,諸如1階快取記憶體(L1快取記憶體)及2階快取記憶體(L2快取記憶體)。與主機板耦接之系統記憶體(諸如記憶體模組)可能也是可利用的,與CPU分離 但可由CPU存取之此外部可用記憶體可被稱為例如晶片外快取記憶體或3階快取記憶體(L3快取記憶體)等,然而,此狀況並非總是始終如一,因為第三階層等級之快取記憶體(例如,L3快取記憶體)可為晶片上或「晶粒上」的且因此在CPU內部。
中央處理單元使用CPU快取記憶體(諸如L1快取記憶體)以減少存取記憶體所用之平均時間。L1快取記憶體為較小、較快的記憶體,該記憶體儲存來自最頻繁使用之主記憶體位置之資料的複製。L2快取記憶體可為較大的,但存取速度較慢。且用作快取記憶體之額外記憶體(無論係晶片上或外部可用系統記憶體)與較小且較近的CPU快取記憶體等級相比而言可能更大,但存取速度較慢。只要大多數記憶體存取係高速存取的記憶體位置,則記憶體存取之平均延時將更接近於快取延時,而非更接近於主記憶體之延時。
當處理器需要自主記憶體中之位置讀取或寫入至該位置時,該處理器首先檢查彼資料的複製是否在該處理器之快取記憶體(例如,L1快取記憶體、L2快取記憶體等)中之一者中,且當可用時,該處理器自該快取記憶體讀取或寫入至該快取記憶體,而非自系統之主記憶體尋找該資料,因此所提供的結果比自系統之主記憶體讀取或寫入至主記憶體更快。
習知快取記憶體利用儲存緩衝器來減少快取延時(cache latency)且亦允許讀取尚未寫入至快取記憶體中的 儲存指令。當儲存沿管線進行時,該等儲存將資料儲存於儲存緩衝器中且持續直至該儲存自管線引退為止,此時該儲存將資料寫入至快取記憶體。
對快取延時之改良(例如,快取延時之減少)對於實行電路的運算效率提供直接且立即的益處。較低延時意味例如CPU管線所需要之資料係較快可用,而不必消耗幾個週期來等待不能利用的資料。
然而,習知快取設計表現出不良特性。例如,儲存緩衝器使實行此電路之積體電路上之額外電路複雜性及額外組件成為必需。儲存緩衝器需要在積分電路上為位址比較器、資料緩衝空間、多工(多工器)等分配珍貴的區域,且進一步消耗功率來操作此等裝置。此外,當將資料導引至儲存緩衝器時,在隨後快取記憶體讀取操作能夠「看見」資料並自儲存緩衝器擷取資料之前,可能需要若干週期;且在可自快取記憶體擷取資料之前,需要更進一步的額外週期。因此,若觸發用來將「x」儲存於快取記憶體中之指令且在此之後不久發佈用來自快取記憶體讀取「x」之指令,則必須使該讀取在管線中停滯或重播多個週期,直至資料「x」在儲存緩衝器中變為可用為止,因此引起額外負擔無效率且系統效能並非最佳。
技術現狀可因此受益於如本文所述之用於實行推測式快取修改設計之系統及方法。
依據本發明之一實施例,係特地提出一種積體電 路,其包括:一資料匯流排;一快取記憶體,其與該資料匯流排以可通訊方式介接;一管線,其與該資料匯流排以可通訊方式介接,該管線接收一儲存指令,該儲存指令對應於將要寫入至快取記憶體之一快取列(cache line);高速存取(caching)邏輯,其在該儲存指令自該管線引退之前執行對該快取列至該快取記憶體中的推測式快取寫入;以及快取列驗證邏輯,其判定寫入至該快取記憶體中之該快取列為有效或無效,其中當判定為無效時,該快取列驗證邏輯使推測式地寫入至該快取記憶體中之該快取列無效,且其中當判定該快取列為有效時,允許該儲存指令自該管線引退。
100‧‧‧處理器管線/管線
102‧‧‧擷取級段
104‧‧‧長度解碼級段
106‧‧‧解碼級段
108‧‧‧分配級段
110‧‧‧重新命名級段
112‧‧‧排程級段
114‧‧‧暫存器讀取/記憶體讀取級段
116‧‧‧執行級段
118‧‧‧回寫/記憶體寫入級段
122‧‧‧異常處置級段
124‧‧‧確認級段
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取記憶體單元
136‧‧‧指令轉譯後備緩衝器
138‧‧‧指令擷取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/分配器單元
154‧‧‧引退單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取記憶體單元
176‧‧‧2階快取記憶體單元/L2快取記憶體單元/共享L2快取記憶體單元
190‧‧‧處理器核心/核心
200‧‧‧替代性示範性架構
201、301‧‧‧積體電路
202‧‧‧儲存指令
204‧‧‧快取列
205、405‧‧‧快取記憶體
210‧‧‧管線/執行管線
215、415‧‧‧資料匯流排
225、425‧‧‧高速存取邏輯
235、435‧‧‧快取列驗證邏輯
300‧‧‧另一替代性示範性架構
330‧‧‧索引資訊
330A‧‧‧索引
330B‧‧‧路
340‧‧‧快取列資格邏輯
345‧‧‧埠
352‧‧‧指令重播/重播
354‧‧‧無效
401‧‧‧積體電
410‧‧‧管線
440‧‧‧快取列資格邏輯
465‧‧‧通訊匯流排
470‧‧‧多個周邊裝置
475‧‧‧介面
480‧‧‧顯示單元
495、640、732、734、832、834‧‧‧記憶體
496‧‧‧處理器
499、600、800‧‧‧系統
500‧‧‧方法
505、508、510、515、520、525‧‧‧方塊
507‧‧‧決策點
610、615‧‧‧處理器
620‧‧‧圖形記憶體控制器中樞器/GMCH
645‧‧‧顯示器
650‧‧‧輸入/輸出控制器中樞器/ICH
660‧‧‧外部圖形裝置
670‧‧‧另一周邊裝置
695‧‧‧前端匯流排
700‧‧‧第二系統/多處理器系統
714、814‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點介面
752、754、876、788、886、894、898‧‧‧P-P介面
770、780‧‧‧第一處理器/處理器
772、782‧‧‧整合型記憶體控制器單元/IMC
776‧‧‧點對點介面/點對點介面電路
778‧‧‧點對點介面/P-P介面電路
786‧‧‧P-P介面/點對點介面電路
790、890‧‧‧晶片組
794‧‧‧點對點介面電路
796、896‧‧‧介面
798‧‧‧點對點介面電路
815‧‧‧舊式I/O裝置
850、852、854‧‧‧點對點互連
870、880‧‧‧處理器
872、882‧‧‧整合型記憶體及I/O控制邏輯/CL/控制邏輯
878、888‧‧‧點對點(P-P)介面
901‧‧‧平板運算裝置
902‧‧‧手持式智慧型手機
903‧‧‧觸控螢幕介面
904‧‧‧整合型處理器
1000‧‧‧方塊圖
1010、1215‧‧‧處理器
1020‧‧‧音訊子系統
1030‧‧‧顯示子系統
1032‧‧‧顯示介面
1040‧‧‧I/O控制器
1050‧‧‧功率管理
1060‧‧‧記憶體子系統
1070‧‧‧連接性
1072‧‧‧行動連接性
1074‧‧‧無線連接
1080‧‧‧周邊連接
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存媒體
1140‧‧‧記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製作設施
1205‧‧‧程式
1210‧‧‧仿真邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代性指令集編譯器
1310‧‧‧替代性指令集二進位碼
1312‧‧‧指令轉換器
1314‧‧‧不具有至少一x86指令集核心之處理器
1316‧‧‧具有至少一x86指令集核心之處理器
藉由範例而非限制來說明實施例,且在結合圖式來考慮時,參閱以下詳細描述,將更全面地理解實施例,其中:圖1A 為例示出根據所述實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名、亂序發佈/執行管線;圖1B 為例示出根據所述實施例之如下兩者的方塊圖:循序架構核心之示範性實施例,以及示範性暫存器重新命名、亂序發佈/執行架構核心,上述兩者將包括於處理器中;圖2 例示出替代性示範性架構,實施例可根據該替代性示範性架構來操作;圖3 例示出另一替代性示範性架構,實施例可根據該另一替代性示範性架構來操作;圖4 展示出系統之圖解表示,實施例可根據該系統來操作、安裝、整合或組配;圖5 為例示出根據所述實施例之用於實行推測式快取修改設計之方法的流程圖;圖6 為根據一實施例之電腦系統之方塊圖;圖7 為根據一實施例之電腦系統之方塊圖;圖8 為根據一實施例之電腦系統之方塊圖;圖9 繪示根據實施例所述之平板運算裝置及手持式智慧型手機,其中每一者中整合有電路;圖10 為平板運算裝置、智慧型手機或使用觸控螢幕介面連接器之其他行動裝置之實施例的方塊圖;圖11 為根據一實施例之IP核心開發系統之方塊圖;圖12 例示出根據一實施例之架構仿真系統;以及圖13 例示出根據一實施例之用來轉譯指令之系統。
較佳實施例之詳細說明
本文描述用於實行推測式快取修改設計之系統及方法。例如,在一實施例中,此等構件可包括積體電路,該積體電路具有:資料匯流排;快取記憶體,其與該資料匯流排以可通訊方式介接;管線,其與該資料匯流排以可 通訊方式介接,其中該管線將接收儲存指令,該儲存指令對應於將要寫入至快取記憶體之快取列;高速存取邏輯,其在該儲存指令自該管線引退之前執行對該快取列至該快取記憶體中的推測式快取寫入;以及快取列驗證邏輯,其判定寫入至該快取記憶體中之快取列為有效或無效,其中當判定為無效時,該快取列驗證邏輯將使推測式地寫入至該快取記憶體中之快取列無效,此外,其中當判定該快取列為有效時,允許該儲存指令自管線引退。
在以下描述中,闡述許多特定細節,諸如特定系統、語言、組件等之實例,以提供對各實施例之徹底理解。然而,熟習此項技術者將瞭解,此等特定細節不必用來實踐本文所揭示之實施例。在其他情況下,未詳細描述熟知的材料或方法,以避免不必要地混淆所揭示之實施例。
除圖式中所繪示且本文中所描述的各種硬體組件之外,實施例進一步包括下文詳細描述之各種操作。根據此等實施例所述之操作可由硬體組件來執行,或可體現為機器可執行指令,該等機器可執行指令可用來使由指令規劃之通用處理器或專用處理器執行該等操作。或者,該等操作可由硬體及軟體之組合來執行。
實施例亦涉及用於執行本文所揭示之操作之設備。此設備可針對所需目的而經專門構造,或其可為由儲存在電腦中之電腦程式選擇性地啟動或重新組配之通用電腦。此電腦程式可儲存在電腦可讀儲存媒體中,該電腦可讀儲存媒體諸如而不限於:任何類型之碟片(包括軟碟、光 碟、CD-ROM及磁光碟)、唯讀記憶體(read-only memory;ROM)、隨機存取記憶體(random access memory;RAM)、EPROM、EEPROM、磁卡或光卡,或適合於儲存電子指令之任何類型之媒體,上述各者均與電腦系統匯流排耦接。術語「耦接」可代表直接接觸(以物理方式、以電氣方式、以磁性方式、以光學方式等)之兩個或兩個以上元件,或代表彼此並不直接接觸但仍然彼此協作及/或互動之兩個或兩個以上元件。
本文呈現之演算法及顯示器並非固有地涉及任何特定電腦或其他設備。各種通用系統可與根據本文中之教示之程式一起使用,或可證明構造更專門化的設備來執行所需方法步驟係便利的。各種此等系統之所需結構將在以下描述中闡述時出現。另外,並非參閱任何特定程式設計語言來描述實施例。將瞭解到,各種程式設計語言可用來實行如本文所述之實施例之教示。
所揭示實施例中之任一者可單獨使用或以任何組合來彼此一起使用。儘管各實施例可能部分係受到習知技術及方法(本說明書中描述或提及了其中一些)之缺點的動機驅使,但實施例未必解決此等缺點中之任一者,相反,實施例可僅解決缺點中之一些,不解決任何缺點,或係針對未直接論述之不同缺點及問題。
示範性核心架構
可以不同方式、出於不同目的且在不同處理器中實行處理器核心。例如,此等核心之實行方案可包括:1) 意欲用於通用運算之通用循序核心;2)意欲用於通用運算之高效能通用亂序核心;3)主要意欲用於圖形及/或科學(通量)運算之專用核心。不同處理器之實行方案可包括:1)CPU,其包括意欲用於通用運算之一或多個通用循序核心及/或意欲用於通用運算之一或多個通用亂序核心;以及2)共處理器,其包括主要意欲用於圖形及/或科學(通量)之一或多個專用核心。此等不同處理器導致不同電腦系統架構,該等架構可包括:1)共處理器在與CPU分離之晶片上;2)共處理器與CPU在同一封裝中,但在單獨的晶粒上;3)共處理器與CPU在同一晶粒上(在此情況下,此共處理器有時被稱為專用邏輯,諸如整合型圖形及/或科學(通量)邏輯,或被稱為專用核心);以及4)系統單晶片(system on a chip),其在與所述CPU(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構之描述。
圖1A 為說明根據所述實施例之如下兩者之方塊圖:示範性循序管線,以及示範性暫存器重新命名、亂序發佈/執行管線。圖1B 為說明如下兩者之方塊圖:循序架構核心之示範性實施例,以及示範性暫存器重新命名、亂序發佈/執行架構核心,上述兩者將包括於根據所述實施例之處理器中。圖1A及圖1B 中之實線方框說明循序管線及循序核心,而虛線方框之選擇性增添說明暫存器重新命名、亂序發佈/執行管線及核心。考慮到循序態樣為亂序態樣之子 集,將描述亂序態樣。
圖1A 中,處理器管線100包括擷取級段102、長度解碼級段104、解碼級段106、分配級段108、重新命名級段110、排程(亦稱為分派或發佈)級段112、暫存器讀取/記憶體讀取級段114、執行級段116、回寫/記憶體寫入級段118、異常處置級段122及確認級段124。
圖1B 展示出處理器核心190,其包括耦接至執行引擎單元150之前端單元130,且前端單元130及執行引擎單元150兩者耦接至記憶體單元170。核心190可為精簡指令集運算(reduced instruction set computing;RISC)核心、複雜指令集運算(complex instruction set computing;CISC)核心、極長指令字(very long instruction word;VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心190可為專用核心,諸如,網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(general purpose computing graphics processing unit;GPGPU)核心、圖形核心或類似者。
前端單元130包括耦接至指令快取記憶體單元134之分支預測單元132,指令快取記憶體單元134耦接至指令轉譯後備緩衝器(translation lookaside buffer;TLB)136,指令TLB 136耦接至指令擷取單元138,指令擷取單元138耦接至解碼單元140。解碼單元140(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號,作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。 可使用各種不同機構來實行解碼單元140。適合的機構之實例包括但不限於查找表、硬體實行方案、可規劃邏輯陣列(programmable logic arrays;PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心190包括微碼ROM或其他媒體,該微碼ROM或其他媒體儲存用於某些巨集指令之微碼(例如,在解碼單元140中,或者在前端單元130內)。解碼單元140耦接至執行引擎單元150中之重新命名/分配器單元152。
執行引擎單元150包括重新命名/分配器單元152,重新命名/分配器單元152耦接至引退單元154及一或多個排程器單元156之集合。排程器單元156表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元156耦接至實體暫存器檔案單元158。實體暫存器檔案單元158中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元158包括向量暫存器單元、寫入遮罩暫存器單元及純量暫存器單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及通用暫存器。引退單元154與實體暫存器檔案單元158重疊,以示出可實行暫存器重新命名及亂序執行之各種方式(例如,使用重新排序器緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器 對照表及暫存器集區等。)。引退單元154及實體暫存器檔案單元158耦接至執行叢集160。執行叢集160包括一或多個執行單元162之集合及一或多個記憶體存取單元164之集合。執行單元162可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元156、實體暫存器檔案單元158及執行叢集160係示出為可能係多個,此係因為某些實施例針對某些類型之資料/操作產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線各自具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集--且在單獨的記憶體存取管線之情況下,所實行的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元164)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線為循序發佈/執行。
記憶體存取單元164之集合耦接至記憶體單元170,記憶體單元170包括資料TLB單元172,資料TLB單元172耦接至資料快取記憶體單元174,資料快取記憶體單元174耦接至2階(L2)快取記憶體單元176。在一個示範性實施例中,記憶體存取單元164可包括載入單元、儲存位址單元 及儲存資料單元,上述單元中之每一者耦接至記憶體單元170中之資料TLB單元172。指令快取記憶體單元134進一步耦接至記憶體單元170中之2階(L2)快取記憶體單元176。L2快取記憶體單元176耦接至一或多個其他等級之快取記憶體且最終耦接至主記憶體。
舉例而言,示範性暫存器重新命名、亂序發佈/執行核心架構可將管線100實行如下:1)指令擷取單元138執行擷取級段102及長度解碼級段104;2)解碼單元140執行解碼級段106;3)重新命名/分配器單元152執行分配級段108及重新命名級段110;4)排程器單元156執行排程級段112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取級段114;執行叢集160執行執行級段116;6)記憶體單元170及實體暫存器檔案單元158執行回寫/記憶體寫入級段118;7)異常處置級段122中可涉及各種單元;以及8)引退單元154及實體暫存器檔案單元158執行確認級段124。
核心190可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及選擇性的額外擴展,諸如NEON)),其中包括本文所述之指令。在一實施例中,核心190包括支援緊縮資料指令集擴展(例如,AVX1、AVX2)的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用之操作。
應理解到,該核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理之各執行緒中之每一者提供一邏輯核心)或其組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行之情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所示實施例亦包括單獨的指令及資料快取記憶體單元134/174以及共享的L2快取記憶體單元176,但替代性實施例可具有用於指令及資料兩者之單個內部快取記憶體,諸如,1階(L1)內部快取記憶體或多個等級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
圖2 說明替代性示範性架構200,實施例可根據替代性示範性架構200來操作。特別地,更詳細地繪示且描述積體電路201及其推測式快取寫入能力。
根據一實施例,積體電路201包括:資料匯流排215;快取記憶體205,其與資料匯流排215以可通訊方式介接;以及管線210,其與資料匯流排215以可通訊方式介接,其中管線210將接收對應於快取列204之儲存指令202。在此 實施例中,積體電路201進一步包括高速存取邏輯225,用來在儲存指令202自管線210引退之前執行對快取列204至快取記憶體205中的推測式快取寫入,且積體電路201亦包括快取列驗證邏輯235,用來判定寫入至快取記憶體205中之快取列204為有效或無效,其中當判定為無效時,快取列驗證邏輯235使推測式地寫入至快取記憶體205中之快取列204無效,此外,其中當判定快取列204為有效時,允許儲存指令202自管線210引退。
一旦儲存指令自管線引退,則認為其已得到確認,因為現在判定推測式地寫入至快取記憶體之資訊係正確的,且因此不需要採取進一步動作。在資訊不正確之情況下,肯定性無效操作必須發生,以使快取記憶體中之快取列無效,因為該快取列不具有正確資訊。
在一實施例中,儲存指令指定具有位址之暫存器,且將要寫入至快取記憶體之快取列係基於暫存器中之位址。
在一實施例中,積體電路201在積體電路201之兩個時脈週期期間起動且完成以下兩者:(a)接收對應於快取列204之儲存指令202;以及(b)執行對快取列204至快取記憶體205中之推測式快取寫入。因此,在兩個週期之內,管線210處理儲存指令之接收且完成快取列204至快取記憶體205中之推測式快取寫入。相反地,需要儲存緩衝器之習知機構執行緩衝至儲存緩衝器之儲存指令,且在儲存指令引退(從而觸發儲存緩衝器將資料寫入至快取記憶體)之前要 經歷多個週期,在此時間期間,快取命中(cache hit)無法讀取快取記憶體且因此必須接合複雜的電路來檢查儲存緩衝器內之高速存取資料,因此增加額外負擔及延遲。值得注意的是,所述快取列204未曾經由儲存緩衝器處理,且根據所述實施例,無此類儲存緩衝器存在於積體電路201上來為所述快取記憶體205服務,因此致能快取列204在任何隨後週期之立即可用性。
根據一實施例,管線210進一步接收用來讀取快取記憶體205之讀取指令,且積體電路201在積體電路201之單個時脈週期期間起動且完成以下兩者:(a)接收針對快取列204之讀取指令,及(b)藉由自快取記憶體205讀取快取列204來執行讀取指令。在此實施例中,積體電路201之用來讀取快取列之單個時脈週期接在積體電路201之該兩個時脈週期之後,而積體電路201上沒有任何介入之時脈週期。因此,可藉由在積體電路之僅三個週期中實行積體電路201來完成需要快取記憶體儲存(寫入)操作且立即需要快取記憶體讀取操作之操作。
在一實施例中,快取記憶體205為用於積體電路201之1階快取記憶體(L1快取記憶體),該1階快取記憶體處於最低階層快取記憶體等級。在一實施例中,L1快取記憶體實行單週期延時L1快取記憶體。在一實施例中,L1快取記憶體為用於由積體電路201體現之中央處理單元(Central Processor Unit;CPU)之16 K(千位元組)4路集合關聯式快取記憶體。在一實施例中,快取記憶體205為第一級資料(First Level Data;FLD)快取記憶體以在無補充儲存緩衝器之情況下實行極低延時單週期處理。
根據一實施例,快取列204至快取記憶體205中之推測式快取寫入包括在對應於快取列204之儲存指令202引退之前將快取列204寫入至快取記憶體205中。因為快取列204係在引退之前寫入至快取記憶體205,所以快取列204在寫入時無法判定為有效,因此,該寫入為推測式快取寫入。有可能儲存指令永不引退,且因此已寫入至快取記憶體之快取列將不含有正確資訊。替代地,推測式地寫入之快取列將需要無效以確保資料完整性。此技術因此係一種折衷,係為了經由去除習知所利用之儲存緩衝器來提供總體效能改良以及積體電路201之複雜性、功率及面積的減小。如所述,積體電路201允許儲存指令202在儲存指令202引退之前寫入第一級資料(FLD)快取記憶體,且因為使用單週期第一級資料(FLD)快取記憶體,所以一旦儲存指令推測式地寫入至快取記憶體205,就使寫入資料(例如,快取列204)可供讀取及其他儲存,其中在儲存指令202到達後僅有兩個週期之延時或延遲。為在推測式快取寫入錯誤發生之情況下維持資料完整性,經由快取列驗證邏輯235提供快取記憶體無效機構,以使由儲存指令寫入之任何快取列204無效,該等儲存指令於是未能引退。
根據一實施例,快取列驗證邏輯235判定寫入至快取記憶體205之快取列204為有效或無效包括以下各者中之一者:(1)當儲存指令202自管線引退時,判定快取列204 為有效;(2)當管線210在儲存指令202引退之前被清空時,判定快取列204為無效;(3)當管線210處理針對對應於快取列204之儲存指令202之遲重播(late replay)時,判定快取列204為無效;以及(4)當管線210處理會引起儲存指令202清空的分支誤預測時,判定快取列204為無效。
當中央處理單元(CPU)經由其用來加速執行之分支預測機構誤預測(例如,錯誤猜測)將要處理之下一指令係哪個指令時,分支誤預測發生。在某些程式之執行期間,在幾個執行點處,程式執行流程可以若干方式中之任一者繼續。此等點被稱為分支或條件跳移。CPU使用管線210同時處理若干指令,未必將使用或消耗所有該等指令。當讀取用於條件跳移之程式碼時,CPU尚不確定要執行且插入至執行管線210中之下一指令係哪個指令。
因此,分支預測係用來允許此執行及指令。分支預測機構猜測要執行之下一指令且將下一假定指令插入至管線210。錯誤猜測導致分支誤預測,且根據所述實施例,導致推測式地寫入之快取寫入,此寫入需要隨後進行快取列無效。然後,廢除管線210中在該分支之後的已部分處理之指令,且當偵測到分支誤預測時,管線210在正確分支處重新啟動。此使程式執行減緩,且使推測式地寫入之快取列204無效需要不良額外負擔,此係因為對無效快取列之稍後存取將遺漏(miss)快取記憶體且因此潛在地使管線延遲。然而,因為大多數推測式快取寫入係正確的,所以儘管有偶然的快取列無效,仍實現總體效能增益。
圖3 說明另一替代性示範性架構300,實施例可根據另一替代性示範性架構300來操作。例如,更詳細地繪示積體電路301,其中展示出快取列驗證邏輯235經由快取記憶體205之埠345導致無效354,繪示指令重播352,且另外呈現快取列資格邏輯340,其利用包括索引330A及路330B的索引資訊330。
在一實施例中,快取列驗證邏輯235進一步維持針對經由推測式快取寫入被寫入至快取記憶體205之快取列204的索引資訊330。例如,在一實施例中,索引資訊330維持針對經由推測式快取寫入被寫入至快取記憶體205之每一快取列204之在快取記憶體205上的索引330A及路330B(例如,若干子部分中之哪一者可定址為快取路)。在針對非引退儲存指令之錯誤推測式快取寫入之情況下,此資訊僅為隨後進行的無效所必需的。在(例如)由於清空而必須使推測式地寫入之快取列204無效之情況下,將索引資訊330所提供之定址資訊(例如,330A-B)輸入回至管線210中,且接著應用於致能快取列無效354之埠345,因此導致剛剛寫入且不再適用的所有快取列204簡單無效。
因此,根據一實施例,積體電路301進一步將埠345包括於快取記憶體205中,其中埠345能夠接收快取列204無效354,如所繪示。在一實施例中,快取列驗證邏輯235對快取記憶體205之埠345應用針對已判定為無效的快取列204之索引資訊330,以使快取記憶體205中之快取列204無效。
若使過多的推測式地寫入之快取列204無效,則效能將遭受損害的程度超過使用儲存緩衝器(如在上述習知技術的情況下所使用)時。然而,儲存指令在管線210中足夠遲,以致於觸發錯誤(例如,然後需要無效之不正確地寫入之快取列)之大多數事件為已知,且因此許多此等儲存指令免於優先將其快取列204推測式地寫入至快取記憶體。因此,不需要此隨後快取列無效,且不會使效能降級。替代地,不僅因為不再需要快取列無效,而且另外因為亦取消了至儲存緩衝器的暫時寫入(如所述實施例在沒有此儲存緩衝器的情況下所進行),而實現效能增益。在測試中,已發現未捕捉到相對很少的事件;從而導致不適當的快取寫入,該等不適當的快取寫入需要快取列204之隨後無效。
因此,根據一實施例,積體電路301進一步包括快取列資格邏輯340,用來判定對應於在管線210處接收到之儲存指令202之快取列204將經由推測式快取寫入被寫入至快取記憶體205,或將被取消經由推測式快取寫入被寫入至快取記憶體205的資格。在此實施例中,快取列資格邏輯340將基於以下各者中之一或多者取消快取列204經由推測式快取寫入被寫入至快取記憶體205的資格:(1)在快取列204至快取記憶體205之推測式快取寫入之前發生的儲存指令202之管線210清空;(2)在快取列204至快取記憶體205之推測式快取寫入之前被識別出的分支誤預測;(3)在快取列204至快取記憶體205之推測式快取寫入之前被識別出的管 線210中影響快取列204之指令之重播352;以及(4)斷定儲存指令中斷,使得該儲存指令不在管線中執行。因此,取決於取消資格(disqualification)事件,對應於儲存指令之快取列可被推測式地寫入至快取記憶體或被取消此推測式寫入資格。
快取列資格邏輯340可利用各種資格符(qualifier)及取消資格符(disqualifier)來允許至快取記憶體205中之推測式快取寫入或取消此推測式快取寫入資格。例如,快取列資格邏輯340可具有一系列規則,諸如:(1)若不存在對應儲存指令202,則不寫入;(2)若儲存指令202被判定為無效,則不寫入;(3)若斷定儲存中斷,則不寫入,等等。然後,參考該等資格來判定當前有效的寫入對於當前週期是否存在。當指令沿管線210前進時,使關於此指令是否觸發清空或對該指令之重播是否將發生之愈來愈多資訊可用。積體電路301之電路收集此資訊且將其應用於資格規則,以便更佳地預測快取記憶體無效事件,諸如未來的清空、對誤預測之未來證實、未來的遲重播等。
在一實施例中,實行推測式快取修改設計之積體電路之電路能夠判定何時不需要快取列204至快取記憶體205之推測式寫入,例如由於管線210清空或遲重播。例如,遲重播可使管線210中之所有指令中斷,然後從頭開始重播,此情形必然使至快取記憶體205之所有推測式寫入無效。若管線210清空或遲重播發生,則導致推測式地寫入之快取列204之所有儲存指令202必須隨後需要無效354,以便 對於快取記憶體205回放,以使錯誤快取列204無效354。然而,在許多情況下經由電路可知是否係管線210清空或遲重播的,且因此可利用此知識來經由積體電路301之快取列資格邏輯340完全免於優先至快取記憶體的不必要的大部分推測式快取寫入。若針對儲存指令中之任一者在充分時間內無法獲得此資訊,則由於推測式地寫入眾多快取列且隨後使其無效以及產生會造成浪費的額外負擔及系統降級,可能產生過度額外負擔。
例如,即使遭遇遲重播且快取列資格邏輯340阻止相關儲存指令202推測式地寫入其快取列204,各別指令仍將沿管線210返回且將在彼時推測式地寫入。
根據一實施例,快取列驗證邏輯235允許儲存指令在影響快取列204之後續指令到達管線210之前引退。大多數情況下,在對應於將要寫入至快取記憶體之快取列204之儲存指令與需要或作用於與此快取列204相關聯之資料的任何後續指令之間存在多個週期的延遲,且因此不需要特別動作來確保推測式地寫入之快取列經判定為有效,或在影響該快取列之後續指令到達之前適當地使該快取列無效。
然而,一些特別指令到達的速度可能過快,且因此需要特別注意。因此,在一實施例中,允許儲存指令在影響快取列204之後續指令到達管線210之前引退包括:偵測監聽(snoop),以及作為回應,造成後續指令之重播352。任何監聽可在監聽與快取列無效之間造成潛在的結構性危 害,此係因為監聽及快取列無效兩者利用相同快取記憶體埠,因此產生對於埠之潛在競爭問題。可給予監聽之優先權高於無效,因此需要無效等待。給予無效之優先權又可高於後續指令,且因此重播後續指令,直至無效結束為止。
在一實施例中,快取記憶體205包括用於積體電路301上之第一核心之完全寫入(write through)第一級資料(First Level Data;FLD)快取記憶體,阻止該完全寫入FLD快取記憶體儲存錯資料,且阻止該完全寫入FLD快取記憶體作為針對積體電路301上之其他處理器核心之來源快取記憶體來操作。進一步根據此實施例,積體電路301上之下一等級之快取記憶體作為針對積體電路301上之其他處理器核心之來源快取記憶體來操作。
快取寫入之計時係由所謂的寫入政策來控制,其中有兩種基本寫入方法:完全寫入(write-through)及回寫(write-back)。完全寫入快取政策使得同時對快取記憶體205及下一等級之快取記憶體兩者進行寫入。回寫(或事後寫入(write-behind))快取政策僅對快取記憶體205進行寫入,且修改後的快取記憶體區塊緊接在其被替換之前被回寫至下一等級之快取記憶體。必須將已覆寫之回寫位置標記為針對稍後寫入係錯的,該稍後寫入係對備份下層非快取記憶體儲存進行寫入。此等位置中之資料僅在其自快取記憶體205被驅逐時被回寫至下一等級之快取記憶體,導致通常所謂的惰性寫入(lazy write)。
根據所述實施例,作為完全寫入第一級資料 (FLD)快取記憶體來操作之快取記憶體205永遠無法含有錯資料,此係因為:(1)快取記憶體205同時更新下一等級之快取記憶體,且(2)根據此實施例,完全寫入第一級資料(FLD)快取記憶體將來自其他核心之高速存取請求委派給下一等級之快取記憶體,且因此不存在已推測式地寫入但尚未判定為有效之快取列可被讀取或轉發至另一處理器核心之風險。
圖4 展示出系統499之圖解表示,實施例可根據系統499來操作、安裝、整合或組配。
在一實施例中,系統499包括記憶體495及一或多個處理器496。例如,記憶體495可儲存將要執行之指令,且處理器496可執行此等指令。系統499包括通訊匯流排465,用來在系統499內在多個周邊裝置470之間傳輸交易、指令、請求及資料,該等周邊裝置470與一或多個通訊匯流排465及/或介面475以可通訊方式介接。另外在系統499內繪示了顯示單元480。
系統499內獨特之處為積體電路401,其可被安裝並組配於相容系統499中,或被獨立地製作並設置以便結合系統499之適當組件來操作。
根據一實施例,系統499至少包括顯示單元480及積體電路401。積體電路401可作為例如處理器或作為系統499之另一運算組件來操作。在此實施例中,系統499之積體電路401至少包括:資料匯流排415;快取記憶體405,其與資料匯流排415以可通訊方式介接;管線410,其與資 料匯流排415以可通訊方式介接,其中管線410將接收儲存指令,該儲存指令對應於將要寫入至快取記憶體之快取列;高速存取邏輯425,其在儲存指令自管線410引退之前執行對快取列至快取記憶體405中之推測式快取寫入;以及快取列驗證邏輯435,其判定寫入至快取記憶體405中之快取列為有效或無效,其中當判定推測式地寫入至快取記憶體405中之快取列為無效時,快取列驗證邏輯435將使該快取列無效,此外,其中當判定該快取列為有效時,允許儲存指令自管線410引退。
在一實施例中,系統499體現於平板或智慧型手機,且顯示單元480為用於平板或智慧型手機之觸控螢幕介面。在此實施例中,積體電路401係併入至平板或智慧型手機中,例如,作為處理器或用於平板或智慧型手機之其他運算組件。
在一實施例中,系統499進一步包括快取列資格邏輯440,用來判定對應於在管線410處接收到之儲存指令之快取列將經由推測式快取寫入被寫入至快取記憶體,或將被取消經由推測式快取寫入被寫入至快取記憶體之資格。
圖5 為例示出用於實行根據所述實施例之推測式快取修改設計的方法之流程圖。方法500可由處理邏輯來執行,該處理邏輯可包括硬體(例如,電路、專用邏輯、可規劃邏輯、微碼等)。所呈現之方塊之編號係為了清晰起見,而非意欲規定各方塊必須依該操作次序發生。
方法500始於處理邏輯在管線處接收儲存指令,其中儲存指令對應於將要寫入至快取記憶體之快取列(方塊505)。
在決策點507處,處理邏輯判定是否可取消快取列經由推測式快取寫入被寫入至快取記憶體之資格。若「是」,則處理進行至方塊508,且處理邏輯取消快取列被寫入至快取記憶體之資格。
相反地,若「否」,則不可做出取消資格,然後處理進行至方塊510,且處理邏輯在儲存指令自管線引退之前經由推測式快取寫入將快取列寫入至快取記憶體。
在方塊515處,處理邏輯判定寫入至快取記憶體中之快取列為有效或無效。
在方塊520處,當判定快取列為無效時,處理邏輯使快取記憶體中之快取列無效。
在方塊525處,當判定快取列為有效時,處理邏輯允許儲存指令自管線引退。
現參閱圖6 ,所展示係根據本發明之一實施例之系統600之方塊圖。系統600可包括耦接至圖形記憶體控制器集線器(graphics memory controller hub;GMCH)620的一或多個處理器610、615。圖6中用虛線表示額外處理器615之選擇性本質。
每一處理器610、615可為如上文所述之電路、積體電路、處理器及/或矽積體電路的某一版本。然而,應注意的是,整合型圖形邏輯及整合型記憶體控制單元不太可 能存在於處理器610、615中。圖6說明GMCH 620可耦接至記憶體640,其可為例如動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可與非依電性快取記憶體相關聯。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊且控制介於處理器610、615與記憶體640之間的互動。GMCH 620亦可充當介於處理器610、615與系統600之其他元件之間的加速匯流排介面。對於至少一實施例,GMCH 620經由多分支匯流排(諸如前端匯流排(frontside bus;FSB)695)與處理器610、615通訊。
此外,GMCH 620耦接至顯示器645(諸如平板顯示器或觸控螢幕顯示器)。GMCH 620可包括整合型圖形加速器。GMCH 620進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,其可用來將各種周邊裝置耦接至系統600。例如在圖6之實施例中展示之外部圖形裝置660,外部圖形裝置660可為與另一周邊裝置670一起耦接至ICH 650之離散圖形裝置。
或者,額外或不同的處理器亦可存在於系統600中。例如,額外處理器615可包括:與處理器610相同之額外處理器、與處理器610異質或不對稱之額外處理器、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、場可規劃閘陣列,或任何其他處理器。就優點量度範圍而言,處理器610與615之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性等。此等差異可有效 表現為處理器610、615之間的不對稱性及異質性。對於至少一實施例,各種處理器610、615可存在於相同晶粒封裝中。
現參閱圖7 ,所展示係根據本發明之一實施例之第二系統700的方塊圖。如圖7中所示,多處理器系統700為點對點互連系統,且包括經由點對點介面750耦接的第一處理器770及第二處理器780。處理器770及780中之每一者可為如先前所述的處理器或積體電路之某一版本或如處理器610、615中之一或多者。
雖然僅示出兩個處理器770、780,但應理解,本發明之範疇不限於此。在其他實施例中,一或多個額外處理器可存在於給定處理器中。
處理器770及780係示出為分別包括整合型記憶體控制器單元772及782。處理器770亦包括點對點(P-P)介面776及778,作為其匯流排控制器單元之部分;類似地,第二處理器780包括P-P介面786及788。處理器770、780可使用P-P介面電路778、788經由點對點(P-P)介面750交換資訊。如圖7中所示,IMC 772及782將處理器耦接至各別記憶體,亦即記憶體732及記憶體734,該等記憶體可為局部地附接至各別處理器之主記憶體之部分。
處理器770、780各自可使用點對點介面電路776、794、786、798經由個別P-P介面752、754與晶片組790交換資訊。晶片組790亦可經由高效能圖形介面739與高效能圖形電路738交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連體與處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存於共享快取記憶體中。
晶片組790可經由介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714以及匯流排橋接器718可耦接至第一匯流排716,匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可為低針腳數(low pin count;LPC)匯流排。各種裝置可耦接至第二匯流排720,其中包括例如鍵盤及/或滑鼠722、通訊裝置727及儲存單元728(諸如磁碟機或其他大量儲存裝置),在一實施例中,儲存單元728可包括指令/程式碼及資料730。此外,音訊I/O 724可耦接至第二匯流排720。注意到,其他架構係可能的。例如,代替圖7之點對點架構,系統可實行多分支匯流排或其他此種架構。
現參閱圖8 ,所展示係根據本發明之一實施例之系統800的方塊圖。圖8說明處理器870、880分別可包括整合型記憶體及I/O控制邏輯(「CL」)872及882,且分別經由介於點對點(P-P)介面878與點對點(P-P)介面888之間的點對點互連850彼此通訊。處理器870、880各自經由穿過各別 P-P介面876至894及886至898的點對點互連852及854與晶片組890通訊,如所示。對於至少一實施例,CL 872、882可包括整合型記憶體控制器單元。CL 872、882可包括I/O控制邏輯。如所繪示,記憶體832、834耦接至CL 872、882,且I/O裝置814亦耦接至控制邏輯872、882。舊式I/O裝置815經由介面896耦接至晶片組890。
圖9 繪示根據如實施例所述之平板運算裝置901及手持式智慧型手機902,其中每一者中整合有電路。如所繪示,根據所揭示之實施例,平板運算裝置901及手持式智慧型手機902中之每一者包括觸控螢幕介面903及整合型處理器904。
例如,在一實施例中,系統體現平板運算裝置901或手持式智慧型手機902,其中系統之顯示單元包括用於平板或智慧型手機之觸控螢幕介面903,此外,其中作為整合型處理器來操作之記憶體及積體電路被併入至平板或智慧型手機中,其中整合型處理器實行本文所述之實施例中的一或多者,該等實施例係用於實行推測式快取修改設計。在一實施例中,如上所述之積體電路或平板或智慧型手機之所繪示整合型處理器為整合型矽處理器,其當作用於平板運算裝置或智慧型手機之中央處理單元。
例如,根據一實施例,平板運算裝置包括顯示單元及積體電路;且在此實施例中,積體電路包括:資料匯流排;快取記憶體,其與資料匯流排以可通訊方式介接;管線,其與資料匯流排以可通訊方式介接,其中該管線將 接收儲存指令,該儲存指令對應於將要寫入至快取記憶體之快取列;高速存取邏輯,其在該儲存指令自該管線引退之前執行對該快取列至該快取記憶體中之推測式快取寫入;以及快取列驗證邏輯,其判定寫入至快取記憶體中之快取列為有效或無效,其中當判定推測式地寫入至快取記憶體中之快取列為無效時,該快取列驗證邏輯將使該快取列無效,此外,其中當判定該快取列為有效時,允許該儲存指令自管線引退。
圖10 為平板運算裝置、智慧型手機或使用觸控螢幕介面連接器之其他行動裝置之實施例的方塊圖1000。處理器1010執行主要處理操作。音訊子系統1020表示硬體(例如,音訊硬體及音訊電路)及軟體(例如,驅動器、編解碼器)組件,該等硬體及軟體組件與提供音訊功能給運算裝置相關聯。在一實施例中,使用者藉由提供音訊命令來與平板運算裝置或智慧型手機互動,該等音訊指令由處理器1010接收並處理。
顯示子系統1030表示硬體(例如,顯示器裝置)及軟體(例如,驅動器)組件,該等硬體及軟體組件為使用者提供視覺及/或觸覺顯示器以與平板運算裝置或智慧型手機互動。顯示子系統1030包括顯示介面1032,其包括用來提供顯示給使用者之特定螢幕或硬體裝置。在一實施例中,顯示子系統1030包括觸控螢幕裝置,其提供輸出及輸入兩者給使用者。
I/O控制器1040表示有關於與使用者互動之硬體 裝置及軟體組件。I/O控制器1040可操作以管理硬體,該硬體為音訊子系統1020及/或顯示子系統1030之部分。另外,I/O控制器1040說明用於額外裝置之連接點,該等額外裝置連接至平板運算裝置或智慧型手機,使用者可經由其進行互動。在一實施例中,I/O控制器1040管理各種裝置,諸如加速計、攝影機、光感測器或其他環境感測器,或可包括於平板運算裝置或智慧型手機中之其他硬體。輸入可為直接使用者互動之部分,以及向平板運算裝置或智慧型手機提供環境輸入。
在一實施例中,平板運算裝置或智慧型手機包括功率管理1050,功率管理1050管理電池功率使用、電池之充電以及與功率節省操作有關之特徵。記憶體子系統1060包括用於將資訊儲存於平板運算裝置或智慧型手機中之記憶體裝置。連接性1070包括至平板運算裝置或智慧型手機之硬體裝置(例如,無線及/或有線連接器及通訊硬體)及軟體組件(例如,驅動器、協定堆疊)以與外部裝置通訊。行動式連接性1072可包括,例如:無線載體,諸如全球行動通訊系統(global system for mobile communication;GSM)、分碼多重存取(code division multiple access;CDMA)、分時多工(time division multiplexing;TDM);或其他行動服務標準。無線連接性1074可包括,例如,並非行動式之活動性,諸如個人區域網路(例如,藍牙)、區域網路(例如,WiFi)及/或廣域網路(例如,WiMax),或其他無線通訊。
周邊連接1080包括硬體介面與連接器以及軟體 組件(例如,驅動器、協定堆疊),以製作周邊連接,作為至其他運算裝置之周邊裝置(「至」1082),並且具有連接至平板運算裝置或智慧型手機之周邊裝置(「來自」1084),其中包括例如「對接」連接器,用來與其他運算裝置連接。周邊連接1080包括常見或標準型連接器,諸如通用串列匯流排(Universal Serial Bus;USB)連接器、包括迷你顯示器埠(MiniDisplayPort;MDP)之顯示器埠(DisplayPort)、高清晰度多媒體介面(High Definition Multimedia Interface;HDMI)、火線(Firewire)等。
圖11 展示說明根據一實施例之IP核心之開發的方塊圖。儲存媒體1130包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存媒體1130。由模擬工具及模型產生之IP核心資訊然後可傳輸至製作設施1165,在製作設施1165處IP核心資訊可由第三方製作,以執行根據至少一實施例的至少一指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上被轉譯或仿真。因此可在任何處理器或處理器類型(其中包括ARM、x86、MIPS、GPU或其他處理器類型或架構)上執行根據一實施例的指令。
圖12 說明如何由不同類型之處理器來仿真根據一實施例的第一類型之指令。在圖12中,程式1205含有一 些指令,該等指令可執行與根據一實施例的指令相同或大體上相同之功能。然而,程式1205之指令之類型及/或格式可能與處理器1215不同或不相容,此意味程式1205中之類型之指令可無法由處理器1215原型地執行。然而,藉助於仿真邏輯1210,將程式1205之指令轉譯為能夠由處理器1215原型地執行之指令。在一實施例中,仿真邏輯係體現於硬體中。在另一實施例中,仿真邏輯係體現於有形的機器可讀媒體中,該媒體含有軟體,用來將程式1205中之類型之指令轉譯為可由處理器1215原型地執行之類型。在其他實施例中,仿真邏輯為固定功能或可規劃硬體與儲存於有形的機器可讀媒體上之程式之組合。在一實施例中,處理器含有仿真邏輯,然而在其他實施例中,仿真邏輯存在於處理器外部且由第三方提供。在一實施例中,處理器能夠藉由執行包含於處理器中或與處理器相關聯之微碼或韌體來載入仿真邏輯,該仿真邏輯係體現於含有軟體之有形的機器可讀媒體中。
圖13 為根據本發明之實施例的對比使用軟體指令轉換器將來源指令集中之二進位指令轉換為目標指令集中之二進位指令的方塊圖。在所示實施例中,指令轉換器為軟體指令轉換器,然而或者可將指令轉換器體現於軟體、韌體、硬體或其各種組合中。圖13展示出,可使用x86編譯器1304來編譯用高階語言1302撰寫之程式以產生x86二進位碼1306,x86二進位碼1306可由具有至少一x86指令集核心之處理器1316原型地執行。具有至少一x86指令集核 心之處理器1316表示可執行與具有至少一x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分,或(2)旨在在具有至少一x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以達成與具有至少一x86指令集核心之Intel處理器大體相同的結果。x86編譯器1304表示可操作以產生x86二進位碼1306(例如,目標碼)之編譯器,其中x86二進位碼1306在經額外連結處理或未經額外連結處理的情況下可在於具有至少一x86指令集核心之處理器1316上執行。類似地,圖13展示出,可使用替代性指令集編譯器1308來編譯用高階語言1302撰寫之程式以產生替代性指令集二進位碼1310,替代性指令集二進位碼1310可由不具有至少一x86指令集核心之處理器1314(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)原型地執行。指令轉換器1312用以將x86二進位碼1306轉換為可由不具有至少一x86指令集核心之處理器1314原型地執行之碼。此轉換後的碼不太可能與替代性指令集二進位碼1310相同,此係因為能夠實現此操作之指令轉換器難以製作;然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1312表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行 x86二進位碼1306的軟體、韌體、硬體或其組合。
雖然已藉由實例且根據特定實施例來描述本文揭示之主題,但應理解,所主張實施例不限於所揭示之明確列舉之實施例。相反地,揭示內容意欲涵蓋如熟習此項技術者將瞭解之各種修改及類似配置。因此,隨附申請專利範圍之範疇將應符合最廣泛解釋,以便涵蓋所有此等修改及類似配置。應理解到,以上描述意欲為說明性的,而非限制性的。熟習此項技術者在閱讀並理解以上描述之後將瞭解許多其他實施例。因此應參照隨附申請專利範圍以及此等申請專利範圍有權要求之等效物的完整範疇來判定所揭示主題之範疇。
300‧‧‧另一替代性示範性架構
301‧‧‧積體電路
330‧‧‧索引資訊
330A‧‧‧索引
330B‧‧‧路
202‧‧‧儲存指令
204‧‧‧快取列
205‧‧‧快取記憶體
210‧‧‧管線/執行管線
215‧‧‧資料匯流排
225‧‧‧高速存取邏輯
235‧‧‧快取列驗證邏輯
340‧‧‧快取列資格邏輯
345‧‧‧埠
352‧‧‧指令重播
354‧‧‧無效

Claims (22)

  1. 一種積體電路,其包括:一資料匯流排;一快取記憶體,其與該資料匯流排以可通訊方式介接;一管線,其與該資料匯流排以可通訊方式介接,該管線用以接收一儲存指令,該儲存指令對應於將要寫入至快取記憶體之一快取列;高速存取邏輯電路,用以在該儲存指令自該管線引退之前,執行該快取列至該快取記憶體之一推測式快取寫入;快取列驗證邏輯電路,用以判定寫入至該快取記憶體中之該快取列為有效或無效,其中當判定為無效時,該快取列驗證邏輯電路用以使推測式地寫入至該快取記憶體中之該快取列無效,且其中當判定該快取列為有效時,用以允許該儲存指令自該管線引退;以及快取列資格邏輯電路,用來判定對應於在該管線處接收到之一第二儲存指令之一第二快取列將經由該推測式快取寫入被寫入至該快取記憶體,或被取消經由該推測式快取寫入被寫入至該快取記憶體之資格。
  2. 如申請專利範圍第1項之積體電路,其中該積體電路包括用於一平板運算裝置或一智慧型手機中的一者之一中央處理單元。
  3. 如申請專利範圍第1項之積體電路: 其中對應於將要寫入至快取記憶體之該快取列之該儲存指令包含用來指定具有一位址的一暫存器之儲存指令;及其中將要寫入至快取記憶體之該快取列係基於該暫存器中之該位址。
  4. 如申請專利範圍第1項之積體電路,其中該積體電路在該積體電路之兩個時脈週期期間啟動並完成以下兩者:(a)接收對應於該快取列之該儲存指令;以及(b)執行該快取列至該快取記憶體的該推測式快取寫入。
  5. 如申請專利範圍第4項之積體電路:其中該管線進一步用以接收用來自該快取記憶體讀取該快取列的一讀取指令;其中該積體電路在該積體電路之一單個時脈週期期間啟動並完成以下兩者:(a)接收針對該快取列之該讀取指令,以及(b)藉由自該快取記憶體讀取該快取列來執行該讀取指令;及其中該積體電路之該單個時脈週期接在該積體電路之該兩個時脈週期之後,而該積體電路上沒有任何介入之時脈週期。
  6. 如申請專利範圍第1項之積體電路,其中該快取記憶體包括1階快取記憶體(L1快取記憶體),該1階快取 記憶體處於該積體電路的最低階層快取記憶體等級。
  7. 如申請專利範圍第6項之積體電路,其中該L1快取記憶體包括一單週期延時L1快取記憶體。
  8. 如申請專利範圍第6項之積體電路,其中該L1快取記憶體包括用於由該積體電路體現之一中央處理單元(CPU)的一16K(千位元組)4路集合關聯式快取記憶體。
  9. 如申請專利範圍第1項之積體電路,其中該快取列驗證邏輯電路判定寫入至該快取記憶體中之該快取列為有效或無效包括以下各者中之一者:當該儲存指令自該管線引退時,判定該快取列為有效;當該管線在該儲存指令引退之前被清空時,判定該快取列為無效;當該管線處理針對對應於該快取列之該儲存指令的一遲重播時,判定該快取列為無效;以及當該管線處理會引起該儲存指令之一清空的一分支誤預測時,判定該快取列為無效。
  10. 如申請專利範圍第1項之積體電路,其中該快取列驗證邏輯電路進一步維持針對經由一推測式快取寫入被寫入至該快取記憶體之快取列的索引資訊。
  11. 如申請專利範圍第10項之積體電路,其中該索引資訊維持針對經由一推測式快取寫入被寫入至該快取記憶體之每一快取列的一索引及一路。
  12. 如申請專利範圍第10項之積體電路,其進一步 包括:一埠,其接至該快取記憶體,該埠能夠接收快取列無效;及其中該快取列驗證邏輯電路用以使該快取列無效包括:該快取列驗證邏輯電路對該快取記憶體之該埠應用針對已判定為無效的該快取列之該索引資訊,以使該快取記憶體中之該快取列無效。
  13. 如申請專利範圍第1項之積體電路,其中該快取列資格邏輯電路基於以下各者中之一或多者來取消該第二快取列經由該推測式快取寫入被寫入至該快取記憶體之資格:在該第二快取列至該快取記憶體之該推測式快取寫入之前,管線清空該第二儲存指令;一分支誤預測,其涉及包括該第二儲存指令的一分支;對應於該第二快取列之該第二儲存指令之一重播;以及斷定該第二儲存指令中斷,使得該儲存指令不在該管線中執行。
  14. 如申請專利範圍第1項之積體電路,其中當判定該快取列為有效時該快取列驗證邏輯電路用以允許該儲存指令自該管線引退包括:在影響該快取列之後續指令到達該管線之前引退該快取列。
  15. 如申請專利範圍第14項之積體電路,其中在影 響該快取列之後續指令到達該管線之前引退該快取列包括:偵測該管線中之一監聽,以及作為回應,造成後續指令之一重播。
  16. 如申請專利範圍第1項之積體電路:其中該快取記憶體包括用於該積體電路上之一第一核心之一完全寫入第一級資料(FLD)快取記憶體,阻止該完全寫入FLD資料快取記憶體儲存錯資料,且阻止該完全寫入FLD資料快取記憶體操作為該積體電路上之其他處理器核心之一來源快取記憶體,及其中該積體電路上之下一等級之快取記憶體操作為該積體電路上之其他處理器核心之來源快取記憶體。
  17. 一種系統,其包括:一顯示單元;以及一積體電路,其中該積體電路包括:一資料匯流排,一快取記憶體,其與該資料匯流排以可通訊方式介接;一管線,其與該資料匯流排以可通訊方式介接,該管線接收一儲存指令,該儲存指令對應於將要寫入至快取記憶體之一快取列,高速存取邏輯電路,其在該儲存指令自該管線引退之前,執行該快取列至該快取記憶體之一推測式快取寫入, 快取列驗證邏輯電路,用以判定寫入至該快取記憶體中之該快取列為有效或無效,其中當判定為無效時,該快取列驗證邏輯電路用以使推測式地寫入至該快取記憶體中之該快取列無效,且其中當判定該快取列為有效時,允許該儲存指令自該管線引退,以及快取列資格邏輯電路,用來判定對應於在該管線處接收到之一第二儲存指令之一第二快取列將經由該推測式快取寫入被寫入至該快取記憶體,或被取消經由該推測式快取寫入被寫入至快取記憶體的資格。
  18. 如申請專利範圍第17項之系統:其中該系統體現一平板或一智慧型手機;其中該顯示單元包括該平板或該智慧型手機之一觸控螢幕介面;且其中該積體電路係併入至該平板或智慧型手機中。
  19. 一種平板運算裝置,其包括:一顯示單元;以及一積體電路,其中該積體電路包括:一資料匯流排,一快取記憶體,其與該資料匯流排以可通訊方式介接;一管線,其與該資料匯流排以可通訊方式介接,該管線接收一儲存指令,該儲存指令對應於將要寫入至快取記憶體之一快取列,高速存取邏輯電路,其用以在該儲存指令自該管 線引退之前執行對該快取列至該快取記憶體中之一推測式快取寫入,快取列驗證邏輯電路,其用以判定寫入至該快取記憶體中之該快取列為有效或無效,其中當判定為無效時,該快取列驗證邏輯電路用以使推測式地寫入至該快取記憶體中之該快取列無效,且其中當判定該快取列為有效時,允許該儲存指令自該管線引退;以及快取列資格邏輯電路,用來判定對應於在該管線處接收到之一第二儲存指令之一第二快取列將經由該推測式快取寫入被寫入至該快取記憶體,或被取消經由該推測式快取寫入被寫入至該快取記憶體之資格。
  20. 一種在一積體電路中之方法,該方法包括:在該積體電路之一管線處接收一儲存指令,該儲存指令對應於將要寫入至一快取記憶體之一快取列;在該儲存指令自該管線引退之前,經由一推測式快取寫入將該快取列寫入至該積體電路之該快取記憶體;藉由以下各者之一者,判定推測式地寫入至該快取記憶體中之該快取列為有效或無效:當該儲存指令自該管線引退時,判定該快取列為有效;當該管線在該儲存指令引退之前被清空時,判定該快取列為無效;當該管線處理針對對應於該快取列之該儲存指令的一遲重播時,判定該快取列為無效;以及當該管線處理會引起該儲存指令之一清空的一分支誤 預測時,判定該快取列為無效;當判定該快取列為無效時,使該快取記憶體中之該快取列無效;以及當判定該快取列為有效時,允許該儲存指令自該管線引退。
  21. 如申請專利範圍第20項之方法,其進一步包括:在該積體電路之該管線處接收一第二儲存指令,該第二儲存指令對應於一第二快取列;以及判定該第二快取列將經由該推測式快取寫入被寫入至該快取記憶體,或被取消經由該推測式快取寫入被寫入至該快取記憶體的資格。
  22. 如申請專利範圍第21項之方法,其中判定該第二快取列將被取消資格包括基於以下各者中之一或多者來取消該第二快取列經由該推測式快取寫入被寫入至該快取記憶體的資格:在該第二快取列至該快取記憶體之該推測式快取寫入之前,管線清空該第二儲存指令;一分支誤預測,其引起清空該儲存指令;對應於該第二快取列之該第二儲存指令之一重播;以及斷定該第二儲存指令中斷,使得該儲存指令不在該管線中執行。
TW101143231A 2011-12-22 2012-11-20 推測式快取修改技術 TWI514156B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066846 WO2013095508A1 (en) 2011-12-22 2011-12-22 Speculative cache modification

Publications (2)

Publication Number Publication Date
TW201337572A TW201337572A (zh) 2013-09-16
TWI514156B true TWI514156B (zh) 2015-12-21

Family

ID=48669149

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101143231A TWI514156B (zh) 2011-12-22 2012-11-20 推測式快取修改技術

Country Status (3)

Country Link
US (1) US9092346B2 (zh)
TW (1) TWI514156B (zh)
WO (1) WO2013095508A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI682357B (zh) * 2017-04-28 2020-01-11 美商英特爾股份有限公司 用於低精度機器學習運算之計算最佳化

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10261909B2 (en) * 2011-12-22 2019-04-16 Intel Corporation Speculative cache modification
US9720827B2 (en) * 2014-11-14 2017-08-01 Intel Corporation Providing multiple memory modes for a processor including internal memory
US10089259B2 (en) * 2015-07-21 2018-10-02 BigStream Solutions, Inc. Precise, efficient, and transparent transfer of execution between an auto-generated in-line accelerator and processor(s)
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10198263B2 (en) * 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10061584B2 (en) * 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US10031756B2 (en) * 2015-09-19 2018-07-24 Microsoft Technology Licensing, Llc Multi-nullification
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US11947456B2 (en) * 2021-09-30 2024-04-02 Advanced Micro Devices, Inc. Weak cache line invalidation requests for speculatively executing instructions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050154834A1 (en) * 2004-01-13 2005-07-14 Steely Simon C.Jr. Cache systems and methods for employing speculative fills
US20060020757A1 (en) * 2004-06-22 2006-01-26 Shailender Chaudhry Selectively performing fetches for store operations during speculative execution
TW200842703A (en) * 2007-02-28 2008-11-01 Advanced Micro Devices Inc Branch predictor directed prefetch

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553473B1 (en) * 2000-03-30 2003-04-22 Ip-First, Llc Byte-wise tracking on write allocate
US7657880B2 (en) * 2003-01-31 2010-02-02 Intel Corporation Safe store for speculative helper threads
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US7444498B2 (en) * 2004-12-17 2008-10-28 International Business Machines Corporation Load lookahead prefetch for microprocessors
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
US7840874B2 (en) 2006-12-27 2010-11-23 Mips Technologies, Inc. Speculative cache tag evaluation
US8255626B2 (en) * 2009-12-09 2012-08-28 International Business Machines Corporation Atomic commit predicated on consistency of watches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050154834A1 (en) * 2004-01-13 2005-07-14 Steely Simon C.Jr. Cache systems and methods for employing speculative fills
US20060020757A1 (en) * 2004-06-22 2006-01-26 Shailender Chaudhry Selectively performing fetches for store operations during speculative execution
TW200842703A (en) * 2007-02-28 2008-11-01 Advanced Micro Devices Inc Branch predictor directed prefetch

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI682357B (zh) * 2017-04-28 2020-01-11 美商英特爾股份有限公司 用於低精度機器學習運算之計算最佳化
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10853906B2 (en) 2017-04-28 2020-12-01 Intel Corporation Compute optimizations for low precision machine learning operations
US11138686B2 (en) 2017-04-28 2021-10-05 Intel Corporation Compute optimizations for low precision machine learning operations
US11468541B2 (en) 2017-04-28 2022-10-11 Intel Corporation Compute optimizations for low precision machine learning operations
US11948224B2 (en) 2017-04-28 2024-04-02 Intel Corporation Compute optimizations for low precision machine learning operations

Also Published As

Publication number Publication date
US9092346B2 (en) 2015-07-28
TW201337572A (zh) 2013-09-16
WO2013095508A1 (en) 2013-06-27
US20130254486A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
TWI514156B (zh) 推測式快取修改技術
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US9128781B2 (en) Processor with memory race recorder to record thread interleavings in multi-threaded software
EP3547146B1 (en) System, method, and apparatus for detecting repetitive data accesses and automatically loading data into local cache
KR101493017B1 (ko) 계층적 마이크로코드 저장소를 구비한 복수 코어 프로세서
CN103620555B (zh) 抑制不正确的推测性执行路径上的控制转移指令
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US9471494B2 (en) Method and apparatus for cache line write back operation
JP3285644B2 (ja) キャッシュメモリを有するデータプロセッサ
US9361233B2 (en) Method and apparatus for shared line unified cache
TWI712952B (zh) 持續確定處理器、方法、系統及指令
TWI465908B (zh) 用於在階層式快取設計之快取記憶體間有效通訊的方法及設備
US20200104259A1 (en) System, method, and apparatus for snapshot prefetching to improve performance of snapshot operations
TW201528132A (zh) 用以實施監測寫入至一位址的指令之可縮放機構
US10970077B2 (en) Processor with multiple load queues including a queue to manage ordering and a queue to manage replay
WO2013192057A1 (en) Cache sector dirty bits
Jamshidi et al. D2MA: Accelerating coarse-grained data transfer for GPUs
TWI469047B (zh) 使用儲存預先擷取來消減久存潛時之方法和裝置
US10261909B2 (en) Speculative cache modification
JP6227151B2 (ja) アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
Zhang URSIM reference manual
US12019553B2 (en) System, apparatus and method for prefetching physical pages in a processor
WO2018001528A1 (en) Apparatus and methods to manage memory side cache eviction
CA2366348A1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
JP2007114890A (ja) 演算処理装置およびキャッシュ動作方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees