两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

多核計算機系統驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法

文檔序號:6561974閱讀:248來源:國知局
專利名稱:多核計算機系統驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法
技術領域
本發(fā)明涉及計算機裝置驅動裝置,特別是涉及一種驅動程序支持的異步指令處理。
背景技術
一般的計算機圖形系統包含一圖形轉接器,其提供一幀緩沖區(qū)及一圖形加速硬件,以及一軟件裝置驅動程序,其提供該圖形轉接器及操作系統及/或運作于該操作系統的上的應用之間的界面。該圖形轉接器包含至少一圖形處理單元(graphics processing unit,GPU),其為一計算機組件,用以將視覺信息的邏輯表現轉換為可以作為一顯示媒體的輸入的訊號。該圖形轉接器用以加速復雜圖形的顯示,同時減輕操作系統在圖形處理上的負擔,以改善整體效能。
裝置驅動程序,通常簡稱為驅動程序,為一計算機程序,其致能其它程序(通常是操作系統)以和一硬件裝置互動。在窗口操作系統環(huán)境中,當一應用以裝置獨立圖形要求(device-independent graphics request)來呼叫Win32功能時,該圖形裝置接口(GDI)詮釋該這些指令并呼叫該顯示驅動程序。繼的,顯示驅動程序將這些要求轉換成視訊硬件的指令。
GDI呼叫裝置驅動程序接口(device driver interface,DDI)以將數據傳送到該驅動程序。當一應用提出GDI要求時,且GDI確認該驅動程序支持該相關功能,則GDI呼叫該功能。驅動程序必須提供該功能,并在該功能完成時回報GDI。
有越來越多的計算機系統采用多核心中央處理單元(CPU),其具有多執(zhí)行緒(thread)可以同時處理多個指令。執(zhí)行緒可以讓一個程序將其自身分為兩個或更多的同時運作的工作。多執(zhí)行緒可以同時在許多計算機系統并行。這種多執(zhí)行緒通常藉由時間分割來執(zhí)行(單一處理器在不同執(zhí)行緒之間切換)或是藉由多處理(multiprocessing)來執(zhí)行(多個執(zhí)行緒在不同的處理器執(zhí)行)。上述的多核心CPU為后者的多執(zhí)行緒執(zhí)行方法,亦即多處理的一種主體。
但是,傳統的圖形驅動程序設計為在一計算機CPU上執(zhí)行的單一執(zhí)行緒上運作,其需要和一圖形處理單元(GPU)同步。因此,傳統的圖形驅動程序并無法由可以同時處理多個工作的多核心CPU中得益。
此外,大部分的圖形應用軟件并不是以多執(zhí)行緒寫成。應用軟件本身也無法從多核心CPU中得益。在許多狀況中,應用軟件運作的速度取決于CPU執(zhí)行速度。
因此,需要一個多核心CPU計算機系統以不同圖形應用的執(zhí)行緒來運作圖形驅動程序,以改善該計算機系統的圖形表現。

發(fā)明內容
有鑒于此,本發(fā)明提供一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,該方法包括將異步指令和同步指令分開,將該異步指令暫存于一緩沖區(qū),直接在一CPU驅動程序執(zhí)行緒處理該同步指令,以一個或多個CPU工作執(zhí)行緒從該緩沖區(qū)處理該異步指令,其中該多核心計算機系統的多個執(zhí)行緒可以同時使用,并當該CPU工作執(zhí)行緒處理該緩沖區(qū)之后,管理該緩沖區(qū),其中該指令的執(zhí)行對應用軟件就如同單一執(zhí)行緒一般。
本發(fā)明亦提供一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,該方法包括將異步指令和同步指令分開,將該異步指令暫存于一緩沖區(qū),其中該暫存步驟還包含將該裝置驅動程序接口(DDI)回復改變的該資源復制到一驅動程序分配存儲器,并修改該對應的指令以指向該驅動程序分配存儲器,以第一CPU執(zhí)行緒從該緩沖區(qū)處理該異步指令,以一第二CPU執(zhí)行緒處理該同步指令。
本發(fā)明亦提供一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其包括將異步指令和同步指令分開,將該異步指令暫存于一緩沖區(qū),其中該暫存步驟還包含將預期由該裝置驅動程序接口(DDI)回復改變的至少一頂點緩沖區(qū)復制到一驅動程序分配存儲器,并修改對應于該復制的頂點緩沖區(qū)的的指令指針以指向該驅動程序分配存儲器,并確認錯誤及指令狀態(tài),以第一CPU執(zhí)行緒從該緩沖區(qū)處理該異步指令,以一第二CPU執(zhí)行緒處理該同步指令。
為使本發(fā)明的上述和其它目的、特征、和優(yōu)點能更明顯易懂,下文特舉出較佳實施例,并結合附圖詳細說明如下。


