掌桥专利:专业的专利平台
掌桥专利
首页

一种动态自适应的虚拟通道映射方法、装置及存储介质

文献发布时间:2023-06-19 13:45:04


一种动态自适应的虚拟通道映射方法、装置及存储介质

技术领域

本申请涉及芯片设计领域,特别是涉及一种动态自适应的虚拟通道映射方法、装置及存储介质。

背景技术

PCIe(Peripheral Component Interconnect Express)总线是一种高速串行计算机扩展总线标准,一种为计算和通信平台而定义的高性能、通用的 I/O 互连总线,尤其适合高速实时通讯。目前PCIe 总线应用广泛,包括个人计算机、服务器、存储、片上系统(SOC,System on Chip)等等。

从具体技术上看,PCIe 是一种封装分层协议,主要包括事务层(Transactionlayer), 数据链路层(Data link layer)和物理层(Physical layer)。在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生, 然后再依次经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要依次通过物理层、数据链路和事务层,并最终到达DeviceCore。

PCIe 事务层分发送和接收两部分,负责生成向外的 TLP (Transaction LayerPacket,事务层数据包)给到数据链路层和接收向内的TLP。在这其中,虚拟通道VC(VirtualChannel)和流量控制(Flow control)是关键技术也是技术难点。从物理链路上看,同一个设备发出或接收的所有类型TLP的都是通过同一个物理通路,在不使用VC时,只能按照时间的先后顺序接收或发送TLP,这就会导致传输效率低的问题。例如,一个PCIe设备连续发送两个功能上不相关的指令至两个PCIe设备,在没有虚拟通道时,后一个指令必须等待前一组指令发送至相应的设备,并且等待设备执行完具体操作后,才能执行。这个等待过程可能会很长,此时总线是空闲状态,但是必须等待,因此严重降低了总线效率。当使用虚拟通道时,后一个指令在前一个指令发送至对应设备后,不必等待其操作完成就可以将此指令发送至相应设备。但是,当两个指令有相关性时,就不能将这两个指令发送至两个虚拟通道。因此,不同指令至VC的映射就是影响PCIe系统正确性和传输效率的关键技术。

在TLP的头部信息中,PCIe定义了TC(Transmit Class,传输等级)属性参数,总共定义了 8 个等级 Trafic Class。不同TC的TLP如何映射到VC中,就是虚拟通道的映射方法,PCIe协议规定,相同TC的TLP必须映射到同一个VC中,不同的TC也可以映射到同一个VC中。

在现有的技术中,一般使用如下映射方法:1.TC值与VC值一一对应,即TC为0的映射到VC0的通道中,TC为1的映射到VC10的通道中,以此类推。2.预设固定的TC与VC映射关系,即在项目开发前,根据实际需求提前确定TC与VC映射关系,并且在系统运行过程中不可再改变。

现有技术中,TC与VC映射关系无法动态调整,请求带宽与虚拟通道缓存空间不匹配,PCIe系统的总线利用率较低,进而影响SOC芯片的性能。

发明内容

基于此,有必要针对上述技术问题,提供一种动态自适应的虚拟通道映射方法、装置及存储介质,可以提高PCIe系统的总线利用率,进而提高整个SOC芯片的性能。

一方面,提供一种动态自适应的虚拟通道映射方法,所述方法包括:

监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积;

基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值;

根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射关系表。

在其中一个实施例中,所述监测不同传输等级的事务层数据包的等效数据流量包括:

根据系统时钟生成每次监控的时间区间,每隔预定时间统计分析一次,通过系统时钟计数的方式生成每隔预定时间监测的使能信号,对不同传输等级的事务层数据包的等效数据流量进行监测。

在其中一个实施例中,所述监测不同传输等级的事务层数据包的等效数据流量包括:

根据同一个监测周期内指令的等效数据流量累加的总和计算单个传输等级的等效数据流量,并将所述单个传输等级的等效数据流量进行寄存,得到单个传输等级等效数据流量寄存值;

将所有传输等级的单个传输等级等效数据流量寄存值进行累加,得到所有传输等级的等效数据流量总和。

在其中一个实施例中,所述监测周期内指令的等效数据流量通过以下方式计算:

Flow_N_x=(TLP_coe x Length

TLP_coe= type_coe*fmt_coe

其中,Flow_N_x为第N个传输等级的单个指令等效数据流量,Length为当次指令操作的事务层数据包的数据长度,type_coe和fmt_coe均为计算系数。

在其中一个实施例中,所述获取每个传输等级对应的虚拟通道的数量的预计算值包括:

根据以下公式获取每个传输等级对应的虚拟通道的数量的预计算值:

VC_weight_N_PRE = 8* Flow_sum_N_reg/ wr_Flow_sum;

其中,VC_weight_N_PRE为传输等级对应的虚拟通道的数量的预计算值,Flow_sum_N_reg 为传输等级的等效数据流量寄存值,wr_Flow_sum 为所有传输等级的等效数据流量总和,N和传输等级均为0-7之间的整数。

在其中一个实施例中,所述得到传输等级到虚拟通道的映射关系表包括:

根据每个传输等级对应的虚拟通道的数量的预计算值,首先确定传输等级值为0时对应的虚拟通道的数量和通道编号,然后对剩余的传输等级值按照由大到小进行排序,依次确定其对应的虚拟通道数量和通道编号,得到传输等级到虚拟通道的映射关系表。

在其中一个实施例中,所述方法包括:

根据所述传输等级到虚拟通道的映射关系表,动态调整虚拟通道的仲裁优先级;

在一个监控调整周期结束时,更新所述映射关系表。

另一方面,提供了一种动态自适应的虚拟通道映射装置,所述装置包括:

监测模块,用于监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积;

计算模块,用于基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值;

调整模块,用于根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射表。

在其中一个实施例中,所述监测模块用于:

根据系统时钟生成每次监控的时间区间,每隔预定时间统计分析一次,通过系统时钟计数的方式生成每隔预定时间监测的使能信号,对不同传输等级的事务层数据包的等效数据流量进行监测。

又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积;

基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值;

根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射关系表。

上述动态自适应的虚拟通道映射方法、装置及存储介质,可以实时的监测不同传输等级值的TLP的等效数据流量,通过对每路流量数据的分析,可以在PCIe系统实际运行的过程中实时的调整传输等级到虚拟通道的映射,使得高带宽请求的TLP获得相应大的虚拟通道缓存空间,低速低带宽请求的TLP获得相应的小的虚拟通道缓存空间,同时可以动态的调整虚拟通道的仲裁优先级,提高了PCIe系统的总线利用率,进而提高整个SOC芯片的性能。

附图说明

图1为一个实施例中动态自适应的虚拟通道映射方法的流程示意图;

图2为一个实施例中PCIe系统的结构示意图;

图3为一个实施例中动态自适应的虚拟通道映射装置的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供一种动态自适应的虚拟通道映射方法,所述方法包括:

S1:监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积。

具体地,可以配置监测周期,在每一个监测周期内,监测每一个传输等级对应的TLC的等效数据流量,例如,传输等级的取值可以为0-7之间的整数,即TC0、TC1、……TC7。然后将所有传输等级对应的等效数据流量相加,得到所有传输等级的等效数据流量总和。

S2:基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值。

本步骤中,根据步骤1中得到的传输等级的等效数据流量总和,计算每个传输等级对应的虚拟通道的数量的预计算值,以用于后续步骤中映射关系表的调整。

S3:根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射关系表。

具体地,根据预计算值计算TCO-TC7对应的虚拟通道的数量和通道编号,形成映射关系表,并可以对该映射关系表进行更新。

上述动态自适应的虚拟通道映射方法,可以实时的监测不同传输等级值的TLP的等效数据流量,通过对每路流量数据的分析,可以在PCIe系统实际运行的过程中实时的调整传输等级到虚拟通道的映射,使得高带宽请求的TLP获得相应大的虚拟通道缓存空间,低速低带宽请求的TLP获得相应的小的虚拟通道缓存空间,同时可以动态的调整虚拟通道的仲裁优先级,提高了PCIe系统的总线利用率,进而提高整个SOC芯片的性能。

在其中一个实施例中,所述监测不同传输等级的事务层数据包的等效数据流量包括:

根据系统时钟生成每次监控的时间区间,每隔预定时间统计分析一次,通过系统时钟计数的方式生成每隔预定时间监测的使能信号,对不同传输等级的事务层数据包的等效数据流量进行监测。

如图2所示,本实施例在硬件实现时主要包括8组RAM存储器作为虚拟通道的载体,8组大小相同的双端口随机存储器RAM,数据位宽记为width,深度为Depth,根据实际使用环境可以自由配置大小。对于ram写操作,只需要将wr_addr写地址和wr_data写数据给到端口上,同时将写使能拉高,此时数据便写到了对应的地址位置。对于ram读操作,只需要将读地址rd_addr给到对应端口上,同时将读使能信号拉高,此时数据便从RD_data端口上读出。

在系统初始化时,使用默认的传输等级值与虚拟通道值一一对应映射方式。

根据系统时钟生成每次监控的时间区间,每T

T

其中,T

在其中一个实施例中,所述监测不同传输等级的事务层数据包的等效数据流量包括:

根据同一个监测周期内指令的等效数据流量累加的总和计算单个传输等级的等效数据流量,并将所述单个传输等级的等效数据流量进行寄存,得到单个传输等级等效数据流量寄存值;

将所有传输等级的单个传输等级等效数据流量寄存值进行累加,得到所有传输等级的等效数据流量总和。

具体地,每个传输等级的流量的计算方式相同,根据TLP包的header头部信息中的传输等级值分类,同步并行计算。

在其中一个实施例中,所述监测周期内指令的等效数据流量通过以下方式计算:

Flow_N_x=(TLP_coe x Length

TLP_coe= type_coe*fmt_coe

其中,Flow_N_x为第N个传输等级的单个指令等效数据流量,Length为当次指令操作的事务层数据包的数据长度,type_coe和fmt_coe均为计算系数。

具体地,以TC0的数据流量计算为例,方法包括:

(1)首先计算单个指令的等效数据流量

Flow_0_x=(TLP_coe x Length),Flow_0_x为TC为0的单个指令等效数据流量;TLP_coe为指令权重系数;Length为当次指令操作的实际数据长度,单位为DW(doubleword),由TLP包的header头部信息获得。

TLP_coe= type_coe*fmt_coe

其中,Type_coe为type计算系数(type为TLP头部信息中的参数)

其中x代表其可以为任意值。

fmt_coe为fmt计算系数(fmt为TLP头部信息中的参数),对应关系如下:

之所以设置不同的计算系数,是因为不同的TLP包的在系统中传递路由的路径是不一样的,同时其与系统配置的相关性也不一样,导致其占用总线的时间是不同。

(2)计算在同一个监控周期内,指令等效数据流量累加的和

Flow_sum_0 =Flow_0_1+Flow_0_2+Flow_0_3 +……+Flow_0_N

Flow_sum_0为在同一个周期内,TC为0的所有等效数据流量的和

(3)当到达监控的时间点时将其寄存

Flow_sum_0_reg =Flow_sum_0,

Flow_sum_0_reg为当前周期的TC为0的等效数据流量和的寄存值,在下一个时钟周期将其清零:Flow_sum_0 =0 。

(4)所有TC数据流量求和

在达到监控的时间点时,将各个传输等级值的等效数量流量求和

wr_Flow_sum=Flow_sum_0_reg+Flow_sum_1_reg+Flow_sum_3_reg+……+Flow_sum_7_reg

其中,wr_Flow_sum为在同一个周期内所有TC值的等效数据流量的和。

在其中一个实施例中,所述获取每个传输等级对应的虚拟通道的数量的预计算值包括:

根据以下公式获取每个传输等级对应的虚拟通道的数量的预计算值:

VC_weight_N_PRE = 8* Flow_sum_N_reg/ wr_Flow_sum;

其中,VC_weight_N_PRE为传输等级对应的虚拟通道的数量的预计算值,Flow_sum_N_reg 为传输等级的等效数据流量寄存值,wr_Flow_sum 为所有传输等级的等效数据流量总和,N和传输等级均为0-7之间的整数。

在其中一个实施例中,所述得到传输等级到虚拟通道的映射关系表包括:

根据每个传输等级对应的虚拟通道的数量的预计算值,首先确定传输等级值为0时对应的虚拟通道的数量和通道编号,然后对剩余的传输等级值按照由大到小进行排序,依次确定其对应的虚拟通道数量和通道编号,得到传输等级到虚拟通道的映射关系表。

具体地,首先判断传输等级为0时的预计算VC ram个数,

若VC_weight_0_PRE<= 1:VC_weight_0=1,VC_num = 0;

若VC_weight_0_PRE> 1:VC_weight_0=VC_weight_0_PRE_up,VC_num = 0;

其中,VC_weight_0为传输等级为0时对应的VC ram个数,VC_num为对应的VC通道编号, VC_weight_0_PRE_up为VC_weight_0_PRE向上取整的值。

其次,对剩余的传输等级值进行排序,按照由大到小排列,并按照从大到小依次处理,处理方法如下:

最大值一般是大于1的,此时判断:

若VC_weight_or_PRE_1>VC_weight_or_PRE_1_up–0.5:

VC_weight_0=VC_weight_0_PRE_up,VC_num = 2;

若VC_weight_or_PRE_1_up

VC_weight_0=VC_weight_0_PRE_up-1,VC_num = 1;

之后判断次大值,判断方法同上述,其同样占据独立的VC ram,VC_num依次加1。

当后续的值小于1时,此时将其写入后续的VC ram中,VC_num在前面基础上加1,继续向下再判断更小值,并将其与前述小于1的相加,若其和小于1.5,则将其映射到与前述同样空间,若大于1.5则将其映射到下一个VC ram, VC_num在前面基础上加1。

若判断到最后的数组时,已没有剩余的VC ram,则将其映射到TC0中。

例如,映射关系表如下:

在其中一个实施例中,所述方法包括:

根据所述传输等级到虚拟通道的映射关系表,动态调整虚拟通道的仲裁优先级;

在一个监控调整周期结束时,更新所述映射关系表。

具体地,如下表所示:

上表中的不同虚拟通道实际使用的ram个数就是虚拟通道仲裁的参考值。考虑到不同使用环境下的仲裁方法不同,因此此处只提供参考值。根据此参考值可以调整仲裁器参数,例如当使用固定优先级的方法时,VC ram最大的通道可给与最高的仲裁权限,并按顺序依次排列;当使用时间分片的仲裁方法时,可以将VC ram的比例作为时间分片的基准。

在一个监控调整周期结束时,将新的映射关系和仲裁参考值更新。

应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图3所示,提供了一种动态自适应的虚拟通道映射装置,所述装置包括:

监测模块301,用于监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积;

计算模块302,用于基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值;

调整模块303,用于根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射表。

在其中一个实施例中,所述监测模块301用于:

根据系统时钟生成每次监控的时间区间,每隔预定时间统计分析一次,通过系统时钟计数的方式生成每隔预定时间监测的使能信号,对不同传输等级的事务层数据包的等效数据流量进行监测。

在其中一个实施例中,所述监测模块301用于:

根据同一个监测周期内指令的等效数据流量累加的总和计算单个传输等级的等效数据流量,并将所述单个传输等级的等效数据流量进行寄存,得到单个传输等级等效数据流量寄存值;

将所有传输等级的单个传输等级等效数据流量寄存值进行累加,得到所有传输等级的等效数据流量总和。

在其中一个实施例中,所述监测模块301用于通过以下方式计算所述监测周期内指令的等效数据流量:

Flow_N_x=(TLP_coe x Length

TLP_coe= type_coe*fmt_coe

其中,Flow_N_x为第N个传输等级的单个指令等效数据流量,Length为当次指令操作的事务层数据包的数据长度,type_coe和fmt_coe均为计算系数。

在其中一个实施例中,所述计算模块302用于:

根据以下公式获取每个传输等级对应的虚拟通道的数量的预计算值:

VC_weight_N_PRE = 8* Flow_sum_N_reg/ wr_Flow_sum;

其中,VC_weight_N_PRE为传输等级对应的虚拟通道的数量的预计算值,Flow_sum_N_reg 为传输等级的等效数据流量寄存值,wr_Flow_sum 为所有传输等级的等效数据流量总和,N和传输等级均为0-7之间的整数。

在其中一个实施例中,所述调整模块303用于:

根据每个传输等级对应的虚拟通道的数量的预计算值,首先确定传输等级值为0时对应的虚拟通道的数量和通道编号,然后对剩余的传输等级值按照由大到小进行排序,依次确定其对应的虚拟通道数量和通道编号,得到传输等级到虚拟通道的映射关系表。

在其中一个实施例中,所述调整模块303用于:

根据所述传输等级到虚拟通道的映射关系表,动态调整虚拟通道的仲裁优先级;

在一个监控调整周期结束时,更新所述映射关系表。

关于动态自适应的虚拟通道映射装置的具体限定可以参见上文中对于动态自适应的虚拟通道映射方法的限定,在此不再赘述。上述动态自适应的虚拟通道映射装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

监测不同传输等级的事务层数据包的等效数据流量,获取所有传输等级的等效数据流量总和,所述等效数据流量为事务层数据包的数据长度与系数的乘积;

基于所述传输等级的等效数据流量总和,获取每个传输等级对应的虚拟通道的数量的预计算值;

根据所述预计算值调整传输等级到虚拟通道的映射,得到传输等级到虚拟通道的映射关系表。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据系统时钟生成每次监控的时间区间,每隔预定时间统计分析一次,通过系统时钟计数的方式生成每隔预定时间监测的使能信号,对不同传输等级的事务层数据包的等效数据流量进行监测。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据同一个监测周期内指令的等效数据流量累加的总和计算单个传输等级的等效数据流量,并将所述单个传输等级的等效数据流量进行寄存,得到单个传输等级等效数据流量寄存值;

将所有传输等级的单个传输等级等效数据流量寄存值进行累加,得到所有传输等级的等效数据流量总和。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

通过以下方式计算所述监测周期内指令的等效数据流量:

Flow_N_x=(TLP_coe x Length

TLP_coe= type_coe*fmt_coe

其中,Flow_N_x为第N个传输等级的单个指令等效数据流量,Length为当次指令操作的事务层数据包的数据长度,type_coe和fmt_coe均为计算系数。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据以下公式获取每个传输等级对应的虚拟通道的数量的预计算值:

VC_weight_N_PRE = 8* Flow_sum_N_reg/ wr_Flow_sum;

其中,VC_weight_N_PRE为传输等级对应的虚拟通道的数量的预计算值,Flow_sum_N_reg 为传输等级的等效数据流量寄存值,wr_Flow_sum 为所有传输等级的等效数据流量总和,N和传输等级均为0-7之间的整数。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据每个传输等级对应的虚拟通道的数量的预计算值,首先确定传输等级值为0时对应的虚拟通道的数量和通道编号,然后对剩余的传输等级值按照由大到小进行排序,依次确定其对应的虚拟通道数量和通道编号,得到传输等级到虚拟通道的映射关系表。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:

根据所述传输等级到虚拟通道的映射关系表,动态调整虚拟通道的仲裁优先级;

在一个监控调整周期结束时,更新所述映射关系表。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种动态自适应的虚拟通道映射方法、装置及存储介质
  • 一种动态自适应的虚拟通道映射方法、装置及存储介质
技术分类

06120113792897