一种基于多核多线程处理器的功能宏流水线实现方法.pdf

上传人:r7 文档编号:1036383 上传时间:2018-03-27 格式:PDF 页数:15 大小:495.53KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110309287.2

申请日:

2011.10.13

公开号:

CN102331923A

公开日:

2012.01.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/38申请日:20111013|||公开

IPC分类号:

G06F9/38

主分类号:

G06F9/38

申请人:

西安电子科技大学

发明人:

李康; 赵庆贺; 雷理; 范勇; 马佩军; 史江义; 郝跃

地址:

710071 陕西省西安市太白南路2号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明公开了一种基于多核多线程处理器的功能宏流水线实现方法,将多个处理器划分成不同的族:接收族和发送族;在接收族和发送族的族内部,多个处理器采用并行结构;接收族负责报文的接收处理,接收族内部采用并行结构,多个线程并行的完成所有的包接收处理任务;发送族负责报文的发送处理,包括检查是否有新的数据包发送任务,读取新的发送任务后,要获取当前头指针的队列描述符信息,将数据包从描述符指定的SDRAM单元发送到指定的发送缓冲单元,维护队列头指针与接收族进行同步通信,发送族内部采用并行结构,多个线程并行的完成所有的包发送处理任务。

权利要求书

1: 一种基于多核多线程处理器的功能宏流水线实现方法, 其特征在于, 将多个处理器 划分成不同的族 : 接收族和发送族 ; 在接收族和发送族的族内部, 多个处理器采用并行结 构; 接收族负责报文的接收处理, 接收族内部采用并行结构, 多个线程并行的完成所有的包 接收处理任务 ; 发送族负责报文的发送处理, 包括检查是否有新的数据包发送任务, 读取新 的发送任务后, 要获取当前头指针的队列描述符信息, 将数据包从描述符指定的 SDRAM 单 元发送到指定的发送缓冲单元, 维护队列头指针与接收族进行同步通信, 发送族内部采用 并行结构, 多个线程并行的完成所有的包发送处理任务。
2: 根据权利要求 1 所述的基于多核多线程处理器的功能宏流水线实现方法, 其特征在 于, 所述接收族和发送族的并行包处理任务调度方法为 : 两个族的报文任务的分配都是基 于将报文分组分割为若干个微包, 将不同的微包处理任务分配给不同的线程, 各个线程并 行的进行包处理任务, 线程间需要进行同步通信, 传递包处理状态信息, 以保证同一分组接 收处理、 缓存、 发送的连续性。
3: 根据权利要求 2 所述的基于多核多线程处理器的功能宏流水线实现方法, 其特征在 于, 所述接收族的报文接收任务分配策略为 : 采用传统的线程池模型进行微包处理任务的 分配, 同一分组的微包接收任务分配给不同的线程来处理, 当线程完成接收任务后, 放入接 收线程池中, 等待新的包处理任务, 采用轮转调度方式向空闲线程分配任务, 当前线程获得 一个微包接收任务后, 会向下一个线程发送一个信号量, 通知给下一个线程分配任务。
4: 根据权利要求 2 所述的基于多核多线程处理器的功能宏流水线实现方法, 其特征在 于, 所述发送族的报文发送任务分配策略为 : 采用改进的线程池模型进行微包处理任务的 分配, 同一分组的微包发送任务分配给不同的线程来处理 ; 提供一个独立的仲裁线程对发 送线程池的空闲线程进行任务分配, 仲裁线程持续的检查是否有新的发送任务, 若有新的 任务则将其分配给空闲线程, 处理线程完成一个发送任务进入空闲线程池后, 会等待获取 新的分配任务并开始新一轮的处理。
5: 根据权利要求 2 所述的基于多核多线程处理器的功能宏流水线实现方法, 其特征在 于, 所述线程间相互通信的方法为 : 步骤 602 : 每个线程获得一个分组的包处理任务后, 线程首先检查待处理的微包的类 别, 接着跳转到步骤 604 ; 步骤 604 : 判断获得的包处理任务是否是分组的第一个微包, 如果是则跳转到步骤 612, 如果不是, 则跳转到步骤 606 ; 步骤 606 : 读取当前包处理线程的共享存储单元, 接着跳转到步骤 608 ; 步骤 608 : 判断读出的信息是否有效, 即最高位是否为 1, 如果有效则跳转到步骤 610, 如果无效, 则跳转到步骤 606, 等待数据有效 ; 步骤 610 : 判断获得的包处理任务是否是分组的中间的微包, 如果是, 则跳转到步骤 612, 如果不是, 则跳转到步骤 614 ; 步骤 612 : 使线程本身共享存储单元无效, 然后更新下一个线程的共享存储单元中的 状态信息, 并使其有效, 接着跳转步骤 616 ; 步骤 614 : 使线程本身共享存储单元无效, 然后向下一个接收线程的共享存储单元写 入零值并使其有效, 接着跳转到步骤 616 ; 步骤 616 : 执行包处理任务的具体处理操作。 2
6: 根据权利要求 2 所述的基于多核多线程处理器的功能宏流水线实现方法, 其特征在 于, 所述接收族和发送族之间的同步通信通过基于多生产者——多消费者模型的串行流水 的共享队列结构实现, 具体方法为 : 接收族的各线程作为生产者维护队列的尾指针, 在完成 一个分组的接收处理任务后, 要更新尾指针指向的连续两个共享片上存储单元, 将要传递 给发送线程的分组状态信息组成的队列描述符写入队列, 并且将尾指针增加 2 以指向下一 个队列的空闲单元 ; 而发送族的各线程作为消费者维护队列的头指针, 在开始处理一个分 组的第一个微包时会首先读取队列头指针指向的连续两个共享片上存储单元的队列描述 符以获取分组状态信息, 然后将头指针增加 2 以指向下一个有效队列描述符 ; 同一族的各 线程之间及不同族的线程对队列同一单元进行访问操作的互斥问题通过基于硬件读操作 锁定的互斥机制解决, 具体方法为 : 步骤 802 : 线程在对一个队列单元进行访问时, 要对该 单元的指针的地址进行锁定, 接着跳转到步骤 804 ; 步骤 804 : 判断该地址是否已经被其他线程锁定, 如果是则跳转到步骤 806, 如果不是, 则跳转到步骤 810 ; 步骤 806 : 等待其他访问操作对该地址的解锁, 接着跳转到步骤 808 ; 步骤 808 : 判断该地址是否已经解锁, 如果解锁成功则跳转到步骤 810, 如果解锁失败 则跳转到步骤 806, 继续等待地址解锁 ; 步骤 810 : 锁定该指针的地址, 开始访问队列的操作, 接着跳转到步骤 812 ; 步骤 812 : 访问结束后, 解锁当前地址, 允许其他需要访问队列的线程可以获得访问 权。

说明书


