本发明涉及高性能计算,尤其涉及一种高可扩展性rnic。
背景技术:
::1、在快速发展的信息技术时代,高性能计算(high performance compute,hpc)、人工智能(artificial intelligence,ai)和集中/分布式存储领域对高性能网络需求逐渐显现。据统计,未来几年内数据中心网络带宽的需求会呈指数级增长。网络带宽的需求引领了网络协议的进步。传统的tcp/ip协议栈由于其本身的多次内存拷贝特性,无法满足高速网络的需求,在数据中心网络中引入了rdma(remote direct memory access,远程直接内存访问)技术。rdma技术允许应用程序绕过操作系统内核,以零拷贝的方式和远程计算机进行网络通信,降低了cpu负载和多次的数据拷贝,提高了网络传输的效率,具有低延迟和高带宽的优势。实现rdma协议的网络接口控制器被称为rnic。2、rdma技术本身仍然存在问题,特别体现在数据中心中的连接可扩展性方面。由于rdma技术最初应用在infiniband网络上,连接服务数较少,但在数据中心网络中,网络规模更大,需要提供更多高性能连接。3、现有的商用rnic设计如图1所示,包括pcie(peripheral componentinterconnect express,高速串行计算机扩展总线标准)接口,通过该接口与主机交互,另一个是mac(media access control,媒体存储控制)接口,通过该接口进行网络数据收发。pcie接口提供了三种功能,mmio(memory-mapped input/output,内存映射输入输出)、中断以及dma引擎。mmio用于主机读写硬件寄存器。中断用于rnic主动向主机发起通知,包括完成事件和错误处理的通知。dma引擎用于rnic侧主动发起内存读写操作,包括上下文内容和rdma传输数据的读写。mr(memory region,内存区域)用于进行地址转换,其记录了两部分信息;mpt(memory protection table,内存保护表)包含了注册内存区域的虚拟地址信息、权限信息以及密钥信息,mtt(memory translation table内存转换表)则具体包含了进行虚拟地址转换的页表信息。qp(queue pair,队列对)内容(context)存储了qp连接的配置和状态信息,是硬件进行包处理的关键。cq(completion queue,完成队列)内容存储了cq的状态和配置信息。sq(send queue,发送队列)缓存(缓存)和rq(receive queue,接收队列)缓存则分别存储发送队列和接收队列中的wqe(work queue element,工作队列元素),通常采用缓存设计。qp调度器(qp scheduler)负责对存在待处理事务的qp进行调度,根据调度策略安排不同qp的发送任务。rdma传输中包含了实现rdma协议的组件,请求端(requester)是主动发起请求的一方,从发送队列缓存获取传输指令,响应端(responder)则是接收远端请求,并根据需要从接收队列缓存获取存储指令。命令解析模块用于解析上层发送的初始化配置和读写命令操作。4、为了降低成本,现有rnic通常采用无dram(dynamic random access memory,动态随机存取存储器)的架构,将上下文存储在主机内存,并选择rnic上有限的sram(staticrandom access memory,静态随机存取存储器)进行数据缓存。在多连接场景下,活动连接数量增加超过片上存储大小时,频繁的缓存未命中以及主机内存和rnic之间的上下文切换会导致吞吐量显著下降,这极大影响了网络的整体性能。由此可见,rnic架构下的高可扩展性问题亟待解决。技术实现思路1、本发明提供一种高可扩展性rnic,解决的技术问题在于:如何设计一种高可扩展性的rnic。2、为解决以上技术问题,本发明提供一种高可扩展性rnic,设有全要素多层级缓存模块,所述全要素多层级缓存模块用于对队列对、内存区域、完成队列、发送队列、接收队列设计对应的缓存区分别进行缓存;所述全要素多层级缓存模块包括队列内容缓存模块、区域缓存模块、完成队列缓存模块、发送队列完成模块和接收队列缓存模块;所述队列内容缓存模块用于存储和转发队列内容上下文;所述区域缓存模块用于存储和转发内存区域上下文;所述发送队列完成模块和所述完成队列缓存模块分别用于存储发送队列和接收队列中的工作队列元素。3、优选地,所述队列内容缓存模块包括一级队列内容缓存模块、二级队列内容缓存模块、缓存桥接模块;所述二级队列内容缓存模块用于直接与上层交互数据;所述一级队列内容缓存模块用于提供队列内容;所述缓存桥接模块用于实现所述二级队列内容缓存模块的数据和所述一级队列内容缓存模块的数据交互。4、优选地,所述一级队列内容缓存模块包括发送端一级缓存模块和接收端一级缓存模块,均为可读可写缓存;5、所述二级队列内容缓存模块用于缓存单个队列的完整上下文,所述一级队列内容缓存模块用于缓存包处理级别所需的队列内容;所述二级队列内容缓存模块通过所述缓存桥接模块向所述一级队列内容缓存模块发起缓存维护请求,所述一级队列内容缓存模块通过所述二级队列内容缓存模块的请求接口读取队列内容并且发送命令执行完成的通知;所述二级队列内容缓存模块和所述一级队列内容缓存模块采用了高级可扩展接口互联实现数据的高效读取。6、优选地,所述队列内容缓存模块的缓存行标志位增加了回写位、污染位、发送端存在位和接收端存在位;所述回写位表征该缓存行数据正在回写,所述污染位表征该缓存行数据与内存不一致;所述发送端存在位表征该缓存行数据存在于发送端一级缓存模块中,所述接收端存在位表征该缓存行数据存在于接收端一级缓存模块中;在所述二级队列内容缓存模块发生替换时,不允许存在于所述一级队列内容缓存模块的缓存行作为替换对象;只有当所述一级队列内容缓存模块中的内容写回至所述二级队列内容缓存模块后,所述发送端存在位和所述接收端存在位都为无效时,才能够进行替换;在软件执行锁定操作时,所述二级队列内容缓存模块主动向所述一级队列内容缓存模块发起无效请求,通知所述一级队列内容缓存模块回写数据,所述一级队列内容缓存模块回写完成后,再由所述二级队列内容缓存模块将数据写回内存;所述二级队列内容缓存模块支持的命令与所述完成队列缓存模块相同,所述二级队列内容缓存模块通过所述缓存桥接模块向所述一级队列内容缓存模块发送命令;所述缓存桥接模块负责将所述二级队列内容缓存模块发起的阻塞命令转换为非阻塞命令发往所述一级队列内容缓存模块并确保命令成功执行。除此之外,队列内容缓存模块内部采用多级状态机设计,主状态机处理请求任务,主要实现控制逻辑;从状态机主要用于通过dma请求或回写数据,主要实现了数据的传递;这种设计将控制通路与数据通路分离,两者不相互阻塞,提高整体电路流水线包处理的效率。7、优选地,所述发送队列缓存模块、所述接收队列缓存模块、所述完成队列缓存模块与所述二级队列内容缓存模块结构类似,所述发送队列缓存模块、所述接收队列缓存模块用于实现对工作队列元素的存储,所述完成队列缓存模块用于实现对完成队列信息的存储,为只读缓存结构;8、所述内存区域缓存模块为只读缓存,仅需要读取验证地址和权限信息,同时计算总线地址,而不需要修改;所述内存区域缓存模块由fifo即先入先出队列、ram即随机存取存储器以及状态机组成;所述fifo用于减少信号握手带来的状态机阻塞,提高状态机执行效率,其中的主机到板卡请求fifo存储了主机到板卡的直接内存访问请求,主机到板卡数据fifo存储了暂未接收的主机到板卡的直接内存访问数据,主机到板卡原始数据fifo存储了直接内存访问数据的地址信息,与直接内存访问数据一起提交给状态机处理;所述ram由存储缓存行状态信息的标志位和存储的具体数据组成;所述状态机使用写端口写入数据,所述状态机使用读取接口读取数据;所述状态机负责处理缓存内部和外部的各种请求,外部请求又分为阻塞请求和非阻塞请求,阻塞请求用于数据读取,非阻塞请求用于执行各种缓存事务。9、优选地,所述内存区域缓存模块采用了四路组相连结构,每路的深度可根据参数动态配置;记mrn即内存区域缓存数为内存区域缓存模块的唯一标识,则将mrn的低n位,映射为标志ram地址,其余位作为比较标志位存储在缓存行状态中,用于同组内部不同路缓存行的比较,2的n次幂为缓存组数;其余位中的有效位表征该缓存有效,存在位表征数据存在于片上,锁定位表征该缓存行被锁定,悬挂位表征正在从上级读取数据中;10、所述发送队列缓存模块、所述接收队列缓存模块、所述完成队列缓存模块、所述队列内容缓存模块采用与所述内存区域模块相同的标志位设计。11、优选地,该高可扩展性rnic还设有发送端请求模块、接收端响应模块、发送调度模块、发送解析模块、接收预取模块、全局id映射表、发送通路模块、接收通路模块、拥塞控制模块和流量控制模块;12、所述发送端请求模块用于实现发送任务的预取和分发;13、所述接收端响应模块用于实现接收数据包的预取和响应;14、所述发送调度模块用于调度多个队列间的发送事务,采用位图的结构存储队列信息,并采用轮询调度策略,减少调度器的检索时间。在每次对应的队列存在发送任务时,就会将其对应位图位置高,调度器便会对其进行调度,等待对应任务处理完成,便会清除掉对应位图位;15、所述发送解析模块用于处理发送事务,产生数据包头部的各个字段并发起dma请求;16、所述接收预取模块用于根据接收数据包对队列内容进行预取;17、所述全局id映射表用于提供发送和接收数据包的全局id字段;18、所述发送通路模块用于进行发送数据包的组装和发送;19、所述接收通路模块用于进行接收数据包的接收和解析;20、所述拥塞控制模块和所述流量控制模块用于在高数据量负载无法及时处理时,限制发送和接收速率。21、优选地,所述发送解析模块包括仲裁模块、dma请求模块、头部创建模块,所述仲裁模块负责接收来自所述发送端请求模块和所述接收端响应模块的发送端事务和接收端事务并对两组事务接口进行仲裁,将发送端事务拆分为用于产生数据包头部的原始数据和描述数据包负载的离散聚合元素数据分别送往所述头部创建模块和所述dma请求模块,并按照统一格式将产生的数据包头部信息送往所述发送通路模块中的封包模块;22、所述dma请求模块根据离散聚合元素数据中的地址和长度信息以及用于判断后级封包模块fifo剩余空间信息,发起直接内存访问即dma请求;23、所述头部创建模块用于将仲裁模块送来的头部信息生成对应的头部数据包,再发送给所述发送通路模块的封包模块。24、优选地,所述发送通路模块设有封包模块,所述封包模块用于根据头部信息进行数据包的组装,内部涉及数据头部与数据负载、数据负载与数据负载的拼接,通过循环移位实现多个axis即高级可扩展接口数据流合并成一个axis数据流;25、所述封包模块包括快速创建包模块、头部转换模块、包创建模块、合并模块、拼接模块;所述快速创建包模块用于接收来自所述接收端响应模块的无数据负载发送信息,产生相应数据包;所述头部转换模块用于接收来自所述发送解析模块的头部信息,首先进行网络字节序转换,然后再根据控制字段进行数据包头部组装;所述包创建模块负责根据控制信息完成数据包头部和数据包负载的拼接,组装为完整的数据包,数据包负载包括通过dma直接获取的数据负载和包含在工作队列元素中的inline即一次数据负载小于512字节数据负载;所述合并模块对来自所述快速创建包模块和所述包创建模块的数据包进行仲裁,通过一组接口发送到下级模块;所述拼接模块用于将多个axis数据包组装成单个axis数据包,用于工作队列元素的多离散聚合元素支持;26、所述接收通路模块设有解包模块,用于完成数据包的解析工作,提取数据包的头部,产生统一格式的数据包头部描述符;所述解包模块包括尾部削减模块、验证模块和部削减模块;所述尾部削减模块负责根据基本传输头中的pad位移除数据包尾部填充字节和不变循环冗余校验字段;所述验证模块负责完成数据包验证并产生数据包描述符,如果验证失败则直接丢弃数据包;所述头部削减模块负责根据所述验证模块计算的数据负载偏移位置移除数据包头部,只保留数据包负载并移除数据包负载前的空隙。27、优选地,所述发送端请求模块设有接收响应验证模块,所述接收端响应模块设有接收请求验证模块;所述接收响应验证模块内部采用双状态机设计,包括读写状态机和验证状态机;所述读写状态机负责为收到的头部信息,准备一级缓存数据和全局id信息,分别通过qpc一级缓存读写接口读取队列内容缓存模块数据和sgid只读接口从接收通路模块读取数据,同时在内部存在一个缓冲区进行缓存;所述验证状态机负责验证数据包的正确性,产生对应的控制命令,并更新上下文信息;28、所述接收请求验证模块内部设计同样采用双状态机设计,内部结构与发送响应验证模块相同,不同之处在于所述接收请求验证模块还需要根据远端请求产生ack回复。29、本发明提供的一种高可扩展性rnic,采用调度-预取机制设计,主要包括发送调度模块(qp调度器)和预取链设计,用于实现rnic的队列间高效调度和隐藏pcie延迟,其原理是:由于一次pcie请求需要几十个周期的时间,而调度和预取的高效配合能够提前发出预取请求,等到需要数据时,数据已经通过pcie接口到达,从而隐藏了pcie的延迟;除此之外,发送调度模块内部采用位图的结构存储队列信息,并采用轮询调度策略,减少发送调度模块的检索时间,尽可能减少队列切换带来的延迟,减少队头阻塞情况的发生。30、本发明提供的一种高可扩展性rnic,与现有技术相比,其有益效果主要在于:31、设计了全要素多层级缓存模块,使主机与片上缓存协同,根据模块读写需求进一步拆分qpc(qp context,队列对内容),保障了不同模块的高效读写;32、实现了包处理的深度流水线的优化(流水线优化指的就是将发送/接收任务分到多个模块进行,例如预取模块、处理模块、发送解析模块、发送通路等这样的像一条流水线的设计),根据包处理过程特点将其分解到多个模块,分离了控制平面和数据平面,提高了包处理效率;33、根据发送调度模块与发送和接收预取模块的关系以及不同队列内容的依赖关系,设计了调度-预取机制,降低了队头阻塞对接收包处理流水线的影响。当前第1页12当前第1页12
技术特征:1.一种高可扩展性rnic,其特征在于:设有全要素多层级缓存模块,所述全要素多层级缓存模块用于对队列对、内存区域、完成队列、发送队列、接收队列设计对应的缓存区分别进行缓存;所述全要素多层级缓存模块包括队列内容缓存模块、区域缓存模块、完成队列缓存模块、发送队列完成模块和接收队列缓存模块;所述队列内容缓存模块用于存储和转发队列内容上下文;所述区域缓存模块用于存储和转发内存区域上下文;所述发送队列完成模块和所述完成队列缓存模块分别用于存储发送队列和接收队列中的工作队列元素。
2.根据权利要求1所述的一种高可扩展性rnic,其特征在于:所述队列内容缓存模块包括一级队列内容缓存模块、二级队列内容缓存模块、缓存桥接模块;所述二级队列内容缓存模块用于直接与上层交互数据;所述一级队列内容缓存模块用于提供队列内容;所述缓存桥接模块用于实现所述二级队列内容缓存模块的数据和所述一级队列内容缓存模块的数据交互。
3.根据权利要求2所述的一种高可扩展性rnic,其特征在于:所述一级队列内容缓存模块包括发送端一级缓存模块和接收端一级缓存模块,均为可读可写缓存;
4.根据权利要求3所述的一种高可扩展性rnic,其特征在于:所述队列内容缓存模块的缓存行标志位增加了回写位、污染位、发送端存在位和接收端存在位;所述回写位表征该缓存行数据正在回写,所述污染位表征该缓存行数据与内存不一致;所述发送端存在位表征该缓存行数据存在于发送端一级缓存模块中,所述接收端存在位表征该缓存行数据存在于接收端一级缓存模块中;在所述二级队列内容缓存模块发生替换时,不允许存在于所述一级队列内容缓存模块的缓存行作为替换对象;只有当所述一级队列内容缓存模块中的内容写回至所述二级队列内容缓存模块后,所述发送端存在位和所述接收端存在位都为无效时,才能够进行替换;在软件执行锁定操作时,所述二级队列内容缓存模块主动向所述一级队列内容缓存模块发起无效请求,通知所述一级队列内容缓存模块回写数据,所述一级队列内容缓存模块回写完成后,再由所述二级队列内容缓存模块将数据写回内存;所述二级队列内容缓存模块支持的命令与所述完成队列缓存模块相同,所述二级队列内容缓存模块通过所述缓存桥接模块向所述一级队列内容缓存模块发送命令;所述缓存桥接模块负责将所述二级队列内容缓存模块发起的阻塞命令转换为非阻塞命令发往所述一级队列内容缓存模块并确保命令成功执行。
5.根据权利要求4所述的一种高可扩展性rnic,其特征在于:所述发送队列缓存模块、所述接收队列缓存模块、所述完成队列缓存模块与所述二级队列内容缓存模块结构类似,所述发送队列缓存模块、所述接收队列缓存模块用于实现对工作队列元素的存储,所述完成队列缓存模块用于实现对完成队列信息的存储,为只读缓存结构;
6.根据权利要求5所述的一种高可扩展性rnic,其特征在于:所述内存区域缓存模块采用了四路组相连结构,每路的深度可根据参数动态配置;记mrn即内存区域缓存数为内存区域缓存模块的唯一标识,则将mrn的低n位,映射为标志ram地址,其余位作为比较标志位存储在缓存行状态中,用于同组内部不同路缓存行的比较,2的n次幂为缓存组数;其余位中的有效位表征该缓存有效,存在位表征数据存在于片上,锁定位表征该缓存行被锁定,悬挂位表征正在从上级读取数据中;
7.根据权利要求6所述的一种高可扩展性rnic,其特征在于:该高可扩展性rnic还设有发送端请求模块、接收端响应模块、发送调度模块、发送解析模块、接收预取模块、全局id映射表、发送通路模块、接收通路模块、拥塞控制模块和流量控制模块;
8.根据权利要求7所述的一种高可扩展性rnic,其特征在于:所述发送解析模块包括仲裁模块、dma请求模块、头部创建模块,所述仲裁模块负责接收来自所述发送端请求模块和所述接收端响应模块的发送端事务和接收端事务并对两组事务接口进行仲裁,将发送端事务拆分为用于产生数据包头部的原始数据和描述数据包负载的离散聚合元素数据分别送往所述头部创建模块和所述dma请求模块,并按照统一格式将产生的数据包头部信息送往所述发送通路模块中的封包模块;
9.根据权利要求8所述的一种高可扩展性rnic,其特征在于:所述发送通路模块设有封包模块,所述封包模块用于根据头部信息进行数据包的组装,内部涉及数据头部与数据负载、数据负载与数据负载的拼接,通过循环移位实现多个axis即高级可扩展接口数据流合并成一个axis数据流;
10.根据权利要求9所述的一种高可扩展性rnic,其特征在于:所述发送端请求模块设有接收响应验证模块,所述接收端响应模块设有接收请求验证模块;所述接收响应验证模块内部采用双状态机设计,包括读写状态机和验证状态机;所述读写状态机负责为收到的头部信息,准备一级缓存数据和全局id信息,分别通过qpc一级缓存读写接口读取队列内容缓存模块数据和sgid只读接口从接收通路模块读取数据,同时在内部存在一个缓冲区进行缓存;所述验证状态机负责验证数据包的正确性,产生对应的控制命令,并更新上下文信息;
技术总结本发明涉及高性能计算技术领域,具体公开了一种高可扩展性RNIC,针对多连接场景下,连接数量增加超过片上存储大小时,频繁的缓存未命中以及主机内存和RNIC之间的上下文切换导致吞吐量下降问题,采用设计的全要素多层级缓存模块,使主机与片上缓存协同,保证高效的数据读写操作;通过高效调度与预取机制实现RNIC的QP间高效调度和隐藏PCIe延迟,保证连接数增加时,性能不下降。采用本发明,能够实现QP连接数高可扩展的RDMA网络传输,保证高带宽、低延迟和低CPU占用。
技术研发人员:何伟,戴其霖,林英撑,刘平净,刘航,杨学飞,叶膳维
受保护的技术使用者:重庆大学
技术研发日:技术公布日:2024/11/26