一种信息缓存方法、装置和通信设备的制作方法

文档序号:6521028阅读:140来源:国知局
一种信息缓存方法、装置和通信设备的制作方法
【专利摘要】本发明实施例公开了信息缓存方法、装置和通信设备,应用于通信【技术领域】。当包括RDMA模块的通信设备在按照队列对的形式进行传输数据的过程中,在首次需要用到队列对的某一关联数据时,RDMA模块就将该队列对的关联数据获取到,并连同该关联数据的优先级信息一起对应地储存到RDMA模块的缓存单元中。这样在后续如果需要用到该关联数据时,RDMA模块就不需要通过与其相连的处理器接口从存储模块来获取,而直接从缓存单元中获取,避免了RDMA模块与存储器之间频繁的读写操作;同时RDMA模块根据优先级别缓存队列对的关联数据,在RDMA模块中缓存空间有限的情况下,优先将高优先级别的队列对的关联数据缓存。
【专利说明】一种信息缓存方法、装置和通信设备
【技术领域】
[0001]本发明涉及通信【技术领域】,特别涉及信息缓存方法、装置和通信设备。
【背景技术】
[0002]远端数据直接存取(Remote Direct Memory Access, RDMA)技术可以降低服务器之间进行数据处理的延迟问题,能降低服务器中中央处理器(Central Processing Unit,CPU)处理数据传输的负荷。具体地,在RDMA系统中的服务器包括CPU、存储模块比如双列直插式存储模块(Dual-1nline-Memory-Modules, DIMM)和主机端通道适配器(Host ChannelAdapter, HCA)等,且服务器之间是通过HCA之间的线缆互联,以实现服务器之间的通信。
[0003]其中,一个服务器中的HCA可以通过CPU向存储模块得到发送数据后,发送给另一服务器的HCA,并由另一服务器的HCA将接收的数据通过CPU储存到存储模块中。这样在数据传输的过程中,CPU只是负责将数据写入存储模块和将传输数据的任务写入到发送队列中等,而数据传输协议的控制处理比如解析数据报文、封装数据报文和应答数据报文等由HCA来执行,而不需要CPU来参与,从而不需要用到大量CPU的处理能力,降低了 CPU的负荷。
[0004]但是上述数据传输的过程中,当服务器中的HCA在发送数据时,需要将发送数据所关联的信息比如内存翻译保护表(Memory Translate Protect Table,MTPT)等信息通过CPU向存储模块获取到,使得HCA与CPU之间会频繁的进行读写存储模块。

【发明内容】