一种基于多核多线程处理器的功能宏流水线实现方法

    【技术领域】
     本发明涉及一种基于多核多线程处理器的功能宏流水线实现方法。背景技术 随着网络带宽迅速增长, 使得对各种网络实体如路由器、 交换机和网关等的可编 程性与多功能性要求不断增长, 需要开发更完善的应用程序更好地发挥多核处理器的性能 优势, 满足各种高吞吐率、 低延迟的多媒体网络通信的需求就成了当前面临的主要问题。 然 而在目前各种多核网络处理器的并行处理结构下, 由于并行编程的灵活性和高效性并没有 被很好的展现, 并行网络处理能力受到了限制。网络并行处理能力需要兼顾硬件并行结构 和软件的并行执行效率, 与传统的单处理结构相比较而言具有其应用特殊性和复杂性。软 件设计者必须深入了解各种硬件资源, 包括处理器阵列、 硬件线程、 存储器及其相互通信机 制, 在系统设计过程中通过软件对其直接进行管理。对并行网络处理器的编程需要应用开 发人员了解线程的运行机制、 线程的分配、 线程的同步、 线程的管理、 线程的调度、 负载均衡 以及如何将具体问题映射到多个线程并行执行等诸多问题, 开发和调试的难度都比较大, 而传统上这些事情是由操作系统负责的。过多的硬件细节成为应用开发的桎梏, 无法发挥 出多核多线程处理器的强大的并行性能优势。 另外, 现有的各种网络处理器体系结构、 开发 语言都不尽相同, 并没有隐藏底层硬件差异和提供统一开发接口, 因此针对特定网络处理 器硬件开发的应用并不能很快移植到另一种网络处理器硬件平台之上。
     国内外对于目前基于多核网络处理器的应用开发方面的研究已有开展, 由于网络 处理器 NP 结构特殊性, 现有方法通常不具备统一的高层编程模型, 也不尽完善 ; 而且, 很少 有涉及适应不同 NP 架构的方法, 导致应用程序不能在各 NP 平台之间移植。这极大地限制 了网络处理器技术的应用和开发, 也阻碍了多核多线程网络处理器发挥出它的潜在优势。
     因此在多核网络处理器应用开发时, 需要一种有效的并行处理方法或技术来隐藏 不同网络处理器之间的硬件体系结构差异, 充分发掘出多核多线程架构的并行性能优势 ; 同时在基于多核处理器结构的网络应用开发中, 报文任务分配的实现和线程间通信必须由 开发人员控制, 保证各处理单元的负载均衡和报文保序, 报文任务的分配需要权衡负载均 衡和报文保序 ; 网络处理器包含多种不同类型的共享资源, 比如内存、 发送缓冲区等, 因此 必须对各种共享资源的使用进行仲裁和互斥操作。 这种有效的方法或技术必须能够解决网 络处理器中分组处理的两个问题, 一个是包顺序的保持问题, 另一个是多线程并行访问一 数据结构时的线程互斥问题。
     发明内容
     为了克服上述网络处理器软件开发存在的缺陷, 解决网络报文处理的关键问题, 充分发挥多核多线程硬件结构的并行处理性能优势, 本发明提供一种基于多核多线程处理 器共享存储器硬件结构上的功能宏流水线实现方法。 本发明提出的功能宏流水线结构是在 处理器之间采用的并行流水技术, 该流水结构依据包处理器在包处理中的不同功能将其串联接成流水线。本技术通过一种基于多核多线程的并行报文接收、 处理和发送的任务分配 调度方法来保证多个微处理器的负载均衡、 并行处理, 并能够有效维持多核网络处理器系 统的高吞吐率 ; 其次, 利用硬件线程之间的一种同步通信方法有效保证了接收和发送处理 的状态信息传递和报文保序, 解决了各线程间的同步通信问题 ; 再次, 设计了对多处理器系 统的共享资源进行同步访问的方法, 通过特殊设计的互斥结构来确保多处理器线程对同一 数据结构访问时的同步。在其它方面, 本发明提出的模型可以有效隐藏不同网络处理器之 间的硬件体系结构差异, 提供一种统一的开发模型, 提供易维护、 易扩展、 高效, 可移植的网 络处理器应用开发接口。
     本方法基于一种多核多线程网络处理器结构, 该结构采用多个处理器单元共享分 级存储器系统的方法实现。微处理器可支持硬件多线程并行处理, 不同周期内微处理器执 行的指令可能来自不同的线程。一个线程能够通过指令主动线程切换, 交由下一硬件线程 继续执行, 隐藏了慢速设备访问等待时间。存储器系统根据不同的数据类型采用了由分 布式存储器与共享存储设备共同组成的层次结构, 同时提高存储访问的并行性与吞吐率性 能。在共享存储器硬件系统层次结构的并行处理器基础上, 通过软硬结合的方法实现一种 功能宏流水线结构, 提高了包处理过程的并行性和总体吞吐率。
     包处理功能宏流水线划分方法主要针对 IP 包的处理步骤, 对包处理功能进行划 分, 并将各部分子功能映射到不同的处理器上。将多个处理器划分成不同的族 : 接收族, 发 送族。 在族内部多个处理器采用并行结构, 而不同族之间按照功能顺序进行串联, 完成一个 串行流水结构, 每个族各自负责相应的包处理工作。功能宏流水结构的实现必须仔细考虑 的方面包括 : 如何进行包处理任务的并行调度 ; 如何实现快速可靠的硬件线程间的通信与 同步 ; 如何进行功能流水的发送族与接收族之间的数据通信与同步。针对以上方面本发明 采用如下几种技术来实现。
     一种包处理并行任务调度方法, 由一个族内完成相同功能的多个处理器的多个线 程构成线程池, 利用全局调度方法统一分配线程任务。 所有空闲线程放入一个线程池中, 其 中两个处理器族分别采取不同的空闲线程调度方式, 接收族采用轮转调度方式向线程池中 的空闲线程分配新的包接收处理任务, 而发送族采用一个独立的仲裁线程 ( 该线程不进入 线程池 ), 该线程不断的将新的发送任务分配给线程池中的空闲线程。
     一种片上硬件线程间相互通信的方法, 为每个线程提供一个独占的片上硬件 ( 如 片上 RAM) 存储单元, 处理同一网络分组的线程间使用该单元进行通信、 传递状态信息, 保 证处理同一分组的各个线程的状态信息连续性。 同一处理器中的线程可以使用片上存储器 通信, 获得更高的访问速度, 而不同处理器间的线程通信也可以使用共享的片外存储器进 行通信。 同时提供一种原子操作机制, 解决不同线程访问同一个共享存储单元的同步问题。
     一种基于多生产者——多消费者模型的串行流水结构的通信策略, 通过采用一种 硬件共享队列技术完成接收族和发送族之间的同步通信操作, 接收族的各线程作为生产 者, 维护队列的尾指针, 而发送族的各线程作为消费者维护队列的头指针。同时, 该结构还 提供了一种基于硬件读操作锁定的互斥机制, 解决同一族的各线程之间及不同族的线程对 共享队列同一单元进行访问操作的同步问题。
     本发明的实施例具有以下有益效果 :
     (1) 本发明中采用的功能宏流水结构以串并混合结构方式配置, 解决了传统的串行和并行结构的缺点和瓶颈, 更容易保证各处理器的负载均衡和并行调度。
     (2) 本发明采用并行报文任务调度方法, 可有效提高线程间的负载均衡, 各线程并 行运行有效地隐藏存储器访问等待时间, 提高系统包处理速度, 使系统吞吐率大幅提高。
     (3) 本发明采用的一种硬件线程之间相互通信的同步方法, 基于多处理器共享的 分级存储器系统的线程通信可以有效地解决并行工作的各线程间的同步通信问题, 保证分 组状态信息在不同线程间的有效传递, 保证了接收发送处理中的信息连续性。
     (4) 本发明采用的多生产者——多消费者模型的串行流水结构的通信策略, 可以 有效的解决接收和发送之间的数据同步问题, 有效保证报文保序 ; 同时提供的基于读操作 锁定的互斥机制可以有效的解决共享队列单元互斥问题。
     总之, 通过上述方案, 该编程模型不仅解决了不同网络处理器应用开发中的线程 并行调度, 报文任务分配的问题, 保证各线程的负载均衡, 有效解决了共享单元互斥, 保证 报文保序, 线程同步, 而且屏蔽了不同网络处理器中硬件细节, 提供一种统一的硬件抽象, 具有易开发、 易维护、 易扩展、 易移植的优点。 附图说明 通过结合附图对本发明的实施例进行详细的描述, 本发明的上述和其他的目的、 特征、 优点将会变得更加清楚, 其中 :
     图 1 是一种多核多线程并行处理器体系结构图 ;
     图 2 是基于 IP 报文的包处理功能划分的宏流水线结构图 ;
     图 3 是改进的基于线程池模型的报文接收任务分配策略图 ;
     图 4 是改进的基于线程池模型的报文发送任务分配策略图 ;
     图 5 是本发明实施例的以太网数据帧分割图 ;
     图 6a 是本发明实施例的一种基于共享片上存储器的线程通信的流程图 ;
     图 6b 是本发明实施例的一个共享片上存储单元结构图 ;
     图 7a 是一种基于多生产者——多消费者模型的串行流水的共享队列结构图 ;
     图 7b 是本发明实施例的队列描述符结构图 ;
     图 8 是本发明实施例的一种基于读操作互斥锁定的同步机制实现流程图 ;
     具体实施方式
     下面将参照附图来描述根据本发明实施例的基于多核网络处理器的并行编程模 型。在附图中, 相同的参考标号自始至终表示相同的元件。应当理解 : 这里描述的实施例仅 仅是说明性的, 而不应当被解释为限制本发明的范围。
     如图 1 所示是一种多核多线程网络处理器体系结构 100 示意图, 包括通用处理器 102、 包处理微处理器 104、 分级存储器系统 106、 协处理器系统 108、 数据交换系统 110。
     通用处理器 102 主要完成的功能包括系统启动初始化, 代码加载, 控制管理功能 和一些高层协议的处理以及异常分组处理。 控制管理层面上的功能交给通用微处理器去完 成, 数据转发层面上的功能交给微处理器 104 去完成。对于内部没有内嵌通用微处理器的 网络处理器, 这些功能由外部主控完成, 或者由专门的协处理器来完成。
     微处理器 104 是网络处理器的核心单元, 它实际上是一个功能专用的微处理器核, 主要完成数据转发层面上报文转发的工作。 微处理器都支持细粒度多线程, 细粒度多线 程的特性支持网络报文处理的并行性, 由硬件保证线程之间的切换开销接近 0。 当一个线程 等待慢速如存储器读写操作时, 会切换出去开始执行另一个线程, 隐藏了慢速设备访问等 待时间, 使线程能够全速连续地执行一个线程的指令, 直到访存操作引起线程切换, 处理器 连续运行, 避免了访存等待, 从而使系统总体吞吐率得到提升。
     分级存储器系统 106, 包括网络处理器内部的分布式存储器如微处理器寄存器堆、 片上存储器和共享存储器如片外 SRAM 及 SDRAM 以及高速缓存 Cache 等 . 根据不同数据的 用途, 对存储器的延迟和带宽有不同的要求, 因此可以采用分级存储机制, 基于共享的片上 存储器可以进行线程间的通信, 保证报文处过程中的数据同步, 状态信息传递。
     协处理系统 108 是一种硬件加速单元, 一般完成报文处理中执行频度较高, 处理 较复杂的功能如 CRC 校验和计算和路由查表等。
     数据交换系统 110 与外部设备 112, 如 MAC 芯片相连, 主要完成网络层和数据链路 层的数据交换。 负责接收来自物理层的数据报位流, 形成报文并存放到报文缓冲里, 它可以 在网络处理单元的调度下下完成数据的接收与缓冲、 发送与缓冲等功能。
     本发明提出的多核多线程网络处理器体系结构是一种通用的多核网络处理器硬 件体系结构, 为本发明提出的功能宏流水线实现方法提供一种统一的硬件平台, 屏蔽了不 同网络处理器中硬件细节, 提供一种统一的硬件抽象, 易于扩展与移植。 本发明实施的基于包处理功能的宏流水线的划分方法 200 如图 2 所示, 并行包处 理功能由接收族 202 和发送族 204 构成的宏流水线结构来完成。根据不同微处理器在报 文处理过程中的功能, 本发明采用微处理器串并混合结构方式, 将包处理微处理器 104 划 分为接收族 202, 发送族 204, 两族之间采用串行流水结构, 各族分别实现不同的功能, 族之 间通过互连机制串联接成一条流水线, 分组依次通过整个流水结构后即完成了整个处理任 务。
     接收族 202 负责报文的接收处理, 包括包接收到接收缓冲 FIFO、 包分类、 第二层数 据链路层校验如 MAC 地址过滤, 帧类型校验等等、 第三层网络层校验如 IP 头校验 ( 协议、 校 验和、 TTL)、 路由查找、 包头修改 ( 修改 TTL、 校验和 )、 包缓存到片外 SDRAM 等, 同时处理完 分组后需要向当前队列尾指针地址处写入新的队列描述符, 维护队列尾指针与发送族 204 进行同步通信, 接收族内部采用并行结构, 多个线程并行的完成所有的包接收处理任务。
     发送族 204 负责报文的发送处理, 包括检查是否有新的数据包发送任务, 读取新 的发送任务后, 要获取当前头指针的队列描述符信息, 将数据包从描述符指定的 SDRAM 单 元发送到指定的发送缓冲单元, 维护队列头指针与接收族 202 进行同步通信, 发送族内部 采用并行结构, 多个线程并行的完成所有的包发送处理任务。
     本发明提出的基于宏流水线的包处理功能划分方法解决了传统的串行和并行结 构的缺点和瓶颈, 可扩展性好, 充分利用总线和处理器资源, 更容易保证各处理器的负载均 衡和并行调度, 从而保证系统具有更高的吞吐率。 同时, 本发明提出的功能宏流水技术的实 现必须依赖以下三种技术方法解决包处理的关键问题。
     本发明实施的并行包处理任务调度方法如图 3、 图 4 所示, 接收族 202, 发送族 204 两个族的报文任务的分配都是基于将报文分组分割为 64 字节的若干个微包, 如图 5 所示的 一个数据帧 502, 划分成三个微包, 将不同的微包处理任务分配给不同的线程, 各个线程并
     行的进行包处理任务, 线程间需要进行同步通信, 传递包处理状态信息, 以保证同一分组接 收处理、 缓存、 发送的连续性。
     接收族 202 的报文接收任务分配策略如图 3 所示, 采用传统的线程池模型进行微 包处理任务的分配, 同一分组的微包接收任务分配给不同的线程来处理, 当线程完成接收 任务后, 放入接收族线程池 302 中, 等待新的包处理任务, 采用轮转调度方式向空闲线程分 配任务, 当前线程获得 IP 分组 304 一个微包接收任务后, 会向下一个线程发送一个信号量, 通知给下一个线程分配任务。图 5 所示的数据帧分组 502 的接收任务分配如下, 线程 0 获 得该分组的第一个微包 504 的处理任务后, 发送信号量通知线程 1 分配微包 506 的处理任 务, 线程 1 获得任务后又会通知线程 2 处理最后一个微包 508。 为了在处理同一分组的不同 接收线程之间传递状态信息, 确保组成它的微包能有序地接收, 我们提供了一个基于片上 存储器的同步通信策略, 保证接收状态信息连续性。
     发送族 204 的报文发送任务分配策略如图 4 所示, 采用改进的线程池模型进行微 包处理任务的分配, 同一 IP 分组 402 的微包发送任务分配给不同的线程来处理。我们提供 一个独立的发送族仲裁线程 404 对发送族线程池 406 的空闲线程进行任务分配, 仲裁线程 持续的检查是否有新的发送任务, 若有新的任务则将其分配给空闲线程, 处理线程完成一 个发送任务进入空闲线程池后, 会等待获取新的分配任务并开始新一轮的处理。发送族仲 裁线程 404 和其他线程的通信可以采用片上存储单元进行通信, 保证分组处理任务的均衡 分配。同上, 我们提供了一个基于片上存储器的同步通信策略, 保证发送状态信息连续性。 本发明实施的并行包处理任务调度方法可大幅度提高并行线程间的负载均衡, 各 线程并行运行能够有效地隐藏慢速设备的访问等待时间, 提高系统包处理速度, 使系统吞 吐率大幅提高。
     本发明实施例的片上硬件线程间相互通信的方法实现流程如图 6a 所示。每个线 程拥有一个片上存储单元 ( 如图 6b 所示 ), 该片上存储单元用于存储与报文处理相关的状 态信息, 如缓冲区地址、 丢弃位、 分组中微包数、 微包顺序号、 分组顺序号 ( 具体的状态信息 的程序员可根据需要设定 ) 等等, 其中最高位为有效位, 为 1 表示其中的状态信息是最新的 有效信息, 为 0 表示状态信息已经无效, 需要等待新的有效信息写入。我们提供一种原子操 作机制对最高有效位进行操作, 读出共享存储单元中的信息后, 将最高有效位清零, 以解决 对不同线程访问同一个共享存储单元的同步问题。 处理同一分组的线程间使用该单元进行 通信, 传递处理状态信息。
     图 6a 所示的线程通信流程具体包括 :
     步骤 602 : 每个线程获得一个分组的包处理任务后, 线程首先检查待处理的微包 的类别, 接着跳转到步骤 604 ;
     步骤 604 : 判断获得的包处理任务是否是分组的第一个微包, 如果是则跳转到步 骤 612, 如果不是, 则跳转到步骤 606 ;
     步骤 606 : 读取当前包处理线程的共享存储单元, 接着跳转到步骤 608 ;
     步骤 608 : 判断读出的信息是否有效, 即最高位是否为 1, 如果有效则跳转到步骤 610, 如果无效, 则跳转到步骤 606, 等待数据有效 ;
     步骤 610 : 判断获得的包处理任务是否是分组的中间的微包, 如果是, 则跳转到步 骤 612, 如果不是, 则跳转到步骤 614 ;
     步骤 612 : 使线程本身共享存储单元无效, 然后更新下一个线程的共享存储单元 中的状态信息, 并使其有效, 接着跳转步骤 616 ;
     步骤 614 : 使线程本身共享存储单元无效, 然后向下一个接收线程的共享存储单 元写入零值并使其有效, 接着跳转到步骤 616 ;
     步骤 616 : 执行包处理任务的具体处理操作。
     下面以接收流程处理图 5 所示的 180 字节的分组为例说明 :
     (1) 若当前线程处理的是第一个微包, 例如当前线程 0 处理的是第一个微包 504, 首先使线程 0 本身共享存储单元的无效, 即将该单元的最高有效为清零, 然后将获取到的 更新状态信息如缓冲区地址写入下一个接收线程 1 的共享存储单元中, 同时使该单元有 效, 即最高有效位置 1。
     (2) 若当前线程处理的分组中间的微包 ( 非第一个、 最后一个 ), 例如当前线程 2 处理的是第二个微包 506, 首先读取线程 1 本身共享存储单元的状态信息并使其无效, 这里 我们使用原子操作机制, 将存储单元中的数据读出, 并将最高有效位清零, 判断读出的数据 是否有效, 无效则等待该单元有效即前一个线程写入有效信息, 否则更新状态信息并将其 写入下一个接收线程 2 的共享存储单元中, 同时使其有效。
     (3) 若当前线程处理的是最后一个微包 508, 例如当前线程 2 处理的是最后一个微 包, 首先我们使用原子操作读取线程 2 本身共享存储单元状态信息, 并将最高有效为清零 使其无效, 判断读出的数据是否有效, 无效则等待该单元有效即前一个线程写入有效信息, 否则向下一个接收线程 3 的共享存储单元写入零值并使其有效。线程 3 开始接收新的分组 的第一个微包, 重复 (1) 的操作。
     本发明提出的基于共享分级存储器系统的线程通信策略可以有效的解决并行工 作的各线程间的同步通信问题, 同一微处理器的各个线程使用分布式存储器能够获取更快 的访问速度, 提高系统吞吐率, 保证分组状态信息在不同线程间的有效传递, 保证了接收发 送处理中的信息连续性。
     本发明实施例的基于多生产者——多消费者模型的串行流水的共享队列结构 700 如图 7a 所示, 其中共享队列用于接收族 202 和发送族 204 之间的同步通信, 传递有效的分 组状态信息。队列中基本单元队列描述符 714 如图 7b 所示, 其中队列基址 702 是队列单元 首地址, 存储的分组信息包括包缓冲区地址、 最后一个微包的有效字节数、 分组中微包数、 分组顺序号等等, 普通技术人员可根据需要将队列描述符配置成 2 ~ 4 个 32 位字, 并且可 以增加所需要的状态信息。我们这里假设队列描述符为两个 32 位字, 即一个描述符占用两 个 32 位存储单元。
     接收族的各线程作为生产者维护队列的尾指针 704, 其写操作 710 在完成一个分 组的接收处理任务后, 要更新尾指针指向的连续两个共享片上存储单元, 将要传递给发送 线程的分组状态信息组成的队列描述符写入队列, 并且将尾指针 704 增加 2 以指向下一个 队列的空闲单元 708 ; 而发送族的各线程作为消费者维护队列的头指针 706, 读操作 712 在 开始处理一个分组的第一个微包时会首先读取队列头指针 706 指向的连续两个共享片上 存储单元的队列描述符以获取分组状态信息, 然后将头指针 706 增加 2 以指向下一个有效 队列描述符 710。
     由于同一族的各线程之间及不同族的线程对队列同一单元进行访问操作需要解决互斥问题, 具体解决互斥的操作可以使用软件变量或者基于硬件锁的读锁机制 ( 依赖于 硬件 CAM), 程序设计者可根据具体情况使用其一。在此我们提供一种基于硬件读操作锁定 的互斥机制的实现流程如图 8 所示, 保证各线程对同一个队列单元的访问互斥。我们对队 列结构的访问操作都是依赖于头尾指针, 因此我们只需对头尾指针进行锁定就可保证访问 的互斥, 为此将头尾指针分别存储到两个片上存储单元中, 对两个片上存储单元地址进行 读锁定。当线程需要访问队列时, 无论是读操作还是写操作, 都要获取当前的指针 ( 头指针 或者尾指针 ), 首先要对存储指针的片上存储单元进行读操作以获取队列指针, 要对该存储 单元进行地址锁定, 在将更新后的指针值写入片上存储后, 要对该地址进行解锁, 以允许其 他需要访问队列的线程可以获得访问权。
     图 8 所示的基于读锁的互斥流程具体包括 :
     步骤 802 : 线程在对一个队列单元进行访问时, 要对该单元的指针的地址进行锁 定, 接着跳转到步骤 804 ;
     步骤 804 : 判断该地址是否已经被其他线程锁定, 如果是则跳转到步骤 806, 如果 不是, 则跳转到步骤 810 ;
     步骤 806 : 等待其他访问操作对该地址的解锁, 接着跳转到步骤 808 ; 步骤 808 : 判断该地址是否已经解锁, 如果解锁成功则跳转到步骤 810, 如果解锁 失败则跳转到步骤 806, 继续等待地址解锁 ;
     步骤 810 : 锁定该指针的地址, 开始访问队列的操作, 接着跳转到步骤 812 ;
     步骤 812 : 访问结束后, 解锁当前地址, 允许其他需要访问队列的线程可以获得访 问权。
     本发明提出的多生产者——多消费者模型的串行流水结构的通信策略, 能够有效 的解决数据同步问题、 保证报文保序 ; 同时提供的互斥机制可以有效的解决共享队列单元 互斥问题。
     以上所述对本发明的目的、 技术方案进行了详细说明。 所应理解的是, 以上所述并 不限制本发明的范围, 凡在本发明的原则及技术基础之内所做的任何修改、 改进等, 均应包 含在本发明的保护范围之内。
    

一种基于多核多线程处理器的功能宏流水线实现方法.pdf_第1页
第1页 / 共15页
一种基于多核多线程处理器的功能宏流水线实现方法.pdf_第2页
第2页 / 共15页
一种基于多核多线程处理器的功能宏流水线实现方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种基于多核多线程处理器的功能宏流水线实现方法.pdf》由会员分享,可在线阅读,更多相关《一种基于多核多线程处理器的功能宏流水线实现方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102331923A43申请公布日20120125CN102331923ACN102331923A21申请号201110309287222申请日20111013G06F9/3820060171申请人西安电子科技大学地址710071陕西省西安市太白南路2号72发明人李康赵庆贺雷理范勇马佩军史江义郝跃54发明名称一种基于多核多线程处理器的功能宏流水线实现方法57摘要本发明公开了一种基于多核多线程处理器的功能宏流水线实现方法,将多个处理器划分成不同的族接收族和发送族;在接收族和发送族的族内部,多个处理器采用并行结构;接收族负责报文的接收处理,接收族内部采用并行结构,多个线程并行的完。

2、成所有的包接收处理任务;发送族负责报文的发送处理,包括检查是否有新的数据包发送任务,读取新的发送任务后,要获取当前头指针的队列描述符信息,将数据包从描述符指定的SDRAM单元发送到指定的发送缓冲单元,维护队列头指针与接收族进行同步通信,发送族内部采用并行结构,多个线程并行的完成所有的包发送处理任务。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图5页CN102331936A1/2页21一种基于多核多线程处理器的功能宏流水线实现方法,其特征在于,将多个处理器划分成不同的族接收族和发送族;在接收族和发送族的族内部,多个处理器采用并行结构;接收族负责报文的接。

3、收处理,接收族内部采用并行结构,多个线程并行的完成所有的包接收处理任务;发送族负责报文的发送处理,包括检查是否有新的数据包发送任务,读取新的发送任务后,要获取当前头指针的队列描述符信息,将数据包从描述符指定的SDRAM单元发送到指定的发送缓冲单元,维护队列头指针与接收族进行同步通信,发送族内部采用并行结构,多个线程并行的完成所有的包发送处理任务。2根据权利要求1所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述接收族和发送族的并行包处理任务调度方法为两个族的报文任务的分配都是基于将报文分组分割为若干个微包,将不同的微包处理任务分配给不同的线程,各个线程并行的进行包处理任务,线程。

4、间需要进行同步通信,传递包处理状态信息,以保证同一分组接收处理、缓存、发送的连续性。3根据权利要求2所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述接收族的报文接收任务分配策略为采用传统的线程池模型进行微包处理任务的分配,同一分组的微包接收任务分配给不同的线程来处理,当线程完成接收任务后,放入接收线程池中,等待新的包处理任务,采用轮转调度方式向空闲线程分配任务,当前线程获得一个微包接收任务后,会向下一个线程发送一个信号量,通知给下一个线程分配任务。4根据权利要求2所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述发送族的报文发送任务分配策略为采用改进的线程池模。

5、型进行微包处理任务的分配,同一分组的微包发送任务分配给不同的线程来处理;提供一个独立的仲裁线程对发送线程池的空闲线程进行任务分配,仲裁线程持续的检查是否有新的发送任务,若有新的任务则将其分配给空闲线程,处理线程完成一个发送任务进入空闲线程池后,会等待获取新的分配任务并开始新一轮的处理。5根据权利要求2所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述线程间相互通信的方法为步骤602每个线程获得一个分组的包处理任务后,线程首先检查待处理的微包的类别,接着跳转到步骤604;步骤604判断获得的包处理任务是否是分组的第一个微包,如果是则跳转到步骤612,如果不是,则跳转到步骤606;。

6、步骤606读取当前包处理线程的共享存储单元,接着跳转到步骤608;步骤608判断读出的信息是否有效,即最高位是否为1,如果有效则跳转到步骤610,如果无效,则跳转到步骤606,等待数据有效;步骤610判断获得的包处理任务是否是分组的中间的微包,如果是,则跳转到步骤612,如果不是,则跳转到步骤614;步骤612使线程本身共享存储单元无效,然后更新下一个线程的共享存储单元中的状态信息,并使其有效,接着跳转步骤616;步骤614使线程本身共享存储单元无效,然后向下一个接收线程的共享存储单元写入零值并使其有效,接着跳转到步骤616;步骤616执行包处理任务的具体处理操作。权利要求书CN1023319。

7、23ACN102331936A2/2页36根据权利要求2所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述接收族和发送族之间的同步通信通过基于多生产者多消费者模型的串行流水的共享队列结构实现,具体方法为接收族的各线程作为生产者维护队列的尾指针,在完成一个分组的接收处理任务后,要更新尾指针指向的连续两个共享片上存储单元,将要传递给发送线程的分组状态信息组成的队列描述符写入队列,并且将尾指针增加2以指向下一个队列的空闲单元;而发送族的各线程作为消费者维护队列的头指针,在开始处理一个分组的第一个微包时会首先读取队列头指针指向的连续两个共享片上存储单元的队列描述符以获取分组状态信息,然。

8、后将头指针增加2以指向下一个有效队列描述符;同一族的各线程之间及不同族的线程对队列同一单元进行访问操作的互斥问题通过基于硬件读操作锁定的互斥机制解决,具体方法为步骤802线程在对一个队列单元进行访问时,要对该单元的指针的地址进行锁定,接着跳转到步骤804;步骤804判断该地址是否已经被其他线程锁定,如果是则跳转到步骤806,如果不是,则跳转到步骤810;步骤806等待其他访问操作对该地址的解锁,接着跳转到步骤808;步骤808判断该地址是否已经解锁,如果解锁成功则跳转到步骤810,如果解锁失败则跳转到步骤806,继续等待地址解锁;步骤810锁定该指针的地址,开始访问队列的操作,接着跳转到步骤8。

9、12;步骤812访问结束后,解锁当前地址,允许其他需要访问队列的线程可以获得访问权。权利要求书CN102331923ACN102331936A1/7页4一种基于多核多线程处理器的功能宏流水线实现方法技术领域0001本发明涉及一种基于多核多线程处理器的功能宏流水线实现方法。背景技术0002随着网络带宽迅速增长,使得对各种网络实体如路由器、交换机和网关等的可编程性与多功能性要求不断增长,需要开发更完善的应用程序更好地发挥多核处理器的性能优势,满足各种高吞吐率、低延迟的多媒体网络通信的需求就成了当前面临的主要问题。然而在目前各种多核网络处理器的并行处理结构下,由于并行编程的灵活性和高效性并没有被很好。

10、的展现,并行网络处理能力受到了限制。网络并行处理能力需要兼顾硬件并行结构和软件的并行执行效率,与传统的单处理结构相比较而言具有其应用特殊性和复杂性。软件设计者必须深入了解各种硬件资源,包括处理器阵列、硬件线程、存储器及其相互通信机制,在系统设计过程中通过软件对其直接进行管理。对并行网络处理器的编程需要应用开发人员了解线程的运行机制、线程的分配、线程的同步、线程的管理、线程的调度、负载均衡以及如何将具体问题映射到多个线程并行执行等诸多问题,开发和调试的难度都比较大,而传统上这些事情是由操作系统负责的。过多的硬件细节成为应用开发的桎梏,无法发挥出多核多线程处理器的强大的并行性能优势。另外,现有的各。

11、种网络处理器体系结构、开发语言都不尽相同,并没有隐藏底层硬件差异和提供统一开发接口,因此针对特定网络处理器硬件开发的应用并不能很快移植到另一种网络处理器硬件平台之上。0003国内外对于目前基于多核网络处理器的应用开发方面的研究已有开展,由于网络处理器NP结构特殊性,现有方法通常不具备统一的高层编程模型,也不尽完善;而且,很少有涉及适应不同NP架构的方法,导致应用程序不能在各NP平台之间移植。这极大地限制了网络处理器技术的应用和开发,也阻碍了多核多线程网络处理器发挥出它的潜在优势。0004因此在多核网络处理器应用开发时,需要一种有效的并行处理方法或技术来隐藏不同网络处理器之间的硬件体系结构差异,。

12、充分发掘出多核多线程架构的并行性能优势;同时在基于多核处理器结构的网络应用开发中,报文任务分配的实现和线程间通信必须由开发人员控制,保证各处理单元的负载均衡和报文保序,报文任务的分配需要权衡负载均衡和报文保序;网络处理器包含多种不同类型的共享资源,比如内存、发送缓冲区等,因此必须对各种共享资源的使用进行仲裁和互斥操作。这种有效的方法或技术必须能够解决网络处理器中分组处理的两个问题,一个是包顺序的保持问题,另一个是多线程并行访问一数据结构时的线程互斥问题。发明内容0005为了克服上述网络处理器软件开发存在的缺陷,解决网络报文处理的关键问题,充分发挥多核多线程硬件结构的并行处理性能优势,本发明提供。

13、一种基于多核多线程处理器共享存储器硬件结构上的功能宏流水线实现方法。本发明提出的功能宏流水线结构是在处理器之间采用的并行流水技术,该流水结构依据包处理器在包处理中的不同功能将其串说明书CN102331923ACN102331936A2/7页5联接成流水线。本技术通过一种基于多核多线程的并行报文接收、处理和发送的任务分配调度方法来保证多个微处理器的负载均衡、并行处理,并能够有效维持多核网络处理器系统的高吞吐率;其次,利用硬件线程之间的一种同步通信方法有效保证了接收和发送处理的状态信息传递和报文保序,解决了各线程间的同步通信问题;再次,设计了对多处理器系统的共享资源进行同步访问的方法,通过特殊设计。

14、的互斥结构来确保多处理器线程对同一数据结构访问时的同步。在其它方面,本发明提出的模型可以有效隐藏不同网络处理器之间的硬件体系结构差异,提供一种统一的开发模型,提供易维护、易扩展、高效,可移植的网络处理器应用开发接口。0006本方法基于一种多核多线程网络处理器结构,该结构采用多个处理器单元共享分级存储器系统的方法实现。微处理器可支持硬件多线程并行处理,不同周期内微处理器执行的指令可能来自不同的线程。一个线程能够通过指令主动线程切换,交由下一硬件线程继续执行,隐藏了慢速设备访问等待时间。存储器系统根据不同的数据类型采用了由分布式存储器与共享存储设备共同组成的层次结构,同时提高存储访问的并行性与吞吐。

15、率性能。在共享存储器硬件系统层次结构的并行处理器基础上,通过软硬结合的方法实现一种功能宏流水线结构,提高了包处理过程的并行性和总体吞吐率。0007包处理功能宏流水线划分方法主要针对IP包的处理步骤,对包处理功能进行划分,并将各部分子功能映射到不同的处理器上。将多个处理器划分成不同的族接收族,发送族。在族内部多个处理器采用并行结构,而不同族之间按照功能顺序进行串联,完成一个串行流水结构,每个族各自负责相应的包处理工作。功能宏流水结构的实现必须仔细考虑的方面包括如何进行包处理任务的并行调度;如何实现快速可靠的硬件线程间的通信与同步;如何进行功能流水的发送族与接收族之间的数据通信与同步。针对以上方面。

16、本发明采用如下几种技术来实现。0008一种包处理并行任务调度方法,由一个族内完成相同功能的多个处理器的多个线程构成线程池,利用全局调度方法统一分配线程任务。所有空闲线程放入一个线程池中,其中两个处理器族分别采取不同的空闲线程调度方式,接收族采用轮转调度方式向线程池中的空闲线程分配新的包接收处理任务,而发送族采用一个独立的仲裁线程该线程不进入线程池,该线程不断的将新的发送任务分配给线程池中的空闲线程。0009一种片上硬件线程间相互通信的方法,为每个线程提供一个独占的片上硬件如片上RAM存储单元,处理同一网络分组的线程间使用该单元进行通信、传递状态信息,保证处理同一分组的各个线程的状态信息连续性。。

17、同一处理器中的线程可以使用片上存储器通信,获得更高的访问速度,而不同处理器间的线程通信也可以使用共享的片外存储器进行通信。同时提供一种原子操作机制,解决不同线程访问同一个共享存储单元的同步问题。0010一种基于多生产者多消费者模型的串行流水结构的通信策略,通过采用一种硬件共享队列技术完成接收族和发送族之间的同步通信操作,接收族的各线程作为生产者,维护队列的尾指针,而发送族的各线程作为消费者维护队列的头指针。同时,该结构还提供了一种基于硬件读操作锁定的互斥机制,解决同一族的各线程之间及不同族的线程对共享队列同一单元进行访问操作的同步问题。0011本发明的实施例具有以下有益效果00121本发明中采。

18、用的功能宏流水结构以串并混合结构方式配置,解决了传统的串说明书CN102331923ACN102331936A3/7页6行和并行结构的缺点和瓶颈,更容易保证各处理器的负载均衡和并行调度。00132本发明采用并行报文任务调度方法,可有效提高线程间的负载均衡,各线程并行运行有效地隐藏存储器访问等待时间,提高系统包处理速度,使系统吞吐率大幅提高。00143本发明采用的一种硬件线程之间相互通信的同步方法,基于多处理器共享的分级存储器系统的线程通信可以有效地解决并行工作的各线程间的同步通信问题,保证分组状态信息在不同线程间的有效传递,保证了接收发送处理中的信息连续性。00154本发明采用的多生产者多消费。

