本發(fā)明屬于集成電路片上網絡的通信
技術領域:
,尤其涉及一種面向功耗溫度的動靜態(tài)相結合的NoC實時監(jiān)測配置電路。
背景技術:
:片上網絡(Network-on-Chip,NoC)替代傳統(tǒng)總線結構的改變雖然一定程度上克服了傳統(tǒng)結構帶來的各種問題,但是隨著IP(IntellectualProperty)核的增多和通訊量的提升,隨著芯片體積的減小和整體性能的提高,NoC整體性能成為設計的焦點,當通訊數據在NoC中傳輸時,導致NoC局部通訊節(jié)點通訊量過高,勢必導致芯片局部溫度升高,高溫使得芯片的性能受到影響甚至可能損壞器件,這在很大程度上削弱了NoC的諸多優(yōu)勢,直接影響到NoC系統(tǒng)的性能,因此,降低NoC局部通訊節(jié)點的通訊量很有必要?,F(xiàn)有技術當中,雖已實現(xiàn)了對NoC的可監(jiān)測和可配置,如2010年的“可配置可監(jiān)測NoC原型平臺的研究”,但文中“可監(jiān)測”是對吞吐率和延時的監(jiān)測,“可配置”是對NoC自身的參數(如緩存FIFO的深度、路由算法、輸出仲裁算法)的配置,此方法的不足之處在于,1、只能監(jiān)測NoC總體的通訊量,無法監(jiān)測NoC各個節(jié)點的通訊量,只能得知NoC總體的性能和通訊狀況,無法得知NoC各個節(jié)點的具體性能和通訊狀況;2、在實現(xiàn)可配置的同時可能造成通訊任務較集中從而使單個節(jié)點的通訊量過大,從而產生局部熱點,影響芯片的性能。技術實現(xiàn)要素:本發(fā)明為克服現(xiàn)有NoC大量數據傳輸的芯片局部熱點問題,提出了一種面向功耗溫度的NoC實時監(jiān)測配置電路,以期能動態(tài)地監(jiān)測并收集各個通訊節(jié)點的通訊量,并動態(tài)地配置NoC各個通訊節(jié)點的通訊任務,從而保證NoC各個通信節(jié)點的通訊量均衡,避免因NoC局部通訊量過大而產生的局部“熱點”,進而提高NoC的整體性能。本發(fā)明為達到上述目的所采用的技術方案是:本發(fā)明一種面向功耗溫度的NoC實時監(jiān)測配置電路,所述NoC是由通訊節(jié)點及計算節(jié)點組成的片上網絡,假設所述NoC共有N=X×Y個通訊節(jié)點,X表示所述NoC的行數,Y表示所述NoC的列數,每個通訊節(jié)點有北、東、南、西、本地五個方向的輸入輸出通道;1≤k≤N,其特點是:所述NoC實時監(jiān)測配置電路設置在網口與所述NoC之間,并包括:上行模塊、下行模塊、定時模塊、配置模塊、收集模塊、Y個下行打包模塊、X×Y個監(jiān)測模塊、DDR用戶接口模塊;所述X×Y個監(jiān)測模塊分別與X×Y個通訊節(jié)點的輸出通道相連接;所述下行模塊接收上位機通過網口發(fā)送的數據包,并存儲到自身的FIFO中,再從自身FIFO中讀取數據包進行解析和判斷,得到所述數據包中攜帶的命令類型,若所述命令類型為定時命令,則解析出所述數據包中的定時標志后,發(fā)送給所述定時模塊;若所述命令類型為配置命令,則截取所述數據包中的低位配置數據,并發(fā)送給所述配置模塊,若所述命令類型為讀取DDR命令,則產生一個讀取DDR標志,并發(fā)送給所述上行模塊和所述DDR用戶接口模塊;所述配置模塊接收所述低位配置數據,并判斷所述低位配置數據攜帶的源節(jié)點地址的大小,若源節(jié)點地址為n,1≤n≤Y,則將所述低位配置數據發(fā)送給相應的第n個下行打包模塊;所述第n個下行打包模塊接收所述配置模塊的低位配置數據,并存入自身的FIFO中,再從自身FIFO中讀取所述低位配置數據并打包成符合網絡傳輸協(xié)議的數據包后,發(fā)送給NoC進行處理,由計算節(jié)點處理完成之后產生配置完成標志并發(fā)送給配置模塊;所述配置模塊接收所述NoC中計算節(jié)點發(fā)送的配置完成標志后,產生一個開始信號,并發(fā)送給所述定時模塊和NoC中每個計算節(jié)點;所述定時模塊根據所接收的定時標志選擇定時時間,并在接收到所述開始信號后開始計時,直到計時時間等于所選擇的定時時間時,產生一個收集信號并發(fā)送給所述X×Y個監(jiān)測模塊;所述X×Y個監(jiān)測模塊接收所述定時模塊的收集信號后,將所述定時時間內統(tǒng)計的數據通訊量發(fā)送給所述收集模塊;所述收集模塊接收所述監(jiān)測模塊的數據通訊量并存儲在自身的FIFO中,直到所有的數據通訊量都存儲完畢后,產生一個準備好信號并發(fā)送給所述上行模塊;所述上行模塊接收所述收集模塊的準備好信號后,產生一個讀取所述收集模塊的FIFO的收集讀信號并發(fā)送給所述收集模塊;所述收集模塊接收到所述上行模塊的讀信號后,將定時時間內統(tǒng)計的數據通訊量分別發(fā)送給所述上行模塊和所述DDR用戶接口模塊;所述上行模塊接收所述收集模塊發(fā)送的數據通訊量,并存儲到自身的FIFO中,并通過網口將數據通訊量發(fā)送給上位機,從而實現(xiàn)NoC的實時配置和數據通訊量的實時監(jiān)測;所述DDR用戶接口模塊接收所述收集模塊發(fā)送的數據通訊量,并存儲在自身的DDR寫FIFO中,當DDR初始化完成后把DDR寫FIFO里的數據通訊量寫進DDR控制器中;若上位機未接收到數據通訊量,則所述上行模塊接收所述下行模塊的讀取DDR標志后產生一個DDR讀FIFO信號,發(fā)送給所述DDR用戶接口模塊;所述DDR用戶接口模塊接收到所述下行模塊發(fā)送的讀取DDR標志和所述上行模塊發(fā)送DDR讀FIFO信號時,把DDR控制器中存儲的數據通訊量讀出,并通過所述DDR用戶接口模塊的DDR讀FIFO,把數據通訊量發(fā)送給所述上行模塊;所述上行模塊通過所述網口將所述數據通訊量發(fā)送給所述上位機,從而檢測是所述收集模塊未成功收集數據還是上位機未成功接收數據。本發(fā)明所述的NoC實時監(jiān)測配置電路的特點也在于,所述定時模塊包括:臨時寄存器、時間選擇器和時間計數器;所述臨時寄存器根據上位機通過網口發(fā)送的定時命令,寄存數據包中的定時標志;所述時間選擇器根據所述臨時寄存器中的數據選擇定時時間;所述時間計數器根據所述配置模塊發(fā)送的開始信號進行計數,直到計數器的值等于所述時間寄存器選擇的定時時間后,產生所述收集信號。所述配置模塊包括:Y個配置數據寄存器、Y個寫使能寄存器和X×Y個配置表寄存器;所述任意一個配置數據寄存器根據所述配置模塊對低位配置數據中低位源節(jié)點地址的判斷,對將要輸出給相應下行打包模塊的配置數據進行寄存;所述任意一個寫使能寄存器根據所述配置模塊對低位配置數據中低位源節(jié)點地址的判斷,對相應下行打包模塊的FIFO寫使能信號進行寄存;所述任意一個配置表寄存器在復位時將配置表寄存器的值設為高電平,并根據所述配置模塊對低位配置數據中低位源節(jié)點地址的判斷,設置自身配置表寄存器為低電平,直到所述配置模塊接收到所述NoC內部每個計算節(jié)點的配置完成標志后產生開始信號后,將自身配置表寄存器值設為高電平,從而完成對NoC的重新配置。所述收集模塊包括:5(X×Y)個臨時寄存器、一號計數器和二號計數器;所述任意一個臨時寄存器用于寄存東、南、西、北和本地的輸出通道中相應通訊節(jié)點的數據通訊量;所述一號計數器控制所述收集模塊將接收到的數據通訊量寫進相應的臨時寄存器中,所述二號計數器控制臨時寄存器中數據通訊量寫進所述收集模塊的FIFO中,等待全部數據通訊量寫進所述收集模塊的FIFO,則將準備好信號拉高。所述任意一個監(jiān)測模塊包括:5個A位的數據臨時寄存器Q、5個B位的數據通訊量計數器、5個B位的數據通訊量計數寄存器和C位的通訊量輸出寄存器;所述5個A位的數據臨時寄存器Q寄存上一周期的NoC中東、南、西、北和本地方向發(fā)送給所述監(jiān)測模塊的數據,再將5個A位的臨時寄存器Q中存儲的上一周期的數據取出與當前周期輸入的數據相比較,若不相等,則產生相應東、南、西、北、本地方向的數據變化信號;所述5個B位的數據通訊量計數器根據東、南、西、北、本地方向的數據變化信號對相應方向的計數器進行計數,計數完成之后等待接收所述定時模塊的收集信號,當接收到所述定時模塊的收集信號時,將所述5個B位的數據通訊量計數器的值賦給5個B位的數據通訊量計數寄存器,并將5個B位的數據通訊量計數器清零;所述C位的通訊量輸出寄存器用于將節(jié)點坐標、方向和數據通訊量一起打包輸出給所述收集模塊,從而完成所述NoC的數據通訊量的監(jiān)測。與現(xiàn)有技術相比,本發(fā)明的有益技術效果體現(xiàn)在:1、本發(fā)明提出的NoC實時監(jiān)測配置電路,通過動態(tài)地監(jiān)測并收集各個通訊節(jié)點的通訊量,并重新配置NoC各個通訊節(jié)點的通訊任務,實現(xiàn)了NoC通訊任務的實時配置和通訊量的實時監(jiān)測,從而保證了NoC各個通信節(jié)點的通訊量均衡,避免了因NoC局部通訊量過大而產生的局部“熱點”,進而提高了NoC的整體性能。2、本發(fā)明提出監(jiān)測模塊與收集模塊,通過對NoC各個通訊節(jié)點輸出通道的通訊量的監(jiān)測,實現(xiàn)了對NoC各個通訊節(jié)點通訊量的實時監(jiān)測與收集,進而了解了NoC各個節(jié)點的通訊狀況。3、本發(fā)明提出的配置模塊,通過接收上位機的配置命令,并根據配置數據將通訊任務配置到NoC中,實現(xiàn)了對NoC各個通訊節(jié)點通訊任務地實時配置,進而降低了局部“熱點”。4、本發(fā)明提出的定時模塊,通過接收上位機的定時命令,監(jiān)測和收集都是對于“定時時間”內的通訊量,保證了監(jiān)測與收集的準確性。5、本發(fā)明提出的DDR用戶接口模塊,通過將NoC要上傳至上位機的通訊量傳輸給上位機的同時,也復制一份存儲到DDR中,若上位機沒有接收到數據,則上位機發(fā)送從DDR中讀取數據的命令,增加了數據監(jiān)測和數據傳輸的可靠性。附圖說明圖1本發(fā)明NoC實時監(jiān)測配置電路的應用示意圖;圖2本發(fā)明定時模塊電路圖;圖3本發(fā)明配置模塊電路圖;圖4本發(fā)明收集模塊電路圖。具體實施方式本實施例中,NoC是由通訊節(jié)點及計算節(jié)點組成的片上網絡,假設所述NoC共有N=X×Y個通訊節(jié)點,X表示所述NoC的行數,Y表示所述NoC的列數,通訊節(jié)點的序號為1,2,…,k,…,N,其中,k表示第k個通訊節(jié)點的序號,具體實施中,NoC是4×4二維網絡,由16個通訊節(jié)點及16個計算節(jié)點組成,即NoC有4行和4列,且每個通訊節(jié)點有北、東、南、西、本地五個方向的輸入輸出通道;上位機發(fā)送的數據包格式如表1所示:表1上位機發(fā)送的數據包格式data[47:44]data[43:40]data[39:36]data[35]子流數應用類型標示命令類型數據包結束標志data[34:32]data[31:16]data[15:8]data[7:0]多目標節(jié)點子流數據包發(fā)送速率目的節(jié)點源節(jié)點如圖1所示,NoC實時監(jiān)測配置電路設置在網口與NoC之間,并包括:上行模塊、下行模塊、定時模塊、配置模塊、收集模塊、4個下行打包模塊、16個監(jiān)測模塊、DDR用戶接口模塊;16個監(jiān)測模塊分別與16個通訊節(jié)點的輸出通道相連接;下行模塊接收上位機通過網口發(fā)送的數據包,并存儲到自身的FIFO中,再從自身FIFO中讀取數據包進行解析和判斷,得到數據包中攜帶的命令類型data[39:36],若data[39:36]等于4'b0001,則為定時命令,則解析出數據包中的定時標志后,發(fā)送給定時模塊;若data[39:36]等于4'b0010,則為配置命令,則截取數據包中的低位配置數據,并發(fā)送給配置模塊,若上位機未收到FPGA發(fā)上來的數據,上位機才會發(fā)送讀取DDR命令,若data[39:36]等于4'b0011,則產生一個讀取DDR標志,并發(fā)送給上行模塊和DDR用戶接口模塊;配置模塊接收低位配置數據,并判斷低位配置數據攜帶的源節(jié)點列坐標地址的大小,若源列坐標節(jié)點地址為1、2、3或4,則將低位配置數據發(fā)送給相應的第1個、第2個、第3個、第4個下行打包模塊;4個下行打包模塊接收配置模塊的低位配置數據,并存入自身的FIFO中,再從自身FIFO中讀取低位配置數據并打包成符合網絡傳輸協(xié)議的數據包后,發(fā)送給NoC進行處理,由計算節(jié)點處理完成之后產生配置完成標志并發(fā)送給配置模塊;配置模塊接收NoC中計算節(jié)點發(fā)送的配置完成標志后,產生一個開始信號,并發(fā)送給定時模塊和NoC中每個計算節(jié)點;定時模塊根據所接收的定時標志選擇定時時間,并在接收到開始信號后計數器開始計時,直到計時時間等于所選擇的定時時間時,產生一個收集信號并發(fā)送給16個監(jiān)測模塊;16個監(jiān)測模塊接收定時模塊的收集信號后,將節(jié)點坐標,相應北、東、南、西或本地方向和定時時間內統(tǒng)計的數據通訊量發(fā)送給收集模塊;收集模塊接收監(jiān)測模塊的數據通訊量并存儲在自身的FIFO中,直到所有的數據通訊量都存儲完畢后,產生一個準備好信號并發(fā)送給上行模塊;上行模塊接收收集模塊的準備好信號后,產生一個讀取收集模塊的FIFO的收集讀信號并發(fā)送給收集模塊;收集模塊接收到上行模塊的讀信號后,將定時時間內統(tǒng)計的數據通訊量分別發(fā)送給上行模塊和DDR用戶接口模塊,以便上位機未接收到數據從DDR控制器中讀取數據通訊量;上行模塊接收收集模塊發(fā)送的數據通訊量,并存儲到自身的FIFO中,并通過網口將數據通訊量發(fā)送給上位機,從而實現(xiàn)NoC的實時配置和數據通訊量的實時監(jiān)測。DDR用戶接口模塊接收收集模塊發(fā)送的數據通訊量,并存儲在自身的DDR寫FIFO中,當DDR初始化完成后把DDR寫FIFO里的數據通訊量寫進DDR控制器中;若上位機未接收到通訊量,則上行模塊接收下行模塊的讀取DDR標志后產生一個DDR讀FIFO信號,發(fā)送給DDR用戶接口模塊;DDR用戶接口模塊接收到下行模塊發(fā)送的讀取DDR標志和上行模塊發(fā)送DDR讀FIFO信號時,把DDR控制器中存儲的數據通訊量讀出,并通過DDR用戶接口模塊的DDR讀FIFO,把數據通訊量發(fā)送給上行模塊;上行模塊通過網口將數據通訊量發(fā)送給上位機,從而檢測是收集模塊未成功收集數據還是上位機未成功接收數據。如圖2所示,定時模塊包括:臨時寄存器、時間選擇器和時間計數器;臨時寄存器根據上位機通過網口發(fā)送的定時命令,寄存數據包中的定時標志;時間選擇器根據臨時寄存器中的數據選擇定時時間,本實施例中定時時間有0.1s,0.5s,1s,5s,10s,20s,30s,40s,50s,60s,若定時標志等于4'b0001,則定時時間等于0.1s,若定時標志等于4'b0010,則定時時間等于0.5s,若定時標志等于4'b0011,則定時時間等于1s,若定時標志等于4'b0100,則定時時間等于5s,若定時標志等于4'b0101,則定時時間等于10s,若定時標志等于4'b0110,則定時時間等于20s,若定時標志等于4'b0111,則定時時間等于30s,若定時標志等于4'b1000,則定時時間等于40s,若定時標志等于4'b1001,則定時時間等于50s,若定時標志等于4'b1010,則定時時間等于60s;時間計數器根據配置模塊發(fā)送的開始信號進行計數,賽靈思FPGA開發(fā)板Virtex6_XC6VLX760的輸入時鐘頻率為50MHz,一個時鐘周期等于20ns,計數器計數到5000000表示定時時間為0.1s,計數器計數到25000000表示定時時間為0.5s,計數器計數到50000000表示定時時間為1s,計數器計數到5000000表示定時時間為5s,計數器計數到5000000表示定時時間為10s,計數器計數到5000000表示定時時間為20s,計數器計數到5000000表示定時時間為30s,計數器計數到5000000表示定時時間為40s,計數器計數到5000000表示定時時間為50s,計數器計數到5000000表示定時時間為60s,直到計數器的值等于時間寄存器選擇的定時時間后,產生收集信號。如圖3所示,配置模塊包括:4個配置數據寄存器、4個寫使能寄存器和16個配置表寄存器;任意一個配置數據寄存器根據配置模塊對低位配置數據中低位源節(jié)點地址的判斷,對將要輸出給相應下行打包模塊的配置數據進行寄存,若列坐標等于1,則將配置數據寄存器中的低位配置數據輸出給下行打包模塊1,若列坐標等于2,則將配置數據寄存器中的低位配置數據輸出給下行打包模塊2,若列坐標等于3,則將配置數據寄存器中的低位配置數據輸出給下行打包模塊3,若列坐標等于4,則將配置數據寄存器中的低位配置數據輸出給下行打包模塊4;任意一個寫使能寄存器根據配置模塊對低位配置數據中低位源節(jié)點地址的判斷,對相應下行打包模塊的FIFO寫使能信號進行寄存,若列坐標等于1,則下行打包模塊1中FIFO的寫使能置1,若列坐標等于2,則下行打包模塊2中FIFO的寫使能置1,若列坐標等于3,則下行打包模塊3中FIFO的寫使能置1,若列坐標等于4,則下行打包模塊4中FIFO的寫使能置1;任意一個配置表寄存器在復位時將配置表寄存器的值設為高電平,并根據配置模塊對低位配置數據中低位源節(jié)點地址的判斷,設置自身配置表寄存器為低電平,例如源節(jié)點坐標等于(1,1),就將(1,1)節(jié)點的配置表置0,源節(jié)點坐標等于(1,2),就將(1,2)節(jié)點的配置表置0,以此類推;直到配置模塊接收到NoC內部每個計算節(jié)點的配置完成標志后,將每個節(jié)點的配置完成標志與配置表相或,再將所有節(jié)點的相或結果相與產生開始信號,再將自身配置表寄存器值設為高電平,從而完成對NoC的重新配置。如圖4所示,收集模塊包括:80個臨時寄存器、一號計數器和二號計數器;任意一個臨時寄存器用于寄存東、南、西、北和本地的輸出通道中相應通訊節(jié)點的數據通訊量;一號計數器控制收集模塊將接收到的數據通訊量寫進相應的臨時寄存器中,若一號計數器的值為1,則將數據通訊量寫進北方向的臨時寄存器;若一號計數器的值為2,則將數據通訊量寫進東方向的臨時寄存器,若一號計數器的值為3,則將數據通訊量寫進南方向的臨時寄存器;若一號計數器的值為4,則將數據通訊量寫進西方向的臨時寄存器;若一號計數器的值為5,則將數據通訊量寫進本地方向的臨時寄存器;二號計數器控制臨時寄存器中數據通訊量寫進收集模塊的FIFO中,并隨著二號計數器的值的增加,依次選擇節(jié)點北、東、南、西、本地方向的數據通訊量寫入收集模塊的FIFO,例如,二號計數器的值等于2,將(1,1)節(jié)點北方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于3,將(1,1)節(jié)點東方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于4,將(1,1)節(jié)點南方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于5,將(1,1)節(jié)點西方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于6,將(1,1)節(jié)點本地方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于7,將(1,2)節(jié)點北方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于8,將(1,2)節(jié)點東方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于9,將(1,2)節(jié)點南方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于10,將(1,2)節(jié)點西方向的通訊量作為收集模塊FIFO的輸入數據;二號計數器的值等于11,將(1,2)節(jié)點本地方向的通訊量作為收集模塊FIFO的輸入數據;等待全部數據通訊量寫進收集模塊的FIFO,則將準備好信號拉高。具體實施中,任意一個監(jiān)測模塊包括:5個44位的數據臨時寄存器Q、5個44位的數據通訊量計數器、5個44位的數據通訊量計數寄存器和64位的通訊量輸出寄存器;5個44位的數據臨時寄存器Q寄存上一周期的NoC中東、南、西、北和本地方向發(fā)送給監(jiān)測模塊的數據,再將5個44位的臨時寄存器Q中存儲的上一周期的數據取出與當前周期輸入的數據相比較,若不相等,則產生相應東、南、西、北、本地方向的數據變化信號;5個44位的數據通訊量計數器根據東、南、西、北、本地方向的數據變化信號對相應方向的計數器進行計數,計數完成之后等待接收定時模塊的收集信號,當接收到定時模塊的收集信號時,將5個44位的數據通訊量計數器的值賦給5個44位的數據通訊量計數寄存器,并將5個44位的數據通訊量計數器清零;64位的通訊量輸出寄存器用于將本地坐標、方向和數據通訊量一起打包輸出給收集模塊,從而完成NoC的數據通訊量的監(jiān)測。本實施例中,在賽靈思FPGA開發(fā)板Virtex6_XC6VLX760上實現(xiàn),4×4的NoC網絡。當前第1頁1 2 3