數(shù)據(jù)單元的關(guān)聯(lián)性檢查方法以及使用該方法的裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種三維圖形技術(shù),特別是一種數(shù)據(jù)單元的關(guān)聯(lián)性(dependency)檢查方法以及使用該方法的裝置。
【背景技術(shù)】
[0002]在三維圖形管道中,光柵化器(rasterizer)轉(zhuǎn)換像素(primitives)為畫素(pixels),并且將畫素傳送至畫素著色器(pixel shader) 0畫素著色器則用以決定即將寫入繪制目標(biāo)的最后畫素顏色。光柵化器順序性地產(chǎn)生像素,并且為每一個像素產(chǎn)生片元。數(shù)據(jù)單元(例如,小方塊,quads)的信息會摘要出來并打包至執(zhí)行線程。一個執(zhí)行線程包含一定數(shù)目的數(shù)據(jù)單元,畫素著色器初始并平行執(zhí)行多個執(zhí)行線程。執(zhí)行線程于畫素著色器中執(zhí)行時可能不按照順序。但是,畫素著色器需要依據(jù)光柵化器產(chǎn)生數(shù)據(jù)單元的順序來輸出這些數(shù)據(jù)單元。然而,對于相同數(shù)據(jù)單元,執(zhí)行線程間可能發(fā)生未寫入便讀出的意外。因此,需要一種數(shù)據(jù)單元的關(guān)聯(lián)性檢查方法以及使用該方法的裝置,用以避免以上所述的問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的實(shí)施例提出一種數(shù)據(jù)單元的關(guān)聯(lián)性檢查方法。從窗口檢查器接收第一請求,用以請求從窗口緩存器讀取儲存格數(shù)據(jù)或?qū)懭雰Υ娓駭?shù)據(jù)至窗口緩存器,其中第一請求包含第一儲存格索引。儲存第一儲存格索引至緩存器,其中,緩存器更儲存第一鎖定旗標(biāo),用以表示是否窗口檢查器已讀取儲存格數(shù)據(jù)但尚未寫回。從窗口釋放器接收第二請求,其中第二請求包含第二儲存格索引,用以請求從窗口緩存器讀取儲存格數(shù)據(jù)或?qū)懭雰Υ娓駭?shù)據(jù)至窗口緩存器。儲存第二儲存格索引至緩存器,其中,緩存器更儲存第二鎖定旗標(biāo),用以表示是否窗口釋放器已讀取儲存格數(shù)據(jù)但尚未寫回。依據(jù)第一及第二儲存格索引、第一及第二鎖定旗標(biāo)決定允許第一請求及第二請求中的哪一個。
[0004]本發(fā)明的實(shí)施例提出一種數(shù)據(jù)單元的關(guān)聯(lián)性檢查裝置,包含緩存器、窗口緩存器及控制單元。緩存器儲存第一鎖定旗標(biāo),用以表示是否窗口檢查器已讀取儲存格數(shù)據(jù)但尚未寫回;以及第二鎖定旗標(biāo),用以表示是否窗口釋放器已讀取儲存格數(shù)據(jù)但尚未寫回??刂茊卧罱佑诰彺嫫饕约按翱诰彺嫫鳎瑥拇翱跈z查器接收第一請求,用以請求從窗口緩存器讀取儲存格數(shù)據(jù)或?qū)懭雰Υ娓駭?shù)據(jù)至窗口緩存器,其中第一請求包含第一儲存格索引;儲存第一儲存格索引至緩存器;從窗口釋放器接收第二請求,其中第二請求包含第二儲存格索引,用以請求從窗口緩存器讀取儲存格數(shù)據(jù)或?qū)懭雰Υ娓駭?shù)據(jù)至窗口緩存器;儲存第二儲存格索引至緩存器;以及依據(jù)第一及第二儲存格索引、第一及第二鎖定旗標(biāo)決定允許第一請求及第二請求中的哪一個。
【附圖說明】
[0005]圖1是依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)單元的關(guān)聯(lián)性檢查裝置的硬件架構(gòu)圖。
[0006]圖2是依據(jù)本發(fā)明實(shí)施例的轉(zhuǎn)換到二維影像的像素示意圖。
[0007]圖3是依據(jù)本發(fā)明實(shí)施例的畫素處理方法流程圖。
[0008]圖4是依據(jù)本發(fā)明實(shí)施例由窗口檢查器130執(zhí)行的關(guān)聯(lián)性檢查方法的流程圖。
[0009]圖5是依據(jù)本發(fā)明實(shí)施例由窗口釋放器150執(zhí)行的關(guān)聯(lián)性檢查方法的流程圖。
[0010]圖6是依據(jù)本發(fā)明實(shí)施例的仲裁器的方塊圖。
【具體實(shí)施方式】
[0011]以下說明為完成發(fā)明的較佳實(shí)現(xiàn)方式,其目的在于描述本發(fā)明的基本精神,但并不用以限定本發(fā)明。實(shí)際的
【發(fā)明內(nèi)容】
必須參考之后的權(quán)利要求范圍。
[0012]必須了解的是,使用于本說明書中的“包含”、“包括”等詞,用以表示存在特定的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件以及/或組件,但并不排除可加上更多的技術(shù)特征、數(shù)值、方法步驟、作業(yè)處理、組件、組件,或以上的任意組合。
[0013]于權(quán)利要求中使用如“第一”、“第二”、“第三”等詞是用來修飾權(quán)利要求中的組件,并非用來表示之間具有優(yōu)先權(quán)順序,先行關(guān)系,或者是一個組件先于另一個組件,或者是執(zhí)行方法步驟時的時間先后順序,僅用來區(qū)別具有相同名字的組件。
[0014]圖1是依據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)單元的關(guān)聯(lián)性檢查裝置的硬件架構(gòu)圖。動態(tài)隨機(jī)存取存儲器120儲存關(guān)聯(lián)于2D影像中畫素的屬性值,例如坐標(biāo)、Z值、顏色等。于執(zhí)行特定作業(yè)時,例如,產(chǎn)生光柵順序視圖(ROV, Raster Ordered Views)、融合像素間的畫素值等,畫素著色器110需要存取動態(tài)隨機(jī)存取存儲器(DRAM, Dynamic Random Access Memory) 120中的畫素的屬性值。一個作業(yè)通常包含從動態(tài)隨機(jī)存取存儲器120讀取關(guān)聯(lián)特定位置的屬性值、運(yùn)算以及將關(guān)聯(lián)特定位置的運(yùn)算結(jié)果寫回動態(tài)隨機(jī)存取存儲器120。于此須注意的是,當(dāng)畫素著色器110中的一個執(zhí)行線程已經(jīng)讀取特定位置的屬性值但尚未將運(yùn)算結(jié)果寫回時,特定位置的屬性值不能被其它執(zhí)行線程讀取。否則,將發(fā)生未寫入便讀出的意外。圖2是依據(jù)本發(fā)明實(shí)施例的轉(zhuǎn)換到二維(2D,two-dimens1nal)影像的像素示意圖。光柵化器依序產(chǎn)生像素210及230,并轉(zhuǎn)換到以小方塊(quads)為單位的2D影像,其中反斜線的部分是像素210及230間重疊的區(qū)域。當(dāng)重疊區(qū)域中的任一畫素同時被關(guān)聯(lián)于像素210及230的執(zhí)行線程處理時,畫素著色器110需保證除非關(guān)聯(lián)于像素210的執(zhí)行線程處理此畫素結(jié)束,否則不能讓關(guān)聯(lián)于像素230的執(zhí)行線程開始處理此畫素。
[0015]圖3是依據(jù)本發(fā)明實(shí)施例的畫素處理方法的流程圖。此方法由畫素著色器110中的一個執(zhí)行線程實(shí)施。首先,從緩存器取得待處理的數(shù)據(jù)單元的信息(步驟S311)。其中,數(shù)據(jù)單元可為一或多個畫素、小方塊、片元等。取得信息中至少包含此數(shù)據(jù)單元于2D影像上的位置。2D影像的位置可以(X,y)坐標(biāo)、小方塊編號(quad number)、片元編號(tilenumber),或其它信息表示。為保證執(zhí)行線程間存取相同畫素的屬性值的順序符合像素產(chǎn)生的順序,執(zhí)行線程向窗口檢查器(window checker) 130發(fā)出關(guān)聯(lián)于此數(shù)據(jù)單元的存儲器存取請求(步驟S313)。存儲器存取請求中至少包含此數(shù)據(jù)單元于2D影像上的位置。接著,于接收到窗口檢查器130的請求允許信息(Acknowledgement)后(步驟S315中“是”的路徑),從動態(tài)隨機(jī)存取存儲器120讀取關(guān)聯(lián)于此數(shù)據(jù)單元的屬性值(步驟S331)。于接收到窗口檢查器130的請求拒絕信息(Reject1n)后(步驟S315中“否”的路徑),執(zhí)行線程可于一段時間后重新向窗口檢查器130發(fā)出關(guān)聯(lián)于此數(shù)據(jù)單元的存儲器存取請求(步驟S313)。于另一些實(shí)施例中,執(zhí)行線程可于發(fā)出存儲器存取請求后啟動一個定時器,用以計時一段時間。當(dāng)定時器逾時前接收到窗口檢查器130的請求允許信息后(步驟S315中“是”的路徑),從動態(tài)隨機(jī)存取存儲器120讀取關(guān)聯(lián)于此數(shù)據(jù)單元的屬性值(步驟S331)。當(dāng)定時器逾時后(步驟S315中“否”的路徑),重新向窗口