CN111949568B - 一种报文处理方法、装置及网络芯片 - Google Patents
一种报文处理方法、装置及网络芯片 Download PDFInfo
- Publication number
- CN111949568B CN111949568B CN202010758690.2A CN202010758690A CN111949568B CN 111949568 B CN111949568 B CN 111949568B CN 202010758690 A CN202010758690 A CN 202010758690A CN 111949568 B CN111949568 B CN 111949568B
- Authority
- CN
- China
- Prior art keywords
- read request
- message
- identifier
- read
- request message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文处理方法、装置及网络芯片,上述方法包括:针对接收到的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,将标识符写入该读请求报文的读请求信息中并缓存到第一缓存中;根据读请求信息生成读请求执行指令,执行读请求执行指令获得读请求数据并缓存至第二缓存中;将读请求数据的缓存地址和上述标识符之间的关联关系写入关联关系列表中;从第一缓存中读取当前读请求信息并解析得到标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;基于获取到的缓存地址从第二缓存中提取读请求数据,根据当前读请求信息和提取的读请求数据生成读响应报文。至此,提高了报文的并行处理效率。
Description
技术领域
本申请涉及网络处理器技术领域,尤其涉及一种报文处理方法、装置及网络芯片。
背景技术
21世纪是以网络为核心的信息化、数字化的时代,网络以其连通性和资源共享性成为当今发展知识经济的基础和构造信息社会的命脉。在计算机网络系统中,其连通性与资源共享性是建立在数据交换的基础之上的,网络芯片是一个提供在通信网络中发送和接收数据的微处理器,是为了适应现代高速网络特点的需要,提供网络服务质量控制,发展新的网络管理模式以及快速响应市场对新的网络功能的需求而推出的一项新的芯片技术。
随着网络业务种类和数量的不断增加,网络芯片对报文的传输和处理速度要求越来越快,除了在频率允许的范围内提高工作频率,提高报文的传输效率也是一种提升网络数据传输性能的重要手段。报文数据的一般处理过程可以如图1所示:1、接收报文请求数据;2、提取包头信息,解析待执行指令(写操作或者读操作);3、执行操作指令;4、返回报文响应数据。包头信息不会参与后续的数据传输中,将其转化为指令信息。
为了提升报文读写操作执行效率,一般会在上述第1、第3或第4步的传输阶段进行处理,以期达到提升性能的目的。例如,较为普遍的处理方式:在报文接收阶段建立缓存队列,对进入队列的请求按照一定的要求进行排序,排序完成的请求会遵循先入先出的原则,报文的读写操作按顺序执行,同一类型操作的响应也是按顺序返回的。该方案从请求与响应的顺序的一致性上,实现了响应与数据的正确匹配,确保了响应信息的正确性。然而在计算机系统中,为了提高指令的执行效率,指令处理阶段并不是按照顺序执行的,在多数情况下指令执行模块会根据不同请求的特征进行并行处理。但是按照前述方案的执行要求,同一操作类型的指令需要顺序执行,这样会浪费指令处理阶段并行处理的效率。
因此,如何提高报文的处理效率是值得考虑的技术问题之一。
发明内容
有鉴于此,本申请提供一种报文处理方法、装置及网络芯片,用以提高报文的处理效率。
具体地,本申请是通过如下技术方案实现的:
根据本申请的第一方面,提供一种报文处理方法,应用于网络芯片中,所述方法,包括:
接收多个请求报文;
针对所述多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中,其中,不同的读请求报文分配的标识符不同;
根据所述读请求信息生成读请求执行指令,并执行所述读请求执行指令,获得该读请求报文的读请求数据并缓存所述读请求数据至第二缓存中;
将所述读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中;
从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;
基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
根据本申请的第二方面,提供一种报文处理装置设置于网络芯片中,所述装置,包括:
报文接收模块,用于接收多个请求报文;
报文乱序处理模块,用于针对所述多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中,其中,不同的读请求报文分配的标识符不同;
指令执行模块,用于根据所述读请求信息生成读请求执行指令,并执行所述读请求执行指令,获得该读请求报文的读请求数据并缓存所述读请求数据至第二缓存中;将所述读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中;
响应报文生成模块,用于从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
根据本申请的第三方面,提供一种网络芯片,包括处理器和机器可读存储介质,机器可读存储介质存储有能够被处理器执行的计算机程序,处理器被计算机程序促使执行本申请实施例第一方面所提供的方法。
根据本申请的第四方面,提供一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例第一方面所提供的方法。
本申请实施例的有益效果:
本申请实施例提供的报文处理方法,通过为每个读请求报文分配标识符,利用分配的标识符来实现读请求报文的整个处理过程的监控,以及正确生成该读请求报文的读响应报文并反馈给客户端,使得各读请求报文之间的报文处理过程无需按严格的顺序执行,请求处理和指令执行之间也无严格的执行顺序,但通过标识符能够保证获得的读请求数据和读请求信息所要求的数据的一致性,不仅有效实现了报文的并行处理,而且提高了报文处理的效率。
附图说明
图1是现有技术提供的一种报文处理过程的逻辑示意图;
图2是本申请实施例提供的一种报文处理方法的流程图;
图3是本申请实施例提供的一种报文处理这种的框图;
图4是本申请实施例提供的基于报文处理装置实施的报文处理方法的处理逻辑示意图;
图5是本申请实施例提供的网络芯片的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相对应的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面对本申请提供的报文处理方法进行详细地说明。
参见图2,图2是本申请实施例提供的一种报文处理方法的流程图,应用于网络芯片中,网络芯片在实施上述报文处理方法时,可以按照如下所示步骤实施:
S201、接收多个请求报文。
具体地,可以接收多个客户端client发送的请求报文,也可以接收一个客户端发送的多个请求报文。可选地,网络芯片可以提供多个缓存队列,然后将接收到的请求报文进行解析,以解析出请求报文的操作类型和业务类型,然后将不同操作类型和业务类型的请求报文按照设定的顺序进行排序,设定的顺序可以根据实际情况而定。例如,配置缓存队列与业务类型的对应关系,如配置若干个缓存队列专门用于存储一种业务类型的请求报文,然后再此基础上对同一业务类型的请求报文按照操作类型排序缓存。上述操作类型可以但不限于包括读操作类型和写操作类型,相应地,请求报文就分为读请求报文和写请求报文。
S202、针对多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中。
本步骤中,不同的读请求报文分配的标识符不同。
具体地,在对请求报文进行处理时,可以从缓存队列中提取请求报文,可以跟该请求报文的操作类型来判定该请求报文是读请求报文还是写请求报文。当请求报文为读请求报文时,由于读请求报文需要向客户端返回读请求数据,操作过程比较复杂,而写请求报文只需将写请求报文中的数据写入到网络芯片的具体位置处,不需要从网络芯片中提取任何数据,操作比较简单。因此,基于上述考虑,为了保证报文的处理效率,可以为读请求报文分配标识符,利用该标识符来唯一标识该读请求报文的后续处理过程。
具体地,可以将分配的标识符写入读请求报文的读请求信息中,该读请求信息可以为该读请求报文的报文头,即,将分配的标识符写入该读请求报文的报文头部。然后将写入标识符的读请求信息缓存到第一缓存中,以备生成读响应数据。
由于请求报文处理过程为并行处理过程,可能由不同的功能模块来执行请求报文的不同操作,这样当某模块为读请求报文分配标识符后,该读请求报文的处理操作就可以转交其他模块来处理,该模块还可以继续从缓存队列中读取新的请求报文,当读取新的请求报文为读请求报文时,再次执行分配标识符的操作,然后再转交其他功能模块来执行读请求报文的其他操作。这样一来,通过为读请求报文分配标识符,这样既能够基于该标识符检测到对应读请求报文的实际处理过程,而且也不会影响其他读请求报文的操作,不仅实现了报文的并行处理,提高了报文的处理效率,而且也保证了报文处理过程与读请求报文的数据一致性。
可选地,本实施例中可以分配的标识符的个数可以根据实际报文处理过程相关,若网络芯片的处理性能比较高,则可以配置较多的标识符;若网络芯片的处理性能一般,则可以分配较少数量的标识符。一般情况下,标识符的个数可以为32或64个,所有标识符的取值互不相同。
可选地,实施步骤S202中为该读请求报文分配标识符时,可以按照下述过程实施:确定当前已分配出的标识符的已分配数量;当所述已分配数量小于设定数量时,为该读请求报文分配标识符。需要说明的是,该设定数量小于等于标识符的总数量。
具体地,为了方便管理标识符,可以为每个标识符配置一个状态位图信号,该状态位图信号用于指示其对应的标识符的占用情况,如,针对任一标识符,若将该标识符分配给读请求报文,则可以将该标识符对应的状态位图信号配置为“1”,表明该标识符处于有效,已被占用;而当该标识符未被分配给读请求报文时,则该标识符对应的状态位图信号取值为“0”,或者当释放该读请求报文的标识符后,将该标识符对应的状态位图信号配置为“0”,表明该标识符处于释放状态,没有被占用。当然还可以有其他的取值标识方法,本申请对此不进行限定,为了后续描述方便,以状态位图信号取值为1表示其对应的标识符被占用,取值为0表示其对应的标识符没有被占用为例进行说明。
基于此,可以通过各个标识符对应的状态位图信号的取值来确定当前被占用的标识符的数量,也即,已分配出的标识符的数量(已分配数量)。具体来说,以状态位图信号取值为1来表示标识符被占用为例进行说明,可以通过遍历状态位图信号的取值来实现,即,统计取值为1的状态位图信号的数量,该数量即为已分配数量。然后判断上述已分配数量是否大于设定数量,当不超过设定数量时,则表明当前有剩余没有被占用的标识符,则可以为读请求报文分配标识符,当超过设定数量时,表明所有标识符都已被占用,则无法为该读请求报文分配标识符,则需要等待,即暂时不对该读请求报文执行后续操作,然后将其作为反压或监测信号使用。
具体地,所有标识符可能有大小区分,则在分配标识符时,可以按照从低到高的顺序查询当前可用的标识符,然后将首个查找到的标识符确定为该读请求报文的标识符,同时,将该标识符的状态位图信号的取值配置为1,表征该标识符已被占用,然后停止查找。
此外,当网络芯片为读请求报文执行步骤S202后,则可以继续从报文队列中提取请求报文,然后当确认最新提取的请求报文为读请求报文时,继续执行步骤S202。
S203、根据读请求信息生成读请求执行指令,并执行读请求执行指令,获得该读请求报文的读请求数据并缓存读请求数据至第二缓存中。
具体地,读请求报文是为了能够获取到需要的请求数据,故读请求报文的读请求信息中可能会携带期望读取的数据的相关信息,故基于该读请求信息生成读请求执行指令,由于读请求信息携带了读请求报文的标识符,故本步骤生成的读请求指令也会携带读请求报文的标识符。基于此,在执行读请求执行指令后,会从网络芯片的缓存中读取读请求报文所需的读请求数据,或者通过其他方式获得读取读请求报文所需的读请求数据。然后将获得的读请求数据写入到第二缓存中的具体位置。
需要说明的是,本申请实施例中的第一缓存和第二缓存可以为独立的两个缓存,也可以为一个缓存中的两个缓存区域,只要能够区分读请求信息和读请求数据的缓存方式都可以应用到本申请中。
S204、将读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中。
具体地,为了实现并行处理,不同模块之间互不耽误,可以将步骤S203中获得的读请求数据缓存到第二缓存的缓存地址和其对应的读请求报文的标识符进行关联,然后将关联关系更新到关联关系列表中。可选地,所述关联关系列表可以为链表形式列表。
可选地,可能会存在网络芯片处理速度很快的情况,则当将读请求数据缓存到第二缓存后,基于其缓存地址和标识符更新关联关系列表后,网络芯片可以检测到关联关系列表中有更新,则基于新写入的缓存地址从第二缓存中提取读请求数据,然后当从第一缓存中读取当前读请求信息后,若确定提取的读请求数据的长度与当前读请求信息的长度相同时,则将该读请求数据存储在先入先出队列(FIFO)中,然后根据存储在FIFO中的读请求数据和当前读请求信息生成读响应报文,该读响应报文的报文头为上述当前读请求信息,读响应报文中携带上述读请求数据,则不再执行步骤S205~S206,将读响应报文反馈给读请求报文的请求客户端。
S205、从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址。
具体地,第一缓存中可能包括多个读请求报文的读请求信息,网络芯片需要逐个来处理,则可以基于先入先出原则,提取出当前读请求信息,当网络芯片从第一缓存中读取到当前读请求信息后,由于当前读请求信息包括该读请求信息对应的读请求报文的标识符,则可以基于当前读请求信息携带的标识符,从关联关系列表中提取携带的标识符对应的缓存地址,该缓存地址为携带的标识符对应的读请求报文所需的读请求数据在第二缓存中的存储地址。
S206、基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
本步骤中,当获取到缓存地址后,可以从第二缓存中提取该缓存地址处存储的读请求数据,然后根据当前读请求信息和基于当前读请求信息提取的读请求数据生成读响应报文,然后可以将该读响应报文反馈给读请求报文的请求客户端。具体来说,将从缓存地址提取的读请求数据存储在FIFO中,然后基于当前读请求信息和存储在FIFO中的读请求数据生成读响应报文,该读响应报文的报文头为上述当前读请求信息,读响应报文中携带上述读请求数据。
这样,可以保证网络芯片中多个请求报文的并行处理,且通过为读请求报文分配标识符,有效保证了多个请求报文返回的请求响应报文与请求报文的完全匹配,大大提高了报文的处理效率。
可选地,本申请提供的报文处理方法,还可以包括:
若该请求报文为写请求报文,则根据写请求报文中的写请求信息生成写响应报文。
具体地,若确定请求报文为写请求报文时,则可以解析出该写请求报文的写请求信息,然后缓存到第三缓存中。
具体来说,由于写请求报文不需要从网络芯片中反馈响应数据,即不需要从网络芯片的缓存中提取任何数据,一般是将写请求报文中的数据写入网络芯片的缓存中,这样一般理解为当接收到写请求报文时,就会执行写请求报文中的写操作,故在生成写响应报文时,只需从第三缓存中获取当前写请求信息,然后根据该写请求信息直接生成写响应报文即可,然后将写响应报文反馈给写请求报文的请求客户端。
基于上述任一实施例,本实施例提供的报文处理方法,还包括:
在发送响应报文时,优先发送读响应报文。
具体地,由于读响应报文包括需要读请求数据,该读请求数据为客户端所需要的数据,而写响应报文一般不携带数据,故与读响应报文相比,读响应报文的优先级要高于写响应报文的优先级,因此,优先向客户端反馈读响应报文,以便客户端基于读响应报文中的读请求数据执行所需要的操作,以提升客户端的业务完成速度。
基于上述任一实施例,本实施例中的读请求报文的标识符的状态由状态位图信号监控;在此基础上,本实施例提供的报文处理方法,还包括:
当将生成的读响应报文对外发送后,释放该读响应报文对应的读请求报文的标识符;并更改释放的标识符对应的状态位图信号。
具体地,当网络芯片生成读响应报文后,会将读响应报文反馈给客户端,当反馈给客户端后,表明读响应报文的读请求报文的处理过程执行完成,则为该读响应报文分配的标识符已不再起作用,故需要释放该读请求报文的标识符,即,将该读请求报文的标识符的状态位图信号的取值配置为0,则该标识符就可以为后续的读请求报文使用。
基于上述实施例,用于分配标识符的硬件电路的使能信号的位宽与用于释放标识符的硬件电路的使能信号的位宽不同。
具体地,在释放标识符时需要对该标识符对应的状态位图信号的取值进行更新,而分配标识符时,同样需要对分配的标识符对应的状态位图信号的取值进行更新,但是在硬件实现时,可能会同时出现分配标识符和释放标识符的刷新请求,二者的刷新请求可能还会出现跨时钟域的情况。为了避免这一情况的发生,本实施例提出,信号时钟同步后,可以将用于释放标识符的硬件电路的使能信号和用于分配标识符的硬件电路的使能信号设置为不同的位宽,这样一来,即使出现同一时刻刷新的情况,但由于持续时间不一样,使得二者不会出现同时刷新的情况,进而避免一个标识符被两种硬件电路同时操作的情况发生。
通过实施本申请提供的报文处理方法,通过为每个读请求报文分配标识符来监控该读请求报文的处理过程,针对任一读请求报文,该读请求报文读请求执行操作、读请求数据获得和读响应报文生成过程互不影响,只需通过标识符来监控该读请求报文的整个处理过程,不仅能够正确生成该读请求报文的读响应报文,而且可以并行处理多个读请求报文,进而实现了请求报文的并行处理,提高了请求报文的处理效率。
基于同一发明构思,本申请还提供了与上述报文处理方法对应的报文处理装置。该报文处理装置的实施具体可以参考上述对报文处理方法的描述,此处不再一一论述。
参见图3,图3是本申请实施例提供的一种报文处理装置,设置于网络芯片中,该报文处理装置,包括:
报文接收模块301,用于接收多个请求报文;
报文乱序处理模块302,用于针对所述多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中,其中,不同的读请求报文分配的标识符不同;
指令执行模块303,用于根据所述读请求信息生成读请求执行指令,并执行所述读请求执行指令,获得该读请求报文的读请求数据并缓存所述读请求数据至第二缓存中;将所述读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中;
响应报文生成模块304,用于从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
可选地,上述响应报文生成模块304,还用于若该请求报文为写请求报文,则根据所述写请求报文中的写请求信息生成写响应报文。
可选地,本实施例中的读请求报文的标识符的状态由状态位图信号监控;
上述报文乱序处理模块302,还用于当所述响应报文生成模块将生成的读响应报文对外反馈后,通过状态位图信号释放该读响应报文对应的读请求报文的标识符。
可选地,本实施例中,用于分配标识符的硬件电路的使能信号的位宽与用于释放标识符的硬件电路的使能信号的位宽不同。
可选地,上述报文乱序处理模块302,具体用于确定当前已分配出的标识符的已分配数量;当所述已分配数量小于设定数量时,为该读请求报文分配标识符。
可选地,本实施例提供的报文处理装置,还包括:
发送模块305,用于在发送响应报文时,优先发送读响应报文。
为了更好地理解本申请提供的报文处理方法,请参考图4所示的报文处理逻辑为例进行说明,报文接收模块301在接收到多个请求报文后,会将请求报文逐个进行解析处理,然后按照业务类型和操作类型对请求报文进行排序缓存至对应的缓存队列中,然后报文乱序处理模块302从缓存队列中提取请求报文,然后判断该请求报文的操作类型,当确定提取的请求报文为读请求报文时,则为该读请求报文分配唯一的标识符,然后将分配的标识符写入到该读请求报文的读请求信息中,然后报文乱序处理模块302一方面将该读请求信息缓存到第一缓存中,以为响应生成模块304生成读响应报文做准备,后续介绍之;另一方面,报文乱序处理模块302将该读请求信息发送给指令执行模块303,然后报文乱序处理模块302就可以提取下一个请求报文,然后再次执行上述过程,依次类推,这样就可以实现请求报文的并行处理,大大提高了报文的处理效率。
可选地,当报文乱序处理模块302在为读请求报文分配标识符时,可以确定当前已分配出的标识符的已分配数量,当该已分配数量小于设定数量时,才会为该读请求报文分配标识符,而当已分配数量达到设定数量时,则暂不为该读请求报文分配标识符,也不会将该读请求报文的读请求信息发送给指令执行模块303,也不将该读请求报文的读请求信息进行缓存处理,将其作为反压或监测信号告知报文接收模块301。当生成读响应报文时,报文乱序处理模块302则确认可以释放为该读响应报文对应的读请求报文分配的标识符时,通过释放该标识符,可以再次确定当前已分配数量,仅当已分配数量小于设定数量时,才会分配标识符等执行后续操作。
可选地,报文乱序处理模块302在分配标识符时,可以按照从低到高的顺序查询当前可使用的标识符,即,优先使用取值较低的标识符,一旦有处于释放状态的标识符,则使用该标识符作为该读请求报文的标识符,同时将该标识符对应的状态位图信号的取值置为1,然后停止查询,一方面标识符随读请求信息缓存到第一缓存中,供响应报文生成模块304使用,另一方面将该标识符随读请求信息生成读请求指令,以便请求执行模块303执行后续操作。
此外,指令执行模块303,在接收到读请求报文的读请求信息(携带标识符)后,会基于该读请求信息生成读请求执行指令,然后执行该读请求执行指令,获得该读请求报文所请求的读请求数据,然后将获得的读请求数据缓存到第二缓存中,参考图4所示,与此同时,还会将读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中。当上述指令执行模块303针对上述读请求报文执行完上述操作后,还会接收新的读请求报文的读请求信息,然后继续针对新的读请求报文执行上述操作,这样,指令执行模块303与乱序处理模块302的操作相互独立,可以实现报文的并行处理。
而响应报文生成模块304可以从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文;然后就可以读取下一个读请求信息,并再次执行上述过程。实现指令执行模块303、乱序处理模块302、响应报文生成模块304的操作相互独立,同时也实现了报文的并行处理。
需要说明的是,标识符的生命周期仅存在于报文乱序处理模块302、指令执行模块303与响应报文生成模块304中,即,在读请求报文的处理内部,不会对外显示。
在此基础上,当发送模块305将读请求报文的读响应报文发送给客户端后,会向报文乱序处理模块302发送指示信息,例如,该指示信息可以携带标识符,以指示报文乱序处理模块302释放上述读请求报文分配的标识符(携带的标识符),即该标识符对应的状态位图信号的取值配置为0,从而完成该标识符的释放操作。由此完成了读请求报文的并行处理过程。
然而,当报文乱序处理模块302确定提取的请求报文为写请求报文时,则解析得到该写请求报文的写请求信息,然后直接将该写请求报文的写请求信息缓存到第三缓存中;这样,响应报文生成模块304可以从第三缓存中提取当前写请求信息,然后基于该写请求信息直接生成写响应报文。同时,报文乱序处理模块302还可以将该写请求信息发送给指令执行模块303,以使指令执行模块303根据该写请求信息生成写请求指令,然后执行该写请求指令,将写请求报文的具体数据写入到网络芯片中。由此,完成了写请求报文的并行处理过程。
进一步地,标识符的生成、释放和更新机制,能够实现监测指令执行模块303并行执行的结果,能够评估流水线pipeline操作的冗余度,便于升级和维护。随着5G时代的来临,网络数据传输速度要求越来越快,对于网络芯片而言,将会不断面临升级和维护的压力,随之而来的,将会是不断提高指令执行模块303的处理效率。指令执行模块303达到当前最大执行效率时,可以通过监测标识符评估pipeline操作的冗余度,便于当指令执行模块303由于频率提升或者有更优良的执行算法需要升级时,能够通过标识符的最大值来评估升级需要的静态随机存取存储器SRAM等存储设备规格,pipeline操作阈值等信息,能够在升级时获得更多的先验知识,便于升级维护,并对芯片面积预估也具有指导意义。
此外,读请求的乱序执行和有序匹配机制,能够提升指令执行模块303的处理效率,进而提升了请求报文读写操作的执行效率。在指令执行模块303,读请求报文不再按照既定的顺序执行,指令执行模块303也不必等待上一个读请求报文执行完再去执行下一读请求报文,返回的数据也不再保持顺序,读数据完成后立马返回,这样会大幅缩短请求在执行模块的等待时间。响应报文输出模块304利用读请求信息恢复入队顺序,读响应报文按照入队顺序出队,从对外接口上来看,仍然保持了用户自定义的排序;但从内部逻辑上来看,虽然出队顺序和入队顺序是一致的,但是读响应报文生成的效率提高了,当网络芯片处理连续请求报文的情况下,单位时间内产生的响应报文的数量增加了,这极大地提升了报文的传输性能。
再者,优先生成读响应报文机制,保证读操作能够快速完成。从方案执行上来讲,写响应报文的生成机理是比较简单的,不需要指令执行模块反馈响应数据,这是由写操作自身特点决定的,写响应报文的有效信息只存在写请求信息(报文头)之中,与指令执行模块不必产生数据交互。而针对读请求报文,必须等到有效数据返回才能生成读响应报文,这也是读操作的最终目的,获取有效数据,是必须需要指令执行模块反馈读请求数据。相比之下,不经过指令执行模块直接返回写响应报文能够提升写请求报文的执行效率,换句话说,执行一次写操作到写响应报文产生需要的时间,和执行一次读操作到读响应报文产生的时间相比,写操作是有效率优势的。因此,当进行大量读写操作时,即接收到大量读请求报文和写请求报文时,建立读响应报文优先生成的机制,一方面是缩短读操作与写操作执行时间的差距,另一方面还有满足读操作本身需快速获取有效数据的特点,为客户端提供所需要的数据。
本申请实施例提供了一种网络芯片,如图5所示,包括处理器501和机器可读存储介质502,机器可读存储介质502存储有能够被处理器501执行的计算机程序,处理器501被计算机程序促使执行本申请实施例所提供的报文处理方法。
上述计算机可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-volatile Memory,非易失性存储器),例如至少一个磁盘存储器。可选的,计算机可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
另外,本申请实施例提供了一种机器可读存储介质,机器可读存储介质存储有计算机程序,在被处理器调用和执行时,计算机程序促使处理器执行本申请实施例所提供的报文处理方法。
对于网络芯片以及机器可读存储介质实施例而言,由于其涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种报文处理方法,其特征在于,应用于网络芯片中,所述方法,包括:
接收多个请求报文;
针对所述多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中,其中,不同的读请求报文分配的标识符不同;
根据所述多个请求报文的读请求信息生成多个读请求执行指令,并行执行所述多个读请求执行指令,获得每个读请求报文的读请求数据并缓存所述读请求数据至第二缓存中;
将所述读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中;
从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;
基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
2.根据权利要求1所述的方法,其特征在于,若该请求报文为写请求报文,则根据所述写请求报文中的写请求信息生成写响应报文。
3.根据权利要求1所述的方法,其特征在于,所述读请求报文的标识符的状态由状态位图信号监控;所述方法,还包括:
当将生成的读响应报文对外发送后,释放该读响应报文对应的读请求报文的标识符;并更改释放的标识符对应的状态位图信号。
4.根据权利要求3所述的方法,其特征在于,用于分配标识符的硬件电路的使能信号的位宽与用于释放标识符的硬件电路的使能信号的位宽不同。
5.根据权利要求1所述的方法,其特征在于,为该读请求报文分配标识符,包括
确定当前已分配出的标识符的已分配数量;
当所述已分配数量小于设定数量时,为该读请求报文分配标识符。
6.根据权利要求2所述的方法,其特征在于,还包括:
在发送响应报文时,优先发送读响应报文。
7.一种报文处理装置,其特征在于,设置于网络芯片中,所述装置,包括:
报文接收模块,用于接收多个请求报文;
报文乱序处理模块,用于针对所述多个请求报文中的每个请求报文,若该请求报文为读请求报文,则为该读请求报文分配标识符,并将分配的标识符写入该读请求报文的读请求信息中并将读请求信息缓存到第一缓存中,其中,不同的读请求报文分配的标识符不同;
指令执行模块,用于根据所述多个请求报文的读请求信息生成多个读请求执行指令,并行执行所述多个读请求执行指令,获得每个读请求报文的读请求数据并缓存所述读请求数据至第二缓存中;将所述读请求数据的缓存地址和该读请求报文的标识符之间的关联关系写入关联关系列表中;
响应报文生成模块,用于从第一缓存中读取当前读请求信息并解析得到当前读请求信息中的标识符,从关联关系列表中获取当前读请求信息中的标识符对应的缓存地址;基于获取到的缓存地址从第二缓存中提取读请求数据,并根据所述当前读请求信息和提取的读请求数据生成读响应报文。
8.根据权利要求7所述的装置,其特征在于,
所述响应报文生成模块,还用于若该请求报文为写请求报文,则根据所述写请求报文中的写请求信息生成写响应报文。
9.根据权利要求7所述的装置,其特征在于,所述读请求报文的标识符的状态由状态位图信号监控;以及
所述报文乱序处理模块,还用于当所述响应报文生成模块将生成的读响应报文对外反馈后,通过状态位图信号释放该读响应报文对应的读请求报文的标识符。
10.一种网络芯片,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的计算机程序,所述处理器被所述计算机程序促使执行权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758690.2A CN111949568B (zh) | 2020-07-31 | 2020-07-31 | 一种报文处理方法、装置及网络芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010758690.2A CN111949568B (zh) | 2020-07-31 | 2020-07-31 | 一种报文处理方法、装置及网络芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111949568A CN111949568A (zh) | 2020-11-17 |
CN111949568B true CN111949568B (zh) | 2023-07-21 |
Family
ID=73339841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010758690.2A Active CN111949568B (zh) | 2020-07-31 | 2020-07-31 | 一种报文处理方法、装置及网络芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949568B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948298A (zh) * | 2021-04-15 | 2021-06-11 | 新华三信息安全技术有限公司 | 一种报文处理方法及装置 |
CN113420263B (zh) * | 2021-06-30 | 2023-08-04 | 北京百度网讯科技有限公司 | 数据统计方法、装置、设备和存储介质 |
CN114095546B (zh) * | 2021-10-27 | 2024-03-01 | 许昌许继软件技术有限公司 | 一种基于mqtt协议的报文监视方法及装置 |
CN115442317B (zh) * | 2021-12-17 | 2023-10-10 | 北京罗克维尔斯科技有限公司 | 报文处理方法、装置、系统、设备及介质 |
CN115357541B (zh) * | 2022-10-17 | 2022-12-30 | 井芯微电子技术(天津)有限公司 | 一种请求数据转换方法和装置 |
CN117369906B (zh) * | 2023-12-07 | 2024-02-09 | 成都市楠菲微电子有限公司 | Pcie验证平台、方法、装置、存储介质及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657480A (en) * | 1989-06-19 | 1997-08-12 | Digital Equipment Corporation | Method of recording, playback, and re-execution of concurrently running application program operational commands using global time stamps |
CN101917458A (zh) * | 2010-07-12 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种向客户机发送网络引导程序的方法及装置 |
CN102098221A (zh) * | 2011-01-28 | 2011-06-15 | 华为技术有限公司 | 一种报文查询方法及装置 |
CN102291378A (zh) * | 2010-06-18 | 2011-12-21 | 杭州华三通信技术有限公司 | 一种防御DDoS攻击的方法和设备 |
KR20140119240A (ko) * | 2013-03-27 | 2014-10-10 | 삼성전자주식회사 | 다중 오픈 api 처리장치 및 방법 |
CN107547505A (zh) * | 2017-06-21 | 2018-01-05 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN109309631A (zh) * | 2018-08-15 | 2019-02-05 | 新华三技术有限公司成都分公司 | 一种基于通用网络文件系统写入数据的方法及装置 |
CN110908939A (zh) * | 2019-11-27 | 2020-03-24 | 新华三半导体技术有限公司 | 一种报文处理方法、装置及网络芯片 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246460A (zh) * | 2008-03-10 | 2008-08-20 | 华为技术有限公司 | 缓存数据写入系统及方法和缓存数据读取系统及方法 |
CN110727403B (zh) * | 2019-09-12 | 2021-03-30 | 华为技术有限公司 | 元数据管理方法及装置 |
-
2020
- 2020-07-31 CN CN202010758690.2A patent/CN111949568B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5657480A (en) * | 1989-06-19 | 1997-08-12 | Digital Equipment Corporation | Method of recording, playback, and re-execution of concurrently running application program operational commands using global time stamps |
CN102291378A (zh) * | 2010-06-18 | 2011-12-21 | 杭州华三通信技术有限公司 | 一种防御DDoS攻击的方法和设备 |
CN101917458A (zh) * | 2010-07-12 | 2010-12-15 | 杭州华三通信技术有限公司 | 一种向客户机发送网络引导程序的方法及装置 |
CN102098221A (zh) * | 2011-01-28 | 2011-06-15 | 华为技术有限公司 | 一种报文查询方法及装置 |
KR20140119240A (ko) * | 2013-03-27 | 2014-10-10 | 삼성전자주식회사 | 다중 오픈 api 처리장치 및 방법 |
CN107547505A (zh) * | 2017-06-21 | 2018-01-05 | 新华三技术有限公司 | 一种报文处理方法及装置 |
CN109309631A (zh) * | 2018-08-15 | 2019-02-05 | 新华三技术有限公司成都分公司 | 一种基于通用网络文件系统写入数据的方法及装置 |
CN110908939A (zh) * | 2019-11-27 | 2020-03-24 | 新华三半导体技术有限公司 | 一种报文处理方法、装置及网络芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN111949568A (zh) | 2020-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111949568B (zh) | 一种报文处理方法、装置及网络芯片 | |
US7337275B2 (en) | Free list and ring data structure management | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
CN111427859B (zh) | 一种消息处理方法、装置、电子设备及存储介质 | |
US8325603B2 (en) | Method and apparatus for dequeuing data | |
US8281103B2 (en) | Method and apparatus for allocating storage addresses | |
WO2006012284A2 (en) | An apparatus and method for packet coalescing within interconnection network routers | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
CN110858188A (zh) | 具有分布式信箱结构的多处理器系统及其沟通方法 | |
CN112491979A (zh) | 一种网卡数据包缓存管理方法、装置、终端及存储介质 | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
WO2019024763A1 (zh) | 报文处理 | |
US10101964B2 (en) | Ring buffer including a preload buffer | |
WO2017157164A1 (zh) | 数据聚合方法及装置 | |
CN116755635B (zh) | 一种硬盘控制器缓存系统、方法、硬盘设备及电子设备 | |
US20130262812A1 (en) | Hardware Managed Allocation and Deallocation Evaluation Circuit | |
KR101499890B1 (ko) | Low Latency 프레임워크 시스템 | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
US9338219B2 (en) | Direct push operations and gather operations | |
US20020040414A1 (en) | Multiprocessor system and transaction control method for the same | |
US11645113B2 (en) | Work scheduling on candidate collections of processing units selected according to a criterion | |
CN114063923A (zh) | 数据读取方法、装置、处理器及电子设备 | |
CN113157628A (zh) | 存储系统、数据处理方法、装置、存储系统及电子设备 | |
CN114463162A (zh) | 图像缓存处理方法、装置、电子设备以及存储介质 | |
CN116303125B (zh) | 请求调度方法、缓存、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |