CN103229145B - 用于电信网络应用的无锁缓冲器管理方案 - Google Patents
用于电信网络应用的无锁缓冲器管理方案 Download PDFInfo
- Publication number
- CN103229145B CN103229145B CN201180051791.5A CN201180051791A CN103229145B CN 103229145 B CN103229145 B CN 103229145B CN 201180051791 A CN201180051791 A CN 201180051791A CN 103229145 B CN103229145 B CN 103229145B
- Authority
- CN
- China
- Prior art keywords
- buffer
- token
- user
- space
- pool
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
此处描述一种用于电信网络中的调制解调器上的多核处理器中的缓冲器管理机制。所述缓冲器管理机制包括为一个或更多2层应用提供缓冲器管理服务的缓冲器模块,其中,缓冲器模块至少为正在用户空间中运行的应用软件提供用户空间应用接口。缓冲器管理机制还包括管理多个单独的令牌池的缓冲器管理器,其中,所述令牌包括指向外部存储器中的存储器区域的指针。另外,缓冲器管理机制包括客户驱动器,所述客户驱动器管理将被用于用户平面数据分发的、包括缓冲器池和帧队列的数据路径加速体系结构(DPAA)资源。
Description
技术领域
本发明的示例性实施例涉及一种无锁缓冲器管理方案,所述方案用于使用多核处理器的单一调制解调器板上的多小区支持。尽管本发明特别涉及无线电信领域,并且由此将特别参考其来进行描述,但应当认识到,本发明可以在其它领域和应用中有用。
背景技术
作为背景,LTE(长期演进)是正在迅速演进的3GPP项目,其目标是改进UMTS(通用移动电信系统)移动电话标准以应付未来的通信网络需求。LTE提升无线网络效率和带宽,降低成本并增强服务体验。特别地,LTE利用新频谱机会,并且提供与其它开放标准的更好集成。LTE通常包括LTE RAN(无线电接入网络)(也称为E-UTRAN)连同EPS(演进的分组系统,也称为演进的分组核心)。
通常将通信系统拆分成两个主要功能:数据平面功能和控制平面功能。在之前的LTE产品中,在调制解调器板上使用至少两个处理器:一个用于支持控制平面功能(非实时的,例如操作、维护和管理(或OA&M),以及呼叫处理管理相关功能),以及另一个用于端接和支持数据平面功能(实时的,例如LTE2层处理)。控制和数据平面这两者使用不同的操作系统(OS)实例,例如用于控制平面的Linux,和用于数据平面核心的诸如vXWorks(由加利福尼亚阿拉米达的Wind River Systems制作和出售)的实时OS。通常,一个调制解调器板支持一个扇区或小区。因此,为支持多小区(例如3小区或6小区)配置,将有必要提供与小区数量一样多的调制解调器板。
多核处理器可以在调制解调器板上的LTE无线基站中使用。诸如在包含全部八个核心的一个SMP分区上运行的具有PREEMPT_RT补丁的SMP Linux操作系统。在该配置中,控制平面(非实时线程/进程)和数据平面(实时线程/进程)共享同一操作系统实例,即使其一定会在不同核心上运行。
由此,存在对无锁的缓冲器管理方案的需求,否则可能导致极大的等待时间尖峰。所述情形可以严重危害或破坏LTE2层实时处理需求。在SMP环境中,由一个核心上的非实时进程或线程获取的锁可以导致对于不同核心上正等待该锁被释放的实时线程或进程的等待时间尖峰。
发明内容
此处描述一种SMP环境中的无锁缓冲器管理方案。示例性实施例利用诸如缓冲器管理器(BMan)的调制解调器板上的硬件部件来冲裁来自多个核的对缓冲器的同时访问。由于未占用任何软件锁,所以没有任何进程或线程将在等待锁被释放时被阻塞。例如带有PREEMPT_RT的SMPLinux的操作系统(OS)不是例如vxWorks的硬核心实时OS。因此,定义所述缓冲方案是重要的;否则,操作系统不能满足LTE2层调度器的实时处理需求。从应用软件的角度看,硬件仲裁将使得看起来就像同时来自各种核心的对缓冲器的全部请求已在没有任何进程或线程被阻塞的情况下几乎并行地被处理。于是不存在任何极大等待时间尖峰。
此处还描述一种用于SMP Linux的零复制缓冲器管理方案,数据由此被用户空间应用发送或接收。为达到跨用户到内核空间边界的零复制,缓冲器存储器不得不经过内核到用户空间映射。经由分配连续的存储器块,使得内核到用户空间映射和缓冲器池的填充(seeding)较简单。使用数学公式来计算特定缓冲器在指定池中的指针地址使得所述缓冲器管理方案更确定和鲁棒,并且其在缓冲器管理簿记和垃圾收集活动中提供重大帮助。这将还有助于实现对存储器损坏的高效检查。
在所述处理环境中,中间件层通常对应用层隐藏所有硬件特定实现细节。核心抽象层(CAL)提供对多核处理器及其数据路径加速体系结构(或DPAA)的抽象。为部署所述调制解调器板,所述CAL提供各种服务,例如针对LTE2层应用的零复制无锁缓冲器管理方案,以及,针对多小区配置的对背板以太网驱动(BED)接口的支持,其中,所述背板以太网驱动接口用于去往和来自控制板的无线电链路控制(RLC)服务数据单元(SDU)发送和接收。
在本发明的一方面中,提供一种用在电信网络中的调制解调器上的多核处理器中的缓冲器管理机制。所述缓冲器管理机制包括为一个或更多2层应用提供缓冲器管理服务的缓冲器模块,其中,所述缓冲器模块至少为正在用户空间中运行的应用软件提供用户空间应用接口。所述缓冲器管理机制还包括管理多个单独的令牌池的缓冲器管理器,其中,所述令牌包括指向外部存储器中的存储器区域的指针。另外,所述缓冲器管理机制包括客户驱动器,所述客户驱动器管理将被用于用户平面数据分发的、包括缓冲器池和帧队列的数据路径加速体系结构(DPAA)资源。
可选地,所述客户驱动器可以进一步用于实施一系列功能。例如,所述客户驱动器可以获取连续的外部存储器块。接下来,所述客户驱动器可以将内核空间存储器映射到用户空间,以便允许用户模式应用在不需要实施数据复制的情况下访问存储在所述外部存储器中的数据。所述客户驱动器可以还初始化一些池、每个池的一些令牌以及所述令牌所指向的一定尺寸的缓冲器。最后,所述客户驱动器可以用令牌填充所述池。
在本发明的另一方面中,提供一种装置,所述装置用于提供电信网络中的多小区支持。所述装置一般包括调制解调器板和多核存储器,所述多核处理器包括多个连接到所述调制解调器板的处理器核心。关于所述多核处理器,使用包括在其中的处理器核心的全部定义单一分区,并且其中,所述单一分区用于执行全部控制平面功能和全部数据平面功能。进一步地,核心抽象层对正在所述单一分区中的处理器核心上运行的应用软件隐藏任何核心特定细节。所述核心抽象层恰当地包括为一个或更多2层应用提供缓冲器管理服务的缓冲器模块,其中,所述缓冲器模块至少为正在用户空间中运行的应用软件提供用户空间应用接口。所述核心抽象层还包括管理多个单独的令牌池的缓冲器管理器,其中,所述令牌包括指向外部存储器中的存储器区域的指针。另外,所述核心抽象层包括客户驱动器,所述客户驱动器管理将被用于用户平面数据分发的、包括缓冲器池和帧队列的数据路径加速体系结构(DPAA)资源。
从下面提供的详细描述中,本发明的进一步适用范围将变得显而易见。然而应当理解,所述详细描述和特定示例在指示本发明的优选实施例的同时,仅作为示例被给出,因为本发明的精神和范围内的各种改变和修改对于本领域的技术人员将变得显而易见。
附图说明
本发明存在于设备的各种部分以及方法的步骤的构造、安排和组合中,由此实现如下文中充分阐述、特别在权利要求中指出并且在附图中示出的所设想目的,其中:
图1示出了根据本发明的方面的平台体系结构的一个实施例;
图2示出了用于实现图1中所示的核心抽象层的一个示例性体系结构;
图3示出了用于使用多核处理器的单一调制解调器板上的多小区支持的一个示例性无锁缓冲器管理方案;以及
图4示出了存储器和缓冲器池的获取和填充的高层视图。
具体实施方式
现在参考附图,其中,附图中所示仅用于示出示例性实施例,并且不用于限制所要求权利的主题,图1提供系统的视图,其中,当前描述的实施例可以被并入所述系统中。现在参考图1,其示出了一个示例性平台体系结构100。该体系结构通常在调制解调器板上使用,但应当理解,其可以在其它应用中使用。在该实施例中,使用其中的全部八个核心定义一个分区。然而应当认识到,多核处理器100可以具有任意数量的核心。通过该实施例,由此有可能使用在核心(例如八个核心)的全部上运行的单一对称多处理(SMP)操作系统(OS)实例102。由于控制和数据平面在一个OS实例之下,所以通常需要注意确保伴随数据平面的问题不会也破坏控制平面。
在该示例中,多核处理器100为三个小区(在该图中被示为104、106和108)提供服务。每个小区需要上行链路(UL)调度器(在该图中被示为110、112和114)和下行链路(DL)调度器(在图1中被示为116、118和120)。
已知,无线电链路控制(RLC)层用于对跨LTE空中接口发送和接收的分组帧进行分段、连结和纠错。无线电链路控制和媒体访问控制(RLC/MAC)软件在GPRS(2.5G)无线栈中被使用。其提供移动台与基站控制器(BSC)之间的确认的和未确认的数据传输。由此,还包括RLC/MAC框122,其是在移动台与网络之间使用的空中接口上的基本传输单元。其用于传输数据和RLC/MAC信令。
多核处理器100还提供操作、维护和管理(OA&M)124和CALLLP模块126。
另外,多核处理器100包括核心抽象层(CAL)128,其对2层(L2)应用软件隐藏核心特定细节。2层是计算机联网七层OSI模型的数据链路层。数据链路层是在广域网的相邻网络节点之间或同一局域网段上的节点之间传输数据的协议层。数据链路层提供用于在网络实体之间传输数据的功能和过程装备,并且可能提供用于检查和可能纠正在物理层中可能出现的错误的装备。数据链路协议的示例如用于局域网(多节点)的以太网、用于点到点(双节点)连接的点到点协议(PPP)、HDLC和ADCCP。在此情况下,L2通常是指对LTE空中接口必需的L2调度器处理,所述L2调度器处理具有非常严格的实时要求。
为满足基站的实时性能需求,其中,基站负责处理移动通信设备与网络交换子系统之间的流量和心灵,可以使用例如带有PREEMPT_RT补丁的SMP Linux的OS。当然,应当理解,可以使用其它操作系统。为达到所述SMP配置中的确定的行为,系统优选以这样的方式来实现,利用核心预留和核心近似结构来达到类AMP系统行为。这对从例如带有PREEMPT_RT的SMP Linux的OS获得最佳性能也是可取的。使用例如缓冲器管理和消息服务的无锁零复制服务也可以解决可能由使用带有PREEMPT_RT的SMP Linux OS引起的任何等待时间问题。
如图1中所示的核心抽象层(128)的主要功能之一在于,为例如L2处理的高层应用提供利用多核平台的完全能力的各种服务。核心抽象层由此被设计为达到及格目标。首先,其应当支持基于BED(背板以太网驱动器)DPAA的接口,同时对高层应用软件(即L2软件)隐藏DPAA和多核特定实现。第二,其应当利用P4080的DPAA硬件部件来为入站和出站两个方向上的用户平面数据提供加速的数据路径。第三,其应当提供尽可能大的灵活性,以便容易地适应配置改变(即不需要代码改变)。CAL配置的一个示例如针对缓冲器池、入站帧队列和出站帧队列的DPAA资源配置。
现在参考图2,该图示出了达到这些和其它目标的一个示例性体系结构200。已知,常规计算机操作系统通常将虚拟存储器隔离为内核空间和用户空间。内核空间严格预留给运行内核、内核扩展和多数设备驱动器。相反,用户空间是全部用户模式应用在其中运行的存储器区域,并且该存储器在必要时可以被换出。鉴于此,核心抽象层(CAL)201包括用户空间中的各种模块,包括但不限于:核心抽象层初始化(CALInit)模块202,其将LTE网络配置和任何静态PCD规则加载到帧管理器(FMan)230和232中,并且基于一组配置文件建立CAL框架;核心抽象层缓冲器(CALBuf)模块204;核心抽象层消息(CALMsg)模块206,其为L2软件提供消息服务,以便向和从另一板(即eCCM)发送和接收用户平面数据;核心抽象层解析、分类和分发(CALPcdFmc)模块208,其提供将被每个FMan(230、232)用于将入站帧选路到合适的核心的解析、分类和分发(PCD)规则和配置;以及核心抽象层DPAA跟踪(CALDpaaTrace)模块210,其提供用于实现和禁用核心抽象层DPAA驱动器(CALDpaaDriver)212中的跟踪的跟踪能力,其中,核心抽象层DPAA驱动器212是内核空间模块。
体系结构200进一步包括合适的操作系统214,诸如带有抢占RT补丁的SMP Linux。操作系统214接着支持各种驱动器,例如前面提到的CALDPaa驱动器212、至少一个帧管理器(FMan)驱动器216、至少一个缓冲器管理器(BMan)驱动器218和至少一个队列管理器(QMan)驱动器220。
如图2中所示,体系结构200可以适当地包括P4080核心网结构222,其是适于可伸缩片上网络的互联体系结构,用于连接多个带有高速缓存的动力体系结构处理核心、独立高速缓存和存储器子系统。
P4080处理器包括新数据路径加速体系结构(DPAA)的实现。由此,体系结构200可以进一步包括P4080DPAA224。DPAA224被设计为优化多核网络处理,例如负载分散以及包括网络接口和硬件加速器的资源共享。如所示,DPAA224一般包括各种管理器,例如BMan226、QMan228以及各自的第一和第二Fman230和232。
已知,在无线多接入通信系统中,发送器和接收器可以使用多层通信栈进行通信。所述层可以包括例如物理层、媒体访问控制(MAC)层、无线电链路控制(RLC)层、协议层(例如分组数据汇聚协议(PDCP)层)、应用层等。RLC层从PDCP层接收服务数据单元(SDU),并且将SDU连结或分段为用于向MAC层传输的RLC协议数据单元(PDU)。
相应地,CALBuf模块204为RLC SDU处理中使用的L2应用便利无锁缓冲器管理服务。如本领域中已知的,非阻塞性算法确保竞争共享资源的线程不使其执行被互斥无限期推迟。如果存在有保证的系统级前进,则非阻塞性算法是无锁(或无锁)的。CALBuf模块204还支持对缓冲器池统计数据(例如池消耗状态、消耗计数、池可用性状态、池分配错误计数等)的查询。CALBuf模块204与CALDpaa驱动器212接合以实现服务。CALBuf模块204提供在多核环境中对正确的系统运行极其重要的无锁缓冲器管理方案,其中,被非实时进程占用的锁可以导致等待该锁释放的实时进程的等待时间问题。
CALDpaaDriver212是CAL201的内核空间部件,其使用Bman和Qman API帮助实现和提供缓冲器管理服务和消息服务。当用在此处时,术语API(或应用编程接口)是指由软件程序实现的、使其能够与其它软件进行交互的接口。与用户界面便利用户与计算机之间的交互的方式类似,其便利不同软件程序之间的交互。API由应用、库和操作系统实现,用于确定其词汇表和调用协定,并且用于访问其服务。其可以包括针对例程、数据结构、对象类和协议的规范,所述例程、数据结构、对象类和协议用于在API的消费者和实现者之间进行通信。
CALDpaaDriver212负责:管理将被用于用户平面数据分发的DPAA资源(缓冲器池和帧队列);经由各种文件操作为其它CAL模块提供用户空间接口,例如打开、释放、用于初始化的io控制(ioctl)、缓冲器管理和消息服务;实施内核到用户空间(K-U)缓冲器映射;提供DPAA缓冲器池以及接收器和发送器统计数据;以及,实现用于管理环形缓冲器的服务。应当指出,环形缓冲器代表CAL的L2软件队列,并且其通常用于存储指定用于特定L2DLT的FD。CALMsg模块206提供针对L2的API,以便从环中检索缓冲器描述符。
除CALDpaaDriver212外,上面描述的CAL部件的全部一般是平台中间件(在用户空间中运行)。CALDpaaDriver212是在内核空间中运行的客户驱动器,并且其被设计为实现和提供CAL用户空间中间件所需的服务——特别是那些取决于P4080DPAA硬件部件的服务。
CALBuf模块204提供将专门用于“快速路径”数据处理的缓冲器管理服务。CALBuf模块204为L2应用提供用户空间API。CALBuf模块204与CALDpaaDriver212协作,以便为CALDpaa驱动器212创建但由Bman226管理的缓冲器提供零复制和无锁缓冲器管理服务。
CALBuf模块204实现和提供特别支持以下服务的API:
1.在给定缓冲器尺寸的情况下,获取缓冲器;
2.获取给定数量的具有给定尺寸的缓冲器,并且然后返回可用缓冲器的列表,上至所请求的缓冲器数量;
3.释放指定的缓冲器;
4.释放一列缓冲器;以及
5.查询缓冲器池统计数据。
如上面陈述的,无锁缓冲器管理方案对于满足基于多核处理器的调制解调器板的性能需求是重要的,其中,所述基于多核处理器的调制解调器板使用由全部八个核心组成的一个分区并且运行带有PREEMPT_RT的SMP Linux。在没有所述方案的情况下,系统可能遭受可能破坏整个系统的极大等待时间尖峰。
参考图3,例如BMan226或其它合适部件的、多核处理器上的硬件部件302可以用于实现无锁缓冲器管理方案。在该示例中,硬件部件302管理64个单独的具有48位令牌的池(或队列)。这些令牌担任指向缓冲器存储器的指针。池及每个池中的令牌的数量可以改变。鉴于此,在硬件部件302中定义了64个具有不同尺寸的缓冲器池(例如,一个池可以具有十个指向2KB缓冲器的令牌,第二个池可以具有50个指向4KB缓冲器的令牌,等等)。作为示例,硬件部件302可以包括第一池(即池1),该第一池被示为标号304,具有十个令牌,每个令牌指向存储器中尺寸为1KB(1024字节)的缓冲器。然而应当理解,第一池304可以包含多得多的48位令牌。同样在该示例中,被示为标号310的最后池(即池64)具有十个令牌,每个令牌指向尺寸为8KB的缓冲器。此外,应当理解,最后池310可以包含多得多的48位令牌。应当进一步指出,尽管未在图3中示出,但硬件部件302具有62个可能具有可变尺寸的其余池。然而,为进行示例,假设62个其余池(即池2-63)的每个具有十个令牌,每个令牌指向尺寸为1KB的缓冲器。
在此处提供的示例性实施例运行期间,缓冲器管理方案每当其需要具有特定尺寸的缓冲器时,向硬件部件302发送对令牌(即指向缓冲器存储器的指针)的请求。这在下面详细示出。
如先前陈述的,CALBuf API获取缓冲器。CALBuf212为在用户空间中运行的应用软件提供用户空间API。当应用需要缓冲器时,其调用CALBuf API请求具有特定尺寸的缓冲器。CALBuf模块204,通过来自例如CALDpaaDriver212的内核空间模块的帮助,然后向BMan226请求具有指定尺寸的令牌/缓冲器。BMan226是对来自多个核心的同时访问进行仲裁的硬件实体。相应地,由于几个L2实体正并行运行,BMan226同时从多个核心接收对令牌/缓冲器的请求。BMan226然后在不需要软件锁的情况下用硬件设施冲裁,以及,请求方L2实体的每个在不被阻塞的情况下接收到缓冲器。由于硬件部件302对来自多个核心的同时访问进行仲裁,于是产生了避免需要软件中的锁或阻塞信号量的软件无锁缓冲器管理方案,如下面详细描述的那样。
最初,CALDpaaDriver212在内核空间中分配连续的存储器块316(例如尺寸为1GB)。该存储器是处理器100使用的外部DDR存储器,并且其通常被与处理器一起放置在板上。然后用令牌对硬件辅助的池进行填充,所述令牌指向将被用作缓冲器的存储器片段316。换句话说,连续的存储器块316包含多个缓冲器池,其中,每个缓冲器池具有特定的缓冲器尺寸特征。64个缓冲器池(例如池304、310)内的令牌被用于迅速获取存储器316内的地址,该地址开始具有特定尺寸的特定缓冲器。连续的存储器块316具有开始地址和结束地址,其共同定义存储器块316的尺寸和位置。
当计算针对缓冲器池的种子值时,存储器块316的开始地址被用作基础指针。针对池内的任意给定指令的填充地址可以经由以下方程来计算:
其中,x是池号码,y是池x内的缓冲器(或令牌)号码,Pool_Size是池k内的令牌数量,以及,Pool_Buffer_size是池k内每个单独缓冲器的尺寸(例如2KB)。
为进行示例,假设存储器块316的开始地址是0x0000。相应地,使用上面的公式,针对指向尺寸为1KB的缓冲器的、第一池(池1)的第一令牌(令牌0)的种子值是0(例如0x000)。池1的下一个令牌(令牌1)是1024(例如0x400)等。假设池1-63具有十个令牌,每个令牌指向尺寸为1KB的缓冲器,并且池64具有十个令牌,每个令牌指向尺寸为8KB的缓冲器,则最后池(池64)将具有为64,512(例如0xFC00)的第一令牌值(令牌0),并且下一个令牌值(令牌1)将具有值72704(例如0x11C00)等。
一旦全部池被填充了合适的缓冲器令牌,则硬件部件302可以然后辅助在实现软件无锁缓冲器管理方案时的缓冲器管理方案。
获取和填充存储器316和缓冲器池的高层视图由图4示出。在步骤410处,CALDpaaDriver212获取如上面所描述的连续的外部DDR存储器块316。
在步骤420处,CALDpaaDriver212将内核空间存储器316映射到用户空间,以便允许用户模式应用在不需要实施数据复制的情况下对存储在存储器区域316中的数据的访问。由于Linux GPL问题,L2调度器在用户空间中运行。因此,用户空间应用将不能访问内核空间存储器,因此,对存储进行内核到用户空间映射,以允许用户空间应用直接访问缓冲器存储器。这避免了需要数据复制。
在步骤430处,CALDpaaDriver212初始化池的数量、每个池的令牌数量以及所述令牌指向的缓冲器的尺寸。
在步骤440处,CALDpaaDriver212按照关于图3描述的公式用令牌(存储器指针)填充池。
在运行时,每当缓冲器管理方案需要缓冲器时,例如当分组到达时,BMan226将令牌(即指向缓冲器存储器的指针)从合适的硬件池出列(即取出)。类似地,当缓冲器被释放时,缓冲器管理方案将令牌(即缓冲器存储器指针)入列(即放回)回硬件池。
合适地,每个缓冲器将一般具有少量字节的头部和尾部,所述头部和尾部被预留给缓冲器管理方案使用。这些头部和尾部包含重要簿记信息,例如谁拥有缓冲器。应当理解,在小区恢复期间需要该信息来将被特定进程拥有的缓冲器释放回硬件池。
本领域的技术人员将容易地认识到,各种上面所描述方法的步骤可以由已进行编程的计算机来实施。此处,某些实施例还旨在覆盖例如数字数据存储媒体的程序存储设备,所述程序存储设备是机器或计算机可读的,并且对机器可执行或计算机可执行指令程序进行编码,其中,所述指令实施所述上面描述方法的步骤的一些或全部。程序存储设备可以是例如数字存储器,例如磁盘或磁带的磁存储媒体,或光可读数字数据存储媒体。实施例还旨在覆盖计算机,所述计算机被编程为实施上面描述方法的所述步骤。
上面的描述仅提供本发明的特定实施例的公开,并且不旨在用于将其限于此。同样,本发明不限于仅上面描述的实施例。相反,应当认识到,本领域的技术人员可以设想落在本发明的范围内的可替换实施例。
Claims (7)
1.一种在电信网络中的调制解调器上使用的多核处理器中的缓冲器管理装置,包括:
缓冲器模块,为一个或更多2层应用提供无锁、零复制缓冲器管理服务,其中,所述缓冲器模块至少为正在用户空间中运行的应用软件提供用户空间应用接口;
缓冲器管理器,管理多个单独的令牌池,其中,令牌包括指向外部内核空间存储器中的存储器区域的指针;以及
客户驱动器,其管理将被用于用户平面数据分发的、包括缓冲器池和帧队列的数据路径加速体系结构DPAA资源,
其中,所述客户驱动器进一步用于通过以下方式针对所述缓冲器模块为无锁、零复制缓冲器管理提供预分配存储器:
获取连续的所述外部内核空间存储器的块;
将内核空间存储器的连续块映射到用户空间,以便允许用户模式应用访问存储在所述外部内核空间存储器中的数据以消除别的情况下无论何时跨内核至用户空间边界都会发生的数据复制;
初始化一些硬件池、每个硬件池的一些令牌,以及所述令牌指向的一定尺寸的缓冲器;以及
用令牌填充所述硬件池,其中,当计算针对所述缓冲器池的种子值时,内核空间存储器的所述连续块的开始地址被用作基础指针。
2.根据权利要求1的缓冲器管理装置,其中,所述缓冲器模块进一步用于,实现并提供支持以下服务中的一个或更多的零复制且无锁的应用编程接口:
获取缓冲器;
获取给定数量的具有给定尺寸的缓冲器,然后返回多达所请求缓冲器数量的可用缓冲器的列表;
释放指定的缓冲器;
释放一系列缓冲器;以及
查询缓冲器池统计数据。
3.根据权利要求1的缓冲器管理装置,其中,所述缓冲器管理器进一步用于,使用无锁硬件仲裁,并且在分组到达后将令牌从所述硬件池中出列,以及,当缓冲器被释放时将所述令牌入列回所述硬件池中。
4.根据权利要求1的缓冲器管理装置,其中,所述缓冲器管理器进一步用于,接收同时来自多个核心的对缓冲器或令牌的请求,并且在不需要软件中的软件锁或阻塞信号量的情况下在硬件中实施仲裁。
5.一种用于在电信网络中提供多小区支持的装置,所述装置包括:
调制解调器板;以及
包括多个联接到所述调制解调器板的处理器核心的多核处理器,其中,使用包括在其中的所述处理器核心的全部定义单一分区,并且其中,所述单一分区被用于执行全部控制平面功能和全部数据平面功能,所述多核处理器还包括核心抽象层,其对正在所述单一分区中的处理器核心上运行的应用软件隐藏任何核心特定细节,
其中,所述核心抽象层包括至少以下模块:
缓冲器模块,为一个或更多2层应用提供缓冲器管理服务,其中,所述缓冲器模块至少为正在用户空间中运行的应用软件提供用户空间应用接口;
缓冲器管理器,管理多个单独的令牌池,其中,令牌包括指向外部内核空间存储器中的存储器区域的指针;以及
客户驱动器,管理将被用于用户平面数据分发的、包括缓冲器池和帧队列的数据路径加速体系结构DPAA资源,其中,所述客户驱动器进一步用于通过以下方式针对所述缓冲器模块为无锁、零复制缓冲器管理提供预分配存储器:
获取所述外部内核空间存储器的连续块;
将内核空间存储器的连续块映射到用户空间,以便允许用户模式应用访问存储在所述外部内核空间存储器中的数据以消除别的情况下无论何时跨内核至用户空间边界都会发生的数据复制;
初始化一些硬件池、每个硬件池的一些令牌,以及所述令牌指向的一定尺寸的缓冲器;以及
用令牌填充所述硬件池。
6.根据权利要求5的装置,其中,所述缓冲器模块进一步用于,实现并提供支持以下服务中的一个或更多的零复制且无锁的应用编程接口:
获取缓冲器;
获取给定数量的具有给定尺寸的缓冲器,并且然后返回多达所请求缓冲器数量的可用缓冲器的列表;
释放指定的缓冲器;
释放一系列缓冲器;以及
查询缓冲器池统计数据。
7.根据权利要求5的装置,其中,当计算针对所述缓冲器池的种子值时,所述存储器的所述连续块的开始地址被用作基础指针。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/914,135 US8504744B2 (en) | 2010-10-28 | 2010-10-28 | Lock-less buffer management scheme for telecommunication network applications |
US12/914,135 | 2010-10-28 | ||
PCT/US2011/055855 WO2012058001A1 (en) | 2010-10-28 | 2011-10-12 | Lock-less buffer management scheme for telecommunication network applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103229145A CN103229145A (zh) | 2013-07-31 |
CN103229145B true CN103229145B (zh) | 2016-10-12 |
Family
ID=44872618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180051791.5A Active CN103229145B (zh) | 2010-10-28 | 2011-10-12 | 用于电信网络应用的无锁缓冲器管理方案 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8504744B2 (zh) |
EP (1) | EP2633404B1 (zh) |
JP (1) | JP5671150B2 (zh) |
KR (1) | KR101529895B1 (zh) |
CN (1) | CN103229145B (zh) |
WO (1) | WO2012058001A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
CA2888684C (en) * | 2012-10-19 | 2017-03-07 | Argyle Data, Inc. | Multi-threaded, lockless data parallelization |
CN104424129B (zh) | 2013-08-19 | 2019-07-26 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN103945456B (zh) * | 2014-05-12 | 2017-06-27 | 武汉邮电科学研究院 | 一种基于Linux系统的LTE基站用户面高效UDP数据发送优化方法 |
CN104102494B (zh) * | 2014-07-31 | 2017-07-25 | 武汉邮电科学研究院 | 无线通信基站空口数据cipher加速方法 |
CN105656805B (zh) * | 2016-01-20 | 2018-09-25 | 中国人民解放军国防科学技术大学 | 一种基于控制块预分配的分组接收方法和装置 |
US10380012B2 (en) | 2016-04-22 | 2019-08-13 | Samsung Electronics Co., Ltd. | Buffer mapping scheme involving pre-allocation of memory |
CN111782419B (zh) * | 2020-06-23 | 2023-11-14 | 北京青云科技股份有限公司 | 一种缓存更新方法、装置、设备及存储介质 |
US11188482B1 (en) * | 2020-06-30 | 2021-11-30 | Wolly Inc. | Apparatus and method of zero-copy application co-processor with storage class memory |
KR102461039B1 (ko) * | 2021-02-24 | 2022-11-01 | 성균관대학교산학협력단 | 상용 이더넷 장비 기반의 gpu 내부 패킷 입출력 방법 및 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913230A (en) * | 1997-01-07 | 1999-06-15 | Richardson; John J. | Object and method for providing efficient multi-user access to shared operating system kernal code using instancing |
CN1996271A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 一种数据传输的方法及系统 |
CN101340574A (zh) * | 2008-08-04 | 2009-01-07 | 中兴通讯股份有限公司 | 一种实现零拷贝发送流媒体数据的方法及系统 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11030A (en) * | 1854-06-06 | Water-level indicator for steam-boilers | ||
US10007A (en) * | 1853-09-13 | Gear op variable cut-ofp valves for steau-ehgietes | ||
US5000A (en) * | 1847-03-06 | Improvement in propellers for vessels | ||
US6434620B1 (en) | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6314501B1 (en) | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
WO2001063416A1 (en) | 2000-02-24 | 2001-08-30 | Bops Incorporated | Methods and apparatus for scalable array processor interrupt detection and response |
US6799200B1 (en) | 2000-07-18 | 2004-09-28 | International Business Machines Corporaiton | Mechanisms for efficient message passing with copy avoidance in a distributed system |
US6735620B1 (en) | 2000-07-18 | 2004-05-11 | International Business Machines Corporation | Efficient protocol for retransmit logic in reliable zero copy message transport |
US7089289B1 (en) | 2000-07-18 | 2006-08-08 | International Business Machines Corporation | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices |
US7089335B2 (en) | 2000-10-30 | 2006-08-08 | Microsoft Corporation | Bridging multiple network segments and exposing the multiple network segments as a single network to a higher level networking software on a bridging computing device |
US7768522B2 (en) * | 2002-01-08 | 2010-08-03 | Apple Inc. | Virtualization of graphics resources and thread blocking |
ES2333519T3 (es) * | 2002-06-19 | 2010-02-23 | Telefonaktiebolaget L M Ericsson | Una arquitectura de controlador de dispositivo de red. |
JP2004164202A (ja) * | 2002-11-12 | 2004-06-10 | Matsushita Electric Ind Co Ltd | データ送受システム、リングバッファ制御方法、制御プログラム |
US7539853B2 (en) | 2002-11-18 | 2009-05-26 | Arm Limited | Handling interrupts in data processing of data in which only a portion of a function has been processed |
US7003597B2 (en) | 2003-07-09 | 2006-02-21 | International Business Machines Corporation | Dynamic reallocation of data stored in buffers based on packet size |
US7206966B2 (en) * | 2003-10-22 | 2007-04-17 | Hewlett-Packard Development Company, L.P. | Fault-tolerant multi-core microprocessing |
US7370326B2 (en) | 2004-04-02 | 2008-05-06 | Emulex Design & Manufacturing Corporation | Prerequisite-based scheduler |
JP4414305B2 (ja) | 2004-08-19 | 2010-02-10 | 富士通株式会社 | 中継装置および中継装置の再起動方法並びに中継装置用ソフトウェアプログラム |
US7620753B1 (en) | 2005-03-17 | 2009-11-17 | Apple Inc. | Lockless access to a ring buffer |
US20070113229A1 (en) | 2005-11-16 | 2007-05-17 | Alcatel | Thread aware distributed software system for a multi-processor |
US20080002702A1 (en) | 2006-06-30 | 2008-01-03 | Symbol Technologies, Inc. | Systems and methods for processing data packets using a multi-core abstraction layer (MCAL) |
US20080002681A1 (en) | 2006-06-30 | 2008-01-03 | Symbol Technologies, Inc. | Network wireless/RFID switch architecture for multi-core hardware platforms using a multi-core abstraction layer (MCAL) |
EP2035928A2 (en) | 2006-06-30 | 2009-03-18 | Symbol Technologies, Inc. | Systems and methods for processing data packets using a multi-core abstraction layer (mcal) |
US8059532B2 (en) | 2007-06-21 | 2011-11-15 | Packeteer, Inc. | Data and control plane architecture including server-side triggered flow policy mechanism |
US8279865B2 (en) | 2007-04-20 | 2012-10-02 | John Giacomoni | Efficient pipeline parallelism using frame shared memory |
US8055822B2 (en) | 2007-08-21 | 2011-11-08 | International Business Machines Corporation | Multicore processor having storage for core-specific operational data |
US8194699B2 (en) | 2007-09-21 | 2012-06-05 | Intel Corporation | Radio scheduler and data plane interface |
US8527622B2 (en) | 2007-10-12 | 2013-09-03 | Sap Ag | Fault tolerance framework for networks of nodes |
FI20085217A0 (fi) | 2008-03-07 | 2008-03-07 | Nokia Corp | Tietojenkäsittelyjärjestely |
CN101546276B (zh) | 2008-03-26 | 2012-12-19 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
US8024417B2 (en) | 2008-06-04 | 2011-09-20 | Microsoft Corporation | Simple flow control protocol over RDMA |
US8271996B1 (en) | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
FR2937755B1 (fr) * | 2008-10-24 | 2010-12-31 | Commissariat Energie Atomique | Dispositif pour gerer des tampons de donnees dans un espace memoire reparti sur une pluralite d'elements de memoire |
US8099546B2 (en) | 2009-06-09 | 2012-01-17 | Red Hat, Inc. | Mechanism for a lockless ring buffer in overwrite mode |
US8413153B2 (en) | 2009-06-12 | 2013-04-02 | Freescale Semiconductor Inc. | Methods and systems for sharing common job information |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US20120093047A1 (en) | 2010-10-14 | 2012-04-19 | Alcatel-Lucent USA Inc. via the Electronic Patent Assignment System (EPAS) | Core abstraction layer for telecommunication network applications |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
-
2010
- 2010-10-28 US US12/914,135 patent/US8504744B2/en active Active
-
2011
- 2011-10-12 WO PCT/US2011/055855 patent/WO2012058001A1/en active Application Filing
- 2011-10-12 CN CN201180051791.5A patent/CN103229145B/zh active Active
- 2011-10-12 JP JP2013536652A patent/JP5671150B2/ja not_active Expired - Fee Related
- 2011-10-12 KR KR1020137013380A patent/KR101529895B1/ko active IP Right Grant
- 2011-10-12 EP EP11773156.2A patent/EP2633404B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913230A (en) * | 1997-01-07 | 1999-06-15 | Richardson; John J. | Object and method for providing efficient multi-user access to shared operating system kernal code using instancing |
CN1996271A (zh) * | 2006-12-30 | 2007-07-11 | 华为技术有限公司 | 一种数据传输的方法及系统 |
CN101340574A (zh) * | 2008-08-04 | 2009-01-07 | 中兴通讯股份有限公司 | 一种实现零拷贝发送流媒体数据的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP2633404A1 (en) | 2013-09-04 |
JP2013546068A (ja) | 2013-12-26 |
US8504744B2 (en) | 2013-08-06 |
EP2633404B1 (en) | 2018-09-12 |
KR101529895B1 (ko) | 2015-06-18 |
JP5671150B2 (ja) | 2015-02-18 |
KR20130087026A (ko) | 2013-08-05 |
CN103229145A (zh) | 2013-07-31 |
US20120110223A1 (en) | 2012-05-03 |
WO2012058001A1 (en) | 2012-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103229145B (zh) | 用于电信网络应用的无锁缓冲器管理方案 | |
CN103348641B (zh) | 单一调制解调器板上改进的多小区支持的系统 | |
CN111865647A (zh) | 使用分解的芯片粒进行边缘计算的模块化i/o配置 | |
CN104699525B (zh) | 消息通信技术 | |
CN111083634B (zh) | 基于cdn和mec的车联网移动性管理方法 | |
CN103210619A (zh) | 用于电信网络应用的无锁和零拷贝消息传送方案 | |
CN103179433B (zh) | 一种视频内容提供系统、方法及服务节点 | |
CN106951926A (zh) | 一种混合架构的深度学习系统方法及装置 | |
CN109788489A (zh) | 一种基站规划方法及装置 | |
CN103827842B (zh) | 向控制器存储器空间写入消息 | |
CN1120766A (zh) | 基于位置访问的通信系统 | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
CN103959255A (zh) | 跨多个内存口使用选择性复制降低内存访问延迟的系统及方法 | |
CN106471488A (zh) | 用于基于位置信息的服务器控制的平铺技术 | |
CN110221915A (zh) | 节点调度方法和装置 | |
CN101150488A (zh) | 一种零拷贝网络报文接收方法 | |
CN105554176B (zh) | 发送报文的方法、装置和通信系统 | |
CN107851059A (zh) | 提高效率的智能存储器架构 | |
CN107003962A (zh) | 高速缓存一致代理到一致结构的低开销分层连接 | |
Zhang et al. | Deep reinforcement learning-based offloading decision optimization in mobile edge computing | |
CN108351838A (zh) | 使用聚合存储器管理单元(mmu)提供存储器管理功能 | |
CN109495461A (zh) | 数据访问请求处理方法、装置及车载中控系统 | |
CN103533090A (zh) | 单个物理网口模拟为多个逻辑网口的映射方法与装置 | |
CN113094180B (zh) | 无线联邦学习调度优化方法及装置 | |
CN103577469B (zh) | 数据库连接复用方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |