本发明属于集成电路片上网络的通信
技术领域:
,尤其涉及一种面向功耗温度的动静态相结合的NoC实时监测配置电路。
背景技术:
:片上网络(Network-on-Chip,NoC)替代传统总线结构的改变虽然一定程度上克服了传统结构带来的各种问题,但是随着IP(IntellectualProperty)核的增多和通讯量的提升,随着芯片体积的减小和整体性能的提高,NoC整体性能成为设计的焦点,当通讯数据在NoC中传输时,导致NoC局部通讯节点通讯量过高,势必导致芯片局部温度升高,高温使得芯片的性能受到影响甚至可能损坏器件,这在很大程度上削弱了NoC的诸多优势,直接影响到NoC系统的性能,因此,降低NoC局部通讯节点的通讯量很有必要。现有技术当中,虽已实现了对NoC的可监测和可配置,如2010年的“可配置可监测NoC原型平台的研究”,但文中“可监测”是对吞吐率和延时的监测,“可配置”是对NoC自身的参数(如缓存FIFO的深度、路由算法、输出仲裁算法)的配置,此方法的不足之处在于,1、只能监测NoC总体的通讯量,无法监测NoC各个节点的通讯量,只能得知NoC总体的性能和通讯状况,无法得知NoC各个节点的具体性能和通讯状况;2、在实现可配置的同时可能造成通讯任务较集中从而使单个节点的通讯量过大,从而产生局部热点,影响芯片的性能。技术实现要素:本发明为克服现有NoC大量数据传输的芯片局部热点问题,提出了一种面向功耗温度的NoC实时监测配置电路,以期能动态地监测并收集各个通讯节点的通讯量,并动态地配置NoC各个通讯节点的通讯任务,从而保证NoC各个通信节点的通讯量均衡,避免因NoC局部通讯量过大而产生的局部“热点”,进而提高NoC的整体性能。本发明为达到上述目的所采用的技术方案是:本发明一种面向功耗温度的NoC实时监测配置电路,所述NoC是由通讯节点及计算节点组成的片上网络,假设所述NoC共有N=X×Y个通讯节点,X表示所述NoC的行数,Y表示所述NoC的列数,每个通讯节点有北、东、南、西、本地五个方向的输入输出通道;1≤k≤N,其特点是:所述NoC实时监测配置电路设置在网口与所述NoC之间,并包括:上行模块、下行模块、定时模块、配置模块、收集模块、Y个下行打包模块、X×Y个监测模块、DDR用户接口模块;所述X×Y个监测模块分别与X×Y个通讯节点的输出通道相连接;所述下行模块接收上位机通过网口发送的数据包,并存储到自身的FIFO中,再从自身FIFO中读取数据包进行解析和判断,得到所述数据包中携带的命令类型,若所述命令类型为定时命令,则解析出所述数据包中的定时标志后,发送给所述定时模块;若所述命令类型为配置命令,则截取所述数据包中的低位配置数据,并发送给所述配置模块,若所述命令类型为读取DDR命令,则产生一个读取DDR标志,并发送给所述上行模块和所述DDR用户接口模块;所述配置模块接收所述低位配置数据,并判断所述低位配置数据携带的源节点地址的大小,若源节点地址为n,1≤n≤Y,则将所述低位配置数据发送给相应的第n个下行打包模块;所述第n个下行打包模块接收所述配置模块的低位配置数据,并存入自身的FIFO中,再从自身FIFO中读取所述低位配置数据并打包成符合网络传输协议的数据包后,发送给NoC进行处理,由计算节点处理完成之后产生配置完成标志并发送给配置模块;所述配置模块接收所述NoC中计算节点发送的配置完成标志后,产生一个开始信号,并发送给所述定时模块和NoC中每个计算节点;所述定时模块根据所接收的定时标志选择定时时间,并在接收到所述开始信号后开始计时,直到计时时间等于所选择的定时时间时,产生一个收集信号并发送给所述X×Y个监测模块;所述X×Y个监测模块接收所述定时模块的收集信号后,将所述定时时间内统计的数据通讯量发送给所述收集模块;所述收集模块接收所述监测模块的数据通讯量并存储在自身的FIFO中,直到所有的数据通讯量都存储完毕后,产生一个准备好信号并发送给所述上行模块;所述上行模块接收所述收集模块的准备好信号后,产生一个读取所述收集模块的FIFO的收集读信号并发送给所述收集模块;所述收集模块接收到所述上行模块的读信号后,将定时时间内统计的数据通讯量分别发送给所述上行模块和所述DDR用户接口模块;所述上行模块接收所述收集模块发送的数据通讯量,并存储到自身的FIFO中,并通过网口将数据通讯量发送给上位机,从而实现NoC的实时配置和数据通讯量的实时监测;所述DDR用户接口模块接收所述收集模块发送的数据通讯量,并存储在自身的DDR写FIFO中,当DDR初始化完成后把DDR写FIFO里的数据通讯量写进DDR控制器中;若上位机未接收到数据通讯量,则所述上行模块接收所述下行模块的读取DDR标志后产生一个DDR读FIFO信号,发送给所述DDR用户接口模块;所述DDR用户接口模块接收到所述下行模块发送的读取DDR标志和所述上行模块发送DDR读FIFO信号时,把DDR控制器中存储的数据通讯量读出,并通过所述DDR用户接口模块的DDR读FIFO,把数据通讯量发送给所述上行模块;所述上行模块通过所述网口将所述数据通讯量发送给所述上位机,从而检测是所述收集模块未成功收集数据还是上位机未成功接收数据。本发明所述的NoC实时监测配置电路的特点也在于,所述定时模块包括:临时寄存器、时间选择器和时间计数器;所述临时寄存器根据上位机通过网口发送的定时命令,寄存数据包中的定时标志;所述时间选择器根据所述临时寄存器中的数据选择定时时间;所述时间计数器根据所述配置模块发送的开始信号进行计数,直到计数器的值等于所述时间寄存器选择的定时时间后,产生所述收集信号。所述配置模块包括:Y个配置数据寄存器、Y个写使能寄存器和X×Y个配置表寄存器;所述任意一个配置数据寄存器根据所述配置模块对低位配置数据中低位源节点地址的判断,对将要输出给相应下行打包模块的配置数据进行寄存;所述任意一个写使能寄存器根据所述配置模块对低位配置数据中低位源节点地址的判断,对相应下行打包模块的FIFO写使能信号进行寄存;所述任意一个配置表寄存器在复位时将配置表寄存器的值设为高电平,并根据所述配置模块对低位配置数据中低位源节点地址的判断,设置自身配置表寄存器为低电平,直到所述配置模块接收到所述NoC内部每个计算节点的配置完成标志后产生开始信号后,将自身配置表寄存器值设为高电平,从而完成对NoC的重新配置。所述收集模块包括:5(X×Y)个临时寄存器、一号计数器和二号计数器;所述任意一个临时寄存器用于寄存东、南、西、北和本地的输出通道中相应通讯节点的数据通讯量;所述一号计数器控制所述收集模块将接收到的数据通讯量写进相应的临时寄存器中,所述二号计数器控制临时寄存器中数据通讯量写进所述收集模块的FIFO中,等待全部数据通讯量写进所述收集模块的FIFO,则将准备好信号拉高。所述任意一个监测模块包括:5个A位的数据临时寄存器Q、5个B位的数据通讯量计数器、5个B位的数据通讯量计数寄存器和C位的通讯量输出寄存器;所述5个A位的数据临时寄存器Q寄存上一周期的NoC中东、南、西、北和本地方向发送给所述监测模块的数据,再将5个A位的临时寄存器Q中存储的上一周期的数据取出与当前周期输入的数据相比较,若不相等,则产生相应东、南、西、北、本地方向的数据变化信号;所述5个B位的数据通讯量计数器根据东、南、西、北、本地方向的数据变化信号对相应方向的计数器进行计数,计数完成之后等待接收所述定时模块的收集信号,当接收到所述定时模块的收集信号时,将所述5个B位的数据通讯量计数器的值赋给5个B位的数据通讯量计数寄存器,并将5个B位的数据通讯量计数器清零;所述C位的通讯量输出寄存器用于将节点坐标、方向和数据通讯量一起打包输出给所述收集模块,从而完成所述NoC的数据通讯量的监测。与现有技术相比,本发明的有益技术效果体现在:1、本发明提出的NoC实时监测配置电路,通过动态地监测并收集各个通讯节点的通讯量,并重新配置NoC各个通讯节点的通讯任务,实现了NoC通讯任务的实时配置和通讯量的实时监测,从而保证了NoC各个通信节点的通讯量均衡,避免了因NoC局部通讯量过大而产生的局部“热点”,进而提高了NoC的整体性能。2、本发明提出监测模块与收集模块,通过对NoC各个通讯节点输出通道的通讯量的监测,实现了对NoC各个通讯节点通讯量的实时监测与收集,进而了解了NoC各个节点的通讯状况。3、本发明提出的配置模块,通过接收上位机的配置命令,并根据配置数据将通讯任务配置到NoC中,实现了对NoC各个通讯节点通讯任务地实时配置,进而降低了局部“热点”。4、本发明提出的定时模块,通过接收上位机的定时命令,监测和收集都是对于“定时时间”内的通讯量,保证了监测与收集的准确性。5、本发明提出的DDR用户接口模块,通过将NoC要上传至上位机的通讯量传输给上位机的同时,也复制一份存储到DDR中,若上位机没有接收到数据,则上位机发送从DDR中读取数据的命令,增加了数据监测和数据传输的可靠性。附图说明图1本发明NoC实时监测配置电路的应用示意图;图2本发明定时模块电路图;图3本发明配置模块电路图;图4本发明收集模块电路图。具体实施方式本实施例中,NoC是由通讯节点及计算节点组成的片上网络,假设所述NoC共有N=X×Y个通讯节点,X表示所述NoC的行数,Y表示所述NoC的列数,通讯节点的序号为1,2,…,k,…,N,其中,k表示第k个通讯节点的序号,具体实施中,NoC是4×4二维网络,由16个通讯节点及16个计算节点组成,即NoC有4行和4列,且每个通讯节点有北、东、南、西、本地五个方向的输入输出通道;上位机发送的数据包格式如表1所示:表1上位机发送的数据包格式data[47:44]data[43:40]data[39:36]data[35]子流数应用类型标示命令类型数据包结束标志data[34:32]data[31:16]data[15:8]data[7:0]多目标节点子流数据包发送速率目的节点源节点如图1所示,NoC实时监测配置电路设置在网口与NoC之间,并包括:上行模块、下行模块、定时模块、配置模块、收集模块、4个下行打包模块、16个监测模块、DDR用户接口模块;16个监测模块分别与16个通讯节点的输出通道相连接;下行模块接收上位机通过网口发送的数据包,并存储到自身的FIFO中,再从自身FIFO中读取数据包进行解析和判断,得到数据包中携带的命令类型data[39:36],若data[39:36]等于4'b0001,则为定时命令,则解析出数据包中的定时标志后,发送给定时模块;若data[39:36]等于4'b0010,则为配置命令,则截取数据包中的低位配置数据,并发送给配置模块,若上位机未收到FPGA发上来的数据,上位机才会发送读取DDR命令,若data[39:36]等于4'b0011,则产生一个读取DDR标志,并发送给上行模块和DDR用户接口模块;配置模块接收低位配置数据,并判断低位配置数据携带的源节点列坐标地址的大小,若源列坐标节点地址为1、2、3或4,则将低位配置数据发送给相应的第1个、第2个、第3个、第4个下行打包模块;4个下行打包模块接收配置模块的低位配置数据,并存入自身的FIFO中,再从自身FIFO中读取低位配置数据并打包成符合网络传输协议的数据包后,发送给NoC进行处理,由计算节点处理完成之后产生配置完成标志并发送给配置模块;配置模块接收NoC中计算节点发送的配置完成标志后,产生一个开始信号,并发送给定时模块和NoC中每个计算节点;定时模块根据所接收的定时标志选择定时时间,并在接收到开始信号后计数器开始计时,直到计时时间等于所选择的定时时间时,产生一个收集信号并发送给16个监测模块;16个监测模块接收定时模块的收集信号后,将节点坐标,相应北、东、南、西或本地方向和定时时间内统计的数据通讯量发送给收集模块;收集模块接收监测模块的数据通讯量并存储在自身的FIFO中,直到所有的数据通讯量都存储完毕后,产生一个准备好信号并发送给上行模块;上行模块接收收集模块的准备好信号后,产生一个读取收集模块的FIFO的收集读信号并发送给收集模块;收集模块接收到上行模块的读信号后,将定时时间内统计的数据通讯量分别发送给上行模块和DDR用户接口模块,以便上位机未接收到数据从DDR控制器中读取数据通讯量;上行模块接收收集模块发送的数据通讯量,并存储到自身的FIFO中,并通过网口将数据通讯量发送给上位机,从而实现NoC的实时配置和数据通讯量的实时监测。DDR用户接口模块接收收集模块发送的数据通讯量,并存储在自身的DDR写FIFO中,当DDR初始化完成后把DDR写FIFO里的数据通讯量写进DDR控制器中;若上位机未接收到通讯量,则上行模块接收下行模块的读取DDR标志后产生一个DDR读FIFO信号,发送给DDR用户接口模块;DDR用户接口模块接收到下行模块发送的读取DDR标志和上行模块发送DDR读FIFO信号时,把DDR控制器中存储的数据通讯量读出,并通过DDR用户接口模块的DDR读FIFO,把数据通讯量发送给上行模块;上行模块通过网口将数据通讯量发送给上位机,从而检测是收集模块未成功收集数据还是上位机未成功接收数据。如图2所示,定时模块包括:临时寄存器、时间选择器和时间计数器;临时寄存器根据上位机通过网口发送的定时命令,寄存数据包中的定时标志;时间选择器根据临时寄存器中的数据选择定时时间,本实施例中定时时间有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;时间计数器根据配置模块发送的开始信号进行计数,赛灵思FPGA开发板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个配置表寄存器;任意一个配置数据寄存器根据配置模块对低位配置数据中低位源节点地址的判断,对将要输出给相应下行打包模块的配置数据进行寄存,若列坐标等于1,则将配置数据寄存器中的低位配置数据输出给下行打包模块1,若列坐标等于2,则将配置数据寄存器中的低位配置数据输出给下行打包模块2,若列坐标等于3,则将配置数据寄存器中的低位配置数据输出给下行打包模块3,若列坐标等于4,则将配置数据寄存器中的低位配置数据输出给下行打包模块4;任意一个写使能寄存器根据配置模块对低位配置数据中低位源节点地址的判断,对相应下行打包模块的FIFO写使能信号进行寄存,若列坐标等于1,则下行打包模块1中FIFO的写使能置1,若列坐标等于2,则下行打包模块2中FIFO的写使能置1,若列坐标等于3,则下行打包模块3中FIFO的写使能置1,若列坐标等于4,则下行打包模块4中FIFO的写使能置1;任意一个配置表寄存器在复位时将配置表寄存器的值设为高电平,并根据配置模块对低位配置数据中低位源节点地址的判断,设置自身配置表寄存器为低电平,例如源节点坐标等于(1,1),就将(1,1)节点的配置表置0,源节点坐标等于(1,2),就将(1,2)节点的配置表置0,以此类推;直到配置模块接收到NoC内部每个计算节点的配置完成标志后,将每个节点的配置完成标志与配置表相或,再将所有节点的相或结果相与产生开始信号,再将自身配置表寄存器值设为高电平,从而完成对NoC的重新配置。如图4所示,收集模块包括:80个临时寄存器、一号计数器和二号计数器;任意一个临时寄存器用于寄存东、南、西、北和本地的输出通道中相应通讯节点的数据通讯量;一号计数器控制收集模块将接收到的数据通讯量写进相应的临时寄存器中,若一号计数器的值为1,则将数据通讯量写进北方向的临时寄存器;若一号计数器的值为2,则将数据通讯量写进东方向的临时寄存器,若一号计数器的值为3,则将数据通讯量写进南方向的临时寄存器;若一号计数器的值为4,则将数据通讯量写进西方向的临时寄存器;若一号计数器的值为5,则将数据通讯量写进本地方向的临时寄存器;二号计数器控制临时寄存器中数据通讯量写进收集模块的FIFO中,并随着二号计数器的值的增加,依次选择节点北、东、南、西、本地方向的数据通讯量写入收集模块的FIFO,例如,二号计数器的值等于2,将(1,1)节点北方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于3,将(1,1)节点东方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于4,将(1,1)节点南方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于5,将(1,1)节点西方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于6,将(1,1)节点本地方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于7,将(1,2)节点北方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于8,将(1,2)节点东方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于9,将(1,2)节点南方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于10,将(1,2)节点西方向的通讯量作为收集模块FIFO的输入数据;二号计数器的值等于11,将(1,2)节点本地方向的通讯量作为收集模块FIFO的输入数据;等待全部数据通讯量写进收集模块的FIFO,则将准备好信号拉高。具体实施中,任意一个监测模块包括:5个44位的数据临时寄存器Q、5个44位的数据通讯量计数器、5个44位的数据通讯量计数寄存器和64位的通讯量输出寄存器;5个44位的数据临时寄存器Q寄存上一周期的NoC中东、南、西、北和本地方向发送给监测模块的数据,再将5个44位的临时寄存器Q中存储的上一周期的数据取出与当前周期输入的数据相比较,若不相等,则产生相应东、南、西、北、本地方向的数据变化信号;5个44位的数据通讯量计数器根据东、南、西、北、本地方向的数据变化信号对相应方向的计数器进行计数,计数完成之后等待接收定时模块的收集信号,当接收到定时模块的收集信号时,将5个44位的数据通讯量计数器的值赋给5个44位的数据通讯量计数寄存器,并将5个44位的数据通讯量计数器清零;64位的通讯量输出寄存器用于将本地坐标、方向和数据通讯量一起打包输出给收集模块,从而完成NoC的数据通讯量的监测。本实施例中,在赛灵思FPGA开发板Virtex6_XC6VLX760上实现,4×4的NoC网络。当前第1页1 2 3