TWI742048B - 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 - Google Patents
根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 Download PDFInfo
- Publication number
- TWI742048B TWI742048B TW106106537A TW106106537A TWI742048B TW I742048 B TWI742048 B TW I742048B TW 106106537 A TW106106537 A TW 106106537A TW 106106537 A TW106106537 A TW 106106537A TW I742048 B TWI742048 B TW I742048B
- Authority
- TW
- Taiwan
- Prior art keywords
- load
- buffer
- memory access
- item
- storage
- Prior art date
Links
- 239000000872 buffer Substances 0.000 title claims abstract description 263
- 238000000034 method Methods 0.000 title claims abstract description 103
- 230000015654 memory Effects 0.000 claims abstract description 395
- 238000003860 storage Methods 0.000 claims description 180
- 239000012536 storage buffer Substances 0.000 claims description 146
- 238000012163 sequencing technique Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 38
- 238000012545 processing Methods 0.000 description 22
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000007667 floating Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000004907 flux Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000011232 storage material Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- -1 for example Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000011343 solid material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Images
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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching 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)
- Advance Control (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
某一方面的處理器包括解碼單元,以解碼第一型記憶體存取指令並且輸出對應的記憶體存取作業,以及解碼第二型記憶體存取指令並且輸出對應的記憶體存取作業。處理器也包括負載儲存佇列,其耦合於解碼單元。負載儲存佇列包括是要具有多個負載緩衝器項的負載緩衝器,並且包括是要具有多個儲存緩衝器項的儲存緩衝器。負載儲存佇列也包括緩衝器項配置控制器,其耦合於負載緩衝器並且耦合於儲存緩衝器。緩衝器項配置控制器是要至少部分根據記憶體存取作業是否對應於第一型或第二型記憶體存取指令來配置負載和儲存緩衝器項。也揭示了其他的處理器、方法及系統。
Description
在此所述的具體態樣一般而言關於處理器。尤其,在此所述的具體態樣一般而言關於以處理器來進行記憶體存取指令。
處理器典型而言乃採用於包括記憶體的系統。處理器一般而言具有指令組,其包括指令以存取記憶體中的資料。舉例而言,處理器可以具有一或更多個負載指令,其當進行則使處理器從記憶體載入或讀取資料。處理器也可以具有一或更多個儲存指令,其當進行則使處理器寫入或儲存資料到記憶體。這些指令時常以處理器之記憶體次系統的邏輯來實施。
100‧‧‧指令組
102‧‧‧第一型記憶體存取指令
103‧‧‧負載指令
104‧‧‧儲存指令
105‧‧‧重複負載指令
106‧‧‧收集指令
107‧‧‧散布指令
110‧‧‧第二型記憶體存取指令
111‧‧‧預取指令
112‧‧‧快取線清除指令
113‧‧‧快取線寫回指令
114‧‧‧在快取之間移動快取線的指令
115‧‧‧持續承諾指令
220‧‧‧配置負載和儲存緩衝器項的方法
221~223‧‧‧前述方法的步驟
302‧‧‧第一型記憶體存取指令
310‧‧‧第二型記憶體存取指令
325‧‧‧處理器
326‧‧‧解碼單元
328、330‧‧‧記憶體存取作業
332‧‧‧負載儲存佇列
334‧‧‧緩衝器項配置控制器
335‧‧‧負載緩衝器
336‧‧‧儲存緩衝器
338‧‧‧旁路緩衝器
339‧‧‧配置負載和儲存緩衝器以用於對應於第一型的作業
340‧‧‧配置負載和儲存緩衝器以用於對應於第二型的作業
341‧‧‧配置旁路緩衝器以用於對應於第二型的作業
342‧‧‧直接輸出對應於第二型的作業
428‧‧‧對應於第一型記憶體存取指令的作業
429‧‧‧對應於第一和第二型記憶體存取指令的作業
430‧‧‧對應於第二型記憶體存取指令的作業
432‧‧‧負載儲存佇列
434‧‧‧緩衝器項配置控制器
435‧‧‧負載和儲存緩衝器
438‧‧‧旁路緩衝器
440‧‧‧對應於第二型指令的作業
441‧‧‧負載作業
442‧‧‧作業
480‧‧‧指令類型決定邏輯
481‧‧‧負載和儲存(L/S)緩衝器利用率決定邏輯
482‧‧‧利用率資訊
483‧‧‧暫存器
484‧‧‧可組構的利用率定限
485‧‧‧相依性檢查邏輯
486‧‧‧相依性資訊
487‧‧‧輸出資源檢查邏輯
488‧‧‧調度資源資訊
499‧‧‧作業
546‧‧‧當旁路緩衝器是可用時處理第二型指令之負載作業的方法
547~554‧‧‧步驟
660‧‧‧當旁路緩衝器不可用時處理第二型指令之負載作業的方法
661~666‧‧‧步驟
770‧‧‧處理對應於第二型記憶體存取指令之儲存作業的方法
771~776‧‧‧步驟
800‧‧‧處理器管線
802‧‧‧提取階段
804‧‧‧長度解碼階段
806‧‧‧解碼階段
808‧‧‧配置階段
810‧‧‧更名階段
812‧‧‧排程階段
814‧‧‧暫存器讀取/記憶體讀取階段
816‧‧‧執行階段
818‧‧‧寫回/記憶體寫入階段
822‧‧‧異常操控階段
824‧‧‧承諾階段
830‧‧‧前端單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令翻譯旁看緩衝器
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧更名/配置器單元
854‧‧‧退役單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料翻譯旁看緩衝器單元
874‧‧‧資料快取單元
876‧‧‧第2階快取單元
890‧‧‧處理器核心
900‧‧‧指令解碼器
902‧‧‧互連網路
904‧‧‧第2階快取的局部子集
906、906A‧‧‧第1階快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922A、922B‧‧‧數值轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧算術邏輯單元
1000‧‧‧處理器
1002A~1002N‧‧‧核心
1004A~1004N‧‧‧快取
1006‧‧‧分享的快取單元
1008‧‧‧特用邏輯
1010‧‧‧系統代理
1012‧‧‧互連單元
1014‧‧‧整合式記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110、1115‧‧‧處理器
1120‧‧‧控制器集線器
1140‧‧‧記憶體
1145‧‧‧共同處理器
1150‧‧‧輸入/輸出集線器
1160‧‧‧輸入/輸出裝置
1190‧‧‧圖形記憶體控制器集線器
1195‧‧‧連接
1200‧‧‧多處理器系統
1214‧‧‧輸入/輸出裝置
1215‧‧‧額外的處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋接器
1220‧‧‧第二匯流排
1222‧‧‧鍵盤和/或滑鼠
1224‧‧‧音訊輸入/輸出
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/碼和資料
1232、1234‧‧‧記憶體
1238‧‧‧共同處理器
1239‧‧‧高效能介面
1250‧‧‧點對點互連
1252、1254‧‧‧點對點介面
1270‧‧‧第一處理器
1272、1282‧‧‧整合式記憶體控制器、輸入/輸出控制邏輯
1280‧‧‧第二處理器
1290‧‧‧晶片組
1292、1296‧‧‧介面
1276、1278、1286、1288、1294、1298‧‧‧點對點介面電路
1300‧‧‧系統
1314‧‧‧輸入/輸出裝置
1315‧‧‧舊有的輸入/輸出裝置
1400‧‧‧單晶片系統
1402‧‧‧互連單元
1410‧‧‧應用程式處理器
1420‧‧‧共同處理器
1430‧‧‧靜態隨機存取記憶體單元
1432‧‧‧直接記憶體存取單元
1440‧‧‧顯示單元
1502‧‧‧高階語言程式
1504‧‧‧x86編譯器
1506‧‧‧x86二元碼
1508‧‧‧替代選擇性指令組編譯器
1510‧‧‧替代選擇性指令組二元碼
1512‧‧‧指令轉換器
1514‧‧‧沒有x86指令組核心的處理器
1516‧‧‧具有至少一x86指令組核心的處理器
藉由參見用來示範具體態樣的以下敘述和伴
隨圖式,則可以最能理解本發明。於圖式:
圖1是用於處理器的指令組之範例性具體態樣的方塊圖。
圖2是配置負載和儲存緩衝器項的方法之具體態樣的流程方塊圖。
圖3是處理器之具體態樣的方塊圖,其是可操作以進行第一和第二型記憶體存取指令,並且至少部分根據記憶體存取作業是否對應於第一型或第二型記憶體存取指令來配置項在負載和儲存緩衝器中。
圖4是方塊圖,其示範負載儲存佇列的詳細範例性具體態樣。
圖5是當旁路緩衝器是可用時處理對應第二型記憶體存取指令之負載作業的方法之具體態樣的流程方塊圖。
圖6是當旁路緩衝器是不可用時處理對應第二型記憶體存取指令之負載作業的方法之具體態樣的流程方塊圖。
圖7是處理對應第二型記憶體存取指令之儲存作業的方法之具體態樣的流程方塊圖。
圖8A是方塊圖,其示範有序管線的具體態樣和暫存器更名無序發出/執行管線的具體態樣。
圖8B是處理器核心之具體態樣的方塊圖,其包括耦合到執行引擎單元的前端單元並且此二者皆耦合到記憶體單元。
圖9A是單一處理器核心之具體態樣的方塊圖,連同它對於晶粒上之互連網路的連接,並且它具有第2階
(L2)快取的局部子集。
圖9B是圖9A之部分處理器核心的擴充圖之具體態樣的方塊圖。
圖10是處理器之具體態樣的方塊圖,其可以具有多於一個的核心、可以具有整合式記憶體控制器、可以具有整合式圖形。
圖11是電腦架構之第一具體態樣的方塊圖。
圖12是電腦架構之第二具體態樣的方塊圖。
圖13是電腦架構之第三具體態樣的方塊圖。
圖14是電腦架構之第四具體態樣的方塊圖。
圖15是根據本發明的具體態樣而使用軟體指令轉換器以將來源指令組中之二元指令轉換成目標指令組中之二元指令的方塊圖。
在此揭示的是根據記憶體存取指令類型來配置負載和儲存緩衝器和/或其他記憶體次系統資源的處理器、方法及系統。於某些具體態樣,處理器可以具有解碼單元或其他邏輯以接收和/或解碼第一和第二型記憶體存取指令,並且具有佇列/緩衝器、控制器或其他邏輯,而至少部分根據作業是否對應於第一或第二型記憶體存取指令來排序作業和/或配置用於作業的負載和儲存緩衝器或其他記憶體次系統資源。於以下敘述,列出了許多特定細節(譬如特定指令、處理器組態、微架構細節、作業順
序……)。然而,具體態樣可以沒有這些特定細節而實作。於其他例子,則未詳細顯示熟知的電路、結構、技術以避免模糊了對本敘述的理解。
圖1是用於處理器的指令組100之範例性具體態樣的方塊圖,而顯示了特定類別的指令,雖然可能有其他類別。指令組可以包括處理器能夠進行(譬如解碼和執行)的巨集指令、機器層級指令或其他指令或控制訊號。指令組可以包括多樣的不同類型指令,舉例而言例如算術指令(譬如乘法指令、加法指令……)、邏輯指令(譬如邏輯及[AND]指令、邏輯或[OR]指令、移位指令、旋轉指令……)、緊縮、向量或單一指令多資料(SIMD)指令(譬如緊縮算術指令、緊縮邏輯指令……)、密碼圖形指令和多樣之其他類型的指令。典型而言,指令組也包括記憶體存取指令。
於某些具體態樣,指令組100可以包括二種不同類型的記憶體存取指令。特定而言,指令組可以包括第一型記憶體存取指令102和不同的第二型記憶體存取指令110。這些記憶體存取指令的每一者可以進行記憶體存取(譬如從記憶體預取資料、從記憶體載入資料、或儲存資料到記憶體),或者可以關聯於進行記憶體存取(譬如管理快取中的資料、保證來自特定儲存作業的資料已經儲存於記憶體中……)。如在此所用,管理快取中之資料的指令、保證來自特定儲存作業的資料已經儲存於記憶體中的指令和類似者乃視為記憶體存取指令,因為它們管理來
自已經被快取之記憶體的資料(譬如從快取而清除或寫回資料到記憶體)、影響記憶體存取作業(譬如保證已經進行特定的記憶體存取作業)或類似者。
為了進一步示範特定概念,顯示了可能之第一型記憶體存取指令102的一些代表性範例,雖然本發明的範圍不限於包括所有的這些特定指令或恰這些特定指令。於其他具體態樣,這些指令、類似指令、可能其他指令整個中的任一或更多者可選用而言可以包括在指令組中。如所示,第一型指令可以包括一或更多個負載指令103,其當進行時可以是可操作以使處理器從記憶體中之指出的記憶體位置來載入資料,並且儲存負載資料在處理器之指出的目的暫存器中。第一型指令也可以包括一或更多個儲存指令104,其當進行時可以是可操作以使處理器將來自處理器中指出之來源暫存器的資料儲存到記憶體中之指出的記憶體位置。當今多數的指令組包括至少一此種負載指令和至少一此種儲存指令,雖然本發明的範圍不限於此。
於某些情形,第一型記憶體存取指令可選用而言可以包括一或更多個重複負載指令105,其當進行時可以是可操作以使處理器從記憶體中之指出的來源記憶體位置載入多個相連/順序資料元件(譬如一串資料元件),並且將載入的多個相連/順序資料元件儲存回到記憶體中指出之目的記憶體位置。於某些情形,第一型記憶體存取指令可選用而言可以包括一或更多個收集指令
106,其當進行時可以是可操作以使處理器從記憶體中的多個可能非相連/非順序記憶體位置(其可以皆由收集指令[譬如其來源運算元]所提供之不同的對應記憶體索引來指出)而載入多個資料元件,並且將載入的資料元件儲存於處理器中指出之目的緊縮資料暫存器中。於某些情形,第一型記憶體存取指令可選用而言可以包括一或更多個散布指令107,其當進行時可以是可操作以使處理器將來自處理器中指出之來源緊縮資料暫存器的多個資料元件儲存到記憶體中之多個可能非相連/非順序記憶體位置,其可以皆由散布指令[譬如其來源運算元]所提供之不同的對應記憶體索引來指出。這些重複負載指令、收集指令、散布指令的每一者一般而言傾向於較不常見,並且可以包括或可以不包括在任何給定的指令組中。
顯示了可能之第二型記憶體存取指令110的一些代表性範例,雖然本發明的範圍不限於包括所有的這些特定指令或恰這些特定指令。於其他具體態樣,這些指令、類似指令、可能其他指令整個中的任一或更多者可選用而言可以包括在指令組中。如所示,第二型記憶體存取指令可以包括一或更多個預取指令111,其可以作為對處理器的暗示或建議以預取資料。預取指令如果進行的話則可以是可操作以使處理器從記憶體之指出的記憶體位置預取資料,並且儲存資料在處理器的快取階層,而不儲存資料在處理器的架構暫存器。第二型記憶體存取指令也可以包括快取線清除指令112,其當進行時可以是可操作以使
處理器清除對應於來源運算元中所指出之記憶體位址的快取線。快取線可以在處理器快取階層的所有階層被無效,並且無效可以廣播遍及快取連貫域。如果在任何階層的快取線與系統記憶體不一致(譬如髒壞),則可以在無效之前將它寫入到系統記憶體。第二型記憶體存取指令也可以包括快取線寫回指令113,其當進行時可以是可操作以使處理器寫回對應於來源運算元所指出的記憶體位址之快取線(如果是髒壞或與系統記憶體不一致的話),並且使處理器之快取階層中的快取線維持或無效為非修改狀態。快取線可以從處理器快取階層的任何階層寫回而遍及快取連貫域。
第二型指令也可以包括在快取之間移動快取線的一或更多個指令114,其當進行時可以是可操作以使處理器將快取線從快取連貫域中的第一快取移動到快取連貫域中的第二快取。舉一可能的範例,第一指令可以是可操作以使處理器將快取線從靠近第一核心的第一快取推到靠近第二核心的第二快取。舉另一可能的範例,第二指令可以是可操作以使處理器將快取線從靠近第一核心的第一較低階層快取(譬如L1快取)降級或移動到第二較高階層快取(譬如L3快取)。第二型指令也可以包括持續承諾指令115,其當進行時可以是可操作以使處理器在特定之其他儲存至記憶體的作業之前(譬如當進行持續承諾指令時遵循持續承諾指令或尚未被記憶體接受者),而將對於持續記憶體範圍(譬如非揮發性記憶體或電力故障回復
的揮發性記憶體)的特定之儲存至記憶體的作業(譬如已經被記憶體所接受者)變成持續的(譬如保護免於電力故障)。
(多個)負載指令103、(多個)儲存指令104、(多個)重複負載指令105、(多個)收集指令106、(多個)散布指令107可以皆須進行(譬如為了正確執行),並且可以須以相對於彼此和其他指令的特殊定序來進行(譬如可以具有比第二型指令相對為更嚴格的排序和相依性規則),以便正確執行程式。相對來看,(多個)預取指令111和在快取之間移動快取線的(多個)指令114可以不嚴格的須要進行以正確執行,以及/或者可以不嚴格的須要以特定嚴格的定序來進行以正確執行程式(譬如比第一型指令是至少較不嚴格的排序和相依性規則)。這些指令代表特用指令,其設計成導引資料移入快取階層、移出快取階層以及/或者在快取階層周圍或裡面移動資料。舉例而言,預取指令可以僅代表暗示,其可以用於幫助減少快取漏失而改善效能。類似而言,在快取之間移動快取線的(多個)指令可以主要藉由前攝移動資料到期望是更有效率的位置而尋求改善效能。至少有時候,此種預取指令和在快取周圍移動快取線的指令或許可能被落失而無不正確的執行結果。而且,快取線清除指令112、快取線寫回指令113、持續承諾指令可以具有相對為比第一型指令少的相依性和定序規則,並且可以做不同於第一型指令的的處理,一般而言只要觀察到較少但需要
的排序和相依性規則即可。舉例而言,快取線清除、快取線寫回、持續承諾等指令可以不相對於任何預取或提取/負載指令而定序,這可以意謂資料可以恰在快取線寫回、快取線清除或在參考快取線的快取指令之間移動快取線的指令做執行之前、期間或之後趁機載入快取線裡。對於這些指令,快取線的內容不改變,而主要是配置快取線的位置改變。而且,執行管線典型而言不立即依賴快取線清除、快取線寫回、持續承諾指令的完成來進行。這些指令是要改善快取線之後續存取的效能,或者因為正確性緣故而以特定方式來移動資料。舉例而言,快取線清除指令可以從快取階層移除線,並且如果資料已經被修改的話則將它寫回到記憶體。當適當觀察到實施正確性和定序需求時,此種屬性允許改善在負載和儲存緩衝器中排序和/或配置項的方式,這特別是針對預取指令和在快取之間移動資料的指令,但也針對快取線寫回指令、快取線清除指令、持續承諾指令(譬如其可以具有比預取和在快取之間移動快取線的指令還更嚴格的相依性和定序規則,但有比第一型指令較不嚴格的相依性和定序規則)。
雖然第二型記憶體存取指令110可以是有用的並且可以幫助改善效能,不過它們也可以消耗有價值的微架構資源,舉例而言例如負載緩衝器項、儲存緩衝器項、保留站項、重排緩衝器項和類似者。舉例而言,典型來說,每個預取指令111在等待被滿足時可以消耗負載儲存佇列中的負載緩衝器項。快取線清除指令112、快取線
寫回指令113、在快取之間移動快取線的(多個)指令114可以類似而言配置給負載儲存佇列中的儲存緩衝器項並且消耗之。持續承諾指令115也可以消耗緩衝器項,並且有時可以傾向於具有相對為長的完成時間(譬如在等待涉及的儲存作業以從記憶體控制器洩流到持續儲存器),藉此消耗這些資源達可能相對為長的時間。因而,第二型記憶體存取指令可以傾向於貢獻額外的壓力在負載和儲存緩衝器上,並且在處理器之記憶體次系統的特定其他微架構資源上。特別是當用於快取密集的和/或記憶體密集的應用程式時,如果此種指令未良好定時和/或良好定位在碼中,則它們可以消耗此種微架構資源的事實可以在某些情形下減少效能(譬如避免第一型記憶體存取指令102對這些微架構資源有更大的存取)。
圖2是配置負載和儲存緩衝器項的方法220之具體態樣的流程方塊圖。於多樣的具體態樣,方法可以由處理器、指令處理設備、數位邏輯裝置或積體電路所進行。
在方塊221,方法包括接收第一型記憶體存取指令。於某些具體態樣,這些指令可以包括任一或更多個第一型記憶體存取指令102,如圖1所述。在方塊222,方法也包括接收不同的第二型記憶體存取指令。於某些具體態樣,這些指令可以包括任一或更多個第二型記憶體存取指令110,如圖1所述。於多樣的方面,指令可以在處理器、積體電路或其部分(譬如指令快取、指令提取單
元、解碼單元……)來接收。於多樣的方面,指令可以從處理器外和/或晶粒外的來源(譬如從記憶體)或從處理器上和/或晶粒上的來源(譬如從指令快取、指令提取單元……)來接收。
在方塊223,至少部分根據記憶體存取作業是否對應於第一型記憶體存取指令或第二型記憶體存取指令,而可以配置負載緩衝器的負載緩衝器項和儲存緩衝器的儲存緩衝器項以用於對應於第一和第二型指令的記憶體存取作業。於某些具體態樣,相較於配置項在負載和儲存緩衝器中以用於對應於第一型指令的記憶體存取作業,配置項在負載和儲存緩衝器中可以做不同的進行以用於對應於第二型指令的記憶體存取作業(並且這可以提供特定好處)。關於配置項在負載和儲存緩衝器中,對應於第一和第二型指令的記憶體存取作業可以做不同的操控、處置或處理。
於某些具體態樣,負載和儲存緩衝器中之一者的至少一項可以無條件的配置給對應於第一型記憶體存取指令的每個記憶體存取作業。相對來看,對於對應於第二型記憶體存取指令的記憶體存取作業,項可以不配置在負載和儲存緩衝器中(譬如某些具體態樣是無條件的不配置,或者其他具體態樣是有條件的不配置),或者項可以有條件的配置在負載和儲存緩衝器之中的一者中,但僅在若決定是符合或滿足一或更多個條件的話。於某些具體態樣,對於對應於第二型指令的每個記憶體存取作業,部分
根據決定是否符合或滿足這些一或更多個條件,則可以決定是否配置項在負載和儲存緩衝器之中的一者中。
於某些具體態樣,此種決定可選用而言可以根據以下一或更多個因素或任何組合:(1)負載和/或儲存緩衝器之目前的充滿、佔有或配置程度(譬如有多少比率的項已經配置給其他作業);(2)對應於第二型指令的記憶體存取作業是否與已經將項配置在負載和/或儲存緩衝器中的任何記憶體存取作業具有任何資料相依性;(3)對應於第二型指令的記憶體存取作業是否可以直接輸出(譬如送到第1階[L1]資料快取埠)而不緩衝;(4)目前是否有資源可用於直接和/或無延遲(譬如立即)的輸出對應於第二型指令的記憶體存取作業;(5)是否存在可以用於對應於第二型指令之記憶體存取作業的旁路緩衝器,以取代負載和儲存緩衝器。這些只不過是一些範例。其他具體態樣可以使用這些條件中的任一或更多者、可選用而言連同其他條件、或整個不同的條件。
圖3是處理器325之具體態樣的方塊圖,其可操作以進行第一型記憶體存取指令302和不同的第二型記憶體存取指令310,並且至少部分根據記憶體存取作業是否對應於第一型記憶體存取指令302或第二型記憶體存取指令310來配置項在負載緩衝器335和儲存緩衝器336中。於某些具體態樣,處理器可以是可操作以進行圖2的方法220。在此針對處理器325所述的組件、特色、特定可選用的細節也可選用而言適用於方法220。替代選擇而
言,方法220可選用而言可以由類似或不同的處理器、積體電路或其他設備來進行和/或在當中進行。再者,處理器325可以進行相同於、類似於或異於方法220的方法。
於某些具體態樣,處理器325可以是用於桌上型、膝上型或其他電腦之類的通用處理器,譬如通用微處理器或中央處理單元(CPU)。替代選擇而言,處理器可以是特用處理器。適合的特用處理器範例包括但不限於網路處理器、通訊處理器、密碼圖形處理器、圖形處理器、共同處理器、嵌入式處理器、數位訊號處理器(DSP)、控制器(譬如微控制器)。處理器可以具有多樣的複雜指令組運算(CISC)架構、精簡指令組運算(RISC)架構、極長指令字(VLIW)架構、併合架構、其他類型架構中的任一者,或者具有不同架構的組合(譬如不同的核心可以具有不同的架構)。於多樣的具體態樣,處理器可以代表至少部分的積體電路(譬如單晶片系統(SoC))、可以包括在晶粒或半導體基板上、可以包括半導體材料、可以包括電晶體……。
在作業期間,處理器325可以接收第一型記憶體存取指令302和不同的第二型記憶體存取指令310。舉例而言,這些指令可以在匯流排或其他互連上而從記憶體接收。指令可以代表處理器之指令組的巨集指令、機器碼指令、或其他指令或控制訊號。於某些具體態樣,第一型指令302可選用而言可以包括圖1的任何指令102,並且第二型指令310可選用而言可以包括任何的指令110,
雖然本發明的範圍不限於此。舉例而言,於某些具體態樣,第一型指令302可以包括至少一負載指令和一儲存指令,而第二型指令310可以包括至少一指令,其為預取指令、快取線清除指令、快取線寫回指令、在快取之間移動快取線的指令、持續承諾指令中的一者。
再次參見圖3,處理器325包括解碼器或解碼單元326。解碼單元可以接收和解碼第一和第二型指令302、310。解碼單元可以輸出用於每個第一和第二型指令的一或更多個記憶體存取作業。舉例而言,如所示,解碼單元可以輸出對應於第一型指令302的記憶體存取作業328,並且可以輸出對應於第二型指令310的記憶體存取作業330。這些作業可以呈現相對為較低階層的指令或控制訊號(譬如一或更多個微指令、微作業、解碼指令或控制訊號……),其反映、代表和/或衍伸自相對為較高階層的第一和第二型指令。於某些具體態樣,解碼單元可以包括:一或更多個輸入結構(譬如[多個]埠、[多個]互連、介面),其接收第一和第二型指令;與之耦合的指令辨識和解碼邏輯,其辨識和解碼多樣的第一和第二型指令;以及與之耦合的一或更多個輸出結構(譬如[多個]埠、[多個]互連、介面),其輸出對應的作業。解碼單元可以使用多樣的不同機構來實施,包括但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可程式化的邏輯陣列(PLA)、其他適合實施解碼單元的機構。
於某些具體態樣,第一和第二型指令不是直
接提供給解碼單元,可選用而言卻可以使用指令仿真器、翻譯器、變型器、解譯器或其他指令轉換模組。多樣類型的指令轉換模組可以在軟體、硬體、韌體或其組合中實施。於某些具體態樣,指令轉換模組可以位在處理器外,舉例而言例如在分開的晶粒上和/或在記憶體中(譬如作為靜態、動態或運行時間的仿真模組)。舉例來說,指令轉換模組可以接收第一和第二型指令(其可以屬於第一指令組),並且可以仿真、翻譯、變型、解譯或者另外轉換第一和第二型指令成為一或更多個對應的中間指令或控制訊號(其可以屬於不同的第二指令組)。第二指令組的一或更多個中間指令或控制訊號可以提供給解碼單元(譬如解碼單元326),其可以將它們解碼成對應的作業(譬如一或更多個較低階層指令或控制訊號,而可由處理器的執行單元或其他本機硬體來執行)。
再次參見圖3,對應於第一型指令302的作業328和對應於第二型指令310的作業330可以通過處理器的管線。舉例而言,在無序處理器(其非需要的)的情形,管線時常可以包括更名/配置器單元、一或更多個排程器單元、重排緩衝器、保留站、退役單元和類似者。類似於在此揭示的作法也可以用於配置微架構資源給多樣的這些其他微架構結構(譬如在負載儲存佇列之前或之後的管線中之其他佇列或緩衝器)。於記憶體存取指令的情形,管線也時常可以包括負載儲存佇列332、一或更多個記憶體存取單元、記憶體單元、一或更多個翻譯旁看緩衝
器(TLB)、一或更多個快取和類似者。為了更好示範負載儲存佇列332之具體態樣的作業並且避免使圖複雜,圖中僅顯示負載儲存佇列。然而,要體會其他管線組件可以耦合在解碼單元和負載儲存佇列之間,並且另外其他管線組件可以耦合在負載儲存佇列的輸出。舉例而言,多樣的不同具體態樣可以包括圖8B、9A/B、10中任一者所示和所述之組件的多樣不同組合和組態。所有此種處理器組件可以耦合在一起以允許它們操作。
負載儲存佇列332耦合於解碼單元326以接收作業328和作業330。負載儲存佇列包括負載緩衝器335,其在作業期間可以是可操作以具有多個負載緩衝器項。負載儲存佇列也包括儲存緩衝器336,其在作業期間可以是可操作以具有多個儲存緩衝器項。在作業期間,負載和儲存緩衝器中的項可以配置給飛行中的記憶體存取作業,並且可以用於緩衝飛行中的記憶體存取作業。負載儲存佇列也可以是可操作以將飛行中的記憶體存取作業一般而言維持在程式定序(至少其中須維持一致性),並且可以是可操作以支援檢查或搜尋記憶體相依性,以便遵守記憶體一致性/相依性模型。於某些具體態樣,負載和儲存緩衝器可選用而言可以實施成內容可定址的記憶體(CAM)結構。替代選擇而言,此技藝所知的其他作法可選用而言可以用於實施負載和儲存緩衝器。
負載和儲存緩衝器325、326典型而言分別僅具有有限數目的負載緩衝器項和儲存緩衝器項。在作業期
間的特定時候,可以有相對為高階層的快取和/或記憶體存取。特別是在此種時候,負載儲存佇列可以傾向於經歷壓力,其中可以沒有足夠的負載和/或儲存緩衝器項來服務或最有效的服務所有飛行中的記憶體存取作業。此時,負載儲存佇列可以傾向於限制效能。舉例而言,可以沒有如所想要那麼多的項來配置給作業328。在此揭示的具體態樣可以有利的幫助舒緩或至少減少負載儲存佇列上的某些壓力,以及/或者可以幫助以給定數目的緩衝器項而達成更多的記憶體存取通量。
再次參見圖3,負載儲存佇列包括緩衝器項配置控制器334。緩衝器項配置控制器耦合於負載緩衝器335,並且耦合於儲存緩衝器336。緩衝器項配置控制器可以作為定序器以即時做出用於作業的快速決策、配置項給它們、檢查相依性、維持作業的適當順序。緩衝器項配置控制器可以是可操作以配置項在負載和儲存緩衝器中以用於記憶體存取作業。於某些具體態樣,至少部分根據是否接收對應於第一型記憶體存取指令302或第二型記憶體存取指令310的記憶體存取作業(譬如作業328和330的混合),緩衝器項配置控制器可以是可操作以配置負載和儲存緩衝器項。於某些具體態樣,緩衝器項配置控制器可以是可操作以針對對應於第二型指令310的記憶體存取作業330和針對對應於第一型指令302的記憶體存取作業328而不同的配置負載和儲存緩衝器項。關於負載和儲存緩衝器項配置,對應於第一和第二型指令的記憶體存取作
業可以做不同的操控、處置或處理。緩衝器項配置控制器可以實施於硬體(譬如電路、積體電路、電晶體、其他電路元件……)、韌體(譬如唯讀記憶體[ROM]、可抹除可程式化的ROM[EPROM]、快閃記憶體、或其他持續性或非揮發性記憶體,其儲存微碼、微指令、或其他較低階層指令或控制訊號)、軟體或其組合(譬如至少某些硬體可能/可選用而言組合了某些韌體)。
再次參見圖3,如在339所示,緩衝器項配置控制器334和/或負載儲存佇列332可以是可操作以無條件的配置一或更多個項在負載和儲存緩衝器335、336中以用於對應於第一型指令302的每個作業328。習用而言,負載和儲存緩衝器335、336中的一或更多個項也會配置給對應於第二型指令310的每個作業330。然而,於某些具體態樣,如在選項#1 340、選項#2 341、選項#3 342所示,緩衝器項配置控制器334和/或負載儲存佇列332可以是可操作以具有多個不同的選項以用於操控或處理對應於第二型指令310的作業330。於某些具體態樣,這些多個不同的選項可以包括配置一或更多個項在負載和儲存緩衝器中,或不配置任何項在負載和儲存緩衝器中。於某些具體態樣,對於每個記憶體存取作業330,至少部分根據做出一或更多個決定來看看是否符合或滿足一或更多個條件,則負載和儲存緩衝器中的一或更多個項可以做有條件的配置或有條件的不配置。
於某些具體態樣,如在選項#1 340所示,緩
衝器項配置控制器334和/或負載儲存佇列332可以是可操作以根據決定滿足了一或更多個條件,而有條件的配置一或更多個項在負載和儲存緩衝器335、336中來給記憶體存取作業330。舉例而言,是否配置一或更多個項在負載和儲存緩衝器中以用於作業330可以至少部分根據負載和儲存緩衝器之充滿、配置或利用的目前程度,譬如負載和/或儲存緩衝器的目前利用率是否在定限之下或之上。
於其他具體態樣,如在選項#2所示,緩衝器項配置控制器334和/或負載儲存佇列332可選用而言可以是可操作以配置或有條件的配置一或更多個項在可選用的旁路緩衝器338中來給作業330。旁路緩衝器是可選用的而非需要的。當包括時,旁路緩衝器338可以耦合於緩衝器項配置控制器。在作業期間,旁路緩衝器可以是可操作以具有多個項,其可以配置給並且可以用於緩衝對應於第二型指令310的記憶體存取作業330,但非對應於第一型指令302的記憶體存取作業328。旁路緩衝器可以代表新類型的緩衝器以緩衝和追蹤記憶體存取作業330,如此則它們不須儲存在負載和儲存緩衝器項中。於某些具體態樣,旁路緩衝器也可以是可操作以支援檢查或搜尋記憶體相依性,以便遵守記憶體一致性/相依性模型。於某些具體態樣,旁路緩衝器可以是可操作以將飛行中的記憶體存取作業330一般而言維持於程式定序,其中至少須維持一致性。於某些具體態樣,旁路緩衝器可以比負載緩衝器和儲存緩衝器相對更弱的被記憶體定序(譬如具有或遵循較
弱的記憶體定序模型)。於某些具體態樣,旁路緩衝器可以具有比負載緩衝器和儲存緩衝器更鬆弛的記憶體相依性檢查。於某些具體態樣,旁路緩衝器可選用而言可以比負載和儲存緩衝器還小(譬如具有較少項)並且具有對應較快的存取時間(譬如快一或更多個時鐘循環的存取潛時)。於某些具體態樣,對應於第二型指令之特定類型的作業可選用而言可以被廢除和/或忽略,如果想要的話。舉例而言,如果旁路緩衝器滿了並且無法容納更多的作業,則這樣做可以是有用的。一般而言,對應於預取指令、在快取之間移動快取線的指令、其他此種不嚴格要求正確性之指令的作業可選用而言可以被廢除和/或忽略,如果想要的話。對於對應於第二型指令之其他類型的作業,舉例而言例如對應於快取線清除指令、持續承諾指令和其他的作業,則可以不可能單純落失或廢除它們,或者至少應評估特定額外的檢查或條件以確認是否它們被廢除或忽略就不會達成不正確結果。
如所示,於某些具體態樣,旁路緩衝器可選用而言可以實施成與負載和儲存緩衝器分開或離散的緩衝器或其他結構。舉例來說,旁路緩衝器實施成內容可定址的記憶體(CAM)結構,雖然本發明的範圍不限於此。替代選擇而言,於其他具體態樣,旁路緩衝器可選用而言可以實施於負載和儲存緩衝器裡。舉例而言,負載和儲存緩衝器中的項可以具有一或更多個位元,其能夠被設定或建構成將項標示或指示為正常的負載和儲存緩衝器項或旁路
緩衝器項。旁路緩衝器項可以做不同於正常之負載和儲存緩衝器項的操控(譬如選擇性配置給作業330而非作業328、相對更弱的被記憶體定序、具有更鬆弛的記憶體相依性檢查……)。
再次參見圖3,於另外其他的具體態樣,如選項#3所示,緩衝器項配置控制器334和/或負載儲存佇列332可選用而言可以直接從負載儲存佇列332輸出記憶體存取作業330,而不配置任何項在負載和儲存緩衝器335、336中,並且不配置任何項在可選用的旁路緩衝器338中。舉例而言,記憶體存取作業330可以從負載儲存佇列直接輸出到快取埠(譬如L1資料快取埠),而不在負載儲存佇列中緩衝。
於某些具體態樣,負載儲存佇列332和/或緩衝器項配置控制器334可以是可操作以根據以下一或更多個因素或任何組合的評估來聰明的和/或適應性的決定要對記憶體存取作業330做什麼:(1)負載和儲存緩衝器之充滿、佔有、配置或利用的目前程度(譬如目前利用項的數目或比率是否在定限之上或之下);(2)記憶體存取作業330與已經配置了負載和/或儲存緩衝器項的任何記憶體存取作業是否具有任何相依性;(3)記憶體存取作業330是否可以直接輸出而不配置給緩衝器項(譬如如果沒有衝突的資料相依性);(4)是否有資源可用於直接輸出記憶體存取作業330;(5)是否存在旁路緩衝器338以用於緩衝記憶體存取作業330。這些只不過是一些
範例。其他具體態樣可以使用這些條件中的任一或更多者、可選用而言連同其他條件、或整個不同的條件。
據此,於某些具體態樣,緩衝器項配置控制器334和/或負載儲存佇列332和/或處理器325可以是可操作的,至少在特定時候(譬如當負載和儲存緩衝器經歷壓力)和/或至少在特定條件下(譬如當沒有資料相依性並且當資源可用於[或者不久將是可用的或可以釋放而]直接輸出作業),則不配置任何項在負載和儲存緩衝器中來給對應於第二型指令310的作業330。這可以提供多樣的可能優點,此視特殊的實施例而定。就一方面來說,這可以允許負載和儲存緩衝器中不是用於作業330的項乃改成用於作業328。這可以幫助允許未處理之負載或儲存漏失的總數增加,以及/或者可以幫助增加核心或其他邏輯處理器對於記憶體的有效頻寬。就另一方面來說,這可以幫助減少實施第二型記憶體存取指令310的負擔(譬如就負載和/或儲存緩衝器消耗來看),這轉而可以幫助改善效能,特別是對於快取敏感的或記憶體頻寬敏感的應用程式而言。
圖4的方塊圖示範負載儲存佇列432的詳細範例性具體態樣。於某些具體態樣,負載儲存佇列432可以使用作為圖3的負載儲存佇列332。替代選擇而言,處理器325可以具有類似或不同的負載儲存佇列。
負載儲存佇列432包括緩衝器項配置控制器434的詳細範例性具體態樣、負載和儲存緩衝器435,並
且於某些具體態樣可選用而言可以包括旁路緩衝器438。負載和儲存緩衝器和旁路緩衝器可以具有類似或相同於先前描述的特徵。
緩衝器項配置控制器434包括指令類型決定邏輯480、負載和儲存(L/S)緩衝器利用率決定邏輯481、相依性檢查邏輯485、和輸出資源檢查邏輯487。這些組件耦合在一起,如圖中的箭號所示。這些單元、組件或其他邏輯可以實施於硬體(譬如電路、積體電路、電晶體、其他電路元件……)、韌體(譬如唯讀記憶體[ROM]、可抹除可程式化的ROM[EPROM]、快閃記憶體、或其他持續性或非揮發性記憶體,其儲存微碼、微指令、或其他較低階指令或控制訊號)、軟體或其組合(譬如至少某些硬體可能/可選用而言與某些韌體組合)。
在作業期間,負載儲存佇列432是可操作以接收對應於第一和第二型記憶體存取指令的作業429。於某些具體態樣,第一型記憶體存取指令可以包括圖1的任一或更多個指令102,並且第二型記憶體存取指令可以包括圖1的任一或更多個指令110,雖然本發明的範圍不限於此。作業429可以提供給指令類型決定邏輯480。於某些具體態樣,指令類型決定邏輯可以是可操作以決定每個作業是否對應於第一型或第二型記憶體存取指令。如所示,對應於第一型記憶體存取指令的作業428可以提供給負載和儲存緩衝器435,並且負載和儲存緩衝器中的一或更多個項可以配置給這些作業的每一者。相對來看,對應
於第二型記憶體存取指令的作業430可以提供給負載和儲存(L/S)緩衝器利用率決定邏輯481。
於某些具體態樣,作業430可以由負載儲存佇列432和/或緩衝器項配置控制器434做不同的處理,此視它們是否是負載或是儲存作業而定。舉例來說,於某些具體態樣,負載作業可以根據圖5的方法(譬如如果負載儲存佇列包括可選用的旁路緩衝器438)或圖6的方法(譬如如果負載儲存佇列不包括旁路緩衝器)來處理。於某些具體態樣,儲存作業可以根據圖7的方法來處理。替代選擇而言,類似或不同的方法可以用於處理負載和儲存作業。
於某些具體態樣,負載和儲存緩衝器利用率決定邏輯481可以是可操作以評估或決定負載和儲存緩衝器435之充滿、配置或利用的目前程度(譬如負載和/或儲存緩衝器的目前利用程度是否在定限之下或之上)。負載和儲存緩衝器利用率決定邏輯可以從負載和儲存緩衝器接收利用率資訊482,或者至少關聯於負載和儲存緩衝器。舉例來說,利用率資訊可以由直接寫入負載和儲存緩衝器的訊號所提供,或者可以由效能監視單元或類似者來提供。於某些具體態樣,如果特殊實施例的目前利用率是夠低(譬如負載和/或儲存緩衝器的目前利用程度是在定限之下),則對應於第二型指令的作業440可以提供給負載和儲存緩衝器435,並且每個作業可以配置給負載和儲存緩衝器中的一或更多個項。
代表而言,此種目前低利用率可以指出負載和儲存緩衝器目前未經歷壓力以及/或者目前有足夠數目的項來有效的服務對應於第一型記憶體存取指令的作業428。於此等情形,可以不需配置項在負載和儲存緩衝器中,以及/或者偏離作業440的習用處理可以沒有更多的好處。於某些具體態樣,在此等情況下,可選用的旁路緩衝器(如果可選用而言包括在特殊實施例中,並且如果空的話)可選用而言可以被關閉電力,或者至少置於減少電力的狀態,以便幫助保留電力,雖然這非所需。相對來看,於某些具體態樣,如果目前利用率對於特殊的實施例來說不夠低(譬如負載和/或儲存緩衝器的目前利用程度是在定限之上),則對應於第二型指令的作業440可以不配置給負載和儲存緩衝器435中的項。
如所示,於某些具體態樣,可組構的利用率定限484可選用而言可以由負載儲存緩衝器利用率決定邏輯481所使用。如所示,可組構的利用率定限可選用而言可以包括在暫存器483(譬如控制和/或組態暫存器)中。替代選擇而言,可選用而言可以使用其他的儲存位置。於某些具體態樣,可組構的利用率定限可選用而言可加以調節或另外建構成達成特殊實施例所想要的目的。舉例而言,可選用而言可以使用效能和電力監視,並且效能調節可選用而言可以用於改變定限以決定定限值,其提供特殊實施例所想要之效能和電力效率的平衡。
再次參見圖4,緩衝器項配置控制器434也包
括相依性檢查邏輯485。對於負載作業來說,在緩衝器項配置控制器決定不配置負載作業給負載和儲存緩衝器435的情形,相依性檢查邏輯可以是可操作以決定負載作業與已經配置給負載和儲存緩衝器中之項的負載和/或儲存作業是否具有任何相依性。舉例而言,如果該等作業具有相同的實體記憶體位址,則可以存在資料相依性。如果此種相依性確實存在,則負載作業應以已經配置給存在相依性之負載和儲存緩衝器中的項之任何此種其他負載和/或儲存作業來定序。於某些具體態樣,如果此種相依性確實存在,則負載作業441可以配置給可選用的旁路緩衝器438(如果它存在的話)中的一或更多個項。替代選擇而言,如果可選用的旁路緩衝器438不存在,則當存在此種相依性時,負載作業可以改成配置給負載和儲存緩衝器中的一或更多個項(譬如見更下面圖5的討論)。負載作業可以維持在旁路緩衝器中(或在負載和儲存緩衝器中),直到已經解決了相依性為止。
再次參見圖4,緩衝器項配置控制器434也包括輸出資源檢查邏輯487。輸出資源檢查邏輯可以是可操作以檢查或決定目前是否有資源可用於輸出負載和/或儲存作業。舉例而言,這可以包括檢查從負載儲存佇列輸出資料所需的快取埠和/或其他資源之可用性。於某些具體態樣,在與已經配置給負載和儲存緩衝器中的項之負載和/或儲存作業沒有相依性的情形,以及在輸出資源檢查邏輯決定目前有資源可用的情形,可以直接輸出作業442。
舉例而言,作業442可以略過負載和儲存緩衝器和略過旁路緩衝器而直接提供給快取的快取埠。可以輸出作業442,而沒有任何項已經被配置在負載和儲存緩衝器和/或可選用的旁路緩衝器中,以及/或者負載儲存佇列裡大致沒有任何緩衝或等候。
替代選擇而言,在目前沒有資源是可用的情形,作業499可以提供給可選用的旁路緩衝器(如果它存在的話),並且旁路緩衝器中的一或更多個項可以配置給這些作業。或者,在旁路緩衝器可選用而言未包括在設計中的情形,作業可以改成配置給負載和儲存緩衝器中的項。如果配置給旁路緩衝器項中的項或負載和儲存緩衝器中的項,則在沒有相依性和/或已經解決相依性的情形,當資源變成可用的時候可以輸出作業。於某些具體態樣,特別是當對應於第二型指令的作業已經配置給負載和儲存緩衝器中的項時,它們可以迫切/快速和/或優先的輸出(譬如一旦資源是可用的並且沒有資料相依性便立刻為之),以便幫助釋放負載和儲存緩衝器中的項給其他作業(譬如作業428)。類似而言,當沒有相依性和/或相依性已經解決時,並且當資源是可用時,作業499可以趁機從旁路緩衝器438輸出。於某些具體態樣,從旁路緩衝器的輸出可選用而言可以具有比從負載和儲存緩衝器的輸出還低的優先權或強調性,以便幫助迫切/快速的釋放負載和儲存緩衝器中的項,雖然這非所需。
圖5是當旁路緩衝器是可用時處理對應第二
型記憶體存取指令之負載作業的方法546之具體態樣的流程方塊圖。在方塊547,方法可以決定接收的負載作業(譬如在負載儲存佇列所接收的)是否是對應於一組第二型記憶體存取指令中的一者。對應於第二型記憶體存取指令之負載作業的範例包括但不限於(多個)預取指令111。如果負載作業不對應於第二型記憶體存取指令(亦即方塊547決定為「否」),則方法可以重訪方塊547並且等待此種作業。替代選擇而言,如果負載作業確實對應於第二型記憶體存取指令(亦即方塊547決定為「是」),則方法可以前進到方塊548。
在方塊548,可以做出可選用的決定:目前負載和儲存緩衝器利用率對於特殊的實施例來說是否夠高。這可以如先前其他地方所述的進行(譬如搭配負載儲存緩衝器利用率決定邏輯481所述)。這利用程度可選用而言也可以是可組構的或可調節的。如果負載和儲存緩衝器利用率不夠高(亦即方塊548決定為「否」),則方法可以前進到方塊549。在方塊549,負載和儲存緩衝器中的一或更多個項可以配置給負載作業,負載作業可選用而言可以做大致習用的處理,並且當資源是可用時可以輸出負載作業。方法然後可以前進到方塊554。替代選擇而言,如果負載和儲存緩衝器利用率夠高(亦即方塊548決定為「是」),則方法可以前進到方塊550。
在方塊550,可以做出決定:負載作業與已經配置給負載和儲存緩衝器中之項的負載和/或儲存作業之
間是否有相依性。如果有相依性(亦即方塊550決定為「是」),則方法可以前進到方塊551。在方塊551,旁路緩衝器中的一或更多個項可以配置給負載作業,並且方法可以重返方塊550。負載作業可以維持成緩衝或儲存在旁路緩衝器中的項,直到相依性已經解決和/或不再存在為止。替代選擇而言,如果沒有相依性(亦即方塊550決定為「否」),則方法可以前進到方塊552。
在方塊552,可以做出可選用的決定:目前是否有資源來輸出負載作業。如果目前沒有資源來輸出負載作業(亦即方塊552決定為「否」),則方法可以前進到方塊553。在方塊553,旁路緩衝器中的一或更多個項可以配置給負載作業,並且方法可以重訪方塊552。負載作業可以維持成緩衝或儲存在旁路緩衝器的項中,直到有資源來輸出負載作業為止。替代選擇而言,如果目前有資源可用於輸出負載作業(亦即方塊552決定為「是」),則方法可以前進到方塊554。在方塊554,負載作業可以從負載儲存佇列輸出。
圖6是當旁路緩衝器不是可用時(譬如不實施於負載儲存佇列的設計,或者被失效)處理對應第二型記憶體存取指令之負載作業的方法660之具體態樣的流程方塊圖。在方塊661,方法可以決定接收的負載作業(譬如在負載儲存佇列所接收的)是否是對應於一組第二型記憶體存取指令中的一者。如果負載作業不對應於第二型記憶體存取指令(亦即方塊547決定為「否」),則方法可
以重訪方塊661並且等待此種作業。替代選擇而言,如果負載作業確實對應於第二型記憶體存取指令(亦即方塊661決定為「是」),則方法可以前進到方塊662。
在方塊662,可以做出可選用的決定:負載和儲存緩衝器利用率對於特殊的實施例來說是否夠高。這可以如先前其他地方所述的進行(譬如搭配負載儲存緩衝器利用率決定邏輯481所述)。這程度也可以是可組構的和/或可調節的。如果負載和儲存緩衝器利用率不夠高(亦即方塊662決定為「否」),則方法可以前進到方塊663。在方塊663,負載和儲存緩衝器中的一或更多個項可以配置給負載作業,負載作業可選用而言可以做大致習用的處理,並且當資源是可用時可以輸出負載作業。方法然後可以前進到方塊666。替代選擇而言,如果負載和儲存緩衝器利用率夠高(亦即方塊662決定為「是」),則方法可以前進到方塊664。
在方塊664,可以做出決定:負載作業與已經配置給負載和儲存緩衝器中之項的負載和/或儲存作業之間是否有相依性。如果有相依性(亦即方塊664決定為「是」),則方法可以前進到方塊665。在方塊665,負載和儲存緩衝器中的一或更多個項可以配置給負載作業,並且方法可以重訪方塊664。注意在此情形,相較於圖5的方法,由於旁路緩衝器不是可用的,故當相依性存在時,負載作業改成配置給負載和儲存緩衝器中的一或更多個項。然而,於某些具體態樣,一旦相依性解決了和/或
不再存在,可選用而言就可以快速收回它。負載作業可以維持成緩衝在負載和儲存緩衝器中,直到相依性已經解決和/或不再存在為止。
替代選擇而言,如果沒有相依性(亦即方塊664決定為「否」),則方法可以前進到方塊666。在這情形,即使沒有旁路緩衝器以舒緩負載和儲存緩衝器上的壓力,負載作業仍可以被迫切/快速的輸出,而不須配置項在負載和儲存緩衝器中,至少在沒有需要重視之相依性的情形是如此。於某些具體態樣,核心或其他邏輯處理器也可以不管從儲存作業之去核心所返回的任何「完成」(completion)訊息以觸發負載和儲存緩衝器中之項的解除配置,因為沒有配置負載和儲存緩衝器項。
在方塊666,可以輸出負載作業。於某些具體態樣,這可以包括釋放資源以迫切和/或快速和/或優先的輸出負載作業。於某些具體態樣(譬如若負載和儲存緩衝器利用率高並且沒有相依性),可以已經輸出負載作業,而沒有已經被配置的項。於另一具體態樣,方法可選用而言可以併入類似方塊552的作業以檢查資源是否是可用的,並且當資源不是可用時,配置一或更多個項在負載和儲存緩衝器中。
圖7是處理對應第二型記憶體存取指令之儲存作業的方法770之具體態樣的流程方塊圖。在方塊771,方法可以決定接收的儲存作業是否是對應於一組一或更多個第二型記憶體存取指令中的一者。用於第二型指
令之儲存作業的範例包括但不限於快取線清除指令112、快取線寫回指令113、在快取之間移動資料的指令114。如果儲存作業不對應於第二型記憶體存取指令(亦即方塊771決定為「否」),則方法可以重訪方塊771並且等待此種作業。替代選擇而言,如果儲存作業確實對應於第二型記憶體存取指令(亦即方塊771決定為「是」),則方法可以前進到方塊772。
在方塊772,可以做出可選用的決定:負載和儲存緩衝器利用率對於特殊的實施例來說是否夠高。這可以如先前在其他地方所述的進行(譬如搭配負載儲存緩衝器利用率決定邏輯481所述)。程度可選用而言可以是可組構的和/或可調節的。如果負載和儲存緩衝器利用率不夠高(亦即方塊772決定為「否」),則方法可以前進到方塊773。在方塊773,負載和儲存緩衝器中的一或更多個項可以配置給儲存作業。方法然後可以前進到方塊775。替代選擇而言,如果負載和儲存緩衝器利用率夠高(亦即方塊772決定為「是」),則方法可以前進到方塊774。在方塊774,旁路緩衝器中的一或更多個項可以配置給儲存作業。方法然後可以前進到方塊775。
在方塊775,可以做出決定:儲存作業是否是非臆測的並且關鍵相依性是否已經解決。這可以部分決定該作業是否準備要發出。在將儲存作業發到下游處理之前,可以確認尚未漏判定分支並且已經解決關鍵相依性。如果儲存作業是臆測的(亦即方塊775決定為「否」),
則方法可以重訪方塊775,直到儲存作業不再是臆測的為止。儲存作業一般而言不應輸出(譬如送到快取),直到臆測已經解決為止(譬如作業準備要被承諾)。替代選擇而言,如果儲存作業是非臆測的(亦即方塊775決定為「是」),則方法可以前進到方塊776。
在方塊776,可以輸出儲存作業。於某些具體態樣,這可以包括釋放資源以立即輸出儲存作業。於別的具體態樣,方法可選用而言可以併入類似於方塊552的作業以檢查資源是否是可用的,並且當資源不是可用時配置旁路緩衝器中的一或更多個項,直到它們變成可用的為止。
於某些具體態樣,圖5~7的方法可以由積體電路處理器、負載儲存佇列或緩衝器項配置控制器來進行。於某些具體態樣,圖5~7的方法可以由圖3的處理器325、負載儲存佇列332或緩衝器項配置控制器334來進行,以及/或者可以由圖4的負載儲存佇列432或緩衝器項配置控制器434來進行。在此針對圖3~4所述的組件、特色、特定可選用的細節也可選用而言適用於圖5~7的方法。替代選擇而言,圖5~7的方法可選用而言可以由類似或不同的設備來進行和/或在當中進行。再者,圖3~4的設備可選用而言可以進行類似或不同於圖5~7的方法。
於以上討論,為了進一步示範特定概念,已經強調配置項在負載和儲存緩衝器中。然而,類似作法可以改成用於配置其他的微架構資源(譬如其他微架構佇列
或緩衝器中的項)。舉例而言,類似作法可選用而言可以用於L1和L2快取之間的佇列結構。據此,廣泛而言,處理器可以對微架構資源進行與記憶體存取指令類型相依的配置(譬如項是在處理器之記憶體次系統裡的多樣佇列或緩衝器中)。
<範例性核心架構、處理器及電腦架構>
處理器核心可以用不同方式、針對不同目的、在不同處理器中實施。舉例來說,此種核心的實施例可以包括:(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)核心、複雜指令組運算(CISG)核心、極長指令字
(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,其耦合到第2階(L2)快取單元876。於一範例性具體態樣,記憶體存取單元864可以包括負載單元、儲存位址單元、儲存資料單元,其每一者耦合到記憶體單元870中的資料TLB單元872。指令快取單元834進一步耦合到記憶體單元870中的第2階(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指令組,其具有已經添加了較新版本的某些延伸)、加州Sunnyvale之MIPS科技公司的MIPS指令組、加州Sunnyvale之ARM控股公司的ARM指令組(其具有可選用的額外延伸,例如NEON),包括在此所述的(多個)指令。於一具體態樣,核心890包括邏輯以支援緊縮資料指令組延伸(譬如AVX1、AVX2),藉此允許許多多媒體應用程式所使用的作業使用緊縮資料來進行。
應了解核心可以支援多執行緒(執行二或更多個平行組的作業或執行緒),並且可以用各式各樣的方式來這麼做,包括分時多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給每個執行緒,而實體核心同時做多執行緒)或其組合(譬如分時提取和解碼,之後同時做多執行緒,例如英特爾®的超執行緒科技)。
雖然暫存器更名是在無序執行的背景下來描述,不過應了解暫存器更名可以用於有序架構。雖然處理器所示範的具體態樣也包括分開的指令和資料快取單元834/874和分享的L2快取單元876,不過替代選擇性具體態樣可以具有單一內部快取而用於指令和資料二者,舉例而言例如第1階(L1)內部快取或多階內部快取。於某些
具體態樣,系統可以包括內部快取和外部快取(其在核心和/或處理器之外部)的組合。替代選擇而言,所有的快取可以是在核心和/或處理器的外部。
<特定範例性有序核心架構>
圖9A~B示範更特定之範例性有序核心架構的方塊圖,該核心會是晶片中的幾個邏輯塊(包括相同類型和/或不同類型的其他核心)之中的一者。邏輯塊透過高頻寬互連網路(譬如環狀網路)而與某些固定功能邏輯、記憶體輸入/輸出(I/O)介面、其他必要的I/O邏輯來通訊,此視應用而定。
圖9A是根據本發明的具體態樣之單一處理器核心的方塊圖,連同它連接到晶粒上的互連網路902並且具有第2階(L2)快取的局部子集904。於一具體態樣,指令解碼器900支援具有緊縮資料指令組延伸的x86指令組。L1快取906允許對快取記憶體做低潛時存取而到純量和向量單元裡。雖然於一具體態樣(以簡化設計),純量單元908和向量單元910使用分開的暫存器組(分別是純量暫存器1912和向量暫存器914),並且在它們之間轉移的資料寫入記憶體,然後從第1階(L1)快取906讀回,不過本發明的替代選擇性具體態樣可以使用不同的作法(譬如使用單一暫存器組或者包括通訊路徑,其允許資料在二個暫存器檔案之間轉移而無寫回和讀回)。
L2快取的局部子集904是總體L2快取的一部
分,後者被分成分開的局部子集,而每個處理器核心有一個局部子集。每個處理器核心具有對其自己L2快取之局部子集904的直接存取路徑。處理器核心所讀取的資料儲存在其L2快取子集904中,並且可以快速存取,而與其他處理器核心存取它們自己的局部L2快取子集平行為之。處理器核心所寫入的資料儲存在其自己的L2快取子集904中,並且從其他子集清除,如果需要的話。環狀網路確保分享的資料有連貫性。環狀網路是雙向的以允許例如處理器核心、L2快取、其他邏輯塊的代理在晶片裡彼此通訊。每個環狀資料路徑在每一方向是1012位元寬。
圖9B是根據本發明具體態樣的圖9A之部分處理器核心的擴充圖。圖9B包括L1資料快取906A(L1快取904的一部分)以及關於向量單元910和向量暫存器914的更多細節。特定而言,向量單元910是16寬的向量處理單元(VPU)(見16寬的算術邏輯單元[ALU]928),其執行整數、單精度浮點、雙精度浮點指令中的一或更多者。VPU支援以拌和單元920來拌和暫存器輸入、以數值轉換單元922A~B來做數值轉換、以複製單元924來對記憶體輸入做複製。寫入遮罩暫存器926則允許預測所得的向量寫入。
<具有整合式記憶體控制器和圖形的處理器>
圖10是處理器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可以包括一或更多個中階快取,例如第2階(L2)、第3階(L3)、第4階(L4)或其他階快取、最後階層快取(LLC)和/或其組合。雖然於一具體態樣,基於環的互連單元1012將整合式圖形邏輯1008、該組分享的快取單元1006、系統代理單元1010/(多個)整合式記憶體控制器單元1014互連,不過替代選擇性具體態樣可以使用任何數目之熟知的技術來互連此等單元。於一具體態樣,在一或更多個快取單元1006和核心1002A~N之間維持連貫性。
於某些具體態樣,一或更多個核心1002A~N能夠進行多執行緒。系統代理1010包括協調和操作核心1002A~N的那些組件。系統代理單元1010舉例而言可以包括電力控制單元(PCU)和顯示單元。PCU可以是或包括調節核心1002A~N和整合式圖形邏輯1008之電力狀態所需的邏輯和組件。顯示單元則是要驅動一或更多個外部連接的顯示器。
就架構指令組來看,核心1002A~N可以是均質的或異質的;也就是說,二或更多個核心1002A~N可以能夠執行相同的指令組,而其他者可以僅能夠執行該指令組的子集或不同的指令組。
<範例性電腦架構>
圖11~13是範例性電腦架構的方塊圖。此技
藝對於膝上型個人電腦(PC)、桌上型PC、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、切換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持式裝置和多樣之其他電子裝置所知的其他系統設計和組態也是適合的。一般而言,能夠併入如在此揭示之處理器和/或其他執行邏輯的許多各式各樣系統或電子裝置一般而言是適合的。
現在參見圖11,顯示的是依據本發明一具體態樣之系統1100的方塊圖。系統1100可以包括一或更多個處理器1110、1115,其耦合到控制器集線器1120。於一具體態樣,控制器集線器1120包括圖形記憶體控制器集線器(GMCH)1190和輸入/輸出集線器(IOH)1150(其可以在分開的晶片上);GMCH 1190包括記憶體和圖形控制器,記憶體1140和共同處理器1145則耦合於此;IOH 1150將輸入/輸出(I/O)裝置1160耦合到GMCH 1190。替代選擇而言,記憶體和圖形控制器中的一或二者整合在處理器裡(如在此所述),記憶體1140和共同處理器1145直接耦合到處理器1110,並且控制器集線器1120與IOH 1150是在單一晶片中。
額外處理器1115的可選用天性則在圖11中以虛線來表示。每個處理器1110、1115可以包括在此所述的一或更多個處理核心,並且可以是處理器1000的某種版本。
記憶體1140舉例而言可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或此二者的組合。對於至少一具體態樣而言,控制器集線器1120經由多點匯流排(例如前側匯流排[FSB])、點對點介面(例如快速路徑互連[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可以各使用點對點介面電路1276、1294、1286、1298而經由個別的P-P介面1252、1254來與晶片組1290交換資訊。晶片組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中相同的元件帶有相同的參考數字,並且圖13已經省卻圖12的特定方面,以便避免模糊了圖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]、隨機存取記憶體[RAM],例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化的唯讀記憶體[EPROM]、快閃記憶體、可電抹除可程式化的唯讀記憶體[EEPROM]、相變記憶體[PCM])、磁性或光學卡片、或適合儲存電子指令之任何其他類型的媒體。
據此,本發明的具體態樣也包括非暫態、有形之機器可讀取的媒體,其包含指令或包含設計資料,例如硬體敘述語言(HDL),其界定在此所述的結構、電路、設備、處理器和/或系統特色。此種具體態樣也可以稱為程式產品。
<仿真(包括二元翻譯、碼變型……)>
於某些情形,可以使用指令轉換器而將來自來源指令組的指令轉換成目標指令組。舉例而言,指令轉換器可以翻譯(譬如使用靜態二元翻譯、包括動態編譯的動態二元翻譯)、變型、仿真或另外轉換指令成為要由核
心所處理的一或更多個其他指令。指令轉換器可以實施於軟體、硬體、韌體或其組合。指令轉換器可以是在處理器上、在處理器外、或部分在處理器上而部分不在。
圖15是根據本發明的具體態樣之方塊圖,其對比出使用軟體指令轉換器來將來源指令組中的二元指令轉換成目標指令組中的二元指令。於示範的具體態樣,指令轉換器是軟體指令轉換器,雖然替代選擇而言指令轉換器可以實施於軟體、韌體、硬體或其多樣的組合。圖15顯示高階語言程式1502可以使用x86編譯器1504來編譯以產生x86二元碼1506,其可以由具有至少一x86指令組核心的處理器1516做本機執行。具有至少一x86指令組核心的處理器1516代表可以進行大致相同於具有至少一x86指令組核心的英特爾處理器功能的任何處理器,其相容的執行或另外處理:(1)英特爾x86指令組核心之指令組的實質部分;或者(2)目標是在具有至少一x86指令組核心的英特爾處理器上跑之應用程式或其他軟體的目標碼版本,以便達成大致相同於具有至少一x86指令組核心之英特爾處理器的結果。x86編譯器1504代表可操作以產生x86二元碼1506(譬如目標碼)的編譯器,該二元碼可以(有或無額外的連接處理)在具有至少一x86指令組核心的處理器1516上執行。類似而言,圖15顯示高階語言程式1502可以使用替代選擇性指令組編譯器1508來編譯以產生替代選擇性指令組二元碼1510,其可以由沒有至少一x86指令組核心的處理器1514(譬如處
理器所具有的核心執行加州Sunnyvale之MIPS科技公司的MIPS指令組和/或執行加州Sunnyvale之ARM控股公司的ARM指令組)來做本機執行。指令轉換器1512乃用於將x86二元碼1506轉換成可以由沒有x86指令組核心的處理器1514做本機執行的碼。這轉換碼不太可能相同於替代選擇性指令組二元碼1510,因為難以製作能夠這樣的指令轉換器;然而,轉換碼將完成一般作業,並且將由來自替代選擇性指令組的指令所組成。因此,指令轉換器1512代表軟體、韌體、硬體或其組合,其透過仿真、模擬或任何其他過程而允許不具有x86指令組處理器或核心的處理器或其他電子裝置來執行x86二元碼1506。
任何圖4~7所述的組件、特色、細節可選用而言也可以適用於任何圖2~3。在此揭示之任何處理器(譬如處理器325、具有負載儲存佇列432的處理器中的任一者)所述的組件、特色、細節可選用而言可以適用於在此揭示的任何方法(譬如任何方法220、546、660、770),其在具體態樣中可選用而言可以由此種處理器所進行。在此所述之具體態樣中的任何處理器(譬如處理器325、具有負載儲存佇列432的處理器中的任一者)可選用而言可以包括在此處揭示的任何系統中(譬如圖11~14的任何系統)。
於敘述和申請專利範圍,可以使用「耦合」和/或「連接」等詞連同其衍生詞。這些詞不打算作為彼此的同義詞。反而是在具體態樣,「連接」可以用於指出
二或更多個元件彼此直接實體和/或電接觸。「耦合」可以意謂二或更多個元件彼此直接實體和/或電接觸。然而,「耦合」也可以意謂二或更多個元件彼此不直接接觸,但仍彼此協同操作或互動。舉例而言,負載儲存佇列可以透過一或更多個中介組件而耦合於解碼單元。於圖形,使用箭號以顯示連接和耦合。
在此揭示的組件和前面圖形所示的方法可以由邏輯、模組或單元來實施,其包括硬體(譬如電晶體、閘、電路……)、韌體(譬如儲存微碼或控制訊號的非揮發性記憶體)、軟體(其譬如儲存在非暫態之電腦可讀取的儲存媒體上)或其組合。於某些具體態樣,邏輯、模組或單元可以包括至少某些或主要是硬體和/或韌體的混合,其可能組合了某些可選用的軟體。於圖示,已經顯示邏輯被分成區塊的範例,雖然在已經顯示和描述多個組件的一些情形,在適當下,它們可選用而言可以改為整合在一起而成為單一組件(譬如緩衝器項配置控制器334和解碼單元326的至少某些邏輯可選用而言可以合併、緩衝器項配置控制器434的邏輯可選用而言可以分開成不同的組件……)。於已經顯示和描述單一組件的其他情形,在適當下,它可選用而言可以分開成二或更多個組件。
可以已經使用「和/或」一詞。如在此所用,「和/或」一詞意謂一或另一者或二者(譬如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包括範例3的處理器,其中緩衝器項配置控制器是要:當負載和儲存緩衝器之個別者的目前配置項是在定限之下時,決定配置項在負載和儲存緩衝器的該個別者中;否則決定不配置該項在負載和儲存緩衝器的該個別者中。
範例5包括範例3的處理器,其中當給定的記憶體存取作業包括給定的負載作業時,負載儲存佇列當在以下條件時是要輸出給定的負載作業,而負載和儲存緩衝器項中的該至少一者不由緩衝器項配置控制器來配置:(1)給定的負載作業和對應於負載和儲存緩衝器中之已經被配置項的作業之間沒有相依性;以及(2)資源可用於輸出給定的負載作業。
範例6包括範例1到5中任一者的處理器,
其中對於對應於第一型記憶體存取指令的每個記憶體存取作業,緩衝器項配置控制器是要無條件的配置負載緩衝器項和儲存緩衝器項中的至少一者。
範例7包括範例1到6中任一者的處理器,其中負載儲存佇列進一步包括旁路緩衝器,其耦合於緩衝器項配置控制器,該旁路緩衝器具有多個旁路緩衝器項。
範例8包括範例7的處理器,其中對於對應於第二型記憶體存取指令的記憶體存取作業,緩衝器項配置控制器是要配置旁路緩衝器項;但對於對應於第一型記憶體存取指令的記憶體存取作業,緩衝器項配置控制器不是要配置旁路緩衝器項。
範例9包括範例7到8中任一者的處理器,其中旁路緩衝器是要比負載和儲存緩衝器更弱的被記憶體定序。
範例10包括範例7到9中任一者的處理器,其中旁路緩衝器是要具有比負載和儲存緩衝器更鬆弛的記憶體相依性檢查。
範例11包括範例7到10中任一者的處理器,其中對於對應於給定的第二型記憶體存取指令之給定的負載作業,緩衝器項配置控制器當以下至少一者時是要對於給定的負載作業來配置旁路緩衝器項:(1)給定的負載作業和對應於負載和儲存緩衝器中之一者的已經被配置項的至少一作業之間有相依性;以及(2)資源目前不可用於輸出給定的負載作業。
範例12包括範例7到11中任一者的處理器,其中對於對應於給定的第二型記憶體存取指令之給定的儲存作業,緩衝器項配置控制器是要針對給定的儲存作業來配置旁路緩衝器項。
範例13包括範例1到12中任一者的處理器,其中第一型記憶體存取指令是要包括至少一負載指令和至少一儲存指令,並且其中第二型記憶體存取指令是要包括預取指令、快取線清除指令、快取線寫回指令、在快取之間移動快取線的指令、持續承諾指令中的至少一者。
範例14是以處理器來進行的方法。方法包括接收第一型記憶體存取指令,並且接收第二型記憶體存取指令。方法也包括至少部分根據記憶體存取作業是否對應於第一型或第二型記憶體存取指令,而針對記憶體存取作業來配置負載緩衝器的負載緩衝器項和儲存緩衝器的儲存緩衝器項。
範例15包括範例14的方法,其中對於對應於第二型記憶體存取指令之給定的記憶體存取作業,該配置包括不配置負載緩衝器項,並且不配置儲存緩衝器項。
範例16包括範例14的方法,其中對於對應於給定的第二型記憶體存取指令之給定的記憶體存取作業,該配置包括決定是否配置負載緩衝器項和儲存緩衝器項中的至少一者。
範例17包括範例16的方法,其中該配置包括當負載和儲存緩衝器之個別者的目前配置項是在定限之
下時,決定配置項在負載和儲存緩衝器的該個別者中,否則決定不配置該項在負載和儲存緩衝器的該個別者中。
範例18包括範例16的方法,其進一步包括:當給定的記憶體存取作業包括給定的負載作業時,則在以下條件時輸出給定的負載作業,而不配置負載和儲存緩衝器項中的該至少一者:(1)給定的負載作業和對應於負載和儲存緩衝器中之已經被配置項的作業之間沒有相依性;以及(2)資源可用於輸出給定的負載作業。
範例19包括範例14到18中任一者的方法,其進一步包括:對於對應於第二型記憶體存取指令的記憶體存取作業,在旁路緩衝器中配置旁路緩衝器項;但對於對應於第一型記憶體存取指令的記憶體存取作業,則不配置旁路緩衝器項。
範例20包括範例19的方法,其進一步包括:對於旁路緩衝器,強制記憶體定序模型,其要比強制用於負載和儲存緩衝器的記憶體定序模型弱。
範例21包括範例14到20中任一者的方法,其中該接收第一型記憶體存取指令包括接收至少一負載指令和至少一儲存指令。而且,可選用而言,其中接收第二型記憶體存取指令包括接收預取指令、快取線清除指令、快取線寫回指令、在快取之間移動快取線的指令、持續承諾指令中的至少一者。
範例22是電腦系統,其包括互連和耦合於互連的處理器。處理器是要接收第一型記憶體存取指令和第
二型記憶體存取指令。處理器包括負載儲存佇列,其包括是要具有多個負載緩衝器項的負載緩衝器,並且包括是要具有多個儲存緩衝器項的儲存緩衝器。至少部分根據記憶體存取作業是否對應於第一型或第二型記憶體存取指令,負載儲存佇列是要針對記憶體存取作業來配置負載和儲存緩衝器項。電腦系統也包括動態隨機存取記憶體(DRAM),其耦合於互連。
範例23包括範例22的電腦系統,其中對於是要對應於第二型記憶體存取指令之給定的記憶體存取作業,負載儲存佇列不是要配置負載緩衝器項,並且不是要配置儲存緩衝器項。
範例24包括範例22的電腦系統,其中對於對應於給定的第二型記憶體存取指令之給定的記憶體存取作業,負載儲存佇列是要決定是否配置負載緩衝器項和儲存緩衝器項中的至少一者。
範例25包括範例22到24中任一者的電腦系統,其中負載儲存佇列進一步包括旁路緩衝器,其耦合於緩衝器項配置控制器,該旁路緩衝器具有多個旁路緩衝器項。而且,可選用而言,其中負載儲存佇列是要配置旁路緩衝器項給對應於第二型記憶體存取指令的記憶體存取作業,但不是要配置旁路緩衝器項給對應於第一型記憶體存取指令的記憶體存取作業。
範例26包括範例1到13中任一者的處理器,其進一步包括:可選用的分支預測單元,其預測分
支;以及可選用的指令預取單元,其耦合於分支預測單元,該指令預取單元預取指令。處理器可選用而言也可以包括:可選用的第1階(L1)指令快取,其耦合於指令預取單元,該L1指令快取儲存指令;可選用的L1資料快取,其儲存資料;以及可選用的第2階(L2)快取,其儲存資料和指令。處理器可選用而言也可以包括:指令提取單元,其耦合於解碼單元;L1指令快取;以及L2快取。處理器可選用而言也可以包括:暫存器更名單元,其更名暫存器;可選用的排程器,其排程一或更多個已經解碼的作業;以及可選用的承諾單元,其承諾執行結果。
範例27包括系統單晶片,其包括:至少一互連;範例1到13中任一者的處理器,其耦合於至少一互連;可選用的圖形處理單元(GPU),其耦合於至少一互連;可選用的數位訊號處理器(DSP),其耦合於至少一互連;可選用的顯示控制器,其耦合於至少一互連;可選用的記憶體控制器,其耦合於至少一互連;可選用的無線數據機,其耦合於至少一互連;可選用的影像訊號處理器,其耦合於至少一互連;可選用而與通用串聯匯流排(USB)3.0相容的控制器,其耦合於至少一互連;可選用而與藍牙4.1相容的控制器,其耦合於至少一互連;以及可選用的無線收發器控制器,其耦合於至少一互連。
範例28是處理器或其他設備,其可操作以進行範例14到21中任一者的方法。
範例29是處理器或其他設備,其包括進行範
例14到21中任一者之方法的手段。
範例30是處理器或其他設備,其包括可操作以進行範例14到21中任一者的方法之模組和/或單元和/或邏輯和/或電路和/或手段的任何組合。
範例31是大致如在此所述的處理器或其他設備。
範例32是處理器或其他設備,其是可操作以進行大致如在此所述的任何方法。
302‧‧‧第一型記憶體存取指令
310‧‧‧第二型記憶體存取指令
325‧‧‧處理器
326‧‧‧解碼單元
328‧‧‧對應於第一型的作業
330‧‧‧對應於第二型的作業
332‧‧‧負載儲存佇列
334‧‧‧緩衝器項配置控制器
335‧‧‧負載緩衝器
336‧‧‧儲存緩衝器
338‧‧‧旁路緩衝器(可選用的)
339‧‧‧配置負載和儲存緩衝器以用於對應於第一型的作業
340‧‧‧選項#1:配置負載和儲存緩衝器以用於對應於第二型的作業
341‧‧‧選項#2:配置旁路緩衝器以用於對應於第二型的作業
342‧‧‧選項#3:直接輸出對應於第二型的作業
Claims (25)
- 一種處理器,其包括:解碼單元,其解碼第一型記憶體存取指令並且輸出對應的記憶體存取作業,以及解碼第二型記憶體存取指令並且輸出對應的記憶體存取作業;以及負載儲存佇列,其耦合於該解碼單元,該負載儲存佇列包括:負載緩衝器,其是要具有多個負載緩衝器項;儲存緩衝器,其是要具有多個儲存緩衝器項;以及緩衝器項配置控制器,其耦合於該負載緩衝器並且耦合於該儲存緩衝器,該緩衝器項配置控制器至少部分根據記憶體存取作業是否對應於該第一型或該第二型記憶體存取指令來配置負載和儲存緩衝器項,其中,該第一型記憶體存取指令對應的該記憶體存取作業及該第二型記憶體存取指令對應的該記憶體存取作業皆被輸出到快取。
- 如申請專利範圍第1項的處理器,其中對於是要對應於該第二型記憶體存取指令之給定的記憶體存取作業,該緩衝器項配置控制器不是要配置負載緩衝器項,並且不是要配置儲存緩衝器項。
- 如申請專利範圍第1項的處理器,其中對於對應於給定的該第二型記憶體存取指令之給定的記憶體存取作業,該緩衝器項配置控制器是要決定是否配置負載緩衝器項和儲存緩衝器項中的至少一者。
- 如申請專利範圍第3項的處理器,其中該緩衝器項配置控制器是要:當該負載和儲存緩衝器之個別者的目前配置項是在定限之下時,決定配置項在該負載和儲存緩衝器的該個別者中;以及否則決定不配置該項在該負載和儲存緩衝器的該個別者中。
- 如申請專利範圍第3項的處理器,其中當該給定的記憶體存取作業包括給定的負載作業時,該負載儲存佇列當在以下條件時是要輸出該給定的負載作業,而該負載和儲存緩衝器項中的該至少一者不由該緩衝器項配置控制器來配置:(1)該給定的負載作業和對應於該負載和儲存緩衝器中之已經被配置項的作業之間沒有相依性;以及(2)資源可用於輸出該給定的負載作業。
- 如申請專利範圍第1項的處理器,其中對於對應於該第一型記憶體存取指令的每個記憶體存取作業,該緩衝器項配置控制器是要無條件的配置負載緩衝器項和儲存緩衝器項中的至少一者。
- 如申請專利範圍第1項的處理器,其中該負載儲存佇列進一步包括旁路緩衝器,其耦合於該緩衝器項配置控制器,該旁路緩衝器具有多個旁路緩衝器項。
- 如申請專利範圍第7項的處理器,其中對於對應於該第二型記憶體存取指令的記憶體存取作業,該緩衝器項配置控制器是要配置旁路緩衝器項;但對於對應於該第一 型記憶體存取指令的記憶體存取作業,該緩衝器項配置控制器不是要配置旁路緩衝器項。
- 如申請專利範圍第7項的處理器,其中該旁路緩衝器是要比該負載和儲存緩衝器更弱的被記憶體定序。
- 如申請專利範圍第7項的處理器,其中該旁路緩衝器是要具有比該負載和儲存緩衝器更鬆弛的記憶體相依性檢查。
- 如申請專利範圍第7項的處理器,其中對於對應於給定的該第二型記憶體存取指令之給定的負載作業,該緩衝器項配置控制器當以下至少一者時是要針對該給定的負載作業來配置旁路緩衝器項:(1)該給定的負載作業和對應於該負載和儲存緩衝器中之一者的已經被配置項的至少一作業之間有相依性;以及(2)資源目前不可用於輸出該給定的負載作業。
- 如申請專利範圍第7項的處理器,其中對於對應於給定的該第二型記憶體存取指令之給定的儲存作業,該緩衝器項配置控制器是要針對該給定的儲存作業來配置旁路緩衝器項。
- 如申請專利範圍第1項的處理器,其中該第一型記憶體存取指令是要包括至少一負載指令和至少一儲存指令,並且其中該第二型記憶體存取指令是要包括預取指令、快取線清除指令、快取線寫回指令、在快取之間移動快取線的指令、持續承諾指令中的至少一者。
- 一種由處理器所進行的方法,該方法包括: 接收第一型記憶體存取指令;接收第二型記憶體存取指令;至少部分根據記憶體存取作業是否對應於該第一型或該第二型記憶體存取指令,而針對該記憶體存取作業來配置負載緩衝器的負載緩衝器項和儲存緩衝器的儲存緩衝器項;以及將該第一型記憶體存取指令對應的該記憶體存取作業及該第二型記憶體存取指令對應的該記憶體存取作業輸出到快取。
- 如申請專利範圍第14項的方法,其中對於對應於該第二型記憶體存取指令之給定的記憶體存取作業,該配置包括不配置負載緩衝器項,並且不配置儲存緩衝器項。
- 如申請專利範圍第14項的方法,其中對於對應於給定的該第二型記憶體存取指令之給定的記憶體存取作業,該配置包括決定是否配置負載緩衝器項和儲存緩衝器項中的至少一者。
- 如申請專利範圍第16項的方法,其中該配置包括:當該負載和儲存緩衝器中之個別者的目前配置項是在定限之下時,決定配置項在該負載和儲存緩衝器的該個別者中;以及否則決定不配置該項在該負載和儲存緩衝器的該個別者中。
- 如申請專利範圍第16項的方法,其進一步包括: 當該給定的記憶體存取作業包括給定的負載作業時,則在以下條件時輸出該給定的負載作業,而不配置該負載和儲存緩衝器項中的該至少一者:(1)該給定的負載作業和對應於該負載和儲存緩衝器中之已經被配置項的作業之間沒有相依性;以及(2)資源可用於輸出該給定的負載作業。
- 如申請專利範圍第14項的方法,其進一步包括:對於對應於該第二型記憶體存取指令的記憶體存取作業,在旁路緩衝器中配置旁路緩衝器項;但對於對應於該第一型記憶體存取指令的記憶體存取作業,則不配置旁路緩衝器項。
- 如申請專利範圍第19項的方法,其進一步包括:對於該旁路緩衝器,強制記憶體定序模型,其要比強制用於該負載和儲存緩衝器的記憶體定序模型弱。
- 如申請專利範圍第14項的方法,其中該接收該第一型記憶體存取指令包括接收至少一負載指令和至少一儲存指令,並且其中接收該第二型記憶體存取指令包括接收預取指令、快取線清除指令、快取線寫回指令、在快取之間移動快取線的指令、持續承諾指令中的至少一者。
- 一種電腦系統,其包括:互連;處理器,其耦合於該互連,該處理器接收第一型記憶體存取指令和第二型記憶體存取指令,該處理器包括:負載儲存佇列,其包括: 負載緩衝器,其是要具有多個負載緩衝器項;以及儲存緩衝器,其是要具有多個儲存緩衝器項;其中至少部分根據記憶體存取作業是否對應於該第一型或該第二型記憶體存取指令,該負載儲存佇列是要針對該記憶體存取作業來配置負載和儲存緩衝器項,並且其中,該第一型記憶體存取指令對應的該記憶體存取作業及該第二型記憶體存取指令對應的該記憶體存取作業皆被輸出到快取;以及動態隨機存取記憶體(DRAM),其耦合於該互連。
- 如申請專利範圍第22項的電腦系統,其中對於是要對應於該第二型記憶體存取指令之給定的記憶體存取作業,該負載儲存佇列不是要配置負載緩衝器項,並且不是要配置儲存緩衝器項。
- 如申請專利範圍第22項的電腦系統,其中對於對應於給定的該第二型記憶體存取指令之給定的記憶體存取作業,該負載儲存佇列是要決定是否配置負載緩衝器項和儲存緩衝器項中的至少一者。
- 如申請專利範圍第22項的電腦系統,其中該負載儲存佇列進一步包括旁路緩衝器,其耦合於該緩衝器項配置控制器,該旁路緩衝器具有多個旁路緩衝器項,並且其中該負載儲存佇列是要配置旁路緩衝器項給對應於該第二型記憶體存取指令的記憶體存取作業,但不是要配置旁路 緩衝器項給對應於該第一型記憶體存取指令的記憶體存取作業。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/089,533 | 2016-04-02 | ||
US15/089,533 US20170286114A1 (en) | 2016-04-02 | 2016-04-02 | Processors, methods, and systems to allocate load and store buffers based on instruction type |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201741872A TW201741872A (zh) | 2017-12-01 |
TWI742048B true TWI742048B (zh) | 2021-10-11 |
Family
ID=59961614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106106537A TWI742048B (zh) | 2016-04-02 | 2017-02-24 | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170286114A1 (zh) |
TW (1) | TWI742048B (zh) |
WO (1) | WO2017172256A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9849372B2 (en) * | 2012-09-28 | 2017-12-26 | Sony Interactive Entertainment Inc. | Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title |
US10042580B2 (en) * | 2015-11-05 | 2018-08-07 | International Business Machines Corporation | Speculatively performing memory move requests with respect to a barrier |
JP6750011B2 (ja) * | 2016-06-15 | 2020-09-02 | 株式会社日立製作所 | 情報処理システム |
US10310997B2 (en) * | 2016-09-22 | 2019-06-04 | Advanced Micro Devices, Inc. | System and method for dynamically allocating memory to hold pending write requests |
JP7051546B2 (ja) * | 2018-04-16 | 2022-04-11 | キオクシア株式会社 | メモリシステムおよび制御方法 |
TWI670721B (zh) * | 2019-02-13 | 2019-09-01 | 睿寬智能科技有限公司 | 用於儲存裝置之不正常斷電測試方法及設備 |
US20210073056A1 (en) | 2019-09-11 | 2021-03-11 | Advanced Micro Devices, Inc. | Distributed scheduler providing execution pipe balance |
US11281466B2 (en) * | 2019-10-22 | 2022-03-22 | Advanced Micro Devices, Inc. | Register renaming after a non-pickable scheduler queue |
US11481219B2 (en) * | 2020-05-07 | 2022-10-25 | International Business Machines Corporation | Store prefetches for dependent loads in a processor |
CN112380017B (zh) * | 2020-11-30 | 2024-04-09 | 成都虚谷伟业科技有限公司 | 一种基于松散内存释放的内存管理系统 |
US11675592B2 (en) | 2021-06-17 | 2023-06-13 | International Business Machines Corporation | Instruction to query for model-dependent information |
CN114265812B (zh) * | 2021-11-29 | 2024-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 降低risc-v向量处理器访存延迟的方法、装置、设备及介质 |
CN116719479B (zh) * | 2023-07-03 | 2024-02-20 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273583A1 (en) * | 2004-06-02 | 2005-12-08 | Paul Caprioli | Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor |
US20100306477A1 (en) * | 2009-05-28 | 2010-12-02 | Luttrell Mark A | Store prefetching via store queue lookahead |
US20130298127A1 (en) * | 2012-05-04 | 2013-11-07 | Stephan G. Meier | Load-store dependency predictor content management |
US20150106595A1 (en) * | 2013-07-31 | 2015-04-16 | Imagination Technologies Limited | Prioritizing instructions based on type |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966734A (en) * | 1996-10-18 | 1999-10-12 | Samsung Electronics Co., Ltd. | Resizable and relocatable memory scratch pad as a cache slice |
US7493451B2 (en) * | 2006-06-15 | 2009-02-17 | P.A. Semi, Inc. | Prefetch unit |
KR101826080B1 (ko) * | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
US9632947B2 (en) * | 2013-08-19 | 2017-04-25 | Intel Corporation | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early |
US9524164B2 (en) * | 2013-08-30 | 2016-12-20 | Advanced Micro Devices, Inc. | Specialized memory disambiguation mechanisms for different memory read access types |
US9442727B2 (en) * | 2013-10-14 | 2016-09-13 | Oracle International Corporation | Filtering out redundant software prefetch instructions |
-
2016
- 2016-04-02 US US15/089,533 patent/US20170286114A1/en not_active Abandoned
-
2017
- 2017-02-24 TW TW106106537A patent/TWI742048B/zh active
- 2017-03-03 WO PCT/US2017/020585 patent/WO2017172256A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273583A1 (en) * | 2004-06-02 | 2005-12-08 | Paul Caprioli | Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor |
US20100306477A1 (en) * | 2009-05-28 | 2010-12-02 | Luttrell Mark A | Store prefetching via store queue lookahead |
US20130298127A1 (en) * | 2012-05-04 | 2013-11-07 | Stephan G. Meier | Load-store dependency predictor content management |
US20150106595A1 (en) * | 2013-07-31 | 2015-04-16 | Imagination Technologies Limited | Prioritizing instructions based on type |
Also Published As
Publication number | Publication date |
---|---|
WO2017172256A1 (en) | 2017-10-05 |
TW201741872A (zh) | 2017-12-01 |
US20170286114A1 (en) | 2017-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI742048B (zh) | 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統 | |
US10572376B2 (en) | Memory ordering in acceleration hardware | |
US10474375B2 (en) | Runtime address disambiguation in acceleration hardware | |
US10235175B2 (en) | Processors, methods, and systems to relax synchronization of accesses to shared memory | |
TWI761347B (zh) | 可中斷及可重啟矩陣乘法指令、處理器、方法和系統 | |
TWI628594B (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
KR101594502B1 (ko) | 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 | |
TW202141260A (zh) | 使用硬體佇列裝置的多核心通訊加速的設備 | |
TWI733760B (zh) | 記憶體複製指令、處理器、方法及系統 | |
JP6306729B2 (ja) | ストアをソート及びリタイアする命令及びロジック | |
TWI515653B (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
WO2017223004A1 (en) | Load-store queue for block-based processor | |
TW201732556A (zh) | 用於集合運算之加速的硬體內容關聯之資料結構 | |
KR20160113677A (ko) | 다수의 스트랜드들로부터 명령어들을 디스패칭하기 위한 프로세서 로직 및 방법 | |
JP2024527169A (ja) | マルチストランドアウトオブオーダプロセッサにおいてリタイア可能な複数の命令を特定する命令及びロジック | |
JP2024518587A (ja) | データ依存の不規則な演算のためのプログラム可能なアクセラレータ | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US20170185413A1 (en) | Processing devices to perform a conjugate permute instruction | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |