CN116501657B - 缓存数据的处理方法、设备及系统 - Google Patents

缓存数据的处理方法、设备及系统 Download PDF

Info

Publication number
CN116501657B
CN116501657B CN202310730147.5A CN202310730147A CN116501657B CN 116501657 B CN116501657 B CN 116501657B CN 202310730147 A CN202310730147 A CN 202310730147A CN 116501657 B CN116501657 B CN 116501657B
Authority
CN
China
Prior art keywords
read
data
pointer
write
storage queue
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
Application number
CN202310730147.5A
Other languages
English (en)
Other versions
CN116501657A (zh
Inventor
聂浩
刘运卓
蔡慧
刘一锐
尹俊
张鹏宇
祝顺民
江波
许辰人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202310730147.5A priority Critical patent/CN116501657B/zh
Publication of CN116501657A publication Critical patent/CN116501657A/zh
Application granted granted Critical
Publication of CN116501657B publication Critical patent/CN116501657B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供了一种缓存数据的处理方法、设备及系统,缓存数据的处理方法应用于可编程转发硬件,可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接。处理方法包括:在终端设备处于缓存释放状态时,获取外部存储设备中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态;确定与存储队列相对应的读指针和写指针;基于读指针和写指针对存储队列中的数据项进行循环读写操作。本实施例中,拓展了缓存空间,并通过读指针和写指针对缓存空间中的缓存数据进行自循环的读写操作,这样有效地保证了对缓存数据进行稳定处理操作。

Description

缓存数据的处理方法、设备及系统
技术领域
本申请涉及网络技术领域,尤其涉及一种缓存数据的处理方法、设备及系统。
背景技术
目前,在5G网络的应用场景中,存在寻呼这一特殊的缓存场景,当用户终端(UserEquipment,简称UE)与网络之间断开连接时,需要存储下行(从互联网到UE)的数据包,直到连接恢复后再释放。UE进入信号盲区,可编程转发硬件断开连接来节能,即会处于寻呼状态。在实际网络中,转发设备需要100G甚至上1T的内存(千万用户)来用于寻呼。
对于可编程转发硬件而言,由于内部缓存空间太小,从而无法满足寻呼等复杂的缓存场景,此时,可以通过为可编程转发硬件配置外部缓存来拓展缓存空间。但是,由于可编程转发硬件的数据处理规则往往为流水线规则,这样使得所配置的外部缓存容易出现数据释放的问题。
发明内容
本申请实施例提供一种缓存数据的处理方法、设备及系统,能够实现对缓存数据的读写循环操作,保证了数据处理操作的稳定可靠性。
第一方面,本申请实施例提供了一种缓存数据的处理方法,应用于可编程转发硬件,所述可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接,所述方法包括:
在终端设备处于缓存释放状态时,获取所述外部存储设备中的与所述终端设备相对应的存储队列,其中,所述缓存释放状态用于标识所述终端设备由网络断开状态调整为网络连接状态之间的中间状态;
确定与所述存储队列相对应的读指针和写指针;
基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作。
第二方面,本申请实施例提供了一种缓存数据的处理装置,应用于可编程转发硬件,所述可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接,所述装置包括:
第一获取模块,用于在终端设备处于缓存释放状态时,获取所述外部存储设备中的与所述终端设备相对应的存储队列,其中,所述缓存释放状态用于标识所述终端设备由网络断开状态调整为网络连接状态之间的中间状态;
第一确定模块,用于确定与所述存储队列相对应的读指针和写指针;
第一处理模块,用于基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作。
第三方面,本申请实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面所示的缓存数据的处理方法。
第四方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第一方面所示的缓存数据的处理方法。
第五方面,本发明实施例提供了一种计算机程序产品,包括:计算机程序,当所述计算机程序被电子设备的处理器执行时,使所述处理器执行上述第一方面所示的缓存数据的处理方法中的步骤。
第六方面,本发明实施例提供了一种缓存数据的处理系统,包括:
外部存储设备;
可编程转发硬件,基于地址的远程内存访问技术与所述外部存储设备通信连接,用于:在终端设备处于缓存释放状态时,获取所述外部存储设备中的与所述终端设备相对应的存储队列,其中,所述缓存释放状态用于标识所述终端设备由网络断开状态调整为网络连接状态之间的中间状态;确定与所述存储队列相对应的读指针和写指针;基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作。
本申请实施例提供的缓存数据的处理方法、设备及系统,在终端设备处于缓存释放状态时,通过获取所述外部存储设备中的与所述终端设备相对应的存储队列,而后确定与所述存储队列相对应的读指针和写指针,并基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作,通过外部存储设备有效地拓展了可编程转发硬件的缓存空间,并且通过读指针和写指针实现了对缓存数据进行自循环的读写处理操作,这样不仅实现了将缓存数据的逻辑卸载到可编程转发硬件和外部存储设备中,并且还保证了缓存数据能够进行有序的处理操作,进一步提高了该方法的实用性,有利于市场的推广与应用。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术提供的转发存储分离的原理示意图;
图2为本申请实施例提供的一种缓存数据的处理方法的原理示意图;
图3为本申请实施例提供的一种缓存数据的处理方法的流程示意图;
图4为本申请实施例提供的终端设备与网络之间的连接状态的示意图;
图5为本申请实施例提供的存储队列的示意图;
图6为本申请实施例提供的基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作的流程示意图;
图7为本申请实施例提供的基于所述读指针对所述存储队列中的数据项进行循环读取操作的流程示意图;
图8为本申请实施例提供的生成与所述读指针相对应的循环读取指令的原理示意图;
图9为本申请实施例提供的另一种缓存数据的处理方法的流程示意图;
图10为本申请实施例提供的在写指针对应有写入锁时的数据处理操作的原理示意图;
图11为本申请应用实施例提供的一种缓存数据的处理方法的原理示意图;
图12为本申请实施例提供的一种缓存数据的处理系统的结构示意图;
图13为本申请实施例提供的一种缓存数据的处理装置的结构示意图;
图14为与图13所示实施例提供的缓存数据的处理装置对应的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
术语定义:
转发面:转发面是网络设备中的一个组件,负责将数据包从一个接口转发到另一个接口。有软件、硬件等多种实现。
ASIC:Application Specific Integrated Circuit,专用集成电路。
可编程转发面:可编程转发面允许自定义转发面的逻辑,从而支持新的网络协议、优化流量。除了软件转发面外,业界推出了多款可编程的ASIC转发芯片,支持P4等专用语言进行编程。
智能网卡:在标准网卡的基础能力上,增加了通用计算单元、专用加速电路、板上存储等功能的网络硬件,能够部分或完整的实现复杂的网络功能。
P4:一种用于可编程转发面的编程语言。
RDMA:RemoteDirectMemoryAccess,一种基于网络的远程内存访问技术。
五元组:数据包头部的信息,包含源IP地址、源端口、目的IP地址、目的端口和传输层协议。
Match-Action模型:网络设备获取数据包后,需要根据数据包的五元组信息去和存储中的信息匹配(Match),匹配成功后会执行存储中记录的网络操作(Action),这一过程为Match-Action模型。
Hash:散列算法,可以将信息映射为固定长度输出,输出往往短于输入,良好的Hash算法输出是均匀分布的。
Buffer:缓存,用于临时存储数据。
UPF:5G核心网中的用户平面功能(User Plane Function),用于处理用户数据的转发。
UE:UserEquitment,用户设备。
Paging:寻呼,当UE与网络断开连接后,核心网会尝试寻找新的连接路径,这一过程称为寻呼。
MTU:MaximumTransmissionUnit,最大传输单元MTU,网络支持的最大包大小。
HBM:HighBandwidthMemory,高带宽内存,将内存与芯片封装在一个片上系统(System on Chip,简称Soc)上以提升性能。
为了方便本领域技术人员理解本申请实施例所提供的技术方案,下面对相关技术进行简要说明:
可编程转发硬件是一种新型的数据转发硬件,具有可编程交换机、智能网卡等不同形态。这些硬件基于Match-Action模型进行相对应的数据处理操作,可编程转发硬件的内部为流水线结构,具体可以使用输入的数据包作为触发条件,一级一级地对数据包进行处理。
可编程转发硬件上配置有少量的片上存储,例如:静态随机存取存储器(StaticRandomAccessMemory,简称SRAM),片上存储的大小会受到成本的限制,在一些场景中,片上存储可以做到较大,但是对于5G、6G等复杂的应用场景而言,片上存储的存储大小仍然不够,同时,片上存储的大小随着出厂时固化,难以灵活适配其他具体的应用场景,这样的可编程转发硬件的灵活性较差,无法满足复杂场景的缓存需求。
为了解决上述技术问题,相关技术提供了一种转存分离的设计,具体的,使用外部存储设备和远端内存访问协议进行存储拓展;其中,转存分离的基本原理如图1所示,在可编程转发硬件获取到输入数据包之后,可以将可编程转发硬件内部的数据包匹配结果转换为远端内存地址,对远端内存地址进行读写和处理,实现了存储区域的拓展。为了保证存储信息和数据包本身的同步性,可编程转发硬件可以将接收到的数据包写入到外部存储设备(远端内存)中,再和存储的信息(例如:执行信息action)一起读回。
在5G网络的场景中,端到端的延迟和波动在1ms级别,为传统数据中心网络1us的数千倍,因此需要更多的缓存空间。5G网络的场景中还存在寻呼这一特殊的缓存场景,具体的,当UE与网络断开连接时,需要存储下行(从互联网到UE)的数据包,直到连接恢复后再释放。在UE进入信号盲区,物联网(Internet of Things,简称IoT)终端往往通过断开连接来节能,此时的可编程转发硬件和UE都会处于寻呼状态。这一状态非常常见,在实际网络中,可编程转发硬件需要100G甚至上1T的内存(千万用户)来用于寻呼;因此需要为可编程转发硬件设计缓存拓展。
总结来说,相关技术存在以下问题:
(1)可编程转发硬件的内部缓存空间太小,无法满足寻呼等复杂的缓存场景。
(2)可编程转发硬件所对应的数据处理模型为流水线触发结构,无法实现循环等操作,这样使用外部存储设备构建缓存时,则会存在缓存数据的释放问题。
(3)在用户终端UE重新连接时,新来的下行数据包应该晚于已经存储的数据包被发出,也需要被缓存,因此需要支持异步读写来保证缓存数据的有序性。
为了解决上述技术问题,本实施例提供了一种缓存数据的处理方法、设备及系统,参考附图2所示,缓存数据的处理方法的执行主体可以为缓存数据的处理装置,缓存数据的处理装置可以实现为可编程转发硬件,即缓存数据的处理方法可以应用于可编程转发硬件,其中,可编程转发硬件可以基于地址的远程内存访问技术与外部存储设备通信连接。
在一些实例中,缓存数据的处理装置可以通信连接有核心网设备,并可以通过基站与一个或多个用户终端UE通信连接,上述的用户终端UE可以是任何可编程的具有一定信息推送和信息显示能力的计算设备,具体实现时,用户终端可以实现为手机、个人电脑、平板电脑、智能穿戴设备、待控车辆、专网设备等等。此外,用户终端的基本结构可以包括:至少一个处理器。处理器的数量取决于客户端的配置和类型。用户终端也可以包括存储器,该存储器可以为易失性的,例如RAM,也可以为非易失性的,例如只读存储器(Read-OnlyMemory,简称ROM)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作系统(Operating System,简称OS)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,用户终端还包括一些基本配置,例如网卡芯片、IO总线、显示组件以及一些外围设备等。可选地,一些外围设备可以包括,例如键盘、鼠标、输入笔、打印机等。其它外围设备在本领域中是众所周知的,在此不做赘述。
在本实施例中,缓存数据的处理装置与基站(核心网设备)进行网络连接,该网络连接可以是无线或有线网络连接。若缓存数据的处理装置与基站(核心网设备)是通信连接,该移动网络的网络制式可以为3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax、5G、6G等中的任意一种。
由于终端设备的不同运行状态可以对应有不同的缓存数据处理策略,为了能够对缓存数据进行稳定地读写操作,缓存数据的处理装置可以获取到终端设备的运行状态,在终端设备处于缓存释放状态时,可以获取外部存储设备中的与终端设备相对应的存储队列,存储队列用于对与终端设备相对应的数据进行缓存操作,其中,为了保证数据项的处理有序性,存储队列中的数据项可以满足先进先出原则;或者,存储队列中的数据项可以满足后进后出原则,上述的先进先出原则与后进后出原则等同。
为了能够稳定地对缓存数据进行处理操作,并保证缓存数据的处理时序,则可以确定与存储队列相对应的读指针和写指针,上述的读指针用于对存储队列中的数据进行读取操作,写指针用于对存储队列进行数据的写入操作;在确定与存储队列相对应的读指针和写指针之后,可以基于读指针和写指针对存储队列中的数据项进行循环读写操作,从而有效地实现了可编程转发硬件的自循环操作。
本实施例提供的技术方案,通过外部存储设备有效地拓展了可编程转发硬件的缓存空间,具体通过可编程转发硬件和外部存储设备可以对缓存数据进行自循环的读写操作,这样不仅实现了将缓存数据的处理逻辑卸载到可编程转发硬件和外部存储设备中,并且还保证了缓存数据能够以先进先出或者后进后出的原则进行处理操作,进一步提高了该方法的实用性。
下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图3为本申请实施例提供的一种缓存数据的处理方法的流程示意图;参考附图3所示,本实施例提供了一种缓存数据的处理方法,该方法的执行主体为缓存数据的处理装置,可以理解的是,该缓存数据的处理装置可以实现为软件、或者软件和硬件的组合,具体的,在缓存数据的处理装置实现为硬件时,其可以是具有缓存数据的处理能力的各种电子设备。当缓存数据的处理装置实现为软件时,其可以安装在上述的电子设备中,在一些实例中,缓存数据的处理装置可以实现为可编程转发硬件,即该缓存数据的处理方法可以应用于可编程转发硬件,在一些实例中,可编程转发硬件可以实现为以下至少之一:可编程交换机(例如:可编程专用集成电路ASIC芯片)、基于可编程硬件的智能网卡、软件交换机等等。可编程转发硬件可以基于地址的远程内存访问技术与外部存储设备通信连接,上述的基于地址的远程内存访问技术可以包括以下至少之一:基于网络的远程内存访问技术(RemoteDirectMemoryAccess,简称RDMA)、直接内存访问(Direct Memory Access,简称DMA)、计算快速链接(Compute Express Link,简称CXL)等等;外部存储设备可以实现为以下至少之一:服务器内存池、高速串行计算机扩展总线标准(Peripheral ComponentInterconnect Express,简称PCIE)内存卡等等。
具体的,该缓存数据的处理方法可以包括:
步骤S301:在终端设备处于缓存释放状态时,获取外部存储设备中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态。
步骤S302:确定与存储队列相对应的读指针和写指针。
步骤S303:基于读指针和写指针对存储队列中的数据项进行循环读写操作。
下面对上述各个步骤的具体实现过程和实现效果进行详细说明:
步骤S301:在终端设备处于缓存释放状态时,获取外部存储设备中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态。
其中,缓存数据的处理装置可以通过基站与一个或多个终端设备通信连接,进而终端设备可以通过缓存数据的处理装置与核心网通信连接,此时的终端设备针对与核心网的通信连接状态可以对应有不同的运行状态,具体的,参考附图4所示,对于终端设备UE而言,可以包括网络连接状态、网络断开状态以及用于标识终端设备由网络断开状态调整为网络连接状态之间中间状态的缓存释放状态。
在一些实例中,在终端设备能够通过缓存数据的处理装置与核心网进行数据传输操作时,则可以确定终端设备处于网络连接状态;在终端设备不能通过缓存数据的处理装置与核心网进行数据传输操作时,则可以确定终端设备处于网络断开状态;在终端设备处于网络断开状态,而后重新接入核心网的过程,则可以确定终端设备处于缓存释放状态,即缓存释放状态为网络断开状态与网络连接状态之间的中间状态或者过渡状态,需要注意的是,此时的外部存储设备中的缓存会向外释放缓存的数据包,同时存储新来的数据包,直到缓存的数据包被释放完毕,此时,终端设备的状态为缓存释放状态Buffer Pop;当缓存数据已经清除时,即数据包不会经过外部存储设备进行缓存,终端设备则可以由缓存释放状态调整为网络连接状态,从而有效地实现了终端设备在不同的运行状态之间进行切换和调整。
对于终端设备而言,由于不同的运行状态对应有不同的缓存数据处理策略,例如:在终端设备处于网络断开状态时,则缓存数据的处理装置可以对与终端设备相对应的数据包进行缓存处理;在终端设备处于网络连接状态时,则缓存数据的处理装置无需对与终端设备相对应的数据包进行缓存处理。在终端设备处于缓存释放状态时,由于此时需要对缓存数据的处理装置中所存储的缓存数据进行释放操作,因此,为了保证缓存数据的处理质量和效果,可以获取外部存储设备中的与终端设备相对应的存储队列,外部存储设备中可以包括多个存储队列,不同的终端设备可以对应有不同的存储队列,具体的,在缓存数据的处理装置通信连接有多个终端设备时,可以为每个终端设备配置一个存储队列,以通过所配置的存储队列来存储与终端设备相对应的缓存数据包。
在一些实例中,存储队列可以通过对队列参数(例如:队列长度参数、队列数据项参数等等)进行配置所获得,此时,获取外部存储设备中的与终端设备相对应的存储队列可以包括:获取用于限定存储队列长度的参数信息L以及用于存储在存储队列中的数据项的长度参数S,其中,用于存储在存储队列中的数据项的长度参数S略大于最大传输单元(Maximum Transmission Unit,简称MTU)值;基于参数信息L和用于存储在存储队列中的数据项的长度参数S,确定外部存储设备中的与终端设备相对应的存储队列。
在另一些实例中,存储队列不仅可以通过对队列参数进行配置所获得,还可以通过预先配置的映射关系来获取与终端设备相对应的存储队列,此时,获取外部存储设备中的与终端设备相对应的存储队列可以包括:获取预先配置有不同的终端设备与存储队列之间的映射关系,确定与终端设备相对应的设备标识;基于映射关系确定与设备标识相对应的目标存储队列,而后将目标存储队列确定为与终端设备相对应的存储队列。
需要注意的是,存储队列可以为外部存储设备中的一块连续内存,所获得的存储队列存储有与终端设备相对应的至少一个数据项(或者数据包),数据项至少包括:数据包类型、用于标识是否为空的标识位、下一个数据项的地址信息、传输数据以及步骤索引;具体的,如图5所示,存储队列中可以包括多个数据项,每个数据项可以为一个含m个字节的结构体,m略大于MTU字节,在一些实例中,m可以比MTU字节大于20或者30,具体的,由于P4等可编程硬件语言不支持乘法,因此,所配置的终端设备的数量N、存储队列中的条目数量L、以及每个数据项的字节数m均可以设置为2的幂次大小(1024、2048等),这样方便利用移位来计算内存地址。
对于UE和所UE所对应的存储队列而言,可以通过hash函数将UE和存储队列中的某一段内存进行映射,每一段内存为一个定长的列表,列表的项用于存储缓存的数据包和对应的控制信息(数据包类型、是否为空的标识位、步骤索引、下一个数据项的地址信息等等);具体的,上述的m个字节的结构体可以包括以下部分:(1)数据包类型Packet Type,大小为8bit,用于识别包的类型(缓存的数据包),其中,数据包类型可以包括以下至少之一:新来的数据包、读循环的数据包等等;(2)用于标识是否为空的标识位Is Empty,用于判断对应的内存区域是否为空的标识位,该标识位仅在数据写入时会被改为False,即内存区域为非空;该标识位在数据读出时被改为True,即内存区域为空;(3)步骤索引Step Index,用于控制循环轮数的控制标志;(4)下一个数据项的地址信息Next Entry Addr,用于指向下一项的内存地址值,可编程转发硬件的运算能力有限,预置可以简化实现;(5)待传输数据包,用于存储在长度为MTU的数据存储空间;(6)预设添加字节,用于填满m个字节。
另外,终端设备与存储队列之间的关系可以通过至少2维数组进行表达,在一些实例中,在存储队列与终端设备之间的关系映射为2维数组时,第一维数组用于映射UE与内存地址之间的映射关系,具体的,UE可以通过五元组的哈希Hash运算结果映射到具体的存储队列位置;第二维数组用于映射UE与存储队列中缓存数据包的编号(从1递增到L)之间的映射关系,例如:在UE的数量为N个、存储队列包括L个存储项时,则可以获取到N个UE与L个存储项之间的映射关系。
在另一些实例中,存储队列与终端设备之间的关系可以映射为3维数组,此时,第一维数组用于映射UE与内存地址之间的映射关系,具体的,UE可以通过五元组的哈希Hash运算结果映射到具体的存储队列位置;第二维数组用于映射存储队列中缓存数据包的编号(从1递增到L)与数据流flow之间的映射关系;第三组数组用于映射UE与数据流之间的映射关系,从而有效地实现了可以基于流粒度对缓存数据进行管理和处理操作。
此外,在存储队列存储一个或多个数据项时,位于存储队列中的数据项可以满足先进先出原则,或者,位于存储队列中的数据项可以满足后进后出原则,上述的先进先出原则与后进后出原则等同,均能够实现对存储队列中的数据项进行有序处理操作。
步骤S302:确定与存储队列相对应的读指针和写指针。
在获取到与终端设备相对应的存储队列之后,为了能够实现对存储队列中的缓存数据进行稳定地处理操作,可以确定与存储队列相对应的读指针和写指针,其中,读指针用于对存储队列中的缓存数据进行读取操作,写指针用于对存储队列进行缓存数据的写入操作。
在一些实例中,与存储队列相对应的读指针和写指针可以存储在缓存数据的处理装置中,此时,确定与存储队列相对应的读指针和写指针可以包括:确定缓存数据的处理装置中的用于存储读指针和写指针的预设区域;通过访问预设区域主动或者被动地获取与存储队列相对应的读指针和写指针,从而有效地保证了对读指针和写指针进行确定的准确可靠性。
在另一些实例中,与存储队列相对应的读指针和写指针可以存储至外部存储设备中,确定与存储队列相对应的读指针和写指针可以包括:获取与终端设备相对应的数据包;将数据包发送至外部存储设备,以通过外部存储设备获取与存储队列相对应的读指针和写指针。
具体的,在终端设备处于缓存释放状态时,核心网可以不断地向缓存数据的处理装置发送用于实现寻呼操作的数据包,从而使得缓存数据的处理装置可以获取到与终端设备相对应的数据包,为了能够将数据包存储在外部存储设备中,则可以将数据包发送至外部存储设备中;在外部存储设备获取到数据包之后,外部存储设备可以对数据包进行缓存操作,同时,由于外部存储设备中存储有与存储队列相对应的读指针和写指针,为了能够稳定地实现进行缓存数据的处理操作,可以基于数据包获取与存储队列相对应的读指针和写指针,并将与存储队列相对应的读指针和写指针返回至缓存数据的处理装置,从而使得缓存数据的处理装置可以稳定地获取到与存储队列相对应的读指针和写指针。
需要注意的是,外部存储设备中不仅可以存储读指针和写指针,还可以存储终端设备的运行状态(网络连接状态、网络断开状态、缓存释放状态等等),对于终端设备的状态而言,可以通过缓存数据的处理装置或者与缓存数据的处理装置通信连接的核心处理器(Central Processing Unit,简称CPU)进行更新或者调整操作。
步骤S303:基于读指针和写指针对存储队列中的数据项进行循环读写操作。
由于读指针用于对存储队列中的数据项进行读写操作,写指针用于对存储队列进行数据项的写入操作,因此,在获取到读指针和写指针之后,可以基于读指针和写指针对存储队列中的数据项进行循环读写操作,在一些实例中,基于读指针和写指针对存储队列中的数据项进行循环读写操作可以包括:基于读指针对存储队列中的数据包进行循环读取操作;并基于写指针对存储队列进行数据包的循环写入操作,此时,基于读指针所实现的循环读取操作与基于写指针的循环写入操作可以相互独立。
需要注意的是,由于终端设备对应有不同的运行状态,不同的运行状态可以对应有不同的循环读写策略,例如,在终端设备处于网络断开状态时,在获取到与终端设备相对应的数据包时,则允许将数据包直接写入到写指针所对应的位置,从而有效地实现了对数据包进行缓存操作。
在另一些实例中,循环读写操作是结合读指针的位置和写指针的位置所实现的,此时,基于读指针和写指针对存储队列中的数据项进行循环读写操作可以包括:获取读指针所在的第一位置和写指针所在的第二位置;基于第一位置和第二位置对存储队列中的数据项进行循环读写操作。
具体的,在获取到读指针和写指针之后,可以分别对读指针和写指针进行分析处理,确定读指针所在的第一位置和写指针所在的第二位置,而后可以基于第一位置和第二位置对存储队列中的数据项进行循环读写操作,在一些实例中,循环读写操作可以通过预先配置的机器学习模型所实现,此时,基于第一位置和第二位置对存储队列中的数据项进行循环读写操作可以包括:获取预先训练好的机器学习模型,将第一位置、第二位置和存储队列输入至机器学习模型中,从而可以基于机器学习模型实现对存储队列中的数据项进行循环读写操作。
在又一些实例中,循环读写操作不仅可以通过机器学习模型所实现,还可以通过对第一位置和第二位置进行分析比较的结果来实现,此时,基于第一位置和第二位置对存储队列中的数据项进行循环读写操作可以包括:在第一位置与第二位置相同时,则允许基于读指针对存储队列中的数据项进行循环读取操作,并禁止基于写指针对存储队列进行数据项的循环写入操作;在第一位置位于第二位置之后时,则允许基于读指针对存储队列中的数据项进行循环读取操作,并允许基于写指针对存储队列进行数据项的循环写入操作。
具体的,在获取到读指针(ptr_pop)所在的第一位置和写指针(ptr_push)所在的第二位置之后,可以将第一位置与第二位置进行分析比较,在第一位置与第二位置相同时,则说明此时读指针所对应的数据读取位置与写指针所对应的数据写入位置相同,即存储队列中的缓存数据已经释放完毕或者即将释放完毕,此时的终端设备处于或者即将处于缓存数据已清除的状态,终端设备即将由缓存释放状态调整为网络连接状态,进而则可以允许基于读指针对存储队列中的数据项进行循环读取操作,并禁止基于写指针对存储队列进行数据项的循环写入操作。
在第一位置位于第二位置之后时,则说明此时读指针所对应的数据读取位置位于写指针所对应的数据写入位置的后面,即存储队列中的缓存数据未释放完毕,此时,对于外部存储设备而言,会不断的有数据包写入至外部存储设备,并且,终端设备可以根据需求不断地对外部存储设备中的缓存数据包进行读取释放操作,进而则允许基于读指针对存储队列中的数据项进行循环读取操作,并允许基于写指针对存储队列进行数据项的循环写入操作,从而有效地实现了基于读指针和写指针对存储队列进行循环读写操作。
另外,在第一位置与第二位置相同时,为了提高该方法的实用性,本实施例中还能够实现对终端设备与网络之间的连接状态进行更新操作,此时,本实施例中的方法可以包括:生成与终端设备相对应的状态更新指令;基于状态更新指令将终端设备由缓存释放状态更新为网络连接状态。
具体的,在获取到读指针所在的第一位置和写指针所在的第二位置相同时,由于此时缓存队列中的数据项已经释放完毕,进而终端设备即将与核心网建立通信连接,因此,可以生成与终端设备相对应的状态更新指令,该状态更新指令中可以包括终端设备的设备标识、网路连接状态的标识等等;在获取到状态更新指令之后,可以基于状态更新指令将终端设备由缓存释放状态更新为网络连接状态,从而有效地实现了对终端设备的运行状态进行更新操作,进一步提高了该方法的实用性。
本实施例提供的缓存数据的处理方法,在终端设备处于缓存释放状态时,通过获取外部存储设备中的与终端设备相对应的存储队列,而后确定与存储队列相对应的读指针和写指针,并基于读指针和写指针对存储队列中的数据项进行循环读写操作,通过外部存储设备有效地拓展了可编程转发硬件的缓存空间,并且通过读指针和写指针实现了对缓存数据进行自循环的读写处理操作,这样不仅实现了将缓存数据的逻辑卸载到可编程转发硬件和外部存储设备中,并且还保证了缓存数据能够以先进先出或者后进后出的原则进行处理操作,进一步提高了该方法的实用性,有利于市场的推广与应用。
图6为本申请实施例提供的基于读指针和写指针对存储队列中的数据项进行循环读写操作的流程示意图;在上述实施例的基础上,参考附图6所示,对于存储队列中的数据项而言,不仅可以通过读指针所在的第一位置和写指针所在的第二位置进行循环读写操作,还可以结合存储队列的队列状态来进行循环读写操作,此时,本实施例中的基于读指针和写指针对存储队列中的数据项进行循环读写操作可以包括:
步骤S601:识别存储队列是否存在空白区域。
对于外部存储设备中的存储队列而言,存储队列可以基于不同数量的缓存数据包对应有不同的状态,例如:存储队列存在空白区域的状态、存储队列不存在空白区域的状态等等。由于存储队列对应有不同的状态,而不同的状态可以对应有不同的处理策略,因此,为了能够保证循环读写操作的顺利进行,在获取到外部存储设备中的与终端设备相对应的存储队列之后,可以对存储队列进行分析处理,以识别存储队列是否存在空白区域。
在一些实例中,存储队列是否存在空白区域可以通过对存储队列和所存储的数据包的数量进行分析处理所获得,具体的,在存储队列的所有区域中均存储有缓存数据包时,则可以确定存储队列不存在空白区域;在存储队列的部分区域中存储有缓存数据包时,则可以确定存储队列存在空白区域。
或者,在另一些实例中,存储队列的状态可以通过预设标识所获得,此时,识别存储队列是否存在空白区域可以包括:获取与存储队列相对应的队列标识;在队列标识为第一预设标识时,则可以确定存储队列中存在空白区域;在队列标识为第二预设标识时,则可以确定存储队列中不存在空白区域,从而有效地实现了对存储队列是否存在空白区域进行识别操作。
步骤S602:根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作。
在获取到存储队列是否存在空白区域的识别结果之后,可以结合识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作,在一些实例中,循环读写操作可以通过预先训练好的机器学习模型所实现,此时,根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作可以包括:获取预先训练好的用于实现循环读写操作的机器学习模型,将识别结果、读指针、写指针和存储队列输入至机器学习模型中,从而可以实现针对存储队列中的数据项进行循环读写操作。
在另一些实例中,不仅可以通过预先训练好的机器学习模型实现循环读写操作,还可以直接对识别结果、读指针和写指针进行分析处理实现循环读写操作,此时,根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作可以包括:在识别结果为存储队列包括空闲区域时,则允许基于读指针和写指针对存储队列中的数据项进行循环读写操作;在识别结果为存储队列不包括空闲区域时,则说明此时的存储队列已经写满数据,并不能继续在存储队列中进行数据包的写入操作,进而则禁止基于写指针对存储队列进行数据项的循环写入操作,并允许基于读指针对存储队列中的数据项进行循环读取操作,从而有效地实现了可以结合识别结果、读指针和写指针对存储队列中的数据项稳定地进行循环读写操作。
本实施例中,通过识别存储队列是否存在空白区域,而后可以根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作,从而有效地保证了循环读写操作的灵活可靠性,进一步提高了该方法的实用性。
图7为本申请实施例提供的基于读指针对存储队列中的数据项进行循环读取操作的流程示意图;在上述任意一个实施例的基础上,参考附图7所示,本实施例提供了一种基于循环步骤标识实现循环读取操作的方案,具体的,本实施例中的基于读指针对存储队列中的数据项进行循环读取操作可以包括:
步骤S701:生成与读指针相对应的循环读取指令,循环读取指令中包括与循环读取操作相对应的循环步骤标识。
在获取到读指针和存储队列之后,为了能够实现循环读取操作,可以生成与读指针相对应的循环读取指令,循环读取指令中包括与循环读取操作相对应的循环步骤标识。在一些实例中,循环读取指令可以通过预先训练好的机器学习模型所获得,此时,生成与读指针相对应的循环读取指令可以包括:获取预先训练好的用于生成循环读取指令的机器学习模型,将读指针和存储队列输入至机器学习模型中,获得机器学习模型所输出的循环读取指令,所生成的循环读取指令中可以包括与循环读取操作相对应的循环步骤标识。
在另一些实例中,循环读取指令不仅可以通过机器学习模型所生成,还可以通过控制面生成循环读取指令,此时,生成与读指针相对应的循环读取指令可以包括:通过控制面获取包括读指针的读取触发包;基于读取触发包生成与读指针相对应的读取指令,并将读取指令发送至外部存储设备,以通过外部存储设备获取回传数据;基于回传数据生成与读指针相对应的循环读取指令。
具体的,在终端设备处于缓存释放状态时,为了能够实现循环读取操作,核心网控制面可以通过外部存储设备获取到读指针,并主动地生成包括读指针的读取触发包,而后核心网控制面可以将所生成的读取触发包发送至缓存数据的处理装置,从而使得缓存数据的处理装置稳定地获取到包括读指针的读取触发包。在缓存数据的处理装置获取到读取触发包之后,可以对读取触发包进行分析处理,从而可以生成与读指针相对应的读取指令。
需要注意的是,对于缓存数据的处理装置而言,数据读写操作往往是基于触发包所实现的,而基于缓存数据的处理装置的硬件限制,一个触发包(对应于上述实施例中的读取指令)只能触发2到3个数据读写操作包,这样无法实现循环读写操作。此时,在终端设备处于缓存释放状态时,为了能够保证存储队列中的数据项进行循环读取操作,需要获取与读指针相对应的循环读取指令,具体的,读取指令可以实现为RDMA READ,该读取指令用于读取外部存储设备中的缓存数据。
在缓存数据的处理装置获取到读取指令之后,可以将读取指令发送至外部存储设备,在外部存储设备获取到读取指令之后,可以获取到与读取指令相对应的待读取数据,例如,待读取数据可以为data0,并基于待读取数据生成与读取指令相对应的回传数据READResp,该回传数据READ Resp中可以包括待读取数据、数据包类型、所在地址是否为空、循环步骤标识、下一个数据项的地址以及填充数据等等。在获取到回传数据之后,可以对回传数据进行分析处理,以生成与读指针相对应的循环读取指令,在一些实例中,循环读取指令可以与回传数据相同,并且,该循环读取指令用于重新对外部存储设备中的缓存数据进行循环读取操作。
步骤S702:将循环读取指令发送至外部存储设备,以通过外部存储设备进行数据项的循环读取操作。
在获取到循环读取指令之后,为了能够实现循环读取操作,可以将循环读取指令发送至外部存储设备,在外部存储设备获取到循环读取指令之后,可以基于循环读取指令进行数据项的循环读取操作。具体的,将循环读取指令发送至外部存储设备,以通过外部存储设备进行数据项的循环读取操作可以包括:将循环读取指令发送至外部存储设备,通过外部存储设备获取与循环读取指令相对应的回传数据,回传数据中包括位于回传数据之后的下一个数据项的内存地址以及循环步骤标识;基于下一个数据项的内存地址以及循环步骤标识进行数据项的循环读取操作。
举例来说,如图8所示,在可编程转发硬件获取到核心网控制面的触发包(触发包中可以包括:缓存数据的存储地址addr0等)之后,可以基于触发包生成读取指令RDMAREAD,并将读取指令RDMA READ发送至外部存储设备,在外部存储设备获取到读取指令RDMAREAD之后,可以将RDMA READ所对应的数据包返回至缓存数据的处理装置,从而使得缓存数据的处理装置可以获取到与读取指令相对应的读取回传数据READ Resp,在获取到READResp之后,可以基于READ Resp生成循环读取指令,该循环读取指令用于实现循环读取操作,具体的,可以基于缓存数据的存储地址addr1进行数据的循环读取操作,即基于循环读取指令先读取addr1所对应的缓存数据0,在获取到缓存数据0之后,可以基于缓存数据0所对应的下一个数据项的地址addr2以及循环读取指令读取addr2所对应的缓存数据Data1;依次类推,这样有效地实现了对外部存储设备中的数据项进行循环读取操作。
在另一些实例中,为了能够稳定地实现数据项的循环读取操作,可以基于下一个数据项的内存地址进行数据项的循环读取操作,此时,基于下一个数据项的内存地址进行数据项的循环读取操作可以包括:获取内存地址所对应的用于标识当前内存地址是否为空的标识位;在标识位用于标识内存地址所对应的区域为空时,则停止进行循环读取操作;在标识位用于标识内存地址所对应的区域为非空时,则读取与内存地址相对应的回传数据,并基于回传数据中包括的下一个数据项的内存地址继续进行循环读取操作。
具体的,在获取到回传数据之后,可以对回传数据进行分析处理,从而可以确定回传数据所对应的当前内存地址以及用于标识当前内存地址是否为空的标识位,在基于标识位确定当前内存地址所对应的区域为空时,则当前内存地址所对应的区域未存储缓存数据包,进而则停止进行循环读取操作;在标识位用于标识内存地址所对应的区域为非空时,则说明当前内存地址所对应的区域已经存储缓存数据包,进而可以读取与内存地址相对应的回传数据,并可以基于回传数据中包括的下一个数据项的内存地址继续进行循环读取操作,从而有效地保证了循环读取操作的持续进行或者即使停止操作。
举例来说,如图8所示,在可编程转发硬件获取到READ Resp之后,可以基于READResp生成循环读取指令,该循环读取指令用于重新基于缓存数据的存储地址addr1进行数据的循环读取操作,即基于循环读取指令先读取addr1所对应的缓存数据Data0,在获取到缓存数据Data0之后,可以确定缓存数据Data0所对应的下一个数据项的地址,而后可以确定下一个数据项的地址所对应的用于标识当前内存地址是否为空的标识位,在标识位为1时,则说明当前内存地址为非空,即当前内存地址所对应的区域中存储有缓存数据,即存储有缓存数据Data1,而后可以基于循环读取指令读取缓存数据Data1,以此类推,在获取到缓存数据Data1之后,可以确定缓存数据Data1所对应的下一个数据项的地址,而后可以确定下一个数据项的地址所对应的用于标识当前内存地址是否为空的标识位,在标识位为0时,则说明当前内存地址为空,即当前内存地址所对应的区域中未存储有缓存数据,进而则可以停止循环读取操作,从而有效地实现了可以基于数据包中的下一个数据项的地址以及循环读取指令进行循环读取操作,直至所读取数据所对应的地址标识为空为止,从而有效地实现了对外部存储设备进行数据项的循环读取操作。
在一些实例中,为了能够提高该方法的实用性,在读取与内存地址相对应的回传数据之后,由于内存地址中区域中的缓存数据已经经过读取释放操作,即内存地址中的区域状态已经发生变化,因此内存地址所对应的标识位需要进行更新操作,此时,本实施例中还可以实现对标识位进行更新操作,具体的,本实施例中的方法还可以包括:获取与内存地址相对应的非空标识以及标识调整信息;基于标识调整信息将非空标识调整为空标识,空标识用于标识内存地址所对应的区域为空。
具体的,在读取与内存地址相对应的回传数据之后,即已经将存储在内存地址所对应的区域中的数据进行了读取并释放操作,即内存地址所对应的区域已经发生了变化,因此,可以获取与内存地址相对应的非空标识以及标识调整信息,在获取到标识调整信息之后,可以基于标识调整信息将非空标识调整为空标识,空标识用于标识内存地址所对应的区域为空,例如,在非空标识为1,空标识为0时,在获取到标识调整信息之后,可以基于标识调整信息将内存地址所对应的状态由1调整为0;从而有效地实现了可以将内存地址的非空标识调整为空标识,这样便于实现稳定地进行数据的循环读写操作。
本实施例中,通过生成与读指针相对应的循环读取指令,将循环读取指令发送至外部存储设备,以通过外部存储设备进行数据项的循环读取操作,这样稳定地实现了数据项的循环读取操作,进一步提高了该方法的实用性。
图9为本申请实施例提供的另一种缓存数据的处理方法的流程示意图;在上述任意一个实施例的基础上,参考附图9所示,在确定与存储队列相对应的写指针之后,用户可以根据应用需求或者设计需求对数据写操作进行加锁,此时,本实施例还可以结合加锁机制进行数据写入操作,具体的,本实施例中的方法还可以包括:
步骤S901:识别写指针是否对应有写入锁。
对于外部存储设备而言,外部存储设备中可以包括一个或多个存储队列,每个存储队列均对应有读指针和写指针,为了能够保证数据写入操作的质量和效率,对于每个存储队列所对应的写指针而言,预先配置有是否需要对应写入锁,具体的,是否对应写入锁可以是用户基于人机交互操作所配置,或者可以根据应用场景进行灵活配置,即对于任意一个存储队列所对应的写指针而言,可能预先配置有相对应的写入锁。
因此,为了保证数据写入操作的稳定可靠性,在获取到存储队列所对应的写指针之后,可以识别写指针是否对应有写入锁,在一些实例中,是否对应有写入锁可以通过与写指针所对应的锁标识来识别,此时,识别写指针是否对应有并发锁可以包括:获取用于对写指针进行分析处理的指针操作表,指针操作表中包括写指针的指针标识以及用于标识写指针是否对应有写入锁的锁标识;基于指针操作表,确定与写指针相对应的锁标识;基于锁标识,识别写指针是否对应有写入锁。
具体的,在基于指针操作表确定与写指针相对应的锁标识之后,可以对锁标识进行分析处理,以识别写指针是否对应有写入锁;例如,在锁标识为预设的第一标识时,则确定写指针对应有写入锁;在锁标识为预设的第二标识时,则确定写指针未对应有写入锁,从而有效地实现了对写指针是否对应有写入锁进行识别操作。
步骤S902:在写指针对应有写入锁时,则基于写指针将待处理的数据包写入至可编程转发硬件的片上内存。
步骤S903:在写指针未对应有写入锁时,则基于写指针将待处理的数据包写入至外部存储设备。
具体的,在识别结果为写指针对应有写入锁时,则说明此时的写操作已经加锁,进而可以基于写指针将待处理的数据包写入至可编程转发硬件的片上内存,在一些实例中,待写操作所对应的写入锁解除后,则可以继续基于写指针将待处理的数据包写入至外部存储设备。在识别结果为写指针未对应有写入锁时,则说明此时的写操作未加锁,进而则可以基于写指针将待处理的数据包写入至外部存储设备中,从而有效地实现了可以结合写入锁的策略进行数据的写操作。
在另一些实例中,用户可以根据需求对外部存储设备进行读写操作,为了避免读写冲突、并保证数据处理的时序,在写指针对应有写入锁时,本实施例中的方法还可以包括异步进行读写操作的技术方案,此时,本实施例中的方法可以包括:确定与写入锁相对应的操作时间段;在操作时间段内,暂停基于读指针对存储队列中的数据项进行循环读取操作;在操作时间段之后,基于读指针对存储队列中的数据项进行循环读取操作。
其中,在写指针对应有写入锁时,可以对写入锁和写指针进行分析处理,以确定与写入所对应的操作时间段,在上述的操作时间段内,可以基于写指针不断地对外部存储设备的片上内存进行数据写入操作,为了保证写入数据以及读取数据的时序,可以暂停基于读指针对存储队列中的数据项进行循环读取操作,具体的,暂停基于读指针对存储队列中的数据项进行循环读取操作可以包括:基于读指针循环读取存储队列中的当前数据项。在操作时间段之后,说明已经完成了基于写指针进行数据写入操作,而后则可以基于读指针对存储队列中的数据项进行循环读取操作,从而有效地实现了数据的异步读写操作。
举例来说,参考附图10所示,可编程转发硬件配置有片上内存,并且可编程转发硬件通信连接有外部存储设备,在获取到读请求之后,可以识别读请求是否对应有读取锁,在读请求对应有读取锁时,可以在片上内存进行数据的循环读取操作,即可以基于读指针1读取相对应的数据包1,而后可以基于读指针2读取数据包2,在基于读指针2读取数据包2的过程中,若获取到写请求时,则可以先识别写指针是否对应有写入锁,在写指针对应有写入锁时,则可以基于写指针将待处理的数据包写入至可编程转发硬件的片上内存,即可以基于写指针1将待处理的数据包1写入至可编程转发硬件的片上内存,在2us之后,可以基于写指针2将待处理的数据包2写入至可编程转发硬件的片上内存。
为了能够实现异步的读写操作,在基于写指针1和写指针2将数据包写入到片上内存所对应的操作时间段的范围内,可以暂停基于读指针进行循环读取操作,具体的,暂停基于读指针进行循环读取操作可以包括:基于读指针2不断地读取相对应的数据包2,即不断地重复步骤i的读取操作,而不会进行步骤i+1的读取操作,这样不仅可以减少数据处理所需要占用的数据资源,并且还能够降低内存的占用率,
在写指针对应的写入锁的操作时间段之后,即写指针所对应的写入锁已经解除,则可以允许继续基于读指针对存储队列中的数据项进行循环读取操作,即可以不断地基于读指针1、读指针2针对存储队列中的数据项进行循环读取操作,从而有效地实现了异步读写操作。
在写指针未对应有写入锁,且读指针未对应有读取锁时,则可以继续基于写指针和读指针对外部存储设备中的存储队列进行数据的循环读取操作。或者,在写指针未对应有写入锁,且读指针对应有读取锁时,则可以基于读指针对片上内存中的数据进行循环读取操作,在读取锁解除之后,可以基于写指针和读指针对外部存储设备中的存储队列进行数据的循环读取操作。
本实施例中,通过识别写指针是否对应有写入锁,在写指针对应有写入锁时,则基于写指针将待处理的数据包写入至可编程转发硬件的片上内存;在写指针未对应有写入锁时,则基于写指针将待处理的数据包写入至外部存储设备,从而有效地实现了对于缓存数据而言,可以在已经锁定的数据写入期间将数据的读循环暂停,直到数据写入完成,有效地保证了对缓存数据进行处理的时序,进一步提高了该方法的实用性。
具体应用时,参考附图11所示,以可编程ASIC芯片作为可编程转发硬件为例,本应用实施例基于可编程ASIC芯片的转存分离架构提供了一种针对缓存数据的有序缓存机制,用于解决可编程ASIC芯片缺乏数据缓存能力的短板,上述有序缓存机制的执行主体可以为可编程转发硬件,可编程转发硬件基于先进先出以及地址的远端内存访问连接的通信协议与外部存储设备通信连接,其中,可编程转发硬件可以实现为以下至少之一:可编程交换机、基于可编程硬件的智能网卡、软件交换机等;基于先进先出以及地址的远端内存访问连接的通信协议可以包括以下至少之一:基于网络的远程内存访问技术(RemoteDirectMemoryAccess,简称RDMA)、直接内存访问(Direct Memory Access,简称DMA)、计算快速链接(Compute Express Link,简称CXL)等等,外部存储设备可以包括以下至少之一:服务器内存池、高速串行计算机扩展总线标准(PeripheralComponentInterconnect Express,简称PCIE)内存卡等等。
以可编程ASIC芯片与服务器集群的内存池基于以太网的RDMA连接为例,可编程转发硬件可以通信连接有一个或多个终端设备UE,针对每个终端设备(总计N个用户)配置一个存储队列来存储被缓存的数据包。存储队列的长度是固定值L,在一些实例中,L可以为128、256或者1024等等,存储队列中所包括的每一数据项可以包含数据包数据和控制参数(可以包括数据包类型、用于标识是否为空的标识位、下一个数据项的地址信息以及步骤索引等等),数据项的长度略大于网络的MTU值,为预先配置的定长。
另外,对于存储队列而言,每个存储队列可以通过两个指针进行相对应的数据处理操作,两个指针可以包括用于实现循环写操作的写指针和用于实现循环读操作的读指针,具体的,终端设备的状态、写指针的位置、读指针的位置以及终端设备所对应的规则(转发规则、服务质量(Quality of Service,简称QoS)规则等等)可以存储在远端缓存(即外部存储设备)中。对于终端设备的初始状态而言,可以由控制面(CPU)将所获得的终端设备的初始状态存储在外部存储设备中,并且,终端设备的状态可以被控制面(CPU)或者可编程转发面通过RDMA进行更改或者调整。
在将数据包写入外部存储设备中的预设存储队列时,可以将数据包写入到写指针(ptr_push)的位置,在将数据包写入到写指针(ptr_push)的位置之后,写指针会指向存储队列的后一项;当释放一个数据包时,可以读取读指针(ptr_pop)位置的数据,将该位置的为空标志位置为True,表示已经释放,然后将读指针指向下一项。当读指针和写指针指向存储队列的末尾时,会被重新置为0,从而实现环形队列;当缓存的数据包超出L个时,先进入的包会被覆盖掉。
举例来说,在存储队列中存储有数据项1、数据项2、数据项3以及数据项4时,在可编程转发硬件获取到数据包5和数据包6时,则可以基于写指针(ptr_push)将待写入数据包写入至数据项4的后面,在终端设备处于缓存释放状态时,则可以基于读指针不断地对存储队列中的数据项进行循环读取操作,即会先读取数据包1、数据包2、数据包3、数据包4、数据包5以及数据包6,从而保证了对缓存数据的有序释放操作。
具体的,缓存数据的写入操作和读出操作可以由控制参数(是否为空的标识值、步骤索引值、以及下一个数据项的内存地址)来实现,具体的,缓存数据的写入方法可以包括以下步骤:
步骤11:获取终端设备UE的运行状态。
步骤12:在终端设备UE处于网络断开状态Disconnect时,获取新来的待处理数据包、外部存储设备中的与UE相对应的存储队列以及写指针(ptr_push)的位置。
步骤13:基于写指针(ptr_push)的位置将新来的待处理数据包写入到存储队列中。
步骤21:获取终端设备UE的运行状态。
步骤22:在终端设备UE处于缓存释放状态Buffer Pop时,获取新来的待处理数据包、外部存储设备中的与UE相对应的存储队列、写指针(ptr_push)的位置以及读指针(ptr_pop)的位置。
步骤23:当写指针(ptr_push)的位置与读指针(ptr_pop)的位置相等时,说明外部存储设备中的缓存数据已经释放完毕,而后可以将UE由缓存释放状态Buffer Pop调整为网络连接状态Connected,并可以停止数据的继续写入操作;当写指针(ptr_push)的位置位于读指针(ptr_pop)的位置之前时,说明外部存储设备中的缓存数据未释放完毕,而后可以基于写指针对存储队列中的数据进行循环写入操作。
另一方面,上述的步骤22与步骤23可以替换为以下步骤22`和步骤23`,具体的:
步骤22`:在终端设备UE处于缓存释放状态Buffer Pop时,获取新来的待处理数据包、外部存储设备中的与UE相对应的存储队列以及存储队列的区域状态。
步骤23`:在存储队列的区域状态为写满状态,则停止基于写指针进行数据的写入操作;在存储队列的区域状态为未写满状态,则允许基于写指针进行数据的循环写入操作。
此外,在UE从Disconnect状态进入Buffer Pop状态时,会有新的数据包写入,因此读出数据包的数量是动态的,需要用循环操作才能将数据包读完,此时,可编程ASIC芯片可以不断将数据包从片上内存和存储队列中读出,然后执行数据的转发操作,具体的,缓存数据的读出方法可以包括以下步骤:
步骤31:获取终端设备UE的运行状态。
步骤32:在终端设备UE处于缓存释放状态Buffer Pop时,控制面(CPU)可以生成一个包含当前读指针(ptr_pop)的触发包,并将触发包发送至可编程ASIC芯片。
步骤33:在可编程ASIC芯片获取到触发包之后,可以对触发包进行识别处理,生成与触发包相对应的RDMA读指令,该RDMA读指令用于读取对应内存地址的数据。
步骤34:将RDMA读指令发送至外部存储设备中,以读取对应内存地址的数据。
步骤35:外部存储设备会返回RDMA Resp数据包来回传数据,回传数据中包含了数据包的类型参数、下一个数据项的内存地址等控制信息,上述的信息可以被可编程ASIC芯片进行识别。
步骤36:可编程ASIC芯片可以基于数据包中包括的下一个数据项的内存地址再触发下一个数据包的读取操作,从而可以构成循环读取操作。
具体的,循环读取操作可以通过用于标识是否为空的标识位、步骤索引以及下一个数据项的地址信息来实现,当在读取一个数据包时,如果其is Empty的标识位为True,则说明此时的地址信息所对应的区域中未存储有缓存数据,则读取循环就会终止;如果其isEmpty的标识位为False,则说明此时的地址信息所对应的区域中存储有缓存数据,进而可以读取相对应的缓存数据,在将缓存数据进行转发之后,可以将地址信息所对应的isEmpty标志位更新为True,并基于下一个数据项的内存地址和步骤索引等控制参数进行循环读取操作。
进一步的,在读写过程中都需要操作UE的读指针、写指针、UE的状态以及存储的数据。在BufferClear的状态下读写会同时进行,而RDMA的操作延迟远高于可编程ASIC芯片本身的处理时延,因此会因存储读写冲突而导致的数据不同步,甚至可能会导致丢包或者包顺序错乱的情况,针对指针这些大小较小的参数而言,可以使用片上缓存和加锁的方式保证读写数据的一致性,即在读写操作中加锁,有锁时就处理片上SRAM中的缓存数据,锁解除后再读写远端存储中的缓存数据,具体的,此时的方法可以包括:
步骤41:获取待处理数据的读指针和写指针;
步骤42:识别读指针是否对应有读出锁以及写指针是否对应有写入锁;
步骤43:在读指针对应有读出锁时,则可以基于读指针在可编程ASIC芯片所对应的片上内存SRAM进行数据读取操作;在读指针未对应有读出锁或者读指针的读出锁解除时,则可以基于读指针在可编程ASIC芯片所对应的外部存储设备进行数据读取操作。
步骤44:在写入所对应有写入锁时,则可以基于写指针在可编程ASIC芯片所对应的片上内存SRAM进行数据写入操作,并禁止基于读指针进行数据读取操作;在写指针未对应有写入锁或者写指针的写入锁解除时,则可以基于写指针在可编程ASIC芯片所对应的外部存储设备进行数据写入操作。
本应用实施例提供的技术方案,基于可编程转发设备、RDMA和先进先出的通信连接协议与外部存储设备通信连接,可以将缓存数据的全部缓存逻辑卸载到了可编程转发面和具有RDMA引擎的以太网卡(RNIC),这样不必考虑多个存储池的逻辑处理同步问题,也不会占用CPU的资源,并可以基于RDMA协议和可编程转发设备实现自循环的读写操作,并且,通过结合可编程转发面的特性,针对读写冲突设计了锁机制和循环中断机制,具体的,对于数据包本身,通过对读取循环进行改进,在写期间会将读循环暂停,直到写入完成,以此保证缓存数据的处理时序;此外,由于可编程转发设备是云网络基建的一部分,因此具有使用量大、成本更低的优势,并且,远端服务器组成的RDMA内存池天然是弹性的,可以随应用场景的需求快速扩缩容,除此之外,因为外部存储设备的存储和其控制逻辑是硬件隔离的,当可编程转发硬件等中心设备发生故障、需要切换到热备设备时,缓存的数据包也不会丢失,进一步提高了对缓存数据进行处理的稳定可靠性,保证了该技术方案的实用性。
图12为本申请实施例提供的一种缓存数据的处理系统的结构示意图;参考附图12所示,本实施例提供了一种缓存数据的处理系统,该缓存数据的处理系统可以实现缓存数据的循环读写操作,并且,缓存数据的处理系统可以实现为应用于5G核心网的UPF数据转发面,也可以适用于可编程转发硬件(交换机、智能网卡)需要更大缓存的场景,这样对数据中心部署UPF有着很好的实用价值和应用前景。具体的,该缓存数据的处理系统可以包括:
外部存储设备11;
可编程转发硬件12,基于地址的远程内存访问技术与外部存储设备11通信连接,用于:在终端设备处于缓存释放状态时,获取外部存储设备11中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态;确定与存储队列相对应的读指针和写指针;基于读指针和写指针对存储队列中的数据项进行循环读写操作。
在一些实例中,可编程转发硬件12具体用于:获取所述读指针所在的第一位置和所述写指针所在的第二位置;基于所述第一位置和所述第二位置对所述存储队列中的数据项进行循环读写操作。
需要注意的是,本实施例中的外部存储设备11和可编程转发硬件12还可以执行图2-图11所示实施例中的方法,本实施例未详细描述的部分,可参考对图2-图11所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2-图11所示实施例中的描述,在此不再赘述。
图13为本申请实施例提供的一种缓存数据的处理装置的结构示意图;参考附图13所示,本实施例提供了一种缓存数据的处理装置,该缓存数据的处理装置可以实现为可编程转发硬件,可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接,并可以执行上述图3所示的缓存数据的处理方法,具体的,缓存数据的处理装置可以包括:
第一获取模块21,用于在终端设备处于缓存释放状态时,获取外部存储设备中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态;
第一确定模块22,用于确定与存储队列相对应的读指针和写指针;
第一处理模块23,用于基于读指针和写指针对存储队列中的数据项进行循环读写操作。
在一些实例中,读指针和写指针存储至外部存储设备中;在第一确定模块22确定与存储队列相对应的读指针和写指针时,该第一确定模块22用于执行:获取与终端设备相对应的数据包;将数据包发送至外部存储设备,以通过外部存储设备获取与存储队列相对应的读指针和写指针。
在一些实例中,在第一处理模块23基于读指针和写指针对存储队列中的数据项进行循环读写操作时,该第一处理模块23用于执行:获取读指针所在的第一位置和写指针所在的第二位置;基于第一位置和第二位置对存储队列中的数据项进行循环读写操作。
在一些实例中,在第一处理模块23基于第一位置和第二位置对存储队列中的数据项进行循环读写操作时,该第一处理模块23用于执行:在第一位置与第二位置相同时,则允许基于读指针对存储队列中的数据项进行循环读取操作,并禁止基于写指针对存储队列进行数据项的循环写入操作;在第一位置位于第二位置之后时,则允许基于读指针对存储队列中的数据项进行循环读取操作,并允许基于写指针对存储队列进行数据项的循环写入操作。
在一些实例中,在第一位置与第二位置相同时,本实施例中的第一处理模块23用于执行:生成与终端设备相对应的状态更新指令;基于状态更新指令将终端设备由缓存释放状态更新为网络连接状态。
在一些实例中,在第一处理模块23基于读指针和写指针对存储队列中的数据项进行循环读写操作时,该第一处理模块23用于执行:识别存储队列是否存在空白区域;根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作。
在一些实例中,在第一处理模块23根据识别结果、读指针和写指针对存储队列中的数据项进行循环读写操作时,该第一处理模块23用于执行:在识别结果为存储队列包括空闲区域时,则允许基于读指针和写指针对存储队列中的数据项进行循环读写操作;在识别结果为存储队列不包括空闲区域时,则允许基于读指针对存储队列中的数据项进行循环读取操作,并禁止基于写指针对存储队列进行数据项的循环写入操作。
在一些实例中,在第一处理模块23基于读指针对存储队列中的数据项进行循环读取操作时,该第一处理模块23用于执行:生成与读指针相对应的循环读取指令,循环读取指令中包括与循环读取操作相对应的循环步骤标识;将循环读取指令发送至外部存储设备,以通过外部存储设备进行数据项的循环读取操作。
在一些实例中,在第一处理模块23生成与读指针相对应的循环读取指令时,该第一处理模块23用于执行:通过控制面获取包括读指针的读取触发包;基于读取触发包生成与读指针相对应的读取指令,并将读取指令发送至外部存储设备,以通过外部存储设备获取回传数据;基于回传数据生成与读指针相对应的循环读取指令。
在一些实例中,在第一处理模块23将循环读取指令发送至外部存储设备,以通过外部存储设备进行数据项的循环读取操作时,该第一处理模块23用于执行:将循环读取指令发送至外部存储设备,以通过外部存储设备获取与循环读取指令相对应的回传数据,回传数据中包括位于回传数据之后的下一个数据项的内存地址;基于下一个数据项的内存地址进行数据项的循环读取操作。
在一些实例中,在第一处理模块23基于下一个数据项的内存地址进行数据项的循环读取操作时,该第一处理模块23用于执行:获取内存地址所对应的用于标识当前内存地址是否为空的标识位;在标识位用于标识内存地址所对应的区域为空时,则停止进行循环读取操作;在标识位用于标识内存地址所对应的区域为非空时,则读取与内存地址相对应的回传数据,并基于回传数据中包括的下一个数据项的内存地址继续进行循环读取操作。
在一些实例中,在读取与内存地址相对应的回传数据之后,本实施例中的第一获取模块21和第一处理模块23用于执行以下步骤:
第一获取模块21,用于获取与内存地址相对应的非空标识以及标识调整信息;
第一处理模块23,用于基于标识调整信息将非空标识调整为空标识,空标识用于标识内存地址所对应的区域为空。
在一些实例中,在确定与存储队列相对应的写指针之后,本实施例中的第一处理模块23用于执行:识别写指针是否对应有写入锁;在写指针对应有写入锁时,则基于写指针将待处理的数据包写入至可编程转发硬件的片上内存;在写指针未对应有写入锁时,则基于写指针将待处理的数据包写入至外部存储设备。
在一些实例中,在第一处理模块23识别写指针是否对应有并发锁时,该第一处理模块23用于执行:获取用于对写指针进行分析处理的指针操作表,指针操作表中包括写指针的指针标识以及用于标识写指针是否对应有写入锁的锁标识;基于指针操作表,确定与写指针相对应的锁标识;基于锁标识,识别写指针是否对应有写入锁。
在一些实例中,在写指针对应有写入锁时,本实施例中的第一处理模块23用于执行以下步骤:确定与写入锁相对应的操作时间段;在操作时间段内,暂停基于读指针对存储队列中的数据项进行循环读取操作;在操作时间段之后,基于读指针对存储队列中的数据项进行循环读取操作。
图13所示缓存数据的处理装置可以执行图2-图11所示实施例的方法,本实施例未详细描述的部分,可参考对图2-图11所示实施例的相关说明。该技术方案的执行过程和技术效果参见图2-图11所示实施例中的描述,在此不再赘述。
在一个可能的设计中,图13所示缓存数据的处理装置的结构可实现为一电子设备。参考附图14所示,本实施例中的缓存数据的处理装置可以实现为一电子设备,在一些实例中,电子设备可以应用于可编程转发硬件,可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接;具体的,该电子设备可以包括:第一处理器31和第一存储器32。其中,第一存储器32用于存储相对应电子设备执行上述图3所示实施例中提供的缓存数据的处理方法的程序,第一处理器31被配置为用于执行第一存储器32中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第一处理器31执行时能够实现如下步骤:在终端设备处于缓存释放状态时,获取外部存储设备中的与终端设备相对应的存储队列,其中,缓存释放状态用于标识终端设备由网络断开状态调整为网络连接状态之间的中间状态;确定与存储队列相对应的读指针和写指针;基于读指针和写指针对存储队列中的数据项进行循环读写操作。
进一步的,第一处理器31还用于执行前述图3所示实施例中的全部或部分步骤。其中,电子设备的结构中还可以包括第一通信接口33,用于电子设备与其他设备或通信网络通信。
另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图3所示方法实施例中的缓存数据的处理方法所涉及的程序。
此外,本发明实施例提供了一种计算机程序产品,包括:计算机程序,当计算机程序被电子设备的处理器执行时,使处理器执行图3所示方法实施例中的缓存数据的处理方法。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现数据存储。数据可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的数据。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (12)

1.一种缓存数据的处理方法,其特征在于,应用于可编程转发硬件,所述可编程转发硬件基于地址的远程内存访问技术与外部存储设备通信连接;所述方法包括:
在终端设备处于缓存释放状态时,获取所述外部存储设备中的与所述终端设备相对应的存储队列,其中,所述缓存释放状态用于标识所述终端设备由网络断开状态调整为网络连接状态之间的中间状态;
确定与所述存储队列相对应的读指针和写指针;
基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作;
其中,基于所述读指针对所述存储队列中的数据项进行循环读取操作,包括:
生成与所述读指针相对应的循环读取指令,所述循环读取指令中包括与循环读取操作相对应的循环步骤标识;
将所述循环读取指令发送至所述外部存储设备,以通过所述外部存储设备获取与所述循环读取指令相对应的回传数据,所述回传数据中包括位于所述回传数据之后的下一个数据项的内存地址;
基于下一个数据项的内存地址进行数据项的循环读取操作。
2.根据权利要求1所述的方法,其特征在于,基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作,包括:
获取所述读指针所在的第一位置和所述写指针所在的第二位置;
基于所述第一位置和所述第二位置对所述存储队列中的数据项进行循环读写操作。
3.根据权利要求2所述的方法,其特征在于,基于所述第一位置和所述第二位置对所述存储队列中的数据项进行循环读写操作,包括:
在所述第一位置与所述第二位置相同时,则允许基于所述读指针对所述存储队列中的数据项进行循环读取操作,并禁止基于所述写指针对所述存储队列进行数据项的循环写入操作;
在所述第一位置位于所述第二位置之后时,则允许基于所述读指针对所述存储队列中的数据项进行循环读取操作,并允许基于所述写指针对所述存储队列进行数据项的循环写入操作。
4.根据权利要求1所述的方法,其特征在于,基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作,包括:
识别所述存储队列是否存在空白区域;
根据识别结果、读指针和所述写指针对所述存储队列中的数据项进行循环读写操作。
5.根据权利要求4所述的方法,其特征在于,根据识别结果、读指针和所述写指针对所述存储队列中的数据项进行循环读写操作,包括:
在所述识别结果为所述存储队列包括空闲区域时,则允许基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作;
在所述识别结果为所述存储队列不包括空闲区域时,则允许基于所述读指针对所述存储队列中的数据项进行循环读取操作,并禁止基于所述写指针对所述存储队列进行数据项的循环写入操作。
6.根据权利要求1所述的方法,其特征在于,生成与所述读指针相对应的循环读取指令,包括:
通过控制面获取包括所述读指针的读取触发包;
基于所述读取触发包生成与所述读指针相对应的读取指令,并将所述读取指令发送至所述外部存储设备,以通过所述外部存储设备获取回传数据;
基于所述回传数据生成与所述读指针相对应的循环读取指令。
7.根据权利要求1所述的方法,其特征在于,基于下一个数据项的内存地址进行数据项的循环读取操作,包括:
获取所述内存地址所对应的用于标识当前内存地址是否为空的标识位;
在所述标识位用于标识所述内存地址所对应的区域为空时,则停止进行循环读取操作;
在所述标识位用于标识所述内存地址所对应的区域为非空时,则读取与所述内存地址相对应的回传数据,并基于所述回传数据中包括的下一个数据项的内存地址继续进行循环读取操作。
8.根据权利要求7所述的方法,其特征在于,在读取与所述内存地址相对应的回传数据之后,所述方法还包括:
获取与所述内存地址相对应的非空标识以及标识调整信息;
基于所述标识调整信息将所述非空标识调整为空标识,所述空标识用于标识所述内存地址所对应的区域为空。
9.根据权利要求1-5中任意一项所述的方法,其特征在于,在确定与所述存储队列相对应的写指针之后,所述方法还包括:
识别所述写指针是否对应有写入锁;
在所述写指针对应有写入锁时,则基于所述写指针将待处理的数据包写入至所述可编程转发硬件的片上内存;
在所述写指针未对应有写入锁时,则基于所述写指针将待处理的数据包写入至所述外部存储设备。
10.一种缓存数据的处理系统,其特征在于,包括:
外部存储设备;
可编程转发硬件,基于地址的远程内存访问技术与所述外部存储设备通信连接,用于:在终端设备处于缓存释放状态时,获取所述外部存储设备中的与所述终端设备相对应的存储队列,其中,所述缓存释放状态用于标识所述终端设备由网络断开状态调整为网络连接状态之间的中间状态;确定与所述存储队列相对应的读指针和写指针;基于所述读指针和所述写指针对所述存储队列中的数据项进行循环读写操作;
所述可编程转发硬件,用于生成与所述读指针相对应的循环读取指令,所述循环读取指令中包括与循环读取操作相对应的循环步骤标识;将所述循环读取指令发送至所述外部存储设备,以通过所述外部存储设备获取与所述循环读取指令相对应的回传数据,所述回传数据中包括位于所述回传数据之后的下一个数据项的内存地址;基于下一个数据项的内存地址进行数据项的循环读取操作。
11.根据权利要求10所述的处理系统,其特征在于,所述可编程转发硬件用于:
获取所述读指针所在的第一位置和所述写指针所在的第二位置;
基于所述第一位置和所述第二位置对所述存储队列中的数据项进行循环读写操作。
12.一种电子设备,其特征在于,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如权利要求1-9中任意一项所述的方法。
CN202310730147.5A 2023-06-19 2023-06-19 缓存数据的处理方法、设备及系统 Active CN116501657B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310730147.5A CN116501657B (zh) 2023-06-19 2023-06-19 缓存数据的处理方法、设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310730147.5A CN116501657B (zh) 2023-06-19 2023-06-19 缓存数据的处理方法、设备及系统

Publications (2)

Publication Number Publication Date
CN116501657A CN116501657A (zh) 2023-07-28
CN116501657B true CN116501657B (zh) 2023-11-10

Family

ID=87320467

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310730147.5A Active CN116501657B (zh) 2023-06-19 2023-06-19 缓存数据的处理方法、设备及系统

Country Status (1)

Country Link
CN (1) CN116501657B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117707990B (zh) * 2024-02-05 2024-05-03 国网山东省电力公司枣庄供电公司 接地故障信息的处理装置与方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法
CN102968293A (zh) * 2012-11-28 2013-03-13 中国人民解放军国防科学技术大学 基于指令队列的程序循环代码动态检测及执行方法
CN107491398A (zh) * 2017-08-04 2017-12-19 歌尔科技有限公司 数据同步方法、装置和电子设备
CN109462385A (zh) * 2018-10-26 2019-03-12 西安交通大学 一种高压脉冲参数编译的装置和方法
CN109815029A (zh) * 2019-01-10 2019-05-28 西北工业大学 一种嵌入式分区操作系统分区间通信的实现方法
CN111666254A (zh) * 2020-06-01 2020-09-15 贵州航天控制技术有限公司 一种新型异构多处理器电路系统
CN111865831A (zh) * 2019-04-30 2020-10-30 华为技术有限公司 数据处理的方法、网络设备、计算节点和系统
CN113535395A (zh) * 2021-07-14 2021-10-22 西安电子科技大学 网络存储业务的描述符队列和内存优化方法、系统及应用
WO2022100310A1 (zh) * 2020-11-12 2022-05-19 苏州浪潮智能科技有限公司 一种网卡数据包缓存管理方法、装置、终端及存储介质
CN114661634A (zh) * 2020-12-22 2022-06-24 中科寒武纪科技股份有限公司 数据缓存装置、方法、集成电路芯片、计算装置和板卡
CN115086104A (zh) * 2022-06-23 2022-09-20 武汉迈威通信股份有限公司 一种支持数据断线重传的方法及串口服务器

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508635A (zh) * 2011-10-19 2012-06-20 中国科学院声学研究所 一种处理器装置及其循环处理方法
CN102968293A (zh) * 2012-11-28 2013-03-13 中国人民解放军国防科学技术大学 基于指令队列的程序循环代码动态检测及执行方法
CN107491398A (zh) * 2017-08-04 2017-12-19 歌尔科技有限公司 数据同步方法、装置和电子设备
CN109462385A (zh) * 2018-10-26 2019-03-12 西安交通大学 一种高压脉冲参数编译的装置和方法
CN109815029A (zh) * 2019-01-10 2019-05-28 西北工业大学 一种嵌入式分区操作系统分区间通信的实现方法
CN111865831A (zh) * 2019-04-30 2020-10-30 华为技术有限公司 数据处理的方法、网络设备、计算节点和系统
CN111666254A (zh) * 2020-06-01 2020-09-15 贵州航天控制技术有限公司 一种新型异构多处理器电路系统
WO2022100310A1 (zh) * 2020-11-12 2022-05-19 苏州浪潮智能科技有限公司 一种网卡数据包缓存管理方法、装置、终端及存储介质
CN114661634A (zh) * 2020-12-22 2022-06-24 中科寒武纪科技股份有限公司 数据缓存装置、方法、集成电路芯片、计算装置和板卡
CN113535395A (zh) * 2021-07-14 2021-10-22 西安电子科技大学 网络存储业务的描述符队列和内存优化方法、系统及应用
CN115086104A (zh) * 2022-06-23 2022-09-20 武汉迈威通信股份有限公司 一种支持数据断线重传的方法及串口服务器

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Sorting with Asymmetric Read and Write Costs;Guy E. Blelloch;《Proceedings of the 27th ACM symposium on Parallelism in Algorithms and Architectures》;全文 *
基于NVM的分布式后端存储设计与实现;王薇;《中国优秀硕士学位论文全文数据库 (信息科技辑)》(第11期);全文 *
基于双指针环形缓冲区的数据采集系统设计;杨泽林;李先发;;仪表技术与传感器(11);全文 *
统一缓存:基于用户层通信的合作缓存技术;张悠慧, 汪东升, 郑纬民;计算机研究与发展(07);全文 *

Also Published As

Publication number Publication date
CN116501657A (zh) 2023-07-28

Similar Documents

Publication Publication Date Title
CN110402568B (zh) 一种通信的方法及装置
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
EP3057272B1 (en) Technologies for concurrency of cuckoo hashing flow lookup
US8321385B2 (en) Hash processing in a network communications processor architecture
US7111092B1 (en) Buffer management technique for a hypertransport data path protocol
US10693787B2 (en) Throttling for bandwidth imbalanced data transfers
US7117308B1 (en) Hypertransport data path protocol
US8505013B2 (en) Reducing data read latency in a network communications processor architecture
US8850125B2 (en) System and method to provide non-coherent access to a coherent memory system
US9465662B2 (en) Processor with efficient work queuing
US8761204B2 (en) Packet assembly module for multi-core, multi-thread network processors
US8972630B1 (en) Transactional memory that supports a put with low priority ring command
CN112612734B (zh) 文件传输方法、装置、计算机设备及存储介质
US20150288624A1 (en) Low-latency processing in a network node
US9529640B2 (en) Work request processor
US20180227146A1 (en) Network-on-chip, data transmission method, and first switching node
CN116501657B (zh) 缓存数据的处理方法、设备及系统
CN102195874A (zh) 数据分组的预提取
JP7074839B2 (ja) パケット処理
CN104394096A (zh) 一种基于多核处理器的报文处理方法及多核处理器
CN112910802B (zh) 一种报文处理方法及装置
CN113891396B (zh) 数据包的处理方法、装置、计算机设备和存储介质
US20190158429A1 (en) Techniques to use descriptors for packet transmit scheduling
CN117178263A (zh) SmartNIC中的网络附接的MPI处理架构

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