TWI775105B - 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 - Google Patents
用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 Download PDFInfo
- Publication number
- TWI775105B TWI775105B TW109122792A TW109122792A TWI775105B TW I775105 B TWI775105 B TW I775105B TW 109122792 A TW109122792 A TW 109122792A TW 109122792 A TW109122792 A TW 109122792A TW I775105 B TWI775105 B TW I775105B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- processor
- instructions
- mwait
- monitor
- Prior art date
Links
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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
指令及邏輯使用MONITOR及MWAIT指令提供使用者層級執行緒同步。可將處理器中的一或多個特定模型暫存器(MSR)組態為第一執行狀態,以指定使用者層級執行緒同步架構的支援。實施例包括多個硬體執行緒或處理核心、對應的監視位址狀態儲存器以為發佈MONITOR請求的複數個執行緒各者儲存最後監視位址、快取記憶體以為記憶體儲存位置的位址記錄MONITOR請求及關聯狀態、及回應於針對該位址之MWAIT請求的接收,為與MWAIT請求關聯的執行核心記錄監視位址的關聯等待觸發狀態;其中當該一或多個MSR組態為該第一執行狀態時,回應於該MWAIT請求的該接收,該執行核心係用以將請求執行緒轉變為最佳睡眠狀態。
Description
本揭示發明相關於處理邏輯、微處理器、及當由該處理器或其他處理邏輯執行時,實施邏輯、數學、或其他函數運算之關聯指令集架構的領域。本揭示發明特別相關於使用MONITOR及MWAIT架構的使用者層級執行緒同步。
現代高效能微處理器能具有許多執行核心及多級快取記憶體儲存器。因此對此等組件之間的更高互連帶寬的要求不斷增加。提供此種更高互連帶寬的一種技術包含經由共享互連並行地存取分散式快取記憶體的多個部分的分散式快取記憶體分區。
部分現代高效能微處理器的另一樣態包括多執行緒軟體及硬體、及經由共享記憶體的執行緒同步。經
由共享記憶體提供執行緒同步之二指令的範例會係Intel公司之SSE3指令集的MONITOR及MWAIT指令。MONITOR界定用於監視寫回儲存的位址範圍。MWAIT係用於指示執行緒正在等待將寫至由MONITOR指令界定之位址範圍的資料。然後該執行緒能轉變至低功率狀態並等待當資料寫至受監視位址範圍時由監視喚醒事件通知。
當上文提及的二監視技術為在0(零)權限等級的MONITOR及MWAIT請求保留時,額外的挑戰出現。例如,使用會包含系統呼叫的MONITOR及MWAIT的任何執行緒同步及/或功率管理可引入瓶頸並不利地影響執行緒同步及/或功率管理的效能。
迄今為止,解決此等挑戰之用於經由MONITOR及MWAIT指令實作執行緒同步的有效技術、及此種效能限制問題的可能解決方案、以及設計、驗證、及其他複雜性仍未經充分地探討。
100:電腦系統
102、200、500、610、615、870、880、1000、1215、1410:處理器
104:1級(L1)內部快取記憶體
106、145、164、208、210:暫存器檔案
108、142、162、462:執行單元
109、143:封裝指令集
110:處理器匯流排
112:圖形控制器
114:加速圖形埠(APG)互連
116:系統邏輯晶片
118:記憶體介面
120、640、732、734、832、834、1140:記憶體
122:系統I/O
124:資料儲存器
126:無線收發器
128:韌體匯流排(快閃記憶體BIOS)
130:I/O控制器匯流排(ICH)
134:網路控制器
140、160:資料處理系統
141:匯流排
144、165、165B:解碼器
146:同步動態隨機存取記憶體(SDRAM)控制
147:靜態隨機存取記憶體(SRAM)控制
148:叢發快閃記憶體介面
149:個人電腦記憶卡國際協會(PCMCIA)/Compact
Flash(CF)卡控制
150:液晶顯示器(LCD)控制
151:直接記憶體存取(DMA)控制器
152:匯流排主介面
153:I/O匯流排
154:I/O橋接器
155:通用異步接收器/發射器(UART)
156:通用串列匯流排(USB)
157:藍牙無線UART
158:I/O擴充介面
159、170:處理核心
161:SIMD共處理器
163:指令集
166:主處理器
167:快取記憶體
168:輸入/輸出系統
169:無線介面
171:共處理器匯流排
201:有序前端
202:快速排程器
203:無序執行引擎
204:慢速/通用浮點排程器
206:簡單浮點排程器
211:執行方塊
212、214:位址產生單元(AGU)
216、218:快速ALU
220:慢速ALU
222:浮點ALU
224:浮點移動單元
226:指令預提取器
228:指令解碼器
230:追蹤快取記憶體
232:微碼ROM
234:微運算佇列
310:封裝位元組
320:封裝字組
330:封裝雙字組(dword)
341:封裝半精準
342:封裝單精準
343:封裝倍精準
344:無正負號封裝位元組表示
345:有正負號封裝位元組表示
346:無正負號封裝字組表示
347:有正負號封裝字組表示
348:無正負號封裝雙字組表示
349:有正負號封裝雙字組表示
360、380:運算編碼(運算碼)格式
361、362、371、372、383、384、387、388、392:欄位
363、373:MOD欄位
364、365、374、375、385、390:來源運算元識別符
366、376、386:目標運算元識別符
370、397、398:替代運算編碼(運算碼)格式
378:前置位元組
381:條件欄位
382、389:CDP運算碼欄位
391、396:VEX前置位元組
393:比例-索引-基底(SIB)識別符
394:位移識別符
395:立即位元組
400:處理器管線
402:提取級
404:長度解碼級
406:解碼級
408:配置級
410:更名級
412:排程級
414:暫存器讀取/記憶體讀取級
416:執行級
418:寫回/記憶體寫入級
422:異常管理級
424:提交級
430:前端單元
432:分支預測單元
434:指令快取單元
436:指令轉換後備緩衝器(TLB)
438:指令提取單元
440:解碼單元
450:執行引擎單元
452:更名/配置器單元
454:引退單元
456:排程器單元
458:實體暫存器檔案單元
460:執行叢集
464:記憶體存取單元
470:記憶體單元
472:資料TLB單元
474:資料快取單元
476:2級(L2)快取單元
490、1450、1460、1470、1480:處理器核心
502A、502N:核心
506:共享快取記憶體單元
508:積集圖形邏輯
510:系統代理
512:基於環形的互連單元
514、772、782:積集記憶體控制器單元
516:匯流排控制器單元
600:系統
620:圖形記憶體控制器集線器(GMCH)
645:顯示器
650:輸入/輸出(I/O)控制器集線器
660:外部圖形裝置
670:周邊裝置
695:前側匯流排(FSB)
700:第二系統
714、814:I/O裝置
716:第一匯流排
718:匯流排橋接器
720:第二匯流排
722:鍵盤及/或滑鼠
724:音訊I/O
727:通訊裝置
728:儲存單元
730:指令/碼及資料
738:高效能圖形電路
739:高效能圖形介面
750:點對點互連
752、754、776、778、786、788:點對點(P-P)介面
770:第一處理器
780:第二處理器
790、890:晶片組
794、798:點對點介面電路
796:介面
800:第三系統
815:傳統I/O裝置
872、882:積體記憶體及I/O控制邏輯
900:SoC
902:互連單元
910:應用處理器
920:媒體處理器
924、1015:影像處理器
926:音訊處理器
928、1020:視訊處理器
930:靜態隨機存取記憶體(SRAM)單元
932:直接記憶體存取(DMA)單元
940:顯示單元
1005:CPU
1010:GPU
1025:USB控制器
1030:UART控制器
1035:SPI/SDIO控制器
1040:顯示器裝置
1045:高解析多媒體介面(HDMI)控制器
1050:MIPI控制器
1055:快閃記憶體控制器
1060:雙倍資料速率(DDR)控制器
1065:安全引擎
1070:I2S/I2C(積體電路間聲音/積體電路間)介面
1110:硬體或軟體模型
1120:模擬軟體
1130:儲存器
1150:有線連接
1160:無線連接
1205:程式
1210:模仿邏輯
1302:高階語言
1304:x86編譯器
1306:x86二進位碼
1308:替代指令集編譯器
1310:替代指令集二進位碼
1312:指令變換器
1314:不具有至少一x86指令集核心的處理器
1316:具有至少一x86指令集核心的處理器
1401:處理系統
1411、1451、1461、1471、1481:特定模型暫存器(MSR)
1418:低階快取記憶體(LLC)
1419:內部快取記憶體
1420:內部處理器快取記憶體
1421:近端記憶體
1422:遠端記憶體
1436、1437、1438、1439:系統記憶體
1443、1453、1463、1473、1483:最後監視位址
1444、1454、1464、1474、1484:關聯狀態
1447、1448、1449:外部快取記憶體
1455、1465、1475、1485:受監視位址狀態儲存器(MASS)
1456、1466、1476、1486:1級內部處理器快取記憶體
1457、1477:2級內部處理器快取記憶體
1501:處理
本發明係經由例示而非限制方式在隨附圖式的圖中說明。
圖1A係執行MONITOR及MWAIT指令以提供使用者層級執行緒同步的系統之一實施例的方塊圖。
圖1B係執行MONITOR及MWAIT指令以提供使用者層級執行緒同步的系統之另一實施例的方塊圖。
圖1C係執行MONITOR及MWAIT指令以提
供使用者層級執行緒同步的系統之另一實施例的方塊圖。
圖2係執行MONITOR及MWAIT指令以提供使用者層級執行緒同步的處理器之一實施例的方塊圖。
圖3A根據一實施例描繪封裝資料類別。
圖3B根據一實施例描繪封裝資料類別。
圖3C根據一實施例描繪封裝資料類別。
圖3D根據一實施例描繪編碼成使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
圖3E根據另一實施例描繪編碼成使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
圖3F根據另一實施例描繪編碼成使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
圖3G根據另一實施例描繪編碼成使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
圖3H根據另一實施例描繪編碼成使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
圖4A描繪執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的處理器微架構之一實施例的元件。
圖4B描繪執行其使用MONITOR及MWAIT
指令提供使用者層級執行緒同步之指令的處理器微架構之另一實施例的元件。
圖5係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的處理器之一實施例的方塊圖。
圖6係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的電腦系統之一實施例的方塊圖。
圖7係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的電腦系統之另一實施例的方塊圖。
圖8係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的電腦系統之另一實施例的方塊圖。
圖9係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的系統單晶片之一實施例的方塊圖。
圖10係執行其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的處理器之實施例的方塊圖。
圖11係使用MONITOR及MWAIT指令提供使用者層級執行緒同步的IP核心發展系統之一實施例的方塊圖。
圖12描繪使用MONITOR及MWAIT指令提
供使用者層級執行緒同步之架構模擬系統的一實施例。
圖13描繪轉譯其使用MONITOR及MWAIT指令提供使用者層級執行緒同步之指令的系統的一實施例。
圖14描繪用於使用MONITOR及MWAIT指令以提供使用者層級執行緒同步之處理系統的一實施例。
圖15描繪使用MONITOR及MWAIT指令提供使用者層級執行緒同步的處理之一實施例的流程圖。
以下描述揭示在處理器、電腦系統、或其他處理裝置內或關聯於彼等使用MONITOR及MWAIT指令提供使用者層級執行緒同步的方法及處理邏輯裝置。
指令及邏輯使用MONITOR及MWAIT指令提供使用者層級執行緒同步。可將處理器中的一或多個特定模型暫存器(MSR)組態成使用者-致能MONITOR及MWAIT執行狀態以指定使用者層級執行緒同步架構的支援。實施例包括多個硬體執行緒或處理核心、對應的監視位址狀態儲存器(MASS)以為發佈MONITOR請求的複數個執行緒各者儲存最後監視位址、快取記憶體以為記憶體儲存位置的位址記錄MONITOR請求及關聯狀態、回應於針對該位址之MWAIT請求的接收,為與MWAIT請求關聯的執行核心記錄監視位址的關聯等待觸發狀態;其中當該一或多個MSR(例如,藉由IA32_MISC_ENABLE
MSR)組態為使用者-MWAIT-致能執行狀態時,回應於該MWAIT請求的該接收,該執行核心係用以將請求執行緒轉變為最佳睡眠狀態。在部分實施例中,在較深睡眠狀態僅為在0(零)權限等級的MWAIT請求保留的同時,允許使用者應用程式轉變至輕權重睡眠狀態(例如,僅至C1)。
將理解使用者層級執行緒同步可針對0(零)權限等級以外的MONITOR及MWAIT請求使用指令及處理邏輯提供,而不需要複雜的硬體支援及/或設計工作。
在以下描述中,陳述許多具體細節,諸如,處理邏輯、處理器種類、微架構條件、事件、及致能機制等,以提供對本發明之實施例的更徹底瞭解。然而,熟悉本發明之人士將領會可實踐本發明而無需此種具體細節。另外,部分已為人所熟知的結構、及電路等並未詳細地顯示,以避免不必要地混淆本發明的實施例。
雖然以下實施例係參考至處理器而描述,其他實施例可應用至其他種類的積體電路及邏輯裝置。相似技術及本發明之實施例的教示能應用至能從更高管線處理量及改善效能獲利的其他種類的電路或半導體裝置。本發明之實施例的教示可應用於實施資料操控的任何處理器或機器。然而,本發明並未受限於實施512位元、256位元、128位元、64位元、32位元、或16位元資料操作的處理器或機器,並能應用至在其中實施資料的操控或管理的任何處理器及機器。此外,以下描述提供範例,且隨附
圖式顯示用於說明之目的的各種範例。然而,不應以限制方式將此等範例詮釋為僅企圖提供本發明之實施例的範例而非提供本發明之實施例的所有可能實作的詳盡列表。
雖然以下範例在執行單元及邏輯電路的背景下描述指令管理及分佈,本發明的其他實施例能藉由儲存在機器可讀實體媒體上之當藉由機器執行時導致該機器實施與本發明之至少一實施例一致的功能的資料及/或指令完成。在一實施例中,將與本發明之實施例關聯的功能具現在機器可執行指令中。該等指令能用於導致以該等指令程式化的通用或特殊用途處理器實施本發明的該等步驟。本發明的實施例可提供為電腦程式產品或軟體,其可包括具有儲存於其上之可用於編程電腦(或其他電子裝置)以實施根據本發明之實施例的一或多個運算之指令的機器或電腦可讀媒體。或者,本揭示發明之實施例的步驟可藉由包含用於實施該等步驟之固定功能邏輯的特定硬體組件,或藉由已編程電腦組件及固定功能硬體組件的任何組合實施。
用於編程邏輯以實施本發明之實施例的指令能儲存在系統的記憶體內,諸如,DRAM、快取記憶體、快閃記憶體、或其他儲存器。另外,指令能藉由網路或藉由其他電腦可讀媒體散布。因此機器可讀媒體可包括用於以可由機器(例如,電腦)讀取的形式儲存或發送資訊的任何機制,但未受限於,軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存
取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或使用在經由電、光、聲響、或其他形式(例如,載波、紅外線信號、數位信號等)的傳播信號透過網際網路的資訊之發送中的實體機器可讀儲存器。因此,電腦可讀媒體包括適於以可由機器(例如,電腦)讀取的形式儲存或發送電子指令或資訊之任何種類的實體機器可讀媒體。
設計可通過從建立至模擬至製造的各種階段。表示設計的資料可用許多方式表示設計。首先,如在模擬中有用的,硬體可使用硬體描述語言或其他功能描述語言表示。此外,具有邏輯及/或電晶體閘的電路級模型可在設計處理的部分階段製造。此外,多數設計在特定階段到達表示硬體模型中之各種裝置的實體配置的資料層級。在使用習知半導體製造技術的情形中,針對用於製造積體電路的遮罩,表示硬體模型的資料可係指定各種特徵存在或不存在於不同遮罩層上的資料。在設計的任何表示中,資料可用任何形式的機器可讀媒體儲存。記憶體或磁性或光學儲存器,諸如,光碟,可係該機器可讀媒體,以儲存經由經調變或另外產生的光或電波發送的資訊以發送此種資訊。當將指示或運載碼或設計的電載波發送至實施該電信號的複製、緩衝、或重發送的程度時,產生新複本。因此,通訊供應商或網路供應商可將具現本發明的實施例之技術的物品,諸如,編碼為載波的資訊,至少暫
時,儲存在實體機器可讀媒體上。
在現代處理器中,使用許多不同執行單元處理及執行各式各樣的碼及指令。不係所有指令均相等地產生,部分指令較快完成而其他指令能消耗許多時鐘循環完成。指令的通量越快,處理器的整體效能越好。因此儘可能快地執行儘可能多的指令會係有利的。然而,有具有較大複雜度並需要更多執行時間及處理器資源的特定指令。例如,有浮點指令、載入/儲存運算、資料移動等。
當更多電腦系統使用在網際網路、文字、及多媒體應用中時,額外處理器支援已隨時間引入。在一實施例中,指令集可與一或多個電腦架構關聯,包括資料種類、指令、暫存器架構、定址模式、記憶體架構、中斷及異常管理、及外部輸入及輸出(I/O)。
在一實施例中,指令集架構(ISA)可藉由一或多個微架構實作,其可包括用於實作一或多個指令集的處理器邏輯及電路。因此,具有不同微架構的處理器能分享至少一部分的常見指令集。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自加州桑尼維爾之Advanced Micro Devices,Inc.的處理器實作幾乎完全相同的x86指令集版本(具有已隨較新版本加入的部分延伸),但具有不同的內部設計。相似地,由其他處理器發展公司,諸如,ARM Holdings,Ltd.、MIPS、或彼等的授權方或採納方,設計的處理器可共享至少一部分的常見指令集,但可包括不同的處理器設計。例如,ISA的相同暫
存器架構可用使用新的或已為人熟知之技術的不同方式實作在不同微架構中,包括專屬實體暫存器、使用暫存器更名機制(例如,使用暫存器化名表(RAT)、重排序緩衝器(ROB)、及引退暫存器檔案的一或多個動態配置實體暫存器等。在一實施例中,暫存器可包括可或不可由軟體程式設計師定址的一或多個暫存器、暫存器架構、暫存器檔案、或其他暫存器組。
在一實施例中,指令可包括一或多種指令格式。在一實施例中,指令格式可指示各種欄位(位元數、位元的位置等),以,在其他事物中,指定待實施的運算及將於其上實施運算的運算元(等)。部分指令格式可更藉由指令樣板(或次格式)界定。例如,指定指令格式的指令樣本可界定成具有指令格式欄位的不同次組及/或界定成具有受不同解譯的指定欄位。在一實施例中,指令使用指令格式表示(且若已界定,以該指令格式之指令樣本的指定一者表示)並指定或指示該運算及該運算將於其上運算的運算元。
科學、金融、通用自動向量化、RMS(辨識、探掘、及合成)、及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法、及音訊操控)可需要在大量資料項上實施相同操作。在一實施例中,單指令多資料(SIMD)係指導致處理器在多個資料元件上實施運算的指令種類。SIMD技術可使用在能將暫存器中的位元邏輯地分割為許多固定尺寸
或可變尺寸之資料元件的處理器中,該等元件各者代表個別值。例如,在一實施例中,64-位元暫存器中的位元可組織為包含四個分離的16-位元資料元件的來源運算元,彼等各者代表分離的16-位元值。此種資料可稱為「封裝」資料種類或「向量」資料種類,且此資料種類的運算元稱為封裝資料運算元或向量運算元。在一實施例中,封裝資料項或向量可係儲存在單一暫存器內的一系列封裝資料元件,且封裝資料運算元或向量運算元可係SIMD指令(或「封裝資料指令」或「向量指令」)的來源或目的運算元。在一實施例中,SIMD指令指定待於二來源向量運算元上實施的單一向量運算,以產生相同或不同尺寸、具有相同或不同數量之資料元件、及相同或不同之資料元件次序的目標向量運算元(也稱為結果向量運算元)。
SIMD技術,諸如,由具有包括x86、MMXTM、串流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之指令集的Intel® CoreTM處理器、ARM處理器,諸如,具有包括向量浮點(VFP)及/或NEON指令之指令集的ARM Cortex®處理器家族、及MIPS處理器,諸如,由中國科學院之計算技術研究所(ICT)發展的Loongson處理器家族使用的技術,已致能應用效能上的顯著改善(CoreTM及MMXTM係加州聖克拉拉的Intel公司的註冊商標或商標)。
在一實施例中,目標/來源暫存器/資料係通用術語,以代表對應資料或運算的來源及目標。在部分實施
例中,彼等可藉由具有與所描寫之名稱或功能以外的名稱或功能的暫存器、記憶體、或其他儲存區實作。例如,在一實施例中,「DEST1」可係暫時儲存暫存器或其他儲存區,然而「SRC1」及「SRC2」可係第一及第二來源儲存暫存器或其他儲存區,並依此類推。在其他實施例中,SRC及DEST儲存區的二或多者可對應於相同儲存區(例如,SIMD暫存器)內的不同資料儲存元件。在一實施例中,來源暫存器的一者也可藉由,例如,將在第一及第二來源資料上實施之運算的結果寫回至使用為目標暫存器之二來源暫存器之一者,作用為目標暫存器。
圖1A係根據本發明之一實施例使用包括執行單元以執行指令的處理器形成之範例電腦系統的方塊圖。根據本發明,諸如,在本文描述的實施例中,系統100包括組件,諸如,處理器102,以利用包括邏輯的執行單元實施用於處理資料的演算法。系統100代表基於由加州聖克拉拉的Intel公司銷售之PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM、及/或StrongARMTM微處理器的處理系統,雖然也可使用其他系統(包括具有其他微處理器的PC、工程工作站、及機上盒等)。在一實施例中,範例系統100可執行由華盛頓州雷蒙德的微軟公司銷售之WINDOWSTM作業系統的版本,雖然也可使用其他作業系統(例如,UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。因此,本發明的實施例並未受限於硬體電路及軟體之任何具體組合。
實施例並未受限於電腦系統。本發明的其他實施例能使用在其他設備中,諸如,手持設備及嵌入式應用。手持設備的部分範例包括行動電話、網際網路協定設備、數位相機、個人數位助理(PDA)、及手持PC。嵌入式應用能包括微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、或能實施根據至少一實施例之一或多個指令的任何其他系統。
圖1A係根據本發明的一實施例以包括一或多個執行單元108以實施演算法以實施至少一個指令的處理器102形成之電腦系統100的方塊圖。一實施例可在單處理器桌上型或伺服器系統的背景中描述,但其他實施例能包括在多處理器系統中。系統100係「集線器」系統架構的範例。電腦系統100包括處理器102以處理資料信號。例如,處理器102能係複雜指令集電腦(CISC)微處理器、精簡指令集計算(RISC)微處理器、極長指令(VLIW)微處理器、實作指令集之組合的處理器、或任何其他處理器裝置,諸如,數位訊號處理器。處理器102耦接至其能在處理器102及系統100中的其他組件之間傳輸資料信號的處理器匯流排110。系統100的元件實施已為熟悉本技術的人士所熟知之彼等的習知功能。
在一實施例中,處理器102包括1級(L1)內部快取記憶體104。取決於架構,處理器102能具有單內部快取記憶體或多級內部快取記憶體。或者,在另一實
施例中,快取記憶體能位於處理器102外部。其他實施例也能依據特定實作及需要包括內部及外部快取記憶體二者的組合。暫存器檔案106能將不同類別的資料儲存在包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標器暫存器的各種暫存器中。
包括邏輯以實施整數及浮點操作的執行單元108也駐留在處理器102中。處理器102也包括儲存用於特定巨集指令之微碼的微碼(ucode)ROM。針對一實施例,執行單元108包括邏輯以管理封裝指令集109。藉由將封裝指令集109包括在通用處理器102的指令集中,並與關聯電路一起執行該等指令,由許多多媒體應用程式使用的運算可在通用處理器102中使用封裝資料實施。因此,許多多媒體應用程式能針對在封裝資料上實施運算藉由使用處理器資料匯流排的完整寬度而加速並更有效率地執行。此能消除每次一個資料元素地橫跨處理器的資料匯流排轉移較小資料單元的需要,以實施一或多個運算。
執行單元108的其他實施例也能使用在微控制器、嵌入式處理器、圖形裝置、DSP、及其他種類的邏輯電路中。系統100包括記憶體120。記憶體120能包括動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體120能儲存指令及/或藉由能由處理器102執行之資料信號表示的資料。
系統邏輯晶片116耦接至處理器匯流排110
及記憶體120。說明實施例中的系統邏輯晶片116係記憶體控制器集線器(MCH)。處理器102能經由處理器匯流排110通訊至MCH 116。MCH 116為指令及資料儲存並為圖形命令、資料、及紋理的儲存提供至記憶體120的高帶寬記憶體路徑118。MCH 116在處理器102、記憶體120、及系統100中的其他組件之間引導資料信號,並在處理器匯流排110、記憶體120、及系統I/O 122之間橋接資料信號。在部分實施例中,系統邏輯晶片116能提供用於耦接至圖形控制器112的圖形埠。MCH 116經由記憶體介面118耦接至記憶體120。圖形卡112經由加速圖形埠(APG)互連114耦接至MCH 116。
系統100使用專屬集線器介面匯流排122以耦接MCH 116至I/O控制器匯流排(ICH)130。ICH 130經由區域I/O匯流排提供至部分I/O裝置的直接連接。區域I/O匯流排係用於連接周邊至記憶體120、晶片組、及處理器102的高速I/O匯流排。部分範例係音訊控制器、韌體匯流排(快閃記憶體BIOS)128、無線收發器126、資料儲存器124、包含使用者輸入及鍵盤介面的傳統I/O控制器、串列擴充埠,諸如,通用串列匯流排(USB)、及網路控制器134。資料儲存裝置124能包含硬碟驅動器、軟碟驅動器、CD-ROM裝置、快閃記憶體裝置、或其他大量儲存裝置。
針對系統的另一實施例,根據一實施例的指令能由系統單晶片使用。系統單晶片的一實施例包含處理
器及記憶體。用於一個此種系統的記憶體係快閃記憶體。快閃記憶體能位於與處理器及其他系統組件相同的晶粒上。另外,其他邏輯區塊,諸如,記憶體控制器或圖形控制器,也能位於系統單晶片上。
圖1B描繪實作本發明的一實施例之原理的資料處理系統140。熟悉本技術的人士將輕易地理解本文描述的實施例能使用替代處理系統而不脫離本發明之實施例的範圍。
電腦系統140包含能實施根據一實施例之至少一個指令的處理核心159。針對一實施例,處理核心159代表任何架構種類的處理單元,包括但未受限於CISC、RISC、或VLIW種類架構。處理核心159也可適用於以一或多種處理技術製造並藉由以充份細節表示在機器可讀媒體上而可適於促進該製造。
處理核心159包含執行單元142、一組暫存器檔案(等)145、及解碼器144。處理核心159也包括其非理解本發明的實施例之所必需的額外電路(未圖示)。執行單元142係用於執行由處理核心159接收的指令。除了實施典型的處理器指令外,執行單元142能實施用於在封裝資料格式上實施運算之封裝指令集143中的指令。封裝指令集143包括用於實施本發明之實施例的指令及其他封裝指令。執行單元142藉由內部匯流排耦接至暫存器檔案145。暫存器檔案145代表處理核心159上用於儲存資訊,包括資料,的儲存區。如先前提及的,已理解儲存區
用於儲存並不關鍵的封裝資料。執行單元142耦接至解碼器144。解碼器144用於將由處理核心159接收的指令解碼為控制信號及/或微碼進入點。回應於此等控制信號及/或微碼進入點,執行單元142實施合適運算。在一實施例中,解碼器係用於解譯指令的運算碼,其將指示何運算應在指示在該指令內的該對應資料上實施。
處理核心159係與匯流排141耦接,其用於與各種其他系統裝置,其可包括但未限於,例如,同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/Compact Flash(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151、及其他匯流排主介面152,通訊。在一實施例中,資料處理系統140也可包含用於經由I/O匯流排153與各種I/O裝置通訊的I/O橋接器154。此種I/O裝置可包括但未限於,例如,通用異步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157、及I/O擴充介面158。
資料處理系統140的一實施例對行動、網路、及/或無線通訊及能實施包括文字字串比較運算之SIMD運算的處理核心159提供。處理核心159可用各種音訊、視訊、成像、及通訊演算法,包括離散轉換,諸如,華須-哈德瑪(Walsh-Hadamard)轉換、快速傅立葉轉換(FFT)、離散餘弦轉換(DCT)、及彼等個別的反
轉換;壓縮/解壓縮技術,諸如,顏色空間轉換、視訊編碼動作估計、或視訊解碼動作補償;及調變/解調變(MODEM)功能,諸如,脈衝編碼調變(PCM),程式化。
圖1C描繪能執行MONITOR及MWAIT指令以提供使用者層級執行緒同步之資料處理系統的另一替代實施例。根據一替代實施例,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可選擇性地耦接至無線介面169。SIMD共處理器161能實施包括根據一實施例之指令的運算。處理核心170可適於以一或多種處理技術製造並藉由以充份細節表示在機器可讀媒體上而可適於促進包括處理核心170之全部或一部分資料處理系統160的製造。
在一實施例中,SIMD共處理器161包含執行單元162及一組暫存器檔案(等)164。主處理器166的一實施例包含解碼器165以辨識包括根據一實施例用於由執行單元162執行的指令之指令集163的指令。針對其他實施例,SIMD共處理器161也包含至少部分的解碼器165B以解碼指令集163的指令。處理核心170也包括其非理解本發明的實施例之所必需的額外電路(未圖示)。
在運算時,主處理器166執行資料處理指令的串流,該等指令控制包括與快取記憶體167、及輸入/輸出系統168之互動的通用型資料處理運算。將SIMD共處
理器指令嵌入在資料處理指令的串流內。主處理器166的解碼器165將此等SIMD共處理器指令辨識為係應由附接的SIMD共處理器161執行之種類的指令。因此,主處理器166在共處理器匯流排171上發佈此等SIMD共處理器指令(或代表SIMD共處理器指令的控制信號),彼等在該匯流排上由任何附接的SIMD共處理器所接收。在此情形中,SIMD共處理器161將接受及執行企圖用於其之任何已接收的SIMD共處理器指令。
用於藉由SIMD共處理器指令處理的資料可經由無線介面169接收。例如,語音通訊可用數位信號的形式接收、其可由SIMD共處理器指令處理以重產生代表語音通訊的數位音訊樣本。例如,壓縮音訊及/或視訊可用數位位元串流的形式接收,其可由SIMD共處理器指令處理以重產生數位音訊樣本及/或動作視訊框。針對處理核心170的一實施例,將主處理器166及SIMD共處理器161積集至包含執行單元162、一組暫存器檔案(等)164、及解碼器165的單一處理核心170中,以辨識包括根據一實施例的指令之指令集163的指令。
圖2係根據本發明之一實施例用於包括邏輯電路以實施指令的處理器200之微架構的方塊圖。在部分實施例中,能實作根據一實施例的指令以在具有位元組、字組、雙字組、四字組等的尺寸,以及資料類別,諸如,單及倍精準整數及浮點資料類別,的資料元件上運算。在一實施例中,有序前端201係提取待執行之指令並備妥彼
等以待稍後在處理器管線中使用之處理器200的部分。前端201可包括數個單元。在一實施例中,指令預提取器226從記憶體提取指令並將彼等饋送至依次解碼或解譯彼等的指令解碼器228。例如,在一實施例中,解碼器將經接收指令解碼為機器能執行之稱為「微指令」或「微運算」(也稱為微運算(micro op)或微運算(uop))的一或多個運算。在其他實施例中,根據一實施例,解碼器將指令剖析為由微架構使用以實施運算的運算碼及對應的資料及控制欄位。在一實施例中,追蹤快取記憶體230取用已解碼微運算並將彼等組合為程式有序序列或在用於執行的微運算佇列234中追蹤。當追蹤快取記憶體230遭遇複雜指令時,微碼ROM 232提供完成操作所需的微運算。
部分指令轉換為單一微運算,然而其他指令需要數個微運算以完成全部操作。在一實施例中,若需要多於四個微運算以完成指令,解碼器228存取微碼ROM 232以執行該指令。針對一實施例,能針對在指令解碼器228的處理將指令解碼為小量的微運算。在另一實施例中,萬一需要許多微運算完成操作,能將指令儲存在微碼ROM 232內。追蹤快取記憶體230係指進入點可程式化邏輯陣列(PLA)以決定用於從微碼ROM 232讀取微碼序列的正確微指令指標,以根據一實施例完成一或多個指令。在微碼ROM 232完成排序用於指令的微運算後,機器的前端201恢復從追蹤快取記憶體230提取微運算。
無序執行引擎203係指令準備執行之所在。
無序執行引擎具有許多緩衝器以當指令通過管線並針對執行受排程時,使指令流平滑化並重排序以最佳化效能。配置器邏輯配置各微運算所需要的機器緩衝器及資源以執行。暫存器更名邏輯將邏輯暫存器更名為暫存器檔案中的項目。在指令排程器的前端,配置器也為一者用於記憶體運算及一者用於非記憶體運算的二個微運算佇列之一者中的各微運算配置項:記憶體排程器、快速排程器202、慢速/通用浮點排程器204、及簡單浮點排程器206。微運算排程器202、204、206基於彼等的相關輸入暫存器運算元來源的就緒性及微運算完成彼等運算所需要的執行資源的可用性決定微運算何時準備執行。一實施例的快速排程器202能在每半個主時鐘週期上排程,同時其他排程器僅能每主處理器時鐘週期排程一次。排程器仲裁調度埠以排程用於執行的微運算。
暫存器檔案208、210位於排程器202、204、206及執行方塊211中的執行單元212、214、216、218、220、222、224之間。有分別用於整數及浮點運算的分離暫存器檔案208、210。一實施例的各暫存器檔案208、210也包括能僅將尚未寫入暫存器檔案的剛完成結果旁路或傳發至新的相關微運算的旁路網路。整數暫存器檔案208及浮點暫存器檔案210也能彼此通訊資料。針對一實施例,將整數暫存器檔案208分割為二個分離暫存器檔案,一個暫存器檔案用於資料的低階32位元且第二暫存器檔案用於資料的高階32位元。一實施例的浮點暫存器
檔案210具有128位元寬的項,因為浮點指令典型具有在寬度上從64至128位元的運算元。
執行方塊211包含指令實際上在該處執行的執行單元212、214、216、218、220、222、224。此節包括儲存微指令執行所需要之整數及浮點資料運算元值的暫存器檔案208、210。一實施例的處理器200由許多執行單元組成:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。針對一實施例,浮點執行方塊222、224執行浮點、MMX、SIMD、及SSE,或其他運算。一實施例的浮點ALU 222包括64位元乘64位元的浮點除法器以執行除法、平方根、及餘數微運算。針對本發明的實施例,包含浮點值的指令可使用浮點硬體管理。在一實施例中,ALU運算係至高速ALU執行單元216、218。一實施例的快速ALU 216、218能執行具有半個時鐘週期的有效延遲的快速操作。針對一實施例,當慢速ALU 220包括用於長延遲運算種類的整數執行硬體時,諸如,乘法器、移位、旗標邏輯、及分支處理,多數複雜整數運算係至慢速ALU 220。記憶體載入/儲存運算係由AGU 212、214執行。針對一實施例,整數ALU 216、218、220係在64位元資料運算元上實施整數操作的背景中描述。在替代實施例中,能實作ALU 216、218、220以支援包括16、32、128、256等的各式各樣的資料位元。相似地,浮點單元222、224能實作成支援具有各種
寬度之位元的一系列運算元。針對一實施例,浮點單元222、224能結合SIMD及多媒體指令在128位元寬的封裝資料運算元上操作。
在一實施例中,微運算排程器202、204、206在目前負載已完成執行之前調度相關操作。當微運算臆測地排程並在處理器200中執行時,處理器200也包括邏輯以處理記憶體錯失。若資料負載在資料快取記憶體中錯失,能有相關運算在已將具有暫時不正確資料之排程器丟棄的管線中飛行。重播機制追蹤並重執行使用不正確資料的指令。僅需重播相關運算並容許無關運算完成。也將處理器之一實施例的排程器及重播機制設計成快取使用MONITOR及MWAIT指令提供使用者層級執行緒同步的指令。
術語「暫存器」可指使用為指令的一部分以識別運算元之處理器內建儲存位置。換言之,暫存器可係可從處理器外側使用的暫存器(從程式設計師的觀點)。然而,實施例的暫存器不應在意義上受限於特定種類的電路。更確切地說,實施例的暫存器能儲存及提供資料,並實施本文描述的功能。本文描述的暫存器能使用任何數量的不同技術藉由處理器內的電路實作,諸如,專屬實體暫存器、使用暫存器更名的動態配實體暫存器、專屬及動態配置實體暫存器的組合等。在一實施例中,整數暫存器儲存三十二位元整數資料。一實施例的暫存器檔案也包含用於封裝資料的八個多媒體SIMD暫存器。針對以下討論,
將暫存器理解為設計成保持封裝資料的資料暫存器,諸如,在使用來自加州聖克拉拉Intel公司之MMXTM技術致能的微處理器中的64位元寬的MMXTM暫存器(在部分實例中也稱為「mm」暫存器)。能以整數及浮點形式二者使用的此等MMX暫存器能使用伴隨SIMD及SSE指令的封裝資料元件運算。相似地,相關於SSE2、SSE3、SSE4、或後續(通常稱為「SSEx」)技術之128位元寬的XMM暫存器也能用於保持此種封裝資料運算元。在一實施例中,在儲存封裝資料及整數資料時,暫存器不需要在該二種資料型別之間區分。在一實施例中,將整數及浮點的任一者包含在相同暫存器檔案中或包含在不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可儲存在不同暫存器或相同暫存器中。
在下列圖式的範例中,描述許多資料運算元。圖3A根據本發明的一實施例描繪多媒體暫存器中的各種封裝資料類別表示。圖3A描繪用於128-位元寬之運算元的封裝位元組310、封裝字組320、及封裝雙字組(dword)330的資料種類。此範例的封裝位元組格式310係128位元長並包含十六個封裝位元組資料元件。本文將位元組界定為8位元的資料。將用於各位元組資料元件的資訊儲存在位元組0的位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、及位元組15的最終位元120至位元127中。因此,使用暫存器中的所有可用位元。此儲存配置增加處理器的儲存效率。又,隨
著存取十六個資料元件,一個運算現在能在十六個資料元件上平行地實施。
通常,資料元件係儲存在單一暫存器或具有相同長度的其他資料元件之記憶體位置中的獨立資料段。在與SSEx技術有關的封裝資料序列中,儲存在XMM暫存器中的資料元件數係128位元除以以獨立資料元件之位元計算的長度。相似地,在與MMX及SSE技術有關的封裝資料序列中,儲存在MMX暫存器中的資料元件數係64位元除以以獨立資料元件之位元計算的長度。雖然描繪於圖3A中的資料類別係128位元長,本發明的實施例也能使用64位元寬、256位元寬、512位元寬、或其他尺寸的運算元運算。此範例的封裝字組格式320係128位元長並包含八個封裝字組資料元件。各封裝字組包含十六位元的資訊。圖3A的封裝雙字組格式330係128位元長並包含四個封裝雙字組資料元件。各封裝雙字組資料元件包含三十二位元的資訊。封裝四字組係128位元長並包含二個封裝四字組資料元件。
圖3B描繪替代的暫存器中資料儲存格式。各封裝資料能包括一個以上的獨立資料元件。描繪三種封裝資料格式;封裝半精準341、封裝單精準342、及封裝倍精準343。封裝半精準341、封裝單精準342、及封裝倍精準343的一實施例包含定點資料元件。針對另一實施例,封裝半精準341、封裝單精準342、及封裝倍精準343之一或多者可包含浮點資料元件。封裝半精準341的
一個替代實施例係包含八個16位元資料元件的一百二十八個位元。封裝單精準342的一個實施例係一百二十八個位元長並包含四個32位元資料元件。封裝倍精準343的一個實施例係一百二十八個位元長並包含二個64位元資料元件。將理解此種封裝資料格式可更延伸至其他暫存器長度,例如,延伸至96-位元、160-位元、192-位元、224-位元、256-位元、512-位元或更多。
圖3C根據本發明的一實施例描繪多媒體暫存器中的各種有正負號及無正負號的封裝資料類別表示。無正負號封裝位元組表示344描繪無正負號封裝位元組在SIMD暫存器中的儲存。將各位元組資料元件的資訊針對位元組零儲存在位元七至位元零中、針對位元組一儲存在位元十五至位元八中、針對位元組二儲存在位元二十三至位元十六等,且最後針對位元十五儲存在位元一百二十至位元一百二十七中。因此,使用暫存器中的所有可用位元。此儲存配置能增加處理器的儲存效率。又,隨著存取十六個資料元件,一個運算現在能以平行方式在十六個資料元件上實施。有正負號封裝位元組表示345描繪有正負號封裝位元組的儲存。須注意每個位元組資料元件的第八個位元係正負號指示器。無正負號封裝字組表示346描繪如何將字組七至字組零儲存在SIMD暫存器中。有正負號封裝字組表示347相似於無正負號封裝字組暫存器中表示346。須注意每個字組資料元件的第十六個位元係正負號指示器。無正負號封裝雙字組表示348顯示如何儲存雙字
組資料元件。有正負號封裝雙字組表示349相似於無正負號封裝雙字組暫存器中表示348。須注意必要的正負號位元係各雙字組資料位元的第三十二位元。
圖3D係運算編碼(運算碼)格式360之一實施例的描畫,具有三十二或更多個位元,及與描述在「Intel® 64及IA-32 Intel架構軟體開發人員手冊2A及2B合集:指令集參考A-Z」中的運算碼格式之種類對應的暫存器/記憶體運算元定址模式,其由加州聖克拉拉的Intel公司在intel.com/products/processor/manuals/的全球資訊網(www)上提供。在一實施例中,及指令可由欄位361及362的一或多者編碼。每個指令可識別多達二個運算元位置,包括多達二個來源運算元識別符364及365。針對一實施例,目標運算元識別符366與來源運算元識別符364相同,然而在其他實施例中可不同。針對另一實施例,目標運算元識別符366與來源運算元識別符365相同,然而在其他實施例中可不同。在一實施例中,藉由來源運算元識別符364及365識別之來源運算元的一者為指令的結果所覆寫,然而在其他實施例中,識別符364對應於來源暫存器元件且識別符365對應於目標暫存器元件。針對一實施例,運算元識別符364及365可用於識別32-位元或64-位元來源及目的運算元。
圖3E係另一替代運算編碼(運算碼)格式370的描畫,具有四十或更多位元。運算碼格式370與運算碼格式360對應並包含選擇性前置位元組378。根據一
實施例的指令可由欄位378、371、及372的一或多者編碼。每指令可藉由來源運算元識別符374及375並藉由前置位元組378識別多達二個運算元位置。針對一實施例,前置位元組378可用於識別32-位元或64-位元來源及目的運算元。針對一實施例,目標運算元識別符376與來源運算元識別符374相同,然而在其他實施例中可不同。針對另一實施例,目標運算元識別符376與來源運算元識別符375相同,然而在其他實施例中可不同。在一實施例中,指令在藉由運算元識別符374及375識別之運算元的一或多者上運算,且藉由運算元識別符374及375識別的一或多個運算元由該指令的結果所覆寫,然而在其他實施例中,藉由識別符374及375識別的運算元可寫至另一暫存器中的另一資料元件中。運算碼格式360及370允許部分藉由MOD欄位363及373及藉由選擇性的比例-索引-基底及位移位元組指定的暫存器對暫存器、記憶體對暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即值、暫存器對記憶體定址。
接著轉向圖3F,在部分替代實施例中,64-位元(或128-位元、或256-位元、或512-位元或更多)單指令多資料(SIMD)算術運算可經由共處理器資料處理(CDP)指令實施。運算編碼(運算碼)格式380描畫具有CDP運算碼欄位382及389的一個此種CDP指令。針對替代實施例,CDP指令種類的運算可由欄位383、384、387、及388的一或多者編碼。每個指令可識別多達
三個運算元位置,包括多達二個來源運算元識別符385及390及一個目的運算元識別符386。共處理器的一實施例能在8、16、32、及64位元值上運算。針對一實施例,指令係在整數資料元件上實施。在部分實施例中,指令可使用條件欄位381有條件地執行。針對部分實施例,來源資料尺寸可藉由欄位383編碼。在部分實施例中,零(Z)、負(N)、進位(C)、及溢位(V)偵測能在SIMD欄位上完成。針對部分指令,飽合的種類可藉由欄位384編碼。
接著轉向圖3G,其係另一替代運算編碼(運算碼)格式397的描繪,以根據另一實施例提供使用MONITOR及MWAIT指令的使用者層級執行緒同步,與描述在「Intel® 先進向量延伸指令集程式參考手冊」中之運算碼格式的種類對應,其由加州聖克拉拉的Intel公司在intel.com/products/processor/manuals/的全球資訊網(www)上提供。
原始x86指令集提供具有包含在其存在係從該第一「運算碼」位元組得知之額外位元組中的位址字節及立即運算元之各種格式的1-位元組運算碼。另外,有保留為運算碼之修飾符的特定位元組值(由於彼等必需置於指令之前,稱為前置碼)。當256個運算碼位元組(包括此等特定前置值)的原始調色板已耗盡時,將單一位元組專用為至一組新的256個運算碼的逸出碼。當加入向量指令(例如,SIMD)時,產生對更多運算碼的需求,且甚
至當經由使用前置碼擴充時,「二位元組」運算碼映射也不敷所需。結果,將新指令加入其使用2位元組加作為識別符之選擇性前置碼的額外映射中。
另外,為促進採用64-位元模式的額外暫存器,可在前置碼及運算碼之間使用額外前置碼(稱為「REX」)(及決定運算碼所需的任何逸出碼)。在一實施例中,REX可具有4個「酬載」位元以指示以64-位元模式使用額外暫存器。在其他實施例中,其可少於或多於4個位元。藉由下列格式通用地說明至少一個指令集的通用格式(其通常對應於格式360及/或格式370):
[prefixes][rex]escape[escape2]opcode modrm(等)
運算碼格式397與運算碼格式370對應並包含選擇性的VEX前置位元組391(在一實施例中以十六進位C4開始)以置換大部分其他常用的傳統指令前置位元組及逸出碼。例如,下文說明使用二欄位編碼指令的實施例,當第二逸出碼存在於原始指令中時,或當需要使用REX欄位中的額外位元(例如,XB及W欄位)時,可使用其。在以下說明的實施例中,傳統逸出碼係藉由新的逸出值表示、將傳統前置碼完全壓縮為「酬載」位元組的一部分、將傳統前置碼回收並可用於未來擴展、將第二逸出碼壓縮在「映射」欄位中、具有可用的未來映射及特徵空間、並加入新特徵(例如,增加向量長度及額外來源暫存器指定器)。
根據一實施例的指令可由欄位391及392的一或多者編碼。每指令可藉由欄位391結合來源運算元識別符374及375並結合選擇性的比例-索引-基底(SIB)識別符393、選擇性的位移識別符394、及選擇性的立即位元組395識別多達四個運算元位置。針對一實施例,VEX前置位元組391可用於識別32-位元或64-位元來源及目的運算元及/或128-位元或256-位元SIMD暫存器或記憶體運算元。針對一實施例,藉由運算碼格式397提供的功能可對運算碼格式370冗餘,然而在其他實施例中,彼等可不同。運算碼格式370及397允許部分藉由MOD欄位373並藉由選擇性的(SIB)識別符393、選擇性的位移識別符394、選擇性的立即位元組395指定暫存器對暫存器、記憶體對暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即值、暫存器對記憶體定址。
接著轉向圖3H,其係另一替代編碼(運算碼)格式398的描畫,以根據另一實施例提供使用MONITOR及MWAIT指令的使用者層級執行緒同步。運算碼格式398與運算碼格式370及397對應並包含選擇性的EVEX前置位元組396(在一實施例中以十六進位62開始)以置換大部分其他常用的傳統指令前置位元組及逸
出碼並提供額外功能。根據一實施例的指令可由欄位396及392的一或多者編碼。每指令及遮罩可藉由欄位396結合來源運算元識別符374及375並結合選擇性的比例-索引-基底(SIB)識別符393、選擇性的位移識別符394、及選擇性的立即位元組395識別多達四個運算元位置。針對一實施例,EVEX前置位元組396可用於識別32-位元或64-位元來源及目的運算元及/或128-位元、256-位元、或512-位元SIMD暫存器或記憶體運算元。針對一實施例,藉由運算碼格式398提供的功能可對運算碼格式370或397冗餘,然而在其他實施例中,彼等可不同。運算碼格式398允許部分藉由MOD欄位373並藉由選擇性的(SIB)識別符393、選擇性的位移識別符394、選擇性的立即位元組395指定使用遮罩的暫存器對暫存器、記憶體對暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即值、暫存器對記憶體定址。藉由下列格式通用地說明至少一個指令集的通用格式(其通常對應於格式360及/或格式370):
evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm]
針對一實施例,根據EVEX格式398編碼的指令可具有額外「酬載」位元,其可用於以額外的新特徵,諸如,使用者可組態遮罩暫存器、或額外運算元、或來自128-位元、256-位元、或512-位元向量暫存器之中的選擇、或自其選擇更多暫存器等,提供使用MONITOR及MWAIT指令的使用者層級執行緒同步。
例如,當VEX格式397可用於使用具有隱含遮罩的MONITOR及MWAIT指令提供使用者層級執行緒同步時,EVEX格式398可用於使用具有明顯使用者可組態遮罩的MONITOR及MWAIT指令提供使用者層級執行緒同步。另外,當VEX格式397可用於在128-位元或256-位元向量暫存器上使用MONITOR及MWAIT指令提供使用者層級執行緒同步時,EVEX格式398可用於在128-位元、256-位元、512-位元、或更大(或更小)向量暫存器上使用MONITOR及MWAIT指令提供使用者層級執行緒同步。
藉由以下範例說明提供使用者層級執行緒同步的範例MONITOR及MWAIT指令:
將理解經由使用上述飛地指令以使用MONITOR及MWAIT指令提供使用者層級執行緒同步,可將處理器中的一或多個特定模型暫存器(MSR)(例如,藉由IA32_MISC_ENABLE MSR)組態成使用者-MWAIT-致能執行狀態以指定對使用者層級執行緒同步架構的支援。實施例包括多個硬體執行緒或處理核心,對應的受監視位址狀態儲存器(MASS)以對發布MONITOR請求的複數個執行緒各者儲存最後監視位址,及記憶體以記錄MONITOR請求及記憶體儲存位置之位址的關聯狀態。回應於針對位址之MWAIT請求的接收,為針對與MWAIT請求關聯的一或多個執行核心(等)記錄受監視位址的關聯等待觸發狀態,當將該一或多個MSR組態為使用者-MWAIT-致能執行狀態時,執行核心(等)係用以回應於MWAIT請求的接收,將請求執行緒或執行緒轉變為最佳睡眠狀態(例如,C1睡眠狀態)。該最佳睡眠狀態可為藉由EAX暫存器(例如,作為MWAIT請求的引數)的位元(例如,位元7:4)從對該第一執行核心可用的複數個C狀態中選擇的睡眠狀態。在部分實施例中,在轉變為較深睡眠狀態僅為在0(零)權限等級的MWAIT請求保留的同時,允許使用者應用程式轉變至輕權重睡眠狀態(例如,僅至C1)。
因此,將理解使用者層級執行緒同步可使用用於MONITOR及MWAIT指令的指令及處理邏輯提供,而不需要複雜的硬體支援及/或設計工作。
圖4A係根據本發明的至少一實施例描繪有序管線及暫存器更名級、無序發佈/執行管線的方塊圖。圖4B係根據本發明之至少一個實施例描繪包括在處理器中
的有序架構核心及暫存器更名邏輯、無序發佈/執行邏輯的方塊圖。圖4A中的實線方塊描繪有序管線,同時虛線方塊描繪暫存器更名、無序發佈/執行管線。相似地,圖4B中的實線方塊描繪有序架構邏輯,同時虛線方塊描繪暫存器更名邏輯及無序發佈/執行邏輯。
在圖4A中,處理器管線400包括提取級402、長度解碼級404、解碼級406、配置級408、更名級410、排程(也稱為調度或發佈)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、異常管理級422、及提交級424。
在圖4B中,箭號指示二或多個單元之間的耦接,且箭號的方向指示資料流在該等單元之間的方向。圖4B顯示包括耦接至執行引擎單元450之前端單元430的處理器核心490,且二者均耦接至記憶體單元470。
核心490可係精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令(VLIW)核心、或混合或其他核心類型。作為另一選項,核心490可係專用核心,諸如,網路或通訊核心、壓縮引擎、或圖形核心等。
前端單元430包括耦接至指令快取單元434的分支預測單元432,其耦接至指令轉換後備緩衝器(TLB)436,其耦接至指令提取單元438,其耦接至解碼單元440。解碼單元或解碼器可解碼指令,並產生作為輸出之解碼自、或另外反映、或導自原始指令的一或多個微
運算、微碼進入點、微指令、其他指令、或其他控制訊號。該解碼器可使用各種不同機制實作。合適機制的範例包括,但未限於,查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。將指令快取單元434另外耦接至記憶體單元470中的2級(L2)快取單元476。將解碼單元440耦接至執行引擎單元450中的更名/配置器單元452。
執行引擎單元450包括耦接至引退單元454及一組一或多個排程器單元(等)456的更名/配置器單元452。排程器單元(等)456代表任何數量的不同排程器,包括保留站、中央指令窗等。將排程器單元(等)456耦接至實體暫存器檔案(等)單元(等)458。實體暫存器檔案(等)單元458各者代表一或多個實體暫存器檔案,彼等的不同者儲存一或多個不同資料型別,諸如,純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點等、狀態(例如,係待執行的次一指令之位址的指令指標)等。實體暫存器檔案(等)單元(等)458為引退單元454覆蓋,以說明可實作暫存器更名及無序執行的各種方式(例如,使用重排序緩衝器(等)及引退暫存器檔案(等)、使用未來檔案(等)、歷史緩衝器(等)、及引退暫存器檔案(等);使用暫存器映射及暫存器池;等)。通常,該等架構暫存器可從處理器的外側看見或從程式設師的觀點係可見的。該等暫存器並未限於任何已知明確類型的電路。只要暫存器能儲存並提供如本
文所描述的資料,各種不同類型之暫存器均係合適的。合適暫存器的範例包括,但未限於,專用實體暫存器、使用暫存器改名的動態配置實體暫存器、專用及動態配置實體暫存器的組合等。將引退單元454及實體暫存器檔案(等)單元(等)458耦接至執行叢集(等)460。執行叢集(等)460包括一組一或多個執行單元462及一組一或多個記憶體存取單元464。執行單元462可在各種資料型別(例如,純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)上進行各種運算(例如,移位、加法、減法、乘法)。雖然部分實施例可包括專用於特定功能或功能集的許多執行單元,其他實施例可僅包括一執行單元或全部實施所有功能的多個執行單元。將排程器單元(等)456、實體暫存器檔案(等)單元(等)458、及執行叢集(等)460顯示為可能係複數個,因為特定實施例針對特定種類的資料/運算建立個別管線(例如,各者具有自有之排程器單元、實體暫存器檔案(等)單元、及/或執行叢集的純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,且在分離式記憶體存取管線的情形中,實作在其中僅有此管線的執行叢集具有記憶體存取單元(等)464的特定實施例)。也應理解當使用分離式管線時,此等管線的一或多者係無序發佈/執行的而其餘係有序的。
將該組記憶體存取單元464耦接至記憶體單元470,其包括耦接至資料快取單元474的資料TLB單元
472,該資料快取單元耦接至2級(L2)快取單元476。在一範例實施例中,記憶體存取單元464可包括載入單元、儲存位址單元、及儲存資料單元,彼等各者耦接至記憶體單元470中的資料TLB單元472。L2快取單元476耦接至一或多個其他級快取記憶體且最終耦接至主記憶體。
藉由範例,範例暫存器更名、無序發佈/執行核心架構可將管線400實作如下:1)指令提取438實施提取及長度解碼級402及404;2)解碼單元440實施解碼級406;3)更名/配置器單元452實施配置級408及更名級410;4)排程單元(等)456實施排程級412;5)實體暫存器檔案(等)單元(等)458及記憶體單元470實施暫存器讀取/記憶體讀取級414;執行叢集460執行執行級416;6)記憶體單元470及實體暫存器檔案(等)單元(等)458實施寫回/記憶體寫入級418;7)各種單元可能包含在異常管理級422中;且8)引退單元454及實體暫存器檔案(等)單元(等)458實施提交級424。
核心490可支援一或多個指令集(例如,x86指令集(具有已加有較新版本的特定延伸);加州桑尼維爾的MIPS Technologies的MIPS指令集;加州桑尼維爾的ARM Holdings的ARM指令集(具有選擇性的額外延伸,諸如NEON))。
應理解該核心可支援多執行緒(執行二或多個平行操作或執行緒集),並可以包括時間切片多執行
緒、同步多執行緒(其中同步多執行緒的該單一實體核心對執行緒各者提供邏輯核心)、或彼等之組合(例如,下文的時間切片提取及解碼及同步多執行緒,諸如,在Intel®超執行緒技術中)的各種方式實施。
雖然暫存器更名係在無序執行的上下文中描述,應理解暫存器更名可使用在有序架構中。在處理器的說明實施例也包括分離式指令及資料快取單元434/474及共享L2快取單元476的同時,其他實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如,1級(L1)內部快取記憶體、或多級內部快取記憶體。在部分實施例中,該系統可包括內部快取記憶體及在核心及/或處理器外部之外部快取記憶體的組合。或者,所有快取記憶體可均在核心及/或處理器外部。
圖5係根據本發明的實施例之具有積集記憶體控制器及圖形處理器的單核心處理器及多核心處理器500的方塊圖。圖5中的實線方塊描繪具有單核心502A、系統代理510、一組一或多個匯流排控制器單元516的處理器500,而點虛線方塊描繪選擇性加入之具有多個核心502A-N、在系統代理單元510中的一組一或多個積集記憶體控制器單元(等)514、及積集圖形邏輯508的另一處理器500。
記憶體階層包括在核心內的一或多級快取記憶體、一組或一或多個共享快取記憶體單元506、及耦接至該組積體記憶體控制器單元514的外部記憶體(未圖
示)。該組共享快取記憶體單元506可包括一或多個中級快取記憶體,諸如,2級(L2)、3級(L3)、4級(L4)、或其他級快取記憶體、末級快取記憶體(LLC)、及/或彼等的組合。雖然在一實施例中,基於環形的互連單元512互連積集圖形邏輯508、該組共享快取記憶體單元506、及系統代理單元510,其他實施例可使用用於互連此種單元的任何數目之已為人熟知的技術。
在部分實施例中,一或多個核心502A-N有多執行緒的能力。系統代理510包括協調及運算核心502A-N的此等組件。系統代理單元510可包括,例如,電源控制單元(PCU)及顯示單元。PCU可係或包括調節核心502A-N及積集圖型邏輯508的電源狀態之所需的邏輯及組件。顯示單元用於驅動一或多個外部連接的顯示器。
依據架構及/或指令集,核心502A-N可係同質或異質的。例如,部分核心502A-N可係有序的,而其他係無序的。作為另一範例,核心502A-N的二或多者可有執行相同指令集的能力,而其他可有僅執行該指令集之子集或不同指令集的能力。
處理器可係通用處理器,諸如,CoreTM i3、i5、i7、2 Duo、及Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器,彼等由加州聖克拉拉的Intel公司銷售。或者,處理器可來自另一公司,諸如,ARM Holdings,Ltd、MIPS等。處理器可係特殊用途處理器,例如,網路或通訊處理器、壓縮引擎、圖形處理器、共處
理器、或嵌入式處理器等。該處理器可實作在一或多個晶片上。處理器500可係使用任何數目的處理技術,例如,BiCMOS、CMOS、或NMOS,之一或多個基材的一部分及/或實作在該等基材上。
圖6-8係適於包括處理器500的範例系統,同時圖9係可包括核心502之一或多者的範例系統單晶片(SoC)。在本技術中為人所知之用於膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置的其他系統設計及組態也係合適的。通常,能合併如本文揭示之處理器及/或其他執行邏輯之種類繁多的系統或電子裝置通常係合適的。
現在參考至圖6,顯示根據本發明的一實施例之系統600的方塊圖。系統600可包括一或多個處理器610、615,彼等耦接至圖形記憶體控制器集線器(GMCH)620。在圖6中以虛線標示額外處理器615的選擇性本質。
各處理器610、615可係處理器500的某個版本。然而,應注意積體圖形邏輯及積集記憶體控制器單元不太可能會存在於處理器610、615中。圖6描繪GMCH 620可耦接至記憶體640,其可係,例如,動態隨機存取記憶體(DRAM)。針對至少一實施例,DRAM可與非揮
發性快取記憶體關聯。
GMCH 620可係晶片組,或晶片組的一部分。GMCH 620可與處理器(等)610、615通訊,並控制處理器(等)610、615與記憶體640之間的互動。GMCH 620也可作為處理器(等)610、615及系統600的其他元件之間的加速匯流排介面使用。針對至少一實施例,GMCH 620經由多分支匯流排,諸如,前側匯流排(FSB)695,與處理器(等)610、615通訊。
此外,將GMCH 620耦接至顯示器645(諸如,平面顯示器)。GMCH 620可包括積集圖形加速器。更將GMCH 620耦接至輸入/輸出(I/O)控制器集線器650,其可用於將各種周邊裝置耦接至系統600。例如,顯示於圖6之實施例中的係外部圖形裝置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的一或多者之處理器500的某個版本。
雖然僅顯示二處理器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互連與處理器連接,使得若處理器置於低電源模式中,可將任一或二處理器的區域快取資訊儲存在共享快取記憶體中。
可經由介面796將晶片組790耦接至第一匯流排716。雖然本發明的範圍未受如此限制,在一實施例中,第一匯流排716可係週邊組件互連(PCI)匯流排、或係諸如PCI快速匯流排或其他第三代I/O互連匯流排的匯流排。
如圖7所示,可能連同將第一匯流排716耦接至第二匯流排720的匯流排橋接器718,將各種I/O裝置714耦接至第一匯流排716。在一實施例中,第二匯流排720可係低插腳數(LPC)匯流排。在一實施例中,可將各種裝置耦接至第二匯流排720,包括,例如,鍵盤及/或滑鼠722、通訊裝置727、以及儲存單元728,諸如,可包括指令/碼及資料730的硬碟驅動器或其他大量儲存裝置。另外,可將音訊I/O 724耦接至第二匯流排720。須注意其他架構也係可能的。例如,取代圖7的點對點架構,系統可實作多分支匯流排或其他此種架構。
現在參考至圖8,顯示係根據本發明的一實施例之第三系統800的方塊圖。圖7及圖8中的相似元件有相似參考數字,且圖7的特定樣態已從圖8省略,以避免混淆圖8的其他樣態。
圖8描繪處理器870、880可分別包括積體記憶體及I/O控制邏輯(「CL」)872及882。針對至少一
個實施例,CL 872、882可包括,諸如,結合圖5及7於上文描述的積集記憶體控制器單元。此外,CL 872、882也可包括I/O控制邏輯。圖8描繪不僅將記憶體832、834耦接至CL 872、882,也將I/O裝置814耦接至控制邏輯872、882。將傳統I/O裝置815耦接至晶片組890。
現在參考至圖9,顯示係根據本發明的實施例之SoC 900的方塊圖。圖5中的相似元件有相似的參考數字。又,虛線方塊係在更先進SoC上的選擇性特性。在圖9中,將互連單元(等)902耦接至:包括一組一或多個核心502A-N及共享快取記憶體單元(等)506的應用處理器910;系統代理單元510;匯流排控制器單元(等)516;積集記憶體控制器單元(等)514;可包括積集圖形邏輯508、用於提供靜態及/或視訊照相機功能的影像處理器924、用於提供硬體音訊加速的音訊處理器926、及用於提供視訊編碼/解碼加速之視訊處理器928的一組一或多個媒體處理器920;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;及用於耦接至一或多個外部顯示器的顯示單元940。
圖10描繪包含中央處理單元(CPU)及圖形處理單元(GPU)的處理器,其可實施根據一實施例的至少一指令。在一實施例中,實施根據至少一實施例之運算的指令可由該CPU實施。在另一實施例中,該指令可由GPU實施。在另一實施例中,該指令可經由由GPU及CPU實施之運算的組合實施。例如,在一實施例中,根據
一實施例的指令可針對在GPU上的執行接收及解碼。然而,已解碼指令內的一或多個運算可由CPU實施,並針對該指令的最終引退將結果傳回至GPU。相反地,在部分實施例中,CPU可作為主處理器使用且GPU作為共處理器。
在部分實施例中,從高度平行、通量處理器獲利的指令可由GPU實施,同時從深度管線化架構獲利之處理器的效能獲利的指令可由CPU實施。例如,圖形、科學應用、金融應用、及其他平行工作量可從GPU的效能獲利並因此執行,然而更循序的應用,諸如,作業系統核心或應用程式碼,可更適於CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示器裝置1040、高解析多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙倍資料速率(DDR)控制器1060、安全引擎1065、及I2S/I2C(積體電路間聲音/積體電路間)介面1070。其他邏輯及電路可包括在圖10的處理器中,包括更多CPU或GPU及其他周邊介面控制器。
至少一實施例的一或多個樣態可藉由儲存在機器可讀媒體上之代表處理器內的各種邏輯的代表性資料實作,當其由機器讀取時,導致機器製造邏輯以實施本文描述的技術。可能將稱為「IP核心」的此種表示儲存在實
體機器可讀媒體(「磁帶」)中,並供應至各種客戶或製造設施,以載入至實際產生邏輯或處理器的製造機器中。例如,IP核心,諸如,由ARM Holdings,Ltd.發展的CortexTM處理器家族及中國科學院之計算技術研究所(ICT)發展的Loongson IP核心可授權或出售給各種客戶或授權方,諸如,Texas Instruments、Qualcomm、Apple、或Samsung,並實作在由此等客戶或授權方生產的處理器中。
圖11根據一實施例顯示描繪IP核心之發展的方塊圖。儲存器1130包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,代表IP核心設計的資料能經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150、無線連接1160提供至儲存器1130。然後由模擬工具及模型產生的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指令集核心的處理器1316原生地執行的x86二進位碼1306。具有至少一x86指令集核心的處理器1316代表能藉由相容地執行或另外處理(1)Intel x86指令集核心的實質指令集部分,或(2)目標為
在具有至少一x86指令集核心的Intel處理器上運行之應用程式或其他軟體的目的碼版本,實施與具有至少一x86指令集核心之Intel處理器實質相同之功能的任何處理器,以實現與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器1304代表可運算以產生能使用或不使用額外聯結處理以在具有至少一x86指令集核心的處理器1316上執行之x86二進位碼1306(例如,目的碼)的編譯器。相似地,圖13顯示可使用替代指令集編譯器1308編譯以高階語言1302撰寫的程式,以產生可為不具有至少一x86指令集核心的處理器1314(例如,具有執行加州桑尼維爾的MIPS Technologies的MIPS指令集及/或執行加州桑尼維爾的ARM Holdings的ARM指令集之核心的處理器)原生地執行的替代指令集二進位碼1310。指令變換器1312用於將x86二進位碼1306變換為可為不具有x86指令集核心的處理器1314原生地執行的碼。此已變換碼不太可能與替代指令集二進位碼1310相同,因為難以產生能作到此的指令變換器;然而,已變換碼將完成一般運算且係由來自替代指令集的指令構成。因此,指令變換器1312代表經由模仿、模擬、或任何其他處理容許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體、或彼等的組合。
圖14描繪用於使用MONITOR及MWAIT指令以提供使用者層級執行緒同步之處理系統1401的一實
施例。在部分實施例中,記憶體階層可包括一組內部處理器快取記憶體1420、作用如同遠端記憶體快取的「近端記憶體」1421,其可包括內部快取記憶體(等)1419及外部快取記憶體1447-1449、及「遠端記憶體」1422。
遠端記憶體1422可包含分別組態為位址範圍1-4之系統記憶體1436-1439的一般動態隨機存取記憶體(DRAM)。部分實施例的遠端記憶體1422可使用非揮發性隨機存取記憶體(NVRAM)實作,但不必受限於任何特定記憶體技術。遠端記憶體1422(例如,分別包括位址範圍1-4的系統記憶體1436-1439)可依據其特徵及/或其在記憶體/儲存階層中的應用而可與其他指令及資料記憶體/儲存技術區分。例如,可將遠端記憶體1422視為下列不同記憶體:
(1)靜態隨機存取記憶體(SRAM),其可用於專用於處理器核心1450、1460、1470、及1480的1級及2級內部處理器快取記憶體1456-1457、1466、1476-1477、及1486,及由處理器核心共享的低階快取記憶體(LLC)1418。
(2)DRAM,組態為處理器1410內部的快取記憶體1419(例如,與處理器1410在相同晶粒上)及/或組態為處理器外部的一或多個快取記憶體1447-1449(例如,在與處理器1410相同或不同的封裝中)。
(3)FLASH記憶體/磁碟/光碟,應用為大量儲存器(未圖示);及
(4)記憶體,諸如,FLASH記憶體或其他唯讀記憶體(ROM),應用為韌體記憶體(其能稱為開機ROM、BIOS快閃記憶體、及/或TPM快閃記憶體)(未圖示)。
近端記憶體1421係組態在遠端記憶體1422前端的中階記憶體,其相對於遠端記憶體具有較低的讀取/寫入存取延遲及/或更對稱的讀取/寫入延遲(亦即,具有大致等效於寫入時間的讀取時間)。在部分實施例中,近端記憶體1421具有顯著低於遠端記憶體1422的寫入延遲,但相似(例如,略低於或等於)的讀取延遲,例如,近端記憶體1421可係揮發性記憶體,諸如,揮發性隨機存取記憶體(VRAM),並可包含DRAM或其他基於電容器的高速記憶體。然而,需注意本發明的基本原理未受限於此等特定記憶體種類。另外,近端記憶體1421對製造商可具有比遠端記憶體1422相對低的密度及/或更昂貴。
在一實施例中,將近端記憶體1421組態在遠端記憶體1422及內部處理器快取記憶體1420之間。在下文描述的部分實施例中,將近端記憶體1421組態為一或多個記憶體側快取記憶體(MSC)1447-1449以遮罩遠端記憶體的效能及/或使用限制,包括,例如,位址監視及同步限制、讀取/寫入延遲限制、及記憶體退化限制。在此等實作中,MSC 1447-1449及遠端記憶體1422的組合以接近、等同、或超過僅將DRAM使用為系統記憶體之系統的效能等級操作。如下文更詳細地討論的,雖然在處
理系統1401中顯示為「快取記憶體」,近端記憶體1421可包括實施除了或取代實施快取記憶體的角色之其他角色的模式。
近端記憶體1421可位於處理器晶粒上(作為快取記憶體(等)1419)及/或位於處理器晶粒外部(作為快取記憶體1447-1449)(例如,在位於CPU封裝上的分離晶粒上、位於CPU封裝外側,具有至CPU封裝的高帶寬鏈路,例如,在記憶體雙行記憶體模組(DIMM)、豎卡/小背板、或電腦主機板上)。近端記憶體1421可操作地耦接以使用單一、多個高帶寬鏈路,諸如,雙倍資料速率(DDR)或其他高帶寬鏈路,與處理器1410通訊。
處理系統1401說明在本發明的實施例中各種階層的快取記憶體1456-1457、1466、1476-1477、1486、1418-1419、及1447-1449在本發明的實施例中如何相關於系統實體位址(SPA)空間1436-1439組態。如所提及的,此實施例包含具有一或多個核心1450、1460、1470、及1480的處理器1410,各核心分別具有其自有專屬上階快取記憶體(L1)1456、1466、1476、及1486,及共享中階快取記憶體(MLC)(L2)快取記憶體1457及1477。處理器1410也包括共享LLC 1418。處理器1410另外包含受監視位址狀態儲存器(MASS)1455、1465、1475、及1485,各者分別儲存最後監視位址1453、1463、1473及1483、及最後受監視位址的關聯狀態1454、1464、1474、及1484。相似地,近端記憶體
1421可選擇性地包含分別儲存(例如,快取記憶體1419及/或1447-1449的)最後監視位址1443及最後監視位址之關聯狀態1444的MASS 1445。
處理器1410也包含一或多個特定模型暫存器(MSR)MSR 1411及/或MSR 1451、MSR 1461、MSR 1471、及MSR 1481,其將選擇性地組態成第一執行狀態(例如,使用者-MWAIT-致能狀態)以為處理器1410指定使用者層級執行緒同步架構的支援。執行核心1450、1460、1470、及1480具有對應的MASS 1455、1465、1475、及1485以對發布MONITOR請求之複數個執行緒各者儲存最後監視位址。快取記憶體(例如,L1 1456、1466、1476、及1486)可為(例如,在MASS 1455、1465、1475、及1485中的)記憶體儲存位置的位址記錄MONITOR請求及關聯狀態(例如,1454、1464、1474、及1484)。處理器核心1401的實施例也可包含用於MONITOR及MWAIT指令之執行(例如,如管線400中所示)以提供使用者層級執行緒同步的管線級。
回應於從使用者層級的執行緒接收針對位址的MONITOR請求,當該一或多個MSR(例如,選擇性地,MSR 1411及/或MSR 1451、MSR 1461、MSR 1471、MSR 1481)(例如,經由IA32_MISC_ENABLE MSR)組態為第一執行狀態時,處理器1410邏輯(例如,MASS 1455、1465、1475、及1485)為與執行緒關聯之複數個執行核心(例如,核心1450、1460、1470、及1480)的
第一執行核心儲存位址(例如,在1453、1463、1473、或1483中)且(例如,L1 1456、1466、1476、及1486)記錄監視位址狀態儲存器的關聯狀態(例如,在1454、1464、1474、或1484中)。進一步回應於從執行緒接收針對該位址的MWAIT請求,處理器1410邏輯(例如,MASS 1455、1465、1475、及1485、或L1 1456、1466、1476、及1486)針對與該執行緒關聯的第一執行核心(例如,分別係核心1450、1460、1470、或1480)記錄監視位址狀態的關聯等待觸發狀態(例如,在1454、1464、1474、或1484中)。此外,當該一或多個MSR(例如,選擇性地,MSR 1411及/或MSR 1451、MSR 1461、MSR 1471、及MSR 1481)(例如,藉由IA32_MISC_ENABLE MSR)組態為第一執行狀態(例如,使用者-MWAIT-致能狀態)時,回應於從該執行緒接收該MWAIT請求,第一執行核心可將執行緒轉變為最佳睡眠狀態(例如,C1睡眠狀態)。
因此,將理解回應於一或多個MSR,例如,MSR 1411(及選擇性地,MSR 1451、MSR 1461、MSR 1471、及/或MSR 1481),(例如,藉由IA32_MISC_ENABLE MSR)組態為特定執行狀態(例如,使用者-MWAIT-致能狀態)以對處理器1410指定使用者層級執行緒同步架構的支援,使用者層級執行緒同步可使用用於MONITOR及MWAIT指令的指令及處理邏輯提供,而不需要複雜的硬體支援及/或設計工作。
圖15描繪使用MONITOR及MWAIT指令提供使用者層級執行緒同步的處理1501之一實施例的流程圖。本文揭示的處理1501及其他處理係由處理方塊實施,其可包含專屬硬體或軟體或可由通用機器或藉由特殊用途機器或藉由二者之組合執行的韌體運算碼。
在處理方塊1510中開始,將一或多個特定模型暫存器(MSR)組態為第一執行狀態以對處理器指定使用者層級執行緒同步架構的支援。在處理方塊1520中,從複數個執行緒的一執行緒接收針對位址的MONITOR請求。在處理方塊1530中,將複數個執行緒之執行緒的最後監視位址儲存在對應於複數個執行核心的監視位址狀態儲存器(MASS)中。在處理方塊1535中,產生MWAIT請求是否存在的決定。若為否,處理返回至處理方塊1530。但若為真,處理前進至處理方塊1540,其中從執行緒接收針對監視位址的MWAIT請求。在處理方塊1550中,針對執行核心及關聯執行緒,將等待觸發狀態記錄為與監視位址關聯。在處理方塊1560中,每當將該一或多個MSR組態為第一執行狀態時,回應於從關聯執行緒接收該MWAIT請求,允許第一執行核心將執行緒轉變/保持為/在最佳睡眠狀態。在處理方塊1565中,產生與監視位址匹配之寫入操作是否已實施的決定。若為否,執行重複處理區域1560中的開始。否則,當實施匹配寫入時,處理前進至將閒置狀態記錄為與監視位址關聯的處理方塊1570。在處理方塊1580中,將監視喚醒事件傳送至與
MWAIT請求關聯的核心。
將理解經由使用上述指令以使用MONITOR及MWAIT運算提供使用者層級執行緒同步,可將處理器中的一或多個特定模型暫存器(MSR)組態成使用者-MWAIT-致能執行狀態以指定對使用者層級執行緒同步架構的支援。實施例包括多個硬體執行緒或處理核心,對應的受監視位址狀態儲存器(MASS)以對發布MONITOR請求的複數個執行緒各者儲存最後監視位址,及記憶體以記錄MONITOR請求及記憶體儲存位置之位址的關聯狀態。回應於針對位址之MWAIT請求的接收,為針對與MWAIT請求關聯的一或多個執行核心(等)記錄受監視位址的關聯等待觸發狀態,當將該一或多個MSR組態為使用者-MWAIT-致能執行狀態時,執行核心(等)係用以回應於MWAIT請求的接收,將請求執行緒或執行緒轉變為最佳睡眠狀態(例如,C1睡眠狀態)。在部分實施例中,在轉變為較深睡眠狀態僅為在0(零)權限等級的MWAIT請求保留的同時,允許使用者應用程式轉變至輕權重睡眠狀態(例如,僅至C1)。
因此,將理解使用者層級執行緒同步可使用用於MONITOR及MWAIT指令的指令及處理邏輯提供,而不需要複雜的硬體支援及/或設計工作。此外,可避免由於使用其可已於先前包含系統呼叫之MONITOR及MWAIT的執行緒同步及/或功率管理所導致任何效能退化,並可避免任何產生在執行緒同步及/或功率管理之效
能上的瓶頸及不利的影響,而不需要過度複雜度及設計工作。也將理解若在處理1501的部分替代實施例中或在本文揭示的任何其他處理中係有可能的,描繪為以特定次序執行的處理方塊也可用另一次序、或同時、或彼此平行地執行。
本文揭示之機制的實施例可用硬體、軟體、韌體、或此種實作方式的組合實作。本發明的實施例可實作為在可程式化系統上執行的電腦程式或程式碼,該系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
可將程式碼施用至輸入指令,以實施本文描述的函數並產生輸出資訊。可用已知方式將輸出資訊施用至一或多個輸出裝置。針對此申請案的用途,處理系統包括具有處理器,諸如;數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器,的任何系統。
程式碼可用高階程序或物件導向程式語言實作,以與處理系統通訊。若有需要,程式碼也可用組合或機器語言實作。實際上,本文描述的機制在範圍上並未受限於任何特定程式語言。在任何情形中,語言可係編譯或解譯語言。
至少一實施例的一或多個實施樣態可藉由儲存在機器可讀媒體上之代表處理器內的各種邏輯的代表性
指令實作,當其由機器讀取時,導致機器製造邏輯以實施本文描述的技術。可將稱為「IP核心」的此種代表儲存在實體機器可讀媒體中,並供應至各種客戶或製造設施,以載入至實際產生邏輯或處理器的製造機器中。
此種機器可讀儲存媒體可不受限制地包括藉由機器或裝置製造或形成的非暫態實體製品配置,包括儲存媒體,諸如,硬碟、任何其他種類的碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、以及磁光碟、半導體裝置,諸如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、磁或光學卡、或適合儲存電子指令之任何其他種類的媒體。
因此,本發明的實施例也包括包含指令或包含設計資料,諸如,硬體描述語言(HDL),其界定本文描述之結構、電路、設備、處理器、及/或系統特性的非暫態實體機器可讀媒體。此種實施例也可稱為程式產品。
在部分情形中,指令變換器可用於將指令從來源指令集變換至目標指令集。例如,指令變換器可將指令轉換(例如,使用靜態二進位轉換、包括動態編譯的動態二進位轉換)、變形、模仿、或另外變換為待由核心處理的一或多個其他指令。指令變換器可用軟體、硬體、韌
體、或彼等的組合實作。指令變換器可在處理器上、在處理器外、或部分在處理器上且部分在處理器外。
因此,揭示用於實施根據至少一實施例之一或多個指令的技術。在特定範例實施例已描述並顯示在隨附圖式中的同時,待理解此種實施例僅係本廣泛發明的說明而非限制,且因為各種其他修改可對研讀此揭示發生之熟悉本技術的人士發生,此發明未受限於所顯示及描述的具體構造及配置。在成長速度快且不容易預見進一步發展之諸如此技術的領域中,所揭示的實施例可藉由致能技術發展促成易於在配置及細節上修改而不脫離本揭示發明的原理或隨附之申請專利範圍的範圍。
100:電腦系統
102:處理器
104:1級(L1)內部快取記憶體
106:暫存器檔案
108:執行單元
109:封裝指令集
110:處理器匯流排
112:圖形控制器
114:加速圖形埠(APG)互連
116:系統邏輯晶片
118:記憶體介面
120:記憶體
122:系統I/O
124:資料儲存器
126:無線收發器
128:韌體匯流排(快閃記憶體BIOS)
130:I/O控制器匯流排(ICH)
134:網路控制器
Claims (15)
- 一種處理器,包含:用以儲存資料的資料快取;用以儲存指令的指令快取,該指令包括MONITOR指令及MWAIT指令,該MONITOR指令用以指定線性位址範圍,該線性位址範圍具有用於該資料快取中之快取的寫回記憶體種類;指令提取電路,用以自該指令快取提取該些指令;指令解碼電路,用以解碼該些指令;複數個特定模型暫存器,包括MONITOR-MWAIT使用者-致能指示器,可程式化以允許該MONITOR指令與該MWAIT指令於使用者權限等級被執行;以及執行電路,包括監視硬體以回應於該MONITOR指令的執行,偵測對該線性位址範圍的儲存操作;其中,回應於該MWAIT指令的執行,該執行電路係用以進入實作相依功率狀態直至該監視硬體偵測到對該線性位址範圍的該儲存操作。
- 如申請專利範圍第1項的處理器,其中該實作相依功率狀態是對該處理器可用的複數睡眠狀態的第一睡眠狀態。
- 如申請專利範圍第2項的處理器,其中,該複數個睡眠狀態也包含第二睡眠狀態,為該MWAIT指令的執行預留的該第二睡眠狀態位於權限等級0(零)。
- 如申請專利範圍第3項的處理器,其中,相較於 該第一睡眠狀態,該第二睡眠狀態為較深睡眠狀態。
- 如申請專利範圍第2至4項中任一項的處理器,其中,該第一睡眠狀態為C1睡眠狀態。
- 如申請專利範圍第2項的處理器,其中,EAX暫存器係用以指定該第一睡眠狀態,特別是藉由該EAX暫存器的位元7:4。
- 如申請專利範圍第1項的處理器,更包含用以對發布MONITOR指令的複數個執行緒之各者儲存最後監視位址的受監視位址狀態儲存器(MASS)。
- 一種用以於處理器中執行MONITOR及MWAIT指令以提供使用者層級執行緒同步的方法,該方法包含:將特定模型暫存器(MSR)組態為處於使用者-MWAIT-致能執行狀態中以致能該MONITOR指令與待執行於權限等級之該MWAIT指令,其中當該特定模型暫存器未組態為該使用者-MWAIT-致能執行狀態時,該MONITOR指令及該MWAIT指令的執行被受限於權限等級0(零);儲存該MONITOR指令於指令快取中;自該指令快取提取該MONITOR指令;解碼該MONITOR指令;執行該MONITOR指令,該MONITOR指令係用以指定待被監視的線性位址範圍,該線性位址範圍具有用於該資料快取記憶體中快取的寫回記憶體類型;儲存該MWAIT指令於該指令快取中; 自該指令快取提取該MWAIT指令;解碼該MWAIT指令;執行該MONITOR指令,該MWAIT指令用以指定用於功率管理的實作相依最佳化狀態,以及用以指示該處理器進入用於功率管理的該實作相依最佳化狀態;偵測對該線性位址範圍的儲存操作;及藉由該執行電路回應於偵測到對該線性位址範圍的該儲存操作,退出用於功率管理的該實作相依最佳化狀態。
- 如申請專利範圍第8項的方法,其中,用於功率管理的該實作相依最佳化狀態是對該處理器可用的複數個睡眠狀態中的第一睡眠狀態。
- 如申請專利範圍第9項的方法,其中,該複數個睡眠狀態也包含第二睡眠狀態,為該MWAIT指令的執行預留的該第二睡眠狀態位於該權限等級0(零)。
- 如申請專利範圍第10項的方法,其中,相較於該第一睡眠狀態,該第二睡眠狀態為較深睡眠狀態。
- 如申請專利範圍第9至11項中任一項的方法,其中,該第一睡眠狀態為C1睡眠狀態。
- 如申請專利範圍第9項的方法,其中,EAX暫存器係用以指定該第一睡眠狀態,特別是藉由該EAX暫存器的位元7:4。
- 如申請專利範圍第8項的方法,更包含對發布MONITOR指令的複數個執行緒之各者儲存最後監視位址於受監視位址狀態儲存器(MASS)中。
- 一種儲存有指令的機器可讀實體媒體,當藉由機器執行時導致該機器實施如申請專利範圍第8至14項中任一項的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/998,217 US9898351B2 (en) | 2015-12-24 | 2015-12-24 | Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture |
US14/998,217 | 2015-12-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202042056A TW202042056A (zh) | 2020-11-16 |
TWI775105B true TWI775105B (zh) | 2022-08-21 |
Family
ID=59086375
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105138479A TWI706323B (zh) | 2015-12-24 | 2016-11-23 | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 |
TW109122792A TWI775105B (zh) | 2015-12-24 | 2016-11-23 | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105138479A TWI706323B (zh) | 2015-12-24 | 2016-11-23 | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9898351B2 (zh) |
EP (2) | EP3394732B1 (zh) |
CN (1) | CN108351781B (zh) |
TW (2) | TWI706323B (zh) |
WO (1) | WO2017112374A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US20170300101A1 (en) * | 2016-04-14 | 2017-10-19 | Advanced Micro Devices, Inc. | Redirecting messages from idle compute units of a processor |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
CN110928575B (zh) * | 2018-09-20 | 2022-04-29 | 上海登临科技有限公司 | 一种多设备同步控制系统和控制方法 |
US12008149B2 (en) | 2020-12-16 | 2024-06-11 | International Business Machines Corporation | Method and system for on demand control of hardware support for software pointer authentification in a computing system |
US11797713B2 (en) | 2020-12-16 | 2023-10-24 | International Business Machines Corporation | Systems and methods for dynamic control of a secure mode of operation in a processor |
GB2603167B (en) * | 2021-01-29 | 2023-04-26 | Advanced Risc Mach Ltd | Monitor exclusive instruction |
CN115718622B (zh) * | 2022-11-25 | 2023-10-13 | 苏州睿芯通量科技有限公司 | 一种arm架构下的数据处理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070088916A1 (en) * | 2005-10-19 | 2007-04-19 | Jacobson Quinn A | Technique for thread communication and synchronization |
US20100100688A1 (en) * | 2008-10-16 | 2010-04-22 | Microsoft Corporation | Low-level conditional synchronization support |
US20140075163A1 (en) * | 2012-09-07 | 2014-03-13 | Paul N. Loewenstein | Load-monitor mwait |
US20150067358A1 (en) * | 2013-09-03 | 2015-03-05 | Intersil Americas LLC | Injection locked phasing for a peak-valley multiphase regulator |
US20150286568A1 (en) * | 2007-12-28 | 2015-10-08 | Intel Corporation | Method and apparatus for monitor and mwait in a distributed cache architecture |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5594886A (en) | 1994-10-23 | 1997-01-14 | Lsi Logic Corporation | Pseudo-LRU cache memory replacement method and apparatus utilizing nodes |
US6185634B1 (en) | 1996-09-27 | 2001-02-06 | Emc Corporation | Address triggered DMA controller with an indicative signal including circuitry for calculating a new trigger address value based on the sum of the current trigger address and the descriptor register data with a trigger address register |
US6493741B1 (en) | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6571333B1 (en) * | 1999-11-05 | 2003-05-27 | Intel Corporation | Initializing a memory controller by executing software in second memory to wakeup a system |
US20030126379A1 (en) | 2001-12-31 | 2003-07-03 | Shiv Kaushik | Instruction sequences for suspending execution of a thread until a specified memory access occurs |
US7797683B2 (en) * | 2003-12-29 | 2010-09-14 | Intel Corporation | Decoupling the number of logical threads from the number of simultaneous physical threads in a processor |
US7581042B2 (en) | 2004-12-29 | 2009-08-25 | Intel Corporation | I/O hub resident cache line monitor and device register update |
US7360008B2 (en) | 2004-12-30 | 2008-04-15 | Intel Corporation | Enforcing global ordering through a caching bridge in a multicore multiprocessor system |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US20070150658A1 (en) | 2005-12-28 | 2007-06-28 | Jaideep Moses | Pinning locks in shared cache |
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
US8578138B2 (en) * | 2009-08-31 | 2013-11-05 | Intel Corporation | Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode |
US8700943B2 (en) * | 2009-12-22 | 2014-04-15 | Intel Corporation | Controlling time stamp counter (TSC) offsets for mulitple cores and threads |
US9563425B2 (en) * | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9507404B2 (en) | 2013-08-28 | 2016-11-29 | Via Technologies, Inc. | Single core wakeup multi-core synchronization mechanism |
US10705961B2 (en) * | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
-
2015
- 2015-12-24 US US14/998,217 patent/US9898351B2/en active Active
-
2016
- 2016-11-23 TW TW105138479A patent/TWI706323B/zh active
- 2016-11-23 TW TW109122792A patent/TWI775105B/zh active
- 2016-11-30 WO PCT/US2016/064114 patent/WO2017112374A1/en active Application Filing
- 2016-11-30 CN CN201680068785.3A patent/CN108351781B/zh active Active
- 2016-11-30 EP EP16879845.2A patent/EP3394732B1/en active Active
- 2016-11-30 EP EP19169817.4A patent/EP3547135A1/en not_active Withdrawn
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070088916A1 (en) * | 2005-10-19 | 2007-04-19 | Jacobson Quinn A | Technique for thread communication and synchronization |
US20150286568A1 (en) * | 2007-12-28 | 2015-10-08 | Intel Corporation | Method and apparatus for monitor and mwait in a distributed cache architecture |
US20100100688A1 (en) * | 2008-10-16 | 2010-04-22 | Microsoft Corporation | Low-level conditional synchronization support |
US20140075163A1 (en) * | 2012-09-07 | 2014-03-13 | Paul N. Loewenstein | Load-monitor mwait |
US20150067358A1 (en) * | 2013-09-03 | 2015-03-05 | Intersil Americas LLC | Injection locked phasing for a peak-valley multiphase regulator |
Also Published As
Publication number | Publication date |
---|---|
TWI706323B (zh) | 2020-10-01 |
TW201732564A (zh) | 2017-09-16 |
EP3394732A1 (en) | 2018-10-31 |
CN108351781B (zh) | 2024-01-23 |
EP3394732A4 (en) | 2019-08-14 |
US20170185458A1 (en) | 2017-06-29 |
EP3547135A1 (en) | 2019-10-02 |
TW202042056A (zh) | 2020-11-16 |
CN108351781A (zh) | 2018-07-31 |
US9898351B2 (en) | 2018-02-20 |
EP3394732B1 (en) | 2022-06-15 |
WO2017112374A1 (en) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI775105B (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
CN109791513B (zh) | 用于检测数值累加误差的指令和逻辑 | |
CN108292229B (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
EP3384378B1 (en) | Instruction and logic for in-order handling in an out-of-order processor | |
US20180011796A1 (en) | Apparatus for Hardware Implementation of Heterogeneous Decompression Processing | |
US20170168819A1 (en) | Instruction and logic for partial reduction operations | |
US10705845B2 (en) | Instructions and logic for vector bit field compression and expansion | |
US11010166B2 (en) | Arithmetic logic unit with normal and accelerated performance modes using differing numbers of computational circuits | |
TW201732548A (zh) | 用於向量置換的指令和邏輯 | |
US11016556B2 (en) | Instruction and logic for parallel multi-step power management flow | |
US20160314000A1 (en) | Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding | |
US20170123799A1 (en) | Performing folding of immediate data in a processor | |
US20180164870A1 (en) | Instruction and logic for parallel multi-step power management flow | |
US10990395B2 (en) | System and method for communication using a register management array circuit | |
TWI773654B (zh) | 處理器、運算系統及用於執行以向量為基礎的位元操控之方法 | |
US20210303309A1 (en) | Reconstruction of flags and data for immediate folding | |
WO2017112190A1 (en) | Instruction and logic for getting a column of data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GD4A | Issue of patent certificate for granted invention patent |