專利名稱:判定存儲單元存取請求順序的方法
技術領域:
本發(fā)明涉及一種判定存儲單元存取請求順序的方法,特別是一種在流水線式(pipeline)結構中判定存儲單元存取請求順序的方法,其為可彈性處理數(shù)據,達到減少流水線閑置及擁塞現(xiàn)象。
在目前的集成電路設計中,流水線式的結構設計已經是一種常見的設計方式,借由流水線式的結構,可將信號的處理流程分成數(shù)級,每一級都重復固定的動作,此種方法可將好幾個動作分開執(zhí)行,使中央處理器不必為了等待數(shù)據的讀取、解碼而浪費時間,這樣,可大大提高中央處理器的效能。
以三維(3D)圖像的數(shù)字數(shù)據處理而言,產生三維圖像的處理程序需要相當多的步驟,大致來說,一般是先經由影像拾取后再進行選擇,此稱為布局階段,然后再進入幾何化階段,這時的工作是影像旋轉,然后,再進入區(qū)別明暗,三角形變?yōu)閽呙杈€段的構成階段,最后再進入影像再現(xiàn)階段,由于在處理上述流程時,常需大量的像素數(shù)據搬移及運算處理,為創(chuàng)造一個理想化的數(shù)據存取方式,以增進存儲單元在下載時的順暢度,目前的三維加速器也使用流水線結構,如圖1所示,其為一個n級流水線式的三維引擎的方塊示意圖,其包括一個n級三維引擎10、一個控制器11、一個仲裁器110及一個存儲單元12,存儲單元12存有多筆數(shù)據,這些數(shù)據包含顏色像素值(R、G、B),透明像素或阿爾發(fā)數(shù)值(alphavalue),深度數(shù)值(Z),網紋影像數(shù)據等,一般說來以上數(shù)據在下列情況時會被控制器11讀出并提取執(zhí)行,并在需要時再寫回存儲單元12內(1)由于每一級處理或運算的內容不盡相同,因此,有些級的處理會需要讀取存儲單元12中的影像數(shù)據(如有一級需要提取深度數(shù)值(Z)做一比對時,就會讀取存在存儲單元中的深度數(shù)值(Z)的數(shù)據),一般而言,為求運作時的順暢度,一般皆會在此級及前二級(不一定是前二級,可視需要而定)各配置一個數(shù)據讀取緩沖器130以及一個數(shù)據請求緩沖器131,并在一或二級(不一定是前二級,可視需要而定)前就發(fā)出一個數(shù)據讀取請求指令,并先儲存在數(shù)據請求緩沖器131中,以可使控制器11去存儲單元12中提取所欲讀取的數(shù)據,并將提取的數(shù)據先儲存在數(shù)據讀取緩沖器13中,當此級在運作時需要讀取該筆數(shù)據時,就不用再花時間去存儲單元中讀取,這種做法可增進引擎10在運作時的順暢度。以圖1而言,在此流水線中的第4級及第n-2級就各配置有一個數(shù)據讀取緩沖器13,并各在前二級(第2級)及前一級(第n-3級)時就先發(fā)出一個讀取請求指令,并先預存在數(shù)據請求緩沖器131中,并在適當時間傳入仲裁器110中,再由控制器11去存儲單元12中提取所欲讀取的數(shù)據,并將該筆數(shù)據先儲存在數(shù)據讀取緩沖器13中。
(2)有些級需要將數(shù)據存入存儲單元中,如圖1所示,第n級必須將運算的結果寫入,并存至存儲單元12中,可是有時存儲單元12仍在進行其他運作,無法馬上接受寫入的數(shù)據,因此,為求運作順暢,一般也會在此級配置一個數(shù)據寫入緩沖器14,以將要寫入的數(shù)據先存至此數(shù)據寫入緩沖器14中,這樣,引擎10就可繼續(xù)運作而不會因無法將數(shù)據傳出而發(fā)生延遲的現(xiàn)象。
另外,有時當兩級間的運算相對速度相差太多時,也會在兩級間設一個緩沖器,以圖1為例,有時第二級的運算速度高出第三級的運算速度很多(或是第三級的運算速度高出第二級的運算速度很多),為防在運作時第二級運算完畢時要將運算結果數(shù)據輸出至第三級時,第三級因運作速度較慢,無法馬上接收第二級的輸出數(shù)據,進而導致第二級發(fā)生擁塞狀況,因此,在第二級及第三級之間也會設置一個像素緩沖器15,以儲存由第二級所輸出的像素數(shù)據,這樣,可以繼續(xù)動作,而不至發(fā)生擁塞情形。
由上述可知,一個完整的三維引擎(流水線)10大致都會設有一個以上的緩沖器,且這些緩沖器的動作是由控制器11所控制,這些緩沖器中的數(shù)據將被處理的順序則由控制器11中的一仲裁器110決定,因此,當一個引擎10中設有多個緩沖器130、131、14、15,且有一個以上的緩沖器對控制器11發(fā)出數(shù)據存取的請求時,以往仲裁器110的做法是優(yōu)先處理位于較大級數(shù)緩沖器中的請求(也稱為下游的緩沖器),再處理位于較小級數(shù)緩沖器的請求(上游的緩沖器),但是此種做法存在下列問題1.若此時存儲單元12正處于較忙碌狀態(tài),存儲單元的頻寬有限,無法一次處理多級的存取請求,若依以往仲裁器110的做法是會先處理較下游緩沖器14的數(shù)據,再處理較上游緩沖器131、15中的數(shù)據,而不考慮每一個緩沖器中的數(shù)據數(shù)量,因為每一個緩沖器所儲存的數(shù)據數(shù)量不一定相同,且通常不同緩沖器的數(shù)據儲存在不同的頁面(頁面為存儲單元的單位,通常一個頁面為4K比特)中,因此,現(xiàn)有的做法有可能使存儲單元在忙碌時仍將時間浪費在轉換頁面的操作上(此種轉換頁面的操作一般稱為頁面失誤),而非完全使用在存取數(shù)據上,使存儲單元在忙碌時仍浪費在往返于各個緩沖器及控制器之間路徑的時間也相對較多,這樣,會使存儲體的利用效能較低,在存儲體頻寬有限的狀態(tài)下效率較低,會發(fā)生擁塞的問題。2.由于仲裁器110處理的順序是固定的,也就是先處理較下游的緩沖器再處理較上游的緩沖器,此種順序主要是考慮到若較下游的數(shù)據尚未清掉,而先清除上游的數(shù)據,同樣會引起流水線擁塞現(xiàn)象,但是,若較上游的緩沖器是空的時,而較下游的緩沖器是滿的,此時就會使兩緩沖器之間產生泡沫現(xiàn)象,以圖1為例,若此時第n-2級的數(shù)據讀取緩沖器13是空的,而第n級的數(shù)據寫入緩沖器14中尚存有數(shù)據時,按照仲裁器110現(xiàn)有仲裁處理的順序必會先處理第n級數(shù)據寫入緩沖器14中的數(shù)據直到將需寫入緩沖器14中的數(shù)據都清空為止。此時,因為第n-2級的數(shù)據讀取緩沖器13是空的,第n-2級就會產生閑置現(xiàn)象,連帶過一段時間后,第n-1級及第n級也因第n-2級因閑置無輸出而無法繼續(xù)工作,連帶也會產生閑置狀態(tài)。
本發(fā)明的主要目的在于提供一種彈性地處理數(shù)據的判定存儲單元存取請求順序的方法,進而達到減少存儲單元擁塞狀況。
為達到上述目的,本發(fā)明采取如下技術措施本發(fā)明的一種判定存儲單元存取請求順序的方法,包括下列步驟a、首先,仲裁器檢測目前存儲單元的運作狀態(tài);b、依據該存儲單元的運作狀態(tài),將該等待處理的緩沖器分為高優(yōu)先處理群及低優(yōu)先處理群;c、仲裁器首先處理高優(yōu)先處理群的緩沖器,再處理低優(yōu)先處理群的緩沖器。
其中在所述步驟b中,當仲裁器檢測此時存儲單元是處于忙碌狀態(tài)時,先分別檢視每一數(shù)據請求緩沖器及數(shù)據寫入緩沖器中的數(shù)據數(shù)量,若數(shù)據數(shù)量超過設定的第一設定值,仲裁器即將這些超過第一設定值的緩沖器歸類至高優(yōu)先處理群中,未超過第一設定值的緩沖器則歸類在低優(yōu)先處理群中。
其中在所述步驟b中,當仲裁器檢測此時存儲單元并不忙碌,接下來仲裁器即分別檢視所有待處理的數(shù)據請求緩沖器及數(shù)據寫入緩沖器中,檢視每一個緩沖器的數(shù)據是否超過我們所設定的等待時間,若超過,則將此緩沖器歸類在高優(yōu)先處理群中,若沒有超過,則檢查像素緩沖器的像素數(shù)目是否超過設定的第二設定值,若超過,則將此一緩沖器歸類在高優(yōu)先處理群中,若沒超過,則將此緩沖器歸類在低優(yōu)先處理群中。
其中在所述步驟c中,當將所有的數(shù)據都分類完畢后,首先,仲裁器會先檢測是否有任何高優(yōu)先處理的緩沖器,若答案為是,仲裁器就先檢查此第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一緩沖器,并檢查是否有分頁失誤的情形發(fā)生,若有,亦輪替到處理下一緩沖器,若不會發(fā)生頁面失誤的情形,則繼續(xù)處理,直到處理完畢為止。
其中若該答案為否,仲裁器就處理歸類為低優(yōu)先處理的緩沖器,首先,先檢查第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一緩沖器,直到處理完畢為止。
其中在所述步驟c中,當將緩沖器都分類完畢后,仲裁器會先檢測是否有任何高優(yōu)先處理的緩沖器,若答案為是,仲裁器就先檢查此第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一個緩沖器,直到處理完畢為止。
其中若所述答案為否,仲裁器就處理歸類為低優(yōu)先處理的緩沖器,首先,先檢查第一個待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一個緩沖器,直到處理完畢為止。
其中在處理下一緩沖器的數(shù)據之前,所述仲裁器即會進行更新動作,以檢查緩沖器的分類是否有改變。
下面結合附圖及實施例對本發(fā)明進行詳細說明
圖1是一種具有n級的三維引擎加速器的方塊示意圖。
圖2是本發(fā)明實施例的流程示意圖。
圖3是本發(fā)明實施例中當存儲單元處于忙碌狀態(tài)時仲裁器的處理流程圖。
圖4是本發(fā)明實施例中當存儲單元并不處于忙碌狀態(tài)時仲裁器的處理流程圖。
圖5是本發(fā)明實施例中當存儲單元并不處于忙碌狀態(tài)時,在多個流水線狀態(tài)下,仲裁器的處理流程圖。
如圖2至圖4所示,其為本發(fā)明一實施例的流程示意圖,其大部結構同如圖1所示,圖2中,本發(fā)明實施例的流程包括如下步驟首先,進行步驟20,仲裁器110先測試目前存儲單元12的運作狀態(tài),檢測此時存儲單元12是否忙碌,即步驟21。
若答案為是,代表此時存儲單元12處于忙碌狀態(tài),若此時有數(shù)個數(shù)據請求緩沖器131以及數(shù)據寫入緩沖器14的數(shù)據等待處理,此時進行步驟22,先分別檢視這些數(shù)據請求緩沖器131及數(shù)據寫入緩沖器14中的數(shù)據數(shù)量,若數(shù)據數(shù)量超過所設定的第一設定值,即步驟23,即將這些超過第一設定值的數(shù)據請求緩沖器131或數(shù)據寫入緩沖器14歸類至高優(yōu)先處理群中,步驟24;未超過第一設定值的數(shù)據請求緩沖器131或數(shù)據寫入緩沖器14則歸類在低優(yōu)先處理群中,即步驟25。
若答案為否,代表此時存儲單元12并不忙碌,也就是說此時存儲單元12內有較大的頻寬可以運用,接下來進行步驟26,仲裁器110就先分別檢視這些數(shù)據請求緩沖器131及數(shù)據寫入緩沖器14其等待處理的時間,并檢視是否已超過所設定的等待時間(步驟27),若超過,表示此一數(shù)據請求緩沖器131或數(shù)據寫入緩沖器14可能已經等待處理較長時間,所以應先處理掉,因此,我們將此數(shù)據請求緩沖器131或數(shù)據寫入緩沖器14歸類在高優(yōu)先處理群中(步驟24),若沒有超過,表示可能等待的時間還不至造成延遲,接著就再檢查像素緩沖器15中等待處理的像素數(shù)目(步驟28)是否超過我們所設定的第二設定值(步驟29),若超過,則將此像素緩沖器15歸類在高優(yōu)先處理群中(步驟24),若沒超過,則將此像素緩沖器15歸類在低優(yōu)先處理群中(步驟25)。
如圖3所示,本實施例中當圖2中存儲單元12處于忙碌狀態(tài)時仲裁器110的處理流程圖,當將所有的待處理的緩沖器131、14都分類完畢后,首先,仲裁器110會先檢測是否有任何歸類至高優(yōu)先處理的緩沖器(步驟30),若答案為是,代表有至少一高優(yōu)先處理的緩沖器待處理,仲裁器110就先檢查第一個待處理緩沖器中的數(shù)據(步驟300)(即最早被歸類為高優(yōu)先處理的緩沖器)中是否為空的(步驟31),若是空的,就輪替到處理下一緩沖器中的數(shù)據(步驟32),若不是空的,就通知控制器11開始處理此一緩沖器(步驟33)內的第一個請求,當處理完此一請求后,在處理此一緩沖器下一請求前,仲裁器110會檢查是否有頁面失誤的情形發(fā)生,然后再檢查是否有頁面失誤的情形發(fā)生(步驟34),若有,即輪替到處理下一緩沖器131中的數(shù)據(步驟32),若沒有發(fā)生頁面失誤的情形,則繼續(xù)處理此一緩沖器中的數(shù)據,直到處理完畢為止,再輪替到處理下一緩沖器中的數(shù)據(步驟32),在處理完下一緩沖器的數(shù)據之前,仲裁器110即會進行更新的動作(步驟35),以檢查緩沖器的分類是否有改變,例如有些緩沖器原來為高優(yōu)先處理群,但在更新時更改為低優(yōu)先處理群。
若答案為否,代表此時并無高優(yōu)先處理的緩沖器待處理,接下來就處理歸類為低優(yōu)先處理的緩沖器,首先檢查第一個待處理的緩沖器(即最早被歸類為低優(yōu)先處理的緩沖器)中是否為空的(步驟36),若是空的,就輪替到處理下一個緩沖器(步驟37),若不是空的,就開始處理此一緩沖器(步驟38),并檢查是否有頁面失誤的情形發(fā)生(步驟39),若有頁面失誤的情形發(fā)生,亦輪替到處理下一筆數(shù)據(步驟37),若不會發(fā)生頁面失誤的情形,則繼續(xù)處理,直到處理完畢為止,再處理下一緩沖器中的數(shù)據(步驟37),在處理下一緩沖器的數(shù)據之前,仲裁器110即會進行更新的動作(步驟40),以檢查緩沖器的分類是否有改變。
如圖4所示,是在圖2中當存儲單元12并不處于忙碌狀態(tài)時仲裁器110的處理流程圖,當將所有待處理的緩沖器131、14、15都分類完畢后,首先,仲裁器110會先檢測是否有任何高優(yōu)先處理的緩沖器(步驟41),若答案為是,代表有至少一個的高優(yōu)先處理的緩沖器待處理,仲裁器110首先會先處理第一待處理緩沖器(即最早被歸類為高優(yōu)先處理的緩沖器)的,并檢查緩沖器的數(shù)據是否為空的(步驟42),若是空的,就輪替到處理下一個緩沖器(步驟43),若不是空的,就開始處理此一緩沖器內的第一個請求(步驟44),當處理完一個緩沖器就輪替處理下一緩沖器(步驟46),直到處理完畢為止,在處理下一緩沖器的數(shù)據之前,仲裁器110即會進行更新的動作,以檢查的緩沖器的分類是否有改變。
若答案為否,代表此時并無高優(yōu)先處理的緩沖器待處理,接下來就處理歸類為低優(yōu)先處理的緩沖器,首先,先處理第一個待處理的緩沖器(即最早被歸類為低優(yōu)先處理的緩沖器)(步驟411),并檢查此緩沖器中的數(shù)據是否為空的(步驟45),若是空的,就輪替到處理下一個緩沖器(步驟46),若不是空的,就開始處理此一個緩沖器,直到處理完畢為止(步驟47)再輪替處理下一個緩沖器(46),直到處理完畢為止,在處理下一緩沖器的數(shù)據之前,仲裁器110即會進行更新的動作(步驟49),以檢查緩沖器的分類是否有改變。
值得一提的是,如圖5所示,當控制器同時在處理多條流水線時,其控制器大致的控制流程和圖4相同,在此不再多述,不同的是,當控制器處理完緩沖器中的一個請求后(步驟44),控制器就會檢查這些流水線的處理速度是否相近,若為相近(又稱為平衡狀態(tài)(步驟49)),緩沖器就會繼續(xù)處理,若不平衡,就會輪替處理下一緩沖器的請求(步驟43)。
藉由上述說明,本發(fā)明具有如下效果1、若當存儲體忙碌時,仲裁器要判斷多級緩沖器中的存取數(shù)據順序時,此時即可藉由上述流程,優(yōu)先處理數(shù)量較多(即超過第一設定值)的緩沖器的數(shù)據,再處理數(shù)量較少的緩沖器數(shù)據,減少頁面失誤以及往返于各個緩沖器及控制器之間路徑的時間浪費,使處理的效能提高,較不易發(fā)生延遲的問題。
2.再來,優(yōu)先處理等待時間較長的緩沖器數(shù)據,再處理像素數(shù)量較多的數(shù)據,如此也可解決現(xiàn)有設計所遇到的問題,以圖1為例,若此時第n-2級的數(shù)據讀取緩沖器13是空的,而第n級的數(shù)據寫入緩沖器14中尚存有數(shù)據時,按照仲裁器110以往的做法是會引發(fā)流水線擁塞的問題的,但依照本發(fā)明的處理方式,若第n-2級的等待時間較第n級久,因此就先處理第n-2級的請求再處理第n級的請求,解決了現(xiàn)有技術中存在的問題。
權利要求
1.一種判定存儲單元存取請求順序的方法,其特征在于,包括下列步驟a、首先,仲裁器檢測目前存儲單元的運作狀態(tài);b、依據該存儲單元的運作狀態(tài),將該等待處理的緩沖器分為高優(yōu)先處理群及低優(yōu)先處理群;c、仲裁器首先處理高優(yōu)先處理群的緩沖器,再處理低優(yōu)先處理群的緩沖器。
2.如權利要求1所述的方法,其特征在于在所述步驟b中,當仲裁器檢測此時存儲單元是處于忙碌狀態(tài)時,先分別檢視每一數(shù)據請求緩沖器及數(shù)據寫入緩沖器中的數(shù)據數(shù)量,若數(shù)據數(shù)量超過設定的第一設定值,仲裁器即將這些超過第一設定值的緩沖器歸類至高優(yōu)先處理群中,未超過第一設定值的緩沖器則歸類在低優(yōu)先處理群中。
3.如權利要求1所述的方法,其特征在于在所述步驟b中,當仲裁器檢測此時存儲單元并不忙碌,接下來仲裁器即分別檢視所有待處理的數(shù)據請求緩沖器及數(shù)據寫入緩沖器中,檢視每一個緩沖器的數(shù)據是否超過我們所設定的等待時間,若超過,則將此緩沖器歸類在高優(yōu)先處理群中,若沒有超過,則檢查像素緩沖器的像素數(shù)目是否超過設定的第二設定值,若超過,則將此一緩沖器歸類在高優(yōu)先處理群中,若沒超過,則將此緩沖器歸類在低優(yōu)先處理群中。
4.如權利要求2所述的方法,其特征在于在所述步驟c中,當將所有的數(shù)據都分類完畢后,首先,仲裁器會先檢測是否有任何高優(yōu)先處理的緩沖器,若答案為是,仲裁器就先檢查此第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一緩沖器,并檢查是否有分頁失誤的情形發(fā)生,若有,亦輪替到處理下一緩沖器,若不會發(fā)生頁面失誤的情形,則繼續(xù)處理,直到處理完畢為止。
5.如權利要求4所述的在一流水線式結構中判定存儲單元存取請求順序的方法,其特征在于若該答案為否,仲裁器就處理歸類為低優(yōu)先處理的緩沖器,首先,先檢查第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一緩沖器,直到處理完畢為止。
6.如權利要求3所述的方法,其特征在于在所述步驟c中,當將緩沖器都分類完畢后,仲裁器會先檢測是否有任何高優(yōu)先處理的緩沖器,若答案為是,仲裁器就先檢查此第一筆待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一個緩沖器,直到處理完畢為止。
7.如權利要求6所述的方法,其特征在于若所述答案為否,仲裁器就處理歸類為低優(yōu)先處理的緩沖器,首先,先檢查第一個待處理的緩沖器中是否為空的,若是空的,就輪替到處理下一個緩沖器,若不是空的,就開始處理此一個緩沖器,直到處理完畢為止。
8.如權利要求4或5或6或7中任一項所述的方法,其特征在于在處理下一緩沖器的數(shù)據之前,所述仲裁器即會進行更新動作,以檢查緩沖器的分類是否有改變。
全文摘要
一種判定存儲單元存取請求順序的方法,包括下列步驟:a、仲裁器檢測目前存儲單元的運作狀態(tài);b、依據該存儲單元的運作狀態(tài),將該等待處理的緩沖器分為高優(yōu)先處理群及低優(yōu)先處理群;c、仲裁器首先處理高優(yōu)先處理群的緩沖器,再處理低優(yōu)先處理群的緩沖器,根據上述步驟;本方法可彈性地處理緩沖器數(shù)據,達到減少存儲單元擁塞現(xiàn)象,以使存儲單元的頻寬能有效利用。
文檔編號G06F12/08GK1380609SQ0111057
公開日2002年11月20日 申請日期2001年4月11日 優(yōu)先權日2001年4月11日
發(fā)明者廖明豪, 白宏達 申請人:矽統(tǒng)科技股份有限公司