【技术实现步骤摘要】
提升智能网卡性能的方法及装置
[0001]本公开涉及计算机
,尤其涉及一种提升智能网卡性能的方法和装置。
技术介绍
[0002]在智能网卡设计中许多模块涉及到表项的读写操作:比如实现交换机加速功能时,需要设计一套交换机流表;实现远程数据存取功能时,需要实现一套接收发送连接表等等。一般这些表项容量都比较大(百万级),需要存放到外部存储器件中。受限于存储器件支持的最大时钟频率及数据宽度,这些表项的读写带宽是有理论极限的。
[0003]在处理多任务的数据读写时,往往需要多个任务处理器同时工作,而在处理器同时工作时,不同的任务处理间会出现冲突,因此,表项读写性能往往成为整个设计的瓶颈。
技术实现思路
[0004]本公开提供一种提升智能网卡性能的方法和装置,用以解决现有技术中读写效率不高的缺陷,实现快速高效地读写数据。
[0005]第一方面,本公开提供一种提升智能网卡性能的方法,包括:
[0006]获取当前处理模块读取请求指令所指向的表项的地址;
[0007]根据所述表项的地址确定所述地址对应的哈希值;
[0008]根据所述哈希值和预先构建的包含多个单元格的比特位图锁表确定所述读取请求指令对应的单元格的上锁状态;
[0009]根据所述单元格的上锁状态确定调度器是否执行读操作。
[0010]根据本公开提供的提升智能网卡性能的方法,其中,所述根据所述哈希值和预先构建的包含多个单元格比特位图锁表确定所述读取请求指令对应的单元格的上锁状态,具体包括; >[0011]以所述哈希值为被除数以所述比特位图锁表的深度为除数获取余数;
[0012]查询在所述比特位图锁表中所述余数对应的单元格中的比特数的值;
[0013]依据所述比特数的值确定所述单元格的上锁状态。
[0014]根据本公开提供的提升智能网卡性能的方法,其中,所述根据所述上锁状态确定调度器是否执行读操作,具体包括:
[0015]若所述单元格的上锁状态为未上锁,则由所述调度器发送读取请求指令至控制器,并将所述表格中的比特数的值变为上锁状态;
[0016]若所述单元格的上锁状态为上锁,则所述调度器不将所述读取请求指令发送至所述控制器。
[0017]根据本公开提供的提升智能网卡性能的方法,其中,所述若所述单元格的上锁状态为未上锁,则由所述调度器发送读取请求指令至控制器之后,还包括:
[0018]所述控制器在接收到所述调度器的所述读取请求指令之后,读取所述单元格对应的表项的数据,并将所述表项的数据发送给所述当前处理模块。
[0019]根据本公开提供的提升智能网卡性能的方法,其中,所述若所述单元格的上锁状态为上锁,则所述调度器不将所述读取请求指令发送至所述控制器之后,还包括:
[0020]由所述调度器将所述读取请求指令添加到等候表中;
[0021]所述调度器继续以轮询调度的方式调度其他处理模块的读取请求指令,并根据所述其他处理模块的读取请求指令所对应的表格中比特数的值确定是否执行读操作,其中,所述其他处理模块的读取请求包括等候表中存储的读取请求指令。
[0022]根据本公开提供的提升智能网卡性能的方法,其中,所述等候表中存储的读取请求指令以先进先出的方式参与所述轮询调度。
[0023]根据本公开提供的提升智能网卡性能的方法,其中,在完成表项读操作之后的表项写操作包括:
[0024]所述处理模块更新完读取的所述表项的数据后,发起写请求指令;
[0025]获取所述写请求指令所针对的表项的地址;
[0026]所述控制器接收到所述写请求指令后完成更新后的所述数据的写操作;
[0027]调度器在所述写操作完成后将所述比特位图锁表中所述写请求指令所对应的单元格的状态更新为未上锁状态。
[0028]第二方面,本公开提供一种提升智能网卡性能的装置,包括:
[0029]第一处理模块,用于获取当前处理模块读取请求指令所指向的表项的地址;
[0030]第二处理模块,用于根据所述表项的地址确定所述地址对应的哈希值;
[0031]第三处理模块,用于根据所述哈希值和预先构建的包含多个单元格的比特位图锁表确定所述读取请求指令对应的单元格的上锁状态;
[0032]第四处理模块,用于根据所述单元格的上锁状态确定调度器是否执行读操作。
[0033]第三方面,本公开还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述提升智能网卡性能的方法的步骤。
[0034]第四方面,本公开还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述提升智能网卡性能的方法的步骤。
[0035]本公开提供的提升智能网卡性能的方法和装置,其中,方法通过获取当前处理模块读取请求指令所指向的表项的地址;继而,根据所述表项的地址确定所述地址对应的哈希值;由于哈希值的唯一性,可以将一个表项的地址进行唯一化,再根据所述哈希值和预先构建的包含多个单元格的比特位图锁表确定所述读取请求指令对应的单元格的上锁状态;从而相当于将每一个处理模块的执行请求加上了一把锁,再根据所述单元格的上锁状态确定调度器是否执行读操作。本公开实现了通过引入比特位图锁表结构,将现有技术中的一把锁拆解成多把锁,降低了每把锁的冲突概率,提高了表项读写性能。
附图说明
[0036]为了更清楚地说明本公开或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些
附图获得其他的附图。
[0037]图1是现有技术中提供的多端口表项读写冲突示意图;
[0038]图2是本公开提供的提升智能网卡性能方法的流程示意图;
[0039]图3是本公开提供的一种改进的包含比特位图锁表的表项读写结构示意图;
[0040]图4是本公开提供的加锁后“头阻”效应示意图;
[0041]图5是本公开提供一种改进的包含等候表的表项读写结构示意图;
[0042]图6是本公开提供的读请求调度流程示意图;
[0043]图7是本公开提供的写请求调度流程示意图;
[0044]图8是本公开提供的提升智能网卡性能装置的结构示意图;
[0045]图9是本公开提供的电子设备的结构示意图。
具体实施方式
[0046]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开实施例一部分实施例,而不是全部的实施例。基于本公开实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开实施例保护的范围。<本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种提升智能网卡性能的方法,其特征在于,包括:获取当前处理模块读取请求指令所指向的表项的地址;根据所述表项的地址确定所述地址对应的哈希值;根据所述哈希值和预先构建的包含多个单元格的比特位图锁表确定所述读取请求指令对应的单元格的上锁状态;根据所述单元格的上锁状态确定调度器是否执行读操作。2.根据权利要求1所述的提升智能网卡性能的方法,其特征在于,所述根据所述哈希值和预先构建的包含多个单元格比特位图锁表确定所述读取请求指令对应的单元格的上锁状态,具体包括;以所述哈希值为被除数以所述比特位图锁表的深度为除数获取余数;查询在所述比特位图锁表中所述余数对应的单元格中的比特数的值;依据所述比特数的值确定所述单元格的上锁状态。3.根据权利要求1所述的提升智能网卡性能的方法,其特征在于,所述根据所述上锁状态确定调度器是否执行读操作,具体包括:若所述单元格的上锁状态为未上锁,则由所述调度器发送读取请求指令至控制器,并将所述表格中的比特数的值变为上锁状态;若所述单元格的上锁状态为上锁,则所述调度器不将所述读取请求指令发送至所述控制器。4.根据权利要求3所述的提升智能网卡性能的方法,其特征在于,所述若所述单元格的上锁状态为未上锁,则由所述调度器发送读取请求指令至控制器之后,还包括:所述控制器在接收到所述调度器的所述读取请求指令之后,读取所述单元格对应的表项的数据,并将所述表项的数据发送给所述当前处理模块。5.根据权利要求3所述的提升智能网卡性能的方法,其特征在于,所述若所述单元格的上锁状态为上锁,则所述调度器不将所述读取请求指令发送至所述控制器之后,还包括:由所述调度器将所述读取请求指令添加到等候表中;...
【专利技术属性】
技术研发人员:王建东,廖恬瑜,
申请(专利权)人:北京汇钧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。