專利名稱:基于掃描線方法的查找fpga芯片空白區(qū)域的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,特別是一種查找可重構(gòu)設(shè)備FPGA空白區(qū)域的方 法,可用于在基于FPGA的可重構(gòu)系統(tǒng)中查找FPGA的連續(xù)矩形區(qū)域。
背景技術(shù):
近幾年來,隨著可重構(gòu)設(shè)備的進(jìn)步與發(fā)展,基于可重構(gòu)設(shè)備FPGA的計(jì)算機(jī)系統(tǒng) 結(jié)構(gòu)逐漸成為計(jì)算機(jī)中最流行的系統(tǒng)結(jié)構(gòu)之一。FPGA可重構(gòu)設(shè)備是由許多邏輯單元 組成的門陣列,正確高效地分配該設(shè)備的區(qū)域供硬件任務(wù)進(jìn)行配置是基于FPGA的可 重構(gòu)系統(tǒng)實(shí)現(xiàn)有效的資源共享、協(xié)同和保障性能的關(guān)鍵。當(dāng)前,應(yīng)用較廣的基于 FPGA的可重構(gòu)系統(tǒng)大多采用一下兩種
1、 樓梯查找方法SA。該算法是由Handa等人提出的,他們將最大空白矩形區(qū)域 MER定義為不包含在其他它空白矩形區(qū)域的最大矩形區(qū)域。首先找到所有的最大樓 梯,在這些樓梯中每個(gè)樓梯至少包含一個(gè)最大空白矩形區(qū)域MER;然后從這些樓梯中 抽取出所有的最大空白矩形區(qū)域MER,組織成一系列的最大空白矩形區(qū)域MER,這樣 方法最大缺陷就是存在重復(fù)查找問題。
2、 掃描線查找方法SLA。這種算法是一種將空白區(qū)域組織成一系列MER的算法, 不同于樓梯查找算法的是它并沒有査找樓梯的中間過程。
在SLA中每個(gè)硬件任務(wù)占據(jù)一個(gè)矩形區(qū)域,由四元組(x, >;, vv, /0表示。力
是該矩形區(qū)域左下角單元的坐標(biāo),而(w, /o是該矩形用單元數(shù)來計(jì)算的寬度和高度。
使用一個(gè)二維矩陣M[W+1][H]來表示該FPGA區(qū)域,如圖l。如果二維矩陣的第z'行第 y列的元素M[i][j]所對應(yīng)的單元CLB沒有被使用,則M[Z][/]為從該單元起向左所查找 到的連續(xù)空白單元數(shù),否則MW[/]為0。關(guān)鍵單元KE是指這樣的空白單元CLB:右邊 的單元CLB已被使用,或者是處于FPGA右邊界上。 一條掃描線SL包含1個(gè)或多個(gè) KE,因此有1個(gè)或多個(gè)被使用的單元CLB在其右側(cè)。在SL上如果有一個(gè)單元CLB, 它的上一單元的M值要大于它的M值并且其下單元的M值在一定區(qū)間內(nèi)也是遞增的, 那么該CLB被稱之為谷點(diǎn)VP。如果在該掃描線上有w個(gè)谷點(diǎn),則在垂直方向上可以將 其分成"+l個(gè)段。在每個(gè)段上M值最大的關(guān)鍵單元KE是一個(gè)最大關(guān)鍵單元MKE,如 在圖1中,第5列是一個(gè)掃描線SL,單元(5, 9)和(5, 6)是谷點(diǎn),掃描線上的單元(5,7)和(5, 3)是最大關(guān)鍵元素MKE。
對于每個(gè)最大關(guān)鍵元素MKE,以其M值到l分別作為查找寬度w,首先在該最大 關(guān)鍵元素MKE正上方向左查找寬w的連續(xù)空白區(qū)域,如果能找到這樣的區(qū)域,則繼續(xù) 直到找不到這樣的空白區(qū)域或到達(dá)FPGA中的上界為止。并用to/ 記錄當(dāng)前査找的垂直 坐標(biāo)。然后在該最大關(guān)鍵元素MKE正下方向左查找寬vv的連續(xù)空白區(qū)域,如果能找到 這樣的區(qū)域,則繼續(xù)直到找不到這樣的空白區(qū)域或到達(dá)FPGA中的下界為止。并用 6o"om記錄當(dāng)前査找的垂直坐標(biāo)。這樣在top和6o,tow之間的寬w的空白區(qū)域被稱為 一個(gè)最大空白矩形區(qū)域MER ,該最大空白矩形區(qū)域厘£11可以用四元組表示為(/-^+1, 6o"om, w, to/ -6o加w+l)。然而,當(dāng)以w-l作為査找寬度后進(jìn)行查找得到的空白區(qū)域 的top值和6Wtom值都與上一次查找相同時(shí),則該查找所得的空白區(qū)域并不是一個(gè)最 大空白矩形區(qū)域MER。圖2展示了在最大關(guān)鍵元素MKE(5, 3)處的查找過程。以『4 作為查找寬度可得to;^4, 6o om=3,空白區(qū)域(2, 3, 4, 2),該區(qū)域不為任何矩形空 白區(qū)域^f覆蓋所以它是一個(gè)最大空白矩形區(qū)域MER。而以 =3作為查找寬度可得 top=4, to"om=3,空白區(qū)域(3, 3, 3, 2),該區(qū)域?yàn)樯弦淮螙苏宜玫淖畲罂瞻拙匦?區(qū)域MER所包含,所以不是一個(gè)最大空白矩形區(qū)域MER。這就是一次不必要的查 找,也就是掃描線方法SLA中的冗余現(xiàn)象。圖3展示了在最大關(guān)鍵元素MKE(5, 7)處 的查找過程。以 =2作為查找寬度可得/0;7=8, 6o om=3,空白區(qū)域(4, 3, 2, 6),該 區(qū)域不為任何矩形空白區(qū)域所覆蓋,所以它是一個(gè)最大空白矩形區(qū)域MER。在圖2中 看到,在MKE(5, 3)處以K^2作為査找寬度同樣可得最大空白矩形區(qū)域MER(4, 3, 2, 6),這就是SLA中的重復(fù)現(xiàn)象??梢?,這種掃描線方法SLA雖然査找簡單,靈活, 容易實(shí)現(xiàn)。但是仍然存在冗余和重復(fù)査找的問題,因此使得整個(gè)查找過程的效率較 低,進(jìn)而影響基于FPGA可重構(gòu)系統(tǒng)整體的性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述已有技術(shù)的不足,提供一種可重構(gòu)系統(tǒng)中查找空白區(qū) 域的方法,以避免查找空白區(qū)域的重復(fù)和冗余,提高可重構(gòu)系統(tǒng)中查找空白區(qū)域的準(zhǔn) 確性。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案是吸取掃描線方法SLA方法的優(yōu)點(diǎn),在查找中只選取 能產(chǎn)生最大空白矩形區(qū)域MER的查找寬度,避免了冗余;而對某個(gè)最大關(guān)鍵元素 MKE在以w為査找寬度查找時(shí)先檢查該最大關(guān)鍵元素MKE是否被在同一掃描線SL 上的其他MKE以w掃描過,如果是則停止掃描,避免重復(fù)。具體步驟如下A. 確定有效查找寬度集合步驟 .
(Al)給定FPGA最大關(guān)鍵元素MKE(/, _/),并從該最大關(guān)鍵元素向左査找, 將所得到的連續(xù)空白單元數(shù)作為有效查找寬度w,加入到有效查找寬度集合中;
(A2)在所給定的最大關(guān)鍵元素MKE("力的上方單元中,依次向上找出一個(gè) 連續(xù)空白單元數(shù)的遞減序列添加到有效查找寬度集合當(dāng)中,直到在FPGA中遇見 上界或是已經(jīng)被使用的單元為止;
(A3)在所給定的最大關(guān)鍵元素MKE(/,力的下方單元中,依次向下找出一個(gè) 連續(xù)空白單元數(shù)的遞減序列添加到有效査找寬度集合當(dāng)中,直到在FPGA中遇見 下界或是已經(jīng)被使用的單元;
B. 查找空白區(qū)域步驟
(Bl)從有效査找寬度集合中選取一個(gè)沒有査找過的有效查找寬度w進(jìn)行査
找;
(B2)檢查給定的最大關(guān)鍵元素MKE("刀是否被在同一掃描線SL中的其它 最大空白矩形區(qū)域MER用有效查找寬度w進(jìn)行査找過,如果是則停止査找,否則, 以該最大關(guān)鍵元素MKE(/,刀所在位置為右垂直邊界,分別向上和向下尋找有效査 找寬度為w的連續(xù)空白區(qū)域,并將查找所遍歷的掃描線上的單元標(biāo)記為以有效査找 寬度vv查找過;
(B3)重復(fù)步驟(Bl)和(B2)直至有效查找寬度集合中的有效査找寬度w 都被査找過為止。
本發(fā)明由于對有效查找寬帶進(jìn)行了選取,所以查找過程中目的性強(qiáng),沒有冗余的 査找;同時(shí)由于在査找空白區(qū)域前,對被查找的元素檢查是否被某個(gè)最大空白矩形區(qū) 域MER以某個(gè)查找寬度w査找過,對已經(jīng)查找過的寬度不再進(jìn)行査找,因而避免了重 復(fù)査找。
仿真結(jié)果表明,采用本發(fā)明在可重構(gòu)系統(tǒng)中査找FPGA空白區(qū)域,其效果明顯優(yōu) 于現(xiàn)有的掃描線査找方法SLA。
圖1是FPGA的配置示意圖2是在MKE(5, 3)單元運(yùn)用現(xiàn)有SLA方法査找FPGA最大空白矩形區(qū)域的實(shí)例法查找FPGA最大空白矩形區(qū)域的實(shí)例 圖4是在最大關(guān)鍵元素MKE(Z, y)運(yùn)用本發(fā)明査找FPGA最大空白矩形區(qū)域的流程 圖5是在最大關(guān)鍵元素MKE(" y)運(yùn)用本發(fā)明確定有效查找寬度集的流程圖; 圖6是本發(fā)明與已有的SLA方法査找FPGA最大空白矩形區(qū)域的仿真結(jié)果曲線圖。
具體實(shí)施例方式
參照圖5,本發(fā)明的查找步驟如下
(1) 將當(dāng)前向上查找的縱坐標(biāo)鄉(xiāng)和當(dāng)前向下查找的縱坐標(biāo)6o加m初始化為給定 最大關(guān)鍵元素MKE(" y)的縱坐標(biāo)y,并將最大空白矩形區(qū)域集SMER初始化為空集;
(2) 調(diào)用確定有效查找寬度集的方法,并將返回的結(jié)果賦給有效查找寬度集 SVSW,見圖6;
(3) 判斷有效査找寬度集SVSW是否為非空集,如果有效查找寬度集SVSW不 為空,則執(zhí)行(4),否則,返回最大空白矩形區(qū)域集SMER,并結(jié)束執(zhí)行;
(4) 從有效查找寬度集SVSW中選取一個(gè)有效査找寬度w;
(5) 通過檢查查找標(biāo)記SWE4尸[w][top+l]的值是否為1判斷最大關(guān)鍵元素MKE(z', /)是否被同一掃描線SL的其它最大空白矩形區(qū)域MER以查找寬度w査找過,如果是, 則執(zhí)行(11),否則,執(zhí)行(6);
(6) 判斷to/7所在行是否已經(jīng)到達(dá)FPGA中的上界,如果到達(dá)上界,則執(zhí)行(8), 否則判斷是否能在單元(z'-w+l, top)與單元(z', top)之間找到寬度為w的空白區(qū)域,如 果能找到,則執(zhí)行(7),否則,執(zhí)行(8);
(7) 更新當(dāng)前向上查找的縱坐標(biāo)top為top+l ,并通過將查找標(biāo)記Sff^4P[w][to; +l] 設(shè)定為1標(biāo)記單元(/, top+l)已被某最大空白矩形區(qū)域MER以査找寬度w掃描過,返 回執(zhí)行(6);
(8) 判斷6o加m所在行是否已經(jīng)到達(dá)FPGA中的下界,如果到達(dá)下界,則執(zhí)行 (10),否則判斷是否能在單元(/-w+l, 6o"om)與單元("6o"om)之間找到寬度為w
的空白區(qū)域,如果能找到,則執(zhí)行(9),否則,執(zhí)行(10);
(9) 更新當(dāng)前向下查找的縱坐標(biāo)6o"om為to"om - 1 ,并通過將查找標(biāo)記 SWEL4尸[w][ 6o加m - 1]設(shè)定為1標(biāo)記單元(i, 6o加m - l)已被某最大空白矩形區(qū)域MER 以査找寬度w掃描過,返回執(zhí)行(8);(10) 將最大空白矩形區(qū)域MER(!'-w+l, 6o"oam, w, to; -6o加m+l)添加到最大空 白矩形區(qū)域集SMER中;
(11) 將本次査找所使用的有效查找寬度vv從有效寬度集SVSW中去掉,再返回 執(zhí)行(3)。
參照圖6,本發(fā)明(2)確定有效査找寬度集SVSW的方法的步驟如下
1) 將當(dāng)前向上査找的縱坐標(biāo)top和當(dāng)前向下查找的縱坐標(biāo)初始化為給定單 元(z', _/)的縱坐標(biāo)_/,并將有效査找寬度集SVSW初始化為空集;
2) 給定FPGA單元(z',刀,并從該單元向左查找,將所得到的連續(xù)空白單元數(shù)M
作為有效查找寬度w,加入到有效查找寬度集SVSW中;
3) 將向上査找到的當(dāng)前有效查找寬度to; w和向下查找到的當(dāng)前有效查找寬度^rtv 初始化為從給定單元(Z,力起向左所查找到的連續(xù)空白單元數(shù)M[/][/];
4) 判斷當(dāng)前向上查找的縱坐標(biāo)top所在行是否已經(jīng)到達(dá)上界,如果是,則執(zhí)行9), 否則,執(zhí)行5);
5) 判斷從單元("l)起向左查找到的連續(xù)空白單元數(shù)M[/][to;7+ l]是否比向上 查找到的當(dāng)前有效查找寬度to/w小,如果是,則執(zhí)行6),否則,執(zhí)行8);
6) 判斷單元(/, top+l)是不是已經(jīng)被使用,如果是,則執(zhí)行9),否則執(zhí)行7);
7) 將從單元(/, l)起向左查找到的連續(xù)空白單元數(shù)M[Z][to/ + l]添加到有效查 找寬度集SV SW中,并更新向上査找到的當(dāng)前有效查找寬度to/w為M[O[top + l];
8) 更新當(dāng)前向上查找的縱坐標(biāo)top為1,返回執(zhí)行4);
9) 判斷當(dāng)前向下查找的縱坐標(biāo)6Wtom所在行是否已經(jīng)到達(dá)下界,如果是,返回有 效查找寬度集SVSW,并結(jié)束執(zhí)行,否則,執(zhí)行IO);
10) 判斷從單元("6o加m-l)起向左查找到的連續(xù)空白單元數(shù)M[/][6o加m-l]是否 比向下査找到的當(dāng)前有效查找寬度6c^w小,如果是,則執(zhí)行l(wèi)l),否則,執(zhí)行13);
U)判斷單元(f, 6o"om-l)是不是已經(jīng)被使用,如果是,則返回有效査找寬度集SV SW,并結(jié)束執(zhí)行,否則,執(zhí)行12);
12) 將從單元(!', 6oto附-l)起向左査找到的連續(xù)空白單元數(shù)M[z'][6o加m-l]添加到 有效査找寬度集SV SW中,并更新向下查找到的當(dāng)前有效査找寬度^加為
M[。[ 6o加m-l];
13) 更新當(dāng)前向下查找的縱坐標(biāo)6o"om為6otom-l,返回執(zhí)行9)。 本發(fā)明的效果可以通過以下的仿真進(jìn)一步的說明。
81. 仿真條件
任務(wù)調(diào)度采用FIFO策略,即先到先服務(wù)的策略;
FPGA空白區(qū)域的分配采用First-Fit策略,即最先適合策略選取一個(gè)足夠大的最大 空白矩形區(qū)域MER來配置任務(wù),并將該任務(wù)配置在被分配區(qū)域的左下角; 本次模擬所采用的FPGA規(guī)格是50x40;
每個(gè)任務(wù)的執(zhí)行時(shí)間2至IO個(gè)時(shí)間單元,所占用的FPGA單元是2至8個(gè); 每次試驗(yàn)重復(fù)20次,實(shí)驗(yàn)結(jié)果為平均值。
2. 仿真結(jié)果
圖4給出了隨任務(wù)數(shù)的增加本發(fā)明ESLA和掃描線方法SLA所花費(fèi)的有效消耗時(shí) 間的仿真變化結(jié)果。
從圖4可以看出,本發(fā)明ESLA所花費(fèi)的有效消耗時(shí)間明顯要小于現(xiàn)有掃描線方 法SLA所消耗的時(shí)間,避免了重復(fù)和冗余查找,提高了查找FPGA空白區(qū)域的效率。
權(quán)利要求
1. 一種基于掃描線方法的查找FPGA芯片空白區(qū)域的方法,包括如下步驟A. 確定有效查找寬度集合步驟(A1)給定FPGA最大關(guān)鍵元素MKE(i,j),并從該最大關(guān)鍵元素向左查找,將所得到的連續(xù)空白單元數(shù)作為有效查找寬度w,加入到有效查找寬度集合中;(A2)在所給定的最大關(guān)鍵元素MKE(i,j)的上方單元中,依次向上找出一個(gè)連續(xù)空白單元數(shù)的遞減序列添加到有效查找寬度集合當(dāng)中,直到在FPGA中遇見上界或是已經(jīng)被使用的單元為止;(A3)在所給定的最大關(guān)鍵元素MKE(i,j)的下方單元中,依次向下找出一個(gè)連續(xù)空白單元數(shù)的遞減序列添加到有效查找寬度集合當(dāng)中,直到在FPGA中遇見下界或是已經(jīng)被使用的單元;B. 查找空白區(qū)域步驟(B1)從有效查找寬度集合中選取一個(gè)沒有查找過的有效查找寬度w進(jìn)行查找;(B2)檢查給定的最大關(guān)鍵元素MKE(i,j)是否被在同一掃描線SL中的其它最大空白矩形區(qū)域MER用有效查找寬度w進(jìn)行查找過,如果是則停止查找,否則,以該最大關(guān)鍵元素MKE(i,j)所在位置為右垂直邊界,分別向上和向下尋找有效查找寬度為w的連續(xù)空白區(qū)域,并將查找所遍歷的掃描線上的單元標(biāo)記為以有效查找寬度w查找過;(B3)重復(fù)步驟(B1)和(B2)直至有效查找寬度集合中的有效查找寬度w都被查找過為止。
2.根據(jù)權(quán)利要求書1所述的査找FPGA芯片空白區(qū)域的方法,其中步驟(A2)按 如下過程進(jìn)行(A21)將當(dāng)前査找坐標(biāo)top初始化為給定MKE("力的縱坐標(biāo)力并將當(dāng)前有效查 找寬度初始化為從給定最大關(guān)鍵元素MKE(Z,力起向左所查找到的連續(xù)空白單元數(shù)M陽 '(A22)從單元(f, top+l)向左查找,判斷所得到的連續(xù)空白單元數(shù)M[Z][/]是否小于 當(dāng)前有效查找寬度to;w,如果是,則M[。[/]是一個(gè)有效査找寬度,將M
作有效查找寬度添加到有效查找寬度集合中,并更新當(dāng)前有效查找寬度topw為M[/][/],更新當(dāng)前査找坐標(biāo)top為fop+l;(A23)重復(fù)步驟(A22)直到在FPGA中遇見上界或是已經(jīng)被使用的單元為止。
3. 根據(jù)權(quán)利要求書1所述的查找FPGA芯片空白區(qū)域的方法,其中步驟(A3)按 如下過程進(jìn)行(A31)將當(dāng)前査找坐標(biāo)6o"om初始化為給定MKE("力的縱坐標(biāo)y,并將當(dāng)前有效 查找寬度6ortv初始化為從給定MKE("力起向左所査找到的連續(xù)空白單元數(shù)M[/][/];(A32)從單元(z', 6o"om-l)向左査找,判斷所得到的連續(xù)空白單元數(shù)M[Z][/]是否 小于當(dāng)前有效查找寬度6om;,如果是,則M[z'][/]是一個(gè)有效查找寬度,將M[/][/]作為 有效査找寬度添加到有效查找寬度集合中,并更新當(dāng)前有效查找寬度為M[/][/'], 更新當(dāng)前查找坐標(biāo)6o ow為6o"ow-l;(A33)重復(fù)步驟(A32)直到在FPGA中遇見下界或是已經(jīng)被使用的單元為止。
4. 根據(jù)權(quán)利要求書1所述的査找FPGA芯片空白區(qū)域的方法,其中步驟(B2)所 述的檢査給定的MKE(z',力是否被在同一掃描線SL中的其他MER用有效查找寬度w 查找過,按如下過程進(jìn)行(B21)采用一個(gè)二維數(shù)組S『^4P[w][司作為査找標(biāo)記,通過該標(biāo)記記錄掃描線 SL上的第j個(gè)元素是否被某個(gè)最大空白矩形區(qū)域MER以w為査找寬度查找過,如果 查找過,則將S『^4尸[w][刀記錄為1,否則記為0;(B22)對于給定最大關(guān)鍵元素MKE(/, /),檢査S『」&4尸[w][/]的值是否為1,如果 是,則該MKE(" y)被某個(gè)最大空白矩形區(qū)域MER以有效查找寬度w進(jìn)行查找過,否則 沒有。
全文摘要
本發(fā)明公開了一種基于掃描線方法的查找FPGA芯片空白區(qū)域的方法,其查找步驟為從給定MKE向左查找,將所得到的連續(xù)空白單元數(shù)作為有效查找寬度w加入到有效查找寬度集合SVSW中;從該MKE的依次向上和向下找出連續(xù)空白單元數(shù)的遞減序列添加到有效查找寬度集合當(dāng)中,直到在FPGA中遇見邊界或是已經(jīng)被使用的單元為止;從SVSW中逐次選取沒有查找過的w進(jìn)行下述查找檢查給定的MKE是否被在同一掃描線中的其它MER用w進(jìn)行查找過,如果是則停止,否則,以該MKE所在位置為右垂直邊界,分別向上和向下尋找寬w的連續(xù)空白區(qū)域,并將查找所遍歷的掃描線上的單元標(biāo)記為以w查找過。本發(fā)明具有查找FPGA空白區(qū)域耗時(shí)少,效率高的優(yōu)點(diǎn),可用于基于FPGA的可重構(gòu)系統(tǒng)中查找FPGA空白區(qū)域。
文檔編號(hào)G06F17/50GK101441679SQ20081023221
公開日2009年5月27日 申請日期2008年11月10日 優(yōu)先權(quán)日2008年11月10日
發(fā)明者段振華, 聶鵬程, 艷 肖, 范全潤 申請人:西安電子科技大學(xué)