CN116132532A - 一种报文处理方法、装置及电子设备 - Google Patents
一种报文处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN116132532A CN116132532A CN202310105083.XA CN202310105083A CN116132532A CN 116132532 A CN116132532 A CN 116132532A CN 202310105083 A CN202310105083 A CN 202310105083A CN 116132532 A CN116132532 A CN 116132532A
- Authority
- CN
- China
- Prior art keywords
- target
- dma controller
- cache
- cpu
- type
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
-
- 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/0658—Controller construction arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
Abstract
本申请提出一种报文处理方法、装置及电子设备,包括:DMA控制器、目标缓存、第一存储器以及CPU,DMA控制器与目标缓存和第一存储器通信连接,CPU与目标缓存和第一存储器通信连接;DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符;DMA控制器用于确定第一类目标描述符是否满足写入目标缓存的条件;若是,DMA控制器还用于将第一类目标描述符对应的目标数据写入目标缓存;若否,DMA控制器还用于将第一类目标描述符对应的目标数据写入第一存储器;CPU用于基于目标缓存中存储的目标数据完成收包处理。CPU可以不去访问第一存储器,可以避免CPU访问第一存储器带来的延迟,从而可以提升报文处理的效率。
Description
技术领域
本申请涉及通信领域,具体而言,涉及一种报文处理方法、装置及电子设备。
背景技术
随着科学技术的进步,尤其是通信技术的进步,对数据报文的接收、处理和转发越来越受到关注。例如,目前通信技术发展迅速,人们对于通信速率的要求越来越高,需要其具备高速率的特点。极快的网速可以给用户提供高速上传和下载的体验。并且通信网络也将承载越来越多的丰富的业务,在此基础上,必然产生大量的数据流量,对网络转发处理性能提出更高的要求和挑战。
因此,如何提升网络转发处理性能,成为了本领域技术人员所关注的难题。
发明内容
本申请的目的在于提供一种报文处理方法、装置及电子设备,以至少部分改善上述问题。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种报文处理装置,包括:DMA控制器、目标缓存、第一存储器以及CPU,所述DMA控制器与所述目标缓存和所述第一存储器通信连接,所述CPU与所述目标缓存和所述第一存储器通信连接;
所述DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符;
所述DMA控制器用于确定所述第一类目标描述符是否满足写入所述目标缓存的条件;
若是,所述DMA控制器还用于将所述第一类目标描述符对应的目标数据写入所述目标缓存;
若否,所述DMA控制器还用于将所述第一类目标描述符对应的目标数据写入所述第一存储器;
所述CPU用于基于所述目标缓存中存储的目标数据完成收包处理。
第二方面,本申请实施例提供一种报文处理方法,应用于报文处理装置,所述报文处理装置包括:DMA控制器、目标缓存、第一存储器以及CPU,所述DMA控制器与所述目标缓存和所述第一存储器通信连接,所述CPU与所述目标缓存和所述第一存储器通信连接,所述方法包括:
所述DMA控制器在进行报文收包时,申请对应的第一类目标描述符;
所述DMA控制器确定所述第一类目标描述符是否满足写入所述目标缓存的条件;
若是,所述DMA控制器将所述第一类目标描述符对应的目标数据写入所述目标缓存;
若否,所述DMA控制器将所述第一类目标描述符对应的目标数据写入所述第一存储器;
所述CPU基于所述目标缓存中存储的目标数据完成收包处理。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括上述的报文处理装置。
相对于现有技术,本申请实施例所提供的一种报文处理方法、装置及电子设备,包括:DMA控制器、目标缓存、第一存储器以及CPU,DMA控制器与目标缓存和第一存储器通信连接,CPU与目标缓存和第一存储器通信连接;DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符;DMA控制器用于确定第一类目标描述符是否满足写入目标缓存的条件;若是,DMA控制器还用于将第一类目标描述符对应的目标数据写入目标缓存;若否,DMA控制器还用于将第一类目标描述符对应的目标数据写入第一存储器;CPU用于基于目标缓存中存储的目标数据完成收包处理。在此过程中,CPU可以不去访问第一存储器,从而可以避免CPU访问第一存储器带来的延迟,从而可以提升报文处理的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为本申请实施例提供的报文处理装置的结构示意图;
图2为本申请实施例提供的一种收包队列示意图;
图3为本申请实施例提供的另一种收包队列示意图;
图4为本申请实施例提供的轻载时的stash状态示意图;
图5为本申请实施例提供的重载时的stash状态示意图;
图6为本申请实施例提供的过载时的stash状态示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请提出了一种报文处理方法,具体地,提供了一种避免Cache Thrashing的Cache Stashing方法。其中,Cache为CPU高速缓存,Thrashing表示缓存数据震荡,CacheStashing表示高速缓存存储。因为CPU接收DMA RX的报文是按着DMAS收包队列(DMA RXRING)的环形顺序收包的。所以CPU批量接收一批报文后,下一批要接收的报文必然是环上的下一批收包描述符所对应的报文,也就是CPU预取的数据是确定的。对于使用具有确定性的数据,可通过Cache Stashing在CPU访问数据之前将数据复制(Push)到CPU对应的高速缓冲存储器(即CPU Cache),CPU可避免首次访问出现Cache Miss,即CPU miss,表示高速缓存查找失败,同时也避免了Cache Thrashing。所谓的stashing就是把CPU将要处理的报文提前存放到cache中来避免CPU cache miss后访问DDR带来的巨大时延。
在本申请实施例提供的报文处理方法中,可以将收包描述符对应的目标数据提前通过Stashing送至CPU Cache,收包描述符对应的目标数据可以但不限定为CPU即将RX处理的报文、描述符以及相关可选数据,从而去除CPU访问DDR的延迟(Latency)。只需要将CPU下一批即将处理的多个数据组Push至CPU Cache,提高CPU Cache利用率,避免CacheThrashing。需要说明的是,并不是所有的报文相关数据都需要写入目标缓存中,仅需要将预设的相关数据或关联数据(DataStashEligible)写入目标缓存中。
具体地,基于DMARX RING上已接收报文的水线,控制通过Stashing进入CPU Cache的报文数量及数据量;通过CPU RX IO交互触发将需要的报文数据通过Stashing写入CPUCache,即从DDR中预取报文到CPU L3 Cache中以减少CPU访问Cache Miss,减少CPU访问时延。于此,避免L3 Cache中的报文数据震荡,避免Cache Thrashing,极大地提升了CPU读取报文的速度,提高了软转发性能。
此外,Cache Stashing机制会独占L3 Cache中按需预留出来的一部分CacheMemory,可避免与其他业务应用程序之间的Cache抢占及Cache冲突覆盖,减少CacheThrashing。
需要说明的是,Cache Stashing并非要取代硬件/软件Prefetch(预取),只能针对使用具有确定性的数据做Cache Stashing,因CPU等硬件设计/Cache大小等因素,CacheStashing通常只能将数据Push到L3Cache里。而CPU Cache Prefetch可将数据预取到L1/L2Cache。最终整个系统是一个Cache Stashing与CPU Cache Prefetch相互配合完成的高性能系统。
本申请提供的报文处理方法,应用于图1所示的报文处理装置。请参考图1,图1为本申请实施例提供的报文处理装置的结构示意图。本申请提供的报文处理装置可以是片上系统(System On Chip,简称SOC)。如图1所示,报文处理装置包括DMA控制器(DirectMemory Access,简称DMA)、目标缓存、第一存储器以及CPU。其中,目标缓存可以是CPU对应的高速缓冲存储器,例如L3 Cache。第一存储器(memory)可以为内存(DDR)或静态随机存储器(SRAM)。Central Processing Unit,简称CPU,又称中央处理器。CPU可以包括多个核心(core),所以图1中以CPU Cores作为限定。
在一种可能的实现方式中,目标缓存属于CPU。可选地,CPU Core中cache包含L1-cache、L2-cache以及L3 Cache,CPU访问速度依次递减,但L3 Cache memory size比较大,其他两级偏小。比如,L1~L3-cache访问时延分别为2cycle、8cycle、24cycle,但cachesize分别为32k、256k、4M。本申请提供的处理方法需要使用Cache Stashing机制,所谓的stashing就是把CPU将要处理的报文提前存放到cache中来避免CPU cache miss后访问DDR带来的巨大时延。
因为L3 Cache相对比较大,通常都是几M甚至几十M。本申请方案中CacheStashing机制会独占L3 Cache中按需预留出来的一部分存储空间(Cache Memory),可避免与其他业务应用程序之间的Cache抢占及Cache冲突覆盖,减少Cache Thrashing。
此外,硬件上支持ACP接口,通过ACP接口,DMA控制器能够将RX收到的所需数据信息直接写入到Stashing L3 Cache;通过ACP接口,DMA控制器能够通过读操作将DDR中的数据读出并写入Stashing L3 Cache。
请继续参考图1,在一种可能的场景下,报文处理装置还包括交换核心(SwitchCore),Switch Core包括入方向处理引擎(Ingress Process Engine,简称IPE)、出方向处理引擎(Egress Process Engine,简称EPE)以及流量管理单元(Traffic Manager,简称TM)。
如图1所示,Switch Core与DMA控制器通信连接,二者之间可以进行信息交互。DMA控制器与目标缓存和第一存储器通信连接,CPU与目标缓存和第一存储器通信连接。
在一种可能的场景下,DMA控制器、目标缓存、第一存储器以及CPU可以通过CPU总线(CPU BUS)相互连接,进而可以通过CPU总线完成数据交互。
在软转发交换SOC中,Switch Core负责网口上报文的收发,Switch Core将网口上接收到的报文通过DMA控制器上送CPU,CPU处理后的报文通过DMA控制器下发到SwitchCore并从网口转发出去。DMA控制器负责Switch Core和CPU间交互数据的搬运。
可选地,为了便于进行收包管理,可以在第一存储器中设置收包队列(RX RING),收包队列中用于存储收包描述符,又称为DMA描述符,或DmaDesc。DMA控制器所接收到的报文数据可以存储在第一存储器中,收包描述符用于记录报文数据的相关,例如存储地址和转发网口等等。CPU和DMA控制器通过收包描述符控制报文写入到DDR Buffer和从DDRBuffer中取走报文。
可选地,请参考图2,图2为本申请实施例提供的一种收包队列示意图。如图2所示,CPURXPOS表示CPU完成RX接收的描述符的位置,stashThrd为水线,表征接下来能够复制至目标缓存的收包描述符对应的位置,HWRXPOS表示硬件(即DMA控制器)完成RX接收的描述符的位置。通过对收包队列中的收包描述符(DmaDesc)进行管理,可以控制报文写入到DDRBuffer和从DDR Buffer中取走报文。
需要说明的是,在第一存储器中还可以设置有发包队列(TX ring)和PktBuf(存放报文的存储空间),其中,发包队列包括一定数量的发包描述符,用于对发包进行管理。
在图1的基础上,对于如何完成报文的收包处理,本申请实施例提还提供了一种可选的实施方式,请参考下文。
DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符。
可选地,DMA控制器收到报文后,获取一个可用的RX描述符(收包描述符),作为第一类目标描述符,并准备数据传输相关内容,即第一类目标描述符对应的目标数据。
可选地,片上系统(芯片,SOC)维护了一个头部指针(headPtr),headPtr用于指向收包队列(RX Ring)中下一次收包时,可以使用的收包描述符(DMA DESC)的位置,并且在每一次收包后,均会更新头部指针(headPtr)。
DMA控制器用于确定第一类目标描述符是否满足写入目标缓存的条件。
可选地,因为目标缓存中预留的存储空间有限,为了避免冲突,需要提前判断第一类目标描述符是否满足写入目标缓存的条件。
在一种可能的实现方式中,在判断第一类目标描述符是否满足写入目标缓存的条件之前,DMA控制器可以确定目标功能(stashEnable)是否已开启,若stashEnable开启,可以判断第一类目标描述符是否满足写入目标缓存的条件,若stashEnable未开启,则可以直接将第一类目标描述符对应的目标数据写入第一存储器。
可选地,通过确定第一类目标描述符是否满足写入目标缓存的条件,来决定是否将本要送往第一存储器的Buffer Cell的目标数据(Hot Data),写入目标缓存(L3 Cache)。包括报文在Switch Core中处理信息、报文首部几个Cache Line长度的报文头、收包描述符(DMA RX描述符)。在此之后,关于如何完成收包写入,本申请实施例还提供了一种可选的实施方式,请参考下文。
若是,DMA控制器还用于将第一类目标描述符对应的目标数据写入目标缓存。
可选地,第一类目标描述符满足写入目标缓存的条件,通过直接将第一类目标描述符对应的目标数据写入目标缓存,减少了CPU在进行业务处理时访问第一存储器(内存,DDR)的延迟,从而可以提升报文的处理效率。
可选地,通过ACP write将目标数据(Hot Data)写进目标缓存(L3Cache)。
在一种可能的实现方式中,在将第一类目标描述符对应的目标数据写入目标缓存时,还需要同步将第一类目标描述符对应的目标数据写入第一存储器。例如,将其写入第一存储器的第一地址段和目标缓存的第二地址段,第一地址段和第二地址段匹配或相同。
若否,DMA控制器还用于将第一类目标描述符对应的目标数据写入第一存储器。
应理解,在第一类目标描述符不满足写入目标缓存的条件时,为了避免CacheThrashing,即避免覆盖掉Cache中CPU即将要处理的数据,造成cache thrashing,可以不启用ACP write,正常DDR收包,将第一类目标描述符对应的目标数据写入第一存储器。
CPU用于基于目标缓存中存储的目标数据完成收包处理。
可选地,CPU会基于目标缓存中存储的目标数据进行收包。在批量收包完成后,还可以通过IO归还已经处理完成的收包描述符。在此过程中,CPU可以不去访问第一存储器,从而可以避免CPU访问第一存储器带来的延迟,从而可以提升报文处理的效率。
可选地,CPU访问目标缓存的延迟小于其访问第一存储器的延迟。
综上所述,本申请实施例提供了一种报文处理装置,包括:DMA控制器、目标缓存、第一存储器以及CPU,DMA控制器与目标缓存和第一存储器通信连接,CPU与目标缓存和第一存储器通信连接;DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符;DMA控制器用于确定第一类目标描述符是否满足写入目标缓存的条件;若是,DMA控制器还用于将第一类目标描述符对应的目标数据写入目标缓存;若否,DMA控制器还用于将第一类目标描述符对应的目标数据写入第一存储器;CPU用于基于目标缓存中存储的目标数据完成收包处理。在此过程中,CPU可以不去访问第一存储器,从而可以避免CPU访问第一存储器带来的延迟,从而可以提升报文处理的效率。
请参考图3,图3为本申请实施例提供的另一种收包队列示意图。如图3所示,在一种可能的实施方式中,在每一个收包队列(DMA RX RING)上,维护headPtr决定下一次收包使用的DMA DESC位置,同时芯片维护的尾部指针tailPtr=(headPtr+vldNum)modringDepth,其中,tailPtr指示软件(CPU)归还vldNum后,下一次需要Stashing处理的DMADESC位置。vldNum表示收包队列中有效描述符的数量,或者空闲描述符的数量。报文SopData接收分为两类:报文Sop Data需要做ACP stash write(即写入目标缓存)或报文SopData写入第一存储去(例如DDR)。其中,Sop是指报文尾分段,又称Start Of Packet。
在前文的基础上,关于如何确定第一类目标描述符是否满足写入目标缓存的条件,本申请实施例还提供了一种可选的实施方式,请参考下文。
DMA控制器用于确定第一类目标描述符是否处于目标区间,其中,目标区间的头部表征当前写入目标缓存的收包描述符的起始位置,目标区间的尾部与目标区间的头部间隔预设的批量处理阈值。
可选地,如图3所示,目标区间可以为[tailPtr,tailPtr+stashThrd],即目标区间的头部为tailPtr,目标区间的尾部为tailPtr+stashThrd,stashThrd为预先划定的水线,也就是上文中的批量处理阈值。
当第一类目标描述符处于目标区间时,例如图3中的01、02、03以及04DmaDesc,即收包时Sop落在[tailPtr,tailPtr+stashThrd)范围内的DMA DESC,第一类目标描述符满足写入目标缓存的条件,Sop数据直接做ACP stash write,足写入目标缓存(L3 Cache或LastLevel Cache)。当第一类目标描述符未处于目标区间时,例如图3中的05、06以及07DmaDesc,收包时Sop未落在[tailPtr,tailPtr+stashThrd)范围内的DMA DESC,确定第一类目标描述符不满足写入目标缓存的条件,Sop数据正常写入第一存储器(DDR)。
若是,则DMA控制器用于确定第一类目标描述符满足写入目标缓存的条件;
若否,则DMA控制器用于确定第一类目标描述符不满足写入目标缓存的条件。
在一种可能的场景下,在收包负载较大时,会有一部分的收包数据直接写入第一存储器(DDR)中,关于如何通过预取从第一存储器(DDR)中把报文相关数据读走放到目标缓存(Stashing L3 Cache),本申请实施例还提供了一种可选的实施方式,请参考下文。
CPU还用于在收包处理完成后,归还收包描述符。
可选地,CPU会基于目标缓存中存储的目标数据进行收包。在批量收包完成后,还可以通过IO归还已经处理完成的收包描述符。具体地,每一次收包完成后,CPU Reg I/O更新vldNum,进而可以基于更新后的vldNum,确定tailPtr,进而确定新的目标区间。
DMA控制器还用于在监测到CPU归还收包描述符时,更新目标区间。
应理解,在CPU归还收包描述符后,表示CPU已经完成这部分的收包,可以更新CPURXPOS和tailPtr,进而可以更新目标区间。
可选地,CPU归还收包描述符触发DMA更新目标区间,即目标区间滑动到下一批待Stashing数据对应描述符游标范围内。
DMA控制器还用于将处于更新后的目标区间中的收包描述符对应的目标数据从第一存储器复制至目标缓存。
可选地,在更新后的目标区间后,可能出现已经写入第一存储器(DDR)或正在写入第一存储器(DDR)的报文Sop Data需要做ACP stash read。决策条件如下:[tailPtr,tailPtr+stashThrd)范围内已写入或正在写入DDR的Sop DMA DESC需要进行报文Sop Data的ACP stash read,即通过读取的方式,将对应的目标数据(Sop Data)复制至目标缓存中。满足CPU收包处理时效性同时避免Cache Thrashing。
可选地,为了避免出现重复写入目标缓存的情况出现,本申请实施例还提供了一种可选地的实施方式,请参考下文。
DMA控制器还用于在进行复制时,确定复制对象是否已写入目标缓存;若是,则停止复制;若否,则继续复制。
可选地,可以通过CPU总线完成数据复制。
在一种可能的实施方式中,DMA控制器还用于从更新后的目标区间的头部开始,逐个将第一存储器中的收包描述符对应的目标数据复制至目标缓存。
DMA控制器还用于统计复制数量(Count);
DMA控制器还用于在复制数量等于批量处理阈值时,停止复制。
可选地,确定Count<stashThrd是否成立,若成立则继续复制,反之则停止复制。
在前文的基础上,关于如何确定第一类目标描述符是否满足写入目标缓存的条件,本申请实施例还提供了一种可选的实施方式,请参考下文。
DMA控制器用于当前处于占用状态的收包描述符的数量是否大于预设的批量处理阈值。
可选地,占用状态的收包描述符为硬件RX完成但CPU尚未RX的收包描述符,也可以表示为HwRxDoneDesc。占用状态的收包描述符的数量=RingDepth–vldNum。
通过判断RingDepth–vldNum>stashThreshold是否成立,确定第一类目标描述符是否满足写入目标缓存的条件。其中,stashThreshold表示批量处理阈值。
若否,则DMA控制器用于确定第一类目标描述符满足写入目标缓存的条件。
应理解,若RingDepth–vldNum<=stashThreshold成立,则通过ACP write将目标数据(Hot Data)存储(Stash)进目标缓存(L3 Cache)。即如果在水线内,根据DsStashCtl[…]配置,将需要Stash的数据(描述符以及相关报文头数据)通过ACP接口写入目标缓存(L3 Cache),其他数据写入DDR/SRAM,保证Cache时效性。
若是,则DMA控制器用于确定第一类目标描述符不满足写入目标缓存的条件。
应理解,若RingDepth–vldNum>stashThreshold成立,则不启用ACP write,正常DDR收包。即超过水线,描述符及报文相关数据通过CCI总线写入DDR/SRAM。
请参考图4、图5以及图6,图4为本申请实施例提供的轻载时的stash状态示意图,图5为本申请实施例提供的重载时的stash状态示意图,图6为本申请实施例提供的过载时的stash状态示意图。
可选地,以收包队列深度(ringDepth)为16,stashThrd为4作为示例,进行说明DMARX RING上以下流量负载时的stash状态。
请参考图4,流量轻载状态0:初始化状态。
流量轻载状态1:芯片收三个短包,每一个Sop Data都落入stashThrd范围内,SopData直接做ACP write写入目标缓存(L3 Cache)。
流量轻载状态2:CPU收包完成通过Reg I/O更新vldNum,tailPtr对应更新。
流量轻载状态3:基于新的tailPtr,后续Sop Data继续通过ACP write写入目标缓存(L3 Cache)。
请参考图5,流量重载状态1:芯片收6个短包,前4个每一个Sop Data都落入stashThrd范围内,Sop Data直接做ACP write写入目标缓存(L3 Cache)。后两个Sop Data(04和05)写入第一存储器(DDR)。
流量重载状态2:CPU收包完成通过Reg I/O更新vldNum,tailPtr对应更新,当前已经开始写DDR但未写完的DMA DESC继续写DDR操作;同时基于新的tailPtr,[tailPtr,tailPtr+stashThrd)范围内已写入DDR的DMA DESC开始执行ACP read,正在写Sop Data入DDR的DMA DESC 06,后续也会执行ACP read。
流量重载状态3:基于新的tailPtr,后续新进入的[tailPtr,tailPtr+stashThrd)范围内的Sop Data继续通过ACP write写入目标缓存(L3Cache);新进入的[tailPtr,tailPtr+tashThrd)范围外的Sop Data继续写入第一存储器(DDR)。[tailPtr,tailPtr+stashThrd)范围内的已有ACP read继续执行,直到tailPtr+stashThrd–1位置,对于DMADESC 07来说,也会执行ACP read指令,但实际最新的数据已经在L3 Cache中,理论上总线会很快完成。
请参考图6,流量过载状态0:初始化状态。
流量过载状态1:芯片收11个短包,前4个每一个Sop Data都落入stashThrd范围内,Sop Data直接做ACP write写入目标缓存(L3Cache);后7个Sop Data写入第一存储器(DDR)。
流量过载状态2:CPU收包完成通过Reg I/O更新vldNum,tailPtr对应更新,当前已经开始写DDR但未写完的DMA DESC继续写DDR操作;同时基于新的tailPtr,[tailPtr,tailPtr+tashThrd)范围内已写入DDR的DMA DESC要执行ACP read,即复制到目标缓存中。
流量过载状态3:基于新的tailPtr,后续新进入的[tailPtr,tailPtr+stashThrd)范围外的Sop Data继续写入DDR,直至写满;[tailPtr,tailPtr+stashThrd)范围内的已有ACP read继续执行,直到tailPtr+stashThrd–1位置。
本申请实施例中,基于收包队列(DMA RING)上已接收报文的水线,控制通过Stashing进入CPU Cache的报文数量及数据量;通过CPU RX IO交互按批次顺序触发将需要的报文数据通过Stashing写入CPU Cache,即从DDR中预取报文到CPU L3-Cache中以减少CPU访问Cache Miss,减少CPU访问时延。于此,避免L3-Cache中的报文数据震荡,避免CacheThrashing,精准的硬件预取机制,保证软件处理时,报文大概率在CPU Cache中,极大地提升了CPU读取报文的速度,提高了软转发性能。通过CPU收发包IO交互,结合RING水线,按批次顺序将CPU即将处理的报文从DDR中提前读取并存入CPU Cache,即写入到DDR或正在写入DDR的报文相关数据预取到Cache,避免Cache miss,避免CPU访问DDR带来的巨大时延。
应当理解的是,图1所示的结构仅为报文处理装置的部分的结构示意图,报文处理装置还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例提供的一种报文处理方法,可以但不限于应用于图1所示的报文处理装置,具体的流程,请参考下文,报文处理方法包括:
DMA控制器在进行报文收包时,申请对应的第一类目标描述符;
DMA控制器确定第一类目标描述符是否满足写入目标缓存的条件;
若是,DMA控制器将第一类目标描述符对应的目标数据写入目标缓存;
若否,DMA控制器将第一类目标描述符对应的目标数据写入第一存储器;
CPU基于目标缓存中存储的目标数据完成收包处理。
可选地,DMA控制器确定第一类目标描述符是否满足写入目标缓存的条件的步骤,包括:
DMA控制器确定第一类目标描述符是否处于目标区间,其中,目标区间的头部表征当前写入目标缓存的收包描述符的起始位置,目标区间的尾部与目标区间的头部间隔预设的批量处理阈值;
若是,则DMA控制器确定第一类目标描述符满足写入目标缓存的条件;
若否,则DMA控制器确定第一类目标描述符不满足写入目标缓存的条件。
可选地,报文处理方法还包括:
CPU在收包处理完成后,归还收包描述符;
DMA控制器在监测到CPU归还收包描述符时,更新目标区间;
DMA控制器将处于更新后的目标区间中的收包描述符对应的目标数据从第一存储器复制至目标缓存。
需要说明的是,本实施例所提供的报文处理方法,其可以执行上述装置实施例所示的功能用途,以实现对应的技术效果。为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
下面提供一种电子设备,可以是手机设备、路由设备以及网关设备等等,该电子设备包括如图1所示的报文处理装置,可以实现上述的报文处理方法。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种报文处理装置,其特征在于,包括:DMA控制器、目标缓存、第一存储器以及CPU,所述DMA控制器与所述目标缓存和所述第一存储器通信连接,所述CPU与所述目标缓存和所述第一存储器通信连接;
所述DMA控制器用于在进行报文收包时,申请对应的第一类目标描述符;
所述DMA控制器用于确定所述第一类目标描述符是否满足写入所述目标缓存的条件;
若是,所述DMA控制器还用于将所述第一类目标描述符对应的目标数据写入所述目标缓存;
若否,所述DMA控制器还用于将所述第一类目标描述符对应的目标数据写入所述第一存储器;
所述CPU用于基于所述目标缓存中存储的目标数据完成收包处理。
2.如权利要求1所述的报文处理装置,其特征在于,所述DMA控制器用于确定所述第一类目标描述符是否处于目标区间,其中,所述目标区间的头部表征当前写入所述目标缓存的收包描述符的起始位置,所述目标区间的尾部与所述目标区间的头部间隔预设的批量处理阈值;
若是,则所述DMA控制器用于确定所述第一类目标描述符满足写入所述目标缓存的条件;
若否,则所述DMA控制器用于确定所述第一类目标描述符不满足写入所述目标缓存的条件。
3.如权利要求2所述的报文处理装置,其特征在于,所述CPU还用于在收包处理完成后,归还收包描述符;
所述DMA控制器还用于在监测到所述CPU归还收包描述符时,更新所述目标区间;
所述DMA控制器还用于将处于更新后的目标区间中的收包描述符对应的目标数据从所述第一存储器复制至所述目标缓存。
4.如权利要求3所述的报文处理装置,其特征在于,所述DMA控制器还用于在进行复制时,确定复制对象是否已写入所述目标缓存;
若是,则停止复制;
若否,则继续复制。
5.如权利要求3所述的报文处理装置,其特征在于,所述DMA控制器还用于从更新后的目标区间的头部开始,逐个将所述第一存储器中的收包描述符对应的目标数据复制至所述目标缓存;
所述DMA控制器还用于统计复制数量;
所述DMA控制器还用于在复制数量等于所述批量处理阈值时,停止复制。
6.如权利要求1所述的报文处理装置,其特征在于,所述DMA控制器用于当前处于占用状态的收包描述符的数量是否大于预设的批量处理阈值;
若否,则所述DMA控制器用于确定所述第一类目标描述符满足写入所述目标缓存的条件;
若是,则所述DMA控制器用于确定所述第一类目标描述符不满足写入所述目标缓存的条件。
7.一种报文处理方法,其特征在于,应用于报文处理装置,所述报文处理装置包括:DMA控制器、目标缓存、第一存储器以及CPU,所述DMA控制器与所述目标缓存和所述第一存储器通信连接,所述CPU与所述目标缓存和所述第一存储器通信连接,所述方法包括:
所述DMA控制器在进行报文收包时,申请对应的第一类目标描述符;
所述DMA控制器确定所述第一类目标描述符是否满足写入所述目标缓存的条件;
若是,所述DMA控制器将所述第一类目标描述符对应的目标数据写入所述目标缓存;
若否,所述DMA控制器将所述第一类目标描述符对应的目标数据写入所述第一存储器;
所述CPU基于所述目标缓存中存储的目标数据完成收包处理。
8.如权利要求7所述的报文处理方法,其特征在于,所述DMA控制器确定所述第一类目标描述符是否满足写入所述目标缓存的条件的步骤,包括:
所述DMA控制器确定所述第一类目标描述符是否处于目标区间,其中,所述目标区间的头部表征当前写入所述目标缓存的收包描述符的起始位置,所述目标区间的尾部与所述目标区间的头部间隔预设的批量处理阈值;
若是,则所述DMA控制器确定所述第一类目标描述符满足写入所述目标缓存的条件;
若否,则所述DMA控制器确定所述第一类目标描述符不满足写入所述目标缓存的条件。
9.如权利要求8所述的报文处理方法,其特征在于,所述方法还包括:
所述CPU在收包处理完成后,归还收包描述符;
所述DMA控制器在监测到所述CPU归还收包描述符时,更新所述目标区间;
所述DMA控制器将处于更新后的目标区间中的收包描述符对应的目标数据从所述第一存储器复制至所述目标缓存。
10.一种电子设备,其特征在于,包括:权利要求1-6中任意一项所述的报文处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310105083.XA CN116132532A (zh) | 2023-02-13 | 2023-02-13 | 一种报文处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310105083.XA CN116132532A (zh) | 2023-02-13 | 2023-02-13 | 一种报文处理方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116132532A true CN116132532A (zh) | 2023-05-16 |
Family
ID=86302628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310105083.XA Pending CN116132532A (zh) | 2023-02-13 | 2023-02-13 | 一种报文处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116132532A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076346A (zh) * | 2023-07-24 | 2023-11-17 | 龙芯中科(成都)技术有限公司 | 应用程序数据处理方法、装置及电子设备 |
-
2023
- 2023-02-13 CN CN202310105083.XA patent/CN116132532A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076346A (zh) * | 2023-07-24 | 2023-11-17 | 龙芯中科(成都)技术有限公司 | 应用程序数据处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9569366B2 (en) | System and method to provide non-coherent access to a coherent memory system | |
US6658533B1 (en) | Method and apparatus for write cache flush and fill mechanisms | |
US9037810B2 (en) | Pre-fetching of data packets | |
US8248945B1 (en) | System and method for Ethernet per priority pause packet flow control buffering | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
JP4621747B2 (ja) | 通信制御装置および情報処理装置 | |
WO2021209051A1 (zh) | 片上缓存装置、片上缓存读写方法、计算机可读介质 | |
US8943507B2 (en) | Packet assembly module for multi-core, multi-thread network processors | |
US20110228674A1 (en) | Packet processing optimization | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
WO2006124348A2 (en) | Dma reordering for dca | |
EP3115904B1 (en) | Method for managing a distributed cache | |
CN116132532A (zh) | 一种报文处理方法、装置及电子设备 | |
CN112559436B (zh) | 一种rdma通信设备的上下文访问方法及系统 | |
CN111459417A (zh) | 一种面向NVMeoF存储网络的无锁传输方法及系统 | |
US9336162B1 (en) | System and method for pre-fetching data based on a FIFO queue of packet messages reaching a first capacity threshold | |
US20080225858A1 (en) | Data transferring apparatus and information processing system | |
CN110519180B (zh) | 网卡虚拟化队列调度方法及系统 | |
CN116755635B (zh) | 一种硬盘控制器缓存系统、方法、硬盘设备及电子设备 | |
EP1683321B1 (en) | Method and system to protect a protocol control block for network packet processing | |
JPH07239808A (ja) | 分散データ管理方式 | |
CN114401235B (zh) | 一种队列管理中重载处理方法、系统、介质、设备及应用 | |
CN111541624B (zh) | 空间以太网缓存处理方法 | |
CN115794366A (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 |