TWI467475B - 無關於特權位準的區段暫存器讀與寫的系統、設備及方法 - Google Patents
無關於特權位準的區段暫存器讀與寫的系統、設備及方法 Download PDFInfo
- Publication number
- TWI467475B TWI467475B TW100141297A TW100141297A TWI467475B TW I467475 B TWI467475 B TW I467475B TW 100141297 A TW100141297 A TW 100141297A TW 100141297 A TW100141297 A TW 100141297A TW I467475 B TWI467475 B TW I467475B
- Authority
- TW
- Taiwan
- Prior art keywords
- privilege
- agnostic
- sector base
- base register
- sector
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/342—Extension of operand address space
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明之領域一般係關於電腦處理器架構,尤其更關於當被執行時造成一特定結果的指令。
許多新式的處理器具有不同的特權位準,其決定一特定實體可以或不可以執行什麼。這樣的共識係將特權位準分成不同的環(ring)。如第1圖所示,ring 0擁有最高的特權位準,因此,在ring 0中(特權位準0或核心模式)執行的程式可與系統一起處理任何事務,而在ring 3中(使用者模式)中執行的程式碼具有較少特權,因此會受限於其能力。分開特權可保護一個ring 3的應用程式不受到另一個ring 3的應用程式影響,且保護ring 0核心不受到ring 3的應用程式影響。ring 3的應用程式應該能在任何時間失效而不影響其餘的電腦系統,因為ring 0核心可使用使電腦持續運行的重要工作,而非ring 3應用程式。ring 1與ring 2比ring 0更受到限制,但比ring 3所受的限制少。
這些位準藉由軟體來保護硬體免於系統環境的意外或蓄意之毀壞(以及系統安全相關的侵害)。只有系統軟體之「受信任」部份能被允許在不受限制之核心模式環境中執行,且只有之後絕對被需要。所有其他的軟體係執行在一或多個使用者模式中。
在下面的敘述中提出了許多具體的細節。然而,應了解沒有這些特定的細節仍可實施本發明之實施例。在其他例子中,並未詳細顯示熟知的電路、結構和技術,以免模糊對本敘述的理解。
在本說明書中提到的「一個實施例」、「一實施例」、「一具體實施例」、等等,係表示所述之實施例可能包括一特定特徵、結構、或特性,但每個實施例可不必包括此特定特徵、結構、或特性。此外,這樣的說法不必指相同的實施例。又,當說明與實施例相關之特定特徵、結構、或特性時,應認為無論是否明確地說明,其在熟悉本領域之技術者的理解內能影響這類與其他實施例相關之特徵、結構、或特性。
現今多數,假如並非所有的OS,會支援多個執行緒在一單一位址空間中執行。在處理器、CPU或一核心中的執行緒具體資訊係稱作執行緒序文。執行在一CPU上的執行緒之前,作業系統有責任確保正確的執行緒會在此特定CPU上出現。當作業系統從一執行緒切換到另一執行緒來切換執行緒序文時,這一般係指序文切換。作業系統也提供一些機制來提供執行緒去執行特定儲存,稱作執行緒特定儲存。在x86處理器上,FS及/或GS區段暫存器係用來存取執行緒特定儲存。當存取資料以及執行緒獨有的資料組時,藉由使用一區段暫存器,每個執行緒可使用相同的區段與偏移量。在許多以IA32及Intel64為基礎的作業系統或其類似系統中,經常只有使用非零基礎的非最大限度區段。區段描述符號係部份的執行緒序文,且必須是與其餘執行緒序文一起切換的序文。許多作業系統共享了在系統中之所有執行緒間的相同ring 0或核心位址空間。這些作業系統將時常對他們在ring 3或使用者模式下的核心進行不同的執行緒特定儲存。在核心中,執行緒特定儲存實際上會成為一邏輯處理器特定儲存且會包含此處理器獨有的資訊。這些作業系統必須在環轉變上改變區段描述符號,以及修改用於序文交換碼中的使用者碼的區段描述符號。
當引進x86架構(Intel64)的64位元變數時,除了FS與GS區段暫存器之外,會從64位元模式中移除區段。這裡不會增加區段描述符號來支援較大的位址空間。他們留下8位元組描述符號且僅支援一個32位元的基址。許多作業系統與在頂部的核心位址空間以及在底部的使用者位址空間分享虛擬位址空間。此外,核心邏輯處理器具體資料必須在核心位址空間中,而執行緒具體資料必須在使用者位址空間中。即使翻轉使用者和核心位址空間,這也不可能只利用一個32位元基址來達成。需要其他機制來將這些區段放置在64位元模式中所支援的48位元之虛擬位址空間中的任何地方。所實作的機制會提供兩個MSR:IA32_FS_BASE MSR(C0000100H)與IA32_GS_BASE MSR(C0000101H),其映射對應區段的基址。區段之基址可藉由簡單地寫入這些MSR來改變。RDMSR與WRMSR為使用者位準碼不可使用的特權指令,其允許寫入64位元。SWAPGS指令也簡化在環轉變上的核心模式與使用者模式之GS區段之間的切換。RDMSR、WRMSR及SWAPGS指令係限制在ring 0或核心模式,以確保ring 3的應用程式不能使用對於操作整個作業系統係很重要的MSR。上述指令係受限於ring 0,這個限制人為地限制ring 3的應用程式去修改FS與GS區段的能力。因此,對於目前的IA系統,會限制應用程式產生一系統呼叫或改變區段描述符號來切換FS或GS基址。當涉及環轉變時,系統呼叫係緩慢的,且由於區段描述符號僅持有32位元的區段基址(如先前所述),因而限制這兩個區段基址值為最低的4GB,其在64位元系統中是極小部份之可使用的位址空間,並限制區段描述符號之總數量小於8K。傳統的x86處理器也包括兩個系統表暫存器:全域描述符號表暫存器(GDTR)與區域描述符號表暫存器(LDTR)。兩個暫存器皆儲存一個32或64位元的線性基址。
對於在序文切換之間只執行少量工作的執行緒,系統呼叫、序文切換和之後回到使用者模式碼通常係每次運行的執行緒所要進行的主要工作部份。這個問題的一種可能解決方法係使用者模式執行緒,這裡的執行緒之間的序文切換會在使用者模式碼中完成。這些使用者模式執行緒中的每一個都需要自己的執行緒特定儲存之唯一副本。沒有他們自己的唯一副本,使用者模式執行緒就必須受限於一單一的OS執行緒(當他們在OS執行緒間移動時,執行緒特定儲存將不會跟隨他們),即使之後與多個不知彼此使用相同的儲存之實體一起發出。
在多數現存的系統中,從「使用者模式」切換到「核心模式」係非常耗費資源的。如此而論,上述讀取區段暫存器和寫入區段暫存器的方式係過於理想化的。下面是系統、架構、等等之詳細實施例,不管在64位元模式中目前的特權位準,這些實施例可被用來執行讀和寫如IA32_GS_BASE或IA32_FS_BASE之區段基址暫存器的指令。這些指令可為部份的特權位準3程式。
特權位準不可知論的寫指令之一實施例係為「WRGSBASE RAX」,這裡的「RAX」是一個暫存器或記憶體運算元,其包含會寫入GS區段基址暫存器中的一個64位元資料值。WRGSBASE係運算碼且識別IA32_GS_BASE暫存器。執行這個指令相當於將RAX暫存器的資料寫入GS區段基址暫存器中。同樣地,WRFSBASE RAX係為當被執行時會將RAX的資料寫入FS區段暫存器(IA32_FS_BASE)中的指令。
特權位準不可知論的讀指令之一實施例係為「RDGSBASE RAX」,這裡的「RAX」是一個暫存器或記憶體運算元,其會儲存從GS區段基址暫存器讀出的一個64位元資料。RDGSBASE係運算碼且識別IA32_GS_BASE暫存器。執行這個指令能將GS區段基址暫存器所讀取的內容裝入RAX暫存器中。同樣地,RDFSBASE RAX係為當被執行時會從FS區段基址暫存器(IA32_FS_BASE)中讀取自己的資料且使其儲存在RAX中的指令。
在一些實施例中,在執行特權不可知論的區段基址暫存器讀/寫指令之前,其中之一的作業系統、處理器、或晶片組會設定處理器可支援這類指令的指示。在第2圖中描述了設定這個指示的方法之一實施例。
在201中,不管特權位準,判斷處理器之邏輯處理器是否支援能從一或更多的處理器區段基址暫存器讀取64位元值及/或寫入64位元值至處理器區段基址暫存器。一般來說,這個判斷係藉由檢查處理器之一CPUID特性旗標來達成,其指示有支援。
若無支援,則在203中使用較少效率之手段來讀取/寫入區段基址暫存器。若有支援,則在一控制暫存器中設定至少一旗標來指示有支援這些指令類型。例如,在一些實施例中控制暫存器4具有一個設定這個指示的旗標。當然,為此目的也可使用其他暫存器。
第3圖說明一區段基址暫存器讀/寫的方法之實施例。在301中,判斷特權不可知論的區段基址暫存器讀/寫指令是否被致能。例如,若使用了一控制暫存器,如在x86架構中的控制暫存器4,則檢查對應的旗標以察看支援什麼。若有支援特權不可知論的區段基址暫存器讀/寫指令,則當取得這些指令時便在313中處理。
若不支援特權不可知論的區段基址暫存器讀/寫指令,則在303中判斷特權位準邏輯處理器是否在特權位準0。如上詳述,特權位準0表示對於什麼可被執行只有很少限制,如果有的話。若是這個特權位準,則可在305中,使用各自的RDMSR或WRMSR特權指令來從/至IA32_GS_BASE或IA32_FS_BASE讀/寫,以在64位元模式中更新GS和FS基址。
若特權位準大於0,則在307中切換成特權位準0。一旦在特權位準0中,便可在309中使用各自的RDMSR或WRMSR特權指令來從/至IA32_GS_BASE或IA32_FS_BASE讀/寫,以在64位元模式中更新GS和FS基址。完成這個動作之後,便在311中切換回先前的特權位準。當然,這樣會增加明顯的效能耗損。
第4圖說明處理一特權不可知論的區段基址暫存器寫指令的方法之實施例。在這個示範方法的任一步驟之前,可能已經確定有支援此指令。在401中,接收特權不可知論的區段基址暫存器寫指令。這個指令包括一運算元,其包括被寫入區段基址暫存器(例如,IA32_GS_BASE或IA32_FS_BASE)中的64位元資料。這個運算元可以是一記憶體位址或一暫存器,但通常是一暫存器。
在403中,藉由解碼邏輯來解碼特權不可知論的區段基址暫存器寫指令,並在405中取得運算元資料。例如,若運算元係為如RAX的暫存器,則取得暫存器中的資料。
在407中,不管目前的特權位準,執行特權不可知論的區段基址暫存器寫指令,以將已取得的資料寫入適當的區段基址暫存器中。
第5圖說明處理一特權不可知論的區段基址暫存器讀指令的方法之實施例。在這個示範方法的任一步驟之前,已經確定有支援此指令。在501中,接收特權不可知論的區段基址暫存器讀指令。這個指令包括一運算元,其識別用來儲存從區段MSR所讀取之64位元資料(例如,IA32_GS_BASE或IA32_FS_BASE)的位置。這個運算元可以是一記憶體位址或一暫存器。
在503中,藉由解碼邏輯來解碼特權不可知論的區段基址暫存器讀指令。例如,若運算元係為如RAX的暫存器,則取得暫存器中的資料。
在505中,不管目前的特權位準,執行特權不可知論的區段基址暫存器讀指令,以讀取在適當之基址暫存器中的資料。接著,在507中,將資料儲存至運算元所定義的位置。
以下詳述可執行上述指令的設備和系統之實施例。第6圖係根據本發明之一實施例之一核心之亂序架構實例之方塊圖。然而,上述指令也可在一有序架構中執行。在第6圖中,箭頭表示在兩個或更多單元間的連接,且箭頭方向指示出在那些單元之間的資料流向。這個架構的元件可用來處理以上詳述之指令,包括取得、解碼、及執行這些指令。
第6圖包括一耦接至一執行引擎單元610及一記憶體單元615的前端單元605;執行引擎單元610更耦接至記憶體單元615。
前端單元605包括一第一層(L1)分支預測單元620,其耦接至一第二層(L2)分支預測單元622。這些單元允許核心無須等待解析一分支,便能取得並執行指令。L1及L2分支預測單元620、622係耦接至一L1指令快取單元624。L1指令快取單元624持有執行引擎單元610可能會執行的指令或一或更多個執行緒。
L1指令快取單元624係耦接至一指令轉譯旁視緩衝區(ITLB)626。ITLB 626係耦接至一指令取得與預解碼單元628,其將位元組流分離成分開的指令。
指令取得與預解碼單元628係耦接至一指令佇列單元630以儲存這些指令。一解碼單元632解碼在佇列中的包括上述指令之指令。在一些實施例中,解碼單元632包含一複雜解碼器單元634以及三個簡單解碼器單元636、638及640。簡單解碼器可處理大部份,若並非全部的話,解碼成單一微指令的x86指令。複雜解碼器可解碼映射到多個微指令的指令。解碼單元632也可包括一微碼ROM單元642。
L1指令快取單元624更耦接至在記憶體單元615中的一L2快取單元648。指令TLB單元626更耦接至在記憶體單元615中的一第二層TLB單元646。解碼單元632、微碼ROM單元642、及一迴圈串流偵測器(LSD)單元644皆耦接至在執行引擎單元610中的一更名/分配器單元656。LSD單元644偵測到當在軟體中的一迴圈被執行時,便停止預測分支(及可能錯誤預測最新的迴圈分支),以及不在內的流指令。在一些實施例中,LSD 644會儲存微指令。
執行引擎單元610包括更名/分配器單元656,其係耦接至一回收單元674及一聯合排程器單元658。更名/分配器單元656確定在任何暫存器更名之前所需要的資源並分配可用於執行的資源。這個單元也將邏輯暫存器改名為實體暫存器檔案的實體暫存器。
回收單元674更耦接至執行單元660且包括一重排序緩衝區單元678。這個單元在完成指令後會回收指令。
聯合排程器單元658更耦接至一耦接至執行單元660的實體暫存器檔案單元676。這個排程器係共享於執行在處理器上的不同執行緒之間。
實體暫存器檔案單元676包含一MSR單元677A、一浮點暫存器單元677B、及一整數暫存器單元677C,且可包括圖中未示的額外暫存器檔案(例如,在以MMX封裝的整數平面暫存器檔案550上化名的純量浮點堆疊暫存器檔案545)。MSR單元包括IA32_GS_BASE和IA32_FS_BASE暫存器。
執行單元660包括三個混合純量及SIMD執行單元662、664、及672、一負載單元666、一儲存位址單元668、一儲存資料單元670。負載單元666、儲存位址單元668、及儲存資料單元670進行負載/儲存和記憶體操作,且每個更耦接至在記憶體單元615中的一資料TLB單元652。
記憶體單元615包括耦接至資料TLB單元652的第二層TLB單元646。資料TLB單元652係耦接至一L1資料快取單元654。L1資料快取單元654更耦接至一L2快取單元648。在一些實施例中,L2快取單元648更耦接至在記憶體單元615內部及/或外部的L3和更高層的快取單元650。
下列是適合用來執行這裡詳述之指令的系統實例。在本領域中對於膝上型電腦、桌上型電腦、手攜式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持裝置、及各種其他電子裝置之所知的其他系統設計與架構也同樣合適的。一般來說,能夠合併一處理器及/或如在此所述之其他執行邏輯的多種系統或電子裝置通常都係合適的。
現在參考第7圖,其顯示依照本發明一實施例之一系統700之方塊圖。系統700可包括一或更多處理元件710、715,其耦接至圖形記憶體控制器集線器(GMCH)720。從第7圖中顯示的虛線可看出,額外的處理元件715是非必須的。
每個處理元件可以是單核心或包括多個核心。除了處理核心,處理元件可選擇性地包括其他晶片上元件,如整合記憶體控制器及/或整合I/O控制邏輯。同樣地,對至少一實施例來說,處理元件的核心可具有多執行緒,使每個核心包括一個以上的硬體執行緒序文。
第7圖說明GMCH 720可耦接至記憶體740,例如,可以是一動態隨機存取記憶體(DRAM)。對至少一實施例來說,DRAM可與一非揮發性快取相關。
GMCH 720可以是晶片組或部份的晶片組。GMCH 720可與處理器710、715溝通,並控制處理器710、715與記憶體740之間的互動。GMCH 720也可充當處理器710、715與系統700之其他元件之間的加速匯流排介面。在至少一實施例中,GMCH 720係經由一多點下傳匯流排,如前端匯流排(FSB)795,來與處理器710、715溝通。
再者,GMCH 720係耦接至一顯示器745(如平板顯示器)。GMCH 720可包括一整合圖形加速器。GMCH 720更耦接至一輸入/輸出(I/O)控制器集線器(ICH)750,其可用來將各種週邊裝置耦接至系統700。例如在第7圖之實施例中係顯示一外部圖形裝置760,其可以是與另一個週邊裝置770一起耦接至ICH 750的分離圖形裝置。
選擇性地,額外或不同的處理元件也可在系統700中出現。例如,額外的處理元件715可包括與處理器710相同的額外處理器、與處理器710不同型或不對稱的額外處理器、加速器(例如,圖形加速器或數位信號處理器(DSP)單元)、場域可程式化閘陣列、或任何其他的處理元件。就不同的規制標準而言,在實體資源710、715之間可能有多種差異,包括架構、微型架構、熱量、功率消耗特性等等。這些差異可明顯表示其在處理元件710、715之間是不對稱且異質性的。對於至少一實施例,各種處理元件710、715可存在於同一個晶片封裝中。
現在參考第8圖,其顯示依照本發明之一實施例之一第二系統800之方塊圖。如第8圖所示,多處理器系統800係為一點對點互連系統,且包括經由一點對點互相連線850來耦接的一第一處理元件870與一第二處理元件880。如第8圖所示,每個處理器元件870和880可為多核心處理器,包括第一和第二處理器核心(意即,處理器核心874a和874b以及處理器核心884a和884b)。
選擇性地,一或更多處理元件870、880可以是除了處理器之外的元件,如加速器或場域可程式化閘陣列。
儘管只顯示兩個處理元件870、880,但熟習於本項技術之人士了解不以此為限。在其他實施例中,一或多個額外的處理元件可在已知的處理器中出現。
第一處理元件870更可包括一記憶體控制器集線器(MCH)872及點對點(P-P)介面876與878。同樣地,第二處理元件880可包括一MCH 882及P-P介面886與888。處理器870、880可使用點對點(PtP)介面電路878、888經由PtP介面850來交換資料。如第8圖所示,MCH 872和882將處理器耦接至各自的記憶體,即記憶體842和記憶體844,其可為部份的區域附屬於各自處理器的主記憶體。
每個處理器870、880可使用點對點介面電路876、894、886、898經由個別的PtP介面852、854來與晶片組890交換資料。晶片組890也可經由一高效能圖形介面839來與一高效能圖形電路838交換資料。本發明之實施例可設置在任何具有任意數量的處理核心之處理器中,或在第8圖的每個PtP匯流排代理器中。在一實施例中,任何處理器核心可包括或以其他方式關聯於一區域快取記憶體(未顯示)。此外,一共用快取(未顯示)可包括在兩處理器之外的任一處理器中,但會經由p2p互相連線來與處理器連接,如此若有一處理器處於低功率模式時,任一或兩個處理器的區域快取資訊便可儲存在共用快取中。
第一處理元件870與第二處理元件880可分別經由P-P互相連線876、886和884來耦接至晶片組890。如第8圖所示,晶片組890包括P-P介面894和898。此外,晶片組890包括一介面892來將晶片組890耦接於高效能圖形引擎838。在一實施例中,可使用匯流排849來將圖形引擎838耦接至晶片組890。另外,點對點互相連線894可耦接這些元件。
反過來,晶片組890可經由一介面896耦接至一第一匯流排816。在一實施例中,第一匯流排816可以是一週邊元件互連(PCI)匯流排,或是如PCI-Express匯流排或另一個第三代I/O互連匯流排的匯流排,但不以此限制本發明之範圍。
如第8圖所示,各種I/O裝置814可與將第一匯流排816耦接至第二匯流排820的匯流排橋接器818一起耦接至第一匯流排816。在一實施例中,第二匯流排820可以是一低針腳數(LPC)匯流排。一實施例中,各種裝置可耦接至第二匯流排820,例如包括一鍵盤/滑鼠822、通訊裝置826及一可包括碼字830的資料儲存單元828,如磁碟驅動器或其他大量儲存裝置。再者,音頻I/O裝置824可耦接至第二匯流排820。請注意可能為其他架構。例如,系統可實作一多點下傳匯流排或其他類似架構來代替第8圖之點對點架構。
現在參考第9圖,其顯示依照本發明之一實施例之一第三系統900之方塊圖。就像第8圖和第9圖的元件,具有一樣的參考編號,且其省略了第8圖的某部份架構,以避免混淆第9圖的其他架構。
第9圖說明處理元件870、880分別可包括整合記憶體和I/O控制邏輯(「CL」)872和882。對至少一實施例來說,CL 872,882可包括如上所述與第7、8圖有關之記憶體控制集線器(MCH)邏輯。此外,CL 872、882也可包括I/O控制邏輯。第9圖說明不只記憶體842、844耦接至CL 872、882,I/O裝置914也耦接至控制邏輯872、882。傳統式I/O裝置915係耦接至晶片組890。
本文實施例中所揭露的機制可由硬體、軟體、韌體、或上述之組合方法來實作。本發明之實施例可實作成執行在可程式化系統上的電腦程式或程式碼,其中此可程式化系統包括至少一處理器、一資料儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、以及至少一輸出裝置。
程式碼,如在第8圖中說明的碼字830,可被輸入資料使用以執行本文描述的功能並產生輸出資訊。可以已知的方式來將輸出資訊應用到一或多個輸出裝置。為了這個應用的目的,處理系統包括任何具有一處理器之系統,例如,一數位信號處理器(DSP)、一微控制器、一專用積體電路(ASIC)、或一微處理器。
程式碼可以一高階程序或物件導向程式語言來實作,以與處理系統溝通。若需要的話,程式碼也可以組合或機器語言來實作。事實上,本文敘述的機制不會受限於此領域的任何特定程式語言。任何情況下,語言可以是一已編譯或已翻譯之語言。
至少一實施例可藉由儲存在機器可讀媒體中的代表資料來實作,其描述在處理器內的各種邏輯,當機器讀取時,會使機器組裝邏輯來執行本文描述的技術。這樣的表現,稱為「IP核心」,可儲存在一有形的機器可讀媒體並提供給各種顧客或製造廠來下載至實際產生此邏輯或處理器的製造機器中。
這類的機器可讀儲存媒體可包括,但不限於,一機器或裝置製造或形成的微粒之非暫時性且有形的排列,包括如硬碟和任何型態之磁碟的儲存媒體,所述之磁碟包括軟碟、光碟、唯讀光碟記憶體(CD-ROM)、可抹寫光碟(CD-RW)、及磁光碟、半導體裝置,如唯讀記憶體(ROM)、如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電子可抹除可程式化唯讀記憶體(EEPROM)、磁或光學卡、或可適用於儲存電子指令的任何其他型態之媒體。
因此,本發明之實施例也包括非暫時性、有形的機器可讀媒體,其內含指令或包含設計資料,如HDL,其定義本文描述的結構、電路、設備、處理器及/或系統特徵。這樣的實施例也可係指程式產品。
本文揭露的一些指令之操作可藉由硬體元件來進行,且可被編入機器可執行指令中,其用來導致,或至少造成,一電路或其他利用指令所編程之硬體元件來進行此操作。電路可包括一通用或專用處理器,或邏輯電路,去列舉一些例子。此操作也可選擇性地藉由組合硬體與軟體來進行。執行邏輯及/或處理器可包括專用或特定電路或其他邏輯,其回應機器指令或一或多個源於機器指令之控制信號,以儲存一指令指定的結果運算元。例如,本文揭露的指令之實施例可在第7圖,第8圖和第9圖中的一或多個系統中執行,且指令之實施例可儲存在會在系統中被執行的程式碼中。
上面敘述內容係用來說明本發明之較佳實施例。由上述討論中,應該也很明顯知道,特別是在這類的技術領域中,係無法輕易預見快速且更大的成長,在不違背本發明之原理下且在所附之專利申請範圍及其等效之範圍中,熟習本領域之技術者可修改本發明之配置和細節。例如,可結合或分開一種方法中的一或多個操作。
儘管已說明可執行本文所述之指令的實施例,本發明之另一實施例可透過在執行不同指令集(例如,執行美國加州Sunnyvale的MIPS科技之MIPS指令集的處理器、執行美國加州的ARM科技之ARM指令集的處理器)的處理器上模擬運行情況來執行指令。同樣地,儘管圖示中的流程圖顯示了本發明之一些實施例所進行的操作有特定順序,但應可了解到這樣的順序只是示範用的(例如,另一實施例可以不同順序來進行操作、合併某些操作、重疊某些操作、等等)。
在上面敘述中,為了說明,已經提出許多具體細節來全面性了解本發明之實施例。然而將可以了解到,熟習本領域之技術者無需某些的具體細節便可實作出一或多個其他的實施例。所述之特定實施例不會限制本發明,但可用來說明本發明之實施例。本發明之範圍不是由上面提出的具體實例來決定,而是僅藉由以下的申請專利範圍來決定。
610...執行引擎單元
615...記憶體單元
605...前端單元
620...L1分支預測單元
622...L2分支預測單元
624...L1指令快取單元
626...指令轉譯旁視緩衝區單元
628...指令取得與預解碼單元
630...指令佇列單元
632...解碼單元
634...複雜解碼器單元
636、638、640...簡單解碼器單元
642...微碼ROM單元
648...L2快取單元
646...第二層TLB單元
644...迴圈串流偵測器單元
656...更名/分配器單元
674...回收單元
658...聯合排程器單元
678...重排序緩衝區單元
660...執行單元
676...實體暫存器檔案單元
677A...MSR單元
677B...浮點暫存器單元
677C...整數暫存器單元
550...整數平面暫存器檔案
545...純量浮點堆疊暫存器檔案
662、664、672...混合純量及SIMD執行單元
666...負載單元
668...儲存位址單元
670...儲存資料單元
652...資料TLB單元
654...L1資料快取單元
648...L2快取單元
650...L3快取單元
700...系統
710、715...處理元件
720...圖形記憶體控制器集線器
740...記憶體
795...前端匯流排
745...顯示器
750...I/O控制器集線器
760...外部圖形裝置
770...週邊裝置
800...多處理器系統
850...點對點互相連線
870...第一處理元件
880...第二處理元件
874a、874b、884a、884b...處理器核心
872、882...記憶體控制器集線器
876、878、886、888、894、898...點對點介面
842、844...記憶體
852、854...PtP介面
890...晶片組
839...高效能圖形介面
838...高效能圖形電路
892、896...介面
816...第一匯流排
814...I/O裝置
820...第二匯流排
818...匯流排橋接器
822...鍵盤/滑鼠
826...通訊裝置
830...碼字
828...資料儲存單元
824...音頻I/O裝置
900...第三系統
872、882...I/O控制邏輯
914...I/O裝置
915...傳統式I/O裝置
本發明係藉由實例方式來說明,且不受限於附圖,其中類似的參考指示相似的元件,且其中:
第1圖說明一一般特權位準架構。
第2圖說明設定一支援指示的方法之實施例。
第3圖說明一區段基址暫存器讀/寫的方法之實施例。
第4圖說明處理一特權不可知論的區段基址暫存器寫指令之方法之實施例。
第5圖說明處理一特權不可知論的區段基址暫存器讀指令之方法之實施例。
第6圖係根據本發明之實施例之一核心之亂序架構實例之方塊圖。
第7圖顯示依照本發明一實施例之一系統之方塊圖。
第8圖顯示依照本發明一實施例之一第二系統之方塊圖。
第9圖顯示依照本發明一實施例之一第三系統之方塊圖。
Claims (16)
- 一種在電腦處理器中進行特權不可知論的區段基址暫存器寫指令之方法,包含:取得該特權不可知論的區段基址暫存器寫指令,其中該特權不可知論的區段基址暫存器寫指令包括一64位元資料來源運算元;解碼已取得之該特權不可知論的區段基址暫存器寫指令;及不管現行的特權位準,執行已解碼之該特權不可知論的區段基址暫存器寫指令,以將該來源運算元之64位元資料寫入由該特權不可知論的區段基址暫存器寫指令之運算碼所識別的區段基址暫存器中。
- 如申請專利範圍第1項所述之方法,其中該區段基址暫存器係為IA32_FS_BASE。
- 如申請專利範圍第1項所述之方法,其中該區段基址暫存器係為IA32_GS_BASE。
- 如申請專利範圍第1項所述之方法,其中該特權不可知論的區段基址暫存器寫指令係為部份的一特權位準3程式。
- 如申請專利範圍第1項所述之方法,更包含:藉由檢查該電腦處理器的一CPUID特性旗標來確定該電腦處理器可支援該特權不可知論的區段基址暫存器寫指令。
- 如申請專利範圍第5項所述之方法,更包含: 在該電腦處理器中設定一旗標,其指示支援該特權不可知論的區段基址暫存器寫指令。
- 如申請專利範圍第1項所述之方法,更包含:藉由檢查該電腦處理器的一CPUID特性旗標來確定該電腦處理器不能支援該特權不可知論的區段基址暫存器寫指令;及在該電腦處理器中設定一旗標,其指示無支援該特權不可知論的區段基址暫存器寫指令。
- 一種在電腦處理器中進行特權不可知論的區段基址暫存器讀指令之方法,包含:取得該特權不可知論的區段基址暫存器讀指令,其中該特權不可知論的區段基址暫存器讀指令包括一64位元資料目的地運算元;解碼已取得之該特權不可知論的區段基址暫存器讀指令;及不管現行的特權位準,執行已解碼之該特權不可知論的區段基址暫存器讀指令,以讀取由該特權不可知論的區段基址暫存器讀指令之運算碼所識別之該區段基址暫存器的該64位元資料,並將該64位元資料儲存到由該64位元資料目的地運算元所識別的位置。
- 如申請專利範圍第8項所述之方法,其中該區段基址暫存器係為IA32_FS_BASE。
- 如申請專利範圍第8項所述之方法,其中該區段基址暫存器係為IA32_GS_BASE。
- 如申請專利範圍第8項所述之方法,其中該特權不可知論的區段基址暫存器讀指令係為部份的一特權位準3程式。
- 如申請專利範圍第8項所述之方法,更包含:藉由檢查該電腦處理器之一CPUID特性旗標來確定該電腦處理器可支援該特權不可知論的區段基址暫存器讀指令。
- 如申請專利範圍第12項所述之方法,更包含:在該電腦處理器中設定一旗標,其指示支援該特權不可知論的區段基址暫存器讀指令。
- 如申請專利範圍第1項所述之方法,更包含:藉由檢查該電腦處理器的一CPUID特性旗標來確定該電腦處理器不能支援該特權不可知論的區段基址暫存器讀指令;及在該電腦處理器中設定一旗標,其指示無支援該特權不可知論的區段基址暫存器讀指令。
- 一種硬體設備,包含:一組指令,其包括特權不可知論的區段基址暫存器寫指令及特權不可知論的區段基址暫存器讀指令;取得邏輯,其用以取得該特權不可知論的區段基址暫存器寫指令,其中該特權不可知論的區段基址暫存器寫指令包括一64位元資料來源運算元;解碼邏輯,其用以解碼已取得之該特權不可知論的區段基址暫存器寫指令;及 執行邏輯,其用以不管現行的特權位準,執行已解碼之該特權不可知論的區段基址暫存器寫指令,以將該來源運算元之64位元資料寫入由該特權不可知論的區段基址暫存器寫指令之運算碼所識別的區段基址暫存器中。
- 如申請專利範圍第15項所述之設備,其中:該取得邏輯,其用以取得該特權不可知論的區段基址暫存器讀指令,其中該特權不可知論的區段基址暫存器讀指令包括一64位元資料目的地運算元;該解碼邏輯,其用以解碼已取得之該特權不可知論的區段基址暫存器讀指令;及該執行邏輯,其用以不管現行的特權位準,執行已解碼之該特權不可知論的區段基址暫存器讀指令,以讀取由該特權不可知論的區段基址暫存器讀指令之運算碼所識別之該區段基址暫存器的該64位元資料,並將該64位元資料儲存到由該64位元資料目的地運算元所識別的位置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/976,981 US8938606B2 (en) | 2010-12-22 | 2010-12-22 | System, apparatus, and method for segment register read and write regardless of privilege level |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201241742A TW201241742A (en) | 2012-10-16 |
TWI467475B true TWI467475B (zh) | 2015-01-01 |
Family
ID=46314326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW100141297A TWI467475B (zh) | 2010-12-22 | 2011-11-11 | 無關於特權位準的區段暫存器讀與寫的系統、設備及方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8938606B2 (zh) |
JP (1) | JP5688165B2 (zh) |
KR (1) | KR101528130B1 (zh) |
CN (1) | CN103270489B (zh) |
DE (1) | DE112011104552T5 (zh) |
GB (1) | GB2499758B (zh) |
TW (1) | TWI467475B (zh) |
WO (1) | WO2012087446A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5986585B2 (ja) * | 2011-01-21 | 2016-09-06 | トムソン ライセンシングThomson Licensing | 下位互換性アグリゲートファイルシステムの動作性能の向上方法、及び装置 |
CN104969232B (zh) | 2013-03-13 | 2018-01-12 | 英特尔公司 | 管理设备驱动器跨环访问 |
US20140310484A1 (en) * | 2013-04-16 | 2014-10-16 | Nvidia Corporation | System and method for globally addressable gpu memory |
US20150178078A1 (en) * | 2013-12-21 | 2015-06-25 | H. Peter Anvin | Instructions and logic to provide base register swap status verification functionality |
US10706143B2 (en) * | 2017-05-19 | 2020-07-07 | Intel Corporation | Techniques for secure-chip memory for trusted execution environments |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6507904B1 (en) * | 2000-03-31 | 2003-01-14 | Intel Corporation | Executing isolated mode instructions in a secure system running in privilege rings |
TW201015323A (en) * | 2008-08-26 | 2010-04-16 | Atmel Corp | Secure information processing |
TW201027336A (en) * | 2008-12-11 | 2010-07-16 | Toshiba Kk | Memory device and controlling method of the same |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3003A (en) * | 1843-03-17 | Improvement in the method of propelling vessels by means of continuous streams of water | ||
US8025A (en) * | 1851-04-08 | Apparatus eor boltiitg flouk | ||
US5418956A (en) * | 1992-02-26 | 1995-05-23 | Microsoft Corporation | Method and system for avoiding selector loads |
US5517657A (en) * | 1994-03-30 | 1996-05-14 | Intel Corporation | Segment register file read and write pipeline |
US5644755A (en) * | 1995-02-24 | 1997-07-01 | Compaq Computer Corporation | Processor with virtual system mode |
CN100373331C (zh) * | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
US6973562B1 (en) * | 2000-01-14 | 2005-12-06 | Advanced Micro Devices, Inc. | Establishing an operating mode in a processor |
US6880068B1 (en) * | 2000-08-09 | 2005-04-12 | Advanced Micro Devices, Inc. | Mode dependent segment use with mode independent segment update |
US6901505B2 (en) * | 2001-08-09 | 2005-05-31 | Advanced Micro Devices, Inc. | Instruction causing swap of base address from segment register with address from another register |
US7725687B2 (en) * | 2006-06-27 | 2010-05-25 | Texas Instruments Incorporated | Register file bypass with optional results storage and separate predication register file in a VLIW processor |
US7827390B2 (en) * | 2007-04-10 | 2010-11-02 | Via Technologies, Inc. | Microprocessor with private microcode RAM |
-
2010
- 2010-12-22 US US12/976,981 patent/US8938606B2/en active Active
-
2011
- 2011-11-09 CN CN201180062099.2A patent/CN103270489B/zh active Active
- 2011-11-09 KR KR1020137016065A patent/KR101528130B1/ko active IP Right Grant
- 2011-11-09 JP JP2013546145A patent/JP5688165B2/ja active Active
- 2011-11-09 GB GB1310309.8A patent/GB2499758B/en active Active
- 2011-11-09 DE DE112011104552T patent/DE112011104552T5/de active Pending
- 2011-11-09 WO PCT/US2011/060011 patent/WO2012087446A1/en active Application Filing
- 2011-11-11 TW TW100141297A patent/TWI467475B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6154818A (en) * | 1997-11-20 | 2000-11-28 | Advanced Micro Devices, Inc. | System and method of controlling access to privilege partitioned address space for a model specific register file |
US6507904B1 (en) * | 2000-03-31 | 2003-01-14 | Intel Corporation | Executing isolated mode instructions in a secure system running in privilege rings |
TW201015323A (en) * | 2008-08-26 | 2010-04-16 | Atmel Corp | Secure information processing |
TW201027336A (en) * | 2008-12-11 | 2010-07-16 | Toshiba Kk | Memory device and controlling method of the same |
Also Published As
Publication number | Publication date |
---|---|
GB201310309D0 (en) | 2013-07-24 |
JP5688165B2 (ja) | 2015-03-25 |
JP2014505926A (ja) | 2014-03-06 |
WO2012087446A1 (en) | 2012-06-28 |
DE112011104552T5 (de) | 2013-09-19 |
US8938606B2 (en) | 2015-01-20 |
GB2499758B (en) | 2020-02-05 |
CN103270489B (zh) | 2016-03-02 |
KR101528130B1 (ko) | 2015-06-12 |
US20120166767A1 (en) | 2012-06-28 |
KR20130112909A (ko) | 2013-10-14 |
CN103270489A (zh) | 2013-08-28 |
GB2499758A (en) | 2013-08-28 |
TW201241742A (en) | 2012-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318407B2 (en) | Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus | |
US8874883B2 (en) | Debugging of a data processing apparatus | |
KR101738212B1 (ko) | 명령어 에뮬레이션 프로세서, 방법, 및 시스템 | |
US9092215B2 (en) | Mapping between registers used by multiple instruction sets | |
US9239801B2 (en) | Systems and methods for preventing unauthorized stack pivoting | |
CN111124498A (zh) | 用于推测执行侧信道缓解的装置和方法 | |
JP6006248B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US20150242212A1 (en) | Modeless instruction execution with 64/32-bit addressing | |
US20110231633A1 (en) | Operand size control | |
TWI467475B (zh) | 無關於特權位準的區段暫存器讀與寫的系統、設備及方法 | |
KR20150139931A (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
US20150134932A1 (en) | Structure access processors, methods, systems, and instructions | |
US10248574B2 (en) | Input/output translation lookaside buffer prefetching | |
US11354128B2 (en) | Optimized mode transitions through predicting target state | |
US10949207B2 (en) | Processor core supporting a heterogeneous system instruction set architecture | |
WO2019133172A1 (en) | Processor, method, and system for reducing latency in accessing remote registers | |
US20220365802A1 (en) | Virtualization of interprocessor interrupts | |
US11461099B2 (en) | System, apparatus and method for fine-grain address space selection in a processor | |
US11507368B2 (en) | Spoofing a processor identification instruction | |
WO2022266989A1 (en) | Exitless guest to host notification | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage |