TWI494852B - 維持與處理器內之屏障相關之指令的次序之方法及處理器 - Google Patents
維持與處理器內之屏障相關之指令的次序之方法及處理器 Download PDFInfo
- Publication number
- TWI494852B TWI494852B TW102135189A TW102135189A TWI494852B TW I494852 B TWI494852 B TW I494852B TW 102135189 A TW102135189 A TW 102135189A TW 102135189 A TW102135189 A TW 102135189A TW I494852 B TWI494852 B TW I494852B
- Authority
- TW
- Taiwan
- Prior art keywords
- color
- barrier
- processor
- instruction
- theoretical
- Prior art date
Links
- 230000004888 barrier function Effects 0.000 title claims description 117
- 238000000034 method Methods 0.000 title claims description 24
- 238000003860 storage Methods 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims 1
- 238000013507 mapping Methods 0.000 description 29
- 238000010586 diagram Methods 0.000 description 13
- 239000003086 colorant Substances 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000009977 dual effect Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000003550 marker Substances 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 235000012431 wafers Nutrition 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
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)
Description
本發明大體上係關於處理器,且特定而言,係關於用於維持與處理器內之屏障相關之指令的次序的方法及機制。
在現代處理器中,可無序地執行指令。此情況可改良處理器效能,但其亦可導致非意欲之行為。舉例而言,程式員可能意欲具體順序之指令有序地執行,且若處理器重新排序此等指令,則結果,可發生非想要之錯誤。因此,為避免此等錯誤,可將屏障命令插入程式碼,以強制指令次序。屏障具有性質,使得屏障控制之指令不會關於屏障重新排序。因此,可將屏障插入指令串流,以防止在其他指令之前執行一些指令。
一些處理器包括多個獨立保留站,以用於發佈待執行之操作。強制自多個保留站所發佈之操作的次序可係困難的。換言之,保持追蹤哪些操作在屏障之前,及哪些操作在屏障之後可係有挑戰性的,尤其在屏障位於第二保留站中時,對於第一保留站中之操作。
揭示用於強制屏障附近中之指令的一次序之裝置、處理器及方法。在一無序處理器中,可利用屏障以強制一連串指令之執行的一次序。當在程式碼流中遇到一屏障時,在由該處理器執行該程式碼期間,該屏障可對允許穿過及不允許穿過其之內容進行限制。對於記憶
體屏障或同步屏障,由該處理器執行此等屏障,及由一載入/儲存單元將其視為一屏障。此屏障可針對後續指令產生一不可見之壁,且可不允許此等後續指令穿過該屏障。
在一實施例中,一種處理器可包括用於載入及儲存之多個保留站,且可將指令操作排入該等保留站及自該等保留站無序地發佈該等指令操作。可在指令管線之前端處維持一理論式色彩,及在調度之前,在該等指令有序時,可用該理論式色彩標記該等指令。當在該指令管線之該前端處遇到一屏障時,改變該理論式色彩,且用該經更新之理論式色彩標記後續指令。接著,可將該屏障調度至該等保留站中之一者,且可將後續指令操作調度至該等保留站中之任一者。每當遇到一屏障時,可更新該理論式色彩,此情況允許在該指令管線中進行多個屏障。
當一載入操作或儲存操作在L1快取記憶體中未命中時,可將該操作輸送至核心介面單元(CIF)。該CIF可維持一架構式色彩,且當一屏障淘汰時,可更新此架構式色彩。當將一操作選擇為由該CIF輸送至L2快取記憶體時,該CIF可將該操作之該理論式色彩標記與該架構式色彩進行比較。若該等色彩匹配,則可允許該操作繼續進行至該L2快取記憶體。若該等色彩並不匹配,則可停頓該操作。稍後,當該屏障淘汰時,可重新開始該等經停頓之操作,及允許其存取該L2快取記憶體。以此方式,可維持關於一或多個進行中之屏障的正確之指令操作次序。
鑒於以下對本文中所呈現之方式的詳細描述,對於一般熟習此項技術者而言,此等及其他特徵及優勢將變得顯而易見。
10‧‧‧積體電路(IC)
12‧‧‧處理器複合體
14‧‧‧中央處理單元(CPU)
16‧‧‧中央處理單元(CPU)
18‧‧‧二階(L2)快取記憶體
20‧‧‧匯流排介面單元(BIU)
22‧‧‧記憶體控制器
24‧‧‧記憶體實體介面電路(PHY)
26‧‧‧記憶體實體介面電路(PHY)
30‧‧‧核心
32‧‧‧提取及解碼(FED)單元
34‧‧‧一階(L1)指令快取記憶體
36‧‧‧映射及調度單元
38‧‧‧重新排序緩衝器(ROB)
40‧‧‧理論式色彩
42‧‧‧記憶體管理單元(MMU)
44‧‧‧核心介面單元(CIF)
46‧‧‧請求佇列
48‧‧‧架構式色彩
52‧‧‧執行單元
54‧‧‧保留站
56‧‧‧載入/儲存單元(LSU)
58‧‧‧L1資料快取記憶體
60‧‧‧保留站
62‧‧‧保留站
64‧‧‧載入佇列
66‧‧‧儲存佇列
80‧‧‧程式序列
82‧‧‧操作
84‧‧‧載入操作
86‧‧‧屏障操作
88‧‧‧操作
90‧‧‧儲存操作
92‧‧‧屏障操作
94‧‧‧操作
96‧‧‧儲存操作
98‧‧‧提取及解碼(FED)單元
100‧‧‧映射/調度單元
102‧‧‧重新排序緩衝器
104‧‧‧理論式色彩
110‧‧‧載入儲存單元(LSU)
112‧‧‧保留站
114‧‧‧保留站
116‧‧‧載入佇列
118‧‧‧儲存佇列
119‧‧‧L1資料快取記憶體
120‧‧‧執行單元
122‧‧‧保留站
130‧‧‧核心介面單元(CIF)
132‧‧‧請求佇列
134‧‧‧架構式色彩
138‧‧‧選擇器
140‧‧‧用於利用色彩方案以在屏障周圍維持指令之次序的方法
160‧‧‧系統
162‧‧‧外部記憶體
164‧‧‧周邊器件
166‧‧‧電源供應器
170‧‧‧桌上型電腦
180‧‧‧膝上型電腦
190‧‧‧平板電腦
200‧‧‧蜂巢式電話
210‧‧‧電視
220‧‧‧電腦可讀媒體
藉由結合隨附圖式參照以下描述,可更好地理解該等方法及機制的以上及另外優勢,其中:圖1說明積體電路之一部分的一實施例。
圖2為說明處理器核心之一實施例的方塊圖。
圖3說明程式序列之一部分的一實施例。
圖4說明經調度之程式序列的一實施例。
圖5為說明核心介面單元之一實施例的方塊圖。
圖6為說明後續時脈循環中之核心介面單元的另一實施例之方塊圖。
圖7為說明用於利用色彩方案以在屏障周圍維持指令之次序的方法之一實施例的一般化流程圖。
圖8為系統之一實施例的方塊圖。
圖9為電腦可讀媒體之一實施例的方塊圖。
在以下描述中,闡述眾多具體細節以提供本文中所呈現之方法及機制的全面理解。然而,一般熟習此項技術者應認識到亦可無需此等具體細節而實踐各種實施例。在一些情況下,未詳細展示眾所熟知結構、組件、信號、電腦程式指令及技術以避免混淆本文中所描述的方式。應瞭解,為說明之簡單及清楚起見,該等圖中所展示之元件未必係按比例繪製。舉例而言,相對於其他元件,一些元件的尺寸可能經誇大。
本說明書包括對「一實施例」的參考。不同上下文中出現的片語「在一實施例中」未必指代相同實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案所使用,詞「可」係在允許意義(亦即,意謂有可能)而非強制意義(亦即,意謂必須)上使用。類似地,詞「包括」意謂包括但不限於。
術語。以下段落為本發明中(包括附加申請專利範圍)所見之術語提供定義及/或上下文:
「包含」。此術語為開放式術語。如在附加申請專利範圍中使用時,此術語並不排除另外結構或步驟。考慮一請求項,其敍述為:「一種處理器,該處理器包含一調度單元……」此技術方案並不排除處理器包括另外的組件(例如,載入/儲存單元、執行單元)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或多個任務。在此等上下文中,「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行該一或多個任務之結構(例如,電路)而暗示結構。因而,即使當單元/電路/組件並非同時操作(例如,並未同時在作用中)時,仍可稱所指定之單元/電路/組件經組態以執行任務。與「經組態以……」語言一起使用的單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體等。敍述單元/電路/組件「經組態以」執行一或多個任務對於彼單元/電路/組件而言並不明確地意欲援引35 U.S.C.§ 112第六段。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之通用處理器)操縱以便以能夠執行相關任務之方式操作的一般結構(例如,一般電路)。「經組態以」亦可包括調適製造程序(例如,半導體製造設備)以製造適於實施或執行一或多個任務的器件(例如,積體電路)。
「基於」。如本文中所使用,此術語用以描述影響判定之一或多個因素。此術語並不排除可影響判定之另外因素。亦即,判定可僅僅基於彼等因素或至少部分地基於彼等因素。考慮片語「基於B來判定A」。雖然B可為影響A之判定之一因素,但此片語並不排除A之判定亦係基於C。在其他情況下,可僅僅基於B來判定A。
現參照圖1,展示說明積體電路(IC)之一部分的一實施例的方塊圖。在所說明的實施例中,IC 10包括處理器複合體12、記憶體控制器22及記憶體實體介面電路(PHY)24及26。應注意,IC 10亦可包括圖
1中未展示的許多其他組件。在各種實施例中,IC 10亦可被稱作系統單晶片(SoC)、特殊應用積體電路(ASIC)或裝置。
處理器複合體12可包括中央處理單元(CPU)14及16、二階(L2)快取記憶體18及匯流排介面單元(BIU)20。在其他實施例中,處理器複合體12可包括其他數目個CPU。CPU 14及16亦可被稱作處理器或核心。應注意,處理器複合體12可包括圖1中未展示的其他組件。
CPU 14及16可包括用以執行指令集架構中所定義之指令的電路。具體而言,可由CPU 14及16執行包含指令的一或多個程式。可在各種實施例中實施任何指令集架構。舉例而言,在一實施例中,可實施ARMTM
指令集架構(ISA)。ARM指令集可包括16位元(或Thumb)及32位元指令。其他例示性ISA可包括PowerPCTM
指令集、MIPSTM
指令集、SPARCTM
指令集、x86指令集(亦被稱作IA-32)、IA-64指令集等。
CPU 14及16中之每一者亦可包括一階(L1)快取記憶體(未展示),且每一L1快取記憶體可耦接至L2快取記憶體18。其他實施例可包括另外階之快取記憶體(例如,三階(L3)快取記憶體)。在一實施例中,L2快取記憶體18可經組態以快取指令及資料,以供由CPU 14及16進行低潛時存取。L2快取記憶體18可包含任何能力及組態(例如,直接映射式、集合關聯式)。L2快取記憶體18可經由BIU 20耦接至記憶體控制器22。BIU 20亦可包括各種其他邏輯結構以將CPU 14及16以及L2快取記憶體18耦接至各種其他器件及區塊。
記憶體控制器22可包括任何數目個記憶體埠,且可包括經組態以介接至記憶體之電路。舉例而言,記憶體控制器22可經組態以介接至動態隨機存取記憶體(DRAM),諸如,同步DRAM(SDRAM)、雙資料速率(DDR)SDRAM、DDR2 SDRAM、Rambus DRAM(RDRAM)等。記憶體控制器22亦可耦接至記憶體實體介面電路(PHY)24及26。
記憶體PHY 24及26表示可耦接至記憶體控制器22之任何數目個記憶體PHY。記憶體PHY 24及26可經組態以介接至記憶體器件(未展示)。
IC 10之快取記憶體及記憶體器件可被共同稱作「記憶體子系統」。最接近CPU 14及16之快取記憶體可被稱作較高階之快取記憶體,且最接近記憶體之快取記憶體可被稱作較低階之快取記憶體。在各種實施例中,可執行屏障操作,且該等操作可通過較高階之快取記憶體至較低階之快取記憶體,且接著下降至記憶體。在屏障操作通過記憶體子系統之路徑中的任何點處,歸因於屏障操作之建立,可延遲記憶體存取操作。為確保適當地排序與屏障操作相關之記憶體存取操作,可用理論式色彩標記操作,當偵測到屏障操作時更新該色彩。亦可維持架構式色彩,且當淘汰屏障操作時可更新架構式色彩。若操作之標記色彩匹配架構式色彩,則可允許操作繼續進行至較低階之記憶體。使用色彩方案可保證強制關於屏障操作之指令操作的次序。
應注意,其他實施例可包括組件之其他組合,包括圖1中所展示之組件的子集或超集及/或其他組件。雖然圖1可展示給定組件之一例項,但其他實施例可包括給定組件的兩個或兩個以上例項。類似地,貫穿此詳細描述,即使僅展示一例項,但可包括給定組件之兩個或兩個以上例項,及/或即使展示多個例項,但可使用包括僅一例項的實施例。
現轉向圖2,展示處理器核心之一實施例。核心30為處理器核心之一實例,且核心30可在諸如圖1之處理器複合體12的處理器複合體內利用。在一實施例中,圖1之CPU 14及16中之每一者可包括核心30的組件及功能。核心30可包括提取及解碼(FED)單元32、映射及調度單元36、記憶體管理單元(MMU)42、核心介面單元(CIF)44、執行單元52,及載入儲存單元(LSU)56。應注意,核心30可包括圖2中未展示的其他組件及介面。
FED單元32可包括經組態以讀取來自記憶體的指令且將該等指令置放於一階(L1)指令快取記憶體34中之電路。L1指令快取記憶體34可為用於儲存待由核心30執行之指令的快取記憶體。L1指令快取記憶體34可具有任何能力及構造(例如,直接映射式、集合關聯式、全關聯式等)。此外,L1指令快取記憶體34可具有任何快取行大小。FED單元32亦可包括經組態以預測分支指令及沿著預測出之路徑進行提取的分支預測硬體。亦可重定向FED單元32(例如,經由錯誤預測、異常、中斷、清除等)。
FED單元32可經組態以將指令解碼成指令操作。另外,FED單元32亦可經組態以對多個指令進行並行解碼。大體而言,指令操作可為包括於執行單元52及LSU 56中的硬體能夠執行之操作。每一指令可轉譯成一或多個指令操作,當執行該等指令操作時,其導致根據指令集架構針對彼指令而定義的操作之執行。應注意,術語「操作」、「指令操作」及「uop」貫穿本發明可互換地使用。在其他實施例中,包括於FED單元32內之功能可分裂成兩個或兩個以上單獨單元,諸如,提取單元、解碼單元及/或其他單元。
經解碼之uop可提供至映射/調度單元36。映射/調度單元36可經組態以將uop及架構暫存器映射至核心30之實體暫存器。映射/調度單元36可實施暫存器重新命名以將來自uop之源暫存器位址映射至識別經重新命名之源暫存器的源運算元編號。映射/調度單元36亦可經組態以將uop調度至執行單元52及LSU 56內之保留站。
映射/調度單元36可維持理論式色彩40,且在操作仍有序時,可用理論式色彩40之當前值標記經調度之操作。在偵測到屏障操作之前,理論式色彩40可為與由CIF 44所維持之架構式色彩48相同的值。接著,當偵測到屏障時,理論式色彩40可改變,且可用新的理論式色彩40標記後續操作。可由CIF 44保持所標記之色彩並不匹配架構式色
彩48的任何操作,及防止該等操作繼續進行至L2快取記憶體。當淘汰屏障操作時,可更新架構式色彩48,在此點處,可產生喚醒事件以重新開始等待色彩改變之任何操作。在一些實施例中,映射/調度單元36可針對執行於核心30上之每一執行緒,維持單獨的理論式色彩。在此等實施例中,CIF 44亦可針對每一執行緒維持單獨之架構式色彩,且喚醒事件可指定色彩改變及執行緒ID。
在一實施例中,映射/調度單元36可包括重新排序緩衝器(ROB)38。在其他實施例中,ROB 38可位於其他位置。在被調度之前,可將uop寫入至ROB 38。ROB 38可經組態以保持uop直至其可有序提交。每一uop可指派有對應於ROB 38中之具體項的ROB索引(RNUM)。RNUM可用於追蹤核心30中正在進行之操作。映射/調度單元36亦可包括圖2中未展示的其他組件(例如,映射器陣列、調度單元、調度緩衝器)。此外,在其他實施例中,包括於映射/調度單元36內之功能可分裂成兩個或兩個以上單獨單元,諸如,映射單元、調度單元及/或其他單元。
執行單元52可包括任何數目及類型之執行單元(例如,整數、浮點、向量)。執行單元52中之每一者亦可包括一或多個保留站54。CIF 44可耦接至LSU 56、FED單元32、MMU 42及L2快取記憶體(未展示)。MMU 42可經組態以執行位址轉譯及記憶體管理功能。CIF 44可經組態以管理核心30與L2快取記憶體之間的介面以用於載入、儲存及屏障。CIF 44可經組態以確保在異動之間維持排序。在一實施例中,CIF 44可包括請求佇列46,其用於儲存已在L1指令快取記憶體34或L1資料快取記憶體58中未命中的記憶體存取操作。選擇器(picker)(未展示)可經組態以自請求佇列46選擇,以用於將記憶體存取操作輸送至L2快取記憶體。
LSU 56可包括L1資料快取記憶體58、保留站60及62、載入佇列
64及儲存佇列66。保留站60及62表示LSU 56內的任何數目個保留站。LSU 56亦可經由CIF 44耦接至L2快取記憶體。應注意,LSU 56亦可包括圖2中未展示的其他邏輯。可自映射/調度單元36將載入及儲存操作及屏障操作調度至LSU 56中的保留站60或62中之任一者。直至在LSU 56中完成所有較舊之記憶體存取操作,可將屏障操作自LSU 56發出至CIF 44。又,在將屏障操作發送至CIF 44之前,LSU 56可等待直至屏障操作變成非理論式為止。在ARM ISA中,屏障操作可包括資料記憶體屏障(DMB)及資料同步屏障(DSB)。在其他ISA中,可利用其他類型之屏障操作。取決於針對給定屏障操作所指定的參數,可應用屏障以僅儲存操作、僅載入操作,或儲存及載入操作兩者。
在一實施例中,當在屏障操作之前,將較新之記憶體存取操作自保留站60或62發佈至CIF 44時,較新之記憶體存取操作可彈回至LSU 56。可使此等較新之記憶體存取操作在LSU 56中之載入佇列64抑或儲存佇列66中處於等待狀態。若操作在程式次序上在另一操作之前,則該操作相較於另一操作係較舊的。若操作在程式次序上在另一操作之後,則該操作相較於另一操作係較新的。類似地,可將操作指示為在其他操作之前或之後,或可將其稱為先前操作、前導操作、後續操作等。此等參考可指代操作之程式次序。
記憶體存取操作,或記憶體操作可為某種類型之指令操作。在各種實施例中,可由具有記憶體操作之指令隱含地指定記憶體操作,或可自明顯之載入/儲存指令導出記憶體操作。此外,「載入記憶體操作」或「載入操作」可指代自記憶體或快取記憶體至處理器的資料傳送,及「儲存記憶體操作」或「儲存操作」可指代自處理器至記憶體或快取記憶體的資料傳送。「載入操作」及「儲存操作」在本文中可分別被較簡潔地稱為「載入」及「儲存」。
應理解,圖2中所說明的功能分佈並非可用於處理器核心的唯一
可能微架構。其他處理器核心可包括其他組件、省略所展示之組件中之一或多者及/或包括該等組件中的不同功能配置。
現參照圖3,展示正自FED單元輸送至映射/調度單元的程式序列之一部分的一實施例之方塊圖。FED單元98可經組態以提取指令及將指令解碼成操作。可接著將操作輸送至映射/調度單元100。應注意,FED單元98及映射/調度單元100表示處理器前端之一實例,且在其他實施例中,處理其前端架構可包括單元之不同配置。
圖3中所展示之程式序列80僅出於說明性目的,且其表示較大程式之一部分。程式序列80包括操作82至96。操作82、88及94表示並非記憶體存取操作或屏障操作的任何類型之操作。最終可將此等操作調度至執行單元(未展示)而非載入/儲存單元(未展示)。可由映射/調度單元100將儲存操作90及96、載入操作84及屏障操作86及92調度至載入/儲存單元。屏障操作86及92表示任何類型之屏障操作。舉例而言,在一實施例中,屏障操作86及92中之每一者可為如由ARM ISA所定義之DMB或DSB。在其他實施例中,對於其他ISA,屏障操作86及92可表示其他類型之屏障操作。
在程式序列80之底部展示最早之操作,其中操作82為最早之操作。在程式序列80之頂部展示最新之操作,其中儲存操作96為最新之操作。-在自映射/調度單元100調度之前,程式序列80中之操作可指派有來自理論式色彩104之理論式色彩。亦可在重新排序緩衝器102中識別並保持操作,直至可有序提交該等操作為止。在一實施例中,重新排序緩衝器102亦可包括用於每一操作的理論式色彩標記,而在其他實施例中,重新排序緩衝器102可不包括理論式色彩標記。重新排序緩衝器102亦可包括圖3中未展示的其他欄位之資訊。
在一實施例中,當調度操作時,可由映射/調度單元100用理論式色彩104標記操作。在其他實施例中,可由另一單元維持理論式色彩
104,且可在處理器之前端中的另一位置處用理論式色彩標記操作。大體而言,處理器前端中之任何單元可在操作仍有序之任何點處標記操作。舉例而言,在另一實施例中,FED單元98可維持理論式色彩104,及用理論式色彩104標記操作。接著,可將具有指示理論式色彩104之標記的操作發送至映射/調度單元100。
在圖3中所展示之實施例中,在將程式序列80輸送至映射/調度單元100之前,將理論式色彩104設定為紅色。亦可假設亦在此時間處將架構式色彩(未展示)設定為紅色。在一實施例中,可用三位元之值表示理論式色彩。舉例而言,紅色可指派有「000」之值。當遇到屏障操作時,可將值增加至「001」。當已遇到八個屏障且增加至「111」之值時,該值可變換回「000」。因此,對於三位元之理論式色彩表示,可存在用於支援八個單獨進行中之屏障操作的八個不同色彩。在其他實施例中,其他數目個位元可用以表示色彩標記,此情況可允許支援其他數目個同時進行中之屏障操作。
現轉向圖4,展示經調度之程式序列的一實施例。圖4展示圖3中所展示之實例的繼續,其中正由映射/調度單元100將程式序列80調度至指令管線的下一級。如圖4中所展示,程式序列80已標記有理論式色彩,且正由映射/調度單元100調度至LSU 110及執行單元120中之保留站。
出於論述之目的,將假設在程式序列80之開始處,(圖3之)理論式色彩104為紅色。接著,在偵測到屏障操作86之後,理論式色彩104可改變為橙色。在理論式色彩104改變為橙色之前,屏障操作86可標記有紅色之色彩。接著,當偵測到屏障操作92時,理論式色彩104可自橙色改變為黃色。在其他實施例中,序列之色彩可不同。又,可假設,可由「000」、「001」及「010」表示色彩紅色、橙色及黃色,儘管用於表示色彩之實際位元值在其他實施例中可發生變化。當將色彩
指定為位元值時,改變色彩亦可被場作增加色彩。
操作82及載入操作84可標記有紅色,此係由於其在屏障操作86之前被調度。操作88、載入操作90及屏障操作92可標記有橙色,且操作94及儲存操作96可標記有黃色。可將操作82、88及94調度至執行單元120中之保留站122。應注意,執行單元120表示處理器核心內的任何數目個執行單元,且保留站122表示任何數目個保留站。在另一實施例中,操作82、88及94可未標記有理論式色彩104,此係由於其並非載入或儲存。在此實施例中,僅載入及儲存可標記有理論式色彩104。
可將載入操作84、屏障操作86、儲存操作90、屏障操作92及儲存操作96調度至LSU 110。亦可將此等操作個別地調度至保留站112或114。LSU 110亦可包括載入佇列116、儲存佇列118及L1資料快取記憶體119。應注意,藉由用理論式色彩標記此等操作,可識別關於屏障操作之操作的次序,而不管該等操作所發送至哪個保留站。舉例而言,在一實施例中,可將屏障操作86發送至保留站112,且可將儲存操作90發送至保留站114。儘管儲存操作90相較於屏障操作86為較舊的,但可在自保留站112發佈屏障操作86之前自保留站114發佈儲存操作90。然而,用橙色之理論式色彩標記儲存操作90可防止執行儲存操作90,直至屏障操作86已淘汰且架構式色彩(未展示)自紅色改變為橙色之後為止。
現參照圖5,展示核心介面單元(CIF)之一實施例的方塊圖。圖5中所說明之實例為程式序列80通過處理器管線之路徑的繼續。出於此論述之目的將假設,載入操作84及儲存操作90兩者皆在(圖4之)L1資料快取記憶體119中未命中,且由LSU 110將其輸送至CIF 130。進一步假設,LSU 110亦將屏障操作86輸送至CIF 130。
CIF 130可將載入操作84、儲存操作90及屏障操作86連同其理論
式色彩標記一起排入請求佇列132中。儘管圖5中未展示,但請求佇列132可實施為一個以上之記憶體結構(例如,位址陣列、資料陣列、較舊矩陣)。舉例而言,較舊矩陣可維持由CIF 130所接收且儲存於請求佇列132中之請求的次序。除了自LSU 110接收操作之外,CIF 130亦可自記憶體管理單元(MMU)(未展示)以及提取及解碼單元(未展示)接收請求。
選擇器138可經組態以自請求佇列132選擇操作,及將操作輸送至L2快取記憶體(未展示)。如所展示,選擇器138已選擇載入操作84,且由於載入操作84之色彩(紅色)匹配由CIF 130所維持之架構式色彩134(紅色),因此可允許載入操作84繼續進行至L2快取記憶體。在一實施例中,若載入操作在其標記與架構式色彩134之間具有色彩失配,則可將載入操作發送回至LSU 110。在另一實施例中,若歸因於色彩失配,CIF 130拒絕載入操作,則可將載入操作轉換成預提取請求。預提取請求可導致自L2快取記憶體、較低階之快取記憶體或主記憶體擷取資料,及接著將資料置放於L1資料快取記憶體119中。
一旦已淘汰導致色彩失配之屏障操作,便可重新啟動發送回至LSU 110的任何經拒絕之操作。當已淘汰屏障操作時,接著可更新CIF 130之架構式色彩,且接著可重新開始並可重新執行先前經拒絕之記憶體存取操作。
應注意,在其他實施例中,請求佇列132中之項可包括除了操作及理論式色彩標記之外的一或多個欄位之資料。舉例而言,在一實施例中,請求佇列132中之項可包括L2快取記憶體命令、記憶體屬性及/或識別請求之源的資訊(例如,MMU、LSU、FED)。
現轉向圖6,展示後續時脈循環中之CIF 130的另一實施例的方塊圖。在於先前時脈循環中選擇載入操作84之後(如圖5中所展示),選擇器138可將儲存操作90選擇為待處理之下一行內(next-in-line)操作。
當由選擇器138選擇儲存操作90時,選擇器138可藉由將其理論式色彩標記(橙色)與針對CIF 130所建立之當前架構式色彩(紅色)進行比較而拒絕儲存操作90。在此狀況下,色彩將不匹配,且因此可拒絕儲存操作90,及將其發送回至LSU 110之儲存佇列118。稍後,當淘汰屏障操作86及將架構式色彩134更新為橙色時,可將喚醒事件發送至LSU 110。當LSU 110接收到喚醒事件時,可重新開始並重新執行通過LSU 110之任何停頓之操作。此情況將包括儲存操作90,可喚醒該操作並將其發送回至CIF 130。在此時間處,由於架構式色彩134將已改變為橙色,因此可由選擇器138選擇儲存操作90,及允許該操作繼續進行至L2快取記憶體。應注意,可以與儲存操作90類似之方式處理具有色彩失配之其他記憶體存取操作。
在一些實施例中,取決於所建立的具體類型之屏障操作,可允許某些記憶體存取操作繼續穿過所建立之屏障操作。舉例而言,可僅針對載入操作建立屏障操作,且因此在此狀況下,可僅拒絕後續之載入操作。若儲存操作接著此類型之屏障操作,則將允許儲存操作繼續進行至L2快取記憶體。為處置此等類型之屏障操作,處理器架構可維持理論式載入色彩及架構式載入色彩,以及理論式儲存色彩及架構式儲存色彩。可用理論式載入色彩標記載入,同時可用理論式儲存色彩標記儲存。當偵測到僅應用於載入操作之屏障時,理論式載入色彩可改變,而理論式儲存色彩可保持不變。接著,當淘汰此屏障時,可更新架構式載入色彩。對於應用於載入及儲存兩者之屏障,此等屏障可導致更新理論式載入色彩及理論式儲存色彩兩者。
此外,可利用其他類型之屏障,諸如載入獲得及儲存釋放。載入獲得允許在載入獲得之後發生較舊之記憶體存取操作,但防止在載入獲得之前可見較新之記憶體存取操作。儲存釋放並不允許在儲存釋放之前發生較舊之記憶體存取操作,但允許在儲存釋放之前可見較新
之記憶體存取操作。若遇到載入獲得,則如已描述的,可在映射/調度單元處改變回理論式色彩。然而,若偵測到儲存釋放,則理論式色彩可不改變,且可允許較新之記憶體存取繼續穿過儲存釋放。
現參照圖7,展示用於利用色彩方案以在屏障周圍維持指令之次序的方法140的一實施例。出於論述之目的,此實施例中之步驟以順序次序展示。應注意,在以下所描述方法之各種實施例中,所描述元素中之一或多者可同時地執行,以不同於所展示之次序執行,或可被完全省略。按需要,亦可執行其他另外元素。
可在處理器指令管線之前端處維持理論式色彩(區塊142)。在一實施例中,可由映射/調度單元維持理論式色彩。在其他實施例中,可由指令管線之前端中的另一單元維持理論式色彩(例如,提取單元、解碼單元、載入/儲存單元)。另外,可由處理器指令管線之後端維持架構式色彩(區塊144)。在一實施例中,可由核心介面單元(CIF)維持架構式色彩。在其他實施例中,可由指令管線之後端中的另一單元維持架構式色彩。
可在指令橫越指令管線之前端時,用理論式色彩標記指令(區塊146)。可在指令仍有序時標記指令。在一實施例中,可在由映射/調度單元將指令調度至載入/儲存單元內之保留站之前,用理論式色彩標記指令。在其他實施例中,可在指令管線之前端的另一位置處標記指令。
當在指令串流中偵測到屏障操作時,可改變理論式色彩(區塊148)。可用舊的理論式色彩標記屏障操作,但可用新的理論式色彩標記後續操作。若操作之理論式色彩標記與架構式色彩之間存在色彩失配,則可防止執行標記有新的理論式色彩之任何後續記憶體存取操作(區塊150)。在一實施例中,可停頓具有色彩失配之操作,及防止其繼續進行至較低階之快取記憶體。
最後,將淘汰屏障操作(區塊152)。回應於偵測到淘汰屏障操作,可重新開始經停頓之記憶體存取操作,及允許執行該等操作(區塊154)。在區塊154之後,可結束方法140。雖然將方法140描述為針對單一屏障操作而實施,但應注意,可同時針對任何數目個屏障操作執行方法140。
在各種實施例中,取決於正利用的具體類型之處理器微架構,歸因於色彩失配,防止執行記憶體存取操作之機制可發生變化。在一實施例中,歸因於色彩失配,可由核心介面單元(CIF)拒絕記憶體存取操作。所拒絕之記憶體存取操作可為先前已在L1資料快取記憶體中未命中之儲存或載入。可由CIF拒絕記憶體存取操作及將其彈回至載入/儲存單元。接著,記憶體存取操作可在載入佇列(用於載入)或儲存佇列(用於儲存)中等待,直至發生色彩改變事件為止。當發生色彩改變事件時,可將喚醒事件發送至載入/儲存單元,且可喚醒及重新執行所拒絕之操作。若經重新執行之操作在L1快取記憶體中未命中,且將其輸送至CIF,則此次該操作應能夠繼續進行至L2快取記憶體,此係因為架構式色彩應匹配操作之色彩。在一些狀況下,其中具有多個進行中之屏障,在能夠於至L2快取記憶體之通路上穿過CIF之前,所拒絕之操作可需要等待淘汰一個以上之屏障。
接下來轉向圖8,展示系統160之一實施例的方塊圖。如所展示,系統160可表示桌上型電腦170、膝上型電腦180、平板電腦190、蜂巢式電話200、電視210(或經組態以耦接至電視之機上盒)或其他者之晶片、電路、組件等。在所說明之實施例中,系統160包括耦接至外部記憶體162的(圖2之)IC 10之至少一例項。
IC 10耦接至一或多個周邊器件164及外部記憶體162。亦提供電源供應器166,其將供應電壓供應至IC 10以及將一或多個供應電壓供應至記憶體162及/或周邊器件164。在各種實施例中,電源供應器166
可表示電池(例如,智慧型電話、膝上型電腦或平板電腦中之可再充電電池)。在一些實施例中,可包括IC 10之一個以上例項(且亦可包括一個以上之外部記憶體162)。
記憶體162可為任何類型之記憶體,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM(包括諸如mDDR3等之SDRAM的行動版本及/或諸如LPDDR2等之SDRAM的低功率版本)、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等。一或多個記憶體器件可耦接至電路板上以形成記憶體模組,諸如,單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)等。替代性地,器件可安裝有呈疊層晶片組態、疊層封裝組態或多晶片模組組態的IC 10。
取決於系統160之類型,周邊器件164可包括任何所要電路。舉例而言,在一實施例中,周邊器件164可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等)的器件。周邊器件164亦可包括另外儲存器,包括RAM儲存器、固態儲存器,或磁碟儲存器。周邊器件164可包括使用者介面器件(諸如,顯示螢幕,包括觸控式顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等。
現參照圖9,展示電腦可讀媒體220之方塊圖的一實施例,該電腦可讀媒體包括表示包括於(圖1之)IC 10中之電路的一或多個資料結構。大體而言,電腦可讀媒體220可包括諸如磁性媒體或光學媒體之任何穩定式儲存媒體,例如,磁碟、CD-ROM或DVD-ROM、揮發性或非揮發性記憶體媒體,諸如,RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等,以及可經由傳輸媒體或信號(諸如,電信號、電磁信號或數位信號)存取、經由通信媒體(諸如,網路及/或無線鏈路)輸送之媒體。
大體而言,電腦可讀媒體220上的電路之資料結構可由程式讀取,且直接或間接地用於製造包含電路之硬體。舉例而言,用諸如Verilog或VHDL之高階設計語言(HDL),資料結構可包括硬體功能性之一或多個行為層級描述或暫存器轉移層級(RTL)描述。描述可由可合成該描述以產生一或多個包含來自合成庫之閘清單的接線對照表的合成工具讀取。接線對照表包含亦表示包含電路之硬體的功能的閘之集合。可接著置放及佈線接線對照表以產生描述待應用於遮罩之幾何形狀的一或多個資料集。遮罩可接著在各種半導體製造步驟中使用以產生對應於該電路之一或多個半導體電路。替代性地,按需要,電腦可讀媒體220上的資料結構可為接線對照表(具有或無合成庫)或資料集。在又一替代方案中,資料結構可包含自其衍生之示意程式或接線對照表或資料集之輸出。
雖然電腦可讀媒體220包括IC 10之表示,但其他實施例可包括IC 10(例如,核心介面單元、載入/調度單元)之任何部分或部分的組合之表示。
應強調,以上所描述的實施例僅為實施之非限制性實例。對於熟習此項技術者而言,一旦已完全瞭解了上述揭示內容,眾多變化及修改便將變得顯而易見。希望將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
Claims (20)
- 一種處理器,其經組態以:將指令操作調度至一無序執行管線中;將一理論式色彩值指派給每一經調度之記憶體存取指令操作;回應於偵測到一屏障操作,改變該理論式色彩值;回應於該屏障操作淘汰,改變一架構式色彩值;及若一記憶體存取指令操作具有並不匹配該架構式色彩值之一理論式色彩值,則在該屏障操作淘汰之前,防止執行該記憶體存取指令操作。
- 如請求項1之處理器,其中將記憶體存取指令操作調度至一載入/儲存單元中的多個保留站。
- 如請求項2之處理器,其中該處理器經進一步組態以自該載入/儲存單元中之該等多個保留站無序地發佈記憶體存取指令操作。
- 如請求項1之處理器,其中該處理器經組態以在改變該理論式色彩值之前,將該理論式色彩值指派給該屏障操作。
- 如請求項1之處理器,其中若一給定記憶體存取操作之一理論式色彩值並不匹配該架構式色彩值,則回應於該給定記憶體存取操作在一一階(L1)快取記憶體中未命中,該處理器經組態以防止該給定記憶體存取操作存取一二階(L2)快取記憶體。
- 如請求項1之處理器,其中將該理論式色彩值及該架構式色彩值兩者皆初始化為一相同值。
- 如請求項1之處理器,其進一步包含:一調度單元,其經組態以調度該指令、指派該理論式色彩值及改變該理論式色彩值;及一核心介面單元,其經組態以維持該架構式色彩值、改變該架 構式色彩值及拒絕該指令。
- 如請求項1之處理器,其進一步包含一儲存佇列,其中該屏障操作儲存於該儲存佇列中,直至該屏障操作淘汰為止。
- 如請求項7之處理器,其中該核心介面單元經進一步組態以將所拒絕之儲存指令操作輸送回至該儲存佇列。
- 如請求項9之處理器,其中回應於判定該屏障操作已淘汰,該核心介面單元經組態以將一喚醒事件輸送至該儲存佇列,且其中回應於接收該喚醒事件,該儲存佇列經組態以重新執行所拒絕之儲存指令操作。
- 如請求項1之處理器,其中該屏障操作為一資料記憶體屏障(DMB)或一資料同步屏障(DSB)。
- 一種維持與一處理器內之屏障相關之指令的一次序之方法,其包含:調度具有設定為一理論式色彩之一標記的一第一指令操作,其中該理論式色彩為一第一色彩;回應於偵測到一第一屏障操作,將該理論式色彩自該第一色彩改變至一第二色彩;調度具有設定為該理論式色彩之一標記的一第二指令操作;及回應於偵測到該第二指令操作之該標記並不等於一架構式色彩,防止執行該第二指令操作,其中該架構式色彩為該第一色彩。
- 如請求項12之方法,其進一步包含:回應於偵測到一第二屏障操作,將該理論式色彩自該第二色彩改變至一第三色彩;調度具有設定為該理論式色彩之一標記的一第三指令操作; 及防止執行該第三指令操作,直至該架構式色彩等於該第三色彩為止。
- 如請求項13之方法,其進一步包含:回應於偵測到該第一屏障操作已淘汰,將該架構式色彩改變為該第二色彩;及回應於偵測到該第二屏障操作已淘汰,將該架構式色彩改變為該第三色彩。
- 如請求項14之方法,其中防止執行該第二指令操作包含停頓該第二指令操作,該方法進一步包含回應於偵測到該架構式色彩已改變為該第二色彩,重新開始該第二指令操作。
- 如請求項15之方法,其中防止執行該第三指令操作包含停頓該第三指令操作,該方法進一步包含回應於偵測到該架構式色彩已改變為該第三色彩,重新開始該第三指令操作。
- 如請求項12之方法,其中當標記記憶體存取指令操作時,該等記憶體存取指令操作係有序的。
- 如請求項17之方法,其進一步包含回應於偵測到該屏障操作已淘汰,重新執行給定記憶體存取操作。
- 如請求項17之方法,其進一步包含將該屏障操作調度至一載入/儲存單元中之複數個保留站中的一給定保留站。
- 如請求項19之方法,其進一步包含自該給定保留站發佈該屏障操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/629,471 US9582276B2 (en) | 2012-09-27 | 2012-09-27 | Processor and method for implementing barrier operation using speculative and architectural color values |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201415358A TW201415358A (zh) | 2014-04-16 |
TWI494852B true TWI494852B (zh) | 2015-08-01 |
Family
ID=49326863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102135189A TWI494852B (zh) | 2012-09-27 | 2013-09-27 | 維持與處理器內之屏障相關之指令的次序之方法及處理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9582276B2 (zh) |
TW (1) | TWI494852B (zh) |
WO (1) | WO2014052529A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9348754B2 (en) | 2012-10-11 | 2016-05-24 | Soft Machines Inc. | Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher |
US9424046B2 (en) * | 2012-10-11 | 2016-08-23 | Soft Machines Inc. | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric |
US9335999B2 (en) * | 2013-04-11 | 2016-05-10 | Advanced Micro Devices, Inc. | Allocating store queue entries to store instructions for early store-to-load forwarding |
US20150317158A1 (en) | 2014-04-03 | 2015-11-05 | Applied Micro Circuits Corporation | Implementation of load acquire/store release instructions using load/store operation with dmb operation |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
WO2016097796A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
JP6286065B2 (ja) * | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
WO2016097815A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
JP6286067B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US9645827B2 (en) | 2014-12-14 | 2017-05-09 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
KR101819314B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 오프다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치 |
KR101819315B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
KR101819316B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 |
US10108427B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10083038B2 (en) * | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
CN110795150A (zh) * | 2015-07-21 | 2020-02-14 | 安培计算有限责任公司 | 依dmb操作用加载/存储操作实施加载撷取/存储释放指令 |
US10191748B2 (en) * | 2015-11-30 | 2019-01-29 | Intel IP Corporation | Instruction and logic for in-order handling in an out-of-order processor |
US10747535B1 (en) * | 2016-07-11 | 2020-08-18 | Apple Inc. | Handling non-cacheable loads in a non-coherent processor |
US11409530B2 (en) * | 2018-08-16 | 2022-08-09 | Arm Limited | System, method and apparatus for executing instructions |
US10929144B2 (en) | 2019-02-06 | 2021-02-23 | International Business Machines Corporation | Speculatively releasing store data before store instruction completion in a processor |
US11449339B2 (en) * | 2019-09-27 | 2022-09-20 | Red Hat, Inc. | Memory barrier elision for multi-threaded workloads |
US11249766B1 (en) * | 2020-09-14 | 2022-02-15 | Apple Inc. | Coprocessor synchronizing instruction suppression |
US20220091851A1 (en) * | 2020-09-23 | 2022-03-24 | Intel Corporation | System, Apparatus And Methods For Register Hardening Via A Micro-Operation |
US20220317926A1 (en) * | 2021-03-31 | 2022-10-06 | Advanced Micro Devices, Inc. | Approach for enforcing ordering between memory-centric and core-centric memory operations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100115249A1 (en) * | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Support of a Plurality of Graphic Processing Units |
TW201107974A (en) * | 2009-05-15 | 2011-03-01 | Oracle America Inc | Cache coherent support for flash in a memory hierarchy |
CN102103525A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 控制多个核和线程的时戳计数器(tsc)偏移 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5898882A (en) * | 1993-01-08 | 1999-04-27 | International Business Machines Corporation | Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage |
US5881264A (en) * | 1996-01-31 | 1999-03-09 | Kabushiki Kaisha Toshiba | Memory controller and memory control system |
US5951670A (en) | 1996-09-06 | 1999-09-14 | Intel Corporation | Segment register renaming in an out of order processor |
US5805906A (en) * | 1996-10-15 | 1998-09-08 | International Business Machines Corporation | Method and apparatus for writing information to registers in a data processing system using a number of registers for processing instructions |
US7200737B1 (en) * | 1996-11-13 | 2007-04-03 | Intel Corporation | Processor with a replay system that includes a replay queue for improved throughput |
US6006326A (en) * | 1997-06-25 | 1999-12-21 | Sun Microsystems, Inc. | Apparatus for restraining over-eager load boosting in an out-of-order machine using a memory disambiguation buffer for determining dependencies |
US6625660B1 (en) * | 2000-06-06 | 2003-09-23 | International Business Machines Corporation | Multiprocessor speculation mechanism for efficiently managing multiple barrier operations |
US6880073B2 (en) * | 2000-12-28 | 2005-04-12 | International Business Machines Corporation | Speculative execution of instructions and processes before completion of preceding barrier operations |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
WO2005121948A1 (en) * | 2004-06-02 | 2005-12-22 | Sun Microsystems, Inc. | Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor |
US8671248B2 (en) * | 2007-01-05 | 2014-03-11 | International Business Machines Corporation | Architecture support of memory access coloring |
US8099586B2 (en) * | 2008-12-30 | 2012-01-17 | Oracle America, Inc. | Branch misprediction recovery mechanism for microprocessors |
US8285937B2 (en) * | 2010-02-24 | 2012-10-09 | Apple Inc. | Fused store exclusive/memory barrier operation |
-
2012
- 2012-09-27 US US13/629,471 patent/US9582276B2/en active Active
-
2013
- 2013-09-26 WO PCT/US2013/061827 patent/WO2014052529A1/en active Application Filing
- 2013-09-27 TW TW102135189A patent/TWI494852B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100115249A1 (en) * | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Support of a Plurality of Graphic Processing Units |
TW201107974A (en) * | 2009-05-15 | 2011-03-01 | Oracle America Inc | Cache coherent support for flash in a memory hierarchy |
CN102103525A (zh) * | 2009-12-22 | 2011-06-22 | 英特尔公司 | 控制多个核和线程的时戳计数器(tsc)偏移 |
Also Published As
Publication number | Publication date |
---|---|
TW201415358A (zh) | 2014-04-16 |
WO2014052529A1 (en) | 2014-04-03 |
US9582276B2 (en) | 2017-02-28 |
US20140089589A1 (en) | 2014-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI494852B (zh) | 維持與處理器內之屏障相關之指令的次序之方法及處理器 | |
US9710268B2 (en) | Reducing latency for pointer chasing loads | |
US8856447B2 (en) | Converting memory accesses near barriers into prefetches | |
EP2660716B1 (en) | Load-store dependency predictor content management | |
US11379234B2 (en) | Store-to-load forwarding | |
KR101496009B1 (ko) | 루프 버퍼 패킹 | |
US9448936B2 (en) | Concurrent store and load operations | |
KR101497214B1 (ko) | 루프 버퍼 학습 | |
US10437595B1 (en) | Load/store dependency predictor optimization for replayed loads | |
US20130326198A1 (en) | Load-store dependency predictor pc hashing | |
US9354886B2 (en) | Maintaining the integrity of an execution return address stack | |
US11422821B1 (en) | Age tracking for independent pipelines | |
CN115698942A (zh) | 将原子性与操作大小解耦 | |
US20240184575A1 (en) | Transfer Buffer Between a Scalar Pipeline and Vector Pipeline | |
CN118435168A (zh) | 具有微操作推测性挑选的多周期调度器 |