一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法
【專利摘要】本發(fā)明公開了一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法,該調(diào)度算法適用于在線跟蹤系統(tǒng)中多個(gè)在線跟蹤單元需要通過單一傳輸接口進(jìn)行數(shù)據(jù)輸出的情況。該算法通過配置相應(yīng)的門限值、時(shí)間片長度以及優(yōu)先級,結(jié)合對在線跟蹤單元的活動(dòng)態(tài)判斷,采用兩種查詢方式對各在線跟蹤單元的數(shù)據(jù)輸出請求進(jìn)行仲裁。本發(fā)明能夠在低資源消耗、低數(shù)據(jù)溢出率以及高可擴(kuò)展性的前提下實(shí)現(xiàn)對多路跟蹤數(shù)據(jù)的合成,從而解決在線跟蹤系統(tǒng)中的多數(shù)據(jù)緩存隊(duì)列的調(diào)度問題。
【專利說明】
一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于總線仲裁技術(shù)領(lǐng)域,具體地說是一種結(jié)合門限和活動(dòng)態(tài)判斷的可配置動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法。
【背景技術(shù)】
[0002]當(dāng)異構(gòu)多核SoC逐漸成為集成電路的主流時(shí),快速有效的調(diào)試技術(shù)已經(jīng)成為降低SoC設(shè)計(jì)成本的關(guān)鍵。在線調(diào)試技術(shù)能夠在完全不干擾多核系統(tǒng)運(yùn)行下實(shí)時(shí)獲取想要的調(diào)試信息,是調(diào)試設(shè)計(jì)的重要研究方向。在線調(diào)試必然涉及到在線跟蹤系統(tǒng)的設(shè)計(jì),為減少對芯片管腳資源的占用,在線跟蹤系統(tǒng)通常只設(shè)置一個(gè)輸出端口,故輸出端口成為在線跟蹤系統(tǒng)的帶寬瓶頸。對于多核系統(tǒng)的在線跟蹤而言,多資源節(jié)點(diǎn)的跟蹤數(shù)據(jù)需要匯合至單一跟蹤傳輸接口,用于多數(shù)據(jù)緩存隊(duì)列的合成調(diào)度算法是多核系統(tǒng)的在線跟蹤設(shè)計(jì)的關(guān)鍵技術(shù)之一,也是決定數(shù)據(jù)傳輸效率和緩存利用率的關(guān)鍵因素。其設(shè)計(jì)常需要考慮數(shù)據(jù)溢出率、隊(duì)列優(yōu)先級、隊(duì)列切換開銷、面積約束和時(shí)間約束等等。
[0003]常見的解決在線跟蹤數(shù)據(jù)合成的調(diào)度方法有:ARM的CoreSight架構(gòu)中的TraceFunnel模塊。該模塊通過為每個(gè)隊(duì)列設(shè)置互不相同的優(yōu)先級和各隊(duì)列相同的最小響應(yīng)粒度HTC(H0ld Time Cycle),采用非搶占式窮盡優(yōu)先響應(yīng)方式,每次響應(yīng)至少為HTC。這種調(diào)度方式的硬件開銷小,但窮盡優(yōu)先響應(yīng)方式往往造成高優(yōu)先級隊(duì)列的緩沖空間尚未充分利用而低優(yōu)先級隊(duì)列溢出嚴(yán)重;再如LBF(Local Binary Fitting)算法優(yōu)先響應(yīng)歸一化緩沖區(qū)長度(對長與緩沖容量之比)最大的緩沖隊(duì)列,但歸一化需要除法操作,使得該算法實(shí)現(xiàn)復(fù)雜,并且緩沖區(qū)長度間的相互比較使得擴(kuò)展性差;緩沖隊(duì)列沒有優(yōu)先級差別,也未考慮減少隊(duì)列切換次數(shù);也有提出依照不同概率對各優(yōu)先級隊(duì)列進(jìn)行響應(yīng)的方法,但產(chǎn)生隨機(jī)數(shù)及相關(guān)運(yùn)算的硬件代價(jià)過高。
【發(fā)明內(nèi)容】
[0004]本發(fā)明是為了克服現(xiàn)有技術(shù)存在的不足之處,提供一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法,以期能在低資源消耗、低數(shù)據(jù)溢出率以及高可擴(kuò)展性的前提下實(shí)現(xiàn)對多路跟蹤數(shù)據(jù)的合成,從而能夠解決在線跟蹤系統(tǒng)中的多數(shù)據(jù)緩存隊(duì)列的調(diào)度問題。
[0005]本發(fā)明為解決技術(shù)問題采用如下技術(shù)方案:
[0006]本發(fā)明一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法,是應(yīng)用于在線跟蹤系統(tǒng)中,所述在線跟蹤系統(tǒng)包括:η個(gè)在線跟蹤單元、一個(gè)總線仲裁單元和一個(gè)跟蹤傳輸接口;所述η個(gè)在線跟蹤單元分別對應(yīng)于η個(gè)資源節(jié)點(diǎn),用于采集相應(yīng)資源節(jié)點(diǎn)中的數(shù)據(jù),并在請求得到響應(yīng)后將數(shù)據(jù)傳輸至所述總線仲裁單元;所述總線仲裁單元通過所述跟蹤傳輸接口進(jìn)行數(shù)據(jù)輸出;其特點(diǎn)是,所述總線仲裁單元是按如下步驟對請求進(jìn)行動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度:
[0007]步驟1、設(shè)置門限
[0008]根據(jù)所述η個(gè)在線跟蹤單元中各自緩存FIFO容量設(shè)置相應(yīng)的門限值,記為(A1,A2,...,Ai,...,An},Ai表示第i個(gè)在線跟蹤單元的門限值;I < i <n;
[0009]當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)2仏時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為緊急態(tài)請求;
[0010]當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長(XAifB1時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為增長態(tài)請求;
[0011]當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)=0時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為空態(tài)請求;
[0012]步驟2、所述總線仲裁單元對所述第i個(gè)在線跟蹤單元的緩存FIFO寫使能進(jìn)行檢測,若緩存FIFO寫使能為高電平,則判定所述第i個(gè)在線跟蹤單元為活動(dòng)態(tài);若緩存FIFO寫使能為低電平,則判定所述第i個(gè)在線跟蹤單元為非活動(dòng)態(tài);
[0013]步驟3、所述總線仲裁單元根據(jù)第i個(gè)在線跟蹤單元的緩存FIFO容量設(shè)置相應(yīng)的時(shí)間片長度,記為(SiS2r^S1,…,SnKS1表示第i個(gè)在線跟蹤單元的時(shí)間片長度;
[0014]步驟4、所述總線仲裁單元設(shè)置η個(gè)在線跟蹤單元的響應(yīng)優(yōu)先級;
[0015]步驟5、所述總線仲裁單元中設(shè)置一緊急態(tài)寄存器U,所述第i個(gè)在線跟蹤單元對應(yīng)于所述緊急態(tài)寄存器U中的第i位;
[0016]當(dāng)?shù)趇個(gè)在線跟蹤單元處于緊急態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為“I”;
[0017]當(dāng)?shù)趇個(gè)在線跟蹤單元處于增長態(tài)或空態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為 “O”;
[0018]步驟6、所述總線仲裁單元設(shè)置一活動(dòng)態(tài)寄存器V,所述第i個(gè)在線跟蹤單元對應(yīng)于所述活動(dòng)寄存器V中的第i位;
[0019]當(dāng)?shù)趇個(gè)在線跟蹤單元處于活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“I”;
[0020]當(dāng)?shù)趇個(gè)在線跟蹤單元處于非活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“O” ;
[0021]步驟7、所述總線仲裁單元設(shè)置一請求寄存器R,所述第i個(gè)在線跟蹤單元對應(yīng)于所述請求寄存器R中的第i位;
[0022]當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為非空時(shí),則將所述請求寄存器R中的第i位設(shè)置為“I”;
[0023]當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為空時(shí),則將所述請求寄存器R中的第i位設(shè)置為 “O”;
[0024]步驟8、所述總線仲裁單元對所述緊急態(tài)寄存器U進(jìn)行按位“或”操作,得到操作結(jié)果u ;
[0025]步驟9、所述總線仲裁單元對所述活動(dòng)寄存器V進(jìn)行按位“或”操作,得到操作結(jié)果
V;
[0026]步驟10、所述總線仲裁單元對所述請求寄存器R進(jìn)行按位“或”操作,得到操作結(jié)果r;
[0027]步驟11、假設(shè)第i個(gè)在線跟蹤單元最先接收到數(shù)據(jù),則將所述第i個(gè)在線跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元;此時(shí),所述操作結(jié)果r為“I”,并啟動(dòng)計(jì)數(shù)器進(jìn)行計(jì)數(shù);
[0028]步驟12、當(dāng)計(jì)數(shù)器的值小于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度且請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“I”時(shí),所述總線仲裁單元獲取所述當(dāng)前響應(yīng)跟蹤單元的數(shù)據(jù),并傳輸至跟蹤傳輸接口進(jìn)行輸出,同時(shí)執(zhí)行步驟13;
[0029]步驟13、判斷操作結(jié)果r是否為“O”,若為“O”,則停止計(jì)數(shù)器并清零;并返回步驟11;若不為“O”,則同時(shí)執(zhí)行步驟14、步驟16、步驟18和步驟20后,再執(zhí)行步驟22;
[0030]步驟14;所述總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元;判斷處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟15;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得優(yōu)先級最高且處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元;
[0031]步驟15、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元;
[0032]步驟16、所述總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)的在線跟蹤單元;判斷處于緊急態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟17;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元;
[0033]步驟17、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元;
[0034]步驟18、所述總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元;判斷處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟19;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元;
[0035]步驟19、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元;
[0036]步驟20、所述總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)的在線跟蹤單元;判斷處于增長態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟21;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元;
[0037]步驟21、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元;
[0038]步驟22、當(dāng)操作結(jié)果U= I且V= I時(shí);以所述第一響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0039]當(dāng)操作結(jié)果U = I且V = O時(shí);以所述第二響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0040]當(dāng)操作結(jié)果U = O且V = I時(shí);以所述第三響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0041]當(dāng)操作結(jié)果U = O且V = O時(shí);以所述第四響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0042]步驟23、當(dāng)計(jì)數(shù)器的值等于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度或請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“O”時(shí),計(jì)數(shù)器清零;并將所述下個(gè)響應(yīng)跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元后,返回步驟12執(zhí)行。
[0043]與已有技術(shù)相比,本發(fā)明有益效果體現(xiàn)在:
[0044]1、本發(fā)明的通過為各個(gè)在線跟蹤單元提供可配置的門限值、優(yōu)先級以及時(shí)間片,并結(jié)合活動(dòng)態(tài)的判斷,根據(jù)優(yōu)先級的不同,采用兩種不同的查詢方式,克服了現(xiàn)有技術(shù)中高數(shù)據(jù)溢出率、高資源消耗以及可擴(kuò)展性差等問題,從而使總線仲裁響應(yīng)各個(gè)在線跟蹤單元的時(shí)間更加合理,減少了隊(duì)列切換和硬件開銷,提高了緩沖利用率。
[0045]2、本發(fā)明使得各個(gè)在線跟蹤單元能夠根據(jù)各自對應(yīng)的緩存容量設(shè)置相應(yīng)的門限值,并通過緊急態(tài)判斷,使總線仲裁優(yōu)先響應(yīng)緊急態(tài)的在線跟蹤單元;解決了Trace Funnel技術(shù)中高優(yōu)先級的緩沖空間尚未充分利用而低優(yōu)先級的溢出嚴(yán)重問題,降低了數(shù)據(jù)溢出率。
[0046]3、本發(fā)明中總線仲裁單元通過對各在線跟蹤單元的活動(dòng)態(tài)進(jìn)行判斷,結(jié)合緊急態(tài)的判斷,對在線跟蹤單元進(jìn)行分類,在每一類中,根據(jù)配置的優(yōu)先級是否相同,采用兩種查詢方式判斷出下一響應(yīng)跟蹤單元;這種多方面的考慮使得總線仲裁單元響應(yīng)各在線跟蹤單元的時(shí)間分配更加合理,提高了緩沖利用率。
[0047]4、本發(fā)明使得各個(gè)在線跟蹤單元能夠根據(jù)各自對應(yīng)的緩存容量設(shè)置相應(yīng)的時(shí)間片,充分考慮各在線跟蹤單元所需響應(yīng)時(shí)間,有效減少隊(duì)列切換代價(jià)。
[0048]5、本發(fā)明通過設(shè)置緊急態(tài)寄存器、活動(dòng)態(tài)寄存器以及請求寄存器來分別存儲各個(gè)在線跟蹤單元的狀態(tài);當(dāng)需要增加在線跟蹤單元時(shí),只需要增加寄存器位寬即可,故該算法的可擴(kuò)展性很好。
[0049]6、本發(fā)明的硬件實(shí)現(xiàn)中主要的邏輯運(yùn)算是“或”運(yùn)算,無需算術(shù)運(yùn)算,資源消耗小;該模塊在Xilinx公司Virtex 7系列的XC7V2000T FPGA芯片上進(jìn)行原型驗(yàn)證,資源消耗為33個(gè)靜態(tài)寄存器和529個(gè)靜態(tài)LUT。
【具體實(shí)施方式】
[0050]本實(shí)施例中,一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法,是應(yīng)用于在線跟蹤系統(tǒng)中,在線跟蹤系統(tǒng)包括:η個(gè)在線跟蹤單元、一個(gè)總線仲裁單元和一個(gè)跟蹤傳輸接口;η個(gè)在線跟蹤單元分別對應(yīng)于η個(gè)資源節(jié)點(diǎn),用于采集相應(yīng)資源節(jié)點(diǎn)中的數(shù)據(jù),并在請求得到響應(yīng)后將數(shù)據(jù)傳輸至總線仲裁單元;總線仲裁單元通過跟蹤傳輸接口進(jìn)行數(shù)據(jù)輸出;
[0051]總線仲裁單元是按如下步驟對請求進(jìn)行動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度:
[0052]步驟1、設(shè)置門限
[0053]根據(jù)η個(gè)在線跟蹤單元中各自緩存FIFO容量設(shè)置相應(yīng)的門限值,記為…,A1,…,AnKA1表示第i個(gè)在線跟蹤單元的門限值;I Si Sn;由于資源節(jié)點(diǎn)中的數(shù)據(jù)特性不同,在線跟蹤單元采集到的數(shù)據(jù)量也不同,為了節(jié)約硬件資源,在線跟蹤單元中的緩存FIFO容量也是各不相同的。為了后續(xù)緊急態(tài)判斷的合理性,門限值也需作不同設(shè)置。首先根據(jù)一個(gè)在線跟蹤單元中FIFO容量設(shè)置合適的門限值,再根據(jù)該在線跟蹤單元中門限值與容量的比例,設(shè)置其余在線跟蹤單元的門限值,如:當(dāng)FIFO容量為512的在線跟蹤單元的門限值設(shè)置為400時(shí);則FIFO容量為256的在線跟蹤單元的門限值需設(shè)置為200。
[0054]當(dāng)?shù)趇個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)2仏時(shí),則總線仲裁單元將第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為緊急態(tài)請求;
[0055]當(dāng)?shù)趇個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長OfA^B1時(shí),則總線仲裁單元將第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為增長態(tài)請求;
[0056]當(dāng)?shù)趇個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)=0時(shí),則總線仲裁單元將第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為空態(tài)請求;
[0057]步驟2、總線仲裁單元對第i個(gè)在線跟蹤單元的緩存FIFO寫使能進(jìn)行檢測,若緩存FIFO寫使能為高電平,則判定第i個(gè)在線跟蹤單元為活動(dòng)態(tài);若緩存FIFO寫使能為低電平,則判定第i個(gè)在線跟蹤單元為非活動(dòng)態(tài);
[0058]步驟3、總線仲裁單元根據(jù)第i個(gè)在線跟蹤單元的緩存FIFO容量設(shè)置相應(yīng)的時(shí)間片長度,記為{&,&,…,S1,…,SnKS1表示第i個(gè)在線跟蹤單元的時(shí)間片長度;時(shí)間片長度的設(shè)置也應(yīng)同門限的設(shè)置規(guī)律相同,如:當(dāng)FIFO容量為512的在線跟蹤單元的時(shí)間片長度值設(shè)置為64時(shí);則FIFO容量為256的的在線跟蹤單元的時(shí)間片長度值需設(shè)置為32。此外時(shí)間片長度太大會增加緩存溢出風(fēng)險(xiǎn),太小則會導(dǎo)致隊(duì)列頻繁切換,增加時(shí)間浪費(fèi)和帶寬浪費(fèi)。
[0059]步驟4、總線仲裁單元設(shè)置η個(gè)在線跟蹤單元的響應(yīng)優(yōu)先級;優(yōu)先級可以全部相同,可以全部不同,可以局部相同。該算法的硬件實(shí)現(xiàn)中,每個(gè)在線跟蹤單元的優(yōu)先級用一個(gè)寄存器的值來表示,該值越大則優(yōu)先級越高。
[0060]步驟5、總線仲裁單元中設(shè)置一緊急態(tài)寄存器U,第i個(gè)在線跟蹤單元對應(yīng)于緊急態(tài)寄存器U中的第i位;
[0061]當(dāng)?shù)趇個(gè)在線跟蹤單元處于緊急態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為“I”;
[0062]當(dāng)?shù)趇個(gè)在線跟蹤單元處于增長態(tài)或空態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為 “O”;
[0063]步驟6、總線仲裁單元設(shè)置一活動(dòng)態(tài)寄存器V,第i個(gè)在線跟蹤單元對應(yīng)于活動(dòng)寄存器V中的第i位;
[0064]當(dāng)?shù)趇個(gè)在線跟蹤單元處于活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“I”;
[0065]當(dāng)?shù)趇個(gè)在線跟蹤單元處于非活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“O” ;
[0066]步驟7、總線仲裁單元設(shè)置一請求寄存器R,第i個(gè)在線跟蹤單元對應(yīng)于請求寄存器R中的第i位;
[0067]當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為非空時(shí),則將請求寄存器R中的第i位設(shè)置為丄;
[0068]當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為空時(shí),則將請求寄存器R中的第i位設(shè)置為“O” ;
[0069]R與U相同位的值只可能出現(xiàn)“I”與T、“I”與“O”以及“O”與“O”三種不同情況,當(dāng)R與U相同位的值不同時(shí),可知該位對應(yīng)的在線跟蹤單元處于增長態(tài)。
[0070]步驟8、總線仲裁單元對緊急態(tài)寄存器U進(jìn)行按位“或”操作,得到操作結(jié)果U。當(dāng)u等于I時(shí),則表示存在處于緊急態(tài)的在線跟蹤單元;當(dāng)u等于O時(shí),則表示不存在處于緊急態(tài)的在線跟蹤單元;
[0071]步驟9、總線仲裁單元對活動(dòng)寄存器V進(jìn)行按位“或”操作,得到操作結(jié)果V。當(dāng)V等于I時(shí),則表示存在處于活動(dòng)態(tài)的在線跟蹤單元;當(dāng)V等于O時(shí),則表示不存在處于活動(dòng)態(tài)的在線跟蹤單元;
[0072]步驟10、總線仲裁單元對請求寄存器R進(jìn)行按位“或”操作,得到操作結(jié)果r。當(dāng)r等于I時(shí),則表示存在在線跟蹤單元正在請求仲裁單元的響應(yīng);當(dāng)r等于O時(shí),則表示所有在線跟蹤單元的緩沖FIFO均不存在數(shù)據(jù)需要輸出;
[0073]步驟11、假設(shè)第i個(gè)在線跟蹤單元最先接收到數(shù)據(jù),則將第i個(gè)在線跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元;此時(shí),操作結(jié)果r為“I”,并啟動(dòng)計(jì)數(shù)器進(jìn)行計(jì)數(shù);
[0074]步驟12、當(dāng)計(jì)數(shù)器的值小于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度且請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“I”時(shí),總線仲裁單元獲取當(dāng)前響應(yīng)跟蹤單元的數(shù)據(jù),并傳輸至跟蹤傳輸接口進(jìn)行輸出,同時(shí)執(zhí)行步驟13;
[0075]步驟13、判斷操作結(jié)果r是否為“O”,若為“O”,則停止計(jì)數(shù)器并清零;并返回步驟11;若不為“O”,則同時(shí)執(zhí)行步驟14、步驟16、步驟18和步驟20后,再執(zhí)行步驟22;
[0076]步驟14;總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元;判斷處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟15;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得優(yōu)先級最高且處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元;
[0077]步驟15、總線仲裁單元從緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元;這里順時(shí)針查詢方式是指,假設(shè)緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位是第i位,則判斷i+Ι所對應(yīng)的在線跟蹤單元是否滿足既是緊急態(tài)又是活動(dòng)態(tài)的條件,若滿足則將其作為第一響應(yīng)跟蹤單元,若不滿足,則繼續(xù)判斷i+2位,直至輪轉(zhuǎn)到第i位。
[0078]步驟16、總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)的在線跟蹤單元;判斷處于緊急態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟17;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元;
[0079 ]步驟17、總線仲裁單元從緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元;
[0080]步驟18、總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元;判斷處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟19;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元;
[0081 ]步驟19、總線仲裁單元從緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元;
[0082]步驟20、總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)的在線跟蹤單元;判斷處于增長態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟21;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元;
[0083]步驟21、總線仲裁單元從緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元;
[0084]步驟22、當(dāng)操作結(jié)果U = I且V = I時(shí);以第一響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0085]當(dāng)操作結(jié)果u = I且v = 0時(shí);以第二響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0086]當(dāng)操作結(jié)果U = O且V = I時(shí);以第三響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0087]當(dāng)操作結(jié)果U = O且V = O時(shí);以第四響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;
[0088]步驟23、當(dāng)計(jì)數(shù)器的值等于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度或請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“O”時(shí),計(jì)數(shù)器清零;并將下個(gè)響應(yīng)跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元后,返回步驟12執(zhí)行。
【主權(quán)項(xiàng)】
1.一種可配置的動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度算法,是應(yīng)用于在線跟蹤系統(tǒng)中,所述在線跟蹤系統(tǒng)包括:η個(gè)在線跟蹤單元、一個(gè)總線仲裁單元和一個(gè)跟蹤傳輸接口;所述η個(gè)在線跟蹤單元分別對應(yīng)于η個(gè)資源節(jié)點(diǎn),用于采集相應(yīng)資源節(jié)點(diǎn)中的數(shù)據(jù),并在請求得到響應(yīng)后將數(shù)據(jù)傳輸至所述總線仲裁單元;所述總線仲裁單元通過所述跟蹤傳輸接口進(jìn)行數(shù)據(jù)輸出;其特征是,所述總線仲裁單元是按如下步驟對請求進(jìn)行動(dòng)態(tài)時(shí)間片輪轉(zhuǎn)調(diào)度: 步驟1、設(shè)置門限 根據(jù)所述η個(gè)在線跟蹤單元中各自緩存FIFO容量設(shè)置相應(yīng)的門限值,記為…,A1,…,An} ,A1表示第i個(gè)在線跟蹤單元的門限值;I < i < η; 當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)2仏時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為緊急態(tài)請求; 當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長(XAifB1時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為增長態(tài)請求; 當(dāng)所述第i個(gè)在線跟蹤單元中存儲的數(shù)據(jù)所形成的緩沖隊(duì)列長隊(duì)=0時(shí),則所述總線仲裁單元將所述第i個(gè)在線跟蹤單元所發(fā)送的請求設(shè)置為空態(tài)請求; 步驟2、所述總線仲裁單元對所述第i個(gè)在線跟蹤單元的緩存FIFO寫使能進(jìn)行檢測,若緩存FIFO寫使能為高電平,則判定所述第i個(gè)在線跟蹤單元為活動(dòng)態(tài);若緩存FIFO寫使能為低電平,則判定所述第i個(gè)在線跟蹤單元為非活動(dòng)態(tài); 步驟3、所述總線仲裁單元根據(jù)第i個(gè)在線跟蹤單元的緩存FIFO容量設(shè)置相應(yīng)的時(shí)間片長度,記為故,&,...,S1,…,SnKS1表示第i個(gè)在線跟蹤單元的時(shí)間片長度; 步驟4、所述總線仲裁單元設(shè)置η個(gè)在線跟蹤單元的響應(yīng)優(yōu)先級; 步驟5、所述總線仲裁單元中設(shè)置一緊急態(tài)寄存器U,所述第i個(gè)在線跟蹤單元對應(yīng)于所述緊急態(tài)寄存器U中的第i位; 當(dāng)?shù)趇個(gè)在線跟蹤單元處于緊急態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為“I” ; 當(dāng)?shù)趇個(gè)在線跟蹤單元處于增長態(tài)或空態(tài)時(shí),則將緊急態(tài)寄存器U中的第i位設(shè)置為“O” ; 步驟6、所述總線仲裁單元設(shè)置一活動(dòng)態(tài)寄存器V,所述第i個(gè)在線跟蹤單元對應(yīng)于所述活動(dòng)寄存器V中的第i位; 當(dāng)?shù)趇個(gè)在線跟蹤單元處于活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“I” ; 當(dāng)?shù)趇個(gè)在線跟蹤單元處于非活動(dòng)態(tài)時(shí),則將活動(dòng)態(tài)寄存器V中的第i位設(shè)置為“O” ; 步驟7、所述總線仲裁單元設(shè)置一請求寄存器R,所述第i個(gè)在線跟蹤單元對應(yīng)于所述請求寄存器R中的第i位; 當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為非空時(shí),則將所述請求寄存器R中的第i位設(shè)置為丄; 當(dāng)?shù)趇個(gè)在線跟蹤單元的緩存FIFO為空時(shí),則將所述請求寄存器R中的第i位設(shè)置為“O” ; 步驟8、所述總線仲裁單元對所述緊急態(tài)寄存器U進(jìn)行按位“或”操作,得到操作結(jié)果u; 步驟9、所述總線仲裁單元對所述活動(dòng)寄存器V進(jìn)行按位“或”操作,得到操作結(jié)果V; 步驟10、所述總線仲裁單元對所述請求寄存器R進(jìn)行按位“或”操作,得到操作結(jié)果r; 步驟11、假設(shè)第i個(gè)在線跟蹤單元最先接收到數(shù)據(jù),則將所述第i個(gè)在線跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元;此時(shí),所述操作結(jié)果r為“I”,并啟動(dòng)計(jì)數(shù)器進(jìn)行計(jì)數(shù); 步驟12、當(dāng)計(jì)數(shù)器的值小于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度且請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“I”時(shí),所述總線仲裁單元獲取所述當(dāng)前響應(yīng)跟蹤單元的數(shù)據(jù),并傳輸至跟蹤傳輸接口進(jìn)行輸出,同時(shí)執(zhí)行步驟13; 步驟13、判斷操作結(jié)果r是否為“O”,若為“O”,則停止計(jì)數(shù)器并清零;并返回步驟11;若不為“O”,則同時(shí)執(zhí)行步驟14、步驟16、步驟18和步驟20后,再執(zhí)行步驟22; 步驟14;所述總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元;判斷處于緊急態(tài)且活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟15;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得優(yōu)先級最高且處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元; 步驟15、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第一響應(yīng)跟蹤單元; 步驟16、所述總線仲裁單元獲取其余在線跟蹤單元中處于緊急態(tài)的在線跟蹤單元;判斷處于緊急態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟17;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元; 步驟17、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于緊急態(tài)的在線跟蹤單元,作為第二響應(yīng)跟蹤單元; 步驟18、所述總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元;判斷處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟19;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元; 步驟19、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)和活動(dòng)態(tài)的在線跟蹤單元,作為第三響應(yīng)跟蹤單元; 步驟20、所述總線仲裁單元獲取其余在線跟蹤單元中處于增長態(tài)的在線跟蹤單元;判斷處于增長態(tài)的在線跟蹤單元的響應(yīng)優(yōu)先級是否相同,若相同,則執(zhí)行步驟21;否則按照響應(yīng)優(yōu)先級從高到低的順序進(jìn)行查詢,獲得到優(yōu)先級最高且處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元; 步驟21、所述總線仲裁單元從所述緊急態(tài)寄存器U中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位開始,按照順時(shí)針輪轉(zhuǎn)查詢相應(yīng)的在線跟蹤單元;獲得處于增長態(tài)的在線跟蹤單元,作為第四響應(yīng)跟蹤單元; 步驟22、當(dāng)操作結(jié)果U= I且V= I時(shí);以所述第一響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元; 當(dāng)操作結(jié)果U= I且v = 0時(shí);以所述第二響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元; 當(dāng)操作結(jié)果u = 0且V= I時(shí);以所述第三響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元; 當(dāng)操作結(jié)果u = 0且v = 0時(shí);以所述第四響應(yīng)跟蹤單元作為下個(gè)響應(yīng)跟蹤單元;步驟23、當(dāng)計(jì)數(shù)器的值等于當(dāng)前響應(yīng)跟蹤單元的時(shí)間片長度或請求寄存器R中當(dāng)前響應(yīng)跟蹤單元所對應(yīng)的位為“O”時(shí),計(jì)數(shù)器清零;并將所述下個(gè)響應(yīng)跟蹤單元作為當(dāng)前響應(yīng)跟蹤單元后,返回步驟12執(zhí)行。
【文檔編號】G06F13/366GK105824769SQ201610147991
【公開日】2016年8月3日
【申請日】2016年3月14日
【發(fā)明人】宋宇鯤, 焦瑞, 張多利, 王存
【申請人】合肥工業(yè)大學(xué)