TWI496076B - 上下文狀態管理技術 - Google Patents
上下文狀態管理技術 Download PDFInfo
- Publication number
- TWI496076B TWI496076B TW101147163A TW101147163A TWI496076B TW I496076 B TWI496076 B TW I496076B TW 101147163 A TW101147163 A TW 101147163A TW 101147163 A TW101147163 A TW 101147163A TW I496076 B TWI496076 B TW I496076B
- Authority
- TW
- Taiwan
- Prior art keywords
- extended
- thread
- memory
- feature
- location
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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/44—Arrangements for executing specific 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Description
本發明係有關於上下文狀態管理技術。
電腦處理器之開發時間與執行於電腦處理器上的作業系統及應用程式之開發時間通常彼此不同步。例如,新處理器設計可能每兩年發行,而新作業系統每三年發行。結果,作業系統可能無法存取新硬體中出現之特徵,從而使得此等特徵不能為應用程式所用。
依據本發明之一實施例,係特地提出一種設備,該設備包括:一處理器;一記憶體;一驅動程式模組,該驅動程式模組儲存於該記憶體中來:接收對一應用程式使用於該處理器上可利用的一擴展特徵的一呼叫;將該應用程式之執行緒登記於一對映表中,該對映表儲存於該記憶體中的一第一位置中;為該執行緒指派在該記憶體中的一擴展特徵映像位置,以用於當該擴展特徵不使用時保持該擴展特徵狀態;向該應用程式返回對該對映表中的一對映表項的一表位置參考,該對映表項對應於該記憶體中之該所指派的擴展特徵映像位置;以及向該應用程式提供一暫
存器值以提供對該擴展特徵之存取。
100‧‧‧架構
102、102(1)~102(X)、704、704(1)、704(N)‧‧‧處理器
104(1)、104(C)‧‧‧核心
106(1)、106(F)‧‧‧特徵
108、108(1)、108(E)‧‧‧擴展特徵
110(1)、110(G)‧‧‧暫存器
112‧‧‧記憶體控制器
114‧‧‧記憶體
116‧‧‧作業系統
118‧‧‧應用程式
120‧‧‧OS內核堆疊
122、122(1)、122(T)‧‧‧執行緒資料
124(1)、124(T)‧‧‧特徵映像
126‧‧‧擴展狀態驅動程式
128‧‧‧對映表
130(1)、130(X)‧‧‧擴展特徵映像
132‧‧‧輸入/輸出複合體
134‧‧‧時鐘
136‧‧‧電源
202‧‧‧表位置
206‧‧‧OS執行緒ID
210‧‧‧使用中之擴展特徵
300、400、500、600‧‧‧過程
302-310、402-408、502-508、602-614‧‧‧步驟
702‧‧‧互連單元
708‧‧‧共用快取記憶體單元
710‧‧‧系統代理單元
712‧‧‧匯流排控制器單元
714‧‧‧積體記憶體控制器單元
716‧‧‧媒體處理器
718‧‧‧積體圖形邏輯
720‧‧‧映像處理器
722‧‧‧音訊處理器
724‧‧‧視訊處理器
726‧‧‧靜態隨機存取記憶體(SRAM)單元
728‧‧‧RMU
740‧‧‧顯示單元
802‧‧‧環狀結構
900‧‧‧多處理器單元
902‧‧‧網狀
1000‧‧‧多處理器單元
1002‧‧‧點對點組態
詳細描述係參考隨附圖式來陳述。圖中,參考數字之最左位標識首次出現該參考數字之圖式。不同圖式中的相同參考數字之使用指示相似或相同的項目或特徵。
圖1例示出包含處理器及擴展狀態驅動程式之架構,該擴展狀態驅動程式經組配來當擴展特徵不受作業系統支援時向執行於處理器上的應用程式提供存在於處理器中之擴展特徵。
圖2描繪說明性對映表,該對映表可由擴展狀態驅動程式使用來允許應用程式使用擴展特徵。
圖3係說明性過程,該過程使用擴展狀態驅動程式來使得新狀態能夠向應用程式提供對擴展特徵之存取。
圖4係說明性過程,該過程使用擴展狀態驅動程式來上下文切換出執行緒。
圖5係說明性過程,該過程使用擴展狀態驅動程式來上下文切換入執行緒。
圖6係提供上下文切換之另一說明性過程。
圖7係執行上下文切換之說明性系統的方塊圖。
圖8係說明性多處理器單元的示意圖,該單元使用佈置為環狀結構之互連。
圖9係說明性多處理器單元的示意圖,該單元使用佈置為網狀之互連。
圖10係說明性多處理器單元的示意圖,該單元使
用以點對點組態佈置之互連。
架構
電腦處理器或「處理器」經設計來執行儲存於記憶體中之指令及基於彼等指令來執行一或多個各種操作。隨著產生連續數代處理器,設計師可增加擴展特徵。此等擴展特徵可包含暫存器、操作等,該等擴展特徵依靠出現於特定代處理器中的額外硬體。作業系統包括可執行指令,該等可執行指令管理處理器內的或耦接至處理器之硬體、處理資料輸入及輸出,或以其他方式提供其他應用程式之執行環境。
處理器、作業系統及應用程式可具有不同開發時間線,且可能無法同時發行。此外,產生及維護作業系統之軟體開發者可能直至新處理器設計已可用於測試、除錯、銷售等之後才可利用新處理器中之特定擴展特徵。
本文描述用於使得應用程式能夠利用不受下層作業系統支援的擴展特徵之裝置及技術。在一個實行方案中,需要擴展特徵且僅利用OS上下文切換服務之應用程式可使用本文之裝置及技術而被允用。此允許軟體開發者在不等待作業系統開發者實現作業系統中之擴展特徵之狀況下利用此等新特徵。應用程式可因此自此等擴展特徵受益,從而可最小化執行計算任務之時間、減少功率消耗、實現新功能等。
圖1例示出架構100,該架構包含一或多個處理器102。此等處理器可為微處理器、中央處理器、圖形處理器等。每一處理器102又可包括一或多個核心104(1)、核心104(2)、...、核心104(C)。如本文所使用的,諸如(C)之括號中的字母為大於或等於1之正整數。每一核心104包括一組處理元件,諸如邏輯閘及其他電路,該等處理元件接受輸入信號及產生輸出信號。每一核心104可提供一組特徵106(1)、106(2)、...、106(F)及一組擴展特徵108(1)、108(2)、...、108(E)。特徵106及擴展特徵108可實施為具體邏輯元件,該等邏輯元件經組配來響應於輸入而提供特定輸出。該組特徵106可為在前幾代處理器中可利用之特徵。擴展特徵108為較新的、已在特徵106之後的時間添加之特徵。此等特徵106可利用在一或多個核心104內的或與該等一或多個核心相關聯的一或多個暫存器110。
在其他實行方案中,擴展特徵108可與特徵106同時開發,但僅於產品線中之特定處理器102上提供。例如,處理器Gamma可提供特徵106,而處理器Iota提供特徵106加擴展特徵108。
當添加擴展特徵108時,亦可添加一或多個額外暫存器110(G)來支援此等擴展特徵108。暫存器110(G)為儲存元件且可為核心104之部分或耦接至核心104,從而提供儲存資料之位置。暫存器110為可讀/寫的。
記憶體控制器112將處理器102耦接至記憶體114儲存裝置,該等儲存裝置與處理器102分離。在一些實行方
案中,記憶體114可分配於「記憶體訊框」中,資料可儲存於該等記憶體訊框中。在一些實行方案中,耦接可使用一或多個導線來提供。記憶體114包括電腦可讀儲存媒體(「CRSM」),且可為可由計算裝置存取來實施儲存於該計算裝置上之指令或將資料儲存於該計算裝置內的任何可利用的實體媒體。CRSM可包含但不限於:隨機存取記憶體(「RAM」)、唯讀記憶體(「ROM」)、電可抹除可規劃唯讀記憶體(「EEPROM」)、快閃記憶體、光碟片唯讀記憶體(「CD-ROM」)、數位多功能光碟(「DVD」)或其他光碟片儲存器、磁帶卡、磁帶、磁碟片儲存器或其他磁性儲存裝置或可用於儲存期望之資訊且可由處理器102存取之任何其他媒體。
作業系統116可儲存於記憶體114內。作業系統116經組配來為了作業系統(「OS」)116及一或多個應用程式118而管理處理器102內的及耦接至該處理器102之硬體及服務。作為此管理之一部分,OS 116提供允許應用程式118存取處理器102內的特徵,諸如特定暫存器110、邏輯元件等之功能。然而,OS 116可能未必支援擴展特徵108。當擴展特徵108不受OS 116支援時,應用程式118無法存取彼等擴展特徵108。此導致應用程式118不正確地執行,或以其他方式未能如設計般操作或以低效能運行。
應用程式118為指令組,當於處理器102上執行時,該應用程式執行操作或任務。在操作期間,應用程式118及OS 116可將資料儲存於OS內核堆疊120內。OS內核堆
疊120可包括記憶體114之專用區域,該專用區域經組配來儲存資料。OS 116及應用程式118可具有多個執行緒,該等多個執行緒經組配來於處理器102上執行。來自執行緒之執行緒資料122可儲存於OS內核堆疊120內。執行緒資料122內可為特徵映像124資料,該特徵映像124資料儲存關於特徵106之資訊。OS內核堆疊120可儲存多個執行緒122(1)、執行緒122(2)、...、執行緒122(T)以及對應的特徵映像124(1)、特徵映像124(2)、...、特徵映像124(T)之資料。在一些實行方案中,特徵映像124可使用XSAVE特徵來提供,該特徵可於具有由Intel Corporation開發的某些架構之處理器上利用。在此等實行方案中,特徵映像124可為XSAVE映像。
擴展狀態驅動程式126儲存於記憶體114中。在一些實行方案中,擴展狀態驅動程式126亦可實施為硬體邏輯。擴展狀態驅動程式126允許應用程式118存取不受OS 116支援之擴展特徵108。擴展狀態驅動程式126提供及管理專用記憶體位置,諸如擴展特徵映像130,該擴展特徵映像在記憶體114中來儲存與擴展特徵108相關聯的處理器狀態。普通特徵106繼續將其狀態資訊儲存於OS內核堆疊120及相關聯的執行緒資料122區域內,而擴展狀態驅動程式126為擴展特徵108提供服務。
擴展狀態驅動程式126因此將允許應用程式118訪問擴展特徵108及利用相關聯的暫存器110。如以下所更詳細描述的,擴展狀態驅動程式126建立對映表128,該對
映表用於將擴展特徵映像130資料儲存於記憶體114中,在OS內核堆疊120位置之外。對映表128包括資料結構,諸如表、鏈表、陣列等,該資料結構使特定執行緒及該執行緒需要之擴展特徵108與特定擴展特徵映像130相關聯。擴展特徵映像130用於儲存關於擴展特徵108之資訊。例如,擴展特徵映像130可用於在上下文切換出執行緒(允許另一執行緒於處理器102上執行)之後儲存來自與擴展特徵108相關聯的暫存器110之資料。
在一些實行方案中,現有指令,諸如XSAVE及XRSTOR可得到增強來提供額外功能,該等功能經設計來與擴展狀態驅動程式126結合工作。例如,XSAVE可偵測暫存器中的特定值,諸如CPL3_XFEM值,及基於彼值來確定將狀態儲存於OS內核堆疊120中或是擴展特徵映像130中。在一些實行方案中,可替代堆疊使用堆資料結構。
諸如CPL3_XFEM之暫存器之使用因此允許應用程式使用OS不熟悉之特徵。諸如特徵映像124中的XFEM欄位之特定值,諸如XSAVE映像中之一或多個位元亦可用於指示XRSTOR之特殊處理,以便當XRSTOR存在時,XRSTOR查找擴展特徵映像130而非OS內核堆疊120。因此,由XFEM實現之特徵可儲存於OS內核堆疊120中,而由CPL3_XFEM實現之擴展特徵可儲存於擴展特徵映像130中,由擴展狀態驅動程式126存取。在一個實行方案中,XSAVE映像之XHEADER部分可包括用於指示特殊處理之xstate_bv[63]值、指示特定表位置之xheader[23-16]值等。
其他裝置可耦接至處理器102、記憶體114或兩者。輸入/輸出複合體132可包括一或多個裝置及邏輯元件,該等裝置及邏輯元件允許在處理器102、記憶體114與諸如周邊裝置之其他裝置之間交換資訊。例如,輸入/輸出複合體132可包括通用異步接收器/發射器裝置。時鐘134可提供定時信號來允許裝置100之一或多個部分內的電路之同步。電源136向處理器102、記憶體114、輸入/輸出複合體132、時鐘134等提供電力。
在一些實行方案中,諸如在單晶片系統中,圖1中描述之元件的若干個可安置於單一晶粒上。例如,處理器102、記憶體114、輸入/輸出複合體132、時鐘134等可安置於同一晶粒上。
圖2描繪說明性對映表128,該對映表可由擴展狀態驅動程式126使用來使得應用程式118能夠使用擴展特徵108。擴展狀態驅動程式126使用對映表128來儲存使特定執行緒與特定擴展特徵映像130相關聯之資料,其中該特定擴展特徵映像保持與擴展特徵108相關聯的資料。例如,擴展特徵映像130可含有暫存器值、指令等。
在一個實行方案中,對映表128中的單一項與單一應用程式118之執行緒對應。執行緒118可部署之各種擴展特徵108從而由同一單一項服務。該項保持指向特定擴展特徵映像130之記憶體指標,所有各種擴展特徵暫存器110可儲存於該特定擴展特徵映像中。
對映表128可實施為表、鏈表、陣列或其他資料
結構。對映表128可包括屬性,諸如表位置202、擴展標識符204、OS執行緒ID 206、位址指標208及指示哪些擴展特徵在使用中的使用中擴展特徵屬性210。表位置202表示對映表128內的特定項與其他項截然不同。例如,在一個實行方案中,表位置202可包括非零整數。
擴展標識符204可至少部分地基於架構狀態資料,該等資料由執行於處理器102上之作業系統116維護。在一個實行方案中,擴展標識符204可包括來自與執行緒相關聯的堆疊指標的值及與執行緒相關聯的控制暫存器值。指標亦可儲存於其他資料結構,諸如堆中。對於x86架構之狀況,此可包括堆疊指標與CR3暫存器之某種組合,其中CR3暫存器用於虛擬位址至實體位址之轉譯。
OS執行緒ID 206以作業系統執行緒標識符編號填充。此編號206標識執行於處理器102上之特定處理程序。例如,如此處所示之處理程序17857。位址指標208提供在記憶體114中擴展特徵映像130(1)之位置。此可包括虛擬記憶體位址或實際硬體記憶體位址。
使用中擴展特徵210屬性可用於指示允許執行緒118使用的所有擴展特徵108。例如,屬性可儲存位元,該等位元標識將要使用擴展特徵之指令。
對映表128之內容及佈置可取決於設計考量、處理器102架構等而改變。此外,以上展示之屬性作係為實例而提供,而非當作限制。例如,在一個實行方案中,可使用OS-xsave-ptr欄位,該欄位可包含資料,該資料包括:執
行緒上下文、OS內核堆疊訊框指標、CR3暫存器、XSAVE記憶體映像指標等。在一些實行方案中,與當前運行執行緒相關聯的屬性中的一些可保持於專用系統暫存器,諸如CPL3_XFEM暫存器中,該暫存器與對映表128中之資訊相關。此藉由允許執行緒在不參考對映表128之情況下存取擴展特徵來改良操作。
說明性過程
本揭示內容中描述之過程可由本文描述之裝置或由其他裝置實施。此等過程例示為邏輯流程圖中方塊之集合。方塊中的一些表示可於硬體、軟體或其組合中實施之操作。在軟體之上下文中,方塊表示儲存於一或多個電腦可讀儲存媒體上的電腦可執行指令,當由一或多個處理器執行時,該等指令執行列出的操作。通常,電腦可執行指令包含執行特定功能或實施特定抽象資料類型之例程、程式、物件、組件、資料結構及相似物。描述操作之順序不意欲解釋為限制,且任何數量的描述之方塊可以任何順序或並列地組合來實施過程。
圖3係說明性過程300,該過程使得新狀態能夠向應用程式118提供對擴展特徵108之存取。以下過程可由擴展狀態驅動程式126實施。在步驟302,擴展狀態驅動程式126接收來自應用程式118的對不受OS 116支援的擴展特徵108之呼叫。在一個實行方案中,擴展特徵108可使用OS服務以用於擴展特徵108之上下文切換及特定暫存器等。
在步驟304,應用程式118之執行緒於對映表128
中登記。在一些實行方案中,此登記呼叫可由應用程式118之所有執行緒做出或僅由應用程式118的包含擴展特徵108之執行緒做出。此登記可包含指示對映表128內用於儲存以上就圖2描述之資訊的空白位置。
在步驟306,將擴展特徵映像130指派給執行緒以用於當不使用時保持擴展特徵108狀態。標識所指派的擴展特徵映像130之資料儲存於對映表,諸如如圖2所示的指示擴展特徵映像「130(1)」之位址指標208屬性中。
在步驟308,表位置202參考自對應於所指派的擴展特徵映像130的對映表128返回至應用程式118。此表位置參考202可不由應用程式118直接參考或改變。表位置參考202可保持於應用程式118之上下文中直至上下文切換出。在上下文切換出之時刻,XSAVE指令可藉由參考表位置202參考來查找指向擴展特徵映像130之記憶體指標。例如,可返回表位置202值「1」。
在步驟310,可使用擴展狀態驅動程式126(其又使用表位置202參考)來向應用程式118提供對擴展特徵操作、擴展特徵暫存器或兩者之存取。在一些實行方案中,對擴展特徵映像130之直接存取可給予諸如XSAVE及XRESTORE之機構,該等機構可管理擴展特徵資源之保存及恢復。
圖4係使用擴展狀態驅動程式126來上下文切換出執行緒之說明性過程400。應用程式118可包括許多執行緒,每一執行緒皆具有使用處理器102執行之任務。在一些
實行方案中,多個應用程式118亦可能等待執行,從而導致許多執行緒等待在處理器102上執行。正在執行之執行緒可自處理器102「上下文切換出」。當「上下文切換出」時,執行緒並不終止,而是暫停在處理器102上執行。執行緒在暫停時之執行狀態可儲存於OS內核堆疊120、擴展特徵映像130等中。一旦暫停,則另一執行緒可在處理器102上執行。
如上所述,以下過程可由擴展狀態驅動程式126實施。在步驟402,接收對上下文切換出運行於處理器102上的應用程式118之執行緒的呼叫。在步驟404,將與應用程式118相關聯的一或多個暫存器110之內容寫入OS內核堆疊120中之特徵映像124中。例如,XSAVE指令可用於將內容保存至OS內核堆疊120。
在步驟406,使用對映表128中之表位置202參考將擴展特徵108之內容寫入至記憶體114中之擴展特徵映像130位置。在步驟408,將與擴展特徵映像130相關聯的對映表位置及指示特殊處理的一或多個位元寫入至OS內核堆疊120中之特徵映像124。
圖5係使用擴展狀態驅動程式進行上下文切換之說明性過程500。「上下文切換入」執行緒使處理器102執行執行緒。此執行緒可為新執行緒或先前上下文切換出之執行緒。上下文切換入可涉及恢復先前的狀態資訊,諸如在以上描述之上下文切換出操作期間保存之狀態資訊。亦如上所述,以下過程可由擴展狀態驅動程式126實施。
在步驟502,接收呼叫來上下文切換入應用程式
118之執行緒以供在處理器102上執行。在步驟504,將來自與OS內核堆疊120中的執行緒相關聯的特徵映像124之內容寫入至處理器102內與應用程式118相關聯的一或多個暫存器110中。在一些實行方案中,XRSTOR功能可用於處理此寫入。
在步驟506,當對特徵映像124之檢查確定指示特殊處理之一或多個位元存在時,將先前儲存於特徵映像124中使執行緒參考相關聯的擴展資料映像130的表位置202之一部分恢復至應用程式118。例如,將使用中擴展特徵210寫入至CPL3_XFEM暫存器中。
在步驟508,使用對映表128中之表位置202參考將相關聯的擴展資料自擴展特徵映像130恢復至擴展暫存器110。應用程式118現可存取本不受OS 116支援之擴展特徵108。
圖6係提供與擴展狀態驅動程式126及對映表128配合之上下文切換的另一說明性過程600。當一執行緒被上下文切換出且另一執行緒被上下文切換入時,上下文切換發生。在步驟602,維護與擴展特徵108相關聯的記憶體位置,其中記憶體位置儲存擴展特徵108資料(如,由擴展特徵108訪問之特定暫存器110)。在一些組態中,可鎖定記憶體位置以便僅OS 116之特定處理程式或處理程序可改變記憶體位置中之資料。
在步驟604,建立處理程序複製處理程式及處理程序終止系統處理程式之回呼函式,其中回呼函式經組配
來操縱記憶體位置。在一些實行方案中,處理程式可包括OS 116之功能。
在步驟606,接收來自執行緒的啟用擴展特徵108之呼叫。在一個實行方案中,可藉由EDX:EAX位元向量來呼叫執行緒,該位元向量指特定處理器暫存器,其中處理器102實施x86架構。
在步驟608,至少部分地響應於該呼叫,藉由將擴展特徵108與儲存於記憶體位置中的擴展特徵資料對映來填充對映表128。例如,擴展特徵資料可儲存於記憶體114中的擴展特徵映像130中。
在步驟610,為執行緒提供服務,且設定指示擴展特徵108在使用中之一或多個位元。例如,可以一或多個位元填充使用中擴展特徵210屬性,該等一或多個位元指示擴展特徵108在使用中,且在一些實行方案中指示擴展特徵108係什麼。例如,CPL3_XFEM暫存器可設定至非零值。在步驟612,藉由接收信號,諸如報時信號(time tick)、中斷或來自執行緒的指示(指示該執行緒正等待資源變得可用)來發起上下文切換。例如,可至少部分地由於自時鐘134接收之定時脈衝來產生報時信號。
在步驟614,至少部分地響應於上下文切換之發起,與擴展特徵108相關聯的暫存器110之狀態在上下文切換期間保存於記憶體位置中之擴展特徵資料中。上下文切換可由OS 116中之處理程序發起。繼續該實例,來自暫存器110的用於擴展特徵108之資料可儲存於擴展特徵映像
130中。
圖7係說明性系統700的方塊圖,該系統執行在不對稱核心之間的程式碼之遷移。此系統可實施為單晶片系統(SoC)。互連單元702耦接至:一或多個處理器704,該等一或多個處理器包含一或多個核心104(1)-(N)的組及共用快取記憶體單元708;系統代理單元710;匯流排控制器單元712;整合式記憶體控制器單元714;一組或一或多個媒體處理器716,該等媒體處理器可包含整合式圖形邏輯718,用於提供靜止及/或視訊攝影機功能之映像處理器720,用於提供硬體音訊加速之音訊處理器722,及用於提供視訊編碼/解碼加速之視訊處理器724;靜態隨機存取記憶體(SRAM)單元726;直接記憶體存取(DMA)單元728;以及顯示單元740,其用於耦接至一或多個外部顯示器。在一個實行方案中,RMU 108、二元分析單元122或兩者可經由互連702耦接至核心706。
處理器704可包括一或多個核心104(1)、104(2)...104(C)。核心104可耦接至一或多個快取記憶體單元704(1)、704(2)...704(N)。在一些實行方案中,處理器704可包括單一類型之核心,而在其他實行方案中,處理器704可包括兩個或兩個以上截然不同類型之核心。每一核心可包含為各自的核心執行各種任務的邏輯之例項。邏輯可包含專用電路、邏輯單元、微碼或相似物中的一或多者。
共用快取記憶體單元708的組可包含:一或多個中間級快取記憶體,諸如2級(L2)、3級(L3)、4級(L4)或其
他級的快取記憶體;末級快取記憶體(LLC)及/或其組合。系統代理單元710包含協調及操作核心104(1)-(C)之組件。系統代理單元710可包含,例如,功率控制單元(PCU)及顯示單元。PCU可為或包含調節核心104(1)-(C)及整合式圖形邏輯718的功率狀態所需要之邏輯及組件。顯示單元用於驅動一或多個外部連接的顯示器。
圖8係說明性多處理器單元800的示意圖,該單元使用佈置為環狀結構802之互連。環狀結構802可適合在處理器102(1)、102(2)、...、102(X)之間交換資料。在給定處理器102內,多個核心104(1)、104(2)、...、104(C)亦可以環狀結構互連。
圖9係說明性多處理器單元900的示意圖,該單元使用佈置為網狀902之互連。網狀902可適合在處理器102(1)與耦接至該處理器102(1)的其他處理器102(2)、102(3)、...、102(X)之間交換資料或在處理器之任何組合之間交換資料。在給定處理器102內,多個核心104(1)、104(2)、...、104(C)亦可以網狀結構互連。
圖10係說明性多處理器單元1000的示意圖,該單元使用以點對點組態1002佈置之互連。點對點組態1002可適合在處理器102(1)、102(2)、...、102(X)之任何組合之間交換資料。在給定處理器102內,多個核心104(1)、104(2)、...、104(C)亦可以點對點組態互連。
結論
雖然已使用專門針對結構特徵及/或方法行為之
語言描述了主題,但應瞭解,在附加的申請專利範圍中界定之標的不必限於所描述之特定特徵或行為。確切言之,特定特徵及行為揭示為實施申請專利範圍之說明性形式。例如,方法行為不需要以本文描述之順序或組合來執行,且可以一或多個行為之任何組合來執行。
100‧‧‧架構
102‧‧‧處理器
104(1)、104(C)‧‧‧核心
106(1)、106(F)‧‧‧特徵
108(1)、108(E)‧‧‧擴展特徵
110(1)、110(G)‧‧‧暫存器
112‧‧‧記憶體控制器
114‧‧‧記憶體
116‧‧‧作業系統
118‧‧‧應用程式
120‧‧‧OS內核堆疊
122‧‧‧執行緒資料
122(1)、122(T)‧‧‧執行緒資料
124(1)、124(T)‧‧‧特徵映像
126‧‧‧擴展狀態驅動程式
128‧‧‧對映表
130(1)、130(X)‧‧‧擴展特徵映像
132‧‧‧輸入/輸出複合體
134‧‧‧時鐘
136‧‧‧電源
Claims (20)
- 一種使用擴展特徵之設備,該設備包含:一處理器;一記憶體;一驅動程式模組,該驅動程式模組儲存於該記憶體中用來:接收對一應用程式的一呼叫,以使用於該處理器上可利用的一擴展特徵;將該應用程式之一執行緒登記於一對映表中,該對映表儲存於該記憶體的一第一位置中;為該執行緒指派該記憶體的一擴展特徵映像位置,以用於當該擴展特徵不使用時保持該擴展特徵之一狀態;向該應用程式返回對該對映表中的一對映表項的一表位置參考,該對映表項對應於該記憶體中之該所指派的擴展特徵映像位置;以及向該應用程式提供一暫存器值以提供對該擴展特徵之存取。
- 如申請專利範圍第1項之設備,其中該對映表中的該對映表項包含:該表位置、一擴展標識符、一作業系統執行緒標識符、一位址指標,該位址指標參考該記憶體中的該擴展特徵映像位置、以及一或多個位元,該等一或多個位元指示一或多個擴展特徵中之何者由該執行緒 使用。
- 如申請專利範圍第1項之設備,其中該對映表包含一擴展標識符,該擴展標識符至少部分地基於架構狀態資料,該架構狀態資料由執行於該處理器上的一作業系統維護。
- 如申請專利範圍第1項之設備,其中該對映表包含一擴展標識符,該擴展標識符包含來自一堆疊指標的與該執行緒相關聯的一值及與該執行緒相關聯的一控制暫存器值。
- 如申請專利範圍第1項之設備,其中該擴展特徵不受經組配來執行於該處理器上的一作業系統支援。
- 如申請專利範圍第1項之設備,進一步包含一作業系統模組,該作業系統模組在接收到上下文切換出運行於該處理器上的該應用程式的一呼叫時:將一或多個應用程式允用的、與該應用程式相關聯的暫存器之內容寫入一特徵映像中,該特徵映像在儲存於該記憶體中的一作業系統內核堆疊中;使用該對映表中的該表位置參考來將該擴展特徵之內容寫入至該擴展資料映像位置;以及寫入該作業系統內核堆疊中之該特徵映像、與該擴展資料映像相關聯之該對映表位置及指示與該擴展資料映像相關聯的特殊處理的一或多個位元。
- 如申請專利範圍第6項之設備,其中與該應用程式相關聯的該等一或多個應用程式允用的暫存器的該等內容 之該寫入使用來自一指令集的一指令以將該等內容儲存於被儲存在該記憶體中之該作業系統內核堆疊之特徵映像中。
- 如申請專利範圍第1項之設備,進一步包含一作業系統模組,該作業系統模組在接收到上下文切換入一第二應用程式以用於執行於該處理器上的一呼叫時:將儲存於該記憶體中的一作業系統內核堆疊中的與該第二應用程式的一執行緒相關聯的一第二特徵映像之內容寫入至與該第二應用程式相關聯的一或多個暫存器;以及當對與該第二應用程式之該執行緒相關聯的該第二特徵映像之檢查確定指示特殊處理的一或多個位元存在時,將該第二應用程式恢復至先前儲存於該第二特徵映像中的一對映表位置,該對映表位置使該第二應用程式之該執行緒參考一相關聯的第二擴展特徵映像;以及使用該表位置將來自該擴展特徵映像之該相關聯的擴展資料恢復至該等擴展暫存器。
- 如申請專利範圍第8項之設備,其中該作業系統內核堆疊之該第二特徵映像之該等內容之該寫入使用來自一指令集中的一指令以從被儲存在該記憶體內之該作業系統內核堆疊之該第二特徵映像中恢復該等內容。
- 一種使用擴展特徵之系統,該系統包含:一或多個處理器; 一記憶體,該記憶體係耦接至該等一或多個處理器,且含有多個記憶體位置;一驅動程式模組,用來:維護在該等多個記憶體位置中之一者中的一對映表,該對映表包含一表位置及一位址指標,該位址指標參考一特定記憶體位置,該記憶體位置經組配來儲存對應於由經排程以執行的一執行緒使用的一擴展特徵之資訊,以及一或多個位元,該等一或多個位元指示何擴展特徵正由該執行緒使用;接收對一作業系統上下文切換的一呼叫;以及當該等一或多個位元指示該擴展特徵係由該執行緒使用時,存取由該位址指標參考之該記憶體位置來擷取對應於該擴展特徵之該資訊。
- 如申請專利範圍第10項之系統,其中該對映表進一步包含一作業系統執行緒標識符,該作業系統執行緒標識符指示使用該擴展特徵之該執行緒。
- 如申請專利範圍第10項之系統,其中該對映表進一步包含一擴展標識符。
- 如申請專利範圍第12項之系統,其中該擴展標識符至少部分地基於由一作業系統維護之架構狀態資料,該作業系統經組配來執行於該等一或多個處理器上。
- 如申請專利範圍第12項之系統,其中該擴展標識符包含至少部分地源於一堆疊指標的、與該執行緒相關聯的一值,及一控制暫存器值,該控制暫存器值在該執行緒執 行於該等一或多個處理器上之期間與該執行緒相關聯。
- 如申請專利範圍第14項之系統,其中該等一或多個處理器使用Intel®64架構,且該控制暫存器值包含CR3。
- 如申請專利範圍第12項之系統,其中該擴展特徵不受經組配來執行於該等一或多個處理器上的一作業系統支援。
- 一種使用擴展特徵之處理器,其係用來:為一記憶體儲存裝置內的每一執行緒維護至少一個記憶體位置,該記憶體位置與一擴展特徵相關聯,且儲存一擴展特徵映像,該擴展特徵映像包含與該擴展特徵相關聯的資料;建立一處理程序複製處理程式及處理程序終止系統處理程式之回呼函式,其中該等回呼函式經組配來操縱該記憶體位置;接收來自一執行緒的一呼叫來啟用該擴展特徵之使用;至少部分地響應於該呼叫,填充一對映表來使該擴展特徵與儲存於該記憶體位置中的一擴展特徵映像對映;為該執行緒提供服務及設定指示使用中的該擴展特徵的一或多個位元;發起一上下文切換;以及在該上下文切換期間將該擴展特徵的一狀態保存至該記憶體位置中的該擴展特徵映像。
- 如申請專利範圍第17項之處理器,其中該擴展特徵不受一作業系統支援。
- 如申請專利範圍第17項之處理器,其中該對映表包含一擴展標識符,該擴展標識符至少部分地基於由一作業系統維護之架構狀態資料。
- 如申請專利範圍第17項之處理器,其中該對映表包含:一表位置、一擴展標識符、一作業系統執行緒標識符、參考該記憶體位置的一位址指標、以及一或多個位元,該等一或多個位元指示擴展特徵中之何者正由該執行緒使用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/067646 WO2013100992A1 (en) | 2011-12-28 | 2011-12-28 | Context-state management |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342207A TW201342207A (zh) | 2013-10-16 |
TWI496076B true TWI496076B (zh) | 2015-08-11 |
Family
ID=48698234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101147163A TWI496076B (zh) | 2011-12-28 | 2012-12-13 | 上下文狀態管理技術 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9058201B2 (zh) |
TW (1) | TWI496076B (zh) |
WO (1) | WO2013100992A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8694961B2 (en) | 2012-04-03 | 2014-04-08 | Microsoft Corporation | Thread-agile execution of dynamic programming language programs |
US9384036B1 (en) * | 2013-10-21 | 2016-07-05 | Google Inc. | Low latency thread context caching |
US10235222B2 (en) | 2017-01-05 | 2019-03-19 | Portworx, Inc. | Containerized application system graph driver |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10552164B2 (en) | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US11461098B2 (en) | 2020-06-27 | 2022-10-04 | Intel Corporation | Apparatuses, methods, and systems for instructions for operating system transparent instruction state management of new instructions for application threads |
US11934685B2 (en) * | 2022-01-18 | 2024-03-19 | Micron Technology, Inc. | Performing memory access operations based on quad-level cell to single-level cell mapping table |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097533A (en) * | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
US7275246B1 (en) * | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
CN101809562A (zh) * | 2007-09-27 | 2010-08-18 | 微软公司 | 基于面向服务流水线的体系结构 |
US20100325085A1 (en) * | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Managed System Extensibility |
TW201145172A (en) * | 2009-12-31 | 2011-12-16 | Intel Corp | Sharing resources between a CPU and GPU |
TW201145041A (en) * | 2009-12-31 | 2011-12-16 | Intel Corp | Provisioning, upgrading and/or changing of hardware |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247678A (en) * | 1989-10-12 | 1993-09-21 | Texas Instruments Incorporated | Load time linker for software used with a multiprocessor system |
US5291585A (en) * | 1991-07-29 | 1994-03-01 | Dell Usa, L.P. | Computer system having system feature extension software containing a self-describing feature table for accessing I/O devices according to machine-independent format |
US5764985A (en) * | 1994-12-13 | 1998-06-09 | Microsoft Corp | Notification mechanism for coordinating software extensions |
US8117607B2 (en) * | 2004-08-18 | 2012-02-14 | International Business Machines Corporation | Administration of kernel extensions |
US7587722B2 (en) * | 2004-12-03 | 2009-09-08 | Microsoft Corporation | Extending operating system subsystems |
US20090094312A1 (en) * | 2007-10-03 | 2009-04-09 | Powley John J | Methods and systems for dynamic code extension |
JP2011514586A (ja) * | 2008-02-08 | 2011-05-06 | エクリオ インコーポレイテッド | デジタル電子デバイス上の複数のアプリケーションおよびサービスを制御するためのシステム、方法、ならびに装置 |
US8392895B2 (en) * | 2009-01-13 | 2013-03-05 | Mediatek Inc. | Firmware extension method and firmware builder |
WO2010120549A2 (en) * | 2009-03-31 | 2010-10-21 | Ecrio, Inc. | System, method and apparatus for providing functions to applications on a digital electronic device |
US8117622B2 (en) * | 2009-05-14 | 2012-02-14 | Microsoft Corporation | Client application independent extensibility model |
US9063776B2 (en) * | 2011-05-27 | 2015-06-23 | Microsoft Technology Licensing, Llc | Application activation framework |
US10147145B2 (en) * | 2011-11-25 | 2018-12-04 | Microsoft Technology Licensing, Llc | Integrating an application into operating system components of a mobile computing platform |
-
2011
- 2011-12-28 WO PCT/US2011/067646 patent/WO2013100992A1/en active Application Filing
- 2011-12-28 US US13/993,471 patent/US9058201B2/en not_active Expired - Fee Related
-
2012
- 2012-12-13 TW TW101147163A patent/TWI496076B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097533A (en) * | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
US7275246B1 (en) * | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
CN101809562A (zh) * | 2007-09-27 | 2010-08-18 | 微软公司 | 基于面向服务流水线的体系结构 |
US20100325085A1 (en) * | 2009-06-19 | 2010-12-23 | Microsoft Corporation | Managed System Extensibility |
TW201145172A (en) * | 2009-12-31 | 2011-12-16 | Intel Corp | Sharing resources between a CPU and GPU |
TW201145041A (en) * | 2009-12-31 | 2011-12-16 | Intel Corp | Provisioning, upgrading and/or changing of hardware |
Also Published As
Publication number | Publication date |
---|---|
US9058201B2 (en) | 2015-06-16 |
US20140013333A1 (en) | 2014-01-09 |
WO2013100992A1 (en) | 2013-07-04 |
TW201342207A (zh) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI496076B (zh) | 上下文狀態管理技術 | |
CN103309786B (zh) | 用于在非可抢占式图形处理单元上交互调试的方法和装置 | |
CN100592271C (zh) | 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法 | |
CN107015845B (zh) | Gpu虚拟化 | |
US10592454B2 (en) | System-on-chip, mobile terminal, and method for operating the system-on-chip | |
CN102648449B (zh) | 一种用于处理干扰事件的方法和图形处理单元 | |
CN102981808B (zh) | 用于持续性用户级线程的设备、系统和方法 | |
TWI457759B (zh) | 用於處理分頁錯誤的方法和裝置以及非暫時性的電腦可讀取媒體 | |
US10445243B2 (en) | Fault buffer for resolving page faults in unified virtual memory system | |
US20190361708A1 (en) | Embedded scheduling of hardware resources for hardware acceleration | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
CN106662995A (zh) | 利用软件辅助上下文切换的中间线程抢占 | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
US10698713B2 (en) | Virtual processor state switching virtual machine functions | |
US20160239325A1 (en) | Virtual device timeout by memory offlining | |
JP2012238306A (ja) | ルーティングのための方法及び装置 | |
CN1713134B (zh) | 虚拟机控制结构译码器 | |
US8145819B2 (en) | Method and system for stealing interrupt vectors | |
US6883171B1 (en) | Dynamic address windowing on a PCI bus | |
CN103218259A (zh) | 计算任务的调度和执行 | |
US9317636B1 (en) | System and method for stopping integrated circuit simulation | |
EP4177743A1 (en) | User-level interrupts in virtual machines | |
US11842200B2 (en) | Multi-modal gather operation | |
US11392406B1 (en) | Alternative interrupt reporting channels for microcontroller access devices | |
CN110221861B (zh) | 一种cpu寄存器体系结构及其中断处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |