頁(yè)面錯(cuò)誤應(yīng)對(duì)機(jī)制的制作方法
【專利摘要】發(fā)生在圖形處理單元中的頁(yè)面錯(cuò)誤可通過(guò)運(yùn)行在中央處理單元上的操作系統(tǒng)來(lái)應(yīng)對(duì)。在一些實(shí)施例中,這意味著可將不固定的存儲(chǔ)器用于圖形處理單元。在圖形處理單元中的使用不固定的存儲(chǔ)器在某些情形下可擴(kuò)展圖形處理單元的能力。
【專利說(shuō)明】頁(yè)面錯(cuò)誤應(yīng)對(duì)機(jī)制
【背景技術(shù)】
[0001]這總地涉及用于應(yīng)對(duì)出現(xiàn)在專門設(shè)備(例如圖形處理單元)中的頁(yè)面錯(cuò)誤的處理單元。
[0002]頁(yè)面錯(cuò)誤是當(dāng)軟件嘗試從被標(biāo)記為“不存在”的虛擬存儲(chǔ)器位置讀取或?qū)ζ溥M(jìn)行寫入時(shí)或當(dāng)頁(yè)面許可屬性禁止相應(yīng)訪問(wèn)時(shí)發(fā)生的中斷。虛擬存儲(chǔ)器系統(tǒng)將關(guān)于每個(gè)頁(yè)面的這種狀態(tài)信息維持在虛擬存儲(chǔ)器地址空間中。這些頁(yè)面被映射到物理地址上或者“不存在”于物理存儲(chǔ)器內(nèi)。例如,當(dāng)檢測(cè)到對(duì)未經(jīng)映射的虛擬地址的讀或?qū)憰r(shí)或當(dāng)頁(yè)面訪問(wèn)許可被違反時(shí),設(shè)備“page walker (頁(yè)面步行者)”產(chǎn)生頁(yè)面錯(cuò)誤中斷。操作系統(tǒng)(OS)頁(yè)面錯(cuò)誤應(yīng)對(duì)器通過(guò)將數(shù)據(jù)從盤交換至系統(tǒng)存儲(chǔ)器或通過(guò)分配新的頁(yè)面(“寫時(shí)復(fù)制”)并更新頁(yè)面表中的狀態(tài)信息來(lái)對(duì)這種頁(yè)面錯(cuò)誤作出回應(yīng)。
[0003]為了避免圖形處理單元中頁(yè)面錯(cuò)誤的可能性,圖形處理單元通常僅限于使用固定的存儲(chǔ)器。這意味著在最后一種情形下,圖形處理器使用的頁(yè)面被預(yù)分配并且無(wú)法被交換至盤或重映射至系統(tǒng)存儲(chǔ)器中的新位置。
[0004]在傳統(tǒng)系統(tǒng)中,中央處理單元和圖形處理單元使用不同的頁(yè)面表。操作系統(tǒng)管理由中央處理單元使用的主頁(yè)面表,而圖形處理單元驅(qū)動(dòng)器管理由圖形處理單元使用的頁(yè)面表。圖形處理單元驅(qū)動(dòng)器將數(shù)據(jù)從用戶空間復(fù)制到驅(qū)動(dòng)器存儲(chǔ)器中,以供在圖形處理單元上進(jìn)行處理。當(dāng)指針由偏置值取代時(shí),復(fù)雜的數(shù)據(jù)結(jié)構(gòu)必須被重新打包成一數(shù)組。關(guān)聯(lián)于復(fù)制和重新打包的開(kāi)銷限制了數(shù)據(jù)被表示為數(shù)組的圖形處理單元應(yīng)用。因此,圖形處理單元在某些應(yīng)用中可以是受限制的值,包括涉及諸如數(shù)據(jù)庫(kù)的復(fù)雜數(shù)據(jù)結(jié)構(gòu)的那些值。
[0005]附圖簡(jiǎn)述
[0006]圖1是對(duì)本發(fā)明的一個(gè)實(shí)施例的示意性描繪。
[0007]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的擴(kuò)展線程和存儲(chǔ)器模型;
[0008]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的用于頁(yè)面錯(cuò)誤應(yīng)對(duì)的流程圖;以及
[0009]圖4是一個(gè)實(shí)施例的系統(tǒng)描繪。
【具體實(shí)施方式】
[0010]在一些實(shí)施例中,圖形處理應(yīng)用可通過(guò)無(wú)需固定的共享存儲(chǔ)器地使用共享虛擬存儲(chǔ)器模型來(lái)使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如數(shù)據(jù)庫(kù)。共享虛擬存儲(chǔ)器的固定降低了操作系統(tǒng)管理系統(tǒng)存儲(chǔ)器的能力。在一些實(shí)施例中,當(dāng)不能保證由圖形處理單元使用的頁(yè)面存在于系統(tǒng)存儲(chǔ)器中時(shí),不固定的共享虛擬存儲(chǔ)器可被用在圖形處理單元上。
[0011]圖形處理單元驅(qū)動(dòng)器將圖形處理單元上的頁(yè)面錯(cuò)誤傳遞至主/中央處理單元上的影子線程。主處理單元?jiǎng)t模仿頁(yè)面錯(cuò)誤,就像它們出現(xiàn)在中央處理單元上那樣,從而觸發(fā)操作系統(tǒng)為圖形處理單元的利益來(lái)解決錯(cuò)誤。
[0012]盡管在本申請(qǐng)中使用術(shù)語(yǔ)“圖形處理單元”,然而應(yīng)當(dāng)理解圖形處理單元可以是也可以不是獨(dú)立的集成電路。本發(fā)明可適用于圖形處理單元和中央處理單元被集成在一個(gè)集成電路中的情況。[0013]另外,盡管這里給出與圖形處理相關(guān)的例子,然而在其它實(shí)施例中,可在其它專門的處理單元(例如視頻處理、卡和輸入/輸出設(shè)備)中使用相同的頁(yè)面錯(cuò)誤應(yīng)對(duì)技術(shù)。一般來(lái)說(shuō),頁(yè)面錯(cuò)誤應(yīng)對(duì)技術(shù)可用于任何可能經(jīng)歷頁(yè)面錯(cuò)誤并由充當(dāng)代理以解決那些頁(yè)面錯(cuò)誤的處理器伴隨的設(shè)備。在這里,處理器或處理單元可以是處理器、控制器或協(xié)處理器。
[0014]參見(jiàn)圖1,主/中央處理單元16與圖形處理單元18通信。主中央處理單元16包括用戶應(yīng)用20,該用戶應(yīng)用20將控制信息提供給影子線程22。影子線程22則將異常和控制信息傳達(dá)給圖形處理單元驅(qū)動(dòng)器26。影子線程也與主操作系統(tǒng)24通信。
[0015]如圖1所示,用戶層12包括影子線程22和用戶應(yīng)用20,而內(nèi)核層14包括主操作系統(tǒng)24以及圖形處理單元驅(qū)動(dòng)器26。圖形處理單元驅(qū)動(dòng)器26是用于圖形處理單元的驅(qū)動(dòng)器,即使該驅(qū)動(dòng)器位于中央處理單元16中。
[0016]圖形處理單元18在用戶層12包括g線程28,該g線程28發(fā)送和接收控制和異常消息至操作系統(tǒng)30。g線程是運(yùn)行在圖形處理單元上的用戶代碼,從而與運(yùn)行在中央處理單元上的父線程共享共享虛擬存儲(chǔ)器。操作系統(tǒng)30可以是運(yùn)行在圖形處理單元上的相對(duì)小的操作系統(tǒng),它負(fù)責(zé)圖形處理單元異常。作為一個(gè)示例,說(shuō)它小是相對(duì)于主操作系統(tǒng)24而言的。
[0017]用戶應(yīng)用20是運(yùn)行在中央處理單元16上的任何用戶進(jìn)程。用戶應(yīng)用20在圖形處理單元18上產(chǎn)生線程。
[0018]經(jīng)擴(kuò)展的線程庫(kù)(extended Threaded Library)或XTL是在圖形處理單元上創(chuàng)建和管理用戶線程的擴(kuò)展。該庫(kù)創(chuàng)建每個(gè)g線程的影子線程。
[0019]用戶應(yīng)用使用傳統(tǒng)多線程模型擴(kuò)展來(lái)對(duì)圖形處理單元卸載計(jì)算,例如:
[0020]xthread_create (線程,attr, gpu_worker, arg)
[0021]在圖形處理單元上創(chuàng)建的g線程或工作者線程與父線程共享虛擬存儲(chǔ)器。它與常規(guī)線程的方式相同的地方在于,可使用所有標(biāo)準(zhǔn)進(jìn)程間同步機(jī)制一例如互斥(Mutex)和信號(hào)量(semaphore)。同時(shí),在主中央處理單元16上創(chuàng)建新的影子線程。該影子線程作為異常應(yīng)對(duì)單元的代理以及中央處理單元和圖形處理單元上的線程之間的同步而工作。
[0022]在一些實(shí)施例中,父線程、主影子線程和圖形處理單元工作者線程可共享如圖2所示的不固定的虛擬存儲(chǔ)器。主/中央處理單元16包括父線程32,該父線程32為影子線程22產(chǎn)生xthreacLcreate O。影子線程22訪問(wèn)影子堆棧,它是進(jìn)程地址空間36中的私用地址空間。父線程32也訪問(wèn)存儲(chǔ)器描述符34和主堆棧,該主堆棧是進(jìn)程地址空間36內(nèi)的私用地址空間。存儲(chǔ)器描述符34也可與g線程工作者28通信。g線程工作者28可訪問(wèn)進(jìn)程空間36和共享的數(shù)據(jù)區(qū)段以及私用g線程堆棧內(nèi)的g線程代碼。上區(qū)段中的材料對(duì)應(yīng)于進(jìn)程模型38而下區(qū)段對(duì)應(yīng)于存儲(chǔ)器模型40。
[0023]參見(jiàn)圖3,頁(yè)面錯(cuò)誤應(yīng)對(duì)算法可以硬件、軟件和/或固件來(lái)實(shí)現(xiàn)。在軟件實(shí)施例中,可將算法實(shí)現(xiàn)為計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令被存儲(chǔ)在例如光學(xué)存儲(chǔ)器、半導(dǎo)體存儲(chǔ)器或磁存儲(chǔ)器之類的非臨時(shí)計(jì)算機(jī)可讀介質(zhì)上。在圖3中,中央處理單元16的主操作系統(tǒng)24、影子線程22、驅(qū)動(dòng)器26、以及圖形處理單元18中的操作系統(tǒng)30、g線程28的流程被圖示為平行的垂直流程路徑,在兩者間具有由一般水平箭頭指出的相互作用。
[0024]圖形處理單元操作系統(tǒng)30 —開(kāi)始接收頁(yè)面錯(cuò)誤,如由圖3中的字“異?!焙拖鄳?yīng)箭頭所指示的。操作系統(tǒng)30保存該背景(方框62),并將消息60與頁(yè)面錯(cuò)誤信息一起發(fā)送至驅(qū)動(dòng)器26。該消息可包括操作碼“exception_notification (異常_通知)”以及包括向量和附加信息的數(shù)據(jù)。然后操作系統(tǒng)30將該線程標(biāo)記為idle O,如方框66所示,由此該線程被認(rèn)為是“未就緒,等待頁(yè)面錯(cuò)誤解決”并切換至另一線程。
[0025]驅(qū)動(dòng)器26喚醒影子線程22并將頁(yè)面錯(cuò)誤數(shù)據(jù)轉(zhuǎn)移至影子線程,如通過(guò)標(biāo)記為“傳遞異常信息”的箭頭表示的那樣。
[0026]在50,影子線程執(zhí)行阻斷讀取以停止其它活動(dòng),直到頁(yè)面錯(cuò)誤被解決為止。然后,影子線程22接收頁(yè)面錯(cuò)誤數(shù)據(jù)。在檢查以查看該頁(yè)面是否錯(cuò)誤(菱形框52)之后,如果該頁(yè)面錯(cuò)誤的話,影子線程再現(xiàn)對(duì)錯(cuò)誤地址的同一訪問(wèn),如方框54所示那樣。如果該頁(yè)沒(méi)有錯(cuò)誤,則流程進(jìn)至方框58以檢查其它異常,從而繞過(guò)方框54。然后在56發(fā)布阻斷讀取。
[0027]主操作系統(tǒng)24應(yīng)對(duì)頁(yè)面錯(cuò)誤句柄42中的頁(yè)面錯(cuò)誤。實(shí)際上,誘使主操作系統(tǒng)應(yīng)對(duì)圖形處理單元的異常。然后可在44轉(zhuǎn)儲(chǔ)清楚轉(zhuǎn)換后備緩沖器(TLB)。在菱形框46的檢查判斷該頁(yè)面錯(cuò)誤是否為良性的,即固定的,在這種情形下它對(duì)影子線程22作出建議。否貝U,在48指出是例如導(dǎo)致出錯(cuò)的嚴(yán)重頁(yè)面錯(cuò)誤。
[0028]影子線程22將頁(yè)面錯(cuò)誤解決的消息(即RESUME EXE⑶TION(恢復(fù)執(zhí)行))發(fā)送至驅(qū)動(dòng)器26。然后影子線程變?yōu)樾菝郀顟B(tài),以等待來(lái)自驅(qū)動(dòng)器的下一個(gè)使用另一阻斷讀取56的消息。
[0029]驅(qū)動(dòng)器26從影子線程接收恢復(fù)執(zhí)行消息并將PassGPUCommand發(fā)送至操作系統(tǒng)30,如方框64所示那樣。消息可包括操作碼以恢復(fù)執(zhí)行,它沒(méi)有數(shù)據(jù)。操作系統(tǒng)30將該線程標(biāo)記為執(zhí)行就緒的,如68所示,并通過(guò)將恢復(fù)消息發(fā)送至g線程28從異常返回。
[0030]如圖4所示的計(jì)算機(jī)系統(tǒng)130可包括通過(guò)總線104耦合至芯片組核邏輯110的硬驅(qū)動(dòng)器134和可移除介質(zhì)136。鍵盤和鼠標(biāo)120或其它常規(guī)部件可經(jīng)由總線108耦合至芯片組核邏輯。在一個(gè)實(shí)施例中,核邏輯可經(jīng)由總線105耦合至圖形處理器112和中央處理器100。圖形處理器112還可通過(guò)總線106耦合到幀緩沖器114。幀緩沖器114可通過(guò)總線107耦合至顯示屏118。在一個(gè)實(shí)施例中,圖形處理器112可以是利用單指令多數(shù)據(jù)(SMD)體系結(jié)構(gòu)的多線程、多核并行處理器。
[0031]在軟件實(shí)現(xiàn)的情況下,可將有關(guān)代碼存儲(chǔ)在任何適當(dāng)?shù)陌雽?dǎo)體、磁或光存儲(chǔ)器中,包括主存儲(chǔ)器132 (如139示出的那樣)或圖形處理器中任何可用的存儲(chǔ)器。因此,在一個(gè)實(shí)施例中,用于執(zhí)行圖3的序列的代碼可被存儲(chǔ)在諸如存儲(chǔ)器132和/或圖形處理器112和/或中央處理器100之類的非暫時(shí)機(jī)器或計(jì)算機(jī)可讀介質(zhì)中,且在一個(gè)實(shí)施例中,該代碼可由處理器100和/或圖形處理器112執(zhí)行。
[0032]圖3是一流程圖。在一些實(shí)施例中,該流程圖中描述的序列可以硬件、軟件或固件來(lái)實(shí)現(xiàn)。在軟件實(shí)施例中,諸如半導(dǎo)體存儲(chǔ)器、磁存儲(chǔ)器或光存儲(chǔ)器之類的非瞬態(tài)計(jì)算機(jī)可讀介質(zhì)可用于存儲(chǔ)指令,且可由處理器執(zhí)行以實(shí)現(xiàn)圖3中所示的序列。
[0033]本文中所描述的圖形處理技術(shù)可用各種硬件架構(gòu)來(lái)實(shí)現(xiàn)。例如,圖形功能可整合在芯片組內(nèi)。作為替換,可使用分立的圖形處理器。作為又一實(shí)施例,圖形功能可由通用處理器(包括多核處理器)來(lái)實(shí)現(xiàn)。
[0034]貫穿本說(shuō)明書(shū)引述的“一個(gè)實(shí)施例”或“一實(shí)施例”意指結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性被包含在本發(fā)明內(nèi)所涵蓋的至少一個(gè)實(shí)現(xiàn)中。由此,短語(yǔ)“一個(gè)實(shí)施例”或“一實(shí)施例”的出現(xiàn)不一定引述同一實(shí)施例。此外,所述特定特征、結(jié)構(gòu)或特性可被設(shè)立成除了所示特定實(shí)施例以外的其他合適形式,且所有此類形式可被涵蓋在本申請(qǐng)的權(quán)利要求書(shū)內(nèi)。
[0035]盡管本發(fā)明已針對(duì)有限數(shù)量的實(shí)施例作了描述,然而本領(lǐng)域技術(shù)人員將會(huì)從其中領(lǐng)會(huì)到許多修改和變型。所附權(quán)利要求旨在覆蓋落在本發(fā)明的真實(shí)精神和范圍內(nèi)的所有這樣的修改和變型。
【權(quán)利要求】
1.一種方法,包括: 通過(guò)運(yùn)行在第二處理單元上的操作系統(tǒng)應(yīng)對(duì)發(fā)生在第一處理單元中的頁(yè)面錯(cuò)誤。
2.如權(quán)利要求1所述的方法,其特征在于,包括使用運(yùn)行在中央處理單元上的操作系統(tǒng)來(lái)應(yīng)對(duì)發(fā)生在圖形處理單元中的頁(yè)面錯(cuò)誤。
3.如權(quán)利要求2所述的方法,其特征在于,包括使用運(yùn)行在所述中央處理單元上的線程來(lái)再現(xiàn)和應(yīng)對(duì)所述圖形處理單元上的頁(yè)面錯(cuò)誤。
4.如權(quán)利要求2所述的方法,其特征在于,包括使用圖形處理單元操作系統(tǒng)以將頁(yè)面錯(cuò)誤傳至所述中央處理單元上的驅(qū)動(dòng)器。
5.如權(quán)利要求1所述的方法,其特征在于,包括使用不固定的共享虛擬存儲(chǔ)器。
6.如權(quán)利要求5所述的方法,其特征在于,在所述第一和第二處理單元之間共享所述不固定的虛擬存儲(chǔ)器。
7.一種非暫時(shí)計(jì)算機(jī)可讀介質(zhì),所述非暫時(shí)計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)指令以使第一處理器: 使用運(yùn)行在所述第一處理器中上的操作系統(tǒng)應(yīng)對(duì)第二處理器中出現(xiàn)的頁(yè)面錯(cuò)誤。
8.如權(quán)利要求7所述的介質(zhì),其特征在于,還存儲(chǔ)指令以使用運(yùn)行在中央處理單元上的操作系統(tǒng)來(lái)應(yīng)對(duì)發(fā)生在圖形處理單元中的頁(yè)面錯(cuò)誤。
9.如權(quán)利要求8所述的介質(zhì),其特征在于,還存儲(chǔ)指令以使用運(yùn)行在所述中央處理單元上的線程來(lái)再現(xiàn)和應(yīng)對(duì)所述圖形處理單元上的頁(yè)面錯(cuò)誤。
10.如權(quán)利要求8所述的介質(zhì),其特征在于,還存儲(chǔ)指令以使用圖形處理單元操作系統(tǒng)以將頁(yè)面錯(cuò)誤傳至所述中央處理單元上的驅(qū)動(dòng)器。
11.如權(quán)利要求7所述的介質(zhì),其特征在于,還存儲(chǔ)指令以使用不固定的共享虛擬存儲(chǔ)器。
12.如權(quán)利要求11所述的介質(zhì),其特征在于,還存儲(chǔ)指令以在所述處理器之間共享所述不固定的虛擬存儲(chǔ)器。
13.一種裝置,包括: 應(yīng)對(duì)發(fā)生在另一處理器上的頁(yè)面錯(cuò)誤的處理器;以及耦合至所述處理器的存儲(chǔ)器。
14.如權(quán)利要求13所述的裝置,其特征在于,所述處理器是中央處理單元。
15.如權(quán)利要求13所述的裝置,其特征在于,包括另一處理器,所述處理器招致頁(yè)面錯(cuò)誤并將所述頁(yè)面錯(cuò)誤轉(zhuǎn)移至所述用于應(yīng)對(duì)的處理器。
16.如權(quán)利要求13所述的裝置,其特征在于,所述另一處理器是圖形處理單元。
17.如權(quán)利要求13所述的裝置,其特征在于,所述處理器使用線程來(lái)再現(xiàn)和應(yīng)對(duì)所述另一處理器上的頁(yè)面錯(cuò)誤。
18.如權(quán)利要求13所述的裝置,包括所述處理器和所述另一處理器,其特征在于,所述另一處理器將頁(yè)面錯(cuò)誤傳遞給所述中央處理單元上的驅(qū)動(dòng)器。
19.如權(quán)利要求15所述的裝置,其特征在于,所述另一處理器使用不固定的共享虛擬存儲(chǔ)器。
20.如權(quán)利要求20所述的裝置,其特征在于,所述處理器和所述另一處理器共享所述不固定的虛擬存儲(chǔ)器。
【文檔編號(hào)】G06F11/07GK103430145SQ201180069298
【公開(kāi)日】2013年12月4日 申請(qǐng)日期:2011年12月29日 優(yōu)先權(quán)日:2011年3月15日
【發(fā)明者】B·靳茲伯格, E·納坦森, I·毆薩池依, R·羅恩, E·威斯曼, Y·扎克, R·L·法瑞爾 申請(qǐng)人:英特爾公司