19、者模型的串行流水结构的通信策略,可以有效的解决接收和发送之间的数据同步问题,有效保证报文保序;同时提供的基于读操作锁定的互斥机制可以有效的解决共享队列单元互斥问题。0016总之,通过上述方案,该编程模型不仅解决了不同网络处理器应用开发中的线程并行调度,报文任务分配的问题,保证各线程的负载均衡,有效解决了共享单元互斥,保证报文保序,线程同步,而且屏蔽了不同网络处理器中硬件细节,提供一种统一的硬件抽象,具有易开发、易维护、易扩展、易移植的优点。附图说明0017通过结合附图对本发明的实施例进行详细的描述,本发明的上述和其他的目的、特征、优点将会变得更加清楚,其中0018图1是一种多核多线程并行处理器。

20、体系结构图;0019图2是基于IP报文的包处理功能划分的宏流水线结构图;0020图3是改进的基于线程池模型的报文接收任务分配策略图;0021图4是改进的基于线程池模型的报文发送任务分配策略图;0022图5是本发明实施例的以太网数据帧分割图;0023图6A是本发明实施例的一种基于共享片上存储器的线程通信的流程图;0024图6B是本发明实施例的一个共享片上存储单元结构图;0025图7A是一种基于多生产者多消费者模型的串行流水的共享队列结构图;0026图7B是本发明实施例的队列描述符结构图;0027图8是本发明实施例的一种基于读操作互斥锁定的同步机制实现流程图;具体实施方式0028下面将参照附图来描。

21、述根据本发明实施例的基于多核网络处理器的并行编程模型。在附图中,相同的参考标号自始至终表示相同的元件。应当理解这里描述的实施例仅仅是说明性的,而不应当被解释为限制本发明的范围。0029如图1所示是一种多核多线程网络处理器体系结构100示意图,包括通用处理器102、包处理微处理器104、分级存储器系统106、协处理器系统108、数据交换系统110。0030通用处理器102主要完成的功能包括系统启动初始化,代码加载,控制管理功能和一些高层协议的处理以及异常分组处理。控制管理层面上的功能交给通用微处理器去完成,数据转发层面上的功能交给微处理器104去完成。对于内部没有内嵌通用微处理器的网络处理器,这。

22、些功能由外部主控完成,或者由专门的协处理器来完成。0031微处理器104是网络处理器的核心单元,它实际上是一个功能专用的微处理器说明书CN102331923ACN102331936A4/7页7核,主要完成数据转发层面上报文转发的工作。微处理器都支持细粒度多线程,细粒度多线程的特性支持网络报文处理的并行性,由硬件保证线程之间的切换开销接近0。当一个线程等待慢速如存储器读写操作时,会切换出去开始执行另一个线程,隐藏了慢速设备访问等待时间,使线程能够全速连续地执行一个线程的指令,直到访存操作引起线程切换,处理器连续运行,避免了访存等待,从而使系统总体吞吐率得到提升。0032分级存储器系统106,包括。

23、网络处理器内部的分布式存储器如微处理器寄存器堆、片上存储器和共享存储器如片外SRAM及SDRAM以及高速缓存CACHE等根据不同数据的用途,对存储器的延迟和带宽有不同的要求,因此可以采用分级存储机制,基于共享的片上存储器可以进行线程间的通信,保证报文处过程中的数据同步,状态信息传递。0033协处理系统108是一种硬件加速单元,一般完成报文处理中执行频度较高,处理较复杂的功能如CRC校验和计算和路由查表等。0034数据交换系统110与外部设备112,如MAC芯片相连,主要完成网络层和数据链路层的数据交换。负责接收来自物理层的数据报位流,形成报文并存放到报文缓冲里,它可以在网络处理单元的调度下下完。

24、成数据的接收与缓冲、发送与缓冲等功能。0035本发明提出的多核多线程网络处理器体系结构是一种通用的多核网络处理器硬件体系结构,为本发明提出的功能宏流水线实现方法提供一种统一的硬件平台,屏蔽了不同网络处理器中硬件细节,提供一种统一的硬件抽象,易于扩展与移植。0036本发明实施的基于包处理功能的宏流水线的划分方法200如图2所示,并行包处理功能由接收族202和发送族204构成的宏流水线结构来完成。根据不同微处理器在报文处理过程中的功能,本发明采用微处理器串并混合结构方式,将包处理微处理器104划分为接收族202,发送族204,两族之间采用串行流水结构,各族分别实现不同的功能,族之间通过互连机制串联。

25、接成一条流水线,分组依次通过整个流水结构后即完成了整个处理任务。0037接收族202负责报文的接收处理,包括包接收到接收缓冲FIFO、包分类、第二层数据链路层校验如MAC地址过滤,帧类型校验等等、第三层网络层校验如IP头校验协议、校验和、TTL、路由查找、包头修改修改TTL、校验和、包缓存到片外SDRAM等,同时处理完分组后需要向当前队列尾指针地址处写入新的队列描述符,维护队列尾指针与发送族204进行同步通信,接收族内部采用并行结构,多个线程并行的完成所有的包接收处理任务。0038发送族204负责报文的发送处理,包括检查是否有新的数据包发送任务,读取新的发送任务后,要获取当前头指针的队列描述符。

26、信息,将数据包从描述符指定的SDRAM单元发送到指定的发送缓冲单元,维护队列头指针与接收族202进行同步通信,发送族内部采用并行结构,多个线程并行的完成所有的包发送处理任务。0039本发明提出的基于宏流水线的包处理功能划分方法解决了传统的串行和并行结构的缺点和瓶颈,可扩展性好,充分利用总线和处理器资源,更容易保证各处理器的负载均衡和并行调度,从而保证系统具有更高的吞吐率。同时,本发明提出的功能宏流水技术的实现必须依赖以下三种技术方法解决包处理的关键问题。0040本发明实施的并行包处理任务调度方法如图3、图4所示,接收族202,发送族204两个族的报文任务的分配都是基于将报文分组分割为64字节的。

27、若干个微包,如图5所示的一个数据帧502,划分成三个微包,将不同的微包处理任务分配给不同的线程,各个线程并说明书CN102331923ACN102331936A5/7页8行的进行包处理任务,线程间需要进行同步通信,传递包处理状态信息,以保证同一分组接收处理、缓存、发送的连续性。0041接收族202的报文接收任务分配策略如图3所示,采用传统的线程池模型进行微包处理任务的分配,同一分组的微包接收任务分配给不同的线程来处理,当线程完成接收任务后,放入接收族线程池302中,等待新的包处理任务,采用轮转调度方式向空闲线程分配任务,当前线程获得IP分组304一个微包接收任务后,会向下一个线程发送一个信号量。

28、,通知给下一个线程分配任务。图5所示的数据帧分组502的接收任务分配如下,线程0获得该分组的第一个微包504的处理任务后,发送信号量通知线程1分配微包506的处理任务,线程1获得任务后又会通知线程2处理最后一个微包508。为了在处理同一分组的不同接收线程之间传递状态信息,确保组成它的微包能有序地接收,我们提供了一个基于片上存储器的同步通信策略,保证接收状态信息连续性。0042发送族204的报文发送任务分配策略如图4所示,采用改进的线程池模型进行微包处理任务的分配,同一IP分组402的微包发送任务分配给不同的线程来处理。我们提供一个独立的发送族仲裁线程404对发送族线程池406的空闲线程进行任务。

