CN102331923A - 一种基于多核多线程处理器的功能宏流水线实现方法 - Google Patents
一种基于多核多线程处理器的功能宏流水线实现方法 Download PDFInfo
- Publication number
- CN102331923A CN102331923A CN201110309287A CN201110309287A CN102331923A CN 102331923 A CN102331923 A CN 102331923A CN 201110309287 A CN201110309287 A CN 201110309287A CN 201110309287 A CN201110309287 A CN 201110309287A CN 102331923 A CN102331923 A CN 102331923A
- Authority
- CN
- China
- Prior art keywords
- thread
- family
- task
- jump
- bag
- 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.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明公开了一种基于多核多线程处理器的功能宏流水线实现方法,将多个处理器划分成不同的族:接收族和发送族;在接收族和发送族的族内部,多个处理器采用并行结构;接收族负责报文的接收处理,接收族内部采用并行结构,多个线程并行的完成所有的包接收处理任务;发送族负责报文的发送处理,包括检查是否有新的数据包发送任务,读取新的发送任务后,要获取当前头指针的队列描述符信息,将数据包从描述符指定的SDRAM单元发送到指定的发送缓冲单元,维护队列头指针与接收族进行同步通信,发送族内部采用并行结构,多个线程并行的完成所有的包发送处理任务。
Description
技术领域
本发明涉及一种基于多核多线程处理器的功能宏流水线实现方法。
背景技术
随着网络带宽迅速增长,使得对各种网络实体如路由器、交换机和网关等的可编程性与多功能性要求不断增长,需要开发更完善的应用程序更好地发挥多核处理器的性能优势,满足各种高吞吐率、低延迟的多媒体网络通信的需求就成了当前面临的主要问题。然而在目前各种多核网络处理器的并行处理结构下,由于并行编程的灵活性和高效性并没有被很好的展现,并行网络处理能力受到了限制。网络并行处理能力需要兼顾硬件并行结构和软件的并行执行效率,与传统的单处理结构相比较而言具有其应用特殊性和复杂性。软件设计者必须深入了解各种硬件资源,包括处理器阵列、硬件线程、存储器及其相互通信机制,在***设计过程中通过软件对其直接进行管理。对并行网络处理器的编程需要应用开发人员了解线程的运行机制、线程的分配、线程的同步、线程的管理、线程的调度、负载均衡以及如何将具体问题映射到多个线程并行执行等诸多问题,开发和调试的难度都比较大,而传统上这些事情是由操作***负责的。过多的硬件细节成为应用开发的桎梏,无法发挥出多核多线程处理器的强大的并行性能优势。另外,现有的各种网络处理器体系结构、开发语言都不尽相同,并没有隐藏底层硬件差异和提供统一开发接口,因此针对特定网络处理器硬件开发的应用并不能很快移植到另一种网络处理器硬件平台之上。
国内外对于目前基于多核网络处理器的应用开发方面的研究已有开展,由于网络处理器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:访问结束后,解锁当前地址,允许其他需要访问队列的线程可以获得访问权。
本发明提出的多生产者——多消费者模型的串行流水结构的通信策略,能够有效的解决数据同步问题、保证报文保序;同时提供的互斥机制可以有效的解决共享队列单元互斥问题。
以上所述对本发明的目的、技术方案进行了详细说明。所应理解的是,以上所述并不限制本发明的范围,凡在本发明的原则及技术基础之内所做的任何修改、改进等,均应包含在本发明的保护范围之内。
Claims (6)
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:执行包处理任务的具体处理操作。
6.根据权利要求2所述的基于多核多线程处理器的功能宏流水线实现方法,其特征在于,所述接收族和发送族之间的同步通信通过基于多生产者——多消费者模型的串行流水的共享队列结构实现,具体方法为:接收族的各线程作为生产者维护队列的尾指针,在完成一个分组的接收处理任务后,要更新尾指针指向的连续两个共享片上存储单元,将要传递给发送线程的分组状态信息组成的队列描述符写入队列,并且将尾指针增加2以指向下一个队列的空闲单元;而发送族的各线程作为消费者维护队列的头指针,在开始处理一个分组的第一个微包时会首先读取队列头指针指向的连续两个共享片上存储单元的队列描述符以获取分组状态信息,然后将头指针增加2以指向下一个有效队列描述符;同一族的各线程之间及不同族的线程对队列同一单元进行访问操作的互斥问题通过基于硬件读操作锁定的互斥机制解决,具体方法为:步骤802:线程在对一个队列单元进行访问时,要对该单元的指针的地址进行锁定,接着跳转到步骤804;
步骤804:判断该地址是否已经被其他线程锁定,如果是则跳转到步骤806,如果不是,则跳转到步骤810;
步骤806:等待其他访问操作对该地址的解锁,接着跳转到步骤808;
步骤808:判断该地址是否已经解锁,如果解锁成功则跳转到步骤810,如果解锁失败则跳转到步骤806,继续等待地址解锁;
步骤810:锁定该指针的地址,开始访问队列的操作,接着跳转到步骤812;
步骤812:访问结束后,解锁当前地址,允许其他需要访问队列的线程可以获得访问权。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110309287.2A CN102331923B (zh) | 2011-10-13 | 2011-10-13 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110309287.2A CN102331923B (zh) | 2011-10-13 | 2011-10-13 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102331923A true CN102331923A (zh) | 2012-01-25 |
CN102331923B CN102331923B (zh) | 2015-04-22 |
Family
ID=45483709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110309287.2A Expired - Fee Related CN102331923B (zh) | 2011-10-13 | 2011-10-13 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102331923B (zh) |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708090A (zh) * | 2012-05-16 | 2012-10-03 | 中国人民解放军国防科学技术大学 | 用于共享存储多核多线程处理器硬件锁的验证方法 |
CN103197920A (zh) * | 2013-03-25 | 2013-07-10 | 华为技术有限公司 | 一种并发控制方法、控制节点及*** |
CN103281684A (zh) * | 2013-05-31 | 2013-09-04 | 成都天奥电子股份有限公司 | 北斗通信装置和方法 |
CN103685053A (zh) * | 2013-11-26 | 2014-03-26 | 北京航空航天大学 | 一种基于剩余任务处理时间补偿的网络处理器负载均衡调度方法 |
CN103747011A (zh) * | 2014-01-23 | 2014-04-23 | 成都卡诺维科技有限公司 | 一种高带宽网络安全*** |
CN103780635A (zh) * | 2012-10-17 | 2014-05-07 | 百度在线网络技术(北京)有限公司 | 云环境中的分布式异步任务队列执行***和方法 |
WO2014202009A1 (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 一种众核***的任务管理方法和装置 |
CN104360962A (zh) * | 2014-11-21 | 2015-02-18 | 北京应用物理与计算数学研究所 | 匹配于高性能计算机结构的多级嵌套数据传输方法与*** |
CN104615445A (zh) * | 2015-03-02 | 2015-05-13 | 长沙新弘软件有限公司 | 一种基于原子操作的设备io队列方法 |
CN105808357A (zh) * | 2016-03-29 | 2016-07-27 | 沈阳航空航天大学 | 性能可精确控制多核多线程处理器 |
CN105959161A (zh) * | 2016-07-08 | 2016-09-21 | 中国人民解放军国防科学技术大学 | 一种高速数据包构造和分发控制方法及设备 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和*** |
CN107864391A (zh) * | 2017-09-19 | 2018-03-30 | 北京小鸟科技股份有限公司 | 视频流缓存分发方法及装置 |
CN108363624A (zh) * | 2018-02-12 | 2018-08-03 | 聚好看科技股份有限公司 | 一种无锁线程有序控制存储信息的方法、装置和服务器 |
CN108494705A (zh) * | 2018-03-13 | 2018-09-04 | 山东超越数控电子股份有限公司 | 一种网络报文高速处理***和方法 |
CN108737292A (zh) * | 2018-04-18 | 2018-11-02 | 千寻位置网络有限公司 | 一种批量消息的发送方法及***、服务器 |
CN109408118A (zh) * | 2018-09-29 | 2019-03-01 | 古进 | Mhp异构多流水线处理器 |
CN109614152A (zh) * | 2018-12-06 | 2019-04-12 | 青岛镕铭半导体有限公司 | 硬件加速模块及存储设备 |
CN109614220A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种多核***处理器和数据更新方法 |
CN109783229A (zh) * | 2018-12-17 | 2019-05-21 | 平安普惠企业管理有限公司 | 线程资源分配的方法及装置 |
CN109831394A (zh) * | 2017-11-23 | 2019-05-31 | 杭州华为数字技术有限公司 | 数据处理方法、终端以及计算机存储介质 |
CN109918209A (zh) * | 2019-01-28 | 2019-06-21 | 深兰科技(上海)有限公司 | 一种线程间通信的方法和设备 |
CN110011936A (zh) * | 2019-03-15 | 2019-07-12 | 北京星网锐捷网络技术有限公司 | 基于多核处理器的线程调度方法及装置 |
CN110147254A (zh) * | 2019-05-23 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种数据缓存处理方法、装置、设备及可读存储介质 |
CN110381034A (zh) * | 2019-06-25 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种报文处理方法、装置、设备及可读存储介质 |
CN110704199A (zh) * | 2019-09-06 | 2020-01-17 | 深圳平安通信科技有限公司 | 数据压缩方法、装置、计算机设备及存储介质 |
CN110730130A (zh) * | 2019-10-22 | 2020-01-24 | 迈普通信技术股份有限公司 | 报文发送方法、装置、网络设备及存储介质 |
CN111884948A (zh) * | 2020-07-09 | 2020-11-03 | 烽火通信科技股份有限公司 | 一种流水线调度方法与装置 |
CN112256208A (zh) * | 2020-11-02 | 2021-01-22 | 南京云信达科技有限公司 | 一种离线数据包存储分析方法及装置 |
CN112269392A (zh) * | 2020-09-16 | 2021-01-26 | 广西电网有限责任公司电力科学研究院 | 一种无人机集群控制的地面工作站***及其控制方法 |
CN112416539A (zh) * | 2019-08-21 | 2021-02-26 | 无锡江南计算技术研究所 | 面向异构众核处理器的多任务并行调度方法 |
CN113360448A (zh) * | 2021-06-04 | 2021-09-07 | 展讯通信(上海)有限公司 | 数据包处理方法及装置 |
CN113364685A (zh) * | 2021-05-17 | 2021-09-07 | 中国人民解放军国防科技大学 | 一种分布式mac表项处理装置和方法 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN115080206A (zh) * | 2022-06-14 | 2022-09-20 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录***及记录方法 |
CN115185878A (zh) * | 2022-05-24 | 2022-10-14 | 中科驭数(北京)科技有限公司 | 一种多核分组网络处理器架构及任务调度方法 |
CN110704199B (zh) * | 2019-09-06 | 2024-07-05 | 深圳平安通信科技有限公司 | 数据压缩方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149870C (zh) * | 1995-05-04 | 2004-05-12 | 因特威夫通讯国际有限公司 | 扩频通信网中的信号处理器 |
CN1889667A (zh) * | 2006-07-26 | 2007-01-03 | 浙江大学 | 视频信号多处理器并行处理方法 |
CN1987792A (zh) * | 2006-12-20 | 2007-06-27 | 金魁 | 高级多线程管理的应用*** |
CN101015136A (zh) * | 2004-07-08 | 2007-08-08 | 摩托罗拉公司 | 发送和接收数据符号流的方法和设备 |
CN101261613A (zh) * | 2007-03-09 | 2008-09-10 | 南京理工大学 | 图像处理器群接口总线 |
US7565651B1 (en) * | 2000-05-25 | 2009-07-21 | Oracle International Corporation | Parallel task scheduling system for computers |
-
2011
- 2011-10-13 CN CN201110309287.2A patent/CN102331923B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149870C (zh) * | 1995-05-04 | 2004-05-12 | 因特威夫通讯国际有限公司 | 扩频通信网中的信号处理器 |
US7565651B1 (en) * | 2000-05-25 | 2009-07-21 | Oracle International Corporation | Parallel task scheduling system for computers |
CN101015136A (zh) * | 2004-07-08 | 2007-08-08 | 摩托罗拉公司 | 发送和接收数据符号流的方法和设备 |
CN1889667A (zh) * | 2006-07-26 | 2007-01-03 | 浙江大学 | 视频信号多处理器并行处理方法 |
CN1987792A (zh) * | 2006-12-20 | 2007-06-27 | 金魁 | 高级多线程管理的应用*** |
CN101261613A (zh) * | 2007-03-09 | 2008-09-10 | 南京理工大学 | 图像处理器群接口总线 |
Cited By (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102708090A (zh) * | 2012-05-16 | 2012-10-03 | 中国人民解放军国防科学技术大学 | 用于共享存储多核多线程处理器硬件锁的验证方法 |
CN102708090B (zh) * | 2012-05-16 | 2014-06-25 | 中国人民解放军国防科学技术大学 | 用于共享存储多核多线程处理器硬件锁的验证方法 |
CN103780635A (zh) * | 2012-10-17 | 2014-05-07 | 百度在线网络技术(北京)有限公司 | 云环境中的分布式异步任务队列执行***和方法 |
CN103780635B (zh) * | 2012-10-17 | 2017-08-18 | 百度在线网络技术(北京)有限公司 | 云环境中的分布式异步任务队列执行***和方法 |
CN103197920B (zh) * | 2013-03-25 | 2016-08-03 | 华为技术有限公司 | 一种并发控制方法、控制节点及*** |
CN103197920A (zh) * | 2013-03-25 | 2013-07-10 | 华为技术有限公司 | 一种并发控制方法、控制节点及*** |
CN103281684A (zh) * | 2013-05-31 | 2013-09-04 | 成都天奥电子股份有限公司 | 北斗通信装置和方法 |
CN103281684B (zh) * | 2013-05-31 | 2016-04-27 | 成都天奥电子股份有限公司 | 北斗通信装置和方法 |
WO2014202009A1 (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 一种众核***的任务管理方法和装置 |
US10002023B2 (en) | 2013-06-21 | 2018-06-19 | Huawei Technologies Co., Ltd. | Method and apparatus for managing one or more tasks of a many-core system using one or more task descriptor entries |
CN103685053A (zh) * | 2013-11-26 | 2014-03-26 | 北京航空航天大学 | 一种基于剩余任务处理时间补偿的网络处理器负载均衡调度方法 |
CN103685053B (zh) * | 2013-11-26 | 2017-01-11 | 北京航空航天大学 | 一种基于剩余任务处理时间补偿的网络处理器负载均衡调度方法 |
CN103747011A (zh) * | 2014-01-23 | 2014-04-23 | 成都卡诺维科技有限公司 | 一种高带宽网络安全*** |
CN104360962A (zh) * | 2014-11-21 | 2015-02-18 | 北京应用物理与计算数学研究所 | 匹配于高性能计算机结构的多级嵌套数据传输方法与*** |
CN104360962B (zh) * | 2014-11-21 | 2015-10-28 | 北京应用物理与计算数学研究所 | 匹配于高性能计算机结构的多级嵌套数据传输方法与*** |
CN104615445B (zh) * | 2015-03-02 | 2017-09-26 | 长沙新弘软件有限公司 | 一种基于原子操作的设备io队列方法 |
CN104615445A (zh) * | 2015-03-02 | 2015-05-13 | 长沙新弘软件有限公司 | 一种基于原子操作的设备io队列方法 |
CN106506393A (zh) * | 2016-02-05 | 2017-03-15 | 华为技术有限公司 | 一种数据流处理方法、装置和*** |
CN105808357B (zh) * | 2016-03-29 | 2021-07-27 | 沈阳航空航天大学 | 性能可精确控制多核多线程处理器 |
CN105808357A (zh) * | 2016-03-29 | 2016-07-27 | 沈阳航空航天大学 | 性能可精确控制多核多线程处理器 |
CN105959161A (zh) * | 2016-07-08 | 2016-09-21 | 中国人民解放军国防科学技术大学 | 一种高速数据包构造和分发控制方法及设备 |
CN105959161B (zh) * | 2016-07-08 | 2019-04-26 | 中国人民解放军国防科学技术大学 | 一种高速数据包构造和分发控制方法及设备 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN107864391A (zh) * | 2017-09-19 | 2018-03-30 | 北京小鸟科技股份有限公司 | 视频流缓存分发方法及装置 |
CN107864391B (zh) * | 2017-09-19 | 2020-03-13 | 北京小鸟科技股份有限公司 | 视频流缓存分发方法及装置 |
CN109831394A (zh) * | 2017-11-23 | 2019-05-31 | 杭州华为数字技术有限公司 | 数据处理方法、终端以及计算机存储介质 |
CN108363624B (zh) * | 2018-02-12 | 2022-04-19 | 聚好看科技股份有限公司 | 一种无锁线程有序控制存储信息的方法、装置和服务器 |
CN108363624A (zh) * | 2018-02-12 | 2018-08-03 | 聚好看科技股份有限公司 | 一种无锁线程有序控制存储信息的方法、装置和服务器 |
CN108494705A (zh) * | 2018-03-13 | 2018-09-04 | 山东超越数控电子股份有限公司 | 一种网络报文高速处理***和方法 |
CN108737292A (zh) * | 2018-04-18 | 2018-11-02 | 千寻位置网络有限公司 | 一种批量消息的发送方法及***、服务器 |
CN109408118B (zh) * | 2018-09-29 | 2024-01-02 | 古进 | Mhp异构多流水线处理器 |
CN109408118A (zh) * | 2018-09-29 | 2019-03-01 | 古进 | Mhp异构多流水线处理器 |
CN109614220A (zh) * | 2018-10-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种多核***处理器和数据更新方法 |
US11106795B2 (en) | 2018-10-26 | 2021-08-31 | Advanced New Technologies Co., Ltd. | Method and apparatus for updating shared data in a multi-core processor environment |
CN109614220B (zh) * | 2018-10-26 | 2020-06-30 | 阿里巴巴集团控股有限公司 | 一种多核***处理器和数据更新方法 |
CN109614152B (zh) * | 2018-12-06 | 2022-11-04 | 镕铭微电子(济南)有限公司 | 硬件加速模块及存储设备 |
CN109614152A (zh) * | 2018-12-06 | 2019-04-12 | 青岛镕铭半导体有限公司 | 硬件加速模块及存储设备 |
CN109783229A (zh) * | 2018-12-17 | 2019-05-21 | 平安普惠企业管理有限公司 | 线程资源分配的方法及装置 |
CN109918209A (zh) * | 2019-01-28 | 2019-06-21 | 深兰科技(上海)有限公司 | 一种线程间通信的方法和设备 |
CN110011936B (zh) * | 2019-03-15 | 2023-02-17 | 北京星网锐捷网络技术有限公司 | 基于多核处理器的线程调度方法及装置 |
CN110011936A (zh) * | 2019-03-15 | 2019-07-12 | 北京星网锐捷网络技术有限公司 | 基于多核处理器的线程调度方法及装置 |
CN110147254A (zh) * | 2019-05-23 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种数据缓存处理方法、装置、设备及可读存储介质 |
CN110381034B (zh) * | 2019-06-25 | 2022-02-22 | 苏州浪潮智能科技有限公司 | 一种报文处理方法、装置、设备及可读存储介质 |
CN110381034A (zh) * | 2019-06-25 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种报文处理方法、装置、设备及可读存储介质 |
CN112416539A (zh) * | 2019-08-21 | 2021-02-26 | 无锡江南计算技术研究所 | 面向异构众核处理器的多任务并行调度方法 |
CN112416539B (zh) * | 2019-08-21 | 2022-11-15 | 无锡江南计算技术研究所 | 面向异构众核处理器的多任务并行调度方法 |
CN110704199A (zh) * | 2019-09-06 | 2020-01-17 | 深圳平安通信科技有限公司 | 数据压缩方法、装置、计算机设备及存储介质 |
CN110704199B (zh) * | 2019-09-06 | 2024-07-05 | 深圳平安通信科技有限公司 | 数据压缩方法、装置、计算机设备及存储介质 |
CN110730130A (zh) * | 2019-10-22 | 2020-01-24 | 迈普通信技术股份有限公司 | 报文发送方法、装置、网络设备及存储介质 |
CN111884948A (zh) * | 2020-07-09 | 2020-11-03 | 烽火通信科技股份有限公司 | 一种流水线调度方法与装置 |
CN111884948B (zh) * | 2020-07-09 | 2022-08-12 | 烽火通信科技股份有限公司 | 一种流水线调度方法与装置 |
CN112269392A (zh) * | 2020-09-16 | 2021-01-26 | 广西电网有限责任公司电力科学研究院 | 一种无人机集群控制的地面工作站***及其控制方法 |
CN112269392B (zh) * | 2020-09-16 | 2023-08-22 | 广西电网有限责任公司电力科学研究院 | 一种无人机集群控制的地面工作站***及其控制方法 |
CN112256208A (zh) * | 2020-11-02 | 2021-01-22 | 南京云信达科技有限公司 | 一种离线数据包存储分析方法及装置 |
CN113364685A (zh) * | 2021-05-17 | 2021-09-07 | 中国人民解放军国防科技大学 | 一种分布式mac表项处理装置和方法 |
CN113360448A (zh) * | 2021-06-04 | 2021-09-07 | 展讯通信(上海)有限公司 | 数据包处理方法及装置 |
WO2022252590A1 (zh) * | 2021-06-04 | 2022-12-08 | 展讯通信(上海)有限公司 | 数据包处理方法及装置 |
CN115185878A (zh) * | 2022-05-24 | 2022-10-14 | 中科驭数(北京)科技有限公司 | 一种多核分组网络处理器架构及任务调度方法 |
CN115080206B (zh) * | 2022-06-14 | 2023-08-08 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录***及记录方法 |
CN115080206A (zh) * | 2022-06-14 | 2022-09-20 | 哈尔滨工业大学 | 一种基于多线程机制的高速回波数据实时记录***及记录方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102331923B (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102331923B (zh) | 一种基于多核多线程处理器的功能宏流水线实现方法 | |
US10887238B2 (en) | High performance, scalable multi chip interconnect | |
CN110741356B (zh) | 多处理器***中的中继一致存储器管理 | |
Ajima et al. | Tofu interconnect 2: System-on-chip integration of high-performance interconnect | |
US8505013B2 (en) | Reducing data read latency in a network communications processor architecture | |
US9734056B2 (en) | Cache structure and management method for use in implementing reconfigurable system configuration information storage | |
US20130070588A1 (en) | Packet Processing in a Parallel Processing Environment | |
CN102521201A (zh) | 多核数字信号处理器片上***及数据传输方法 | |
EP2159694B1 (en) | Method and device for barrier synchronization, and multicore processor | |
CN110347635A (zh) | 一种基于多层总线的异构多核微处理器 | |
KR20210030282A (ko) | 게이트웨이 상의 호스트 프록시 | |
US20110225372A1 (en) | Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor | |
ITRM20120094A1 (it) | Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale | |
US10616333B2 (en) | System for the management of out-of-order traffic in an interconnect network and corresponding method and integrated circuit | |
US8868889B2 (en) | Instruction breakpoints in a multi-core, multi-thread network communications processor architecture | |
US20110222552A1 (en) | Thread synchronization in a multi-thread network communications processor architecture | |
Daneshtalab et al. | A low-latency and memory-efficient on-chip network | |
CN108268385A (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
CN109379303A (zh) | 基于提升万兆以太网性能的并行化处理框架***和方法 | |
CN105094751A (zh) | 一种用于流式数据并行处理的内存管理方法 | |
CN105426260A (zh) | 一种支持分布式***的透明进程间通信***及方法 | |
Lant et al. | Enabling shared memory communication in networks of MPSoCs | |
Mamidala et al. | Optimizing mpi collectives using efficient intra-node communication techniques over the blue gene/p supercomputer | |
CN114116167B (zh) | 一种面向高性能计算的区域自治异构众核处理器 | |
Schoeberl et al. | S4noc: a minimalistic network-on-chip for real-time multicores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
DD01 | Delivery of document by public notice |
Addressee: Li Kang Document name: Notice of termination of patent right |
|
DD01 | Delivery of document by public notice | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150422 Termination date: 20201013 |
|
CF01 | Termination of patent right due to non-payment of annual fee |