TWI830927B - 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 - Google Patents

用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 Download PDF

Info

Publication number
TWI830927B
TWI830927B TW109120805A TW109120805A TWI830927B TW I830927 B TWI830927 B TW I830927B TW 109120805 A TW109120805 A TW 109120805A TW 109120805 A TW109120805 A TW 109120805A TW I830927 B TWI830927 B TW I830927B
Authority
TW
Taiwan
Prior art keywords
memory
writeback
processor
bit
disable
Prior art date
Application number
TW109120805A
Other languages
English (en)
Other versions
TW202113608A (zh
Inventor
希斯翰 莎菲
凡德伊斯 沙巴吉
吉伯 尼格
詹姆斯 科爾曼
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/586,028 external-priority patent/US11301309B2/en
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202113608A publication Critical patent/TW202113608A/zh
Application granted granted Critical
Publication of TWI830927B publication Critical patent/TWI830927B/zh

Links

Images

Abstract

本文敘述了有關處理器非回寫能力的系統、方法、及設備。在一實施例中,處理器包括複數個邏輯處理器;包含非回寫鎖定禁用位元的控制暫存器;由複數個邏輯處理器共享的快取;將快取耦接至記憶體的匯流排,以服務來自複數個邏輯處理器之對記憶體的記憶體請求;及記憶體控制器,其當非回寫鎖定禁用位元設定為第一值時對於由複數個邏輯處理器發出的記憶體請求之讀取-修改-寫入類型禁用匯流排之非回寫鎖定存取,並且當非回寫鎖定禁用位元設定為第二值時對於記憶體請求之讀取-修改-寫入類型實施匯流排之非回寫鎖定存取。

Description

用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體
本揭露大致係有關於電子,更具體地,本揭露的實施例係有關於具有非回寫能力的處理器。
處理器或處理器組執行來自指令集(例如,指令集架構(ISA))的指令。指令集是與編碼相關的電腦架構的一部分,並且通常包括本機資料類型、指令、暫存器架構、位址模式、記憶體架構、中斷和異常處置以及外部輸入和輸出(I/O)。應當注意,本文中的用語指令可以指巨集指令,(例如,提供給處理器以供執行的指令)或指微指令(例如,從處理器的解碼器解碼巨集指令導致的指令)。
100:硬體處理器
102:記憶體
104-1,104-N:核心
106-1,106-N:資料暫存器
108-1,108-N:能力暫存器
110-1,110-N:控制暫存器
112-1,112-N:記憶體控制暫存器
114-1,114-N:其它控制暫存器
116-1,116-N:指令變換後備緩衝器(I-TLB)
118-1,118-N:解碼器
120-1,120-N:重新命名/分配器/排程器
122-1,122-N:執行單元
124-1,124-N:重新排序/撤回單元
128:高層級快取
130:記憶體控制器
132:匯流排
134:埠
136:分頁表
138:片段描述符表
140:記憶體加密電路
200,300:實例格式
202,302:暫存器位址
500:流程
600:同屬向量友善指令格式
605:無記憶體存取
610:記憶體存取
612:部份捨入控制型操作
615:資料轉換類型操作
617:VSIZE類型操作
620:記憶體存取
625,652B.1:暫時
627:寫入遮罩控制
630,652B.2:非暫時
640:格式欄位
642:基礎操作欄位
644:暫存器索引欄位
646:修改符欄位
650:擴增操作欄位
652:阿爾發欄位
652A:RS欄位
652A.1,657A.1:捨入
652A.2:資料轉換
652B:逐出暗示欄位
652C:寫入遮罩控制(Z)欄位
654:貝他欄位
654A:捨入控制欄位
654B:三位元資料轉換欄位
654C:三位元資料操縱欄位
656:抑制所有浮點例外(SAE)欄位
657A:RL欄位
657A.2:向量長度(VSIZE)
657B:廣播欄位
658:二位元捨入操作欄位
659A:捨入操作控制欄位
659B:向量長度欄位
660:比例欄位
662A:位移比例欄位
662B:位移因子欄位
664:資料元件寬度欄位
668:等級欄位
668A:等級A
667B:等級B
670:寫入遮罩欄位
672:立即欄位
674:完全操作碼欄位
700:向量友善指令格式
702:EVEX前綴
705:REX欄位
710:REX’欄位
715:操作碼映射欄位
720:VVVV欄位
725:前綴編碼欄位
730:實數操作碼欄位
740:MOD R/M欄位
742:MOD欄位
744:Reg欄位
746:R/M欄位
754:xxx欄位
756:bbb欄位
800:暫存器架構
810:向量暫存器
815:寫入遮罩暫存器
825:通用暫存器
845:純量浮點堆疊暫存器檔(x87堆疊)
850:MMX緊縮整數平坦暫存器檔
900:處理器管線
902:提取階段
904:長度解碼階段
906:解碼階段
908:分配階段
910:重新命名階段
912:排程階段
914:暫存器讀取/記憶體讀取階段
916:執行階段
918:回寫/記憶體寫入階段
922:例外處置階段
924:確定階段
930:前端單元
932:分支預測單元
934:指令快取單元
936:指令轉譯後備緩衝器
938:指令提取單元
940:解碼單元
950:執行引擎單元
952:重新命名/分配器單元
954:撤回單元
956:排程器單元
958:實體暫存器檔單元
960:執行叢集
962:執行單元
964:記憶體存取單元
970:記憶體單元
972:資料TLB單元
974:資料快取單元
976:L2快取單元
990,1102A-N:核心
1000:指令解碼單元
1002:晶粒上互連網路
1004:層級2(L2)快取記憶體
1006:L1快取
1006A:L1資料快取
1008:純量單元
1010:向量單元
1012:純量暫存器
1014:向量暫存器
1020:調合單元
1022A-B:數值轉換單元
1024:複製單元
1026:寫入遮罩暫存器
1028:16-寬ALU
1100:處理器
1106:共享快取單元
1108:整合圖形邏輯
1110:系統代理器單元
1112:環狀基礎互連單元
1114:整合記憶體控制器單元
1116:匯流排控制器單元
1200:系統
1210,1215:處理器
1220:控制器集線器
1240:記憶體
1245:共處理器
1250:輸入/輸出集線器(IOH)
1260:輸入/輸出(I/O)裝置
1290:圖形記憶體控制器集線器(GMCH)
1295:連接
1300:微處理器系統
1314:I/O裝置
1315:額外處理器
1316:第一匯流排
1318:匯流排橋接器
1320:第二匯流排
1322:鍵盤和/或滑鼠
1324:音頻I/O
1327:通訊裝置
1328:儲存單元
1330:指令/碼及資料
1332,1334:記憶體
1338:共處理器
1339:高效能介面
1350:點對點互連
1352,1354,1386,1388,1394,1398:P-P介面
1370:第一處理器
1372,1382:整合記憶體控制器(IMC)單元
1376,1378:點對點(P-P)介面
1390:晶片組
1396:介面
1400:第二更特定系統
1414:I/O裝置
1415:舊式I/O裝置
1500:SoC
1502:互連單元
1510:應用處理器
1520:共處理器
1530:靜態隨機存取記憶體(SRAM)單元
1532:直接記憶體存取(DMA)單元
1540:顯示單元
1602:高階語言
1604:x86編譯器
1606:x86二進制代碼
1608:指令集編譯器
1610:指令集二進制碼
1612:指令轉換器
1614:x86指令集核心
1616:x86指令集核心
本公開透過範例而非限制的方式在附圖的圖 中示出,其中相像的元件編號指示相似的元件,並且其中:[圖1]根據本揭露實施例繪示耦接至記憶體的硬體處理器。
[圖2]根據本揭露實施例繪示用於記憶體控制暫存器的實例格式。
[圖3]根據本揭露實施例繪示用於能力暫存器的實例格式。
[圖4]根據本揭露實施例繪示用於控制暫存器(例如,CR4至CR0)的實例格式。
[圖5]係根據本揭露實施例的流程圖。
[圖6A]係根據本揭露實施例繪示同屬向量友善指令格式及其等級A指令模板的方塊圖。
[圖6B]係根據本揭露實施例繪示同屬向量友善指令格式及其等級B指令模板的方塊圖。
[圖7A]係根據本揭露實施例繪示之在圖6A和6B中同屬向量友善指令格式之欄位的方塊圖。
[圖7B]係根據本揭露一個實施例繪示構成完全操作碼欄位之圖7A中之特定的向量友善指令格式之欄位的方塊圖。
[圖7C]係根據本揭露一個實施例繪示構成暫存器索引欄位之圖7A中之特定的向量友善指令格式之欄位的方塊圖。
[圖7D]係根據本揭露一個實施例繪示構成擴 增操作欄位650之圖7A中之特定的向量友善指令格式之欄位的方塊圖。
[圖8]係根據本揭露一個實施例之暫存器架構的方塊圖。
[圖9A]根據本發明實施例示出示例性有序管線及示例性暫存器重新命名、失序簽發/執行管線二者的方塊圖。
[圖9B]係根據本揭露實施例繪示之包括在處理器中有序架構核心及示例性暫存器重新命名、失序簽發/執行架構核心之示例性實施例二者的方塊圖。
[圖10A]係根據本揭露實施例之單一處理器核心,連同其連接至晶粒上互連網路及其之層級2(L2)快取的本地子集的方塊圖。
[圖10B]係根據本揭露實施例之在圖10A中的處理器核心部分之展開圖。
[圖11]係根據本揭露實施例之處理器的方塊圖,該處理器可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。
[圖12]係根據本揭露之一個實施例之系統的方塊圖。
[圖13]係根據本發明一實施例之更具體的示例性系統的方塊圖。
[圖14]係根據本發明一實施例之第二更具體的示例性系統的方塊圖。
[圖15]係根據本發明一實施例之系統單晶片(SoC)的方塊圖。
[圖16]係根據本揭露實施例之對比使用軟體指令轉換器將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。
【發明內容】及【實施方式】
在下面的敘述中,闡述了許多具體細節。然而,應當理解,本發明的實施例可以在沒有這些具體細節的情況下實施。在其它情況下,為了避免妨礙對本說明書的理解,眾所皆知的電路、結構及技術不細節顯示。
說明書中對「一個實施例」、「實施例」、「示例性實施例」等的引用指示所描述的實施例可包括特定特徵、結構或特性,但每個實施例可不必包括特定特徵、結構或特性。此外,這樣的用語不一定指的是相同的實施例。此外,當結合實施例描述特定特徵、結構或特性時,無論否有明確描述,其被認為在本領域技術人員的知識範圍內,可結合其它實施例之此種的特徵、結構或特性。
(例如,硬體)處理器(例如,具有一或多個核心)可以執行指令(例如,指令之執行緒)以對資料進行操作,例如以執行算術、邏輯或其它功能。例如,軟體可請求操作並且硬體處理器(例如,其核心或多個核心)可回應於該請求執行該操作。在某些實施例中,(例如,中央處 理單元(CPU)之)邏輯處理器或多個邏輯處理器係用以回應於該請求執行該操作。邏輯處理器可以為核心。複數個邏輯處理器可實施於單一核心中,例如,其中核心的組件可支援多執行緒(例如,執行二或多個並列的操作或執行緒集合),且可以多種方式達成支援,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyper-Threading技術)。
在某些實施例中,複數個邏輯處理器執行多個操作。該等邏輯處理器中的至少一者可執行其中儲存要被讀取之資料之鎖定的讀取-修改-寫入類型(RMW)操作,然後對其進行修改,在修改後的狀態下回寫,從修改RMW操作期間儲存之其他邏輯處理器鎖定。作為一個實例,用以修改資料的第一邏輯處理器(例如,資料的快取線)將在用於該資料的儲存上確證鎖定,修改該資料(例如,其一或多個位元),然後將資料之修改的版本回寫至儲存中(例如,從中讀取之相同的位置),然後取消確證該鎖定,例如,以防止另一邏輯處理器執行由第一邏輯處理器讀取和寫入之間的寫入。實施鎖定(例如,匯流排鎖定)之記憶體請求之讀取-修改-寫入類型的特定非限制範例是某些鎖定指令和流程(例如,帶有鎖定前綴的ADD、更新片段存取位元、或分頁表存取/髒位元)。
在某些實施例中,鎖定的RMW操作係針對 儲存在由複數個邏輯處理器共享之快取(例如,L1快取)中的資料,因此其僅影響在共享此快取之相同邏輯處理器上運行的軟體。然而,在其他實施例中,對於儲存要讀取和修改的資料的儲存的RMW類型的記憶體請求,實施非回寫鎖定。在一實施例中,實施非回寫鎖定,因為要讀取及修改的資料沒有儲存在邏輯處理器之(例如,內部)快取中以執行RMW操作,而是儲存在與快取分開的記憶體中,其中快取藉由非回寫而鎖定其它存取。例如,鎖定將複數個邏輯處理器耦接至記憶體的匯流排。
然而,在某些實施例中,非回寫鎖定阻隔所有邏輯處理器(例如,經由鎖定的匯流排耦接至記憶體)存取記憶體,直到完成RMW操作。在這些實施例中,具有由邏輯處理器中的一者鎖定之匯流排的叢發導致資料匱乏到其餘的邏輯處理器。在運行即時軟體(例如,即時作業系統(RTOS))及通用軟體(例如,通用作業系統(GPOS))之處理器中,來自導致非回寫鎖定之發行之通用軟體的記憶體請求防止即時軟體存取記憶體,從而在這些實施例中防止即時軟體進行。在一實施例中,這發生在包括RTOS和GPOS兩者的系統中,其中GPOS組態分頁表以允許非回寫(非WB)存取軟體。因此,本文的實施例藉由允許所揭露之選擇性控制實施方式或非回寫鎖定之禁用(如所述),從而對(例如,電腦的)處理器本身的功能進行了改善。以此特徵,物聯網(IoT)系統可以擺脫這些匯流排鎖定,並允許即時軟體運行而不受處理器上其他軟體(例如,CPU)的干 擾。
本文的某些實施例提供了一種新的架構,其允許軟體(例如,作業系統)選擇性地禁用非回寫鎖定存取(例如,禁用服務於導致非回寫鎖定的記憶體請求),例如,與僅禁用所有類型的鎖定相反。在一實施例中,添加新的模型指明暫存器(MSR)位元,其當設定為「導通」值時,係用以導致處理器(例如,CPU)禁用非回寫鎖定存取,例如,藉由當軟體發出非WB鎖定存取同時該MSR位元設定為「導通」值時,導致一般保護(GP)錯誤的產生。
圖1根據本揭露實施例繪示耦接至記憶體102的硬體處理器100。記憶體102可以為系統記憶體,例如與快取分開。硬體處理器100可包括一或多個核心(例如,核心104-1至104-N,其中N為任何大於一的整數)。每一核心可包括一或多個邏輯處理器。單一邏輯處理器可以為單一核心。複數個邏輯處理器可實施於單一核心中,例如,其中核心的組件支援多執行緒(例如,執行二或多個並列的操作或執行緒集合),且可以多種方式達成支援,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyper-Threading技術)。邏輯處理器可共享對某些組件(例如,(多個)快取或記憶體)的存取。
硬體處理器100(如圖1所描繪)包括兩個核心 (核心104-1和核心104-N),其共享對於高層級快取128的存取。每一核心可執行複數個硬體執行緒。例如,在具有由每一核心執行之兩個邏輯處理器的一實施例中,軟體實體(諸如,作業系統)可以將處理器100視為四個單獨的邏輯處理器,而處理器100則可以執行四個軟體執行緒。核心104-A至104-N可為如圖所示為對稱核心,或者可以為不對稱核心(例如,具有不同組態的核心、執行單元等)。
在某些實施例中,核心104-1包括資料暫存器或多個資料暫存器106-1、控制暫存器或多個控制暫存器110-1、及能力暫存器或多個能力暫存器108-1的任何組合。在一實施例中,資料暫存器106-1用於儲存要操作的資料。在一實施例中,能力暫存器108-1儲存各表示特定核心之能力的位元或多個位元,例如,用以指示核心(或所有核心)是否支援如本文所討論之非回寫鎖定禁用(例如,如圖3所描繪)。在一實施例中,控制暫存器110-1儲存各控制核心是否啟用某些功能的位元或多個位元,例如,打開或關閉本文所討論之非回寫鎖定禁用。在一實施例中,控制暫存器110-1包括記憶體控制暫存器112-1,(例如,如圖2中所描繪)。在一實施例中,控制暫存器110-1包括其它控制暫存器或多個其它控制暫存器114-1(例如,如圖4中所描繪)。
所描繪的核心104-1包括分支目標緩衝器(BTB)、指令快取(i快取)、及/或指令轉譯後備緩衝器(I-TLB)116-1,例如,利用BTB來預測要執行/採用的分支、 使用指令快取來快取指令(例如,來自較高層級快取及/或記憶體102的指令)及/或使用I-TLB來儲存(例如,線性至實體)指令的位址轉譯條目。在某些實施例中,處理器100能夠推測性執行預提取及推測性地執行預測的分支。
解碼器118-1(例如,解碼電路)係用以將指令(例如,從提取指令中接收的)解碼為經解碼指令。在一實施例中,處理器100支援指令集架構(ISA),其界定或指明在處理器100上可解碼/可執行的指令。
所描繪的核心104-1包括重新命名/分配器/排程器120-1。在一實施例中,重新命名電路係暫存器重新命名器,其用以將程式/指令參考暫存器重新命名為處理器100內部的其他暫存器。在一實施例中,分配器電路係用以分配(例如,保留)處理器資源,諸如用以追蹤指令結果之執行單元及/或重排序緩衝器。在一實施例中,排程器電路係用以排程在處理器資源(例如,(多個)執行單元122-1)上的指令(例如,對應於該指令的微碼)之執行。
在某些實施例中,指令(例如,微碼)根據它們的類型及/或可用性在執行單元(例如,執行電路)上排程。例如,在具有可用浮點執行單元的執行單元的埠上排程浮點指令。與執行單元相關聯的暫存器檔,亦可包括用以儲存資訊指令處理結果。示例性執行單元包括浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、或其它執行單元。
所描繪的核心104-1包括重新排序/撤回單元 124-1。在一實施例中,重新排序/撤回單元124-1包括組件(諸如上述之重新排序緩衝器、載入緩衝器、及儲存緩衝器),以支援失序執行的指令之失序執行和後續有序撤回,例如,其中分配器和重新命名電路亦保留其它資源,諸如用以追蹤指令結果的重新排序緩衝器。
在某些實施例中,核心104-N包括資料暫存器或多個資料暫存器106-N、控制暫存器或多個控制暫存器110-N、以及能力暫存器或多個能力暫存器108-N的任何組合。在一實施例中,資料暫存器106-N係用於儲存要對其進行操作的資料。在一實施例中,能力暫存器108-N儲存各表示特定核心之能力的位元或多個位元,例如,用以指示核心(或所有核心)是否支援如本文所討論之非回寫鎖定禁用(例如,如圖3所描繪)。在一實施例中,控制暫存器110-N儲存各控制核心是否啟用某些功能的位元或多個位元,例如,打開或關閉本文所討論之非回寫鎖定禁用。在一實施例中,控制暫存器110-N包括記憶體控制暫存器112-N,(例如,如圖2中所描繪)。在一實施例中,控制暫存器110-N包括其它控制暫存器或多個其它暫存器114-N,例如如圖4中所描繪。
所描繪的核心104-N包括分支目標緩衝器(BTB)、指令快取(i快取)、及/或指令轉譯後備緩衝器(I-TLB)116-N,例如,利用BTB來預測要執行/採用的分支、使用指令快取(i快取)來快取指令(例如,來自較高層級快取及/或記憶體102的指令)及/或使用I-TLB來儲存(例如, 線性至實體)指令的位址轉譯條目。在某些實施例中,處理器100能夠推測性執行預提取及推測性地執行預測的分支。
解碼器118-N(例如,解碼電路)係用以將指令(例如,從指令快取接收的)解碼為經解碼指令。在一實施例中,處理器100支援指令集架構(ISA),其界定或指明在處理器100上可解碼/可執行的指令。
所描繪的核心104-N包括重新命名/分配器/排程器120-N。在一實施例中,重新命名電路係用以暫存器重新命名器,用以將程式/指令參考暫存器重新命名為處理器100內部的其他暫存器。在一實施例中,分配器電路係用以分配(例如,保留)處理器資源,諸如用以追蹤指令結果之執行單元及/或重排序緩衝器。在一實施例中,排程器電路係用以排程在處理器資源(例如,(多個)執行單元122-N)上的指令(例如,對應於該指令的微碼)之執行。
在某些實施例中,指令(例如,微碼)根據它們的類型及/或可用性在執行單元(例如,執行電路)上排程。例如,在具有可用浮點執行單元的執行單元的埠上排程浮點指令。與執行單元相關聯的暫存器檔亦可包括,用以儲存資訊指令處理結果。示例性執行單元包括浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、或其它執行單元。
所描繪的核心104-N包括重新排序/撤回單元124-N。在一實施例中,重新排序/撤回單元124-N包括組 件(諸如上述之重新排序緩衝器、載入緩衝器、及儲存緩衝器),以支援失序執行的指令之失序執行和後續有序撤回,例如,其中分配器和重新命名電路亦保留其它資源,諸如用以追蹤指令結果的重新排序緩衝器。
所描繪的核心104-1包括較低層級資料快取(d快取)及/或資料轉譯後備緩衝器(d-TLB),例如,具有用以快取資料(例如,來自較高層級快取及/或記憶體102的資料)的資料快取及/或用以儲存(例如,線性或實體)所儲存資料之位址轉譯條目的D-TLB,例如,耦接至各別執行單元或多個執行單元。所描繪的處理器100包括更高層級(例如,L2或L3)快取128。快取係包括在某些實施例以快取最近在元件上提取及/或操作的元件。注意更高層級可以指離(多個)執行單元更遠的快取層級。在一實施例中,高層級快取128係第二層級(L2)資料快取。在一實施例中,每一資料快取將存儲最近使用/操作的元件(諸如資料運算元),其可能保持在快取同調性狀態中,諸如但不限於修改、互斥、共享和無效(MESI)狀態。D-TLB可儲存最近的虛擬(或線性)至實體位址轉譯。作為具體示例,處理器可以包括分頁表結構,以將實體記憶體分割成複數個虛擬分頁。(多個)資料快取可利用為異動記憶體或其它記憶體,以在異動執行期間追蹤暫定存取。在一實施例中,分頁表136及/或片段描述符表係儲存在記憶體102中,例如,以及在一或多個快取中快取。
處理器100可包括記憶體控制器130(或具有 處理器100之系統單晶片(SoC)可包括記憶體控制器)。在一實施例中,記憶體控制器130控制記憶體存取,例如,藉由查看在(多個)更高層級快取及/或記憶體102以為快取中資料丟失提供服務。在一實施例中,更高層級快取128(例如,和記憶體控制器130)係耦接至匯流排132。在圖1中,匯流排132包括至記憶體102的埠134。匯流排132可包括其它埠,以與處理器100外部的裝置(諸如,記憶體102、晶片組、或其它電路)進行通訊。記憶體102可以專用於處理器100或者與系統中的其他設備共享。記憶體102之實例包括動態隨機存取記憶體(DRAM)、靜態RAM(SRAM)、非揮發性記憶體(NV記憶體)等。匯流排132可包括輸入/輸出(I/O)緩衝器,以傳輸和接收在匯流排上的匯流排信號。匯流排可為互連。
在某些實施例中,(例如,單一核心104-1或104-N之、複數個核心104-1至104-N之)複數個邏輯處理器係執行操作。該等邏輯處理器中的至少一者可執行其中儲存要被讀取之資料之鎖定的讀取-修改-寫入類型(RMW)操作,然後對其進行修改,在修改後的狀態下回寫,從修改RMW操作期間儲存之其他邏輯處理器鎖定。作為一個實例,用以修改資料的(例如,核心104-1之)第一邏輯處理器(例如,資料的快取線)將在用於該資料的儲存上確證鎖定,修改該資料(例如,其一或多個位元),然後將資料之修改的版本回寫至儲存中(例如,從中讀取之相同的位置),然後取消確證該鎖定,例如,以防止另一(例如,核 心104-1或核心104-N之)邏輯處理器執行由第一處理器讀取和寫入之間的寫入。實施鎖定(例如,匯流排鎖定)之記憶體請求之讀取-修改-寫入類型的特定非限制範例是某些鎖定指令和流程(例如,帶有鎖定前綴的ADD、更新片段存取位元、或頁表存取/髒位元)。
在某些實施例中,鎖定的RMW操作係針對儲存在由複數個邏輯處理器(例如,核心104-1之L1快取)共享之快取(例如,核心104-1之L1快取)中的資料,因此其僅影響在共享此快取之相同邏輯處理器上運行的軟體。然而,在其他實施例中,對於儲存要讀取和修改的資料的儲存的RMW類型的記憶體請求,實施非回寫鎖定。在一實施例中,實施非回寫鎖定,因為要讀取及修改的資料沒有儲存在邏輯處理器之(例如,內部)快取中以執行RMW操作,而是儲存在與快取分開的記憶體102中,其中快取藉由非回寫而鎖定其它存取。例如,鎖定將複數個邏輯處理器耦接至記憶體的匯流排132。
在一實施例中,鎖定的RMW操作係用於儲存在由核心104-1或核心104-N之複數個邏輯處理器共享之核心104-1或核心104-N的快取(例如,更高層級快取128)中的資料,並且該快取藉由匯流排132之非回寫鎖定而鎖定其它存取。因此,在此實施例中,非回寫鎖定阻隔所有的邏輯處理器或核心104-1或核心104-N存取記憶體,直到完成RMW操作為止。例如,其中第一邏輯處理器運行即時碼及第二邏輯處理器運行通用碼,來自導致非回寫鎖定之 發行之通用軟體的記憶體請求防止即時軟體存取記憶體,從而在某些實施例中防止即時軟體進行。
本文的某些實施例提供了一種新的架構,其允許軟體(例如,作業系統)選擇性地禁用非回寫鎖定存取(例如,禁用服務於導致非回寫鎖定的記憶體請求),例如,與僅禁用所有類型的鎖定相反。在一實施例中,在控制暫存器110-1及/或控制暫存器110-N(例如,記憶體控制暫存器112-1及/或記憶體控制暫存器112-N)中添加新的位元,其當設定為「導通」值而不是「斷開」值時,係用以導致處理器(例如,CPU)禁用非回寫鎖定存取,例如,藉由當軟體發出非WB鎖定存取同時該MSR位元設定為「導通」值時,導致一般保護(GP)錯誤的產生。在一實施例中,每一核心包括在其控制暫存器(例如,記憶體控制暫存器)中其本身的位元,其當設定為「導通」值而不是「斷開」值時,係用以導致核心禁用該核心(例如,在核心上實施的每一邏輯處理器)的非回寫鎖定存取。在一實施例中,多個核心中的每一核心共享在共享的控制暫存器(例如,記憶體控制暫存器)中的位元,其當設定為「導通」值而不是「斷開」值時,係用以導致核心禁用那些核心(例如,在那些核心上實施的每一邏輯處理器)的非回寫鎖定存取。
在某些實施例中,記憶體請求係由請求實體發送,例如,執行單元發送載入請求或儲存請求。記憶體請求可以為讀取-修改-寫入類型,例如,其從儲存讀取一 值至執行單元,以執行單元修改該值,且接著將修改的值回寫至儲存(例如,相同的儲存位置)。在一實施例中,記憶體請求係由記憶體控制器130(例如,用以存取記憶體102)接收,以及記憶體控制器將檢查當控制暫存器(例如,記憶體控制暫存器)中具有在該控制暫存器(例如,用於產生記憶體請求之核心的記憶體控制暫存器)中是否被設定為「導通」值而不是「斷開」值的位元時,從而導致記憶體控制器130禁用對記憶體102的非回寫(例如,非快取的)鎖定存取(例如,藉由不允許用於記憶體請求的匯流排132的匯流排鎖定)。在一實施例中,非回寫記憶體存取係不能從快取(例如,不可快取)進行服務,而是從記憶體102進行服務的記憶體快取。
在某些實施例中,對於分頁表136及/或片段描述符表138的記憶體請求係記憶體請求的讀取-修改-寫入類型,並因此可導致匯流排132之鎖定存取(例如,非回寫鎖定存取)。在某些實施例中,分頁表136儲存由在電腦(例如,作業系統)中的虛擬記憶體系統使用的資料結構,以指示虛擬位址與實體位址之間的映射,以將實體記憶體劃分成複數個虛擬分頁。在一實施例中,當前分頁目錄的實體位址係儲存在暫存器CR3(例如,圖4中),也可以稱為分頁目錄基底暫存器(PDBR)。在某些實施例中,片段描述符表138儲存由電腦(例如,作業系統)中的虛擬記憶體系統使用的資料結構,以將虛擬(例如,邏輯)位址映射至實體(例如,線性)位址。
暫存器可包括下列中的一或多個(或其任何組合):控制暫存器(例如,CR0至CR4)判定處理器的操作模式及當前執行任務的特性;記憶體控制暫存器可包括一或多個記憶體管理暫存器(例如,全局描述符表暫存器(GDTR)、中斷描述符表暫存器(IDTR)、任務暫存器、或用以指明在保護模式記憶體管理中使用的資料結構之位置的本地描述符表暫存器(LDTR);除錯暫存器(例如,DR0至DR7))以控制允許處理器的除錯操錯的監控;用於將記憶體類型分配至記憶體之區域的記憶體類型範圍暫存器(MTRR);或用於控制和報告處理器(例如,每個核心)效能(例如,其中除了時間戳計數器之外,MSR係用以處置與系統相關的功能,並且應用程式不可存取)的機器(例如,模型)指明暫存器(MSR)。圖2至4繪示可被利用的各種暫存器格式。
在一實施例中,處理器100係用以藉由產生(例如,每一邏輯處理器或每一核心)故障(例如,中斷)(例如,停止用於匯流排之鎖定之請求之執行並發送中斷(例如,由作業系統讀取)的一般保護錯誤)來禁用匯流排的非回寫鎖定存取。
在某些實施例中,在一些情況下,即使檢測到匯流排(例如,鎖定的RMW存取)之非回寫鎖定(例如,鎖定存取)並設定非回寫鎖定禁用位元(例如,設定MEMORY_CONTROL[Non_WB_LOCK_DISABLE]位元)時也可能期望處理器(例如,CPU)不產生一般保護錯誤: 1.當硬體及/或軟體已禁用快取(例如,藉由將暫存器CR0中的位元CD設定為「導通」),因此所有存取係不可快取,2.當保護容器(例如,指定位址空間)之記憶體係由具有非回寫記憶體類型之記憶體加密電路140使用時,例如,用於Intel® Software Guard Extensions(SGX)的保留記憶體係以非回寫記憶體類型進行程式化,3.啟用擴充分頁表(EPT)及EPT存取/髒(A/D)及EPT記憶體類型(MEMTYPE)之虛擬機器監視器(VMM)係非回寫(非WB),或4.發布的中斷描述符(如果它映射到非回寫記憶體)。
在某些實施例中,硬體及/或軟體可確保匯流排鎖定(作為非回寫鎖定存取的結果)不會被下述佔用:1.將非回寫鎖定禁用位元(例如,在TEST_CTRL[NON-WRITE-BACK LOCK DISABLE]中)設定為「導通」,2.不禁用快取(例如,不將CR0.CD設定為「導通」)3.將處理器保留的記憶體範圍暫存器(PRMRR)始終組態為「回寫」(例如,藉由設定控制暫存器,其為作業系統軟體提供控制如何快取處理器對記憶體範圍的存取),4.如果使用EPT並啟用EPTA/D位元,則在回寫記憶體中定位EPT分頁結構,或5.如果使用發布的中斷,則將發布的中斷描述符定位在回寫記憶體中,而不是在非回寫記憶體中。
下表1繪示實例情況,其中匯流排鎖定可能來自對於匯流排(例如,對於記憶體請求之讀取-修改-寫入類型)的非回寫鎖定存取。應注意如果在下面進一步討論,下表包括實例指令,以及可能的指令格式。
Figure 109120805-A0305-02-0023-1
Figure 109120805-A0305-02-0024-2
在某些實施例中,增加控制位元來控制非回寫鎖定(例如,藉由執行寫入MSR(WRMSR)指令,例如,在用以讀取MSR之內容的讀取MSR(RDMSR)指令之後)(例如,圖2中TEST_CTRL MSR(位址033H)位元#28)的啟用和禁用。
在某些實施例中,添加能力位元以枚舉非回寫鎖定禁用特徵的存在(例如,在圖3之IA32_CORE_CAPABILITIES MSR(位址0CFH)位元#4中)。
圖2根據本揭露實施例繪示用於記憶體控制暫存器(例如,TEST_CTRL)的實例格式200。所描繪之格式200包括十六進位33H(十進位51)之暫存器位址202。格式200包括用以控制非回寫鎖定之啟用(例如,當設定為零時)與禁用(例如,當設定為一時)的位元28。所描繪的格式200更包括保留的(例如,未使用的)位元0至27、用以啟用對於分裂鎖定的存取的對齊檢查(#AC(0))(例如,導致對所有當前特權層級(CPL)的分裂鎖定的存取進行對齊檢查異常而與EFLAGS.AC的CR0.AM無關)(例如,如果設定位元29和31,則位元29優先)的位元29、被保留的位元30、及禁用對於分裂鎖定的存取的匯流排鎖定(例如,LOCK# signal)斷言的位元31。在一實施例中,分裂鎖定係存取兩個快取線的原子操作,其在當存取兩個快取線時導致匯流 排鎖定。本文所討論之匯流排的非回寫鎖定可利用於存取資料的單一快取線或更少(例如,不是分裂鎖定)。
應理解到數字僅為示例,並且可使用其它格式(例如,64位元暫存器取代32位元暫存器)。
圖3根據本揭露實施例繪示用於能力暫存器的實例格式300。所描繪之格式300包括十六進位CFH(十進位207)之暫存器位址302。格式300包括位元4,以指示對應的組件(例如,核心)何時包括非回寫鎖定之非回寫鎖定禁用能力(例如,當設定為一)或何時不包括非回寫鎖定禁用能力禁用(例如,當設定為零)。能力位元可在製造期間程式化(例如,並且不能由使用者改變)。
所描繪的格式300更包括保留的(例如,未使用的)位元0至3、用以指示(例如,當設定為一時)組件(例如,核心)支援對於分裂鎖定的存取之對齊檢查異常(例如,#AC(0))的位元5、以及經保留的位元6至31。
應理解到數字僅為示例,並且可使用其它格式(例如,64位元暫存器取代32位元暫存器)。
圖4根據本揭露實施例繪示用於控制暫存器(例如,CR4至CR0)的實例格式。
對於暫存器CR4的格式可包括表2中的以下一或多個欄位。
Figure 109120805-A0305-02-0026-3
對於暫存器CR3之格式可包括下列中的一或多個:當啟用虛擬位址(例如,PG位元係設定在CR0中)時,CR3啟用該處理器以藉由對於當前任務定位分頁目錄和分頁表將線性位址轉譯為實體位址。作為一個實例,CR3的上20個位元係分頁目錄基底暫存器(PDBR),其儲存第一分頁目錄條目的實體位址。如果設定在CR4中的PCIDE位元,則最低12個位元係用於處理上下文識別符(process-context identifier;PCID)。位元4可儲存分頁層級快取禁用(PCD)以控制用於存取當前分頁結構階層之第一分頁結構的記憶體類型(例如,如果禁用分頁,以實體位址擴充(PAE)分頁或當CR4.PCIDE=1時使用四層級分頁,則不使用此位元4)。位元3可儲存分頁層級直寫(PWT)以控制用於存取當前分頁結構階層之第一分頁結構的記憶體類型(例如,如果禁用分頁,以實體位址擴充(PAE)分頁或當CR4.PCIDE=1時使用四層級分頁,則不使用此位元4)。
對於暫存器CR2之格式可以是分頁故障線性位址(PFLA)的儲存,例如,當發生分頁故障時,程式嘗試存取的位址係儲存在CR2暫存器中。
可保留對於暫存器CR1之格式,例如,處理器(例如,CPU)在嘗試存取它時將拋出(例如,#UD)異常。
對於暫存器CR0的格式可包括表3中的以下一或多個欄位。
Figure 109120805-A0305-02-0028-4
圖5係根據本揭露實施例的流程圖。所描繪的流程500包括設定在處理器之複數個邏輯處理器之控制暫存器中的非回寫鎖定禁用位元502;以共享經由匯流排耦接至記憶體的快取之處理器之複數個邏輯處理器中的每一者執行各別操作504;以記憶體控制器從複數個邏輯處理器的邏輯處理器接收對於記憶體的記憶體請求506;當 非回寫鎖定禁用位元係設定為第一值時用記憶體控制器禁用對於由複數個邏輯處理器之邏輯處理器發出的記憶體請求的讀取-修改-寫入類型之匯流排之非回寫鎖定存取508;當非回寫鎖定禁用位元係設定為第二值時用記憶體控制器實施對於記憶體請求之讀取-修改-寫入類型的匯流排之非回寫鎖定存取510。
下文詳細敘述上文可以使用的示例性架構、系統等。
所揭露之技術的至少一些實施例可以參考以下實例來敘述:
實例1.一種設備,包含:複數個邏輯處理器;控制暫存器,其包含非回寫鎖定禁用位元;快取,其由該複數個邏輯處理器共享;匯流排,其將該快取耦接至記憶體,該匯流排服務來自該複數個邏輯處理器之對該記憶體的記憶體請求;以及記憶體控制器,其當該非回寫鎖定禁用位元設定為第一值時對於由該複數個邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型禁用該匯流排之非回寫鎖定存取,並且當該非回寫鎖定禁用位元設定為第二值時對於該記憶體請求之該讀取-修改-寫入類型實施該匯流排之該非回寫鎖定存取。
2.如實例1之設備,其中該記憶體控制器係用以建立 一般保護錯誤以禁用該非回寫鎖定存取。
3.如實例1之設備,其中該控制暫存器係記憶體控制暫存器。
4.如實例3之設備,其中該記憶體控制暫存器之位址係三十三十六進位。
5.如實例1之設備,其進一步包含能力暫存器,該能力暫存器包含能力位元,當該能力位元被設定為第一值時,指示該複數個邏輯處理器支援非回寫鎖定存取禁用特徵,並且當設定為第二值時,指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
6.如實例1之設備,其中該記憶體控制器係用以,當快取禁用位元係設定為第二控制暫存器中的值時禁用該快取,當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型不禁用該匯流排之非回寫鎖定存取。
7.如實例1之設備,其中該記憶體控制器係用以,當啟用擴充分頁表並將記憶體類型設定為非回寫時,當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型不禁用該匯流排之非回寫鎖定存取。
8.如實例1之設備,其中該複數個邏輯處理器係複數個處理器核心。
實例9.一種方法,包含:設定在處理器之複數個邏輯處理器之控制暫存器中的 非回寫鎖定禁用位元;用共享經由匯流排耦接至記憶體之快取的該處理器之該複數個邏輯處理器中的每一者執行各別操作;用記憶體控制器從該複數個邏輯處理器中的邏輯處理器接收對於該記憶體的記憶體請求;當該非回寫鎖定禁用位元係設定為第一值時,對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求的讀取-修改-寫入類型,用該記憶體控制器禁用該匯流排的非回寫鎖定存取;以及當該非回寫鎖定禁用位元係設定為第二值時,對於該記憶體請求的該讀取-修改-寫入類型,用該記憶體控制器實施該匯流排的該非回寫鎖定存取。
10.如實例9之方法,其中該禁用該非回寫鎖定存取包含產生一般保護錯誤。
11.如實例9之方法,其中該控制暫存器係記憶體控制暫存器。
12.如實例11之方法,其中該記憶體控制暫存器之位址係三十三十六進位。
13.如實例9之方法,其進一步包含將該處理器之能力暫存器的能力位元設定為第一值以指示該複數個邏輯處理器支援非回寫鎖定存取禁用特徵,並且將該能力位元設定為第二值以指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
14.如實例9之方法,其進一步包含將第二控制暫存 器中的快取禁用位元設定為一值以禁用該快取,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
15.如實例9之方法,其進一步包含對於該複數個邏輯處理器啟用擴充的分頁表並將記憶體類型設定為非回寫,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
16.如實例9之方法,其中該複數個邏輯處理器係複數個處理器核心。
實例17.一種非暫時性機器可讀取媒體,其儲存當由機器執行時導致該機器執行方法的碼,該方法包含:設定在處理器之複數個邏輯處理器之控制暫存器中的非回寫鎖定禁用位元;用共享經由匯流排耦接至記憶體之快取的該處理器之該複數個邏輯處理器中的每一者執行各別操作;用記憶體控制器從該複數個邏輯處理器中的邏輯處理器接收對於該記憶體的記憶體請求;當該非回寫鎖定禁用位元係設定為第一值時,對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求的讀取-修改-寫入類型,用該記憶體控 制器禁用該匯流排的非回寫鎖定存取;以及當該非回寫鎖定禁用位元係設定為第二值時,對於該記憶體請求的該讀取-修改-寫入類型,用該記憶體控制器實施該匯流排的該非回寫鎖定存取。
18.如實例17之非暫時性機器可讀取媒體,其中該禁用該非回寫鎖定存取包含產生一般保護錯誤。
19.如實例17之非暫時性機器可讀取媒體,其中該控制暫存器係記憶體控制暫存器。
20.如實例19之非暫時性機器可讀取媒體,其中該記憶體控制暫存器之位址係三十三十六進位。
21.如實例17之非暫時性機器可讀取媒體,其進一步包含將該處理器之能力暫存器的能力位元設定為第一值以指示該複數個邏輯處理器支援非回寫鎖定存取禁用特徵,並且將該能力位元設定為第二值以指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
22.如實例17之非暫時性機器可讀取媒體,其進一步包含將第二控制暫存器中的快取禁用位元設定為一值以禁用該快取,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
23.如實例17之非暫時性機器可讀取媒體,其進一步包含對於該複數個邏輯處理器啟用擴充的分頁表並將記憶 體類型設定為非回寫,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
24.如實例17之非暫時性機器可讀取媒體,其中該複數個邏輯處理器係複數個處理器核心。
於又一實施例中,設備包含資料儲存裝置,其儲存碼,該碼由硬體處理器執行時導致該硬體處理器執行本文中揭露的任何方法。設備可以如詳細描述中所描述的。方法可以如詳細描述中所描述的。
指令集可包括一或多個指令格式。給定的指令格式可定義各種欄位(例如,位元數、位元位置)以指定,尤其是,要執行的操作(例如,操作碼)和其上將執行該操作的運算元和/或其它資料欄位(例如,遮罩)。一些指令格式透過指令模板(或子格式)的定義進一步分解。例如,給定指令格式的指令模板可以被定義為具有指令格式的欄位的不同子集(所包括的欄位通常以相同的順序,但是至少一些具有不同的位元位置,因為包括更少的欄位)和/或被定義為具有不同解讀的給定欄位。因此,使用給定指令格式(以及如果被定義,則在該指令格式的指令模板中的給定指令模板中)表示ISA的每個指令,並且包括用於指定操作和運算元的欄位。例如,示例性ADD指令具有特定操作碼和指令格式,其包括操作碼欄位以指定操作碼和運算元欄位以選擇運算元(來源1/目的地和來源2);並且 在指令流中出現該ADD指令將在選擇特定運算元的運算元欄位中具有特定內容。已經發布及/或公布一組SIMD擴充,其被稱為進階向量擴充(Advanced Vector Extensions、AVX)(AVX1和AVX2),並且使用向量擴充(Vector Extensions、VEX)編碼機制(例如,參見2018年十一月之Intel® 64和IA-32架構軟體開發人員手冊;並參見2018年十月Intel®架構指令集擴充程式化參考)。
示例性指令格式
文中所述之指令的實施例可以具體化在不同格式中。另外,下面詳細描述示例性系統、架構和管線。指令的實施例可以在這樣的系統、架構和管線上執行,但不限於那些詳細敘述的。
同屬向量友善指令格式
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量操作)。雖然說明其中透過向量友善指令格式而支援向量及純量操作之實施例,但是替代的實施例可以僅使用向量友善指令格式向量操作。
圖6A-6B係根據本揭露實施繪示出同屬向量友善指令格式及其指令模板的方塊圖。圖6A係根據本揭露實施例繪示同屬向量友善指令格式及其等級A指令模板的方塊圖;而圖6B係根據本揭露實施例繪示同屬向量友善指 令格式及其等級B指令模板的方塊圖。具體而言,等級A及等級B指令模板被定義用於同屬向量友善指令格式600,等級A及等級B指令模板都包含無記憶體存取605指令模板及記憶體存取620指令模板。在向量友善指令格式的內容中同屬一詞係指指令格式未被束縛於任何特定的指令集。
儘管將說明本揭露的實施例,其中,向量友善指令格式支援下述:具有32位元(4位元組)或是64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(因此,64位元組向量由16個雙倍字大小元件或是替代地由8個四倍字大小元件組成);具有16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);替代實施例可以更多、更少或是不同的資料元件寬度(例如,128位元(16位元組)資料元件寬度)來支援更多、更少及/或不同的向量運算元大小(例如,256位元組向量運算元)。
在圖6A中的等級A指令模板包括:1)在無記憶體存取605指令模板之內,顯示有無記憶體存取、完全捨入(full round)控制型操作610指令模板及無記憶體存取、資料轉換類型操作615指令模板;以及,2)在記憶體 存取620指令模板之內,顯示有記憶體存取、暫時625指令模板及記憶體存取、非暫時630指令模板。圖6B中的等級B指令模板包括:1)在無記憶體存取605指令模板之內,顯示有無記憶體存取、寫入遮罩控制、部份捨入控制型操作612指令模板及無記憶體存取、寫入遮罩控制、向量長度(vsize)類型操作617指令模板;以及,2)在記憶體存取620指令模板之內,顯示有記憶體存取、寫入遮罩控制627指令模板。
同屬向量友善指令格式600包括以圖6A至6B中所示的次序列出的下述欄位。
格式欄位640-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,並因而識別指令串中向量友善指令格式的指令發生。如此一來,以此欄位對於僅有同屬向量友善指令格式之指令集並非所需的觀點而言,此欄位是選擇性的。
基礎操作欄位642-其內容區別不同的基礎操作。
暫存器索引欄位644-其內容直接或透過位址產生,指明來源運算元和目標地運算元在暫存器中或在記憶體中的位置。這些包含足夠數目的位元以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔中選取N個暫存器。雖然在一實施例中,N可以高達三個來源及一目的地暫存器,但是替代實施例可以支援更多或是更少的來源及目的地暫存器(例如,可以支援高達二個來源,其 中,這些來源中之一也作為目的地,可以支援高達三個來源,其中,這些來源中之一也作為目的地,可以支援高達二個來源及一個目的地)。
修改符欄位646-其內容區別指定及未指定記憶體存取的同屬向量指令格式中指令的發生;亦即,在無記憶體存取605指令模板與記憶體存取620指令模板之間作區分。記憶體存取操作對記憶體層級結構讀取及/或寫入(在某些情況中,使用暫存器中的值來指定來源及/或目的地位址),而非記憶體存取操作未如此作(例如,來源及目的地是暫存器)。雖然在一實施例中,此欄位也在三種不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支援更多、更少、或是不同的方式來執行記憶體位址計算。
擴增操作欄位650-其內容區別多種不同操作中那一種操作除了基礎操作之外還要被執行。此欄位是上下文特定的。於本揭露之一個實施例中,此欄位被分成等級欄位668、阿爾發欄位652、及貝他欄位654。擴增操作欄位650允許共同的操作組能夠被執行於單一指令而非2、3或4指令中。
比例欄位660-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2比例*索引+基礎之位址產生)。
位移欄位662A-其內容被用作為記憶體位址產生的一部份(例如,用於使用2比例*索引+基礎+位移之位 址產生)。
位移因數欄位662B(注意,位移欄位662A直接在位移因數欄位662B上方並列表示一或另一者被使用)-其內容被用作為位址產生的一部份;其指明要依記憶體存取(N)的大小而比例化之位移因數,其中,N是記憶體存取中的位元組數目(例如,用於使用2比例*索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,且因此,位移因數欄位的內容乘以記憶體運算元全部大小(N)以產生計算有效位址時使用的最後位移。根據全操作碼欄位674(稍後說明)及資料操縱欄位654C,在運行時間時由處理器硬體來決定N的值。在位移欄位662A及位移因數欄位662B以它們不用於無記憶體存取605指令模板及/或不同實施例僅實施二者其中之一或不實施二者而言,是選擇性的。
資料元件寬度欄位664-其內容區別一些資料元件寬度中的那一個寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。以若使用操作碼的某些態樣僅有一個資料元件寬度被支援及/或複數資料元件寬度被支援時不需要此欄位而言,此欄位是選擇性的。
寫入遮罩欄位670-其內容以每一個資料元件位置為基礎而控制目的地向量運算元中的資料元件位置是否反應基礎操作及擴增操作的結果。等級A指令模板支援合併寫入遮罩,而等級B指令模板支援合併及歸零寫入遮 罩。當合併時,向量遮罩允許目的地中任何組的元件在任何操作(由基礎操作及擴增操作指明)的執行期間受保護而免於更新;在其它的一個實施例中,保留對應的遮罩位元具有0之目的地的各元件的舊值。相反地,當歸零向量遮罩時允許目的地中的任何組的元件在任何操作(由基礎操作及擴增操作來予以指定)執行期間被歸零;在一個實施例中,當對應的遮罩位元具有0值時,目的地的元件被設定為0。此功能的子集合是控制執行的操作的向量長度之能力(亦即,被修改之元件的展幅,從第一個至最後一個);但是,被修改的元件不必是連續的。因此,寫入遮罩欄位670允許部份向量操作,包含載入、儲存、算術、邏輯、等等。雖然說明本揭露的實施例,其中,寫入遮罩欄位670的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器其中之一(因此,寫入遮罩欄位670的內容間接地識別要被執行的遮罩),但是,替代實施例取代地或增加地允許遮罩寫入欄位670的內容直接指定要被執行的遮罩。
立即欄位672-其內容允許立即性的規格。以在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中而言,此欄位是選擇性的。
等級欄位668-其內容區別不同等級的指令。參考圖6A-B,此欄位的內容在等級A與等級B指令之間選取。在圖6A-B中,四角圓化的方形被用來指示特定值存在 於欄位中(例如,分別在圖6A-B中用於等級欄位668的等級A 668A及等級B 668B)。
等級A的指令模板
在等級A的非記憶體存取605指令模板的情況中,阿爾發欄位652被解譯為RS欄位652A,其內容區別不同的擴增操作類型中那一種類型是要被執行(例如,捨入652A.1及資料轉換652A.2分別被指定用於無記憶體存取、捨入類型操作610及無記憶體存取、資料轉換類型操作615指令模板),而貝他欄位654區別被指定的類型的操作中那一個操作是要被執行。在無記憶體存取605指令模板中,比例欄位660、位移比例欄位662A、及位移比例欄位662B未出現。
無記憶體存取指令模板-完全捨入控制型操作
在無記憶體存取完全捨入控制型操作610指令模板中,貝他欄位654被解譯為捨入控制欄位654A,其內容提供靜態捨入。雖然在上述之本揭露的實施例中,捨入控制欄位654A包含抑制所有浮點例外(SAE)欄位656及捨入操作控制欄位658,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位其中之一或另一者(例如,可以僅具有捨入操作控制欄位658)。
SAE欄位656-其內容區別是否將例外事件報告禁能;當SAE欄位的656內容標示抑制被啟用時,給定 的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處置器。
捨入操作控制欄位658-其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位658允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本揭露的一個實施例中,捨入操作控制欄位650的內容置換(override)該暫存器值。
無記憶體存取指令模板-資料轉換類型操作
在無記憶體存取資料轉換類型操作615指令模板中,貝他欄位654被解譯為資料轉換欄位654B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、調合、廣播)。
在等級A的記憶體存取620指令模板的情況中,阿爾發欄位652被解譯為逐出暗示欄位652B,其內容區別逐出暗示中那一者是要被使用(在圖6A中,暫時652B.1及非暫時652B.2分別被指定用於記憶體存取、暫時625指令模板以及記憶體存取、非暫時630指令模板),而貝他欄位654被解譯為資料操縱欄位654C,其內容區別多個資料操縱操作(也稱為基元)中何者是要被執行(例如,無操縱;廣播;來源的升頻(up conversion);及目的地的降頻(down conversion))。記憶體存取620指令模板包含比例欄位660,且選擇性地包含位移欄位662A或位移比例欄位 662B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。如正常的向量指令般,向量記憶體指令以逐資料元件方式將資料傳輸自/至記憶體中,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所指定。
記憶體存取指令模板-暫時
暫時資料是很可能足夠快地被再使用而從快取獲利之資料。但是,這是暗示,並且,不同的處理器可以以不同方式來實施它,包含完全忽略暗示。
記憶體存取指令模板-非暫時
非暫時資料是不太可能足夠快地被再使用以從第一層快取中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,並且,不同的處理器可以以不同方式來實施它,包含完全忽略暗示。
等級B的指令模板
在等級B的指令模板的情況中,阿爾發欄位652被解譯為寫入遮罩控制(Z)欄位652C,其內容區別由寫入遮罩欄位670控制的寫入遮罩是否應為合併或歸零。
在等級B的非記憶體存取605指令模板的情況中,貝他欄位654的部份是被解譯為RL欄位657A,其內容 區別不同的擴增操作類型中那一個操作類型是要被執行(例如,拾入657A.1以及向量長度(VSIZE)657A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型操作612指令模板以及無記憶體存取、寫入遮罩控制、VSIZE類型操作617指令模板),而貝他欄位654的其餘部份區別具有指定類型的操作中何者是要被執行。在無記憶體存取605指令模板中,比例欄位660、位移比例欄位662A、及位移比例欄位662B未出現。
在無記憶體存取,寫入遮罩控制、部份捨入控制型操作610指令模板中,貝他欄位654的其它部份被解譯為捨入操作欄位659A且例外事件報告被禁用(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處置器)。
捨入操作控制欄位659A-正如同捨入操作控制欄位658般,其內容區別捨入操作組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入操作控制欄位659A允許以每一個指令為基礎之捨入模式的改變。在其中處理器包含用以指明捨入模式的控制暫存器之本揭露的一個實施例中,捨入操作控制欄位650的內容置換(override)該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE類型操作617指令模板中,貝他欄位654的其餘部份被解譯為向量長度欄位659B,其內容區別要對多個資料向量長度中的那一個資料向量長度執行(例如,128、256、或512位元 組)。
在等級B的記憶體存取620指令模板的情況中,貝他欄位654的一部份被解譯為廣播欄位657B,其內容區別廣播型資料操縱操作是否要被執行,而貝他欄位654中的其它部份被解譯為向量長度欄位659B。記憶體存取620指令模板包含比例欄位660,且選擇性地包含位移欄位662A或位移比例欄位662B。
關於同屬向量友善指令格式600,完全操作碼欄位674係顯示包含格式欄位640、基礎操作欄位642、及資料元件寬度欄位664。雖然顯示完全操作碼欄位674包含所有這些欄位的一個實施例,但是,在未支援它們全部的實施例中,完全操作碼欄位674包含少於所有這些欄位的欄位。完全操作碼欄位674提供操作碼(opcode)。
擴增操作欄位650、資料元件寬度欄位664、及寫入遮罩欄位670允許以同屬向量友善指令格式的指令為基礎來指明這些特徵。
寫入遮罩欄位及資料元件寬度欄位的組合會產生類型化的指令,其中,它們允許根據不同的資料元件寬度來施加遮罩。
等級A及等級B之內發現的各種指令模板在不同的情況中是有利的。在本揭露的一些實施例中,不同的處理器或是處理器之內不同的核心可以僅支援等級A、僅支援等級B、或支援這二等級。舉例而言,意圖用於通用之計算的高性能通用之失序核心僅支援等級B,主要意 圖用於圖形及/或科學(通量)計算的核心僅支援等級A,以及意圖用於支援二等級的核心可以支援二等級(當然,具有來自二等級的樣板及指令的某些混合,但非來自二等級的所有樣板及指令是在本揭露的範圍之內)。而且,單一處理器包含多核心,所有這些核心支援相同等級,或者,其中,不同的核心支援不同的等級。舉例而言,在設有分別的圖形及通用核心的處理器中,主要意圖用於圖形及/或科學計算的複數個圖形核心其中之一僅支援等級A,而一或更多個通用核心可為具有意圖用於僅支援等級B的通用計算之失序執行及暫存器重命名之高性能通用核心。不具有分別的圖形核心之另一處理器可以包含支援等級A和等級B的一或更多個通用有序或失序核心。當然,在本揭露之不同實施例中,來自一等級的特點也可在其它等級中實施。以高層級語言撰寫的程式將被置於(舉例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支援的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形式,控制流程碼係根據由目前正執行碼的處理器所支援的指令而選取要執行的常式。
示例性特定向量友善指令格式
圖7係根據本揭露實施例繪示之示例性特定向量友善指令格式的方塊圖。圖7顯示特定向量友善指令 格式700,其以指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值而言是特定的。特定向量友善指令格式700可以被用來擴充x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其擴充(例如,AVX)。此格式維持與具有擴充的現有x86指令集的前綴編碼欄位、實數操作碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。繪示圖7中的欄位映射至圖6中的欄位。
應瞭解,雖然為了說明而在同屬向量友善指令格式600的背景下提及特定向量友善指令格式700,以說明本揭露的實施例,但是,除非特別申明,否則本揭露不侷限於特定向量友善指令格式700。例如,同屬向量友善指令格式600慮及用於各種欄位的各種可能大小,而特定向量友善指令格式700係顯示為具有特定大小的欄位。具體例如,雖然資料元件寬度欄位664係顯示為特定向量友善指令格式700中的一個位元欄位,但是,本揭露不限於此(亦即,同屬向量友善指令格式600慮及資料元件寬度欄位664的其它大小)。
同屬向量友善指令格式600包括以圖7A中所示之序列列出的下述欄位。
EVEX前綴(位元組0-3)702-以四位元組形式編碼。
格式欄位640(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位640以及其含有 0x62(用於區別本揭露之一個實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位705(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及657BEX位元組1,位元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s之補數形式來編碼,亦即,ZMM0被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),使得藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位610-這是REX’欄位610的第一部份且是用以將擴充的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本揭露的一個實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x8632位元模式中),BOUND指令的實數操作碼位元組是62,但是,在MOD R/M欄位(下述)中未接受MOD欄位中11的值;本揭露的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由組合來自其它欄位的EVEX.R’、EVEX.R、及其它RRR以形成 R’Rrrr。
操作碼映射欄位715(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先操作碼位元組(0F,0F 38,或0F 3)編碼。
資料元件寬度欄位664(EVEX位元組2,位元[7]-W)-由記號EVEX.W來予以表示。EVEX.W用以界定資料類型的粒度(大小)(32位元資料元件或64位元資料元件)。
EVEX.vvvv 720(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1之補數)形式指定的第一源暫存器運算元編碼,且對於具有2或更多個源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s之補數形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位720將依反轉(1s之補數)形式儲存的第一源暫存器指定符的4個低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用來擴充指定符大小至32個暫存器。
EVEX.U 668等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前綴編碼欄位725(EVEX位元組2,位元[1:0]-pp)-提供額外的位元用於基礎操作欄位。除了提供支援給EVEX前綴格式的舊有SSE指令,這也具有使SIMD前 綴小巧化(而非要求位元組來表示SIMD前綴,EVEX前綴僅要求2位元)的優點。在一個實施例中,為了支援以舊有格式及EVEX前綴格式等二格式使用SIMD前綴(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前綴被編碼成SIMD前綴編碼欄位;以及,在被提供給解碼器的PLA(使得PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在運行時間時被擴展成舊有SIMD前綴。雖然較新的指令可以直接使用EVEX前綴編碼欄位的內容作為操作碼擴充,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊有SIMD前綴規定。替代實施例可以重新設計PLA以支援2位元SIMD前綴編碼,因而不要求擴展。
阿爾發欄位652(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示)-如以往所述般,此欄位是上下文特定的。
貝他欄位654(EVEX位元組3,位元[6:4]-SSS;也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ顯示)-如以往所述般,此欄位是上下文特定的。
REX’欄位610-這是REX’欄位的其餘部份且是可被用來將擴充的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式來予以儲存。1的值用以將下16暫存器編 碼。換言之,藉由組合EVEX.V’、EVEX.vvvv來形成V’VVVV。
寫入遮罩欄位670(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在本揭露的一個實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用固線至所有或硬體之寫入遮罩,所述硬體是繞過遮罩硬體)。
實數操作碼欄位730(位元組4)也稱為操作碼位元組。在此欄位中指定操作碼的一部份。
MOD R/M欄位740(位元組5)包含MOD欄位742、Reg欄位744、及R/M欄位746。如同先前所述般,MOD欄位742的內容區別記憶體存取與非記憶體存取操作。Reg欄位744的角色可以總結為二種情況:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作操作碼擴充來處理且不被用來將任何指令運算元編碼。R/M欄位746的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位650的內容是用於記憶體位址產生。SIB.xxx 754及SIB.bbb 756-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位662A(位元組7-10)-當MOD欄位742 含有10時,位元組7-10是位移欄位662A,且其與舊有32位元位移(disp32)相同般地運作並以位元組粒度運作。
位移因數欄位662B(位元組7)-當MOD欄位742含有01時,位元組7是位移因數欄位662B。此欄位的位置與以位元組粒度運作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號擴充,所以,其僅可以在-128與127位元組差距之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位662B是disp8的再解譯;當使用位移因數欄位662B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取之大小(N)所決定。此類型的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,且因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因數欄位662B替代舊有x86指令集8位元位移。因此,位移因數欄位662B以同於x86指令集8位元位移的方式編碼(使得ModRM/SIM編碼規則不變),僅有的例外是disp8被過載至disp8*N。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得逐位元組的位址差距)。立即欄位672如先前所述地操作。
完全操作碼欄位
圖7B為根據本揭露一個實施例繪示構成完全操作碼欄位674之特定的向量友善指令格式700的欄位的方塊圖。具體而言,完全操作碼欄位674包含格式欄位640、基礎操作欄位642、及資料元件寬度(W)欄位664。基礎操作欄位642包含前綴編碼欄位725、操作碼映射欄位715、及實數操作碼欄位730。
暫存器索引欄位
圖7C係根據本揭露一個實施例繪示構成暫存器索引欄位644之特定的向量友善指令格式700的欄位的方塊圖。具體而言,暫存器索引欄位644包含REX欄位705、REX’欄位710、MODR/M.reg欄位744、MODR/M.r/m欄位746、VVVV欄位720、xxx欄位754、及bbb欄位756。
擴增操作欄位
圖7D係根據本揭露一個實施例繪示構成擴增操作欄位650之特定的向量友善指令格式700的欄位的方塊圖。當等級(U)欄位668含有0時,其意謂EVEX.U0(等級A 668A);當其含有1時,其表示EVEX.U1(等級B 668B)。當U=0及MOD欄位742含有11時(表示無記憶體存取操作),阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解譯為rs欄位652A。當rs欄位652A含有1(捨入652A.1)時,貝他欄位 654(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位654A。捨入控制欄位654A包含一位元SAE欄位656及二位元捨入操作欄位658。當rs欄位652A含有0(資料轉換652A.2)時,貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位654B。當U=0及MOD欄位742含有00、01、或10(表示記憶體存取操作)時,阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解譯為逐出暗示(EH)欄位652B及貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操縱欄位654C。
當U=1時,阿爾發欄位652(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位652C。當U=1及MOD欄位742含有11(表示無記憶體存取操作)時,貝他欄位654的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位657A;當其含有1(捨入657A.1)時,貝他欄位654的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入操作欄位659A,而當RL欄位657A含有0(VSIZE 657.A2)時,貝他欄位654的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位742含有00、01或10(表示記憶體存取操作)時,貝他欄位654(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位659B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位657B(EVEX位元組3,位元[4]-B)。
示例性暫存器架構
圖8為根據本揭露一實施例之暫存器架構800的方塊圖。於所示的實施例中,將有512位元寬之32向量暫存器810;這些暫存器被稱為zmm0至zmm31。較低16zmm暫存器的低階256位元覆加在暫存器ymm0-16上。較低16zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆加在暫存器xmm0-15上。特定向量友善指令格式700在這些如下表所示之覆加的暫存器檔上操作。
Figure 109120805-A0305-02-0055-5
換言之,向量長度欄位659B在最大長度與一或更多個其它較短的長度之間選取,其中,每一個此較短長度是先前長度的長度之一半;以及,不具向量長度欄位659B的指令模板對最大向量長度操作。此外,在一個實施例中,特定向量友善指令格式700的等級B指令模板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料操作。純量操作是對zmm/ymm/xmm暫存器中的最低階資料元件位置執行的操作;高階資料元件位置取決於實施例要麼是與它們在指令之前相同不然就是歸零。
於所示的實施例中的寫入遮罩暫存器815,有8個寫入遮罩暫存器(k0到k7),每個64位元大小。在替代實施例中,寫入遮罩暫存器815的大小為16位元。如前所述,在本揭露的一個實施例中,向量遮罩暫存器k0不能用作寫入遮罩;當通常指示k0的編碼用於寫入遮罩時,其選擇0xFFFF的固線寫入遮罩有效地禁用該指令的寫入遮罩。
通用暫存器825-於所示的實施例中,有十六個64位元通用暫存器,它們與現有的x86可定址模式一起使用以尋址記憶體運算元。這些暫存器由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15引用。
純量浮點堆疊暫存器檔(x87堆疊)845,MMX緊縮整數平坦暫存器檔850疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令集擴充,對32/64/80位元浮點資料執行純量浮點操作;而MMX暫存器被用來對64位元緊縮整數資料執行操作,以及固持用於某些在MMX及XMM暫存器之間執行的操作之運算元。
本揭露的替代實施例可以使用更寬或更窄的暫存器。另外,本揭露的替代實施例可以使用更多、更少或不同的暫存器檔和暫存器。
示例性核心架構、處理器及電腦架構
處理器核心可以不同方式、用於不同目的、 及於不同處理器實施。例如,此種核心的實施可包括:1)意圖用於通用計算的通用有序核心;2)意圖用於通用計算的高效能通用失序核心;3)主要意圖用於圖形及/或科學(資料通量)計算的特用核心。不同處理器的實施可包括:1)一CPU包括一或多個意圖用於通用計算的通用有序核心和/或一或多個意圖用於通用計算的通用失序核心;及2)一共處理器包括一或多個主要意圖用於圖形及/或科學(資料通量)計算的特用核心。此等不同處理器結果導致不同的電腦系統架構,其可包括:1)共處理器在與CPU在分開的晶片上;2)共處理器在與CPU相同封裝體內的分開晶粒上;3)共處理器在與CPU相同的晶粒上(於此種情況下,此種共處理器偶爾係稱作特用邏輯,諸如整合圖形和/或科學(資料通量)邏輯,或稱作特用核心);及4)單晶片系統可包括在與CPU相同的晶粒上(偶爾稱作應用核心或應用處理器)、前述共處理器、及額外功能。其次描述核心架構實施例,接著描述處理器及電腦架構實施例。
示例性核心架構 有序及失序核心方塊圖
圖9A根據本發明實施例示出示例性有序管線及示例性暫存器重新命名、失序簽發/執行管線之範例二者的方塊圖。圖9B根據本發明實施例示出包括在處理器中有序核心及示例性暫存器重新命名、失序簽發/執行架構核心之示例性實施例二者的方塊圖。圖9A-B的實線框例示 說明有序管線及有序核心,而虛線框的選擇性添加例示說明暫存器重新命名、失序簽發/執行管線及核心。鑒於有序方面為失序方面的一子集,將描述失序方面。
於圖9A中,處理器管線900包括提取階段902、長度解碼階段904、解碼階段906、分配階段908、重新命名階段910、排程(又稱為調度或簽發)階段912、暫存器讀取/記憶體讀取階段914、執行階段916、回寫/記憶體寫入階段918、例外處置階段922、及確定階段924。
圖9B顯示處理器核心990包括耦接至執行引擎單元950的前端單元930,以及二者係耦接至記憶體單元970。核心990可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字組(VLIW)核心、或混合或替代核心類型。至於又另一選項,核心990可為特用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、或圖形核心等。
前端單元930包括耦接至一指令快取單元934的分支預測單元932,指令快取單元係耦接至指令轉譯後備緩衝器(TLB)936,其係耦接至指令提取單元938,其係耦接至一解碼單元940。解碼單元940(或解碼器或解碼器單元)可以解碼指令(例如,巨集指令)以及產生一或多個微操作、微碼進入點、微指令、其它指令、或其它控制信號作為輸出,其係從原先指令解碼,或以其它方式反映、或推衍自原先指令。解碼器單元940可使用多種不同機構實施。適當機構的實施例包括但非僅限於詢查表、硬體實 施、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心990包括一微碼ROM或儲存針對一些巨集指令的微碼的其它媒體(例如於解碼單元940內或否則於前端單元930內部)。解碼單元940係耦接至執行引擎單元950中的重新命名/分配器單元952。
執行引擎單元950包括重新命名/分配器單元952,其耦接至撤回單元954及一或多個排程器單元956之集合。排程器單元956表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元956係耦接至實體暫存器檔單元958。實體暫存器檔單元958各自表示一或多個實體暫存器檔,其中之不同者儲存一或多個不同資料類別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔單元958包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔單元958被撤回單元954重疊以例示說明可實施暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及撤回暫存器檔,使用未來檔、歷史緩衝器及撤回暫存器檔;使用暫存器映射表及一暫存器池等)。撤回單元954及實體暫存器檔單元958係耦接至執行叢集960。執行叢集960包括一或多個執行單元962之一集合及一或多個記憶體存取單元964之一集合。執行單元962可對各型資料(例如純量浮點、緊 縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如偏移、加、減、乘)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元956、實體暫存器檔單元958、及執行叢集960顯示為可能為多數,原因在於一些實施例產生針對一些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔單元、和/或執行叢集且於分開記憶體存取管線之情況下,實施一些實施例其中只有此一管線的執行叢集具有記憶體存取單元964)。也須瞭解使用分開管線時,這些管線中的一或多者可為失序簽發/執行而剩下的為有序。
記憶體存取單元之集合964係耦接至記憶體單元970,其包括一資料TLB單元972耦接至與層級2(L2)快取單元976耦接的一資料快取單元974。在一個示例性實施例中,記憶體存取單元964可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元970中的資料TLB單元972。指令快取單元934進一步係耦接至在記憶體單元970中的層級2(L2)快取單元976。L2快取單元976係耦接至一或多個其它層級的快取,及最終耦接至一主記憶體。
例如,示例性暫存器重新命名、失序簽發/執行核心架構可實施管線900如下:1)指令提取938執行提 取及長度解碼階段902及904;2)解碼單元940執行解碼階段906;3)重新命名/分配器單元952執行分配階段908及重新命名階段910;4)排程器單元956執行排程階段912;5)實體暫存器檔單元958及記憶體單元970執行暫存器讀取/記憶體讀取階段914;執行叢集960進行執行階段916;6)記憶體單元970及實體暫存器檔單元958執行回寫/記憶體寫入階段918;7)各個單元可能涉及異常處置階段922;及8)撤回單元954及實體暫存器檔單元958執行確定階段924。
核心990可支援一或多個指令集(例如x86指令集(有些擴充已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴充,諸如霓虹(NEON)),含括此處描述的指令。於一個實施例中,核心990包括支援緊縮資料指令集擴充(例如AVX1、AVX2),藉此允許許多多媒體應用程式使用的該等操作欲使用緊縮資料執行。
應能理解到核心可支援多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支援,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyper-Threading技術)。
雖然暫存器重新命名係以失序執行脈絡描 述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括分開的指令及資料快取單元934/974及一分享L2快取單元976,但替代實施例可具有用於指令及資料二者的單一內部快取,諸如層級1(L1)內部快取,或內部快取的多個層級。在一些實施例中,該系統可包括內部快取與在核心和/或處理器外部的外部快取之組合。另外,全部外部快取可位在核心和/或處理器外部。
具體示例性有序核心架構
圖10A-B例示說明有序核心架構之更具體實施例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其它核心)。取決於應用用途,邏輯區塊透過高頻寬互連網路(例如環狀網路)而與若干固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖10A為根據本發明實施例之單一處理器核心,連同其連接至晶粒上互連網路1002及層級2(L2)快取記憶體1004之其本地子集的方塊圖。在一個實施例中,指令解碼單元1000支援具有緊縮資料指令集擴充的x86指令集。L1快取1006允許低度延遲存取快取記憶體至純量及向量單元。雖然於一個實施例中(為了簡化設計),純量單元1008及向量單元1010使用分開的暫存器集合(分別為純量暫存器1012及向量暫存器1014),在其間傳輸的資料係寫 入至記憶體,然後從層級1(L1)快取記憶體1006回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑,其允許資料在兩個暫存器檔間移轉而不被寫入及回讀)。
L2快取之本地子集1004乃全局L2快取部分,被劃分成分開本地子集,每個處理器核心一個子集。各個處理器核心具有一直接存取路徑至其本身的L2快取之本地子集1004。由一處理器核心所讀取的資料係儲存於其L2快取子集1004中,且與其它處理器核心存取其等本身的本地L2快取子集並列地能夠被快速存取。由處理器核心寫入的資料係儲存於其本身的L2快取子集1004,及若有所需,從其它子集刷新。環狀網路確保分享資料的同調。環狀網路乃雙向以允許代理諸如處理器核心、L2快取及其它邏輯區塊在晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
圖10B為根據本發明實施例之圖10A中的處理器核心部分之展開圖。圖10B包括L1快取1004的L1資料快取1006A部分,以及有關向量單元1010及向量暫存器1014之進一步細節。更明確言之,向量單元1010為16-寬向量處理單元(VPU)(參考16-寬ALU 1028),其係執行整數、單精度浮點、及雙精度浮點指令中之一或多者。向量處理單元(VPU)支援使用調合單元1020調合該暫存器輸入,使用數值轉換單元1022A-B做數值轉換,及使用複製單元1024對記憶體輸入作複製。寫入遮罩暫存器1026允許 預測所得的向量寫入。
圖11為根據本發明實施例之處理器1100的方塊圖,該處理器可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。圖11的實線框例示說明一處理器1100具有單一核心1102A、一系統代理1110、一或多個匯流排控制單元1116之一集合,而選擇性地增加的虛線框例示說明另一個處理器1100具有多個核心1102A-N、於系統代理單元1110中之一或多個整合記憶體控制器單元1114、及特用邏輯1108。
因此,處理器1100的不同實施可包括:1)一CPU具有特殊用途邏輯1108係為整合圖形和/或科學(資料通量)邏輯(可包括一或多個核心),及核心1102A-N係為一或多個通用核心(例如通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心1102A-N係為意圖主要用於圖形和/或科學(資料通量)的大量通用核心;3)一共處理器具有核心1102A-N係為大量通用有序核心。因此,處理器1100可為通用處理器、共處理器或特用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高資料通量多整合核心(MIC)共處理器(含30或更多核心)、嵌入式處理器等。處理器可在一或多個晶片上實施。處理器1100可為一或多個基板的一部分,和/或可使用多項處理技術諸如BiCMOS、CMOS、或NMOS而實施在一或多個基板上。
記憶體階層關係包括在核心內部的一或多個 快取層級、一或多個共享快取單元1106之集合、及耦接至整合記憶體控制器單元1114之集合的外部記憶體(圖中未顯示)。共享快取單元1106之集合可包括一或多個中階快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取、最末層級快取(LLC)、和/或其組合。雖然於一個實施例中,一環狀基礎互連單元1112互連整合圖形邏輯1108、共享快取單元1106之集合、及系統代理器單元1110/整合記憶體控制器單元1114,但其它實施例可使用任何數目的眾所周知技術以互連此等單元。於一個實施例中,在一或多個快取單元1106與核心1102A-N間維持同調。
在一些實施例中,核心1102A-N中之一或多者可為多執行緒。系統代理1110包括協調與操作核心1102A-N的該等組件。系統代理單元1110可包括例如電力控制單元(PCU)及一顯示單元。電力控制單元(PCU)可為或包括調節核心1102A-N及整合圖形邏輯1108的電力狀態所需邏輯及組件。顯示單元係用以驅動一或多個外部連接的顯示器。
核心1102A-N就架構指令集而言可為同質或異質;換言之,核心1102A-N中之二或多者可能可執行相同指令集,而其它者只能執行該指令集之一子集或一不同指令集。
示例性電腦架構
圖12至圖15為示例性電腦架構之方塊圖。其它本領域已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器和/或其它此處揭示的執行邏輯的大量多種系統或電子裝置大致上為適宜。
現在參考圖12,其顯示依據本發明之一個實施例的一種系統1200之方塊圖。系統1200可包括一或多個處理器1210、1215,其耦接至控制器集線器1220。在一個實施例中,控制器集線器1220包括一圖形記憶體控制器集線器(GMCH)1290及一輸入/輸出集線器(IOH)1250(可位在分開的晶片上);GMCH 1290包括記憶體及圖形控制器,其耦接記憶體1240及一共處理器1245;IOH 1250係耦接輸入/輸出(I/O)裝置1260至GMCH 1290。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(如此處描述),記憶體1240及共處理器1245係直接地耦接至處理器1210及耦接至在單一晶片內具有IOH 1250之控制器集線器1220。記憶體1240可包括非回寫鎖定禁用核心1240A,例如,用以儲存當被執行時導致處理器執行任何本揭露中的方法的代碼。
額外處理器1215的選擇性地本質係以虛線標 示於圖12。各個處理器1210、1215可包括此處描述的處理核心中之一或多者且可為處理器1100的某個版本。
記憶體1240例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。針對至少一實施例,控制器集線器1220透過多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連(QPI)或類似的連接1295而與處理器1210、1215通訊。
在一實施例中,共處理器1245乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。於一實施例中,控制器集線器1220可包括一整合圖形加速器。
就一定範圍的優劣量表而言,包括架構、微架構、熱、電力耗損特性等,處理器1210、1215間可有多項差異。
在一實施例中,處理器1210執行指令,其控制通用類別的處理操作。該等指令內部嵌入共處理器指令。處理器1210識別此等共處理器指令乃屬須由附接的共處理器1245執行的類別。因此,處理器1210在共處理器匯流排或其它互連上簽發此等共處理器指令(或表示共處理器指令的控制訊號)給共處理器1245。共處理器1245接收且執行所接收的共處理器指令。
現在參考圖13,顯示依據本發明之一實施例第一更具體示例性系統1300之一方塊圖。如圖13所示,微處理器系統1300為點對點互連系統,包括透過點對點互連 1350而耦接的第一處理器1370及第二處理器1380。處理器1370及1380各自可為處理器1100的某個版本。於本發明之一個實施例中,處理器1370及1380分別為處理器1210及1215,而共處理器1338為共處理器1245。在另一個實施例中,處理器1370及1380分別為處理器1210及共處理器1245。
處理器1370及1380係顯示為分別包括整合記憶體控制器(IMC)單元1372及1382。處理器1370也包括點對點(P-P)介面1376及1378作為其匯流排控制器單元之一部分;同理,第二處理器1380可包括P-P介面1386及1388。處理器1370、1380可使用P-P介面電路1378、1388透過點對點(P-P)介面1350交換資訊。如圖13所示,IMC1372及1382耦接該等處理器至個別記憶體,亦即記憶體1332及記憶體1334,其可為本地附接至個別處理器的主記憶體的一部分。
處理器1370、1380可使用點對點介面電路1376、1394、1386、1398透過點對點(P-P)介面1352、1354而各自與一晶片組1390交換資訊。晶片組1390也可透過一高效能介面1339而與共處理器1338交換資訊。在一實施例中,共處理器1338乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。
分享快取(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連而與處理器連 接,使得當一處理器被置於低電力模式時,任一處理器的或二處理器的本地快取資訊可被儲存於該分享快取。
晶片組1390可透過一介面1396而耦接至一第一匯流排1316。在一個實施例中,第一匯流排1316可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連匯流排之一匯流排,但本發明之範圍不因此限制。
如圖13所示,多個I/O裝置1314可連同一匯流排橋接器1318而耦接至第一匯流排1316,該匯流排橋接器1318係耦接第一匯流排1316至第二匯流排1320。在一個實施例中,一或多個額外處理器1315,諸如共處理器、高資料通量MIC處理器、GPGPU、加速器(例如圖形加速器或數位訊號處理器(DSP)單元)、可現場程式化閘陣列、或任何其它處理器係耦接至第一匯流排1316。在一個實施例中,第二匯流排1320可為低接腳數目(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排1320,包括例如鍵盤和/或滑鼠1322、通訊裝置1327及儲存單元1328,諸如磁碟機或其它大容量儲存裝置,可包括指令/碼及資料1330。此外,音頻I/O 1324可被耦接至第二匯流排1320。注意其它架構係屬可能。例如,替代圖13之點對點架構,一系統可實施多插匯流排或其它此種架構。
現在參考圖14,顯示依據本發明之一實施例第二更具體示例性系統1400之一方塊圖。圖13與圖14中相像的元件具有相像的元件符號,及圖13的一些方面已經從 圖14刪除以免不必要地遮掩圖14的其它方面。
圖14例示說明處理器1370、1380分別地可包括整合記憶體及I/O控制邏輯(「CL」)1372及1382。因此,CL 1372、1382可包括整合記憶體控制器單元且包括I/O控制邏輯。圖14例示說明不僅記憶體1332、1334耦接至CL 1372、1382,I/O裝置1414也耦接至控制邏輯1372、1382。舊式I/O裝置1415係耦接至晶片組1390。
現在參考圖15,其顯示依據本發明之一個實施例一種SoC 1500之方塊圖。圖11中的相似元件具有相像的元件符號。又,虛線框乃更為先進SoC上的選擇性特徵。於圖15中,一互連單元1502係耦接至:一應用程式處理器1510其包括一或多個核心202A-N之一集合與分享快取單元1106;一系統代理器單元1110;一匯流排控制器單元1116;一整合記憶體控制器單元1114;一或多個媒體處理器1520之一集合,其可包括整合圖形邏輯、影像處理器、音訊處理器、及視訊處理器;一靜態隨機存取記憶體(SRAM)單元1530;一直接記憶體存取(DMA)單元1532;及用以耦接至一或多個外部顯示器的一顯示單元1540。在一個實施例中,該(等)共處理器1520包括特用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高資料通量MIC處理器、嵌入式處理器等。
這裡公開的實施例(例如,機制)可以在硬體、軟體、韌體或這些實現方法的組合中實現。本發明之實施例可實施為電腦程式或在包含至少一處理器、儲存系 統(包括依電性及非依電性記憶體和/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可程式系統上執行的程式碼。
程式碼(諸如圖13例示說明之碼1330)可應用至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。用於本應用之目的,處理系統包括具有一處理器的任何系統,諸如數位訊號處理器(DSP)、微控制器、特定應用整合電路(ASIC)或微處理器。
程式碼可於高層級程式或物件導向程式語言實施以與處理系統通訊。若有所需,程式碼也可於組合語言或機器語言實施。實際上,此處描述的機構之範圍並非限於任何特定程式語言。任何狀況之下,語言可為編譯語言或解譯語言。
至少一實施例的一或多個方面可藉表示處理器內部的多個邏輯而儲存在機器可讀取媒體上的代表性指令實施,該等指令當由一機器讀取時使得該機器組合邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」,可儲存在具體有形的機器可讀取媒體上且供給各個客戶或製造廠以載入至實際上生產該邏輯或處理器的組裝機器內。
此等機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非暫態具體有形的物件配置,諸如硬碟、任何其它類別的碟片包括軟碟、光碟、光碟 -唯讀記憶體(CD-ROM)、光碟可覆寫入式(CD-RW)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡之儲存媒體;或適用以儲存電子指令的任何其它類別的媒體。
因此,本發明之實施例也包括非暫態具體有形的機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器和/或系統特徵。此等實施例也可稱作為程式產品。
仿真(包含二進制轉譯、碼變形等)
於一些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。例如,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體或其組合實施。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖16為根據本發明實施例之對比使用軟體指令轉換器將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。於所示的實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟 體、韌體、硬體、或其各項組合實施。圖16示出了高階語言1602中的程式可以使用x86編譯器1604編譯以產生可以由具有至少一個x86指令集核心1616的處理器原生地執行的x86二進制代碼1606。具有至少一x86指令集核心1616之英特爾處理器表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1604表示可操作而產生x86二進制碼1606(例如目標碼)的一編碼器,該等x86二進制碼1606有或無額外鏈結處理可在具至少一x86指令集核心的該處理器1616上執行。類似地,圖16顯示於高層級語言1602的該程式可使用另一指令集編譯器1608編譯以產生另一指令集二進制碼1610,可藉不具至少一x86指令集核心1647的一處理器本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集和/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1612係用以將x86二進制碼1606轉換成可由不具一x86指令集核心的該處理器1614本機執行的碼。此種轉換碼不可能與另一指令集二進制碼1610相同,原因在於難以製造可達成此項目的之一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。因此,指令轉換器1612表示軟體、韌體、硬 體或其組合其透過仿真、模擬或任何其它處理允許不具有x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1606。
100:硬體處理器
102:記憶體
104-1,104-N:核心
106-1,106-N:資料暫存器
108-1,108-N:能力暫存器
110-1,110-N:控制暫存器
112-1,112-N:記憶體控制暫存器
114-1,114-N:其它控制暫存器
116-1,116-N:指令變換後備緩衝器(I-TLB)
118-1,118-N:解碼器
120-1,120-N:重新命名/分配器/排程器
122-1,122-N:執行單元
124-1,124-N:重新排序/撤回單元
126-1,126-N:低層級D快取及/或D-TLB
128:高層級快取
130:記憶體控制器
132:匯流排
134:埠
136:分頁表
138:片段描述符表
140:記憶體加密電路

Claims (24)

  1. 一種用於處理器非回寫能力的設備,包含:複數個邏輯處理器;控制暫存器,其包含非回寫鎖定禁用位元;快取,其由該複數個邏輯處理器共享;匯流排,其將該快取耦接至記憶體,該匯流排服務來自該複數個邏輯處理器之對該記憶體的記憶體請求;以及記憶體控制器,其當該非回寫鎖定禁用位元設定為第一值時對於由該複數個邏輯處理器發出的該記憶體請求之讀取-修改-寫入類型禁用該匯流排之非回寫鎖定存取,並且當該非回寫鎖定禁用位元設定為第二值時對於該記憶體請求之該讀取-修改-寫入類型實施該匯流排之該非回寫鎖定存取。
  2. 如請求項1之設備,其中該記憶體控制器係用以建立一般保護錯誤以禁用該非回寫鎖定存取。
  3. 如請求項1之設備,其中該控制暫存器係記憶體控制暫存器。
  4. 如請求項3之設備,其中該記憶體控制暫存器之位址係三十三十六進位。
  5. 如請求項1之設備,其進一步包含能力暫存器,該能力暫存器包含能力位元,當該能力位元被設定為第一值時,指示該複數個邏輯處理器支援非回寫鎖定存 取禁用特徵,並且當設定為第二值時,指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
  6. 如請求項1之設備,其中該記憶體控制器係用以,當快取禁用位元係設定為第二控制暫存器中的一值時禁用該快取,當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型不禁用該匯流排之非回寫鎖定存取。
  7. 如請求項1之設備,其中該記憶體控制器係用以,當啟用擴充分頁表並將記憶體類型設定為非回寫時,當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型不禁用該匯流排之非回寫鎖定存取。
  8. 如請求項1-7中任一項之設備,其中該複數個邏輯處理器係複數個處理器核心。
  9. 一種用於處理器非回寫能力的方法,包含:設定在處理器之複數個邏輯處理器之控制暫存器中的非回寫鎖定禁用位元;用共享經由匯流排耦接至記憶體之快取的該處理器之該複數個邏輯處理器中的每一者執行各別操作;用記憶體控制器從該複數個邏輯處理器中的邏輯處理器接收對於該記憶體的記憶體請求; 當該非回寫鎖定禁用位元係設定為第一值時,對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求的讀取-修改-寫入類型,用該記憶體控制器禁用該匯流排的非回寫鎖定存取;以及當該非回寫鎖定禁用位元係設定為第二值時,對於該記憶體請求的該讀取-修改-寫入類型,用該記憶體控制器實施該匯流排的該非回寫鎖定存取。
  10. 如請求項9之方法,其中該禁用該非回寫鎖定存取包含產生一般保護錯誤。
  11. 如請求項9之方法,其中該控制暫存器係記憶體控制暫存器。
  12. 如請求項11之方法,其中該記憶體控制暫存器之位址係三十三十六進位。
  13. 如請求項9之方法,其進一步包含將該處理器之能力暫存器的能力位元設定為第一值以指示該複數個邏輯處理器支援非回寫鎖定存取禁用特徵,並且將該能力位元設定為第二值以指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
  14. 如請求項9之方法,其進一步包含將第二控制暫存器中的快取禁用位元設定為一值以禁用該快取,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
  15. 如請求項9之方法,其進一步包含對於該複數個邏輯處理器啟用擴充的分頁表並將記憶體類型設定為非回寫,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
  16. 如請求項9-15中任一項之方法,其中該複數個邏輯處理器係複數個處理器核心。
  17. 一種非暫時性機器可讀取媒體,其儲存當由機器執行時導致該機器執行方法的碼,該方法包含:設定在處理器之複數個邏輯處理器之控制暫存器中的非回寫鎖定禁用位元;用共享經由匯流排耦接至記憶體之快取的該處理器之該複數個邏輯處理器中的每一者執行各別操作;用記憶體控制器從該複數個邏輯處理器中的邏輯處理器接收對於該記憶體的記憶體請求;當該非回寫鎖定禁用位元係設定為第一值時,對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求的讀取-修改-寫入類型,用該記憶體控制器禁用該匯流排的非回寫鎖定存取;以及當該非回寫鎖定禁用位元係設定為第二值時,對於該記憶體請求的該讀取-修改-寫入類型,用該記憶體控制器實施該匯流排的該非回寫鎖定存取。
  18. 如請求項17之非暫時性機器可讀取媒 體,其中該禁用該非回寫鎖定存取包含產生一般保護錯誤。
  19. 如請求項17之非暫時性機器可讀取媒體,其中該控制暫存器係記憶體控制暫存器。
  20. 如請求項19之非暫時性機器可讀取媒體,其中該記憶體控制暫存器之位址係三十三十六進位。
  21. 如請求項17之非暫時性機器可讀取媒體,其進一步包含將該處理器之能力暫存器的能力位元設定為第一值以指示該複數個邏輯處理器支援非回寫鎖定存取禁用特徵,並且將該能力位元設定為第二值以指示該複數個邏輯處理器不支援非回寫鎖定存取禁用特徵。
  22. 如請求項17之非暫時性機器可讀取媒體,其進一步包含將第二控制暫存器中的快取禁用位元設定為一值以禁用該快取,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
  23. 如請求項17之非暫時性機器可讀取媒體,其進一步包含對於該複數個邏輯處理器啟用擴充的分頁表並將記憶體類型設定為非回寫,其中當該非回寫鎖定禁用位元設定為該第一值時對於由該複數個邏輯處理器之該邏輯處理器發出的該記憶體請求之該讀取-修改-寫入類型,該記憶體控制器不禁用該匯流排之非回寫鎖定存取。
  24. 如請求項17-23中任一項之非暫時性機器可讀取媒體,其中該複數個邏輯處理器係複數個處理器核心。
TW109120805A 2019-09-27 2020-06-19 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體 TWI830927B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/586,028 2019-09-27
US16/586,028 US11301309B2 (en) 2019-09-27 2019-09-27 Apparatuses, methods, and systems for processor non-write-back capabilities

Publications (2)

Publication Number Publication Date
TW202113608A TW202113608A (zh) 2021-04-01
TWI830927B true TWI830927B (zh) 2024-02-01

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180095878A1 (en) 2016-09-30 2018-04-05 International Business Machines Corporation Memory access for exactly-once messaging

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180095878A1 (en) 2016-09-30 2018-04-05 International Business Machines Corporation Memory access for exactly-once messaging

Similar Documents

Publication Publication Date Title
CN108595348B (zh) 无局部性提示的向量存储器访问处理器、方法、系统和指令
KR20170118051A (ko) 벡터 캐시 라인 라이트 백 프로세서, 방법, 시스템, 및 명령어
JP6849275B2 (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
KR20210016325A (ko) 메모리 구성의 동적 변환을 위한 아키텍처
US11138112B2 (en) Remote atomic operations in multi-socket systems
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
US11966334B2 (en) Apparatuses, methods, and systems for selective linear address masking based on processor privilege level and control register bits
US11681611B2 (en) Reservation architecture for overcommitted memory
US20180373632A1 (en) Apparatus and method for triggered prefetching to improve i/o and producer-consumer workload efficiency
EP3798854B1 (en) Apparatuses, methods, and systems for processor non-write-back capabilities
EP3757767B1 (en) Asynchronous cache flush engine to manage platform coherent and memory side caches
WO2019067115A1 (en) APPARATUS AND METHOD FOR MONITORING MULTI-LEVEL CALL MEMORY REQUEST
US11934830B2 (en) Method and apparatus for data-ready memory operations
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
US20220091995A1 (en) Memory management apparatus and method for managing different page tables for different privilege levels
US10175992B2 (en) Systems and methods for enhancing BIOS performance by alleviating code-size limitations
CN107077333B (zh) 用于实行向量位聚集的方法和装置
TWI830927B (zh) 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體
US20200401412A1 (en) Hardware support for dual-memory atomic operations
CN112306910A (zh) 用于拆分式数据转换后备缓冲器的硬件
EP3394733A1 (en) Apparatus and method for retrieving elements from a linked structure
WO2017172296A1 (en) Sharing aware snoop filter apparatus and method