圖1顯示傳統的同步指令處理的具有多核心CPU及一DDI的計算機系統的一部份的方塊圖。
圖2顯示依據本發(fā)明實施例的異步指令處理的具有多核心CPU及一DDI的計算機系統的一部份的方塊圖。
圖3A顯示依據本發(fā)明實施例多執(zhí)行緒DDI執(zhí)行步驟的流程圖。
圖3B顯示依據本發(fā)明實施例暫存異步指令的詳細步驟的流程圖。
圖3C顯示依據本發(fā)明實施例的緩沖區(qū)管理的詳細步驟的流程圖。
附圖符號說明計算機系統~100;多核心CPU~110;CPU執(zhí)行緒~112和114;DDI~140;圖形處理單元~150和152;應用軟件~120;操作系統~130;計算機系統~200;多核心CPU~210;CPU執(zhí)行緒~212和214;DDI~240;指令暫存區(qū)~260。
具體實施例方式
本說明書提供的方法,是將計算機指令區(qū)分為同步指令和異步指令,并以多個CPU執(zhí)行緒執(zhí)行的,使得多個的指令可以同時被執(zhí)行。
同步指令為必須在DDI回復之前完成的指令。另一方面,異步指令為無須在DDI回復之前完成的指令。
圖1顯示傳統的同步指令處理的具有多核心CPU 110及一裝置驅動接口(Device Driver Interface,DDI)140的計算機系統100的一部份的方塊圖。多核心CPU 110包含兩個例示的CPU執(zhí)行緒112和114。DDI 140將指令傳送到CPU執(zhí)行,并傳送到圖形處理單元(Graphics Processing Units,GPUs)150和152以將圖形顯示。雖然多核心CPU 110包含兩個CPU執(zhí)行緒112和114,但是應用軟件120和DDI 140卻被設計成僅在一個CPU執(zhí)行緒上同步處理圖形指令,亦即,在處理次一指令之前,DDI 140必須等CPU執(zhí)行緒112完成一目前指令處理,或等GPU 150或152完成一目前指令提交。若GPU 150或152的提交速度高于CPU執(zhí)行緒112的指令處理速度,則CPU110就成了計算機系統100中速度的瓶頸,或是一CPU束縛。
圖2顯示依據本發(fā)明實施例的異步指令處理的具有多核心CPU 210及一DDI 240的計算機系統200的一部份的方塊圖。多核心CPU 210包含兩個例示的CPU執(zhí)行緒212和214。執(zhí)行緒212處理直接由驅動程序240的指令,其稱之為驅動程序執(zhí)行緒。另一執(zhí)行緒214處理暫存的指令,稱之為工作執(zhí)行緒。
參見圖2,在計算機系統200中加入一指令暫存區(qū)260。DDI 240可以將異步指令區(qū)分,并將之存放在指令暫存區(qū)260,并僅將同步指令傳送到驅動程序執(zhí)行緒212以立刻處理。上述暫存的指令可以由工作執(zhí)行緒214處理,而和驅動程序執(zhí)行緒212無關。藉此,CPU執(zhí)行緒112和114兩者都被使用,即使該應用程序本身系撰寫為用于單一執(zhí)行緒,也可以從多核心CPU 200受惠。
參見圖2,工作執(zhí)行緒214被指定用來處理暫存的指令。每當DDI 240將一異步指令存入指令暫存區(qū)260時,工作執(zhí)行緒214就被啟動,并開始處理該暫存的指令。當一些暫存的指令已被處理時,工作執(zhí)行緒214釋放指令暫存區(qū)中對應的部分。
DDI 240也可以標記某些需要以事件卷標追蹤的指令。在指令執(zhí)行之后,工作執(zhí)行緒214會將該事件標簽寫回。
圖3A顯示依據本發(fā)明實施例多執(zhí)行緒DDI執(zhí)行主要步驟的流程圖。步驟310為將異步指令和同步指令分開。指令的性質,亦即,同步或異步,依據指令本身來決定,例如,因為驅動程序必須在回復之前完成該工作,所以某些資源管理指令為同步,這些指令必須立刻執(zhí)行。在窗口DirectX driver、CreateSurface、DestroySurface、CreateD3Dbuffer、DestroySurface、LockD3Dbuffer、以及UnlockD3Dbuffer即屬于此類指令。
DDLock及DDUnlock功能需要CPU和GPU之間同步,因此其也無法成多執(zhí)行緒。
另一方面,在D3DdrawPrimitives2功能的繪圖指令(rendering commands)則為異步指令,其可以暫存并讓工作執(zhí)行緒212獨立處理的。D3DdrawPrimitives2功能描繪原型(primitives)并回復更新的繪圖狀態(tài)。
查詢產生(queries create)、查詢消滅(queries destroy)、查詢傳送(queriessending)被視為異步指令,但其是連同事件標簽暫存的,因此,當這些指令由工作執(zhí)行緒完成時,這些事件標簽會被寫回。另一方面,查詢讀取(queriesread)被視為是同步指令,并由驅動程序執(zhí)行緒立刻執(zhí)行。
參見圖3A,在步驟310將異步指令和同步指令分開之后,在步驟320將該異步指令暫存。在步驟330中,CPU驅動程序執(zhí)行緒直接處理同步指令。步驟340中,CPU工作執(zhí)行緒同時處理這些暫存的異步指令。因此,驅動程序執(zhí)行緒和工作執(zhí)行緒同時被使用。當暫存指令被執(zhí)行完成時,CPU工作執(zhí)行緒管理該暫存區(qū)(步驟350),而處理過的暫存區(qū)可以被釋放,以供未來指令之用。
圖3B顯示依據本發(fā)明實施例暫存異步指令的詳細步驟(圖3A中的步驟320)的流程圖。在步驟321,復制整個指令暫存區(qū)。接著,DDI掃描該復制的指令,以尋找能夠由步驟323的DDI回復改變的指令使用的資源。在步驟325,將可以改變的上述資源復制到一驅動程序分配存儲器(driverallocated memory)。特別是,DDI回復會影響到系統存儲資源(包括頂點緩沖區(qū)(vertex buffer)和文本(texure))、及使用者存儲緩沖區(qū)(由應用傳下來的緩沖區(qū)),因此將其復制。在復制上述緩沖區(qū)后,DDI修改該對應的指令以指向該新的驅動程序分配存儲器(步驟325)。
參見圖3B,步驟327中,檢查指令緩沖區(qū),以確認在上述步驟321~325的指令前處理過程中,是否有任回錯誤發(fā)生,并確認指令狀態(tài)。就執(zhí)行狀態(tài)(render state)及文本階段狀態(tài)(texture stage state,TSS),DDI確認并將該執(zhí)行狀態(tài)及文本階段狀態(tài)寫回其對應的緩沖區(qū)作為DDI要求(DDI requires)。
圖3C顯示依據本發(fā)明實施例的緩沖區(qū)管理的詳細步驟(圖3A的步驟350)的流程圖。當處理該暫存的指令時,CPU工作執(zhí)行緒將復制的資源傳送到一再生緩沖區(qū),并將復制資源釋放(步驟352)。驅動程序執(zhí)行緒在必要的位置,會確認是否該復制資源已經由工作執(zhí)行緒釋放(步驟354),并當該資源被釋放時,取回該存儲器(步驟356)。
當所有的暫存指令都被處理時,CPU工作執(zhí)行緒將該指令送到CPU以執(zhí)行之,并回到睡眠模式。
需注意到,在D3DdrawPrimitives2 DDI,該CPU工作執(zhí)行緒的運作和CPU驅動程序執(zhí)行緒相同,除了工作執(zhí)行緒忽略由驅動程序執(zhí)行緒立刻執(zhí)行的查詢讀取,并管理復制的頂點緩沖區(qū)。事實上,若有適當的存儲器管理,本發(fā)明可以使指令的執(zhí)行對應用軟件而言如同單一執(zhí)行緒一般。
雖然本發(fā)明已以較佳實施例披露如上,然其并非用以限定本發(fā)明,本領域的技術人員在不脫離本發(fā)明的精神和范圍的前提下可做若干的更動與潤飾,因此本發(fā)明的保護范圍以本發(fā)明的權利要求為準。
權利要求
1.一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其包括將異步指令和同步指令分開;將該異步指令暫存于一緩沖區(qū);以第一CPU執(zhí)行緒從該緩沖區(qū)處理該異步指令,以一第二CPU執(zhí)行緒處理該同步指令。
2.如權利要求1所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該同步指令為下列中的至少之一在窗口操作系統環(huán)境中的DDLock、DDUnlock、DDCreateSurface、DDDestroySurface、DDCreateSurfaceEx、CreateD3Dbuffer、DestroyD3Dbuffer、LockD3Dbuffer、UnlockD3Dbuffer、DDMapMemory、及查詢讀取。
3.如權利要求1所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該異步指令為下列中的至少之一在窗口操作系統環(huán)境中的D3DrawPrimitives2、查詢產生、查詢消滅、查詢傳送。
4.如權利要求1所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該暫存步驟進一步包含暫存查詢產生、查詢消滅、查詢傳送指令及其對應的事件標簽。
5.如權利要求1所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該暫存步驟進一步包含確認錯誤及指令狀態(tài)。
6.如權利要求5所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該確認步驟進一步包含確認執(zhí)行狀態(tài)及文本階段狀態(tài);將該執(zhí)行狀態(tài)及文本階段狀態(tài)寫回一裝置驅動程序接口定義的緩沖區(qū);以及若發(fā)現一錯誤,則返回一操作系統。
7.如權利要求1所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,還包含當儲存于該緩沖區(qū)中的該異步指令已由該第一CPU執(zhí)行緒處理后,釋放該緩沖區(qū)。
8.一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其包括將異步指令和同步指令分開;將該異步指令暫存于一緩沖區(qū),其中該暫存步驟還包含將該裝置驅動程序接口(DDI)回復改變的該資源復制到一驅動程序分配存儲器,并修改該對應的指令以指向該驅動程序分配存儲器;以第一CPU執(zhí)行緒從該緩沖區(qū)處理該異步指令,以一第二CPU執(zhí)行緒處理該同步指令。
9.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該同步指令為下列中的至少之一在窗口操作系統環(huán)境中的DDLock、DDUnlock、DDCreateSurface、DDDestroySurface、DDCreateSurfaceEx、CreateD3Dbuffer、DestroyD3Dbuffer、LockD3Dbuffer、UnlockD3Dbuffer、DDMapMemory、及查詢讀取。
10.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該異步指令為下列中的至少之一在窗口操作系統環(huán)境中的D3DrawPrimitives2、查詢產生、查詢消滅、查詢傳送。
11.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該復制資源包含系統存儲資源、使用者存儲緩沖區(qū),其包含被一繪圖指令使用的數據。
12.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,還包含在該資源從該第一CPU執(zhí)行緒釋放之后,管理該復制的資源。
13.如權利要求12所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該管理步驟還包含就該第一CPU執(zhí)行緒將該復制資源轉移到一再生緩沖區(qū);及釋放該復制資源;以及就該第二CPU執(zhí)行緒將該資源復制到該緩沖區(qū);及確認是否該復制資源由該第一CPU執(zhí)行緒釋放;及若該資源由該第一CPU執(zhí)行緒釋放,取回該緩沖區(qū)。
14.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該暫存步驟進一步包含暫存查詢產生、查詢消滅、查詢傳送指令及其對應的事件標簽。
15.如權利要求8所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,還包含當儲存于該緩沖區(qū)中的該異步指令已由該第一CPU執(zhí)行緒處理后,釋放該緩沖區(qū)。
16.一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其包括將異步指令和同步指令分開;將該異步指令暫存于一緩沖區(qū),其中該暫存步驟還包含將預期由該裝置驅動程序接口(DDI)回復改變的至少一頂點緩沖區(qū)復制到一驅動程序分配存儲器,并修改對應于該復制的頂點緩沖區(qū)的的指令指針以指向該驅動程序分配存儲器,并確認錯誤及指令狀態(tài);以第一CPU執(zhí)行緒從該緩沖區(qū)處理該異步指令,以一第二CPU執(zhí)行緒處理該同步指令。
17.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該同步指令為下列中的至少之一在窗口操作系統環(huán)境中的DDLock、DDUnlock、DDCreateSurface、DDDestroySurface、DDCreateSurfaceEx、CreateD3Dbuffer、DestroyD3Dbuffer、LockD3Dbuffer、UnlockD3Dbuffer、DDMapMemory、及查詢讀取。
18.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該異步指令為下列中的至少之一在窗口操作系統環(huán)境中的D3DrawPrimitives2、查詢產生、查詢消滅、查詢傳送。
19.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該復制資源包含系統存儲資源、使用者存儲緩沖區(qū),其包含被一繪圖指令使用的數據。
20.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,還包含在該資源從該第一CPU執(zhí)行緒釋放之后,管理該復制的資源。
21.如權利要求20所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該管理步驟還包含就該第一CPU執(zhí)行緒將該復制資源轉移到一再生緩沖區(qū);及釋放該復制資源;以及就該第二CPU執(zhí)行緒將該資源復制到該緩沖區(qū);及確認是否該復制資源由該第一CPU執(zhí)行緒釋放;及若該資源由該第一CPU執(zhí)行緒釋放,取回該緩沖區(qū)。
22.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該暫存步驟進一步包含暫存查詢產生、查詢消滅、查詢傳送指令及其對應的事件標簽。
23.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,其中該確認步驟進一步包含確認執(zhí)行狀態(tài)及文本階段狀態(tài);將該執(zhí)行狀態(tài)及文本階段狀態(tài)寫回一裝置驅動程序接口定義的緩沖區(qū);以及若發(fā)現一錯誤,則返回一操作系統。
24.如權利要求16所述的用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,還包含當儲存于該緩沖區(qū)中的該異步指令已由該第一CPU執(zhí)行緒處理后,釋放該緩沖區(qū)。
全文摘要
本發(fā)明披露了一種用于多核心計算機系統中驅動程序的支持多執(zhí)行緒指令執(zhí)行的方法,該方法包括將異步指令和同步指令分開,將該異步指令暫存于一緩沖區(qū),直接在一CPU驅動程序執(zhí)行緒處理該同步指令,以一個或多個CPU工作執(zhí)行緒從該緩沖區(qū)處理該異步指令,其中該多核心計算機系統的多個執(zhí)行緒可以同時使用,并當該CPU工作執(zhí)行緒處理該緩沖區(qū)之后,管理該緩沖區(qū),其中該指令的執(zhí)行對應用軟件就如同單一執(zhí)行緒一般。
文檔編號G06F9/46GK101025695SQ20061013594
公開日2007年8月29日 申請日期2006年10月17日 優(yōu)先權日2005年10月17日
發(fā)明者張國峰 申請人:威盛電子股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
怀仁县| 库车县| 英超| 五指山市| 岳西县| 鹤壁市| 吴忠市| 石楼县| 钟山县| 固安县| 德清县| 黑水县| 平邑县| 稷山县| 吉安市| 小金县| 依安县| 奉节县| 隆子县| 江达县| 无锡市| 平潭县| 福安市| 昂仁县| 盐池县| 石渠县| 德格县| 安多县| 通道| 同江市| 凉城县| 班戈县| 商洛市| 波密县| 洪江市| 冀州市| 神池县| 新田县| 商水县| 斗六市| 新密市|