在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器的制造方法
【專利摘要】本發(fā)明涉及一種在和諧處理器中實(shí)現(xiàn)圖形處理的方法,包括如下步驟:執(zhí)行圖形處理命令,建立圖形處理的軟件線程,為所述軟件線程分配或使其在隊(duì)列中等待分配執(zhí)行該軟件線程的硬件資源;形成圖形處理流水線;所述圖形處理流水線中的軟件線程讀取圖形處理控制器中的命令寄存器內(nèi)容;依據(jù)得到內(nèi)容,所述圖形處理流水線中的軟件線程進(jìn)行相應(yīng)的操作。本發(fā)明還涉及一種和諧處理器。實(shí)施本發(fā)明的在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器,具有以下有益效果:其效率較高,較為節(jié)省資源。
【專利說明】在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及處理器領(lǐng)域,更具體地說,涉及一種在和諧處理器(UPU,UnifiedProcess Unit)中實(shí)現(xiàn)圖形處理的方法及和諧處理器。
【背景技術(shù)】
[0002]處理器的發(fā)展在由單核向多核轉(zhuǎn)換的過程中,其功能也有逐漸融合的趨勢。例如,在以前的處理器中,CPU (中央處理單元)和GPU (圖形處理單元)是不同的集成電路,其分別單獨(dú)的物理結(jié)構(gòu),其間可以通過南、北橋連接;之后出現(xiàn)了在一個(gè)集成電路中設(shè)置有CPU和GPU的處理器,雖然其使用方法未變、結(jié)構(gòu)上還是獨(dú)立的,但是將原先兩個(gè)元件集成為一個(gè),還是大大減小了其占用電路板的面積。當(dāng)多核處理器開始逐漸流行時(shí),開始出現(xiàn)了一種具有多個(gè)硬件內(nèi)核的處理器既可以處理傳統(tǒng)意義上CPU執(zhí)行的任務(wù),又可以處理傳統(tǒng)意義上GPU執(zhí)行的圖像處理任務(wù)的情況;且對(duì)于處理器層面而言,處理這兩種任務(wù)并不需要將其事先進(jìn)行區(qū)分。這種處理器通常被稱為UPU,即和諧處理器。這樣的處理器通常的特點(diǎn)是:具有多個(gè)硬件內(nèi)核可以獨(dú)立地運(yùn)行,系統(tǒng)或處理器軟件執(zhí)行指令,生成軟件線程,這些軟件線程在有空閑的硬件內(nèi)核時(shí),在該硬件內(nèi)核上運(yùn)行,完成線程;當(dāng)沒有空閑的硬件線程時(shí),這些軟件線程在隊(duì)列中等待;軟件線程運(yùn)行完成之后,釋放其占用的硬件內(nèi)核,以便于隊(duì)列中的軟件線程能夠使用這些空閑的硬件內(nèi)核。同樣地,這些軟件線程并不區(qū)分是屬于傳統(tǒng)意義上CPU執(zhí)行的還是傳統(tǒng)意義上GPU執(zhí)行的。由于圖形處理的特殊性,例如,其雖然操作步驟較簡單,重復(fù)性較高,但是,其數(shù)據(jù)量大,使其處理時(shí)需要較長的時(shí)間;同時(shí),其某些固定功能的處理,例如光柵化、像素著色等,并不適用于硬件內(nèi)核處理,需要專用的硬件對(duì)其進(jìn)行處理,通常使用圖形處理固定功能模塊對(duì)其進(jìn)行處理。這樣,由于在處理器層面上并不區(qū)分CPU和GPU的軟件線程,使得現(xiàn)有的UPU在進(jìn)行上述圖形固定功能處理時(shí),其軟件內(nèi)核依然占據(jù)其運(yùn)行的硬件線程,但該軟件線程和硬件內(nèi)核在該段時(shí)間(例如,執(zhí)行紋理處理、光柵化時(shí))內(nèi)無事可做,從而使得處理器的效率不高,浪費(fèi)了資源。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題在于,針對(duì)現(xiàn)有技術(shù)的上述效率不高、浪費(fèi)資源的缺陷,提供一種高效率、節(jié)省資源的在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器。
[0004]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:構(gòu)造一種在和諧處理器中實(shí)現(xiàn)圖形處理的方法,包括如下步驟:
A)執(zhí)行圖形處理命令,建立圖形處理的軟件線程,為所述軟件線程分配或使其在隊(duì)列中等待分配執(zhí)行該軟件線程的硬件資源;所述硬件資源包括運(yùn)行該軟件線程的硬件內(nèi)核;
B)形成圖形處理流水線,所述圖形處理流水線包括得到所述硬件資源的軟件線程和圖形處理固定功能模塊;
C)所述圖形處理流水線中的軟件線程讀取圖形處理控制器(GPUF控制器)中的命令寄存器內(nèi)容;所述圖形處理控制器為硬件結(jié)構(gòu),并由所述和諧處理器中的線程控制或配置;
D)依據(jù)得到內(nèi)容,所述圖形處理流水線中的軟件線程進(jìn)行相應(yīng)的操作,這些操作包括:讓出配置的硬件資源并進(jìn)入等待隊(duì)列、進(jìn)行圖形處理或退出。
[0005]更進(jìn)一步地,所述進(jìn)行圖形處理包括如下步驟:
所述進(jìn)行圖形處理包括如下步驟:
對(duì)圖形的頂點(diǎn)進(jìn)行渲染并進(jìn)行光柵化處理,完成頂點(diǎn)渲染后的圖形處理軟件線程返回步驟C)再次讀取圖形處理控制器中的命令寄存器內(nèi)容;或
對(duì)圖形的像素進(jìn)行著色并通過光柵操作單元處理所述著色后的像素;完成像素處理后的軟件線程返回步驟C)再次讀取圖形處理控制器中的命令寄存器內(nèi)容;
其中,在上述步驟中,需要對(duì)圖形進(jìn)行紋理處理時(shí),軟件線程向所述圖形處理固定功能模塊發(fā)起紋理請(qǐng)求并讓出運(yùn)行的硬件資源進(jìn)入等待,所述圖形處理固定功能模塊處理紋理請(qǐng)求并在紋理數(shù)據(jù)返回時(shí)喚醒圖形處理軟件線程。
[0006]更進(jìn)一步地,所述光柵化處理、光柵操作和紋理處理均是在所述圖形處理控制器的作用下,由所述圖形處理固定功能模塊實(shí)現(xiàn);所述像素著色由喚醒后的軟件線程實(shí)現(xiàn)。
[0007]更進(jìn)一步地,所述圖形處理控制器與所述硬件內(nèi)核的指定本地存儲(chǔ)器連接,所述圖形處理控制器與所述軟件線程通過指定本地存儲(chǔ)器交互數(shù)據(jù);所述圖形處理控制器通過寄存器接口與所述軟件線程交互命令;所述圖形處理控制器還通過總線與處理器硬件內(nèi)核的一級(jí)緩存連接,所述圖形處理控制器與所述軟件線程通過緩存系統(tǒng)交互數(shù)據(jù)。
[0008]更進(jìn)一步地,所述圖形處理控制器還與所述處理器中的二級(jí)緩存連接,所述圖形處理控制器以及和諧處理器線程通過所述二級(jí)緩存及本地存儲(chǔ)器交換指令或數(shù)據(jù)。
[0009]更進(jìn)一步地,所述圖形處理固定功能模塊中的各單元分別通過所述本地存儲(chǔ)器或二級(jí)緩存和本地存儲(chǔ)器與所述圖形處理線程交換指令或數(shù)據(jù)。
[0010]本發(fā)明還涉及一種和諧處理器,包括多個(gè)用于運(yùn)行軟件線程的硬件內(nèi)核,所述每個(gè)硬件內(nèi)存包括其專用的一級(jí)緩存和本地存儲(chǔ)器,還包括用于控制該處理器執(zhí)行圖形處理命令所得到的圖形處理軟件線程及圖形處理固定功能模塊所形成的圖形處理流水線的圖形處理控制器;所述圖形處理控制器包括用于存放控制圖形處理軟件線程操作和所述圖形處理固定功能模塊操作的命令寄存器;所述命令寄存器與所述硬件內(nèi)核的本地存儲(chǔ)器連接。
[0011]更進(jìn)一步地,所述圖形處理控制器與所述硬件內(nèi)核的指定的本地存儲(chǔ)器連接;所述圖形處理控制器通過寄存器接口與所述軟件線程交互命令;所述圖形處理控制器還通過總線與處理器硬件內(nèi)核的一級(jí)緩存連接。
[0012]更進(jìn)一步地,所述圖形處理固定功能模塊為單獨(dú)的硬件結(jié)構(gòu),其包括光柵化單元、紋理單元和光柵操作單元;所述圖形處理控制器讀取所述命令寄存器,并依據(jù)讀取到的命令內(nèi)容相應(yīng)地驅(qū)動(dòng)所述光柵化單元、紋理單元和光柵操作單元。
[0013]更進(jìn)一步地,所述圖形處理控制器還與所述和諧處理器硬件內(nèi)核的二級(jí)緩存連接;所述軟件線程配置得到一個(gè)硬件內(nèi)核的DMA通道使得所述內(nèi)核的二級(jí)緩存和所述內(nèi)核的本地存儲(chǔ)器連接。
[0014]實(shí)施本發(fā)明的在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器,具有以下有益效果:由于和諧處理器的特性是在處理器層面上對(duì)于傳統(tǒng)意義上的CPU處理任務(wù)和GPU處理任務(wù)不加以區(qū)分,使得在圖形處理時(shí)雖然可能在一些時(shí)間上會(huì)使得該圖形處理軟件線程使用硬件資源空閑,因?yàn)樵撥浖€程需要等待處理圖像數(shù)據(jù)的圖形固定功能處理模塊返回?cái)?shù)據(jù)。由于缺乏必要的控制手段,在現(xiàn)有技術(shù)中,這種情況使得整個(gè)處理器硬件資源使用的效率降低,從而使得整個(gè)處理器的效率較低,浪費(fèi)了對(duì)于處理器而言非常寶貴的硬件資源。在本發(fā)明中,由于增加了圖形處理控制器,并使得上述圖形處理軟件線程和硬件資源結(jié)合而成的流水線在該圖形處理控制器的控制下做出相應(yīng)的動(dòng)作,具體來講是通過讀取UPU線程存儲(chǔ)在該圖形處理控制器中命令寄存器中的內(nèi)容,從而決定該流水線的具體操作。在必要的情況下,使得該圖形處理軟件線程進(jìn)入等待狀態(tài)并釋放其占用的硬件資源,使得該硬件資源可以用于其他線程的處理。而當(dāng)圖形數(shù)據(jù)處理完成后再在空閑的硬件資源上運(yùn)行該圖形處理軟件線程,從而使得硬件資源得到最大范圍的合理使用。因而其效率較高,較為節(jié)省資源。
【專利附圖】
【附圖說明】
[0015]圖1是本發(fā)明在和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器實(shí)施例中圖形處理方法的流程圖;
圖2是所述實(shí)施例中具體的圖形數(shù)據(jù)處理流程圖;
圖3是所述實(shí)施例中該和諧處理器的具體結(jié)構(gòu)框圖;
圖4是圖3中處理器更細(xì)化的結(jié)構(gòu)示意圖;
圖5是所述實(shí)施例中具有4個(gè)硬件內(nèi)核的處理器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0016]下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步說明。
[0017]如圖1所示,在本發(fā)明和諧處理器中實(shí)現(xiàn)圖形處理的方法及和諧處理器實(shí)施例中,該圖形處理的方法包括如下步驟:
步驟Sll建立圖形處理的軟件線程,并為其分配或使其等待硬件資源:在本實(shí)施例中,用于說明情況的UPU (和諧處理器,Unified Process Unit)包括4個(gè)硬件內(nèi)核,可以同時(shí)運(yùn)行4個(gè)UPU線程。該UPU的所有軟件(或任務(wù))在上述的UPU硬件內(nèi)核中執(zhí)行,例如,操作系統(tǒng),應(yīng)用程序,GPU著色器等等。對(duì)于該UPU而言,在處理器層面上,不會(huì)對(duì)不同類型的任務(wù)加以區(qū)分(即不會(huì)區(qū)分是由傳統(tǒng)意義上CPU執(zhí)行的任務(wù)或GPU執(zhí)行的任務(wù))。在本實(shí)施例中,通過軟件配置UPU線程控制器中的寄存器來創(chuàng)建UPU線程。一個(gè)UPU中可以有4個(gè)UPU線程實(shí)時(shí)在運(yùn)行,還可以有另外4個(gè)線程在線程控制器的隊(duì)列中等待。當(dāng)有一個(gè)正在運(yùn)行的線程退出使得有空閑的硬件內(nèi)核資源的時(shí)候,在等待的線程就會(huì)被立即調(diào)度進(jìn)空閑的硬件內(nèi)核執(zhí)行。其中,UPU線程(UPU Thread)是軟件線程和上述硬件內(nèi)核的結(jié)合,該軟件線程是傳統(tǒng)意義上CPU、GPU和其它任何程序的線程。當(dāng)UPU線程中的軟件線程是GPU渲染程序的時(shí)候,其就相當(dāng)于一個(gè)GPU渲染線程,也可以叫著色器線程,因?yàn)檫\(yùn)行的是頂點(diǎn)著色器或像素著色器。當(dāng)UPU線程運(yùn)行CPU程序的時(shí)候,它就相當(dāng)于CPU線程。在本步驟中,軟件需要調(diào)用GPU畫圖的時(shí)候,它會(huì)發(fā)一個(gè)畫圖命令給GPU驅(qū)動(dòng)程序,驅(qū)動(dòng)程序維護(hù)一個(gè)命令的隊(duì)列。當(dāng)這個(gè)隊(duì)列中有命令時(shí),GPU驅(qū)動(dòng)程序會(huì)配置UPU線程控制器的寄存器創(chuàng)建GPU渲染線程(可以視為軟件線程和硬件內(nèi)核的結(jié)合,該硬件內(nèi)核是通過分配或在隊(duì)列中等待后而得到的),和發(fā)送一個(gè)畫圖命令給圖形處理固定功能模塊。在本實(shí)施例中,上述圖形處理固定功能模塊包括:圖形處理控制器控制器、光柵化單元、紋理單元和光柵操作單元。其中,上述圖形處理控制器控制器用于控制上述光柵化單元、紋理單元、光柵操作單元以及上述GPU渲染線程中軟件線程的操作。具體而言,該圖形處理控制器包括命令寄存器,上述線程或各單元都是通過對(duì)該命令寄存內(nèi)容的讀取或?qū)懭雭韺?shí)現(xiàn)指令或數(shù)據(jù)的交換,進(jìn)而實(shí)現(xiàn)功能的控制的。
[0018]步驟S12形成圖形處理流水線,開始處理圖形數(shù)據(jù):由于在上述步驟中的軟件線程已經(jīng)分配到硬件內(nèi)核,即由空閑的硬件內(nèi)核或通過在隊(duì)列中的等待得到空閑的硬件內(nèi)核,因此,在本步驟中,形成圖形處理流水線,圖形處理流水線包括得到所述硬件資源(空閑的硬件內(nèi)核)的軟件線程(例如,運(yùn)行在UPU硬件內(nèi)核上的著色器或著色器程序)和圖形處理固定功能模塊。
[0019]步驟S13軟件線程讀取圖形處理控制器中的命令寄存器:在本步驟中,圖形處理流水線中的軟件線程讀取圖形處理控制器中的命令寄存器內(nèi)容;在本實(shí)施例中,上述圖形處理控制器為硬件結(jié)構(gòu),并由所述和諧處理器中的線程控制或配置;其中命令寄存器的內(nèi)容也是如此。由于UPU線程是由UPU線程控制器(即處理器層面上的線程控制器)來管理的,所以圖有處理控制器不能在UPU內(nèi)核中直接創(chuàng)建著色器。如上所述,GPU驅(qū)動(dòng)程序創(chuàng)建著色器,著色器創(chuàng)建出來后會(huì)讀取UPU內(nèi)核和圖形處理固定功能模塊之間的接口寄存器來知道自己要執(zhí)行什么任務(wù)。在本實(shí)施例中,使用了一種等待-喚醒的機(jī)制來使圖形處理控制器能夠調(diào)度著色器;在本實(shí)施例中,可能出現(xiàn)的幾種情況如下:GPU渲染線程(軟件線程)查詢圖形處理控制器的命令寄存器來知道自己需要執(zhí)行什么任務(wù);在沒有任務(wù)要執(zhí)行的時(shí)候,圖形處理控制器會(huì)在上述命令寄存器中放置表示“等待”的命令代碼,GPU渲染線程拿到該命令代碼的時(shí)候會(huì)從UPU硬件內(nèi)核中退出(即釋放該硬件內(nèi)核),在等待線程控制器的隊(duì)列中等待;當(dāng)有頂點(diǎn)或像素需要渲染的時(shí)候,圖形處理控制器會(huì)在命令寄存器中放入表示頂點(diǎn)或像素渲染任務(wù)的代碼,如果有渲染線程在線程控制器的隊(duì)列中等待則把那些等待的線程喚醒;當(dāng)全部渲染任務(wù)都完成的時(shí)候,圖形處理控制器會(huì)往命令寄存器中放入表示“退出”的命令代碼,GPU渲染線程讀到這個(gè)命令的時(shí)候就會(huì)退出(即結(jié)束軟件線程并釋放硬件內(nèi)核)。
[0020]步驟S14依據(jù)取得的內(nèi)容,該軟件線程執(zhí)行相應(yīng)的操作:在本步驟中,依據(jù)上述步驟中得到的命令寄存器內(nèi)容,執(zhí)行相應(yīng)的操作。當(dāng)然,在執(zhí)行圖形處理時(shí),還涉及一些更為具體的步驟,稍后詳述。
[0021]在本實(shí)施例中,在該軟件線程運(yùn)行時(shí),上述步驟S13、S14是不斷重復(fù)的,即執(zhí)行步驟S14后,返回步驟S13,繼續(xù)取出命令寄存器中的代碼,再執(zhí)行步驟S14,根據(jù)再次取得的代碼執(zhí)行對(duì)應(yīng)的操作,直到取得的代碼是退出,則該軟件線程釋放運(yùn)行的硬件資源退出。
[0022]圖2是本實(shí)施例中執(zhí)行圖形處理時(shí)的具體步驟的一個(gè)例子,在圖2中,具體的圖形處理包括:
步驟S21渲染頂點(diǎn):在本實(shí)施例中,由本步驟開始,到步驟S24,都是具體的處理處理圖形的步驟。在本步驟中,對(duì)圖形的頂點(diǎn)進(jìn)行渲染;完成頂點(diǎn)渲染后的軟件線程會(huì)再次查詢命令寄存器并根據(jù)命令寄存器的內(nèi)容來決定下一步的動(dòng)作。如果此時(shí)命令寄存器的內(nèi)容是執(zhí)行其他操作,則在本實(shí)施例中,則使用該軟件線程運(yùn)行的硬件資源去執(zhí)行該命令寄存器指出的其他操作;如果此時(shí)命令寄存器中的內(nèi)容是等待,則完成頂點(diǎn)渲染后的圖形處理軟件線程在圖形處理控制器的控制下進(jìn)入等待,讓出其運(yùn)行的硬件資源。在現(xiàn)有技術(shù)中,雖然也會(huì)涉及對(duì)頂點(diǎn)進(jìn)行渲染,但是,圖形處理軟件線程完成一個(gè)頂點(diǎn)渲染后都退出去,下一個(gè)圖形處理任務(wù)的執(zhí)行必須由圖形處理控制器再創(chuàng)建出一個(gè)渲染線程出來,因此有頻繁的創(chuàng)建-退出的操作,且創(chuàng)建操作都由圖形處理控制器集中完成,當(dāng)有很多渲染線程需要?jiǎng)?chuàng)建的時(shí)候,系統(tǒng)開銷就較大。該步驟是本實(shí)施例特有的,圖形處理控制器預(yù)先在命令寄存器中放置軟件線程接下來要執(zhí)行的任務(wù),軟件線程執(zhí)行完一個(gè)任務(wù)后讀取命令寄存器執(zhí)行下一個(gè)任務(wù),通過這樣軟件和硬件結(jié)合的方法,實(shí)現(xiàn)分布式的任務(wù)調(diào)度,降低了任務(wù)調(diào)度的系統(tǒng)開銷??臻e出來的硬件資源(或硬件內(nèi)核)將用于處理隊(duì)列中的其他線程,使得處理器的效率得到較大的提高。具體方法是,當(dāng)圖形處理控制器讓軟件線程等待或退出的時(shí)候,該軟件線程釋放硬件資源,所釋放的硬件資源可以用來運(yùn)行其它軟件線程,所述軟件線程不限于圖形理線程,還可以是其它線程,如CPU線程,或其它應(yīng)用程序的線程。總之,在本實(shí)施例中,軟件線程完成頂點(diǎn)渲染任務(wù)后,有兩種方式去利用空閑出來的硬件資源:重新查詢命令寄存器,命令寄存器可能會(huì)該叫該軟件線程執(zhí)行其它任務(wù);如果命令寄存器讓該軟件線程等待或退出,那么該軟件線程釋放硬件資源后其它軟件線程會(huì)上來使用所釋放的硬件資源。
[0023]步驟S22對(duì)渲染后的頂點(diǎn)數(shù)據(jù)進(jìn)行光柵化處理:在本步驟中,對(duì)上一步驟中得到的完成渲染的圖形頂點(diǎn)進(jìn)行光柵化處理。值得一提的是,光柵化處理是在上述圖形處理控制器的作用下,調(diào)用光柵化處理單元進(jìn)行的。其操作并不涉及上述軟件線程和硬件內(nèi)核,也就是說,該步驟僅僅涉及上述圖形處理固定功能模塊。
[0024]步驟S23對(duì)產(chǎn)生的像素進(jìn)行著色:在本步驟中,由于在上述步驟中進(jìn)行光柵化處理,在其處理過程中將會(huì)不斷產(chǎn)生像素點(diǎn),為此,在本步驟中,對(duì)不斷產(chǎn)生的圖形的像素進(jìn)行著色,當(dāng)一個(gè)像素點(diǎn)完成著色后,通過光柵操作單元處理該著色后的像素。在本步驟中,像素著色是由軟件線程完成的。當(dāng)有像素需要著色的時(shí)候,圖形處理控制器放置表示像素著色的命令在命令寄存器中,軟件線程讀取到像素著色命令后進(jìn)行像素著色,完成像素著色后該軟件再次讀取命令寄存器,根據(jù)所得內(nèi)容來決定下一步操作,具體過程如同步驟S21所述。
[0025]在上述步驟S21和S23中,除了上述記載的內(nèi)容之外,還可能產(chǎn)生紋理請(qǐng)求,也就是對(duì)該步驟中的得到的頂點(diǎn)或像素進(jìn)行紋理處理。在這種情況下,首先是軟件線程形成或產(chǎn)生一個(gè)紋理處理請(qǐng)求,把紋理請(qǐng)求發(fā)送給圖形處理固定功能模塊后讓出硬件資源并等待,所讓出的硬件資源能夠在UPU線程控制器的控制下用于運(yùn)行其它軟件線程,然后,圖形處理控制器調(diào)用圖形處理固定功能模塊中的紋理處理單元對(duì)其進(jìn)行紋理處理,在紋理數(shù)據(jù)返回時(shí)(即完成紋理處理后),將經(jīng)過上述處理的圖形數(shù)據(jù)返回給上述圖形處理軟件線程,并喚醒圖形處理軟件線程。值得一提的是,紋理請(qǐng)求并不是必然發(fā)生,需要視具體的情況而定。
[0026]步驟S24對(duì)處理后的像素進(jìn)行光柵操作:在本步驟中,對(duì)經(jīng)過上述處理后的像素?cái)?shù)據(jù)進(jìn)行光柵操作。
[0027]值得一提的是,在本實(shí)施例中,為了便于敘述,將上述步驟S21-S24按照一定的順序描述。但是,在實(shí)際操作中,當(dāng)從命令寄存器中取得命令時(shí),其對(duì)應(yīng)的可能只是上述步驟中的一個(gè),例如,在上述步驟S13中取得的命令時(shí)像素著色時(shí),意味只需要對(duì)當(dāng)前數(shù)據(jù)進(jìn)行像素著色,于是,在本次執(zhí)行步驟S14是,實(shí)際上是執(zhí)行其中的步驟S23,而不用執(zhí)行步驟S2US22和S24。換句話說,上述步驟S21-24在每次執(zhí)行步驟S14時(shí),可以只執(zhí)行其中任意一個(gè),當(dāng)然,也可以執(zhí)行其中多個(gè)步驟的組合。
[0028]總體上來講,在本實(shí)施例中,以著色器或著色線程處理圖形數(shù)據(jù)時(shí)為例,其大致包括幾個(gè)階段,每個(gè)階段的操作是不同的硬件或軟件單元,但是一個(gè)共同點(diǎn)是,這些操作都是在圖形處理控制器的控制下進(jìn)行的。當(dāng)有頂點(diǎn)需要渲染的時(shí)候,圖形處理控制器會(huì)放一個(gè)表示頂點(diǎn)渲染任務(wù)的代碼到命令寄存器中,GPU渲染線程拿到這個(gè)命令后就開始執(zhí)行頂點(diǎn)著色程序,當(dāng)其完成該頂點(diǎn)渲染任務(wù)后就寫回一個(gè)應(yīng)答命令給圖形處理控制器(同樣地,這個(gè)應(yīng)答命令也是寫入上述命令寄存器的),通知圖形處理控制器該命令已經(jīng)完成。當(dāng)一個(gè)幾何元素(或幾何圖形)的所有頂點(diǎn)都完成了渲染的時(shí)候,如一個(gè)三解形的三個(gè)頂點(diǎn)都渲染完成了的時(shí)候,圖形處理控制器會(huì)告訴或控制光柵化單元可以開始對(duì)完成渲染的頂點(diǎn)數(shù)據(jù)的光柵化工作。在本實(shí)施例中,執(zhí)行這些步驟時(shí)圖形處理控制器是直接調(diào)用光柵化單元、紋理單元和光柵操作單元。即在硬件設(shè)計(jì)上圖形處理控制器和這三個(gè)單元是直接連線相連的。于是,光柵化單元執(zhí)行光柵化任務(wù),當(dāng)有像素產(chǎn)生的時(shí)候,圖形處理控制器會(huì)放表示“像素著色”的命令到命令寄存器中,GPU渲染線程拿到這個(gè)命令后就會(huì)執(zhí)行像素著色的任務(wù)。GTO渲染線程完成像素著色任務(wù)的時(shí)候,渲染線程會(huì)寫回一個(gè)應(yīng)答命令給圖形理控制器(同樣地,這個(gè)應(yīng)答命令也是寫入上述命令寄存器的),圖形處理控制器會(huì)通知光柵操作單元,光柵操作單元就會(huì)開始處理這些像素。
[0029]之后,上述頂點(diǎn)和像素著色器都可能需要發(fā)起紋理請(qǐng)求,把紋理請(qǐng)求的命令寫到命令寄存器,然后等待;當(dāng)圖形處理控制器收到這個(gè)命令就會(huì)驅(qū)動(dòng)紋理單元處理這個(gè)紋理請(qǐng)求。當(dāng)紋理單元返回某個(gè)渲染線程發(fā)出的紋理請(qǐng)求的所有紋理數(shù)據(jù)時(shí),它會(huì)給圖形處理控制器發(fā)送一個(gè)信號(hào)讓圖形處理控制器把在等待的那個(gè)著色器喚醒。當(dāng)有空閑的硬件線程時(shí),UPU線程控制器就會(huì)把所喚醒的著色線程調(diào)度進(jìn)空閑的硬件線程運(yùn)行。
[0030]在本實(shí)施例中,CPU程序和GPU著色器都能使用一級(jí)緩存,任何一個(gè)UPU內(nèi)核里跑的所有程序都可以使用一級(jí)緩存。在本實(shí)施例中,Uro內(nèi)核和圖形處理固定功能模塊之間的命令是通過寄存器接口來傳輸?shù)?。除了命令之外,還有其它很多GPU的數(shù)據(jù)需要在UPU內(nèi)核和圖形處理固定功能模塊之間傳輸。UPU內(nèi)核和圖形處理固定功能模塊可以通過一個(gè)直接相連的接口交互數(shù)據(jù),如下:I) GPU驅(qū)動(dòng)程序把畫圖命令的信息存放在本地存儲(chǔ)器中,圖形處理固定功能模塊直接讀取本地存儲(chǔ)器來取得這些數(shù)據(jù);2 )著色器把渲染的結(jié)果保存在本地存儲(chǔ)器中,圖形處理固定功能模塊直接讀取本地存儲(chǔ)器來取得這些數(shù)據(jù);3)光柵化單元把產(chǎn)生的像素的信息寫到本地存儲(chǔ)器中,著色器直接讀取本地存儲(chǔ)器中的這些數(shù)據(jù);4)著色器把紋理坐標(biāo)寫到本地存儲(chǔ)器,圖形處理固定功能模塊讀本地存器來取得紋理坐標(biāo)的數(shù)據(jù),紋理單元把返回的紋理數(shù)據(jù)寫到本地存儲(chǔ)器中,著色器讀取本地存器來取得這些數(shù)據(jù)等等。這個(gè)UPU內(nèi)核和圖形處理固定功能模塊之間的直接的接口是由命令和數(shù)據(jù)共享的。
[0031]UPU內(nèi)核和圖形處理固定功能模塊還可以通過二級(jí)緩存來交換數(shù)據(jù),對(duì)于上面所述的所有數(shù)據(jù):1)如果數(shù)據(jù)是由圖形處理固定功能模塊產(chǎn)生的,圖形處理固定功能模塊可以先把數(shù)據(jù)寫到二級(jí)緩存中,軟件線程發(fā)起一個(gè)DMA把數(shù)據(jù)從二級(jí)緩存讀傳到本地存儲(chǔ)器中然后從本地存儲(chǔ)器中讀取這些數(shù)據(jù),或者軟件線程直接讀取一級(jí)緩存取得這些數(shù)據(jù)。2)如果數(shù)據(jù)是在UPU內(nèi)核里面產(chǎn)生的,UPU線程可以把數(shù)據(jù)寫到一級(jí)緩存中,然后圖形處理固定功能模塊讀二級(jí)緩存,緩存系統(tǒng)會(huì)處理存儲(chǔ)的一致性,從一級(jí)緩存中把最新的數(shù)據(jù)取回,再返回給圖形處理固定功能模塊;3)軟件線程還可以把數(shù)據(jù)寫在本地存儲(chǔ)器中,然后通過DMA把數(shù)據(jù)從本地存儲(chǔ)器傳到二級(jí)緩存,圖形處理固定功能模塊讀二級(jí)緩存。
[0032]此外,在本實(shí)施例中,本地存儲(chǔ)器和緩存系統(tǒng)是統(tǒng)一尋址的,UPU內(nèi)核和圖形處理固定功能模塊采用哪種方式來交互數(shù)據(jù)取決于程序使用什么地址。除了 UPU內(nèi)核和圖形處理固定功能模塊之間交互的數(shù)據(jù)外,其它只給UPU內(nèi)核使用或只給圖形處理固定功能模塊使用的所數(shù)據(jù)都能夠使用二級(jí)緩存。例如CPU能夠使用一級(jí)緩存和二級(jí)緩存來緩存它自己的數(shù)據(jù);圖形處理固定功能模塊可以使用二級(jí)緩存來緩存紋理、深度、模版、顏色等數(shù)據(jù)。此外,一個(gè)數(shù)據(jù)是否可以被緩存是可以軟件控制的。
[0033]圖3示出了本實(shí)施例中涉及的一種和諧處理器的結(jié)構(gòu)示意圖,在圖3中,該和諧處理器包括多個(gè)用于運(yùn)行軟件線程的硬件內(nèi)核,所述一級(jí)緩存和本地存儲(chǔ)器是所有硬件內(nèi)核共享的。在本實(shí)施例中,從物理意義上來講,處理器的一級(jí)緩存和本地存儲(chǔ)器分別是一個(gè)整體,并沒有分成幾個(gè)部分。但是,從邏輯上而言,可以通過配置或分配等方法使得每個(gè)硬件內(nèi)核具有邏輯上的一級(jí)緩存和本地存儲(chǔ)器。該處理器還包括用于該處理器執(zhí)行圖形處理命令所得到的圖形處理軟件線程以及圖形處理固定功能模塊,圖形處理固定功能模塊還包括用于控制圖形處理流水線(由圖形處理軟件線程和硬件內(nèi)核構(gòu)成)的圖形處理控制器;其中,圖形處理控制器包括命令寄存器,該寄存器用于存放控制圖形處理軟件線程的操作和所述圖形處理固定功能模塊的操作;該命令寄存器能夠被硬件內(nèi)核(上述圖形處理軟件線程在其上運(yùn)行的硬件內(nèi)核)和圖形處理控制器讀寫,在物理位置上,該命令寄存器分為兩部份,分別位于硬件內(nèi)核和圖形處理固定功能模塊里面,硬件內(nèi)核和圖形處理固定功能模塊通過一個(gè)直接相連的專用接口相互傳輸命令。如前面所述,該專用接口除了傳輸命令之外還用于傳輸數(shù)據(jù)。在本實(shí)施例中,上述圖形處理固定功能模塊包括圖形處理固定功能單元和上述圖形處理控制器,該圖形處理固定功能單元為單獨(dú)的硬件結(jié)構(gòu),其包括光柵化單元、紋理單元和光柵操作單元;光柵化單元、紋理單元和光柵操作單元分別與所述命令寄存器連接,接受該命令寄存器中的指令,確定數(shù)據(jù)并進(jìn)行相關(guān)的操作。
[0034]此外,圖形處理控制器還與和諧處理器硬件內(nèi)核的二級(jí)緩存連接,并通過所述二級(jí)緩存與所述內(nèi)核的本地存儲(chǔ)器連接。
[0035]圖4是圖3的進(jìn)一步的細(xì)化的結(jié)構(gòu)示意圖。在圖4中,主要給出了該和諧處理器中數(shù)據(jù)或指令存儲(chǔ)的具體方式。其中,圖4中標(biāo)注為I的連接線表示通用總線的連接。在圖形處理固定功能模塊訪問DDRx存儲(chǔ)器的時(shí)候,如果該數(shù)據(jù)是可以被緩存的,那么就經(jīng)過二級(jí)緩存,否則直接去到DDRx存儲(chǔ)器。圖4中標(biāo)注為2是UPU內(nèi)核和圖形處理固定功能模塊之間的一個(gè)內(nèi)部連接總線,用來傳輸數(shù)據(jù)和命令。圖4中UPU和圖形處理固定功能模塊里面的寄存器接口模塊都包含命令寄存器。UPU里面的命令寄存器給UPU線程讀寫;圖形處理固定功能模塊里面的命令寄存器給圖形處理控制器的控制邏輯讀寫。這樣就實(shí)現(xiàn)了軟件線程和圖形處理固定功能模塊控制器之間的指令交互以及圖形處理控制器里面的控制邏輯根據(jù)命令寄存器的內(nèi)容去驅(qū)動(dòng)光柵化單元、紋理單元、光柵操作單元這三個(gè)固定功能模塊的功能。[0036]值得一提的是,在本實(shí)施例中,為了敘述方便,一直是以一個(gè)硬件內(nèi)核為例子進(jìn)行描述。但是,這種描述僅僅是為了敘述方便,并不是說明該處理器只有一個(gè)硬件內(nèi)核。實(shí)際上,在本實(shí)施例中,該處理器具有4個(gè)硬件內(nèi)核,請(qǐng)參見圖5,每個(gè)內(nèi)核在實(shí)現(xiàn)圖形處理時(shí)的方法都與本實(shí)施例中相同,多個(gè)內(nèi)核之間是并行的關(guān)系;即每個(gè)內(nèi)核均可以同時(shí)實(shí)現(xiàn)本實(shí)施例中的方法。例如,在本實(shí)施例中和諧處理器中有4個(gè)運(yùn)行的硬件線程,但總共有8個(gè)軟件線程。這8個(gè)軟件線程中有4個(gè)在運(yùn)行,有4個(gè)在等待,這4個(gè)在等待的可能有些已經(jīng)準(zhǔn)備好要運(yùn)行,當(dāng)正在運(yùn)行的軟件線程一旦進(jìn)入等待狀態(tài)時(shí),準(zhǔn)備好要運(yùn)行的線程就立馬可以運(yùn)行起來。GPUF控制器負(fù)責(zé)控制好這個(gè)流水線,使得一個(gè)軟件線程等待的時(shí)候有另一個(gè)線程立即上來使用釋所放出來的硬件資源。這是本實(shí)施例中的和諧處理器的一個(gè)優(yōu)點(diǎn)。在本實(shí)施例中的一些情況下,該處理器可能具有1、2、4、或8個(gè)內(nèi)核。這樣的擴(kuò)展是由本實(shí)施例中的方法及處理器的結(jié)構(gòu)決定的。由于本實(shí)施例中方法的獨(dú)立性、與硬件的非相關(guān)性以及存儲(chǔ)裝置的共享等特性,其硬件內(nèi)核的擴(kuò)展是非常容易的。
[0037]以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1.一種在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,包括如下步驟: A)執(zhí)行圖形處理命令,建立圖形處理的軟件線程,為所述軟件線程分配或使其在隊(duì)列中等待分配執(zhí)行該軟件線程的硬件資源;所述硬件資源包括運(yùn)行該軟件線程的硬件內(nèi)核; B)形成圖形處理流水線,所述圖形處理流水線包括得到所述硬件資源的軟件線程和圖形處理固定功能模塊; C)所述圖形處理流水線中的軟件線程讀取圖形處理控制器中的命令寄存器內(nèi)容;所述圖形處理控制器為硬件結(jié)構(gòu),并由所述和諧處理器中的線程控制或配置; D)依據(jù)得到內(nèi)容,所述圖形處理流水線中的軟件線程進(jìn)行相應(yīng)的操作,這些操作包括:讓出配置的硬件資源并進(jìn)入等待隊(duì)列、進(jìn)行圖形處理或釋放其運(yùn)行資源退出。
2.根據(jù)權(quán)利要求1所述的在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,所述進(jìn)行圖形處理包括如下步驟: 對(duì)圖形的頂點(diǎn)進(jìn)行渲染并進(jìn)行光柵化處理,完成頂點(diǎn)渲染后的圖形處理軟件線程返回步驟C)再次讀取圖形處理控制器中的命令寄存器內(nèi)容;或 對(duì)圖形的像素進(jìn)行著色并通過光柵操作單元處理所述著色后的像素;完成像素處理后的軟件線程返回步驟C)再次讀取圖形處理控制器中的命令寄存器內(nèi)容; 其中,在上述步驟中,需要對(duì)圖形進(jìn)行紋理處理時(shí),軟件線程向所述圖形處理固定功能模塊發(fā)起紋理請(qǐng)求并讓出運(yùn)行的硬件資源進(jìn)入等待,所述圖形處理固定功能模塊處理紋理請(qǐng)求并在紋理數(shù)據(jù)返回 時(shí)喚醒圖形處理軟件線程。
3.根據(jù)權(quán)利要求2所述的在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,所述光柵化處理、光柵操作和紋理處理均是在所述圖形處理控制器的作用下,由所述圖形處理固定功能模塊實(shí)現(xiàn);所述像素著色由喚醒后的軟件線程實(shí)現(xiàn)。
4.根據(jù)權(quán)利要求3所述的在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,所述圖形處理控制器與所述硬件內(nèi)核的指定本地存儲(chǔ)器連接,所述圖形處理控制器與所述軟件線程通過指定本地存儲(chǔ)器交互數(shù)據(jù);所述圖形處理控制器通過寄存器接口與所述軟件線程交互命令;所述圖形處理控制器還通過總線與處理器硬件內(nèi)核的一級(jí)緩存連接,所述圖形處理控制器與所述軟件線程通過緩存系統(tǒng)交互數(shù)據(jù)。
5.根據(jù)權(quán)利要求3所述的在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,所述圖形處理控制器還與所述處理器中的二級(jí)緩存連接,所述圖形處理控制器以及和諧處理器線程通過所述二級(jí)緩存及本地存儲(chǔ)器交換指令或數(shù)據(jù)。
6.根據(jù)權(quán)利要求3所述的在和諧處理器中實(shí)現(xiàn)圖形處理的方法,其特征在于,所述圖形處理固定功能模塊中的各單元分別通過所述本地存儲(chǔ)器或二級(jí)緩存和本地存儲(chǔ)器與所述圖形處理線程交換指令或數(shù)據(jù)。
7.一種和諧處理器,包括多個(gè)并行的用于運(yùn)行軟件線程的硬件內(nèi)核,所述每個(gè)硬件內(nèi)核包括其專用的一級(jí)緩存和本地存儲(chǔ)器,其特征在于,還包括用于控制該處理器執(zhí)行圖形處理命令所得到的圖形處理軟件線程及圖形處理固定功能模塊所形成的圖形處理流水線的圖形處理控制器;所述圖形處理控制器包括用于存放控制圖形處理軟件線程操作和所述圖形處理固定功能模塊操作的命令寄存器;所述命令寄存器與所述硬件內(nèi)核的本地存儲(chǔ)器連接。
8.根據(jù)權(quán)利要求7所述的和諧處理器,其特征在于,所述圖形處理控制器與所述硬件內(nèi)核的指定的本地存儲(chǔ)器連接;所述圖形處理控制器通過寄存器接口與所述軟件線程交互命令;所述圖形處理控制器還通過總線與處理器硬件內(nèi)核的一級(jí)緩存連接。
9.根據(jù)權(quán)利要求8所述的和諧處理器,其特征在于,所述圖形處理固定功能模塊為單獨(dú)的硬件結(jié)構(gòu),其包括光柵化單元、紋理單元和光柵操作單元;所述圖形處理控制器讀取所述命令寄存器,并依據(jù)讀取到的命令內(nèi)容相應(yīng)地驅(qū)動(dòng)所述光柵化單元、紋理單元和光柵操作單元。
10.根據(jù)權(quán)利要求9所述的和諧處理器,其特征在于,所述圖形處理控制器還與所述和諧處理器硬件內(nèi)核的二級(jí)緩存連接;所述軟件線程配置得到一個(gè)硬件內(nèi)核的DMA通道使得所述內(nèi)核的二級(jí)緩存 和所述內(nèi)核的本地存儲(chǔ)器連接。
【文檔編號(hào)】G06F1/20GK103995746SQ201410166054
【公開日】2014年8月20日 申請(qǐng)日期:2014年4月24日 優(yōu)先權(quán)日:2014年4月24日
【發(fā)明者】丘正前, 鐘偉, 冀謙祥, 李晶晶, 梅思行 申請(qǐng)人:深圳中微電科技有限公司