用于事件的安全排隊(duì)的方法和系統(tǒng)的制作方法
【專利摘要】用于促進(jìn)在第一處理單元中執(zhí)行的用戶級(jí)應(yīng)用程序?yàn)榈诙幚韱卧踩貙?duì)工作或任務(wù)進(jìn)行排隊(duì),而不執(zhí)行任何環(huán)變換的方法和系統(tǒng)。例如,在本發(fā)明的一個(gè)實(shí)施例中,第一處理單元執(zhí)行一個(gè)或多個(gè)用戶級(jí)應(yīng)用程序,其中每個(gè)用戶級(jí)應(yīng)用程序具有將卸載到第二處理單元的任務(wù)。在本發(fā)明的一個(gè)實(shí)施例中,第一處理單元用信號(hào)通知第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),而不執(zhí)行任何環(huán)變換。
【專利說明】用于事件的安全排隊(duì)的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及系統(tǒng),更具體但并非排他地,涉及用于從一個(gè)處理單元到另一個(gè)處理單元的事件安全排隊(duì)而不使用任何環(huán)變換的方法和系統(tǒng)。
【背景技術(shù)】
[0002]系統(tǒng)可以有多個(gè)處理單元或設(shè)備。處理單元可以卸載任務(wù)或事件給在系統(tǒng)中的另一處理單元。然而,處理單元需要采用環(huán)變換來對(duì)將要卸載到另一處理單元的任務(wù)進(jìn)行排隊(duì)。例如,在現(xiàn)有技術(shù)圖1 100中,在環(huán)3 140中執(zhí)行的用戶級(jí)應(yīng)用程序需要通過環(huán)2 130和環(huán)I 120變換到在環(huán)O 110中的內(nèi)核模式,以對(duì)將要卸載到另一處理單元的任務(wù)進(jìn)行排隊(duì)。
【專利附圖】
【附圖說明】
[0003]通過以下對(duì)主題的詳細(xì)描述,本發(fā)明的實(shí)施例的特征和優(yōu)點(diǎn)將會(huì)變得明顯,其中:
[0004]圖1示出了等級(jí)保護(hù)域或環(huán)的現(xiàn)有技術(shù)框圖;
[0005]圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的事件的安全排隊(duì)的框圖;
[0006]圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的事件的安全排隊(duì)的框圖;
[0007]圖4A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)本文公開的方法的系統(tǒng);以及
[0008]圖4B示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)本文公開的方法的系統(tǒng)。
【具體實(shí)施方式】
[0009]本文所描述的本發(fā)明的實(shí)施例在附圖中以示例的方式而不是限制的方式示出。為了解釋的簡單和清晰,在圖中示出的元件不一定按照比例畫出。例如,為了清晰,相對(duì)于其他元件增大了一些元件的尺寸。進(jìn)一步地,在圖之間,參考數(shù)字在認(rèn)為合適的地方重復(fù)以指示對(duì)應(yīng)的或類似的元件。在本發(fā)明說明書中引用的“一個(gè)實(shí)施例”或“實(shí)施例”意思是結(jié)合實(shí)施例描述的特定的特征、結(jié)構(gòu)或特性至少包括在本發(fā)明的一個(gè)實(shí)施例中。因此,在說明書各處出現(xiàn)的短語“在一個(gè)實(shí)施例中”不一定全指同一個(gè)實(shí)施例。
[0010]本發(fā)明的實(shí)施例提供一種方法和系統(tǒng),用以促進(jìn)在第一處理單元中執(zhí)行的用戶級(jí)應(yīng)用程序?yàn)榈诙幚韱卧踩嘏抨?duì)工作或任務(wù),而不執(zhí)行任何環(huán)變換。例如,在本發(fā)明的一個(gè)實(shí)施例中,第一處理單元執(zhí)行一個(gè)或多個(gè)用戶級(jí)應(yīng)用程序,其中每個(gè)用戶級(jí)應(yīng)用程序均具有將要卸載到第二處理單元的任務(wù)。在本發(fā)明的一個(gè)實(shí)施例中,第一處理單元用信號(hào)通知第二處理單元來處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),而不執(zhí)行任何環(huán)變換。
[0011]第一和第二處理單元包括,但不限于,中央處理單元(CPU)、圖形處理單元(GPU)、數(shù)字信號(hào)處理器(DSP)和任何其他的處理單元。例如,在本發(fā)明的一個(gè)實(shí)施例中,第一處理單元是CPU而第二處理單元是GPU。
[0012]在本發(fā)明的一個(gè)實(shí)施例中,用戶級(jí)軟件線程在CPU上執(zhí)行,用信號(hào)通知GPU:它有任務(wù)將要卸載到GPU,而不帶來到操作系統(tǒng)(OS)內(nèi)核級(jí)別的環(huán)變換的開銷。在本發(fā)明的一個(gè)實(shí)施例中,通過避免CPU的到OS內(nèi)核級(jí)別的環(huán)變換,CPU不打開安全漏洞,同時(shí)通過信號(hào)通知GPU它有任務(wù)將要卸載到所述GPU。
[0013]圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的事件的安全排隊(duì)的框圖200。為了解釋的清晰,圖2示出了 CPU,其對(duì)將要由GPU 260執(zhí)行的事件進(jìn)行排隊(duì)。在本發(fā)明的一個(gè)實(shí)施例中,每個(gè)事件指示了將要由GPU 260執(zhí)行的工作或任務(wù)。
[0014]在本發(fā)明的一個(gè)實(shí)施例中,CPU具有等級(jí)保護(hù)域或者環(huán),其提供到系統(tǒng)中的資源的不同級(jí)別的安全訪問。例如,在本發(fā)明的一個(gè)實(shí)施例中,CPU具有監(jiān)督級(jí)別或者環(huán)O 250、用戶級(jí)或環(huán)3 210、以及為了圖示清晰而沒有在圖2中展示的其他環(huán)。相關(guān)領(lǐng)域中普通的技術(shù)人員將會(huì)容易地理解等級(jí)保護(hù)環(huán)的工作,在此將不對(duì)其進(jìn)行描述。
[0015]在本發(fā)明的一個(gè)實(shí)施例中,CPU在環(huán)3 210中執(zhí)行一個(gè)或多個(gè)用戶級(jí)應(yīng)用程序,其示出為:應(yīng)用程序(App.) I 220、App.2 230和App.N 240。所述App.N 240示出在本發(fā)明的一個(gè)實(shí)施例中,可能有任何數(shù)量的可在CPU上執(zhí)行的用戶級(jí)應(yīng)用。
[0016]在本發(fā)明的一個(gè)實(shí)施例中,在CPU上執(zhí)行的每個(gè)用戶級(jí)的應(yīng)用程序具有指示器,其指示它有任務(wù)將要被卸載到GPU 260。在本發(fā)明的一個(gè)實(shí)施例中,通過對(duì)任務(wù)的標(biāo)識(shí)進(jìn)行排隊(duì)到可被GPU 260訪問的隊(duì)列里而卸載任務(wù)。
[0017]為了解釋的清晰,假定App.1 220和App.N 240中的每個(gè)具有一個(gè)或多個(gè)任務(wù)或工作將要被卸載到GPU 260。在本發(fā)明的一個(gè)實(shí)施例中,App.1 220和App.N 240各自具有映射的門鈴指示器225和映射的門鈴指示器245。在本發(fā)明的一個(gè)實(shí)施例中,映射的門鈴指示器225和映射的門鈴指示器245是在App.1 220和App.N 240各自的虛擬地址空間中。
[0018]在本發(fā)明的一個(gè)實(shí)施例中,GPU 260具有與CPU通信的邏輯。在本發(fā)明的一個(gè)實(shí)施例中,所述邏輯具有門鈴指示器270、272、274和276。每個(gè)門鈴指示器270、272、274和276各自與在CPU上執(zhí)行的用戶級(jí)應(yīng)用程序的映射的門鈴指示器相關(guān)聯(lián)。
[0019]例如,在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)App.1 220具有將要卸載到GPU 260的任務(wù)時(shí),App.1 220寫入或設(shè)定映射的門鈴指示器225。映射的門鈴指示器225與GPU 260中的門鈴指示器272相關(guān)聯(lián)。當(dāng)設(shè)定了映射的門鈴指示器225時(shí),GPU 260的邏輯設(shè)定門鈴指示器272,作為對(duì)設(shè)定映射的門鈴指示器225的響應(yīng)。
[0020]相似地,在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)App.N 240具有將要卸載到GPU260的任務(wù)時(shí),App.N 240寫入或設(shè)定映射的門鈴指示器245。映射的門鈴指示器245與GPU 260中的門鈴指示器276相關(guān)聯(lián)。當(dāng)設(shè)定了映射的門鈴指示器245時(shí),GPU 260的邏輯設(shè)定門鈴指示器276,作為對(duì)設(shè)定映射的門鈴指示器245的響應(yīng)。假定App.2 230沒有將要卸載到GPU260的任何任務(wù),則不寫入它的映射的門鈴指示器。
[0021]在本發(fā)明的一個(gè)實(shí)施例中,在GPU 260中的邏輯具有門鈴選擇器280。門鈴選擇器280選擇已設(shè)定的門鈴指示器270、272、274和276中的一個(gè)。假定門鈴指示器270和274被其他應(yīng)用程序設(shè)定,為了解釋的清晰而沒有在圖2中示出所述其他應(yīng)用程序。在選擇了門鈴指示器270、272、274和276中的一個(gè)之后,門鈴選擇器280為GPU 260產(chǎn)生中斷290。
[0022]在本發(fā)明的一個(gè)實(shí)施例中,中斷290指示GPU 260:存在將要執(zhí)行的與選擇的門鈴指示器相關(guān)聯(lián)的任務(wù),GPU 260進(jìn)行處理所述任務(wù)。例如,在本發(fā)明的一個(gè)實(shí)施例中,門鈴選擇器280選擇門鈴272并且產(chǎn)生中斷290以通知GPU 260。在本發(fā)明的一個(gè)實(shí)施例中,App.1 220的標(biāo)識(shí)被寫入寄存器中以允許GPU 260處理從App.1 220卸載的任務(wù)。在本發(fā)明的一個(gè)實(shí)施例中,GPU使用App.1 220的標(biāo)識(shí)來判定需要執(zhí)行哪個(gè)任務(wù)。
[0023]在本發(fā)明的一個(gè)實(shí)施例中,在與選擇的門鈴相關(guān)聯(lián)的應(yīng)用程序的標(biāo)識(shí)被寫入寄存器之后,選擇的門鈴的設(shè)定被清除或者復(fù)位。例如,在本發(fā)明的一個(gè)實(shí)施例中,在App.1 220的標(biāo)識(shí)被寫入寄存器之后,門鈴272被清除或復(fù)位,并且生成了中斷290。在本發(fā)明的一個(gè)實(shí)施例中,這使得門鈴選擇器280可以僅僅選擇已經(jīng)被設(shè)定的門鈴。
[0024]在本發(fā)明的一個(gè)實(shí)施例中,門鈴選擇器280使用確??缭接脩艏?jí)進(jìn)程的公平的規(guī)則來檢查門鈴。在本發(fā)明的一個(gè)實(shí)施例中,這防止了惡意軟件造成拒絕服務(wù)攻擊。
[0025]例如,在本發(fā)明的一個(gè)實(shí)施例中,門鈴選擇器280基于門鈴選擇器的優(yōu)先級(jí),在門鈴指示器270、272、274和276之間選擇一個(gè)門鈴指示器。例如,在本發(fā)明的一個(gè)實(shí)施例中,門鈴指示器270、272、274和276中的每個(gè)設(shè)定有優(yōu)先級(jí)。門鈴選擇器280檢查門鈴指示器270、272、274和276的優(yōu)先級(jí),并且基于優(yōu)先級(jí)選擇一個(gè)門鈴指示器。在本發(fā)明的一個(gè)實(shí)施例中,門鈴指示器的優(yōu)先級(jí)基于但不限于系統(tǒng)的可用資源、完成時(shí)間、執(zhí)行時(shí)間、以及被CPU用以分類卸載的任務(wù)的任何其他因素。
[0026]在本發(fā)明的一個(gè)實(shí)施例的另一個(gè)示例中,門鈴選擇器280基于最近最少使用的標(biāo)準(zhǔn),在門鈴指示器270、272、274和276中選擇一個(gè)門鈴指示器。例如,在本發(fā)明的一個(gè)實(shí)施例中,門鈴選擇器280檢查門鈴指示器270、272、274和276中的哪個(gè)是最近最少使用(LRU)的,并且選擇LRU門鈴指示器。
[0027]在本發(fā)明的其他實(shí)施例中,門鈴選擇器280使用其他標(biāo)準(zhǔn)來保證門鈴指示器270、272、274和276的公平選擇。相關(guān)領(lǐng)域中的普通技術(shù)人員將會(huì)容易理解如何選擇其他標(biāo)準(zhǔn),并且這些其他標(biāo)準(zhǔn)可以被使用而不影響本發(fā)明的工作。
[0028]在本發(fā)明的一個(gè)實(shí)施例中,在CPU和GPU 260之間的通信允許異步的信號(hào)通知已經(jīng)為GPU 260的處理而對(duì)任務(wù)進(jìn)行了排隊(duì)。在CPU和GPU 260之間的信號(hào)通知不需要環(huán)變換,并且它提供安全方式來通過信號(hào)通知GPU260而不打開任何安全漏洞。
[0029]圖2中的圖示不是為了進(jìn)行限制。例如,在本發(fā)明的另一個(gè)實(shí)施例中,GPU 260向CPU卸載任務(wù)并且為CPU對(duì)任務(wù)進(jìn)行排隊(duì)。在本發(fā)明的又一個(gè)實(shí)施例中,除了 CPU和GPU之外的另一類型的處理單元可以使用相同的邏輯和方法來用信號(hào)通知處理單元。在本發(fā)明的一個(gè)實(shí)施例中,門鈴選擇器280和門鈴指示器270、272、274和276不需要是GPU 260的一部分,并且可以實(shí)施為GPU 260之外的邏輯。
[0030]圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的事件的安全排隊(duì)的框圖300。為了解釋的清晰,參考圖2來討論圖3。在本發(fā)明的一個(gè)實(shí)施例中,門鈴指示器270、272、274和276實(shí)施為存儲(chǔ)在門鈴存儲(chǔ)器352中的門鈴陣列的一部分。圖3示出了在本發(fā)明的一個(gè)實(shí)施例中用于三十個(gè)公共門鈴的邏輯,但是它的目的不是為了限制。相關(guān)領(lǐng)域中的普通技術(shù)人員將會(huì)容易理解如何應(yīng)用本發(fā)明的工作用于其他數(shù)量的公共門鈴。
[0031]在本發(fā)明的一個(gè)實(shí)施例中,當(dāng)用戶級(jí)應(yīng)用程序?qū)懭胨挠成涞拈T鈴指示器時(shí),在GPU 260的邏輯中的各自的門鈴指示器根據(jù)使用公共門鈴寫入數(shù)據(jù)[9:0]信號(hào)而被設(shè)定。公共門鈴寫入數(shù)據(jù)[9:0]信號(hào)連接到5到32行解碼邏輯330和5到32位解碼邏輯340。
[0032]5到32行解碼邏輯330和5到32位解碼邏輯340與具有兩個(gè)讀取端口的門鈴存儲(chǔ)器352連接。在本發(fā)明的一個(gè)實(shí)施例中,門鈴存儲(chǔ)器352存儲(chǔ)三十二個(gè)32位字,其代表了三十二個(gè)門鈴指示器的陣列。公共門寫入數(shù)據(jù)[9:0]信號(hào)使用5位作為用于5到32行解碼邏輯330的行地址,和另外5位作為用于5到32位解碼邏輯340的位地址。
[0033]每個(gè)門鈴指示器與具有一個(gè)或多個(gè)將要排隊(duì)的任務(wù)的應(yīng)用程序相關(guān)聯(lián)。在本發(fā)明的一個(gè)實(shí)施例中,每個(gè)應(yīng)用程序在應(yīng)用程序的初始化過程中被分配有應(yīng)用程序標(biāo)識(shí)(APP_ID)。
[0034]邏輯具有與在門鈴存儲(chǔ)器352中的每個(gè)門鈴指示器相關(guān)聯(lián)的對(duì)應(yīng)的門使能存儲(chǔ)器322。在本發(fā)明的一個(gè)實(shí)施例中,門鈴使能存儲(chǔ)器322存儲(chǔ)三十二個(gè)32位字。在本發(fā)明的一個(gè)實(shí)施例中,門鈴使能存儲(chǔ)器322針對(duì)門鈴存儲(chǔ)器352中的三十二個(gè)門鈴指示器中的每個(gè)具有各自的門鈴使能信號(hào)。在本發(fā)明的一個(gè)實(shí)施例中,門鈴使能存儲(chǔ)器322防止無效門鈴由不受信任的軟件設(shè)定。
[0035]在本發(fā)明的一個(gè)實(shí)施例中,在門鈴使能存儲(chǔ)器322中的各自的門鈴使能信號(hào)是經(jīng)由公共門鈴使能寫入信號(hào)310設(shè)定的。在本發(fā)明的一個(gè)實(shí)施例中,公共門鈴使能寫入信號(hào)310具有與5到32行解碼邏輯320耦合的5個(gè)行地址信號(hào)用來選擇門鈴使能存儲(chǔ)器322的期望行,并且邏輯在選擇的期望行中寫入或存儲(chǔ)期望的設(shè)置。
[0036]在本發(fā)明的一個(gè)實(shí)施例中,門鈴存儲(chǔ)器352具有32個(gè)輸入信號(hào),示出為wdata[31:0] 350。門鈴存儲(chǔ)器352的每個(gè)輸入信號(hào)耦合到AND門和OR門。例如,在本發(fā)明的一個(gè)實(shí)施例中,門鈴存儲(chǔ)器352的wdata[31]信號(hào)耦合到AND門346和OR門342。門鈴存儲(chǔ)器352的wdata [O]信號(hào)耦合到AND門348和OR門344。門鈴存儲(chǔ)器352的每個(gè)其他輸入信號(hào)耦合到AND門和OR門,但是為了解釋的清晰,沒有在圖3中展示。
[0037]在本發(fā)明的一個(gè)實(shí)施例中,經(jīng)由5到32行解碼邏輯320選擇的讀取端口 324來讀取門鈴使能存儲(chǔ)器322。讀取端口 324的輸出耦合到門鈴存儲(chǔ)器352的每個(gè)輸入信號(hào)的每個(gè)AND門。通過這樣做,與門鈴存儲(chǔ)器352中每個(gè)門鈴相關(guān)聯(lián)的門鈴使能信號(hào)控制門鈴存儲(chǔ)器352的每個(gè)輸入信號(hào)的訪問。
[0038]例如,在本發(fā)明的一個(gè)實(shí)施例中,AND門346的第一輸入耦合到讀取端口 324的輸出。當(dāng)由5到32行解碼邏輯330選擇特定的門鈴指示器時(shí),僅當(dāng)讀取端口 324的輸出是斷言的或啟用的時(shí),可以設(shè)定wdata [31]信號(hào)的位設(shè)定。
[0039]AND門346的第二輸入耦合到各自一個(gè)clear_bit[31:0]信號(hào),即來自位32位最近最少訪問(LRA)的搜尋邏輯360的clear_bit[31]信號(hào)。在本發(fā)明的一個(gè)實(shí)施例中,clear_bit[31:0]信號(hào)可以被設(shè)定為邏輯零,以清除在門鈴存儲(chǔ)器352中的門鈴指示器的各自設(shè)定。例如,當(dāng)clear_bit[31]被設(shè)定為邏輯零時(shí),AND 346的輸出被設(shè)定為邏輯零,并且它清除選擇的門鈴指示器的值。
[0040]在本發(fā)明的一個(gè)實(shí)施例中,AND門346的第三輸入耦合到OR門342的輸出。OR門342的第一輸入耦合到門鈴存儲(chǔ)器352的讀取端口 I 354的輸出。OR門342的第二輸入耦合到5到32位解碼邏輯340的輸出。為了設(shè)定特定的門鈴,公共門鈴寫入數(shù)據(jù)[9:0]提供特定門鈴的行和位地址。5到32位解碼邏輯340和5到32行解碼邏輯330相應(yīng)地解碼公共門鈴寫入數(shù)據(jù)[9:0]以設(shè)定特定的門鈴。AND門和OR門耦合到門鈴存儲(chǔ)器352其他每個(gè)輸入的工作,類似于AND門346和OR門342,并且將不會(huì)在這里描述。
[0041]在本發(fā)明的一個(gè)實(shí)施例中,門鈴存儲(chǔ)器352耦合到三十二個(gè)32到I OR門,如OR門372和374所示出的。三十二個(gè)32到I OR門中每個(gè)的輸出耦合到行32位LRA搜尋邏輯370。每個(gè)OR門使用門鈴存儲(chǔ)器352的特定行的32位作為其輸入。當(dāng)門鈴存儲(chǔ)器352的特定行的一個(gè)或多個(gè)位被設(shè)定時(shí),OR門的輸出被斷言。
[0042]行32位LRA搜尋邏輯370使用每個(gè)OR門的輸出來判定門鈴存儲(chǔ)器352的特定行是否已經(jīng)被斷言。在本發(fā)明的一個(gè)實(shí)施例中,行32位LRA搜尋邏輯370選擇LRA行,并且以LRA行的地址設(shè)定讀取端口 O 356。讀取端口 O 356的輸出耦合到位32位LRA搜尋邏輯360。位32位LRA搜尋邏輯360選擇在LRA行中具有最高優(yōu)先級(jí)的門鈴位,并且將與選擇的門鈴位相關(guān)聯(lián)的APP_ID排隊(duì)到先進(jìn)先出(FIFO)隊(duì)列380。APP_ID 382被寫入公共門鈴矢量寄存器,其可以被處理單元訪問以處理卸載的任務(wù)。
[0043]當(dāng)FIFO隊(duì)列380是空的時(shí),F(xiàn)IFO空信號(hào)384被設(shè)定。經(jīng)由逆變器390,中斷信號(hào)386耦合到FIFO空信號(hào)384。當(dāng)FIFO隊(duì)列380不是空的時(shí),F(xiàn)IFO空信號(hào)384解除斷言,而中斷信號(hào)386被斷言。中斷信號(hào)386指示有任務(wù)將要被處理或者執(zhí)行。當(dāng)FIFO隊(duì)列380是滿的時(shí),輪詢仲裁器,即行32位LRA搜尋邏輯370和位32位LRA搜尋邏輯360,停止對(duì)任務(wù)排隊(duì)以防止任何可能的溢出。
[0044]在本發(fā)明的一個(gè)實(shí)施例中,門鈴指示器被分配作為最后一級(jí)高速緩存等級(jí)的一部分,其可以作為高速緩存客戶端而被CPU和GPU訪問。當(dāng)門鈴頁面或者高速緩存存儲(chǔ)器線被分配給GPU時(shí),高速緩存存儲(chǔ)器線的排他所有權(quán)被傳送給GPU。按照包容高速緩存等級(jí)的高速緩存一致性協(xié)議(修改的、排他的、共享的、無效的一MESI規(guī)則),更新門鈴高速緩存存儲(chǔ)器線的用戶級(jí)應(yīng)用程序必須通過使GPU的所有權(quán)無效來將所有權(quán)傳送回CPU。所有權(quán)傳送被GPU用作讀取更新內(nèi)容的觸發(fā)機(jī)制,并判定用戶級(jí)應(yīng)用程序是否已經(jīng)提交任何工作或任務(wù)。
[0045]這一機(jī)制允許單個(gè)門鈴被分配給一個(gè)用戶級(jí)應(yīng)用程序和多個(gè)用戶級(jí)應(yīng)用程序。在多個(gè)用戶級(jí)應(yīng)用程序被分配給單個(gè)門鈴指示的情況下,每個(gè)用戶級(jí)應(yīng)用程序競爭以設(shè)定門鈴指示器,并且門鈴指示器的成功設(shè)定是經(jīng)由在可高速緩存的存儲(chǔ)器空間上的原子操作進(jìn)行的。
[0046]圖4A示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于實(shí)現(xiàn)本文公開的方法的系統(tǒng)400。系統(tǒng)400包括但不限于,臺(tái)式計(jì)算機(jī)、平板計(jì)算機(jī)、膝上計(jì)算機(jī)、上網(wǎng)本、筆記本計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、服務(wù)器、工作站、蜂窩電話、移動(dòng)計(jì)算設(shè)備、智能電話、互聯(lián)網(wǎng)家電或者任何其他類型的計(jì)算設(shè)備。在另一個(gè)實(shí)施例中,用來實(shí)現(xiàn)本文公開的方法的系統(tǒng)400可以是片上系統(tǒng)(SOC)系統(tǒng)。
[0047]處理器410具有處理核心412,用來執(zhí)行系統(tǒng)400的指令。處理核心412包括但不限于,用來取得指令的預(yù)取邏輯、用來解碼指令的解碼邏輯、用來執(zhí)行指令的執(zhí)行邏輯,等等。處理器410具有高速緩存存儲(chǔ)器416,用來高速緩存系統(tǒng)400的指令和/或數(shù)據(jù)。在本發(fā)明的另一個(gè)實(shí)施例中,高速緩存存儲(chǔ)器416包括但不限于,一級(jí)、二級(jí)和三級(jí)高速緩存存儲(chǔ)器或者在處理器410內(nèi)的任何其他配置的高速緩存存儲(chǔ)器。
[0048]存儲(chǔ)器控制中心(MCH)414執(zhí)行以下功能:其使得處理器410能夠訪問存儲(chǔ)器430并與存儲(chǔ)器430通信,所述存儲(chǔ)器430包括易失性存儲(chǔ)器432和/或非易失性存儲(chǔ)器434。易失性存儲(chǔ)器432包括但不限于,同步動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(SDRAM)、動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM),RAMBUS動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(RDRAM)和/或任何其他類型的隨機(jī)訪問存儲(chǔ)器設(shè)備。非易失性存儲(chǔ)器434包括但不限于,NAND閃存、相變存儲(chǔ)器(PCM)、只讀存儲(chǔ)器(ROM)、電可擦可編程只讀存儲(chǔ)器(EEPROM)、或者任何其他類型的非易失性存儲(chǔ)器設(shè)備。
[0049]存儲(chǔ)器430存儲(chǔ)將要被處理器410執(zhí)行的信息和指令。當(dāng)處理器410正在執(zhí)行指令時(shí),存儲(chǔ)器430還可以存儲(chǔ)臨時(shí)變量或者其他中間信息。芯片組420經(jīng)由點(diǎn)對(duì)點(diǎn)(PtP)接口 417和422與處理器410連接。芯片組420使得處理器410能夠連接到系統(tǒng)400中的其他模塊。在本發(fā)明的一個(gè)實(shí)施例中,接口 417和422按照PtP通信協(xié)議操作,例如Intel?快速通道互聯(lián)(QPI)等等。芯片組420連接到GPU或者顯示設(shè)備440上,其包括但不限于液晶顯示器(IXD)、陰極射線管(CRT)顯示器或者任何其他形式的虛擬顯示設(shè)備。
[0050]此外,芯片組420連接到互連各種模塊474、480、482、484和486的一個(gè)或多個(gè)總線450和460。如果在總線速度或者通信協(xié)議中有不匹配,則總線450和460可以經(jīng)由總線橋472互連在一起。芯片組420與非易失性存儲(chǔ)器480、大規(guī)模存儲(chǔ)設(shè)備482、鍵盤/鼠標(biāo)484和網(wǎng)絡(luò)接口 486耦合,但并不局限于此。大規(guī)模存儲(chǔ)設(shè)備482包括,但不限于固態(tài)驅(qū)動(dòng)、硬盤驅(qū)動(dòng)、通用串行總線閃存驅(qū)動(dòng)、或者任何其他形式的計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)介質(zhì)。使用任何類型的已知網(wǎng)絡(luò)接口標(biāo)準(zhǔn)實(shí)現(xiàn)網(wǎng)絡(luò)接口 486,包括,但不限于以太網(wǎng)接口、通用串行總線(USB)接口、外部設(shè)備互連(PCI)快速接口、無線接口和/或任何其他合適類型的接口。無線接口根據(jù)但不限于以下協(xié)議進(jìn)行操作=IEEE 802.11標(biāo)準(zhǔn)及其相關(guān)家族、家用電力線AV(HPAV)、超寬帶(UWB)、藍(lán)牙、WiMax或者任何形式的無線通信協(xié)議。
[0051]盡管在圖4中示出的模塊被描繪成系統(tǒng)400內(nèi)的分離框,但這些框中的一些執(zhí)行的功能可以被集成在單個(gè)半導(dǎo)體電路內(nèi),或者可以使用兩個(gè)或更多個(gè)分離的集成電路實(shí)現(xiàn)。在本發(fā)明的另一個(gè)實(shí)施例中,系統(tǒng)400可以包括不止一個(gè)處理器/處理核心。
[0052]圖4B示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的實(shí)現(xiàn)本文所公開的方法的系統(tǒng)490。系統(tǒng)490是系統(tǒng)400的變 型,其中GPU 492與處理器410集成在一起。在本發(fā)明的一個(gè)實(shí)施例中,GPU 492耦合到顯示器494。在系統(tǒng)490中的其他部件與在系統(tǒng)400中的部件相似,將不在此進(jìn)行描述。
[0053]本文公開的方法可以用硬件、軟件、固件或者其任何其他組合實(shí)現(xiàn)。盡管描述了公開主題的實(shí)施例的示例,但相關(guān)領(lǐng)域的普通技術(shù)人員將會(huì)容易地明白可以替代地使用實(shí)現(xiàn)所公開主題的許多其他方法。在前面的描述中,已經(jīng)描述了所公開主題的各方面。為了解釋的目的,陳述了特定數(shù)字、系統(tǒng)和配置,是為了提供對(duì)主題的透徹理解。然而,對(duì)受益于本公開的相關(guān)領(lǐng)域的普通技術(shù)人員來說顯然的是,可以不采用特定的細(xì)節(jié)來實(shí)踐本主題。在其他例子中,省略、簡化、合并或者分解熟知的特征、部件或者模塊是為了不模糊所公開的主題。
[0054]本文所使用的術(shù)語“可操作的”的意思是當(dāng)設(shè)備或者系統(tǒng)處于斷電狀態(tài)時(shí),設(shè)備、系統(tǒng)、協(xié)議等能夠操作或者適用于操作其期望的功能。所公開主題的各種實(shí)施例可以用硬件、固件、軟件或者其組合實(shí)現(xiàn),并且可以參考或結(jié)合程序代碼進(jìn)行描述,例如指令、函數(shù)、程序、數(shù)據(jù)結(jié)構(gòu)、邏輯、應(yīng)用程序、設(shè)計(jì)表現(xiàn)或者用于仿真、模擬和直到設(shè)計(jì)的格式,當(dāng)被機(jī)器訪問時(shí)會(huì)造成機(jī)器執(zhí)行任務(wù)、定義摘要數(shù)據(jù)類型或者低級(jí)別硬件上下文、或者產(chǎn)生結(jié)果。
[0055]在附圖中展示的技術(shù)可以使用在一個(gè)或多個(gè)計(jì)算設(shè)備中(例如通用計(jì)算機(jī)或者計(jì)算設(shè)備)存儲(chǔ)和執(zhí)行的代碼和 數(shù)據(jù)實(shí)現(xiàn)。這樣的計(jì)算設(shè)備使用機(jī)器可讀介質(zhì)來(在內(nèi)部和通過網(wǎng)絡(luò)與其他計(jì)算設(shè)備)存儲(chǔ)并通信代碼和數(shù)據(jù),所述機(jī)器可讀介質(zhì)例如是機(jī)器可讀存儲(chǔ)器介質(zhì)(例如磁盤;光盤;隨機(jī)訪問存儲(chǔ)器;只讀存儲(chǔ)器;閃存設(shè)備;相變存儲(chǔ)器)和機(jī)器可讀通信介質(zhì)(例如,電、光、聲或者其他形式的傳播信號(hào)一例如載波、紅外信號(hào)、數(shù)字信號(hào)
-rf* ) O
[0056]盡管已經(jīng)參考解釋性的實(shí)施例描述了所公開的主題,但本說明書目的不應(yīng)解釋為限制的含義。對(duì)主題的示出的實(shí)施例和其它實(shí)施例的各種修改對(duì)于所公開主題所屬于的領(lǐng)域中的技術(shù)人員而言是明顯的,并且這些修改被視落入所公開主題的范圍內(nèi)。
【權(quán)利要求】
1.一種裝置,包括: 第一處理單兀,用于: 執(zhí)行一個(gè)或多個(gè)用戶級(jí)應(yīng)用程序,其中每個(gè)用戶級(jí)應(yīng)用程序?qū)⑿遁d任務(wù)到第二處理單元;以及 用信號(hào)通知所述第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),而不執(zhí)行任何環(huán)變換。
2.如權(quán)利要求1所述的裝置,其中每個(gè)用戶級(jí)應(yīng)用程序具有第一指示器,其中所述第一處理單元用信號(hào)通知所述第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù)而不執(zhí)行任何環(huán)變換用于: 響應(yīng)于每個(gè)用戶級(jí)應(yīng)用程序具有待卸載到所述第二處理單元的任務(wù),設(shè)定每個(gè)用戶級(jí)應(yīng)用程序的所述第一指示器。
3.如權(quán)利要求2所述的裝置,進(jìn)一步包括: 邏輯,用于: 基于每個(gè)用戶級(jí)應(yīng)用程序的每個(gè)對(duì)應(yīng)的第一指示器,設(shè)定多個(gè)第二指示器中的每一個(gè); 選擇所述多個(gè)第 二指示器中的一個(gè); 判定與所選擇的第二指示器相關(guān)聯(lián)的所述用戶級(jí)應(yīng)用程序的標(biāo)識(shí)(ID);以及 將所述用戶級(jí)應(yīng)用程序的所述ID存儲(chǔ)到先進(jìn)先出(FIFO)隊(duì)列。
4.如權(quán)利要求3所述的裝置,其中所述邏輯進(jìn)一步用于: 為所述第二處理單元產(chǎn)生中斷,其中所述中斷用于指示所述FIFO隊(duì)列不是空的。
5.如權(quán)利要求4所述的裝置,其中所述邏輯進(jìn)一步用于: 響應(yīng)于將所述用戶級(jí)應(yīng)用程序的所述ID存儲(chǔ)到所述FIFO隊(duì)列,清除所選擇的第二指示器。
6.如權(quán)利要求3所述的裝置,其中用于選擇所述多個(gè)第二指示器中的一個(gè)的邏輯用于:基于所述多個(gè)第二指示器的優(yōu)先級(jí),來選擇所述多個(gè)第二指示器中的一個(gè)。
7.如權(quán)利要求3所述的裝置,其中用于選擇所述多個(gè)第二指示器中的一個(gè)的邏輯用于:基于最近最少使用(LSU)標(biāo)準(zhǔn),來選擇所述多個(gè)第二指示器中的一個(gè)。
8.如權(quán)利要求3所述的裝置,其中所述邏輯進(jìn)一步用于斷言與所選擇的第二指示器相關(guān)聯(lián)的使能信號(hào),并且其中用于選擇所述多個(gè)第二指示器中的一個(gè)的邏輯用于:響應(yīng)于與所選擇的第二指示器相關(guān)聯(lián)的所述使能信號(hào)的斷言,來選擇所述多個(gè)第二指示器中的一個(gè)。
9.如權(quán)利要求1所述的裝置,其中所述第一處理單元是中央處理單元,并且其中所述第二處理單元是圖形處理單元。
10.如權(quán)利要求3所述的裝置,其中所述多個(gè)第二指示器是公共門鈴,其中每個(gè)第一指示器是在與每個(gè)各自公共門鈴相關(guān)聯(lián)的每個(gè)用戶級(jí)應(yīng)用程序的虛擬地址空間中的映射的門鈴。
11.如權(quán)利要求10所述的裝置,其中所述公共門鈴是最后一級(jí)高速緩存存儲(chǔ)器等級(jí)的一部分,能作為高速緩存存儲(chǔ)器客戶端而被所述第一處理單元和所述第二處理單元訪問。
12.如權(quán)利要求1所述的裝置,其中用信號(hào)通知所述第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),而不執(zhí)行任何環(huán)變換的第一處理器用于:用信號(hào)通知所述第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),同時(shí)保持每個(gè)用戶級(jí)應(yīng)用程序的特權(quán)級(jí)別。
13.一種裝置,包括: 第一處理模塊,用于: 執(zhí)行一個(gè)或多個(gè)用戶級(jí)線程來為第二處理模塊的事件進(jìn)行排隊(duì);以及 繞過每個(gè)用戶級(jí)線程的監(jiān)督級(jí)別驗(yàn)證,用信號(hào)通知所述第二處理模塊執(zhí)行所述事件。
14.如權(quán)利要求13所述的裝置,其中每個(gè)用戶級(jí)線程具有第一指示器,并且其中繞過每個(gè)用戶級(jí)線程的所述監(jiān)督級(jí)別驗(yàn)證,用信號(hào)通知所述第二處理模塊執(zhí)行所述事件的第一處理模塊用于: 響應(yīng)于每個(gè)用戶級(jí)線程具有待為所述第二處理模塊排隊(duì)的事件,設(shè)定每個(gè)用戶級(jí)線程的所述第一指示器。
15.如權(quán)利要求14所述的裝置,進(jìn)一步包括: 邏輯,用于: 基于每個(gè)用戶級(jí)線程的每個(gè)對(duì)應(yīng)的第一指示器,設(shè)定多個(gè)第二指示器中的每一個(gè); 選擇所述多個(gè)第二指示器中的一個(gè); 判定與所選擇的第二指示器相關(guān)聯(lián)的所述用戶級(jí)線程的標(biāo)識(shí)(ID);以及 將與所選擇的第二指示器相關(guān)聯(lián)的所述用戶級(jí)線程的所述ID存儲(chǔ)到隊(duì)列。
16.如權(quán)利要求15所述的裝置,其中所述邏輯進(jìn)一步用于: 為所述第二處理模塊產(chǎn)生中斷,其中所述中斷用于指示所述隊(duì)列不是空的。
17.如權(quán)利要求15所述的裝置,其中所述邏輯進(jìn)一步用于: 響應(yīng)于將所述用戶級(jí)線程的所述ID存儲(chǔ)到所述隊(duì)列,清除所選擇的第二指示器。
18.如權(quán)利要求15所述的裝置,其中用于選擇所述多個(gè)第二指示器中的一個(gè)的邏輯用于:基于所述多個(gè)第二指示器的優(yōu)先級(jí)或者最近最少使用(LSU)標(biāo)準(zhǔn)中的一個(gè),來選擇所述多個(gè)第二指示器中的一個(gè)。
19.如權(quán)利要求15所述的裝置,其中所述邏輯進(jìn)一步用于斷言與所選擇的第二指示器相關(guān)聯(lián)的使能信號(hào),并且其中用于選擇所述多個(gè)第二指示器中的一個(gè)的邏輯用于:響應(yīng)于與所選擇的第二指示器相關(guān)聯(lián)的所述使能信號(hào)的斷言,來選擇所述多個(gè)第二指示器中的一個(gè)。
20.如權(quán)利要求15所述的裝置,其中所述多個(gè)第二指示器是公共門鈴,其中每個(gè)第一指示器是在與每個(gè)各自公共門鈴相關(guān)聯(lián)的每個(gè)用戶級(jí)線程的虛擬地址空間中的映射的門Tl。
21.如權(quán)利要求15所述的裝置,其中所述公共門鈴是最后一級(jí)高速緩存存儲(chǔ)器等級(jí)的一部分,能作為高速緩存存儲(chǔ)器客戶端而被所述第一處理模塊和所述第二處理模塊訪問。
22.—種方法,包括: 在第一處理單元中執(zhí)行一個(gè)或多個(gè)用戶級(jí)應(yīng)用程序,其中每個(gè)用戶級(jí)應(yīng)用程序?qū)⑿遁d任務(wù)到第二處理單元;以及 用信號(hào)通知所述第二處理單 元處理來自每個(gè)用戶級(jí)應(yīng)用程序的任務(wù),同時(shí)維持每個(gè)用戶級(jí)應(yīng)用程序的特權(quán)等級(jí)。
23.如權(quán)利要求22所述的方法,其中每個(gè)用戶級(jí)應(yīng)用程序具有第一指示器,其中用信號(hào)通知所述第二處理單元處理來自每個(gè)用戶級(jí)應(yīng)用程序的所述任務(wù),同時(shí)維持每個(gè)用戶級(jí)應(yīng)用程序的特權(quán)等級(jí)包括: 響應(yīng)于每個(gè)用戶級(jí)應(yīng)用程序卸載任務(wù)到所述第二處理單元,設(shè)定每個(gè)用戶級(jí)應(yīng)用程序的所述第一指示器。
24.如權(quán)利要求23所述的方法,進(jìn)一步包括: 基于每個(gè)用戶級(jí)應(yīng)用程序的每個(gè)對(duì)應(yīng)的第一指示器,設(shè)定多個(gè)第二指示器中的每一個(gè); 選擇所述多個(gè)第二指示器中的一個(gè); 判定與所選擇的第二指示器相關(guān)聯(lián)的所述用戶級(jí)應(yīng)用程序的標(biāo)識(shí)(ID);以及 將所述用戶級(jí)應(yīng)用程序的所述ID存儲(chǔ)到先進(jìn)先出(FIFO)隊(duì)列。
25.如權(quán)利要求24所述的方法,進(jìn)一步包括: 為所述第二處理單元產(chǎn)生中斷,其中所述中斷用于指示所述FIFO隊(duì)列不是空的;以及 響應(yīng)于將所述用戶級(jí)應(yīng)用程序的所述ID存儲(chǔ)到所述FIFO隊(duì)列,清除所選擇的第二指示器。
26.如權(quán)利要求24所述的方法,其中選擇所述多個(gè)第二指示器中的一個(gè)包括:基于所述多個(gè)第二指示器的優(yōu)先級(jí)或者最近最少使用(LSU)標(biāo)準(zhǔn)中的一個(gè),來選擇所述多個(gè)第二指示器中的一個(gè)。
27.如權(quán)利要求24所述的方法,進(jìn)一步包括:斷言與所選擇的第二指示器相關(guān)聯(lián)的使能信號(hào),并且其中選擇所述多個(gè)第二指示器中的一個(gè)包括:響應(yīng)于與所選擇的第二指示器相關(guān)聯(lián)的所述使能信號(hào)的斷言,來選擇所述多個(gè)第二指示器中的一個(gè)。
【文檔編號(hào)】G06F9/06GK103765380SQ201280042605
【公開日】2014年4月30日 申請(qǐng)日期:2012年6月29日 優(yōu)先權(quán)日:2011年7月1日
【發(fā)明者】R·L·法雷爾, A-R·阿德-塔巴塔巴伊, A·科克 申請(qǐng)人:英特爾公司