29、分配,仲裁线程持续的检查是否有新的发送任务,若有新的任务则将其分配给空闲线程,处理线程完成一个发送任务进入空闲线程池后,会等待获取新的分配任务并开始新一轮的处理。发送族仲裁线程404和其他线程的通信可以采用片上存储单元进行通信,保证分组处理任务的均衡分配。同上,我们提供了一个基于片上存储器的同步通信策略,保证发送状态信息连续性。0043本发明实施的并行包处理任务调度方法可大幅度提高并行线程间的负载均衡,各线程并行运行能够有效地隐藏慢速设备的访问等待时间,提高系统包处理速度,使系统吞吐率大幅提高。0044本发明实施例的片上硬件线程间相互通信的方法实现流程如图6A所示。每个线程拥有一个片上存储单元。

30、如图6B所示,该片上存储单元用于存储与报文处理相关的状态信息,如缓冲区地址、丢弃位、分组中微包数、微包顺序号、分组顺序号具体的状态信息的程序员可根据需要设定等等,其中最高位为有效位,为1表示其中的状态信息是最新的有效信息,为0表示状态信息已经无效,需要等待新的有效信息写入。我们提供一种原子操作机制对最高有效位进行操作,读出共享存储单元中的信息后,将最高有效位清零,以解决对不同线程访问同一个共享存储单元的同步问题。处理同一分组的线程间使用该单元进行通信,传递处理状态信息。0045图6A所示的线程通信流程具体包括0046步骤602每个线程获得一个分组的包处理任务后,线程首先检查待处理的微包的类别,。

31、接着跳转到步骤604;0047步骤604判断获得的包处理任务是否是分组的第一个微包,如果是则跳转到步骤612,如果不是,则跳转到步骤606;0048步骤606读取当前包处理线程的共享存储单元,接着跳转到步骤608;0049步骤608判断读出的信息是否有效,即最高位是否为1,如果有效则跳转到步骤610,如果无效,则跳转到步骤606,等待数据有效;0050步骤610判断获得的包处理任务是否是分组的中间的微包,如果是,则跳转到步骤612,如果不是,则跳转到步骤614;说明书CN102331923ACN102331936A6/7页90051步骤612使线程本身共享存储单元无效,然后更新下一个线程的共享。

32、存储单元中的状态信息,并使其有效,接着跳转步骤616;0052步骤614使线程本身共享存储单元无效,然后向下一个接收线程的共享存储单元写入零值并使其有效,接着跳转到步骤616;0053步骤616执行包处理任务的具体处理操作。0054下面以接收流程处理图5所示的180字节的分组为例说明00551若当前线程处理的是第一个微包,例如当前线程0处理的是第一个微包504,首先使线程0本身共享存储单元的无效,即将该单元的最高有效为清零,然后将获取到的更新状态信息如缓冲区地址写入下一个接收线程1的共享存储单元中,同时使该单元有效,即最高有效位置1。00562若当前线程处理的分组中间的微包非第一个、最后一个,。

33、例如当前线程2处理的是第二个微包506,首先读取线程1本身共享存储单元的状态信息并使其无效,这里我们使用原子操作机制,将存储单元中的数据读出,并将最高有效位清零,判断读出的数据是否有效,无效则等待该单元有效即前一个线程写入有效信息,否则更新状态信息并将其写入下一个接收线程2的共享存储单元中,同时使其有效。00573若当前线程处理的是最后一个微包508,例如当前线程2处理的是最后一个微包,首先我们使用原子操作读取线程2本身共享存储单元状态信息,并将最高有效为清零使其无效,判断读出的数据是否有效,无效则等待该单元有效即前一个线程写入有效信息,否则向下一个接收线程3的共享存储单元写入零值并使其有效。。

34、线程3开始接收新的分组的第一个微包,重复1的操作。0058本发明提出的基于共享分级存储器系统的线程通信策略可以有效的解决并行工作的各线程间的同步通信问题,同一微处理器的各个线程使用分布式存储器能够获取更快的访问速度,提高系统吞吐率,保证分组状态信息在不同线程间的有效传递,保证了接收发送处理中的信息连续性。0059本发明实施例的基于多生产者多消费者模型的串行流水的共享队列结构700如图7A所示,其中共享队列用于接收族202和发送族204之间的同步通信,传递有效的分组状态信息。队列中基本单元队列描述符714如图7B所示,其中队列基址702是队列单元首地址,存储的分组信息包括包缓冲区地址、最后一个微。

35、包的有效字节数、分组中微包数、分组顺序号等等,普通技术人员可根据需要将队列描述符配置成24个32位字,并且可以增加所需要的状态信息。我们这里假设队列描述符为两个32位字,即一个描述符占用两个32位存储单元。0060接收族的各线程作为生产者维护队列的尾指针704,其写操作710在完成一个分组的接收处理任务后,要更新尾指针指向的连续两个共享片上存储单元,将要传递给发送线程的分组状态信息组成的队列描述符写入队列,并且将尾指针704增加2以指向下一个队列的空闲单元708;而发送族的各线程作为消费者维护队列的头指针706,读操作712在开始处理一个分组的第一个微包时会首先读取队列头指针706指向的连续两。

36、个共享片上存储单元的队列描述符以获取分组状态信息,然后将头指针706增加2以指向下一个有效队列描述符710。0061由于同一族的各线程之间及不同族的线程对队列同一单元进行访问操作需要解说明书CN102331923ACN102331936A7/7页10决互斥问题,具体解决互斥的操作可以使用软件变量或者基于硬件锁的读锁机制依赖于硬件CAM,程序设计者可根据具体情况使用其一。在此我们提供一种基于硬件读操作锁定的互斥机制的实现流程如图8所示,保证各线程对同一个队列单元的访问互斥。我们对队列结构的访问操作都是依赖于头尾指针,因此我们只需对头尾指针进行锁定就可保证访问的互斥,为此将头尾指针分别存储到两个片。

37、上存储单元中,对两个片上存储单元地址进行读锁定。当线程需要访问队列时,无论是读操作还是写操作,都要获取当前的指针头指针或者尾指针,首先要对存储指针的片上存储单元进行读操作以获取队列指针,要对该存储单元进行地址锁定,在将更新后的指针值写入片上存储后,要对该地址进行解锁,以允许其他需要访问队列的线程可以获得访问权。0062图8所示的基于读锁的互斥流程具体包括0063步骤802线程在对一个队列单元进行访问时,要对该单元的指针的地址进行锁定,接着跳转到步骤804;0064步骤804判断该地址是否已经被其他线程锁定,如果是则跳转到步骤806,如果不是,则跳转到步骤810;0065步骤806等待其他访问操。

38、作对该地址的解锁,接着跳转到步骤808;0066步骤808判断该地址是否已经解锁,如果解锁成功则跳转到步骤810,如果解锁失败则跳转到步骤806,继续等待地址解锁;0067步骤810锁定该指针的地址,开始访问队列的操作,接着跳转到步骤812;0068步骤812访问结束后,解锁当前地址,允许其他需要访问队列的线程可以获得访问权。0069本发明提出的多生产者多消费者模型的串行流水结构的通信策略,能够有效的解决数据同步问题、保证报文保序;同时提供的互斥机制可以有效的解决共享队列单元互斥问题。0070以上所述对本发明的目的、技术方案进行了详细说明。所应理解的是,以上所述并不限制本发明的范围,凡在本发明的原则及技术基础之内所做的任何修改、改进等,均应包含在本发明的保护范围之内。说明书CN102331923ACN102331936A1/5页11图1图2说明书附图CN102331923ACN102331936A2/5页12图3图4说明书附图CN102331923ACN102331936A3/5页13图5图6A说明书附图CN102331923ACN102331936A4/5页14图6B图7A图7B说明书附图CN102331923ACN102331936A5/5页15图8说明书附图CN102331923A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1