用于系統(tǒng)調(diào)用的穩(wěn)健且高性能的指令的制作方法
【專利摘要】本發(fā)明涉及用于系統(tǒng)調(diào)用的穩(wěn)健且高性能的指令。穩(wěn)健的系統(tǒng)調(diào)用和系統(tǒng)返回指令被處理器執(zhí)行以在請求者和操作系統(tǒng)內(nèi)核之間轉(zhuǎn)移控制。該處理器包括執(zhí)行電路和存儲指向存儲器中的數(shù)據(jù)結(jié)構(gòu)的指針的寄存器。該執(zhí)行電路從請求者接收將控制從所述請求者的第一特權(quán)等級轉(zhuǎn)移到操作系統(tǒng)內(nèi)核的第二特權(quán)等級的系統(tǒng)調(diào)用指令。作為響應(yīng),該執(zhí)行電路在一個最小單元過渡中在所述請求者和所述操作系統(tǒng)內(nèi)核之間交換所述寄存器所指向的數(shù)據(jù)結(jié)構(gòu)。
【專利說明】用于系統(tǒng)調(diào)用的穩(wěn)健且高性能的指令
【技術(shù)領(lǐng)域】
[0001]本公開涉及處理邏輯、微處理器以及相關(guān)的指令集體系結(jié)構(gòu)的領(lǐng)域,當(dāng)這些指令集體系結(jié)構(gòu)被處理器或其他處理邏輯所執(zhí)行時運行邏輯、數(shù)學(xué)或其他功能性操作。
【背景技術(shù)】
[0002]指令集或指令集架構(gòu)(ISA)是與編程有關(guān)的計算機架構(gòu)的一部分,且可包括本機數(shù)據(jù)類型、指令、寄存器架構(gòu)、尋址模式、存儲器架構(gòu)、中斷和異常處理以及外部輸入和輸出(I/O)。在本文中術(shù)語“指令” 一般指宏指令一一即被提供給處理器(或指令轉(zhuǎn)換器,該指令轉(zhuǎn)換器(例如使用靜態(tài)二進(jìn)制翻譯、包括動態(tài)編譯的動態(tài)二進(jìn)制翻譯)翻譯、變形、仿真,或以其他方式將指令轉(zhuǎn)換成要由處理器處理的一個或多個指令)的指令)以用于執(zhí)行的指令一而不是微指令或微操作(miCTo-op)—它們是處理器的解碼器解碼宏指令的結(jié)果。
[0003]ISA與微架構(gòu)不同,微架構(gòu)是實現(xiàn)指令集的處理器的內(nèi)部設(shè)計。具有不同微架構(gòu)的處理器可共享通用指令集。例如,丨ntel?酷睿(Core?)處理器以及來自加利福尼亞州桑尼威爾(Sunnyvale)的高級微設(shè)備有限公司(Advanced Micro Devices, Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計。例如,該ISA的相同寄存器架構(gòu)可使用公知技術(shù)在不同微處理器中以不同方式實現(xiàn),所述公知技術(shù)包括專用物理寄存器、使用寄存器重命名機制的一個或多個動態(tài)分配的物理寄存器等。
[0004]ISA通常為應(yīng)用程序提供一個或多個指令以進(jìn)行系統(tǒng)調(diào)用。通過系統(tǒng)調(diào)用,應(yīng)用程序能夠請求來自操作系統(tǒng)內(nèi)核的服務(wù)。該服務(wù)包括硬件相關(guān)的服務(wù)(例如,訪問硬盤)、創(chuàng)建和執(zhí)行新進(jìn)程、以及與集成內(nèi)核服務(wù)(例如調(diào)度)通信。從而,系統(tǒng)調(diào)用在應(yīng)用程序和操作系統(tǒng)內(nèi)核之間提供接口。
[0005]通常,系統(tǒng)調(diào)用是用軟件中斷或捕獲來實現(xiàn)的。中斷將控制從應(yīng)用程序轉(zhuǎn)移到操作系統(tǒng)內(nèi)核。一些現(xiàn)有架構(gòu)提供了用于做出系統(tǒng)調(diào)用的控制轉(zhuǎn)移指令。這些控制轉(zhuǎn)移指令被設(shè)計為使應(yīng)用程序?qū)⒖刂瓶焖俎D(zhuǎn)移給操作系統(tǒng),而無需中斷的開銷。然而,現(xiàn)有控制轉(zhuǎn)移指令具有易出錯和受攻擊的明顯弱點。這種脆弱性導(dǎo)致了不那么穩(wěn)健的軟件。例如,如果在系統(tǒng)調(diào)用或系統(tǒng)返回期間在控制棧被切換之前發(fā)生錯誤,則操作系統(tǒng)中的錯誤處理程序可用用戶模式棧而不是系統(tǒng)棧執(zhí)行。用戶模式棧沒有特權(quán)且不被信任。在一些情況下,用戶模式??砂瑦阂獯a,而以用戶模式棧來執(zhí)行可能將系統(tǒng)暴露給惡意攻擊。
【專利附圖】
【附圖說明】
[0006]在附圖的以下各圖中通過示例而非限制地說明多個實施例:
[0007]圖1是示出根據(jù)一個實施例的控制轉(zhuǎn)移的框圖。
[0008]圖2是根據(jù)一個實施例的指令處理裝置的框圖。
[0009]圖3是根據(jù)一個實施例的寄存器架構(gòu)的框圖。
[0010]圖4A示出根據(jù)一個實施例的RBSTCALL指令的第一個版本的示例。
[0011]圖4B示出根據(jù)一個實施例的RBSTRET指令的第一個版本的示例。
[0012]圖5A示出根據(jù)一個實施例的RBSTCALL指令的第二個版本的示例。
[0013]圖5B示出根據(jù)一個實施例的RBSTRET指令的第二個版本的示例。
[0014]圖6A是示出根據(jù)一個實施例的要響應(yīng)于RBSTCALL指令執(zhí)行的操作的流程圖。
[0015]圖6B是示出根據(jù)一個實施例的要響應(yīng)于RBSTRET指令執(zhí)行的操作的流程圖。
[0016]圖6C是示出根據(jù)一個實施例的使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的框圖。
[0017]圖7A是根據(jù)一個實施例的有序和無序流水線的框圖。
[0018]圖7B是根據(jù)一個實施例的有序和無序核的框圖。
[0019]圖8A-B是根據(jù)一個實施例的更具體的示例性的有序核結(jié)構(gòu)的框圖。
[0020]圖9是根據(jù)一個實施例的處理器的框圖。
[0021]圖10是根據(jù)一個實施例的系統(tǒng)的框圖。
[0022]圖11是根據(jù)一個實施例的第二系統(tǒng)的框圖。
[0023]圖12是根據(jù)一個實施例的第三系統(tǒng)的框圖。
[0024]圖13是根據(jù)一個實施例的片上系統(tǒng)(SoC)的框圖。
【具體實施方式】
[0025]在下面的描述中,闡述了很多具體細(xì)節(jié)。然而,應(yīng)該理解,本發(fā)明的實施例可在沒有這些特定細(xì)節(jié)的情況下實施。在其他情況下,沒有詳細(xì)示出已知的電路、結(jié)構(gòu),以及技術(shù),以便不至于使本描述變得模糊。
[0026]本文描述的實施例提供了一組控制轉(zhuǎn)移指令,其中每個指令在一個單一最小單元(atomic)指令中完成監(jiān)控程序模式和用戶模式之間的過渡(transition)。使用傳統(tǒng)的系統(tǒng)調(diào)用和返回機制,要花費一個指令序列來完成監(jiān)控程序模式和用戶模式之間的過渡。此傳統(tǒng)指令序列中間的錯誤導(dǎo)致以非監(jiān)控狀態(tài)在監(jiān)控程序模式中執(zhí)行。這種錯誤的發(fā)生通常要么導(dǎo)致系統(tǒng)崩潰、要么無法從錯誤恢復(fù),要么導(dǎo)致授權(quán)升級攻擊。
[0027]本文中使用的術(shù)語“監(jiān)控程序模式”也被稱為“特權(quán)模式”、“內(nèi)核模式”、或“環(huán)0”,而術(shù)語“用戶模式”也被稱為“非特權(quán)模式”、“非監(jiān)控程序模式”或“環(huán)3”。而且,本文中使用的軟件實體的“特權(quán)等級”與其環(huán)等級相同;例如,環(huán)3程序具有特權(quán)等級3。盡管在下面示例的一個或多個中描述了環(huán)O和環(huán)3之間的過渡,然而可以理解,本文描述的新指令適用于任何兩個不同環(huán)之間或同一環(huán)中的不同進(jìn)程之間的過渡。
[0028]根據(jù)一個實施例,新指令包括“RBSTCALL”指令和“RBSTRET”指令,其中“RBST”代表單詞“穩(wěn)健”。RBSTCALL指令是系統(tǒng)調(diào)用指令,而RBSTRET指令是系統(tǒng)返回指令。這些新指令對惡意攻擊是穩(wěn)健的,并且還具有高性能。
[0029]圖1示出響應(yīng)于“ RBSTCALL ”和“ RBSTRET ”指令而發(fā)生的控制轉(zhuǎn)移的示例。RBSTCALL指令是非特權(quán)指令并且能被請求者程序110調(diào)用,該請求者程序可以在環(huán)O、1、2或3中。當(dāng)處理器(例如,處理系統(tǒng)中的中央處理單元(CPU))執(zhí)行請求者程序110中的RBSTCALL指令時,控制被轉(zhuǎn)移到操作系統(tǒng)(OS)內(nèi)核120中的調(diào)用處理程序(handler) 125。調(diào)用處理程序125在環(huán)O中執(zhí)行。當(dāng)調(diào)用處理程序125完成調(diào)用處理之后,處理器執(zhí)行0S120中的RBSTRET指令以將控制返回給請求者程序110。RBSTRET指令是特權(quán)指令并且僅能由環(huán)O軟件(諸如OS)調(diào)用。在一個實施例中,“RBSTCALL”和“RBSTRET”指令的執(zhí)行可嵌套。例如,該執(zhí)行可遵循以下序列:請求者程序110 — RBSTCALL111 —調(diào)用處理程序125 — RBSTRET121 —請求者程序 110 — RBSTCALL112 —請求者程序 110 — RBSTCALL113 —調(diào)用處理程序125 — RBSTRET121 —請求者程序110。從而,每當(dāng)控制被返回給請求者程序110時,請求者程序110的代碼段可在下一次系統(tǒng)調(diào)用之前執(zhí)行。
[0030]RBSTCALL指令的一實施例使用類似于中斷和異常棧幀的格式將CS(代碼選擇器)、RIP (指令指針)和RGLAGS存儲在內(nèi)核棧上。使用該格式為嵌套執(zhí)行中的方便重入鋪平了道路。
[0031]如同前面提到的,RBSTCALL指令允許源自環(huán)O的環(huán)內(nèi)調(diào)用以及源自環(huán)1、2或3的環(huán)間調(diào)用。類似地,RBSTRET指令允許環(huán)O代碼返回到任何環(huán)(例如,環(huán)0、1、2或3)。RBSTCALL指令和RBSTRET指令中的每一個均在環(huán)過渡的情況下自動地用正確的選擇器值加載段寄存器(例如,GS),由此消除了在過渡完成之前的錯誤能夠?qū)е略贕S中用非監(jiān)控狀態(tài)執(zhí)行監(jiān)控程序模式的窗口。進(jìn)一步,通過最小單元地還原目標(biāo)棧選擇器(例如,SS)和/或棧指針(例如,RSP),RBSTRET指令通過將其中內(nèi)核模式錯誤處理程序能用無效SS和/或RSP執(zhí)行的窗口而改善了可靠性。
[0032]RBSTCALL和RBSTRET指令的實施例對內(nèi)核棧上的目標(biāo)選擇器(例如,CS和SS)的有效性執(zhí)行健全檢查(sanity check),并且還對目標(biāo)RIP和RSP中的地址格式的有效性執(zhí)行規(guī)范檢查(canonical check),由此向OS警告潛在的損壞。RIP中的地址格式的規(guī)范檢查是通過檢測加載到RIP中的地址是否落入非規(guī)范地址范圍而執(zhí)行的。由于架構(gòu)所提供的地址范圍(例如,64位)大于所使用的地址范圍(例如,48位),所以存在這一范圍。從而,64位地址空間的一個區(qū)域未被使用。此未使用的區(qū)域允許未來的地址空間擴(kuò)展。然而,此未使用的區(qū)域是非規(guī)范地址范圍,而RIP中落入該范圍的任何地址均是無效地址。規(guī)范地址檢查可在加載RIP之后但是在該RIP中的地址被提交之前執(zhí)行。規(guī)范地址檢查消除了 RIP中的地址格式的脆弱性,這種脆弱性可被惡意軟件利用。在一些實施例中,也可對其他寄存器執(zhí)行規(guī)范地址檢查。
[0033]在一些實施例中,可通過將大部分地址和段確認(rèn)去除并且對環(huán)過渡做出假設(shè)(例如,目標(biāo)環(huán)為O)來將RBSTCALL和RBSTRET指令優(yōu)化為快速版。例如,快速版不確認(rèn)模型專用寄存器(MSR)中的值,因為MSR只能由OS內(nèi)核加載??焖侔嬗妹黠@較小的成本實現(xiàn)了大部分的控制轉(zhuǎn)移益處。
[0034]與RBSTCALL和RBSTRET指令的其他版本類似,快速版保留了最小單元特征,其中用正確的選擇器值自動加載GS,由此消除了其中在轉(zhuǎn)移完成之前的錯誤能夠?qū)е掠梅潜O(jiān)控模式GS的監(jiān)控模式執(zhí)行的窗口。與RBSTCALL和RBSTRET指令的其他版本類似,快速版去除了可被惡意軟件利用的與規(guī)范RIP有關(guān)的脆弱性。而且,與RBSTRET指令的其他版本類似,快速版最小單元地還原目標(biāo)SS和/或RSP,通過消除其中內(nèi)核模式錯誤處理程序能用無效SS和/或RSP執(zhí)行的窗口改善了可靠性。RBSTCALL和RBSTRET指令可由如下所述的指令處理裝置執(zhí)行。
[0035]圖2是指令處理裝置215的一個實施例的框圖,該指令處理裝置具有執(zhí)行單元240,該執(zhí)行單元包括能用于執(zhí)行指令(包括RBSTCALL/RBSTRET指令)的電路。在一些實施例中,指令處理裝置215可以是處理器、多核處理器的處理器核、或者電子系統(tǒng)中的處理元件。
[0036]解碼器230接收較高級機器指令或宏指令形式的進(jìn)入指令,并且將所述指令解碼以生成較低級的微操作、微代碼進(jìn)入點、微指令或其他較低級的指令或控制信號,它們反映了原始的較高級的指令和/或從原始的較高級指令導(dǎo)出。較低級指令或控制信號可通過較低級(例如,電路級或硬件級)操作來實現(xiàn)較高級指令的操作。解碼器230可使用各種不同的機制來實現(xiàn)。合適機構(gòu)的示例包括但不限于,微代碼、查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、用于實現(xiàn)本領(lǐng)域已知的解碼器的其他機構(gòu)等。
[0037]解碼器230可接收針對高速緩存210、存儲器220或其他源的進(jìn)入指令。經(jīng)解碼的指令被發(fā)送到執(zhí)行單元240。執(zhí)行單元240可從解碼器230接收一個或多個微操作、微代碼進(jìn)入點、微指令、其他指令或其他控制信號,它們反映了所接收的指令或者是從所接收的指令導(dǎo)出的。執(zhí)行單元240從寄存器文件270、高速緩存210和/或存儲器220接收數(shù)據(jù)輸入并向它們生成數(shù)據(jù)輸出。
[0038]在一個實施例中,寄存器文件270包括架構(gòu)寄存器,架構(gòu)寄存器也被稱為寄存器。短語“架構(gòu)寄存器”、“寄存器文件”、以及“寄存器”在本文中用于表示對軟件和/或編程器(例如,軟件可見的)和/或由宏指令指定來標(biāo)識操作數(shù)(operand)的寄存器,除非另外予以規(guī)定或清楚明顯可知。這些寄存器與給定微架構(gòu)(例如,臨時寄存器、重排序緩沖器、回退(retirement)寄存器等)中的其他非架構(gòu)寄存器形成對比。
[0039]為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置215。應(yīng)當(dāng)理解,其他實施例可具有超過一個執(zhí)行單元。例如,裝置215可包括多個不同類型的執(zhí)行單元,諸如例如算術(shù)單元、算術(shù)邏輯單元(ALU)、整數(shù)單元、浮點單元等。指令處理裝置或處理器的另外的實施例可具有多個核、邏輯處理器或執(zhí)行引擎。稍后將參考圖7-13提供指令處理裝置215的多個實施例。
[0040]根據(jù)一個實施例,寄存器文件270包括能由RBSTCALL和RBSTRET指令使用的一組寄存器。這些寄存器中的一些寄存器可被用來存儲包括指向段和指令的指針在內(nèi)的系統(tǒng)狀態(tài)。下面參考圖3描述寄存器文件的示例。
[0041]圖3示出了支持本文描述的指令的底層寄存器架構(gòu)300的一個實施例。寄存器架構(gòu)300基于Intel?酷睿(Core?)處理器,該處理器實現(xiàn)包括x86、MMX?、流SMD擴(kuò)展(SSE)、SSE2、SSE3、SSE4.1、和SSE4.2指令的指令集,以及SMD擴(kuò)展的附加指令集,該附加指令集被稱為高級矢量擴(kuò)展(AVX) (AVX1、AVX2和AVX3)。然而,應(yīng)理解,也可使用支持不同寄存器長度、不同寄存器類型和/或不同數(shù)量的寄存器的不同的寄存器架構(gòu)。
[0042]在所示的實施例中,存在512位寬的32個矢量寄存器310 ;這些寄存器被稱為zmmO至zmm31。低位16個zmm寄存器的低階256位覆蓋在寄存器ymm0_16上。低位16個zmm寄存器的低階128位(ymm寄存器的低階128位)覆蓋在寄存器xmmO-15上。在所示實施例中,存在8個掩碼寄存器320(k0到k7),每個掩碼寄存器的長度為64位。在一替代實施例中,掩碼寄存器320的寬度是16位。
[0043]在所示實施例中,寄存器架構(gòu)300進(jìn)一步包括16個64位通用(GP)寄存器330。在一實施例中,這些GP寄存器330沿循現(xiàn)有x86尋址模式使用以對存儲器操作數(shù)尋址。寄存器架構(gòu)300還包括6個16位段寄存器(CS:代碼選擇器、DS:數(shù)據(jù)選擇器、SS:段選擇器、ES:額外的、FS和GS)。該實施例還示出了 RFLAGS寄存器360、RIP寄存器370以及模型特定寄存器(MSR) 380。
[0044]該實施例還示出了標(biāo)量浮點(FP)棧寄存器文件(x87棧)340,其上混雜有MMX打包整數(shù)平坦寄存器文件350。在所示實施例中,x87棧是用于使用x87指令集擴(kuò)展對32/64/80位浮點數(shù)據(jù)執(zhí)行標(biāo)量浮點操作的8元素棧;而MMX寄存器用于對64位打包整數(shù)數(shù)據(jù)執(zhí)行操作、以及保留操作數(shù)用于在MMX和x_寄存器之間執(zhí)行的一些操作。
[0045]替代實施例可使用更寬或更窄的寄存器。另外,替代實施例可使用更多、更少、或不同的寄存器文件和寄存器。
[0046]圖4A示出根據(jù)一個實施例的RBSTCALL指令的第一個版本的示例。RBSTCALL指令將控制從請求者轉(zhuǎn)移到OS內(nèi)核。在一個實施例中,RBSTCALL指令包括用于檢查該調(diào)用是否有效并被使能的代碼塊410 ;如果該代碼塊無效或未被使能,則生成錯誤(例如,一般保護(hù)(#GP錯誤)或無效操作碼(#UD錯誤)。例如,如果請求者不在64位代碼段中,或者64位模式未被使能,或者RBSTCALL和RBSTRET指令未被使能,則可生成錯誤。在一個實施例中,當(dāng)所述寄存器之一中的一個位被設(shè)置時,RBSTCALL和RBSTRET指令被使能。
[0047]RBSTCALL指令可被特權(quán)等級是O (對于環(huán)內(nèi)調(diào)用)或非O (對于環(huán)間調(diào)用)的請求者調(diào)用。對于環(huán)內(nèi)調(diào)用和環(huán)間調(diào)用二者,執(zhí)行RBSTCALL指令的處理器在代碼塊420和430中驗證地址符合度(例如,對于RIP非規(guī)范地址)。在一個實施例中,執(zhí)行RBSTCALL指令的處理器還在代碼塊430中驗證段寄存器CS和SS是否包含有效地址。RBSTCALL指令進(jìn)一步包括代碼塊425和435 (分別用于環(huán)內(nèi)調(diào)用和環(huán)間調(diào)用)以執(zhí)行OS內(nèi)核和請求者之間的控制棧交換的操作。本文中的控制棧是指由操作系統(tǒng)用來對執(zhí)行保持跟蹤的數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)存儲在存儲器中并且段寄存器CS、SS、GS以及指針RIP和RSP指向這些數(shù)據(jù)結(jié)構(gòu)。因為環(huán)O數(shù)據(jù)結(jié)構(gòu)(例如,與OS內(nèi)核相關(guān)聯(lián)的控制棧)與它們的環(huán)3對應(yīng)項(例如,與用戶模式程序相關(guān)聯(lián)的控制棧)不同,這使得在傳統(tǒng)SYSCALL/SYSRET指令之后立即使用單獨的SWAPGS指令成為必要。RBSTCALL指令(類似地,RBSTRET指令)不需要任何獨立的指令來在OS內(nèi)核和請求者之間交換指向數(shù)據(jù)結(jié)構(gòu)的指針。該交換操作在RBSTCALL/RBSTRET內(nèi)作為單一最小單元指令執(zhí)行。對于內(nèi)部環(huán)調(diào)用,代碼塊435用正確的代碼選擇器值來加載該GS。從而,可以看出,在RBSTCALL指令內(nèi),在一個最小單元指令中用驗證和控制棧實現(xiàn)控制轉(zhuǎn)移。
[0048]圖4B示出根據(jù)一個實施例的RBSTRET指令的第一個版本的示例。RBSTRET指令通過將控制從OS內(nèi)核返回到請求者(即,RBSTCALL的請求者)來逆轉(zhuǎn)RBSTCALL指令的操作。RBSTRET指令是特權(quán)指令,即,它僅能被從環(huán)O調(diào)用。在此實施例中,RBSTRET指令包括用于檢查該調(diào)用是否有效并被使能的代碼塊440 ;如果該調(diào)用無效或未被使能,則生成錯誤(類似于圖4A的代碼塊410)。執(zhí)行RBSTRET指令的處理器在代碼塊450中驗證地址符合度(例如,對于RIP和RSP非規(guī)范地址格式)。在一些實施例中,執(zhí)行RBSTRET指令的處理器還在代碼塊450中驗證段寄存器CS和SS是否包含有效地址。RBSTRET指令進(jìn)一步包括用于執(zhí)行OS內(nèi)核和請求者之間的控制棧切換的操作的代碼塊460和470。在用正確的代碼選擇器值加載該GS的情況下,如果請求者的特權(quán)等級不是O (即,對于環(huán)間調(diào)用),則執(zhí)行代碼塊470。從而,可以看出,在RBSTRET指令內(nèi),在一個最小單元指令中用驗證和軟件棧交換實現(xiàn)控制轉(zhuǎn)移。
[0049]圖5A和圖5B分別示出根據(jù)一個實施例的RBSTCALL指令和RBSTRET的第二個版本的示例。RBSTCALL和RBSTRET指令的第二個版本是快速版,因為在第一個版本中執(zhí)行的驗證中的一些(例如,大部分的地址和段驗證)被去除了。該快速版還對環(huán)過渡做出假設(shè)(例如,目標(biāo)環(huán)是環(huán)O,加載到CS中的代碼選擇器是有效代碼段等)。進(jìn)一步,在該快速版中,假定通用寄存器RCX、R10、R11被用作輸出寄存器。將輸出保留在這些寄存器中可以改善指令的性能并且允許利用現(xiàn)有微代碼中的一些來進(jìn)行系統(tǒng)調(diào)用。在該快速版中,正確的值被加載到段寄存器GS、CS和SS中。可以看出,在快速版的RBSTCALL指令和RBSTRET指令的每一個中,控制轉(zhuǎn)移均是用一個最小單元指令中的驗證和控制棧交換來實現(xiàn)的。
[0050]圖6A是根據(jù)一個實施例的用于執(zhí)行控制轉(zhuǎn)移指令(例如,RBSTCALL指令)的方法600的流程框圖。方法600開始于:處理器從請求者接收將控制從該請求者的第一特權(quán)等級轉(zhuǎn)移到OS內(nèi)核的第二特權(quán)等級的系統(tǒng)調(diào)用指令(框611)。響應(yīng)于該系統(tǒng)調(diào)用指令,處理器在一個最小單元過渡中在請求者和OS內(nèi)核之間交換所述寄存器中的一個或多個所指向的數(shù)據(jù)結(jié)構(gòu)(框612)。圖6B是根據(jù)一個實施例的用于執(zhí)行控制轉(zhuǎn)移指令(例如,RBSTRET指令)的方法610的流程框圖。方法610開始于:處理器從OS內(nèi)核接收系統(tǒng)返回指令(框613)。響應(yīng)于該系統(tǒng)返回指令,處理器在一個最小單元過渡中將控制從OS內(nèi)核還原給該請求者(框614)。
[0051]在一個實施例中,第一特權(quán)等級與第二特權(quán)等級相同。在另一實施例中,第一特權(quán)等級處于非監(jiān)控程序模式而第二特權(quán)等級處于監(jiān)控程序模式。在一個實施例中,對系統(tǒng)調(diào)用指令做出響應(yīng)的處理器要最小單元地用正確的值加載一個或多個段寄存器。在一個實施例中,對系統(tǒng)調(diào)用指令做出響應(yīng)的處理器要最小單元地對一個或多個段寄存器執(zhí)行有效性檢查。在一個實施例中,對所述指令做出響應(yīng)的處理器要最小單元地對要被加載到所述寄存器的一個或多個寄存器中的一個或多個目標(biāo)指針執(zhí)行地址符合度的規(guī)范檢查。
[0052]在各實施例中,圖6A-6B的方法可由通用處理器、專用處理器(例如,圖形處理器或數(shù)字信號處理器)、或另一種類型的數(shù)字邏輯設(shè)備或指令處理裝置執(zhí)行。在一些實施例中,圖6A-6B的方法可由圖2的指令處理裝置215、或類似的處理器、裝置或系統(tǒng)(諸如圖7-13中所示的實施例)執(zhí)行。而且,圖2的指令處理裝置215以及圖7-13中所示的處理器、裝置或系統(tǒng)可執(zhí)行與圖6A-6B的方法的實施例相同、類似或不同的操作和方法的實施例。
[0053]在一些實施例中,圖2的指令處理裝置215可結(jié)合指令轉(zhuǎn)換器操作,該指令轉(zhuǎn)換器將來自源指令集的指令轉(zhuǎn)換到目標(biāo)指令集。例如,指令轉(zhuǎn)換器可將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動態(tài)編譯的動態(tài)二進(jìn)制翻譯)、變形、仿真、或者以其他方式轉(zhuǎn)換成由內(nèi)核處理的一個或多個其他指令。指令轉(zhuǎn)換器可以軟件、硬件、固件、或者其組合實現(xiàn)。指令轉(zhuǎn)換器可在處理器上、在處理器以外、或者部分在處理器上且部分在處理器以外。
[0054]圖6C是根據(jù)一個實施例的與使用軟件指令轉(zhuǎn)換器的對比的框圖。在所示的實施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但是替代地指令轉(zhuǎn)換器可以軟件、固件、硬件、或者其各種組合實現(xiàn)。圖6C以高級語言602示出了程序,該程序可使用x86編譯器604來編譯以生成x86 二進(jìn)制代碼606,該二進(jìn)制代碼可天然地由具有至少一個x86指令集核心的處理器626來執(zhí)行。具有至少一個x86指令集核心626的處理器表示可通過兼容地執(zhí)行或者以其他方式處理(I)因特爾x86指令集核心的指令集的實質(zhì)部分或者(2)以在具有至少一個x86指令集核心的因特爾處理器上運行為目標(biāo)的對象代碼版本的應(yīng)用或其他軟件來執(zhí)行與具有至少一個x86指令集核心的因特爾處理器基本相同的功能以實現(xiàn)與具有至少一個x86指令集核心的因特爾處理器基本相同的結(jié)果的任何處理器。x86編譯器604表示可操作用于生成在具有或者沒有附加鏈接處理的情況下可在具有至少一個x86指令集核心626的處理器上執(zhí)行的x86 二進(jìn)制代碼606 (例如,對象代碼)的編譯器。類似地,圖6C以高級語言602示出了程序,該程序可使用替代指令集編譯器608來編譯以生成替代指令集二進(jìn)制代碼620,該替代指令集二進(jìn)制代碼620可由不具有至少一個x86指令集核心的處理器624(諸如,具有可執(zhí)行加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集的處理器和/或執(zhí)行加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集的處理器)來原生地執(zhí)行。指令轉(zhuǎn)換器622用于將x86 二進(jìn)制代碼606轉(zhuǎn)換成可由不具有x86指令集核心624的處理器在本機上執(zhí)行的代碼。該經(jīng)轉(zhuǎn)換的代碼不可能與替代指令集二進(jìn)制代碼620相同,因為難以制作能夠這樣做的指令轉(zhuǎn)換器;然而,經(jīng)轉(zhuǎn)換的代碼將完成一般操作并且由來自替代指令集的指令構(gòu)成。由此,指令轉(zhuǎn)換器622表示通過仿真、模擬、或者任何其他處理允許處理器或者不具有x86指令集處理器或核心的其他電子設(shè)備執(zhí)行x86 二進(jìn)制代碼606的軟件、固件、硬件、或者其組合。
[0055]示例性核心架構(gòu)
[0056]有序和無序核心方框圖
[0057]圖7A是示出根據(jù)一個實施例的示例性有序流水線以及示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線的框圖。圖7B是示出根據(jù)一個實施例的有序流水線以及示例性寄存器重命名的、無序發(fā)令/執(zhí)行流水線的框圖。圖7A和7B中的實線框示出有序流水線和有序核心,而任選增加的虛線框示出寄存器重命名的、無序發(fā)令/執(zhí)行流水線和核心。假設(shè)有序方面是無序方面的子集,將描述無序方面。
[0058]在圖7A中,處理器流水線700包括取指級702、長度解碼級704、解碼級706、分配級708、重命名級710、調(diào)度(也稱為分派或發(fā)令)級712、寄存器讀取/存儲器讀取級714、執(zhí)行級716、回寫/存儲器寫級718、異常處理級722、以及提交級724。
[0059]圖7B示出處理器核心790,該核心790包括耦合到執(zhí)行引擎單元750的前端單元730,并且兩者均耦合到存儲器單元770。核心790可以是縮減的指令集計算(RISC)核心、復(fù)雜的指令集計算(CISC)核心、超長指令字(VLIW)核心、或者混合或替代核心類型。作為另一選項,核心790可以是專用核心,諸如舉例而言,網(wǎng)絡(luò)或通信核心、壓縮引擎、協(xié)處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等。
[0060]前端單元730包括稱合到指令高速緩存單元734的分支預(yù)測單元732,該指令高速緩存單元734耦合到指令翻譯后備緩沖器(TLB) 736,該指令TLB736耦合到指令提取單元738,該指令提取單元738耦合到解碼單元740。解碼單元740 (或解碼器)可對指令進(jìn)行解碼,并且生成一個或多個微操作、微代碼輸入點、微指令、其他指令、或者從原始指令解碼、或以其他方式反映原始指令、或從原始指令派生的其他控制信號作為輸出。解碼單元740可使用各種不同的機構(gòu)來實現(xiàn)。合適機構(gòu)的示例包括但不限于,查找表、硬件實現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等。在一個實施例中,核心790包括微代碼ROM或者存儲用于特定微指令的微代碼(例如,在解碼單元740中或者在前端單元730內(nèi))的其他介質(zhì)。解碼單元740耦合至執(zhí)行引擎單元750中的重命名/分配器單元752。
[0061 ] 執(zhí)行引擎單元750包括耦合到回退單元752的重命名/分配器單元754、以及一組一個或多個調(diào)度器單元756。調(diào)度器單元756表示任何數(shù)量的不同調(diào)度器,包括:預(yù)約站、中央指令窗口等等。調(diào)度器單元756耦合至物理寄存器文件單元758。每一物理寄存器文件單元758表示一個或多個物理寄存器文件,其中不同的物理寄存器文件存儲一種或多種不同的數(shù)據(jù)類型,諸如標(biāo)量整數(shù)、標(biāo)量浮點、打包整數(shù)、打包浮點、矢量整數(shù)、矢量浮點、狀態(tài)(例如,作為要執(zhí)行的下一指令的地址的指令指示符)等。在一個實施例中,物理寄存器文件單元758包括矢量寄存器單元、寫掩碼寄存器單元、以及標(biāo)量寄存器單元。這些寄存器單元可提供架構(gòu)矢量寄存器,矢量掩碼寄存器、以及通用寄存器。物理寄存器文件單元758由回退單元754重疊,以示出其中可實現(xiàn)寄存器重命名和無序執(zhí)行(例如,使用重排序緩沖器和回退寄存器文件;使用特征文件、歷史緩沖器、以及回退寄存器文件;使用寄存器映射和寄存器池等)的各種方式。回退單元754和物理寄存器文件單元758耦合到執(zhí)行集群760。執(zhí)行集群760包括一組一個或多個執(zhí)行單元762以及一組一個或多個存儲器存取單元764。執(zhí)行單元762可執(zhí)行各種操作(例如,位移、加法、減法、乘法),并且對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點、打包整數(shù)、打包浮點、矢量整數(shù)、矢量浮點)執(zhí)行。盡管一些實施例可包括專屬于專用功能或功能集的大量執(zhí)行單元,但是其他實施例可包括僅一個執(zhí)行單元或者全部都執(zhí)行所有功能的多個執(zhí)行單元。調(diào)度器單元756、物理寄存器文件單元758、以及執(zhí)行集群760被示為可能是復(fù)數(shù),因為特定實施例為特定類型的數(shù)據(jù)/操作創(chuàng)建分離的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點/打包整數(shù)/打包浮點/矢量整數(shù)/矢量浮點流水線、和/或各自具有其自己的調(diào)度器單元、物理寄存器文件單元和/或執(zhí)行集群的存儲器存取流水線一并且在單獨的寄存器存取流水線的情況下,實現(xiàn)其中僅該流水線的執(zhí)行集群具有存儲器存取單元764的特定實施例)。還應(yīng)當(dāng)理解,在使用分離的流水線的情況下,這些流水線中的一個或多個可以是無序發(fā)出/執(zhí)行,而其他流水線可以是有序發(fā)出/執(zhí)行。
[0062]一組存儲器存取單元764耦合到存儲器單元770,該存儲器單元770包括耦合到數(shù)據(jù)高速緩存單元774的數(shù)據(jù)TLB單元772,該數(shù)據(jù)高速緩存單元774耦合到第二級(L2)高速緩存單元776。在一個示例性實施例中,存儲器訪問單元764可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元770中的數(shù)據(jù)TLB單元772。指令高速緩存單元734還耦合到存儲器單元770中的二級(L2)高速緩存單元776。L2高速緩存單元776耦合到一種或多種其他級別的高速緩存,并且最終耦合到主存儲器。
[0063]作為示例,示例性機床電器重命名、無序發(fā)出/執(zhí)行核心架構(gòu)可如下地實現(xiàn)流水線700:1)指令提取738執(zhí)行提取和長度解碼級702和704 ;2)解碼單元740執(zhí)行解碼級706 ;3)重命名/分配器單元752執(zhí)行分配級708和重命名級710 ;4)調(diào)度器單元756執(zhí)行調(diào)度級712 ;5)物理寄存器文件單元758和存儲器單元770執(zhí)行寄存器讀取/存儲器讀取級714 ;執(zhí)行集群760執(zhí)行執(zhí)行級716 ;6)存儲器單元770和物理寄存器文件單元758執(zhí)行回寫/存儲器撰寫級718 ;7)各個單元可在異常處理級722中體現(xiàn);以及8)回退單元754和物理寄存器文件單元758執(zhí)行提交級724。
[0064]核心790可支持一個或多個指令集(例如,x86指令集(具有已經(jīng)使用較新版本增加的一些擴(kuò)展)、加利福尼亞州森尼維耳市MIPS Technologies的MIPS指令集、加利福尼亞州森尼維耳市的ARM holding的ARM指令集(具有諸如NEON之類的任選的附加擴(kuò)展)),包括本文中所描述的指令。在一個實施例中,核心790包括邏輯以支持打包數(shù)據(jù)指令集擴(kuò)展(例如,SSE、AVX1、AVX2等),由此允許許多多媒體應(yīng)用所使用的操作使用打包數(shù)據(jù)來執(zhí)行。
[0065]應(yīng)當(dāng)理解,該核心可支持多線程(執(zhí)行并行的兩組或兩組以上的操作或線程),并且可以包括分時多線程、同時多線程(其中單一物理核心為每一線程提供物理核心是同時多線程的邏輯核心)、或者其組合(例如,分時提取和解碼以及此后諸如在Intel? Hyperthreading技術(shù)中的同時多線程)的各種方式這樣做。
[0066]盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當(dāng)理解寄存器重命名可在有序架構(gòu)中使用。盡管處理器的所示實施例還包括單獨的指令和數(shù)據(jù)高速緩存單元734/774以及共享的L2高速緩存單元776,但是替代實施例可具有用于指令和數(shù)據(jù)兩者的單一內(nèi)部高速緩存,諸如舉例而言,第一級(LI)內(nèi)部高速緩存、或多級內(nèi)部高速緩存。在一些實施例中,該系統(tǒng)可包括內(nèi)部高速緩存和外部高速緩存的組合,該外部高速緩存在核心和/或處理器外部。替代地,所有高速緩存可在核心和/或處理器外部。
[0067]專用示例性有序核心架構(gòu)
[0068]圖8A-B示出更特定的示例性有序核架構(gòu)的框圖,其核可以是芯片中的若干邏輯塊之一(包括相同類型和/或不同類型的其它核)。取決于應(yīng)用,邏輯塊通過高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))與一些固定功能邏輯、存儲器I/o接口、以及其他存儲器I/O邏輯進(jìn)行通信。
[0069]圖8A是根據(jù)一個實施例的連接到片上互聯(lián)網(wǎng)絡(luò)802且具有第二級(L2)高速緩存804的本地子集的單一處理器核心的方框圖。在一個實施例中,指令解碼器800支持具有打包數(shù)據(jù)指令集擴(kuò)展的x86指令集。LI高速緩存806允許對高速緩存存儲器進(jìn)行低延遲存取而進(jìn)入標(biāo)量和矢量單元。盡管在一個實施例中(為了簡化設(shè)計)標(biāo)量單元808和矢量單元810使用分離的寄存器集合(分別是標(biāo)量寄存器812和矢量寄存器814)并且在兩者之間傳輸?shù)臄?shù)據(jù)被寫入存儲器且隨后從第一級(LI)高速緩存806讀回,但是替代實施例可使用不同的方法(例如,使用單一寄存器集合或者包括允許數(shù)據(jù)在不寫入和讀回的情況下在兩個寄存器文件之間傳輸?shù)耐ㄐ磐ǖ?。
[0070]L2高速緩存804的本地子集是分成分離的本地子集(每一處理器核心一個本地子集)的全局L2高速緩存的一部分。每一處理器核心具有到L2高速緩存804的其自己的本地子集的直接存取通道。由處理器核心讀取的數(shù)據(jù)被存儲在其L2高速緩存子集804中,并且可與存取其自己的本地L2高速緩存子集的其他處理器核心并行地快速存取。由處理器核心寫入的數(shù)據(jù)被存儲在其自己的L2高速緩存子集804中,并且如果必要則從其他子集清除(flush)。環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的相干性。環(huán)形網(wǎng)絡(luò)是雙向的以允許在芯片內(nèi)諸如處理器核心、L2高速緩存、以及其他邏輯塊之類的代理相互通信。
[0071]圖SB是根據(jù)本發(fā)明的實施例的圖8A中的處理器核心的一部分的展開圖。圖SB包括LI高速緩存804的LI數(shù)據(jù)高速緩存806A部分、以及關(guān)于矢量單元810和矢量寄存器814的更多細(xì)節(jié)。具體地,矢量單元810是16寬矢量處理單元(VPU)(參見16寬ALU828),該矢量處理單元執(zhí)行整數(shù)、單精度浮動和雙精度浮動的指令中的一個或多個。VPU支持使用拌和單元820拌和寄存器輸入、使用數(shù)字轉(zhuǎn)換單元822A-B數(shù)字轉(zhuǎn)換、以及使用存儲器輸入上的復(fù)制單元824復(fù)制。寫掩碼寄存器826允許斷定所得矢量撰寫。
[0072]具有集成存儲器控制器和圖形的處理器
[0073]圖9是根據(jù)一個實施例的處理器900的框圖,該處理器可具有一個以上的核,可具有集成的存儲器控制器,且可具有集成的圖形。圖9的實線框示出了處理器900,處理器900具有單個核心902A、系統(tǒng)代理910、一組一個或多個總線控制器單元916,而可選附加的虛線框示出了替代的處理器900,具有多個核心902A-N、系統(tǒng)代理單元910中的一組一個或多個集成存儲器控制器單元914以及專用邏輯908。
[0074]由此,處理器900的不同實現(xiàn)可包括:1)具有作為集成圖形和/或科學(xué)(吞吐量)邏輯(該邏輯可包括一個或多個核心)的專用邏輯908、以及作為一個或多個通用核心(例如,通用有序核心、通用無序核心、兩者的組合)的核心902A-N的CPU ;2)具有作為期望主要用于圖形和/或科學(xué)(吞吐量)的大量專用核心的核心902A-N的協(xié)處理器;以及3)具有作為大量通用有序核心的核心902A-N的協(xié)處理器。由此,處理器900可以是通用處理器、協(xié)處理器、或?qū)S锰幚砥?,諸如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU (通用圖形處理單元)、高吞吐量許多集成核心(MIC)協(xié)處理器(包括30個或30個以上的核心)、嵌入式處理器等。處理器可在一個或多個芯片上實現(xiàn)。處理器900可以是一個或多個基板的一部分,和/或在一個或多個基板上使用大量處理技術(shù)(諸如舉例而言,BiCMOS、CMOS、或NMOS)中的任一種技術(shù)實現(xiàn)。
[0075]存儲器等級(hierarchy)包括核心內(nèi)的一級或多級高速緩存、一組或者一個或多個共享高速緩存單元906、以及耦合到一組集成存儲器控制器單元914的外部存儲器(未示出)。一組共享高速緩存單元906可包括一個或多個中級高速緩存(諸如第二級(L2)、第三級(L3)、第四級(L4))或其他級高速緩存、最后一級高速緩存(LLC)、和/或其組合。盡管在一個實施例中,基于環(huán)形的互連單元912使集成圖形邏輯908、一組共享高速緩存單元906、以及系統(tǒng)代理單元910/集成存儲器控制器單元914互連,但是替代實施例可使用任意數(shù)量的公知技術(shù)來互連這些單元。在一個實施例中,在一個或多個高速緩存單元906與核心902A-N之間維持相干性。
[0076]在一些實施例中,核心902A-H中的一個或多個核心能夠多線程。系統(tǒng)代理910包括這些組件配合和操作核心902A-N。這些系統(tǒng)代理單元910可包括例如功率控制單元(P⑶)和顯示單元。P⑶可以是或者包括調(diào)整核心902A-N的功率狀態(tài)必需的的邏輯和組件、以及集成圖形邏輯908。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。
[0077]核心902A-N在架構(gòu)指令集方面可以是同質(zhì)的或者異質(zhì)的,即核心902A-N中的兩個或兩個以上核心可以能夠執(zhí)行相同的指令集,而其他核心可以能夠只執(zhí)行該指令集的子集或者不同的指令集。
[0078]示例性計算機架構(gòu)
[0079]圖10-13是示例性計算機架構(gòu)的框圖。在本領(lǐng)域中已知的用于膝上型個人計算機、臺式個人計算機、手持個人計算機(PC)、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備、以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計和配置也是合適的。一般而言,能夠結(jié)合處理器和/或其他執(zhí)行邏輯的各種各樣系統(tǒng)或電子設(shè)備通常是合適的。
[0080]現(xiàn)在參考圖10,所示出的是根據(jù)一個實施例的系統(tǒng)1000的框圖。系統(tǒng)1000可包括一個或多個處理器1010、1015,這些處理器耦合到控制器集線器1020。在一個實施例中,控制器集線器1020包括圖形存儲器控制器集線器(GMCH) 1090和輸入/輸出集線器(IOH)1050 (它們可在分離的芯片上),GMCH1090包括耦合到存儲器1040和協(xié)處理器1045的存儲器和圖形控制器,10H1050使輸入/輸出(I/O)設(shè)備1060耦合到GMCH1090?;蛘?,存儲器和圖形控制中的一個或兩個集成在處理器內(nèi)(如本文所述),存儲器1040和協(xié)處理器1045直接耦合到處理器1010和具有10H1050的單個芯片中的控制器中樞1020。
[0081]附加的處理器1015的任選特性在圖10中通過虛線來表示。每一處理器1010、1015可包括本文中所描述的處理器核心中的一個或多個,并且可以是處理器900的某種版本。
[0082]存儲器1040可以是例如動態(tài)隨機存取存儲器(DRAM)、相變存儲器(PCM)、或者兩者的組合。對于至少一個實施例,控制器集線器1020經(jīng)由諸如前端總線(FSB)之類的多點總線(mult1-drop bus)、諸如快速通道互連(QPI)之類的點對點接口、或者類似的連接1095與處理器1010、1015進(jìn)行通信。
[0083]在一個實施例中,協(xié)處理器1045是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。在一個實施例中,控制器集線器1020可包括集成圖形加速器。
[0084]按照包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特征等等優(yōu)點的度量譜,(多個)物理資源1010、1015之間存在各種差別。
[0085]在一個實施例中,處理器1010執(zhí)行控制具有通用類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可被嵌入這些指令內(nèi)。處理器1010識別如具有應(yīng)當(dāng)由附連的協(xié)處理器1045執(zhí)行的類型的這些協(xié)處理器指令。因此,處理器1010在協(xié)處理器總線或者其他互連上將這些協(xié)處理器指令(或者表示協(xié)處理器指令的控制信號)發(fā)出到協(xié)處理器1045。協(xié)處理器1045接受和執(zhí)行接收到的協(xié)處理器指令。
[0086]現(xiàn)在參考圖11,所示出的是根據(jù)一個實施例的第一更具體示例性系統(tǒng)1100的框圖。如圖11所示,多處理器系統(tǒng)1100是點對點互連系統(tǒng),且包括經(jīng)由點對點互連1150耦合的第一處理器1170和第二處理器1180。處理器1170和1180中的每一個可以是一些版本的處理器900。在一個實施例中,處理器1170和1180分別是處理器1010和1015,而協(xié)處理器1138是協(xié)處理器1045。在另一實施例中,處理器1170和1180分別是處理器1010和協(xié)處理器1045。
[0087]處理器1170和1180分別被示為包括集成存儲器控制器(MC)單元1172和1182。處理器1170還包括其總線控制器單元點對點(P-P)接口 1176和1178的一部分;類似地,第二處理器1180包括P-P接口 1186和1188。處理器1170、1180可使用P-P接口電路1178、1188經(jīng)由點對點(P-P)接口 1150交換信息。如圖11所示,頂C1172和1182將處理器耦合到相應(yīng)的存儲器,即存儲器1132和存儲器1134,這些存儲器可以是本地附連到相應(yīng)處理器的主存儲器的部分。
[0088]處理器1170、1180可各自使用點對點接口電路1176、1194、1186、1198經(jīng)由各個P-P接口 1152、1154與芯片組1190交換信息。芯片組1190可任選地經(jīng)由高性能接口 1139與協(xié)處理器1138交換信息。在一個實施例中,協(xié)處理器1138是專用處理器,諸如舉例而言,高吞吐量MIC處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
[0089]共享高速緩存(未示出)可被包括在任一處理器中或者在兩個處理器外部,但是經(jīng)由P-P互連與處理器連接,由此如果處理器置于低功率模式中,則任一或兩個處理器的本地高速緩存信息可被存儲在共享高速緩存中。
[0090]芯片組1190可經(jīng)由接口 1196耦合到第一總線1116。在一個實施例中,第一總線1116可以是外圍組件互連(PCI)總線、或者諸如PCI Express總線或另一第三代I/O互連總線之類的總線。也可使用替代實施例。
[0091]如圖11所示,各種I/O設(shè)備1114可連同總線橋1118—起耦合到第一總線1116,總線橋1118將第一總線1116耦合到第二總線1120。在一個實施例中,諸如協(xié)處理器、高吞吐量MIC處理器、GPGPU的加速器(諸如舉例而言,圖形加速器或數(shù)字信號處理(DSP)單元)、現(xiàn)場可編程門陣列、或者其他處理器之類的一個或多個附加處理器1115耦合到第一總線1116。在一個實施例中,第二總線1120可以是低引腳數(shù)(LPC)總線。在一個實施例中,多個設(shè)備可以耦合到第二總線1120,包括例如鍵盤和/或鼠標(biāo)1122、通信設(shè)備1127以及可以包括指令/代碼和數(shù)據(jù)1130的存儲單元1128 (諸如盤驅(qū)動器或其它海量存儲設(shè)備)。此夕卜,音頻1/01124可耦合到第二總線1120。注意,其他架構(gòu)是可能的。例如,代替圖11的點對點架構(gòu),系統(tǒng)可實現(xiàn)多點總線或者其他此類架構(gòu)。
[0092]現(xiàn)在參考圖12,所示出的是根據(jù)一個實施例的第二更具體示例性系統(tǒng)1200的框圖。圖11和12中的類似元件使用類似附圖標(biāo)記,且在圖12中省略了圖11的某些方面以避免混淆圖12的其它方面。
[0093]圖12示出處理器1170、1180可分別包括集成存儲器和I/O控制邏輯(“CL”)1172和1182。因此,CL1172和1182包括集成存儲器控制器單元且包括I/O控制邏輯。圖12示出:不僅存儲器1132、1134耦合至CL1172、1182,I/O設(shè)備1214也耦合至控制邏輯1172、1182。傳統(tǒng)I/O設(shè)備1215耦合到芯片組1190。
[0094]現(xiàn)在參考圖13,所示出的是根據(jù)一個實施例的SoC1300的框圖。圖9中的類似元件具有相似的附圖標(biāo)記。同樣,虛線框是更多高級SoC上的任選的特征。在圖13中,互連單元1302耦合到:包括一組一個或多個核心902A-N和共享高速緩存單元906的應(yīng)用處理器1310、系統(tǒng)代理單元910、總線控制器單元916、集成存儲器控制器單元914、可包括集成圖形邏輯、圖形處理器、音頻處理器、以及視頻處理器的一組或者一個或多個協(xié)處理器1320、靜態(tài)隨機存取存儲器(SRAM)單元1330、直接存儲器存取(DMA)單元1332、以及用于耦合到一個或多個外部顯示器的顯示單元1340。在一個實施例中,協(xié)處理器1320包括專用處理器,諸如舉例而言,網(wǎng)絡(luò)或通信處理器、壓縮引擎、GPGPU、高吞吐量MIC處理器、嵌入式處理翌坐-nfr ο
[0095]本文中所公開的機構(gòu)的實施例可以硬件、軟件、固件、或者這些實現(xiàn)方法的組合來實現(xiàn)。實施例可被實現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計算機程序或程序代碼,這些可編程系統(tǒng)包括至少一個處理器、存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。
[0096]諸如圖11所示的代碼1130之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描述的功能并生成輸出信息。輸出信息可以已知的方式應(yīng)用于一個或多個輸出設(shè)備。出于本申請的目的,處理系統(tǒng)包括具有處理器(諸如舉例而言,數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)、或微處理器)的任何系統(tǒng)。
[0097]程序代碼可以高級過程或面向?qū)ο缶幊陶Z言實現(xiàn),以與處理系統(tǒng)進(jìn)行通信。如果期望,程序代碼則還可以匯編或機器語言實現(xiàn)。實際上,本文中所描述的機構(gòu)在范圍上不限于任何特定編程語目。在任何情況下,該語目可以是編譯或解釋語目。
[0098]至少一個實施例的一個或多個方面可通過存儲在機器可讀介質(zhì)上的代表性指令來實現(xiàn),該機器可讀介質(zhì)表示處理器內(nèi)的各種邏輯,這些指令在由機器讀取時使得該機器制備邏輯以執(zhí)行本文中所描述的技術(shù)。稱為“IP核心”的這些表示可被存儲在有形的機器可讀介質(zhì)上且供應(yīng)給各種客戶或制造設(shè)施以加載到實際上制作邏輯或處理器的制備機器。
[0099]這種機器可讀存儲介質(zhì)可包括但不限于,由機器或設(shè)備制造或形成的制品的非瞬態(tài)有形排列,這些非瞬態(tài)有形排列包括:諸如硬盤,包括軟盤、光盤、壓縮盤只讀存儲器(⑶-ROM)、壓縮盤可重寫(⑶-RW)存儲器、以及磁電-光盤的任何其他類型的盤之類的存儲介質(zhì);諸如只讀存儲器(ROM)、隨機存取存儲器(RAM)(諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM))、可擦除可編程只讀存儲器(EPR0M)、閃存、電可擦除可編程只讀存儲器(EEPR0M)、相變存儲器(PCM)之類的半導(dǎo)體器件;磁或光卡;或者適于存儲電子指令的任何其他類型的介質(zhì)。
[0100]因此,實施例還包括包含指令或者包含設(shè)計數(shù)據(jù)(諸如硬件描述語言(HDL))的非瞬態(tài)有形機器可讀介質(zhì),該設(shè)計數(shù)據(jù)定義本文中所描述的結(jié)構(gòu)、電路、裝置、處理器、和/或系統(tǒng)特征。這些實施例還可被稱為程序產(chǎn)品。
[0101]雖然已經(jīng)描述了特定示例實施例,并將其示出在附圖中,可以理解到,這些實施例僅僅是示例性的且不是限制性的,并且不限于所示出和所描述的特定結(jié)構(gòu)和配置,因為本領(lǐng)域技術(shù)人員在研究了本公開文本之后可以料知到多種其他修改方式。在本【技術(shù)領(lǐng)域】中,因為發(fā)展很快且未來的進(jìn)步未曾可知,本公開的諸個實施例可通過受益于技術(shù)進(jìn)步而容易地獲得配置和細(xì)節(jié)上的改動,而不背離本公開的原理和所附的權(quán)利要求書的范圍。
【權(quán)利要求】
1.一種裝置,包括: 用于存儲指向存儲器中的數(shù)據(jù)結(jié)構(gòu)的指針的多個寄存器;以及 耦合于所述寄存器的執(zhí)行電路,所述執(zhí)行電路用于: 從請求者接收將控制從所述請求者的第一特權(quán)等級轉(zhuǎn)移到操作系統(tǒng)內(nèi)核的第二特權(quán)等級的系統(tǒng)調(diào)用指令;以及 響應(yīng)于所述系統(tǒng)調(diào)用指令,在一個最小單元過渡中在所述請求者和所述操作系統(tǒng)內(nèi)核之間交換所述寄存器所指向的數(shù)據(jù)結(jié)構(gòu)。
2.如權(quán)利要求1所述的裝置,其特征在于,所述執(zhí)行電路用于從所述操作系統(tǒng)內(nèi)核接收系統(tǒng)返回指令,并且用于響應(yīng)于所述系統(tǒng)返回指令而在一個最小單元過渡中將控制從所述操作系統(tǒng)內(nèi)核還原到所述請求者。
3.如權(quán)利要求1所述的裝置,其特征在于,所述第一特權(quán)等級與所述第二特權(quán)等級相同。
4.如權(quán)利要求1所述的裝置,其特征在于,所述第一特權(quán)等級處于非監(jiān)控程序模式而第二特權(quán)等級處于監(jiān)控程序模式。
5.如權(quán)利要求1所述的裝置,其特征在于,對所述指令做出響應(yīng)的所述執(zhí)行電路用于最小單元地用正確的值加載一個或多個段寄存器。
6.如權(quán)利要求1所述 的裝置,其特征在于,對所述指令做出響應(yīng)的所述執(zhí)行電路用于最小單元地對一個或多個段寄存器執(zhí)行有效性檢查。
7.如權(quán)利要求1所述的裝置,其特征在于,對所述指令做出響應(yīng)的處理器用于最小單元地對要被加載到所述寄存器的一個或多個寄存器中的一個或多個目標(biāo)指針執(zhí)行地址符合度的規(guī)范檢查。
8.一種方法,包括: 從請求者接收將控制從所述請求者的第一特權(quán)等級轉(zhuǎn)移到操作系統(tǒng)內(nèi)核的第二特權(quán)等級的系統(tǒng)調(diào)用指令;以及 響應(yīng)于所述系統(tǒng)調(diào)用指令,在一個最小單元過渡中在所述請求者和所述操作系統(tǒng)內(nèi)核之間交換存儲在存儲器中且被所述寄存器指向的數(shù)據(jù)結(jié)構(gòu)。
9.如權(quán)利要求8所述的方法,其中,還包括: 從所述操作系統(tǒng)內(nèi)核接收系統(tǒng)返回指令;以及 響應(yīng)于所述系統(tǒng)返回指令,在一個最小單元過渡中將控制從所述操作系統(tǒng)內(nèi)核還原到所述請求者。
10.如權(quán)利要求8所述的方法,其特征在于,所述第一特權(quán)等級與所述第二特權(quán)等級相同。
11.如權(quán)利要求8所述的方法,其特征在于,所述第一特權(quán)等級處于非監(jiān)控程序模式而第二特權(quán)等級處于監(jiān)控程序模式。
12.如權(quán)利要求8所述的方法,其特征在于,還包括: 最小單元地用正確的值加載一個或多個段寄存器。
13.如權(quán)利要求8所述的方法,其特征在于,還包括: 最小單元地對一個或多個段寄存器執(zhí)行有效性檢查。
14.如權(quán)利要求8所述的方法,其特征在于,還包括:最小單元地對要被加載到所述寄存器的一個或多個寄存器中的一個或多個目標(biāo)指針執(zhí)行地址符合度的規(guī)范檢查。
15.—種系統(tǒng),包括: 存儲器;以及 耦合于所述存儲器的處理器,所述處理器包括: 用于存儲指向存儲器中的數(shù)據(jù)結(jié)構(gòu)的指針的多個寄存器;以及 耦合于所述寄存器的執(zhí)行電路,所述執(zhí)行電路用于: 從請求者接收將控制從所述請求者的第一特權(quán)等級轉(zhuǎn)移到操作系統(tǒng)內(nèi)核的第二特權(quán)等級的系統(tǒng)調(diào)用指令;以及 響應(yīng)于所述系統(tǒng)調(diào)用指令,在一個最小單元過渡中在所述請求者和所述操作系統(tǒng)內(nèi)核之間交換所述寄存器所指向的數(shù)據(jù)結(jié)構(gòu)。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述執(zhí)行電路用于從所述操作系統(tǒng)內(nèi)核接收系統(tǒng)返回指令,并且用于響應(yīng)于所述系統(tǒng)返回指令而在一個最小單元過渡中將控制從所述操作系統(tǒng)內(nèi)核還原到所述請求者。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述第一特權(quán)等級與所述第二特權(quán)等級相同。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述第一特權(quán)等級處于非監(jiān)控程序模式而第二特權(quán)等級處于監(jiān)控程序模式。
19.如權(quán)利要求15所述的系統(tǒng),其特征在于,對所述指令做出響應(yīng)的所述執(zhí)行電路用于最小單元地用正確的值加載一個或多個段寄存器,以及最小單元地對一個或多個段寄存器執(zhí)行有效性檢查。
20.如權(quán)利要求15所述的系統(tǒng),其特征在于,對所述指令做出響應(yīng)的處理器用于最小單元地對要被加載到所述寄存器的一個或多個寄存器中的一個或多個目標(biāo)指針執(zhí)行地址符合度的規(guī)范檢查。
【文檔編號】G06F21/56GK104050415SQ201410095695
【公開日】2014年9月17日 申請日期:2014年3月14日 優(yōu)先權(quán)日:2013年3月15日
【發(fā)明者】B·V·帕特爾, J·B·克羅斯蘭, A·A·哈爾, T·奧普費曼 申請人:英特爾公司