国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法和裝置的制作方法

      文檔序號:6575289閱讀:150來源:國知局
      專利名稱:一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及嵌入式系統(tǒng)領(lǐng)域,特別涉及一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃 分的方法和裝置。
      背景技術(shù)
      芯片集成度的日益提高,使得一個芯片內(nèi)可以集成大量的功能模塊,形成 片上系統(tǒng)芯片。在集成的功能模塊中往往包含了處理器模塊和硬件加速模塊, 如何讓處理器與硬件加速模塊能夠協(xié)同工作,是片上系統(tǒng)芯片的軟硬件協(xié)同設(shè) 計需要解決的一個問題。而軟硬件劃分是軟硬件協(xié)同設(shè)計的基礎(chǔ),將一個應(yīng)用 程序劃分給處理器和硬件加速模塊分別執(zhí)行。其中,處理器執(zhí)行的部分稱為"軟 件"部分,硬件加速模塊執(zhí)行的部分稱為"硬件"部分。軟硬件劃分的好壞將 直接影響到最終軟硬件協(xié)同設(shè)計的結(jié)果,并對系統(tǒng)的性能、功耗、面積等關(guān)鍵 指標(biāo)產(chǎn)生重要的影響。
      其中,可重構(gòu)處理器由主處理器和可重構(gòu)陣列構(gòu)成。如圖1所示,可重構(gòu) 處理器的軟硬件劃分是指將應(yīng)用程序劃分為在主處理器上執(zhí)行的軟件部分和在 可重構(gòu)陣列上執(zhí)行的硬件部分。通常情況下,主處理器運行應(yīng)用程序的控制部 分和計算量相對較小的部分,而可重構(gòu)陣列運行應(yīng)用中的計算量相對較大的部 分??芍貥?gòu)陣列善于執(zhí)行循環(huán)任務(wù),但對循環(huán)體的規(guī)模有一定的限制, 一般需 要循環(huán)體的規(guī)模小于等于可重構(gòu)陣列的物理規(guī)模。當(dāng)循環(huán)體的規(guī)模滿足該要求,
      且循環(huán)的執(zhí)行次數(shù)較多時,可重構(gòu)陣列可以對循環(huán)任務(wù)進(jìn)行加速,從而減少整 個應(yīng)用的執(zhí)行時間。所以,將一個應(yīng)用程序在可重構(gòu)處理器上進(jìn)行軟硬件劃分 時,會將循環(huán)體規(guī)模較小的循環(huán)任務(wù)劃分給可重構(gòu)陣列,在其上進(jìn)行映射和執(zhí) 行。
      發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下缺點限制了 循環(huán)體的規(guī)模,當(dāng)循環(huán)體規(guī)模大于可重構(gòu)陣列的物理規(guī)模時,循環(huán)體便不能一 次全部映射到可重構(gòu)陣列上,無法發(fā)揮可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點, 增加了整個應(yīng)用程序執(zhí)行的時間。

      發(fā)明內(nèi)容
      為了使大規(guī)模的循環(huán)體能映射到可重構(gòu)陣列上,加快循環(huán)任務(wù)執(zhí)行的速度, 減少應(yīng)用程序執(zhí)行的時間,提高用戶的使用體驗,本發(fā)明實施例提供了一種實
      現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法和裝置,所述技術(shù)方案如下
      一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法,當(dāng)可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù) 流的節(jié)點個數(shù)大于可重構(gòu)陣列的規(guī)模時,所述方法包括
      步驟Cl:對所述可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行算子調(diào)度;
      步驟C2:根據(jù)算子調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;
      步驟C3:獲得所述輸入節(jié)點的輸出個數(shù);
      步驟C4:根據(jù)步驟C2獲得的所述輸入節(jié)點的自由度、步驟C3獲得的所述輸 入節(jié)點的輸串個數(shù),獲取自由度最高且輸出個數(shù)最少的輸入節(jié)點; 步驟C5:將步驟C4獲取的輸入節(jié)點劃分到主處理器。
      所述步驟C5還包括更新所述主處理器和所述可重構(gòu)陣列,重復(fù)執(zhí)行步驟 Cl至C5,直到所述可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點個數(shù)小于等于可重構(gòu)陣列 的規(guī)模為止。
      所述步驟C2包括
      步驟C21:對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第一算子調(diào)度; 步驟C22:對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第二算子調(diào)度; 相應(yīng)地,所述步驟C2具體包括根據(jù)步驟C22獲得的調(diào)度中的節(jié)點所在的
      時鐘周期和步驟C21獲得的調(diào)度中的節(jié)點所在的時鐘周期,獲得輸入節(jié)點的自
      由度。 '
      根據(jù)步驟C22獲得的調(diào)度中的節(jié)點所在的時鐘周期和步驟C21獲得的調(diào)度 中的節(jié)點所在的時鐘周期,獲得輸入節(jié)點的自由度具體為
      輸入節(jié)點的自由度="第二算子調(diào)度中節(jié)點的時鐘周期-第一算子調(diào)度中節(jié) 點的時^^周期士 1"。
      當(dāng)所述步驟C4獲取的輸入節(jié)點為多個時;所述步驟C5包括將編號最小 的 一個輸入節(jié)點劃分到主處理器。
      一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的裝置,當(dāng)可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù) 流的節(jié)點個數(shù)大于可重構(gòu)陣列的規(guī)模時,所述裝置包括進(jìn)行算子調(diào)度;
      第一獲得模塊,用于根據(jù)所述調(diào)度模塊的調(diào)度結(jié)果,獲得輸入節(jié)點的自由
      度;
      第二獲冉模塊,用于獲得輸入節(jié)點的輸出個數(shù);
      獲取模塊,用于根據(jù)所述第一獲得模塊獲得的輸入節(jié)點的自由度、所述第 二獲得模塊荻得的輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出最少的輸入節(jié)占.
      劃分模塊,用于將所述獲取4莫塊獲取的輸入節(jié)點劃分到主處理器。
      所述裝置還包括處理模塊; 所述處理模塊用于更新所述主處理器和所述可重構(gòu)陣列,直到所述可重構(gòu)陣列 當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點小于所述可重構(gòu)陣列的規(guī)模為止。
      所述調(diào)度模塊具體包括
      第 一調(diào)度單元,用于對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第 一算子調(diào)度; 第二調(diào)度單元,用于對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第二算子調(diào)度;
      相應(yīng)地,所述第一獲得模塊具體用于根據(jù)所述第二調(diào)度單元獲得的調(diào)度 中的節(jié)點所在的時鐘周期和所述第 一調(diào)度單元獲得的調(diào)度中的節(jié)點所在的時鐘 周期,獲得輸入節(jié)點的自由度。
      當(dāng)所述獲取模塊獲取的輸入節(jié)點為多個時;所述劃分模塊具體用于將所述 獲取模塊獲取的輸入節(jié)點中編號最小的一個輸入節(jié)點劃分到主處理器。
      本發(fā)明實施例提供的技術(shù)方案的有益效果是通過將輸入節(jié)點劃分到主處 理器,發(fā)揮了可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點,擴大了循環(huán)體的規(guī)模,減 少了整個應(yīng)用程序執(zhí)行的時間,滿足了實際應(yīng)用中的需要。


      為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述 中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付 出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      圖1是現(xiàn)有技術(shù)提供的可重構(gòu)處理器的軟硬件劃分框圖2是本發(fā)明實施例提供的算子調(diào)度的示意圖;圖3是本發(fā)明實施例提供的待劃分的循環(huán)體的數(shù)據(jù)流圖,以及第1次算子
      調(diào)度結(jié)果的示意圖4是本發(fā)明實施例提供的第1次劃分結(jié)果的示意圖5是本發(fā)明實施例提供的第2次算子調(diào)度結(jié)果的示意圖6是本發(fā)明實施例提供的第2次劃分結(jié)果的示意圖7是本發(fā)明實施例提供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的流程圖8是本發(fā)明實施例1提供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分方法的
      流程圖9是本發(fā)明實施例2提供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分裝置的 示意圖IO是本發(fā)明實施例2^是供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分裝置的 具體示意圖。
      具體實施例方式
      為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明 實施方式作進(jìn)一步地詳細(xì)描述。
      在基于算子調(diào)度對應(yīng)用程序進(jìn)行軟硬件劃分時,將數(shù)據(jù)流圖,在時間域上 進(jìn)行劃分,確定每一個算子執(zhí)行時間的早晚和相互間的順序。算子調(diào)度從算子 執(zhí)行時間早晚的角度出發(fā),可分為"盡可能早"算子調(diào)度和"盡可能晚"算子 調(diào)度。"盡可能早"算子調(diào)度將所有算子盡可能早的執(zhí)行;相反,"盡可能晚" 算子調(diào)度將所有算子盡可能晚的執(zhí)行。圖2給出了一個簡單的數(shù)據(jù)流圖,其中 各個算子均可在一個時鐘周期內(nèi)完成,算子調(diào)度的流程如下
      1、 在數(shù)據(jù)流圖中找出關(guān)鍵路徑,關(guān)鍵路徑為在所有的輸入到輸出的路徑中, 執(zhí)行時間最長,即算子個數(shù)最多的路徑,關(guān)4定路徑上的算子不在調(diào)度之列,將 其按照執(zhí)行的順序分配到各個時鐘周期。
      其中,參見圖2,圖2中的關(guān)鍵路徑為"1 — 2 — 3 — 4 — 5 — 6",算子"1"、 "2"、 "3"、 "4"、 "5"、 "6"分別被分配到第1、 2、 3、 4、 5、 6個時鐘周期。
      2、 對于非關(guān)鍵路徑上的算子,"盡可能早"算子調(diào)度將算子盡可能早的執(zhí) 行。參見圖2,算子"8"可以在笫1至5個時鐘周期之間的任一時鐘周期執(zhí)行, 算子"7"可以在第3、 4個時鐘周期執(zhí)行(由于從路徑服從關(guān)鍵路徑的調(diào)度關(guān)
      7系,算子"7"的輸入來自算子"2"的輸出,算子"2,,位于第2時鐘周期,即, 算子"7"可以位于第2時鐘周期后的周期,而,算子"5"的輸入來自算子"7" 的輸出,算子"5"位于第5個時鐘周期,即算子"7"只能位于第5時鐘周期 以上的時鐘周期,綜上,即算子"7"可以位于第3、 4時鐘周期。),根據(jù)"盡 可能早"算子調(diào)度,算子"8"被分配到第1個時鐘周期執(zhí)行;算子"7"被分 配到第3個時鐘周期;相反,"盡可能晚"算子調(diào)度將算子盡可能晚的執(zhí)行,參 見圖2算子"8"被分配到第5個時鐘周期執(zhí)行;算子"7"被分配到第4個時 鐘周期。
      其中,自由度代表算子可以在不同的時鐘周期中被執(zhí)行的自由程度,可以 由"盡可能早"算子調(diào)度和"盡可能晚"算子調(diào)度的結(jié)果計算得到。其中,算 子自由度的計算公式為"'盡可能晚算子調(diào)度中算子的時鐘周期,_ '盡可能早 算子調(diào)度中算子的時鐘周期,+ 1"。所以,關(guān)鍵路徑上的所有算子的自由度均 為1。即,圖2中算子T、 "2"、 "3"、 "4"、 "5"、 "6"的自由度為1,算子"7" 的自由度為2 (具體為,4-3+1=2 ),算子"8"的自由度為5 (具體為5-1+1=5 )。
      基于上述算法,本發(fā)明提出了一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法 和裝置,該方法對規(guī)模較大循環(huán)任務(wù)的循環(huán)體進(jìn)行軟硬件劃分,將循環(huán)體任務(wù) 的一部分放在主處理器上執(zhí)行,另一部分放在可重構(gòu)陣列上執(zhí)行,其中,為了 便于說明,將上述算子定義為節(jié)點,將"盡可能早"算子調(diào)度定義為第一算子 調(diào)度,將"盡可能晚"算子調(diào)度定義為第二算子調(diào)度。。
      其中,對循環(huán)任務(wù)進(jìn)行軟硬件劃分方法遵循以下四個規(guī)則
      一、 軟硬件劃分應(yīng)使在可重構(gòu)陣列上執(zhí)行的節(jié)點盡可能的多。 能充分發(fā)揮可重構(gòu)陣列硬件加速的功能,根據(jù)此原則,在進(jìn)行軟硬件劃分
      之前,先默認(rèn)所有的節(jié)點都在可重構(gòu)陣列上執(zhí)行。
      二、 在將節(jié)點從可重構(gòu)陣列上劃分出去,到主處理器上執(zhí)行時,應(yīng)使得劃 分之后增加的數(shù)據(jù)傳輸量(即,可重構(gòu)陣列和主處理器之間通信的數(shù)據(jù)傳輸量) 盡可能的小。
      其中,對于數(shù)據(jù)流圖中的三類節(jié)點輸入節(jié)點、輸出節(jié)點、中間節(jié)點,劃 分時應(yīng)選取劃分后增加的數(shù)據(jù)傳輸量最小的輸入節(jié)點。輸入節(jié)點的定義為只 能來自接收外部節(jié)點的輸入;輸出節(jié)點的定義為只能輸出給外部節(jié)點。
      其中,輸入節(jié)點被劃分出去后增加的數(shù)據(jù)傳輸量均為1個單位(例如1個16位的數(shù)據(jù)),即使^f皮劃分出去的輸入節(jié)點的輸出的數(shù)據(jù)傳輸量為n個單位(n >1),但這n個單位的數(shù)據(jù)相同,所以主處理器只需傳輸給可重構(gòu)陣列1個單 位的數(shù)據(jù),在可重構(gòu)陣列得到數(shù)據(jù)后,將其調(diào)用n次即可。
      其中,輸出節(jié)點被劃分出去后增加的數(shù)據(jù)傳輸量至少為1個單位,因為輸 出節(jié)點的輸入的數(shù)據(jù)傳輸量至少為1個單位,并且一旦大于1個單位,這些數(shù) 據(jù)將各不相同,所以在將輸出節(jié)點劃分出去之后,可重構(gòu)陣列需向主處理器傳
      輸至少1個單位的數(shù)據(jù)。
      其中,中間節(jié)點被劃分出去后增加的數(shù)據(jù)傳輸量至少為2個單位,因為中 間節(jié)點的輸入的數(shù)據(jù)傳輸量至少為1個單位,輸出的數(shù)據(jù)傳輸量也至少為1個 單位,所以將中間節(jié)點劃分出去后,增加的數(shù)據(jù)傳輸量至少為2個單位,其中1 個來自于可重構(gòu)陣列向主處理器傳輸?shù)膌t據(jù),另1個來自于主處理器向可重構(gòu) 陣列傳輸?shù)臄?shù)據(jù)。
      將上述輸入節(jié)點、輸出節(jié)點、中間節(jié)點劃分出去后所增加的數(shù)據(jù)傳輸量進(jìn) 行比較,將劃分后數(shù)據(jù)傳輸量增加最小的輸入節(jié)點選擇為劃分對象。
      其中,在選取輸入節(jié)點進(jìn)行劃分時,還應(yīng)優(yōu)先選擇輸出少的輸入節(jié)點。
      輸出少的輸入節(jié)點在被劃分出去之后,若其子節(jié)點在下一次劃分中也被劃 分出去,則第一次將輸入節(jié)點劃分出去增加的數(shù)據(jù)傳輸量將有機會減小。
      參見圖3,例如圖3中的節(jié)點5,其輸出為1,將其劃分出去之后增加的數(shù) 據(jù)傳輸量為"節(jié)點5至節(jié)點8"的1個單位,再將其子節(jié)點8劃分出去之后,增 加的數(shù)據(jù)傳輸量為"節(jié)點8至節(jié)點11"的1個單位,但同時消除了上一次劃分 產(chǎn)生的"節(jié)點5至節(jié)點8"的1個單位的數(shù)據(jù)傳輸量(其中,將節(jié)點5和節(jié)點8 看做一個整體)??偟膩碚f,采用這種劃分方法,將節(jié)點5和節(jié)點8劃分出去以 后,數(shù)據(jù)傳輸量增加了 1;而對于節(jié)點2而言,其輸出為2,將其劃分出去之后 增加的數(shù)據(jù)傳輸量為"節(jié)點2至節(jié)點6和節(jié)點9"的1個單位(節(jié)點2傳給節(jié)點 6和節(jié)點9的數(shù)據(jù)是相同的,因此增加的數(shù)據(jù)傳輸量為1個單位)。再將其子節(jié) 點6劃分出去之后,增加的數(shù)據(jù)傳輸量為"節(jié)點6至節(jié)點9"的1個單位的數(shù)據(jù) 傳輸量。加上上一次劃分產(chǎn)生的"節(jié)點2至節(jié)點9"的l個單位的數(shù)據(jù)傳輸量, 總的數(shù)據(jù)傳輸量增加了 2。所以,比較這兩種劃分方法,將節(jié)點5先劃分出去將 產(chǎn)生較小的數(shù)據(jù)傳輸量。因此,在選取輸入節(jié)點進(jìn)行劃分時,應(yīng)優(yōu)先選擇輸出 少的輸入節(jié)點。三、 在將節(jié)點劃分到主處理器上時,應(yīng)避免數(shù)據(jù)傳輸?shù)碾p向性,保持?jǐn)?shù)據(jù) 傳輸?shù)膯蜗蛐浴?br> 其中,對于中間節(jié)點,若將其劃分到主處理器上,該節(jié)點既需要來自可重 構(gòu)陣列的數(shù)據(jù)作為輸入,又需要將自己的輸出提供給可重構(gòu)陣列作為輸入。這 將增加主處理器和可重構(gòu)陣列之間的依賴性,減少兩部分單獨執(zhí)行時的靈活性, 降低可重構(gòu)陣列執(zhí)行循環(huán)任務(wù)的性能。
      其中,劃分時既選擇輸入節(jié)點,又選擇輸出節(jié)點,也將增加兩部分之間的 依賴性。所以,劃分的對象不能同時為輸入節(jié)點和輸出節(jié)點,又出于原則2中 數(shù)據(jù)傳輸量的考量,因此,選取劃分的對象為輸入節(jié)點。
      四、 在將節(jié)點劃分到主處理器上執(zhí)行時,應(yīng)優(yōu)先考慮自由度高的節(jié)點。 其中,自由度高的節(jié)點對關(guān)鍵路徑的影響小,將其劃分到主處理器上將最
      小程度的影響關(guān)鍵路徑的長度;相反,自由度低的節(jié)點對關(guān)鍵路徑的影響大,
      關(guān)鍵路徑上的節(jié)點恰說明了這點。關(guān)鍵路徑上的節(jié)點自由度最低,將其劃分到 主處理器上執(zhí)行,除了將帶來額外的數(shù)據(jù)傳輸時間之外,主處理器上的執(zhí)行速 度也將慢于可重構(gòu)陣列上的執(zhí)行速度。這都將增加關(guān)鍵路徑的長度,降低可重 構(gòu)陣列執(zhí)行循環(huán)任務(wù)的性能。其中,在選取節(jié)點劃分時,選取自由度高的節(jié)點 的優(yōu)先級將高于選取數(shù)據(jù)傳輸量小的節(jié)點的優(yōu)先級。
      根據(jù)以上四個規(guī)則,構(gòu)造劃分算法,參見圖7,圖7是本發(fā)明實施例提供的 對循環(huán)任務(wù)進(jìn)行軟硬件劃分的流程圖,其中,Cl為對可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù) 流的節(jié)點進(jìn)行算子調(diào)度;C2為根據(jù)算子調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;C3 為獲得輸入節(jié)點的輸出個數(shù);C4為根據(jù)步驟C2獲得的輸入節(jié)點的自由度、步驟 C3獲得的輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出個數(shù)最少的輸入節(jié)點; C5為將步驟C4獲取的輸入節(jié)點劃分到主處理器。
      其中,輸入和輸出具體為
      輸入辨環(huán)體的數(shù)據(jù)流圖G(V, E},其中V為節(jié)點,E為兩個節(jié)點之間有向 的連接關(guān)系;
      輸出在可重構(gòu)陣列上執(zhí)行的數(shù)據(jù)流圖G1(V1, El}、在主處理器上執(zhí)行的 數(shù)據(jù)流圖G2 {V2, E2}。 算法的偽代碼如下
      G1=G; 〃其中,Gl-G為默認(rèn)所有的節(jié)點都在可重構(gòu)陣列上執(zhí)行。
      10while (Gl的節(jié)點個數(shù)大于陣列的規(guī)模) {
      對G1進(jìn)行"盡可能早"算子調(diào)度; 對G1進(jìn)行"盡可能晚"算子調(diào)度; 由兩次算子調(diào)度結(jié)果得到Gl輸入節(jié)點的自由度; 計算G1輸入節(jié)點的輸出個數(shù);
      遍歷Gl所有輸入節(jié)點,獲得自由度最高的一組輸入節(jié)點;
      遍歷Gl所有自由度最高的輸入節(jié)點,找出輸出最少的一組輸入節(jié)點;
      劃分一個輸出最少的節(jié)點到G2;
      更新Gl、 G2;
      其中,當(dāng)滿足自由度最高且輸出最少的輸入節(jié)點為多個時,選擇將編號小 的一個節(jié)點劃分到主處理器G2。例如,節(jié)點"2"、節(jié)點"5"的自由度最高,都 為2,輸出個數(shù)最少,都為l,則將節(jié)點"2" 劃分到主處理器G2。
      實施例1
      下面以 一個具體實施例來說明劃分算法的執(zhí)行過程,具體執(zhí)行過程如下 以可重構(gòu)陣列的規(guī)4莫為4x4為例,即,最大能支持16個節(jié)點的映射。其中,
      Gl代表可重構(gòu)陣列,G2代表主處理器。
      參見圖3中的原圖,為待劃分的循環(huán)體的數(shù)據(jù)流圖,圖中共有18個節(jié)點。 圖8為本發(fā)明實施例提供的對循環(huán)任務(wù)進(jìn)行軟硬件劃分方法的流程圖,參
      見圖8。
      步驟S1:先默認(rèn)所有的節(jié)點都在G1上執(zhí)行。 即,Gl=18, G2=0。
      步驟S2:判斷G1上的節(jié)點數(shù)是否大于G1所能支持的最大節(jié)點數(shù),如果G1 上的節(jié)點數(shù)大于G1所能支持的最大節(jié)點數(shù),貝'J,執(zhí)行步驟S3;否則不對數(shù)據(jù)流 圖進(jìn)行劃分。
      其中,以圖3為例,Gl=18,而Gl所能支持的最大節(jié)點數(shù)為16,由于18>16, 故執(zhí)行步驟S3,使用本發(fā)明所提供的方法對可重構(gòu)陣列Gl上的節(jié)點進(jìn)行劃分。 其中,關(guān)鍵路徑為2條,分別為"1 —3 — 7 —10—13 — 15 —17"和"1 — 4 — 7 —10 — 13 — 15 — 17"。
      步驟S3:對G1進(jìn)行"盡可能早"算子調(diào)度,得到調(diào)度后的數(shù)據(jù)流圖。 其中,調(diào)度后的數(shù)據(jù)流圖如圖3左圖所示,根據(jù)"盡可能早"算子調(diào)度, 以及從路徑必須服從關(guān)鍵路徑的調(diào)度關(guān)系,將節(jié)點"2"、節(jié)點"5"分配到第1 個時鐘周期;將節(jié)點"6"、節(jié)點"8"分配到第2個時鐘周期;將節(jié)點"9"、節(jié) 點"11"分配到第3個時鐘周期;將節(jié)點"12"分配到第4個時鐘周期;節(jié)點 "14"分配到第5個時鐘周期;由于節(jié)點"14"分配到第5個時鐘周期,故節(jié) 點"16"分配到第6個時鐘周期;節(jié)點"18"分配到第8個時鐘周期。 步驟S4:對G1進(jìn)行"盡可能晚"算子調(diào)度,得到調(diào)度后的數(shù)據(jù)流圖。 其中,調(diào)度后的數(shù)據(jù)流圖如圖3右圖所示,根據(jù)"盡可能晚"算子調(diào)度, 以及從路徑必須服從關(guān)鍵路徑的調(diào)度關(guān)系,將節(jié)點"18"分配到第8個時鐘周 期;將節(jié)點"16"分配到第7個時鐘周期;將節(jié)點"14"、節(jié)點"12"分配到第 6個時鐘周期;將節(jié)點"11"、節(jié)點"9"分配到第5個時鐘周期;將節(jié)點"6"、 節(jié)點"8"分配到第4個時鐘周期;將節(jié)點"2"、節(jié)點"5"分配到第3個時鐘 周期。
      步驟S5:根據(jù)步驟S3,步驟S4的調(diào)度結(jié)果,計算Gl輸入節(jié)點的自由度。 其中,參見圖3,輸入節(jié)點為'T,、 "2"、 "5",根據(jù)左圖和右圖,得出節(jié)點 1的自由度^ 1,節(jié)點2的自由度為3,節(jié)點5的自由度為3。 步驟S6:計算輸入節(jié)點的輸出個數(shù)。
      其中,參見圖3,輸入節(jié)點"1"的輸出為節(jié)點"3"、節(jié)點"4",即2個輸 出;輸入節(jié)點"2"的輸出為節(jié)點"6"、節(jié)點"9",即2個輸出;輸入節(jié)點"5" 的輸出為節(jié)點"8",即1個輸出。
      步驟S7:從步驟S5中獲取輸入節(jié)點中自由度最高的節(jié)點。 其中,節(jié)點1的自由度為1,節(jié)點2的自由度為3,節(jié)點5的自由度為3, 即,節(jié)點5的自由度最高。
      步驟S8:根據(jù)步驟S6、 S7獲取自由度最高的輸入節(jié)點中輸出最少的節(jié)點。
      其中,自由度最高的輸入節(jié)點中輸出個數(shù)最少的節(jié)點為節(jié)點5。
      步驟S9:將步驟S8中獲取到的輸出個數(shù)最少的節(jié)點劃分到主處理器G2上。
      其中,將節(jié)點5劃分到主處理器G2上。
      步驟S10:更新G1、 G2。支持的最大節(jié)點數(shù) 如果更新后的G1節(jié)點數(shù)大于G1所能支持的最大節(jié)點數(shù),則,執(zhí)行步驟S12;否 則不對節(jié)點進(jìn)行劃分。參考圖5,更新后的Gl上的節(jié)點數(shù)為17, Gl所能支持的最大節(jié)點數(shù)為16, 由于17>16,故執(zhí)行步驟S12,繼續(xù)使用本發(fā)明所提供的方法對Gl上的節(jié)點進(jìn) 行劃分。步驟S12:對更新后的G1進(jìn)行"盡可能早"算子調(diào)度,得到調(diào)度后的數(shù)據(jù) 流圖。其中,調(diào)度后的數(shù)據(jù)流圖如圖5左圖所示,根據(jù)"盡可能早"算子調(diào)度, 以及從路徑必須服從關(guān)鍵路徑的調(diào)度關(guān)系,將節(jié)點"2"、 "8" 分配到第l個時 鐘周期;將節(jié)點"6"、 "11"分配到第2個時鐘周期;將節(jié)點"9"分配到第3 個時鐘周期;將節(jié)點"12" 分配到第4個時鐘周期;將節(jié)點"14" 分配到第5 個時鐘周期;將節(jié)點"16"分配到第6個時鐘周期;將節(jié)點"18"分配到第8 個時鐘周期;步驟S13:對更新后的G1進(jìn)行"盡可能晚"算子調(diào)度,得到調(diào)度后的數(shù)據(jù) 流圖。 .其中,調(diào)度后的數(shù)據(jù)流圖如圖5右圖所示,根據(jù)"盡可能晚"算子調(diào)度, 以及從路徑必須服從關(guān)鍵路徑的調(diào)度關(guān)系,將節(jié)點"18"分配到第8個時鐘周 期;將節(jié)點"16"分配到第7個時鐘周期;將節(jié)點"14"、節(jié)點"12"分配到第 6個時鐘周期;將節(jié)點"11"、節(jié)點"9"分配到第5個時鐘周期;將節(jié)點"6"、 節(jié)點"8"分配到第4個時鐘周期;將節(jié)點"2"分配到第3個時鐘周期。步驟S14:根據(jù)步驟S12,步驟S13的調(diào)度結(jié)果,計算更新后的Gl輸入節(jié) 點的自由度。其中,參見圖5,輸入節(jié)點為'T,、 "2"、 "8",根據(jù)圖5的左圖和右圖,得 出節(jié)點1的自由度為1,節(jié)點2的自由度為3,節(jié)點8的自由度為4。 步驟S15:計算輸入節(jié)點的輸出個數(shù)。其中,參見圖5,輸入節(jié)點"1"的輸出為節(jié)點"3"、節(jié)點"4",即2個輸 出;輸入節(jié)點"2"的輸出為節(jié)點"6"、節(jié)點"9",即2個輸出;輸入節(jié)點"8"的輸出為節(jié)點"11",即1個輸出。
      步驟S16:從步驟S15中,獲取輸入節(jié)點中自由度最高的節(jié)點。 其中,節(jié)點1的自由度為1,節(jié)點2的自由度為3,節(jié)點8的自由度為4, 即,節(jié)點8的自由度最高。
      步驟S17:獲取自由度最高的輸入節(jié)點中輸出個數(shù)最少的節(jié)點。 其中,自由度最高的輸入節(jié)點中輸出個數(shù)最少的節(jié)點為節(jié)點8 。 步驟S18:將步驟S17中獲取到的輸出最少的節(jié)點劃分到G2上。 其中,將節(jié)點8劃分到G2上。 步驟S19:第二次更新G1、 G2。
      其中,第二次更新后的G1、 G2如圖6所示,圖6中的粗體箭頭代表兩部分 之間的數(shù)據(jù)傳輸。
      步驟S20:如果第二次更新后的Gl上的節(jié)點數(shù)大于Gl所能支持的最大節(jié)點 數(shù),繼續(xù)對可重構(gòu)陣列進(jìn)行劃分,直到可重構(gòu)陣列上的節(jié)點數(shù)小于等于可重構(gòu) 陣列的規(guī)模為止。
      參見圖6,更新后的Gl上的節(jié)點數(shù)為16, Gl所能支持的最大節(jié)點數(shù)為16, 即無需進(jìn)4于劃分,執(zhí)行結(jié)束。
      本發(fā)明實施例提供的方法發(fā)揮了可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點,力口 快了運算的速度,滿足了實際應(yīng)用中的需要。
      實施例2
      參見圖9,為本發(fā)明實施例提供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的裝 置示意圖,圖IO為本發(fā)明實施例提供的一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的 裝置具體示意圖,用于對規(guī)模較大的循環(huán)體進(jìn)行軟硬件劃分,包括
      調(diào)度模塊101,用于對可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行算子調(diào)度。
      其中,具體包括
      第一調(diào)度單元IOIA,用于對當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第一算子調(diào)度; 第二調(diào)度單元101B,用于對當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第二算子調(diào)度; 相應(yīng)地,調(diào)度模塊具體包括根據(jù)第二調(diào)度單元獲得的調(diào)度中的節(jié)點所在
      的時鐘周期和第 一調(diào)度單元獲得的調(diào)度中的節(jié)點所在的時鐘周期,獲得輸入節(jié)
      點的自由度。第一獲得模塊102,用于根據(jù)調(diào)度模塊的調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;
      第二獲得模塊103,用于獲得輸入節(jié)點的輸出個數(shù);
      獲取模塊104,用于根據(jù)第一獲得模塊獲得的輸入節(jié)點的自由度、第二獲得 模塊獲得的輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出最少的輸入節(jié)點;
      劃分模塊105,用于將獲取模塊獲取的輸入節(jié)點劃分到主處理器。
      處理;溪塊106,用于更新主處理器和可重構(gòu)陣列,直到可重構(gòu)陣列當(dāng)前扭^亍 數(shù)據(jù)流的節(jié)點小于可重構(gòu)陣列的規(guī)模為止。
      當(dāng)獲取模塊獲取的輸入節(jié)點為多個時;劃分模塊具體用于將獲取模塊獲取 的輸入節(jié)點中編號最小的一個輸入節(jié)點劃分到主處理器。
      本發(fā)明實施例提供的裝置發(fā)揮了可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點,加 快了運算的速度,減少了程序運行的時間,滿足了實際應(yīng)用中的需要。
      綜上所述,本發(fā)明實施例提出的一種軟硬件劃分循環(huán)任務(wù)的方法和裝置, 當(dāng)循環(huán)體規(guī)模大于可重構(gòu)陣列的物理規(guī)模時,通過對規(guī)模較大的循環(huán)體進(jìn)行軟 硬件劃分,發(fā)揮了可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點,加快了運算的速度, 減少了程序運行的時間,滿足了實際應(yīng)用中的需要。
      以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的 精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的 保護(hù)范圍之內(nèi)。
      1權(quán)利要求
      1、一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法,其特征在于,當(dāng)可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點個數(shù)大于可重構(gòu)陣列的規(guī)模時,所述方法包括步驟C1對所述可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行算子調(diào)度;步驟C2根據(jù)算子調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;步驟C3獲得所述輸入節(jié)點的輸出個數(shù);步驟C4根據(jù)步驟C2獲得的所述輸入節(jié)點的自由度、步驟C3獲得的所述輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出個數(shù)最少的輸入節(jié)點;步驟C5將步驟C4獲取的輸入節(jié)點劃分到主處理器。
      2、 如權(quán)利要求1所述的方法,其特征在于,所述步驟C5還包括更新所 述主處理器和所述可重構(gòu)陣列,重復(fù)執(zhí)行步驟C1至C5,直到所述可重構(gòu)陣列當(dāng) 前執(zhí)行數(shù)據(jù)流的.節(jié)點個數(shù)小于等于可重構(gòu)陣列的頻j模為止。
      3、 如權(quán)利要求l所述的方法,其特征在于,所述步驟C2包括 步驟C21:對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第一算子調(diào)度; 步驟C22:對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第二算子調(diào)度;相應(yīng)地,所述步驟C2具體包括根據(jù)步驟C22獲得的調(diào)度中的節(jié)點所在的 時鐘周期和余驟C21獲得的調(diào)度中的節(jié)點所在的時鐘周期,獲得輸入節(jié)點的自 由度。
      4、 如權(quán)利要求3所述的方法,其特征在于,根據(jù)步驟C22獲得的調(diào)度中的 節(jié)點所在的時鐘周期和步驟C21獲得的調(diào)度中的節(jié)點所在的時鐘周期,獲得輸 入節(jié)點的自由度具體為輸入節(jié)點的自由度="第二算子調(diào)度中節(jié)點的時鐘周期-第一算子調(diào)度中 節(jié)點的時鐘周期+ 1"。
      5、 如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述步驟C4獲取的輸入節(jié) 點為多個時;所述步攀C5包括將編號最小的一個輸入節(jié)點劃分到主處理器。
      6、 一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的裝置,其特征在于,當(dāng)可重構(gòu)陣 列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點個數(shù)大于可重構(gòu)陣列的失見模時,所述裝置包括調(diào)度模塊,用于對所述可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行算子調(diào)度; 第一獲得模塊,用于根據(jù)所述調(diào)度模塊的調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;第二獲得模塊,用于獲得輸入節(jié)點的輸出個數(shù);獲取模塊,用于根據(jù)所述第一獲得模塊獲得的輸入節(jié)點的自由度、所述第 二獲得模塊獲得的輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出最少的輸入節(jié) 點; '劃分模塊,用于將所述獲取模塊獲取的輸入節(jié)點劃分到主處理器。
      7、 如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括處理模塊; 所述處理模塊用于更新所述主處理器和所述可重構(gòu)陣列,直到所述可重構(gòu)陣列 當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點小于所述可重構(gòu)陣列的身見模為止。
      8、 如權(quán)利要求6所述的裝置,其特征在于,所述調(diào)度沖莫塊具體包括 第一調(diào)度單元,用于對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第一算子調(diào)度; 第二調(diào)度單元,用于對所述當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行第二算子調(diào)度; 相應(yīng)地,所述第一獲得模塊具體用于根據(jù)所述第二調(diào)度單元獲得的調(diào)度中的節(jié)點所在的時鐘周期和所述第 一調(diào)度單元獲得的調(diào)度中的節(jié)點所在的時鐘 周期,獲得輸入節(jié)點的自由度。
      9、 如權(quán)利要求6所述的裝置,其特征在于,當(dāng)所述獲取模塊獲取的輸入節(jié) 點為多個時;所述劃分模塊具體用于將所述獲取模塊獲取的輸入節(jié)點中編號最小的 一個 輸入節(jié)點劃分到主處理器。全文摘要
      本發(fā)明公開了一種實現(xiàn)對循環(huán)任務(wù)進(jìn)行軟硬件劃分的方法和裝置,屬于嵌入式系統(tǒng)領(lǐng)域。當(dāng)可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點個數(shù)大于可重構(gòu)陣列的規(guī)模時,所述方法包括對所述可重構(gòu)陣列當(dāng)前執(zhí)行數(shù)據(jù)流的節(jié)點進(jìn)行算子調(diào)度;根據(jù)算子調(diào)度結(jié)果,獲得輸入節(jié)點的自由度;獲得所述輸入節(jié)點的輸出個數(shù);根據(jù)獲得的所述輸入節(jié)點的自由度、獲得的所述輸入節(jié)點的輸出個數(shù),獲取自由度最高且輸出個數(shù)最少的輸入節(jié)點;將獲取的輸入節(jié)點劃分到主處理器。本發(fā)明提供的方法,擴大了可重構(gòu)處理器可執(zhí)行的循環(huán)體的規(guī)模,發(fā)揮了可重構(gòu)陣列善于執(zhí)行循環(huán)任務(wù)的特點,減少了整個應(yīng)用程序執(zhí)行的時間,滿足了實際應(yīng)用中的需要。
      文檔編號G06F9/46GK101630274SQ20091009040
      公開日2010年1月20日 申請日期2009年7月31日 優(yōu)先權(quán)日2009年7月31日
      發(fā)明者于蘇東, 劉雷波, 尹首一, 王延升, 魏少軍 申請人:清華大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1