[0005]本发明实施例提供信息缓存方法、装置和通信设备,减少通信设备中处理器与具有RDMA功能的模块之间频繁的操作。
[0006]本发明实施例第一方面提供一种信息缓存方法,应用于通信设备包括的远端数据直接存取RDMA模块中,所述方法包括:
[0007]获取所述通信设备传输数据的队列对的关联数据;
[0008]确定所述队列对的关联数据的优先级信息;
[0009]将所述队列对的关联数据和所述关联数据的优先级信息对应地储存到所述RDMA模块的缓存单元中。
[0010]本发明实施例第一方面的第一种可能的实现方式中,所述确定所述队列对的关联数据的优先级信息,具体包括:
[0011]在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述关联数据的优先级信息。
[0012]本发明实施例第一方面的第二种可能的实现方式中,所述将所述队列对的关联数据和所述关联数据的优先级信息对应地储存到所述RDMA模块的缓存单元中,具体包括:
[0013]在所述RDMA模块中选择空闲的缓存单元作为第一缓存单元,并将所述队列对的关联数据和所述关联数据的优先级信息储存到所述第一缓存单元中;[0014]如果所述RDMA模块中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元作为第二缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第二缓存单元中的信息;
[0015]如果存在非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元作为第三缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第三缓存单元中的信息;
[0016]其中,缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。
[0017]结合本发明实施例第一方面,或第一方面的第一种或第二种可能的实现方式,本发明实施例第一方面的第三种可能的实现方式中,所述方法还包括:
[0018]当所述队列对注销时,将所述RDMA模块中的所述缓存单元置为空闲的缓存单元。
[0019]结合本发明实施例第一方面,或第一方面的第一种到第三种可能的实现方式中任一可能实现方式,本发明实施例第一方面的第四种可能的实现方式中:
[0020]所述缓存单元包括标签域和内容域,所述标签域用于储存所述队列对的标识和所述关联数据的优先级信息;所述内容域用于储存所述队列对的关联数据。
[0021]结合本发明实施例第一方面第四种可能的实现方式,本发明实施例第一方面的第五种可能的实现方式中:
[0022]所述关联数据中包括如下任一个或多个信息:所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文;
[0023]在所述内容域中,将所述队列上下文、内存翻译保护表和完成队列上下文按照预置的顺序储存。
[0024]结合本发明实施例第一方面,或第一方面的第一种到第五种可能的实现方式中任一可能实现方式,本发明实施例第一方面的第六种可能的实现方式中,所述缓存单元的关联数据包括一种或多种,所述方法还包括:
[0025]对所述缓存单元中的任一种或多种关联数据进行更新。
[0026]本发明实施例第二方面提供一种信息缓存装置,包括:
[0027]关联数据获取单元,用于获取所述通信设备传输数据的队列对的关联数据;
[0028]优先级确定单元,用于确定所述队列对的关联数据的优先级信息;
[0029]储存单元,用于将所述关联数据获取单元获取的队列对的关联数据和所述优先级确定单元确定的关联数据的优先级信息对应地储存到所述信息缓存装置的缓存单元中。
[0030]在本发明实施例第二方面的第一种可能的实现方式中,所述优先级确定单元,具体用于在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述关联数据的优先级信息。
[0031]在本发明实施例第二方面的第二种可能的实现方式中,所述储存单元包括:
[0032]第一储存单元,用于在所述信息缓存装置中选择空闲的缓存单元作为第一缓存单元,并将所述队列对的关联数据和所述关联数据的优先级信息储存到所述选择的第一缓存单元中;
[0033]第二储存单元,用于如果所述信息缓存装置中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元作为第二缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第二缓存单元中的信息;
[0034]第三储存单元,用于如果存在非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元作为第三缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第三缓存单元中的信息;
[0035]其中,缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。
[0036]结合本发明实施例第二方面,或第二方面的第一种或第二种可能的实现方式,本发明实施例第二方面的第三种可能的实现方式中,还包括:
[0037]注销单元,用于当所述队列对注销时,将所述信息缓存装置中的缓存单元置为空闲的缓存单元。
[0038]结合本发明实施例第二方面,或第二方面的第一种到第三种可能的实现方式中任一可能实现方式,本发明实施例第二方面的第三种可能的实现方式中:
[0039]所述缓存单元包括标签域和内容域,所述标签域用于储存所述队列对的标识和所述关联数据的优先级信息;所述内容域用于储存所述队列对的关联数据。
[0040]结合本发明实施例第二方面第三种可能的实现方式,本发明实施例第二方面的第四种可能的实现方式中:
[0041]所述关联数据中包括至少一个如下的信息:所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文;
[0042]在所述内容域中,将所述队列上下文、内存翻译保护表和完成队列上下文按照预置的顺序储存。
[0043]结合本发明实施例第二方面,或第二方面的第一种到第四种可能的实现方式中任一可能实现方式,本发明实施例第二方面的第五种可能的实现方式中,所述缓存单元的关联数据包括一种或多种,所述装置还包括:
[0044]更新单元,用于对所述缓存单元中的任一种或多种关联数据进行更新。
[0045]本发明实施例第三方面还提供一种通信设备,包括处理器、远端数据直接存取RDMA模块和存储模块;
[0046]所述RDMA模块与所述处理器连接,是本发明实施例第二方面,或第二方面的第一种到第六种可能的实现方式中任一可能实现方式所述的信息缓存装置。
[0047]可见,在本实施例中,当包括RDMA模块的通信设备在按照队列对的形式进行传输数据的过程中,在首次需要用到队列对的某一关联数据时,RDMA模块就将该队列对的关联数据获取到,并连同该关联数据的优先级信息一起对应地储存到RDMA模块的缓存单元中。这样在后续如果需要用到任一关联数据时,RDMA模块就不需要通过与其相连的处理器接口从存储模块来获取,而直接从缓存单元中获取,避免了 RDMA模块与存储模块之间频繁的读写操作;同时,由于一个队列对的关联数据可以对应一个优先级别,这样RDMA模块根据优先级别缓存队列对的关联数据,在RDMA模块中缓存空间有限的情况下,优先将高优先级别的队列对的关联数据缓存。
【专利附图】

【附图说明】
[0048]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0049]图1是本发明实施例中通信设备的结构示意图;
[0050]图2是本发明实施例提供的一种信息缓存方法的流程图;
[0051]图3是本发明实施例中通信设备包括的RDMA模块中缓存单元的结构示意图;
[0052]图4是本发明实施例提供的另一种信息缓存方法的流程图;
[0053]图5是本发明应用实施例中通信设备内HCA卡的结构示意图;
[0054]图6是本发明实施例的通信设备中HCA卡包括的缓存管理模块执行的申请缓存单元操作的流程图;
[0055]图7是本发明实施例的通信设备中HCA卡包括的缓存管理模块执行的读取操作的流程图;
[0056]图8是本发明实施例的通信设备中HCA卡包括的缓存管理模块执行的写入操作的流程图;
[0057]图9是本发明实施例提供的一种信息缓存装置的结构示意图;
[0058]图10是本发明实施例提供的另一种信息缓存装置的结构示意图;
[0059]图11是本发明实施例提供的一种通信设备的结构示意图。
【具体实施方式】
[0060]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0061]本发明实施例提供一种信息缓存方法,主要是针对如图1所示的通信设备传输数据的过程中的信息缓存。在该通信设备中包括处理器(比如CPU)、存储模块(比如DMM)和RDMA模块(比如HCA卡),其中处理器主要负责将数据写入存储模块和将传输数据的任务写入到发送队列中等;而RDMA模块可以通过外部设备互连高速通道(Peripheral ComponentInterconnect Express, PCIE)与处理器连接,主要负责数据传输协议的控制处理比如解析数据报文、封装数据报文和应答数据报文等。通信设备之间可以通过RDMA模块之间的线缆互联,该线缆可以是以太网线或Infiniband网线,具体由RDMA模块的端口类型决定。
[0062]本实施例的方法是通信设备中的RDMA模块所执行的方法,流程图如图2所示,包括:
[0063]步骤101,获取通信设备传输数据的队列对(Queue Pair, QP)的关联数据,其中一个队列对可以包括发送队列(Send Queue, SQ)和接收队列(ReceiveQueue, RQ),队列对的关联数据是队列对的配置信息,可以包括在传输数据过程中需要用到的信息,比如队列上下文(Queue Pair Context, QPC)、完成队列上下文(Complete Queue Context, CQC)和数据的MTPT表等,在有些实施例中,该关联数据还可以包括共享接收队列(SRQ)等信息。
[0064]可以理解,如果需要传输数据,则通信设备中的处理器会先创建队列对,并设置队列对的关联数据,比如队列对上下文、数据的MTPT表和完成队列上下文等关联数据,在该MTPT表中储存有在通信设备的存储模块中储存数据的物理地址和逻辑地址的对应关系;然后处理器将传输的数据写入到存储模块中;再次,处理器将传输数据的类型(比如写操作)、传输数据的起始地址和传输数据的长度信息等内容写入到队列对的发送队列中。本实施例中,处理器在设置队列对的关联数据时,还需要在队列上下文中设置用于指示该队列对优先级的优先级信息,具体地,可以使用队列上下文的服务级别(servicelevel)字段或其它的自定义字段来指示该优先级信息。该优先级信息可以由用户根据需要进行设置,比如为用户关心的任务的队列对设置较高的优先级。需要说明的是,通信设备的处理器所创建的一个队列对的关联数据不会因传输数据的不同而不同,即在首次创建了队列对并初始化了该队列对的关联数据后,该队列对的关联数据在数据传输的过程中就不会改变,但是不同队列对的关联数据确不同。
[0065]当处理器创建了队列对后,通知RDMA模块有任务需要执行,并告诉RDMA模块需要执行任务对应的队列对的标识比如序号。这样RDMA模块就可以根据该队列对的标识,通过PCIE经过处理器向存储模块获取到该队列对的关联数据,进而从关联数据中得到待传输数据的物理地址;然后根据该物理地址通过处理器向存储模块获取到待传输数据后,将待传输数据封装成RDMA报文,通过该RDMA模块与其它通信设备的接口发送给RDMA报文。
[0066]其中RDMA模块可以一次性地获取到该队列对的所有关联数据,也可以获取到部分关联数据,同时可以按照如下步骤102和103,将这些关联数据储存到RDMA模块的缓存单元中。
[0067]步骤102,确定队列对的关联数据的优先级信息,该关联数据的优先级信息可以从获取到的关联数据中的队列上下文包括的服务级别字段或自定义字段中确定。
[0068]步骤103,将队列对的关联数据和关联数据的优先级信息对应地储存到RDMA模块的缓存单元中,具体地,RDMA模块可以先分配一个足够储存该队列对所有关联数据的缓存空间作为缓存单元,并可以设置该缓存单元包括标签(tag)域和内容域。
[0069]参考图3所示,标签域用于储存队列对的标识和关联数据的优先级信息,还可以储存标签域的标识和有效位等,其中标签域的标识可以唯一确定一个缓存单元,有效位可以指示该缓存单元是否处于空闲状态,如果该缓存单元中未储存数据或存储的数据处于无效状态,则说明该缓存单元空闲,即缓存单元未使用或使用后被无效,否则缓存单元处于非空闲状态;内容域用于储存队列对的关联数据,且RDMA模块可以为这些关联数据进行编号以指代具体是哪个关联数据,内容域的尺寸由关联数据的大小来决定,其中一种类型的关联数据可以称为该缓存单元的一个成员。进一步地,RDMA模块可以规定内容域中各个关联数据的存放顺序,这样在内容域中,将队列对的关联数据比如队列上下文、内存翻译保护表和完成队列上下文等就会按照预置的顺序储存,比如图3中按照队列上下文、完成队列上下文和内存翻译保护表的顺序存放。
[0070]可见,在本实施例中,当包括RDMA模块的通信设备在按照队列对的形式进行传输数据的过程中,在首次需要用到队列对的某一关联数据时,RDMA模块就将该队列对的关联数据获取到,并连同该关联数据的优先级信息一起对应地储存到RDMA模块的缓存单元中。这样在后续如果需要用到任一关联数据时,RDMA模块就不需要通过与其相连的处理器接口从存储模块来获取,而直接从缓存单元中获取,避免了 RDMA模块与存储模块之间频繁的读写操作;同时,由于一个队列对的关联数据可以对应一个优先级别,这样RDMA模块根据优先级别缓存队列对的关联数据,在RDMA模块中缓存空间有限的情况下,优先将高优先级别的队列对的关联数据缓存。
[0071]参考图4所示,在一个具体的实施例中,RDMA模块在执行上述步骤103时,具体可以通过如下的步骤来实现,具体包括:
[0072]步骤201,判断RDMA模块中是否有空闲的缓存单元,如果有,则执行步骤202 ;如果没有,继续执行步骤203中的判断。其中RDMA模块在判断是否有空闲的缓存单元时,具体可以查找缓存单元内标签域中的有效位,是否指示该缓存单元空闲。
[0073]步骤202,在RDMA模块中选择空闲的缓存单元作为第一缓存单元,并将队列对的关联数据和关联数据的优先级信息储存到第一缓存单元中。
[0074]步骤203,判断在非空闲的缓存单元中是否有优先级比上述步骤101中获取的队列对的关联数据的优先级低的缓存单元,如果有,则执行步骤204 ;如果没有,在非空闲的缓存单元的优先级与队列对的关联数据的优先级相同的情况下,RDMA模块会执行步骤205,而非空闲的缓存单元的优先级比队列对的关联数据的优先级都高的情况,则不能将缓存单元中的信息置换出去,此时,RDMA模块不会缓存该获取的关联数据。其中缓存单元的优先级与缓存单元中储存的关联数据的优先级一致。
[0075]步骤204,选择优先级比队列对的关联数据的优先级低的缓存单元作为第二缓存单元,并用队列对的关联数据和关联数据的优先级信息替换第二缓存单元中的信息。
[0076]步骤205,在非空闲的缓存单元中按照预置的策略选择缓存单元作为第三缓存单元,并用队列对的关联数据和关联数据的优先级信息替换第三缓存单元中的信息。其中预置的策略可以包括:最近最少使用算法(Least Recently Used, LRU)等算法。
[0077]可见,通过上述步骤201到205,RDMA模块可以保证优先级较高的队列对的关联数据的缓存。
[0078]需要说明的是,由于RDMA模块在首次分配缓存单元的资源时,是根据需要储存的队列对的关联数据的大小来分配的,则在RDMA模块中非空闲的缓存单元的粒度与该非空闲的缓存单元当前储存的关联数据的大小一致。因此,RDMA模块在上述步骤204和205时,需要为上述步骤101和102获取的信息选择一个存储空间足够大且不会浪费的缓存单元,即选择的缓存单元的大小要等于需要储存的关联数据和关联数据的优先级信息的总体大小,这样在替换信息时,上述队列对的关联数据和关联数据的优先级信息才能完全地储存到选择的缓存单元中。
[0079]另外需要说明的是,当上述队列对的关联数据和关联数据的优先级信息首次被储存到缓存单元后,在后续传输数据的过程中,其中某些关联数据可能会发生改变,则RDMA模块还可以对缓存单元中储存的关联数据进行更新,其中可以对某一个或多个关联数据进行修改。且当队列对注销时后,为了提高RDMA模块中缓存单元的利用率,RDMA模块可以将上述的缓存单元置为空闲的缓存单元,则该缓存单元中储存的数据无效,这样该缓存单元就可以储存任意优先级的队列对的关联数据,即该缓存单元中的数据可以被任意关联数据替换。其中,队列对的注销可以由通信设备中包括的RDMA模块的驱动下发注销命令,当RDMA模块接收到注销命令就可以对相应的队列对进行注销,而驱动模块发起的注销命令可以是由用户调用该RDMA模块的驱动执行注销队列对功能的操作等来触发
[0080]以下以一个具体的实施例来说明本发明实施例提供的信息缓存方法,主要应用于如图1所示的通信设备中,在通信设备中的处理器为CPU,RDMA模块为HCA卡,该HCA卡可以是一块现场可编程逻辑门阵列(Field Programmable Gate Array, FPGA)或固化的专用集成电路(Application Specific Integrated Circuit, ASIC), HCA 卡与 CPU 之间通过 PCIE接口连接。本实施例中的HCA卡的结构可以如图5所示,包括PCIE接口、协议弓I擎、收发接口、队列管理模块和缓存(cache)管理模块,其中:
[0081 ] (I )PCIE接口,是HCA卡与CPU的接口,可以通过CPU从存储模块中读取队列对的关联数据,且可以读写待传输数据。
[0082](2)协议引擎用于处理PCIE接口下发的任务和从线缆上接收过来的RDMA报文,并终结RDMA协议。
[0083]具体地,当协议引擎接收到PCIE接口下发的任务时,分析任务并从队列管理模块读取对应的队列对的关联数据,根据读取的关联数据向PCIE接口请求获取待传输数据,并按照RDMA协议构造头部,将待传输数据封装成完整的RDMA报文,传递给收发接口发送到线路上。
[0084]另一方面,当协议引擎接收到收发接口的RDMA报文时,会分析报文头部,根据头部标识的目的队列对的序号,从队列管理模块获取相应的关联数据,并将待传输数据通过PCIE接口写到通信设备的存储模块中;同时协议引擎会向收发接口回送应答报文,或者通过PCIE接口从存储模块中读取目标数据,然后构造读应答报文传递给收发接口发送到线缆上。
[0085](3)收发接口是与其它通信设备中HCA卡的连接接口,通过该收发接口实现协议引擎上的逻辑报文与符合线路电气规则的物理信号之间的转换,进而可以实现与其它通信设备之间的通信。
[0086](4)队列管理模块,用于从缓存管理模块中获取需要的队列对的关联数据,如果在HCA卡中不存在该关联数据,则需要通过协议引擎和PCIE接口从存储模块中获取这些关联数据,并向缓存模块申请通过缓存单元来储存获取到的关联数据。
[0087](5)缓存管理模块用来响应队列管理模块发出的申请、搜索、释放、读出、写入缓存单元的命令。
[0088]具体地,当队列管理模块未能从缓存管理模块读出需要的队列对的关联数据,则当通过PCIE接口从通信设备的存储模块中获取到关联数据后,可以向缓存管理模块发出申请缓存单元的命令;则缓存管理模块依据内部算法,确定是否允许缓存该关联数据,如果允许,则可以向队列管理模块返回缓存单元的标识比如序号;否则,返回非法值指示不允许缓存该关联数据。
[0089]当队列管理模块需要向协议引擎提供关联数据时,首先向缓存管理模块发出搜索命令,以确认是否存在相应的关联数据;另一种情况下,当队列管理模块接收到PCIE接口下发的注销队列对的操作时,会向缓存管理模块发出搜索命令,以确认是否存在该队列对对应的缓存单元。如果存在,缓存管理模块会返回储存关联数据的缓存单元的序号;不存在则返回无效序号。
[0090]当队列管理模块接收到注销队列对的操作,且已经搜索到存在该队列对对应的缓存单元时,队列管理模块会向缓存管理模块下发释放缓存单元的命令;当缓存单元中存在队列管理模块需要使用的队列对的关联数据时,队列管理模块可以向缓存管理模块下发读出缓存单元中信息的命令,以获得相应的关联数据;当缓存管理模块允许储存某个队列对对应的关联数据时,在给出缓存单元的序号后,队列管理模块可以通过缓存管理模块向给出序号的缓存单元写入关联数据。
[0091]当两个上述的通信设备(比如通信设备A和B)在传输数据时,具体可以通过如下方法来实现:
[0092]( I)通信设备A发送待传输数据
[0093]Al:通信设备A中的CPU将待传输数据写入到存储模块中,且将传输的任务写入到存储模块的发送队列中,并通过门铃通知HCA卡执行相应的任务。其中门铃可以为一个通知消息,在该通知消息中可以包括队列对的序号。
[0094]B1:HCA卡中的PCIE接口接收到该门铃传输给协议引擎,由协议引擎解析该门铃,得到其中包含的队列对的序号后,通过PCIE接口向通信设备A的存储模块获取该队列对的关联数据,可以包括如下至少一个信息:队列对的队列上下文,待传输数据的MTPT表和队列对的完成队列上下文等数据。
[0095]Cl:在执行步骤BI的同时,HCA卡中的协议引擎可以触发队列管理模块向缓存管理模块下发申请缓存单元的命令,并在命令中携带队列对的序号和优先级信息。如果在HCA卡的缓存单元中按照上述图3的结构储存关联数据,当缓存管理模块接收该命令后,可以按照如下的步骤来执行申请缓存单元的操作,流程图如图6所示,包括:
[0096]Cll:缓存管理模块根据接收命令中的队列对的序号再次确认在缓存单元中是否储存该队列对对应的关联数据,如果储存有,则向队列管理模块返回已存在的信息,并结束流程;如果未储存有,则执行步骤C12。
[0097]C12:判断是否有空闲的缓存单元,主要是遍历缓存单元中的有效位,该有效位用来指示缓存单元是否空闲,如果有,则向队列管理模块返回其中一个空闲的缓存单元的序号;如果没有,则执行步骤C13。
[0098]C13:判断是否存在优先级比上述步骤Cll中接收的命令中优先级信息所指示的优先级低的缓存单元,具体可以遍历缓存单元中的优先级位并与接收命令中的优先级信息进行比较,如果存在,则执行步骤C14;如果不存在,则向队列管理模块返回不允许缓存的信息。
[0099]C14:选择一个优先级较低的非空闲缓存单元,并向队列管理模块返回该缓存单元的序号,并允许将队列对的关联数据储存到该缓存单元中。
[0100]Dl:当队列管理模块接收到缓存单元的序号和允许将队列对的关联数据储存到该缓存的信息后,会向缓存管理单元发起写入缓存单元的请求,在请求中还可以携带队列对的序号、优先级信息、缓存单元的序号和需要储存的关联数据,这样当缓存模块单元接收到该请求后,就会将优先级信息、队列对的序号和关联数据按照上述图3所示的结构储存到相应的缓存单元中。
[0101]El:HCA卡中的协议引擎分析关联数据中的队列上下文,得到队列对中发送队列的物理地址,则协议引擎会根据该物理地址通过PCIE接口从通信设备A的存储模块中读取该发送队列的工作队列元素(Work Queue Element, WQE)后,分析该WQE,确定需要发送的待传输数据的源虚拟地址和长度。
[0102]Fl:协议引擎触发队列管理模块向缓存管理模块发起读取请求,并在读取请求中携带队列对的序号,和需要读取关联数据某一成员比如MTPT表的信息,当缓存管理模块接收该读取请求后,可以按照如下步骤执行读取操作,流程图如图7所示,包括:
[0103]Fll:缓存管理模块接收到该读取请求后,根据其中队列对的序号确定是否存在该队列对对应的缓存单元,如果不存在,则向队列管理模块返回不存在的信息,如果存在,则执行步骤F12。
[0104]F12:缓存管理模块根据队列对的序号找到对应的缓存单元,并根据读取请求中需要读取的成员信息,计算该成员在缓存单元中的偏移和读取长度,从而读取该成员。
[0105]F13:缓存管理模块将从缓存单元中读取的成员即MTPT表通过队列管理模块返回给协议引擎。
[0106]Gl:当协议引擎获取到MTPT表后,由于在MTPT表中记载着待传输数据的物理地址和虚拟地址的对应关系,则协议引擎会根据步骤El中得到的源虚拟地址及该MTPT表,确定待传输数据的物理地址;然后根据该物理地址和上述步骤El中得到的待传输数据的长度,通过PCIE接口从通信设备A的存储模块中获取到待传输数据。
[0107]Hl:协议引擎会将待传输数据封装成RDMA报文,并将该RDMA报文从收发接口传输到与通信设备B连接的线缆上,其中,在RDMA报文中可以包括如下的信息:传输的数据、操作类型(本实施例中为写操作)、待操作的目的队列对的序号以及目的虚拟地址。
[0108](2)通信设备B接收待传输数据
[0109]A2:通信设备B中HCA卡所包括的收发接口接收到RDMA报文后,传输给协议引擎分析该RDMA报文,得到传输的数据、操作类型(本实施例中为写操作)、待操作的目的队列对的序号以及目的虚拟地址。其中待操作的目的队列对与通信设备A中传输数据时的队列对相对应,通信设备A在传输数据时设置队列对时,可以设置通信设备A传输数据的发送队列和通信设备B接收数据的接收队列,则该待操作的目的队列对的信息即为接收队列的信肩、O
[0110]B2:协议引擎根据目的队列对的序号,触发队列管理模块向缓存管理模块发起读取该队列对的关联数据中某一成员比如MTPT表或多个成员,则缓存管理模块可以按照上述图7所示的方法将读取的MTPT表返回给协议引擎;如果在缓存单元中没有储存有该目的队列对的关联数据,则协议引擎会通过PCIE接口向通信设备B的存储模块获取目的队列对对应的关联数据,包括MTPT表。
[0111]需要说明的是,通信设备B中队列对的关联数据可以是在与通信设备A传输数据前设置的。
[0112]C2:协议引擎根据获取的MTPT表及目的虚拟地址,得到对应的物理地址,则通过PCIE接口将RDMA报文中传输的数据写入到该物理地址对应的存储模块中。
[0113]D2:协议引擎准备应答报文,并将该应答报文通过收发接口传输到与通信设备A连接的线缆上,在应答报文中可以包括如下信息:队列对的序号。
[0114](3)通信设备A接收应答报文
[0115]A3:通信设备A中HCA卡所包括的收发接口接收到RDMA报文后,传输给协议引擎分析该应答报文,得到队列对的序号。
[0116]B3:协议引擎可以触发队列管理模块向缓存管理模块发起获取该队列对对应的关联数据包括完成队列上下文等信息,当缓存管理模块在接收到读取该队列对的关联数据的请求后,可以按照上述图7所示的方法将读取的关联数据返回到协议引擎。
[0117]C3:协议引擎根据该完成队列上下文生成完成队列元素(CQE),同时可选地生成完成事件队列元素(Complete Event Queue Element, CEQE)和上报中断等,CPU通过轮训CQE或响应中断(当生成CEQE和中断时),得知有完成队列生成,由CPU来终结本次传输数据的任务。
[0118]D3,同时,在通信设备A和B之间进行多次数据传输后,协议引擎可以触发队列管理模块向缓存管理模块发起释放请求,在释放请求中携带队列对的序号,则缓存管理模块找到该队列对对应的缓存单元,进行队列对的注销,即将缓存单元中的有效位设置为无效,即将该缓存单元置为空闲的缓存单元。
[0119]需要说明的是,在上述两个通信设备在传输数据的过程中,如果在缓存单元中队列对的某些关联数据发生改变时,通信设备中HCA卡所包括的队列管理模块可以向缓存管理模块发起写入请求,并在写入请求中包括队列对的序号和需要写入的关联数据的信息;当缓存管理模块接收到该写入请求后,可以按照如下的步骤来执行写入操作,流程图如图8所示,包括:
[0120]A4:缓存管理模块根据接收的请求中的队列对的序号,查找是否有该队列对的序号对应的缓存单元存在,如果不存在,则向队列管理模块返回不存在的信息;如果存在,则执行步骤B4。
[0121]B4:根据该对列队的序号查找到对应的缓存单元,并根据写入请求中需要写入的关联数据的信息,计算该关联数据在缓存单元中的偏移和长度。
[0122]C4:根据步骤B4中计算的偏移,将需要写入的关联数据写入到缓存单元中相应的位置。
[0123]本发明实施例还提供一种信息缓存装置,该装置支持RDMA操作,结构示意图如图9所示,包括:
[0124]关联数据获取单元10,用于获取所述通信设备传输数据的队列对的关联数据。
[0125]优先级确定单元11,用于确定所述队列对的关联数据的优先级信息;该优先级确定单元11具体可以在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述优先级信息。
[0126]储存单元12,用于将所述关联数据获取单元10获取的队列对的关联数据和所述优先级确定单元11确定的关联数据的优先级信息对应地储存到所述信息缓存装置的缓存单元13中。
[0127]本实施例中,上述缓存单元可以包括标签域和内容域,标签域用于储存队列对的标识和关联数据的优先级信息,且还可以储存缓存单元标识和有效位;内容域用于储存队列对的关联数据。且关联数据中包括所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文等信息,并在内容域中,将队列上下文、内存翻译保护表和完成队列上下文等按照预置的顺序储存,比如按照图3所示的顺序存放。
[0128]可见,在本实施例的信息缓存装置中,在传输数据的过程中,如果在首次需要用到队列对的某些关联数据时,关联数据获取单元10会将通信设备传输数据的队列对的关联数据获取到,并由储存单元12连同该关联数据的优先级信息一起对应地储存到信息缓存装置的缓存单元13中。这样在后续如果需要用到该关联数据时,信息缓存装置就不需要通过与通信设备中处理器的接口从存储模块来获取,而直接从缓存单元中获取,避免信息缓存装置与存储模块之间频繁的读写操作;同时,由于一个队列对的关联数据可以对应一个优先级别,这样信息缓存装置就根据优先级别缓存队列对的关联数据,在信息缓存装置中缓存空间有限的情况下,优先将高优先级别的队列对的关联数据缓存。
[0129]参考图10所示,在一个具体的实施例中,信息缓存装置除了可以包括如图9所示的结构外,还可以包括注销单元14和更新单元15,且其中储存单元12还可以通过第一储存单元120、第二储存单元121和第三储存单元122来实现,具体地:
[0130]第一储存单元120,用于在所述信息缓存装置的缓存单元13中选择空闲的缓存单元作为第一缓存单元,并将所述关联数据获取单元10获取的队列对的关联数据和优先级确定单元11确定的关联数据的优先级信息储存到所述第一缓存单元中。其中缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。
[0131]第二储存单元121,用于如果所述信息缓存装置的缓存单元13中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元作为第二缓存单元,并用所述关联数据获取单元10获取的队列对的关联数据和优先级确定单元11确定的关联数据的优先级信息替换所述第二缓存单元中的信息。
[0132]第三储存单元122,用于如果存在非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元作为第三缓存单元,并用所述关联数据获取单元10获取的队列对的关联数据和优先级确定单元11确定的关联数据的优先级信息替换所述第三缓存单元中的信息。
[0133]注销单元14,用于当所述通信设备队列对注销时,将所述信息缓存装置中储存对应的队列对的关联数据的缓存单元置为空闲的缓存单元,可以储存任意优先级的队列对的关联数据。具体地,该注销单元14可以修改该缓存单元中的有效位,以指示该缓存单元是空闲的缓存单元。
[0134]更新单元15,用于对所述缓存单元13中的任一种或多种关联数据进行更新。
[0135]需要说明的是,由于信息缓存装置在首次分配缓存单元的资源时,是根据需要储存的队列对的关联数据的大小来分配的,则非空闲的缓存单元的粒度与该非空闲的缓存单元当前储存的关联数据的大小一致。因此,上述第二储存单元121和第三储存单元122在替换缓存单元的信息时,需要为关联数据获取单元10获取的关联数据选择一个存储空间足够大的缓存单元,即选择的缓存单元的大小等于需要储存的关联数据和关联数据的优先级信息的总体大小,这样在替换信息时,队列对的关联数据和关联数据的优先级信息才能完全地储存到选择的缓存单元中。
[0136]本发明实施例还提供一种通信设备,结构示意图如图11所示,包括分别挂接到处理器21上的存储器20、输入装置23和输出装置24和RDMA模块22,其中:
[0137]存储器20中用来储存从输入装置23输入的数据,且还可以储存处理器21处理数据的必要文件等信息。输入装置23和输出装置24是通信设备与其他设备通信的端口,还可以包括通信设备外接的设备比如显示器、键盘、鼠标和打印机等。
[0138]处理器21,可以用于将待传输的数据写入到存储器20中,并将传输的任务写入到发送队列中。
[0139]RDMA模块22可以与输出装置24连接,并与其它通信设备之间连接,用于获取所述通信设备传输数据的队列对的关联数据;确定所述队列对的关联数据的优先级信息;将所述队列对的关联数据和所关联数据的优先级信息对应地储存到该RDMA模块22的缓存单元中,其中,RDMA模块22可以在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述关联数据的优先级信息。这样在后续如果需要用到任一关联数据时,RDMA模块22就不需要通过与通信设备中处理器21的接口从存储器20来获取,而直接从缓存单元中获取,避免RDMA模块22与存储器20之间频繁的读写操作;同时,由于一个队列对的关联数据可以对应一个优先级别,这样RDMA模块22就根据优先级别缓存队列对的关联数据,在RDMA模块22中缓存空间有限的情况下,优先将高优先级别的队列对的关联数据缓存。
[0140]本实施例中,RDMA模块22中的缓存单元可以包括标签域和内容域,标签域用于储存队列对的标识和关联数据的优先级信息,且还可以储存缓存单元标识和有效位;内容域用于储存队列对的关联数据。且关联数据中包括所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文等信息,并在内容域中,将队列上下文、内存翻译保护表和完成队列上下文等按照预置的顺序储存,比如按照图3所示的顺序存放。
[0141]进一步地,RDMA模块22在储存关联数据和关联数据的优先级信息时,可以在RDMA模块22的缓存单元中选择空闲的缓存单元作为第一缓存单元,并将所述队列对的关联数据和关联数据的优先级信息储存到所述第一缓存单元中,其中缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。如果所述RDMA模块22的缓存单元中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元作为第二缓存单元,并用所述队列对的关联数据和关联数据的优先级信息替换所述第二缓存单元中的信息。如果所述非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元作为第三缓存单元,并用所述队列对的关联数据和关联数据的优先级信息替换所述第三缓存单元中的信肩、O
[0142]需要说明的是,由于RDMA模块22在首次分配缓存单元的资源时,是根据需要储存的队列对的关联数据的大小来分配的,则非空闲的缓存单元的大小与该非空闲的缓存单元当前储存的关联数据的大小一致。因此,RDMA模块22在替换缓存单元的信息时,需要为关联数据选择一个存储空间足够大的缓存单元,即选择的缓存单元的大小要大于或等于需要储存的关联数据和关联数据的优先级信息的总体大小,这样在替换信息时,队列对的关联数据和关联数据的优先级信息才能完全地储存到选择的缓存单元中。
[0143]另外需要说明的是,当上述队列对的关联数据和关联数据的优先级信息首次被储存到缓存单元后,在后续传输数据的过程中,其中某些关联数据可能会发生改变,则RDMA模块22还可以对缓存单元中储存的关联数据进行更新;且当队列对注销时,为了提高RDMA模块22中缓存单元的利用率,RDMA模块22可以将上述储存队列对的关联数据的缓存单元置为空闲的缓存单元,这样该缓存单元就可以储存任意优先级的队列对的关联数据。具体地,RDMA模块22可以修改该缓存单元中的有效位,以指示该缓存单元是空闲的缓存单元。
[0144]在具体的实施例中,RDMA模块22的结构可以如上述信息缓存装置或如图5所示的HCA卡的结构所示,在此不进行赘述。
[0145]综上所述,采用上述信息缓存方法,可以带来如下几点有益效果:
[0146]1、高优先级的队列对的关联数据优先储存在RDMA模块的缓存单元中,使得高优先级的任务总是可以在缓存单元中被命中,提高了高优先级任务的性能。从而提供给用户一种机制,可以设置自己关心的任务的队列对的优先级较高,尽量不被置换出来,提高用户关心的任务(或进程)的性能;
[0147]2、缓存单元中信息的命中率较稳定,不会因为传输场景不同而有较大的差异。
[0148]3、由于在不需要缓存单元中的关联数据时,可以将该缓存单元置为空闲,能储存其它任意优先级别的关联数据,使得能最大限度利用缓存空间的资源。
[0149]4、缓存单元的大小是对应的队列对的所有关联数据的大小,这样只储存了传输数据过程中的必要信息,而不会储存其它信息,符合RDMA传输的特点,有更高的效率。
[0150]5、缓存单元中储存的关联数据可以按照成员单位被单独读写,比如读取所有关联数据中的某一个或多个成员,满足RDMA传输的特点。
[0151]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的RDMA硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等;而相关的RDMA硬件可以通过现场可编程逻辑阵列(FPGA)或特定应用集成电路(ASIC)等来实现。
[0152]以上对本发明实施例所提供的信息缓存方法、装置和通信设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种信息缓存方法,其特征在于,应用于通信设备包括的远端数据直接存取RDMA模块中,所述方法包括: 获取所述通信设备传输数据的队列对的关联数据; 确定所述队列对的关联数据的优先级信息; 将所述队列对的关联数据和所述关联数据的优先级信息对应地储存到所述RDMA模块的缓存单元中。
2.如权利要求1所述的方法,其特征在于,所述确定所述队列对的关联数据的优先级信息,具体包括: 在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述关联数据的优先级信息。
3.如权利要求1所述的方法,其特征在于,所述将所述队列对的关联数据和所述关联数据的优先级信息对应地储存到所述RDMA模块的缓存单元中,具体包括: 在所述RDMA模块中选择空闲的缓存单元,作为第一缓存单元,并将所述队列对的关联数据和所述关联数据的优先级信息储存到所述第一缓存单元中; 如果所述RDMA模块中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元,作为第二缓存单元,并用所述队列对的关联数据和所述关联数据的优 先级信息替换所述第二缓存单元中的信息; 如果存在非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元,作为第三缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第三缓存单元中的信息; 其中,缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。
4.如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括: 当所述队列对注销时,将所述RDMA模块中的所述缓存单元置为空闲的缓存单元。
5.如权利要求1至4任一项所述的方法,其特征在于, 所述缓存单元包括标签域和内容域,所述标签域用于储存所述队列对的标识和所述关联数据的优先级信息;所述内容域用于储存所述队列对的关联数据。
6.如权利要求5所述的方法,其特征在于, 所述关联数据中包括如下任一个或多个信息:所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文; 在所述内容域中,将所述队列上下文、内存翻译保护表和完成队列上下文按照预置的顺序储存。
7.如权利要求1至6任一项所述的方法,其特征在于,所述缓存单元的关联数据包括一种或多种,所述方法还包括: 对所述缓存单元中的任一种或多种关联数据进行更新。
8.一种信息缓存装置,其特征在于,包括: 关联数据获取单元,用于获取所述通信设备传输数据的队列对的关联数据; 优先级确定单元,用于确定所述队列对的关联数据的优先级信息; 储存单元,用于将所述关联数据获取单元获取的队列对的关联数据和所述优先级确定单元确定的关联数据的优先级信息对应地储存到所述信息缓存装置的缓存单元中。
9.如权利要求8所述的装置,其特征在于,所述优先级确定单元,具体用于在所述队列对的队列对上下文的服务级别字段或自定义字段中确定所述关联数据的优先级信息。
10.如权利要求8所述的装置,其特征在于,所述储存单元包括: 第一储存单元,用于在所述信息缓存装置中选择空闲的缓存单元作为第一缓存单元,并将所述队列对的关联数据和所述关联数据的优先级信息储存到所述第一缓存单元中;第二储存单元,用于如果所述信息缓存装置中没有空闲的缓存单元,在所述非空闲的缓存单元中选择优先级比所述队列对的关联数据的优先级低的缓存单元,作为第二缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第二缓存单元中的信息; 第三储存单元,用于如果存在非空闲的缓存单元的优先级与所述队列对的关联数据的优先级相同,则在所述非空闲的缓存单元中按照预置的策略选择缓存单元,作为第三缓存单元,并用所述队列对的关联数据和所述关联数据的优先级信息替换所述第三缓存单元中的信息; 其中,缓存单元的优先级与所述缓存单元中储存的关联数据的优先级一致。
11.如权利要求8至10任一项所述的装置,其特征在于,还包括: 注销单元,用于当所述队列对注销时,将所述信息缓存装置中的缓存单元置为空闲的缓存单元。
12.如权利要求8至11任一项所述的装置,其特征在于, 所述缓存单元包括标签域和内容域,所述标签域用于储存所述队列对的标识和所述关联数据的优先级信息;所述内容域用于储存所述队列对的关联数据。
13.如权利要求12所述的装置,其特征在于, 所述关联数据中包括至少一个如下的信息:所述队列对的队列上下文、传输数据的内存翻译保护表和所述队列对的完成队列上下文; 在所述内容域中,将所述队列上下文、内存翻译保护表和完成队列上下文按照预置的顺序储存。
14.如权利要求8至13任一项所述的装置,其特征在于,所述缓存单元的关联数据包括一种或多种,所述装置还包括: 更新单元,用于对所述缓存单元中的任一种或多种关联数据进行更新。
15.一种通信设备,其特征在于,包括处理器、远端数据直接存取RDMA模块和存储模块; 所述RDMA模块与所述处理器连接,是如权利要求8至14中任一项所述的信息缓存装置。
【文档编号】G06F17/30GK103647807SQ201310617002
【公开日】2014年3月19日 申请日期:2013年11月27日 优先权日:2013年11月27日
【发明者】彭胜勇, 程子明, 石仔良 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1