CN111459630A - 采用硬件多线程机制的网络处理器 - Google Patents
采用硬件多线程机制的网络处理器 Download PDFInfo
- Publication number
- CN111459630A CN111459630A CN202010214339.7A CN202010214339A CN111459630A CN 111459630 A CN111459630 A CN 111459630A CN 202010214339 A CN202010214339 A CN 202010214339A CN 111459630 A CN111459630 A CN 111459630A
- Authority
- CN
- China
- Prior art keywords
- thread
- state
- instruction
- register
- micro
- 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
- 230000007246 mechanism Effects 0.000 title claims abstract description 25
- 230000015654 memory Effects 0.000 claims abstract description 39
- 230000002093 peripheral effect Effects 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 15
- 230000008569 process Effects 0.000 claims abstract description 12
- 238000012545 processing Methods 0.000 claims description 19
- 241001522296 Erithacus rubecula Species 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
本发明提供了一种采用硬件多线程机制的网络处理器,包括:控制内核、微引擎内核、Hash加速器、DDR控制器、网络接口控制器、PCIe控制器以及SRAM控制器;控制内核:由通用CPU内核实现网络处理器的寄存器、存储器以及查找表的访问;网络接口控制器用于连接外部的网络终端接口;PCIe控制器用于连接外部的CPU;SRAM控制器外接片外的SRAM存储器,用于存放查找表数据;微引擎内核处理数据报文中的信息时,采用外设命令调用如Hash加速器或DDR控制器处理和读取数据。本发明有效地隐藏微引擎访问协处理器或者外部存储器时等待返回结果花费的时间,合理利用了微引擎的空闲时间,从而大幅提升微引擎的执行效率。
Description
技术领域
本发明涉及网络处理技术领域,具体地,涉及采用硬件多线程机制的网络处理器。
背景技术
随着新型网络接口的大规模使用,网络处理器的处理带宽需求不断增长,网络处理器为了提高处理带宽会采用各种技术,如提高微引擎内核的频率、微引擎指令多发射、提高微引擎内核与协处理模块的总线宽度等,最常用的核心技术就是并行处理技术,多个同构的微引擎内核提高数据处理的并行度,在同一个微引擎内核中采用多个线程也可以提高数据处理的并行度。
多线程的机制常见于软件程序的调度中,在网络处理器中,通常每个微引擎会针对一个数据包进行处理,当程序的指令需要访问协处理模块或者外部存储器,微引擎指令等待返回的结果只能处于等待状态,会浪费大量的机器时间。因此,结合不同数据包的处理程序的弱相关性特点,将软件中常用的多线程机制引入网络处理器微引擎的硬件设计中,采用配套硬件机制实现硬件的多线程,满足微引擎中各线程无缝切换,有效隐藏访问协处理器或者外部存储器的时间,从而提高微引擎内核的执行效率。
多线程机制在微引擎指令设计中采用专用的线程切换指令、信号事件机制和指令切换寄存器,从而实现一整套完整的硬件多线程机制,提高了微引擎内部的并行度。
因此,本发明所要解决的技术问题如下:
1)网络处理器的微引擎中,指令访问协处理器或者外部存储器时会由于等待返回结果花费大量的时间,为了合理利用微引擎的这些空闲时间,采用硬件线程切换指令,从而提高微引擎的利用率。
2)微引擎中线程切换模块中,采用参数化设计,可以作为硬件多线程IP应用于不同处理带宽的网络处理器中。
3)微引擎中的线程切换指令设计满足微引擎与协处理器或外部存储器之间的通信,采用了硬件信号量传递的机制,从而有效实现硬件多线程的切换。
4)同一个微引擎中的多各线程使用同一个微引擎指令存储器,有效节省了指令存储空间。
5)微引擎中的线程切换指令以及多线程的运转,需要相应的线程切换状态机进行配合。
6)微引擎中的线程切换寄存器对线程切换的信号量和线程数据进行保存和装载,与线程切换指令配合实现硬件多线程机制。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种采用硬件多线程机制的网络处理器。
根据本发明提供的一种采用硬件多线程机制的网络处理器,包括:
控制内核、微引擎内核、Hash加速器、DDR控制器、网络接口控制器、PCIe控制器以及SRAM控制器;
控制内核:由通用CPU内核实现网络处理器的寄存器、存储器以及查找表的访问;
网络接口控制器用于连接外部的网络终端接口;
PCIe控制器用于连接外部的CPU;
SRAM控制器外接片外的SRAM存储器,用于存放查找表数据。
微引擎内核处理数据报文中的信息时,采用外设命令调用如Hash加速器或DDR控制器处理和读取数据;
在微引擎内核执行完外设命令之后执行线程切换指令,在执行此线程外设命令的时间段内,对应着其他数据包的线程会被唤醒,执行相应的指令;
优选地,所述微引擎内核:
当网络接口接收到数据包以后,数据包的信息会提取到微引擎内核进行处理,通过线程切换指令实现多个线程的切换。
优选地,所述微引擎内核中没有硬件中断机制,多线程切换为非抢占式,通过微码切换指令控制线程间的切换,切换时采用Round-Robin轮转调度算法对就绪的线程按序号进行调度。
优选地,不同线程对应的程序指针不同,即指向指令存储器的执行位置不同;
同一微引擎中多个线程的指令存储器是共享的,每一个微引擎内部只需要提供一块指令存储空间。
优选地,每个线程配备一套专门的硬件来存放切换状态,该套硬件包括:
信号事件寄存器、程序指针寄存器、控制和状态寄存器;
遇到线程切换指令时,信号事件寄存器和程序指针寄存器记录进入睡眠的线程的当前状态,同时控制和状态寄存器根据实时的事件状态维护线程切换状态机,线程仲裁器从就绪状态的线程中仲裁出激活状态线程,并把该线程的程序指针寄存器值作为微引擎内核的程序指针PC,待切换线程指令之后立即执行指令存储器的指令,实现流水线指令无缝的衔接,不因线程切换而造成微引擎指令的中止。
优选地,所述信号事件寄存器包括每个线程*_CTX_SIG_EVENTS寄存器和*_CTX_WAKEUP_EVENTS寄存器,记录线程切换所需要的信号量;
程序指针寄存器记录每个线程所对应的程序指针,线程激活时,程序指针用于控制微引擎内核指令执行的内存地址;
控制和状态寄存器用于进行线程状态机的切换和激活线程的维护。
优选地,当前线程执行线程切换指令后,交出执行控制权,进入睡眠状态,同时将本线程需要等待的信号量标记在CTX_WAKEUP_EVENTS寄存器中,等待外设指令执行完毕;
外设执行指令完成后,将标志完成的信号量记录在微引擎中的CTX_SIG_EVENTS寄存器,根据比对,如果睡眠线程所等待的信号量完全匹配,那么该线程又可以重新进入就绪状态,等待下一次的仲裁,可以认为此时线程被唤醒。
优选地,每个线程都处于下述4个状态中的一个:
未激活状态:该状态下的线程不执行任何操作;
运行状态:该状态下的线程控制微引擎内核的执行权,根据程序指针读取指令来执行,线程执行线程切换指令就会进入睡眠状态,其他就绪线程才会获得执行权,激活线程状态寄存器ACTIVE_CTX_STATUS记录当前处于运行状态的线程,任何时刻只有一个线程运行;
就绪状态:该状态下的线程准备去运行,就绪线程状态寄存器INDIRECT_CTX_STATUS记录就绪线程的情况,当运行线程进入睡眠状态,线程仲裁器采用轮转算法从就绪线程中选择一个去运行;
睡眠状态:当线程执行了线程切换指令后会进入睡眠状态,当睡眠线程唤醒事件寄存器INDIRECT_CTX_SIG_EVENTS中指明的外设事件信号量发生时,通过与记录外设返回于各自线程的信号量位图的寄存器INDIRECT_CTX_WAKEUP_EVENTS比较匹配之后线程即可进入就绪状态。
与现有技术相比,本发明具有如下的有益效果:
1、网络处理器的微引擎中采用专用的硬件线程切换指令启动线程切换,有效地隐藏微引擎访问协处理器或者外部存储器时等待返回结果花费的时间,合理利用了微引擎的空闲时间,从而大幅提升微引擎的执行效率。
2、微引擎中线程的个数采用参数化设计,可以根据不同处理规模的网络处理器进行线程的扩展和裁剪。在存储带宽足够的条件下,如果设计线程个数为N,那么就可以提高N倍的微引擎处理速度。
3、微引擎线程切换指令采用了硬件信号量传递的机制,灵活简洁地实现了微引擎与协处理器或者外部存储器之间的通信,从而配合实现硬件多线程的唤醒和切换。
4、在一个微引擎中,多个线程共享一个微引擎指令存储器,不同线程切换的程序指针不同,但是却有效节省了硬件的存储空间。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明提供的采用硬件多线程机制的网络处理器结构示意图。
图2是本发明提供的硬件多线程切换的示意图。
图3是本发明提供的微引擎内部有硬件多线程模块示意图。
图4是本发明提供的微引擎内部线程切换寄存器示意图。
图5是本发明提供的多线程的状态机示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种采用硬件多线程机制的网络处理器,包括:
控制内核、微引擎内核、Hash加速器、DDR控制器、网络接口控制器、PCIe控制器以及SRAM控制器;
控制内核:由通用CPU内核实现网络处理器的寄存器、存储器以及查找表的访问;
网络接口控制器用于连接外部的网络终端接口;
PCIe控制器用于连接外部的CPU;
SRAM控制器外接片外的SRAM存储器,用于存放查找表数据。
微引擎内核处理数据报文中的信息时,采用外设命令调用如Hash加速器或DDR控制器处理和读取数据;
在微引擎内核执行完外设命令之后执行线程切换指令,在执行此线程外设命令的时间段内,对应着其他数据包的线程会被唤醒,执行相应的指令;
具体地,所述微引擎内核:
当网络接口接收到数据包以后,数据包的信息会提取到微引擎内核进行处理,通过线程切换指令实现多个线程的切换。
具体地,所述微引擎内核中没有硬件中断机制,多线程切换为非抢占式,通过微码切换指令控制线程间的切换,切换时采用Round-Robin轮转调度算法对就绪的线程按序号进行调度。
具体地,不同线程对应的程序指针不同,即指向指令存储器的执行位置不同;
同一微引擎中多个线程的指令存储器是共享的,每一个微引擎内部只需要提供一块指令存储空间。
具体地,每个线程配备一套专门的硬件来存放切换状态,该套硬件包括:
信号事件寄存器、程序指针寄存器、控制和状态寄存器;
遇到线程切换指令时,信号事件寄存器和程序指针寄存器记录进入睡眠的线程的当前状态,同时控制和状态寄存器根据实时的事件状态维护线程切换状态机,线程仲裁器从就绪状态的线程中仲裁出激活状态线程,并把该线程的程序指针寄存器值作为微引擎内核的程序指针PC,待切换线程指令之后立即执行指令存储器的指令,实现流水线指令无缝的衔接,不因线程切换而造成微引擎指令的中止。
具体地,所述信号事件寄存器包括每个线程*_CTX_SIG_EVENTS寄存器和*_CTX_WAKEUP_EVENTS寄存器,记录线程切换所需要的信号量;
程序指针寄存器记录每个线程所对应的程序指针,线程激活时,程序指针用于控制微引擎内核指令执行的内存地址;
控制和状态寄存器用于进行线程状态机的切换和激活线程的维护。
具体地,当前线程执行线程切换指令后,交出执行控制权,进入睡眠状态,同时将本线程需要等待的信号量标记在CTX_WAKEUP_EVENTS寄存器中,等待外设指令执行完毕;
外设执行指令完成后,将标志完成的信号量记录在微引擎中的CTX_SIG_EVENTS寄存器,根据比对,如果睡眠线程所等待的信号量完全匹配,那么该线程又可以重新进入就绪状态,等待下一次的仲裁,可以认为此时线程被唤醒。
具体地,每个线程都处于下述4个状态中的一个:
未激活状态:该状态下的线程不执行任何操作;
运行状态:该状态下的线程控制微引擎内核的执行权,根据程序指针读取指令来执行,线程执行线程切换指令就会进入睡眠状态,其他就绪线程才会获得执行权,激活线程状态寄存器ACTIVE_CTX_STATUS记录当前处于运行状态的线程,任何时刻只有一个线程运行;
就绪状态:该状态下的线程准备去运行,就绪线程状态寄存器INDIRECT_CTX_STATUS记录就绪线程的情况,当运行线程进入睡眠状态,线程仲裁器采用轮转算法从就绪线程中选择一个去运行;
睡眠状态:当线程执行了线程切换指令后会进入睡眠状态,当睡眠线程唤醒事件寄存器INDIRECT_CTX_SIG_EVENTS中指明的外设事件信号量发生时,通过与记录外设返回于各自线程的信号量位图的寄存器INDIRECT_CTX_WAKEUP_EVENTS比较匹配之后线程即可进入就绪状态。
下面通过优选例,对本发明进行更为具体地说明。
优选例1:
1)网络处理器的微引擎中,设计专用的硬件线程切换指令来启动线程切换,有效地隐藏微引擎外设指令访问协处理器或者外部存储器时等待返回结果花费的时间,合理利用微引擎的空闲时间,从而提高微引擎的执行效率。
2)微引擎中线程的个数采用参数化设计,可以根据不同处理规模的网络处理器进行线程的扩展和裁剪。
3)微引擎线程切换指令采用了硬件信号量传递的机制,满足微引擎与协处理器或外设之间的通信,从而有效实现硬件多线程的唤醒和切换。
4)微引擎中的多线程使用同一个微引擎指令存储器,只是不同线程切换的程序指针不同,有效节省指令存储空间。
5)微引擎内部线程切换状态机与微引擎中的线程切换指令有机配合,实现硬件多线程的睡眠、激活、运行等状态。
6)微引擎中的线程切换寄存器对线程切换的信号量和线程数据进行保存和装载,与线程切换指令配合实现硬件多线程。
该硬件多线程机制的具体实现机制如下:
网络处理器的硬件系统包括控制内核、微引擎内核、Hash加速器、DDR控制器、网络接口控制器等,见附图1。
当微引擎内核处理数据报文中的信息时,会调用协处理模块(如Hash加速器)或者外部存储器模块(如DDR控制器)处理和读取数据,这样的操作会采用外设命令进行实现,由于协处理模块或者外部存储器模块访问的时间长,通常会在微引擎执行完外设命令之后紧接着执行线程切换指令,在执行此线程外设命令的时间段内,对应着其他数据包的线程会被唤醒,执行相应的指令,从而提高微引擎的机器执行效率。以4线程为例,附图2展示了线程访问协处理器或外部存储器的时间被隐藏,线程有效地无缝切换,实现了微引擎指令的高效执行。
对于具体的微引擎来说,当网络接口接收到数据包以后,数据包的信息会提取到微引擎内核进行处理,通过线程切换指令Context_arb可以实现多个线程的切换。通常,在线程切换发生前要对微引擎的流水线进行清除,本方案中微引擎内核为六级单发射的流水结构,从第二级译码级发现切换指令到切换完成需要4个时钟周期。
微引擎内核中没有硬件中断机制,多线程切换是非抢占式的,由微码切换指令控制线程间的切换,切换时采用Round-Robin轮转调度算法对就绪的线程按序号进行调度。激活的线程可以一直占用内核运行微码程序,直到主动放弃控制权时下一个就绪线程才能运行。微引擎中线程切换所需要的硬件模块如附图3所示。信号事件寄存器包括每个线程*_CTX_SIG_EVENTS和*_CTX_WAKEUP_EVENTS寄存器,记录线程切换所需要的信号量;程序指针寄存器记录每个线程所对应的程序指针(PC),线程激活时,程序指针用于控制微引擎内核指令执行的内存地址;控制和状态寄存器包括CTX_ENABLES、CTX_ARB_CONTROL、*_CTX_STATUS,用于进行线程状态机的切换和激活线程的维护。
不同线程对应的程序指针不同,也就是指向指令存储器的执行位置不同,但是同一微引擎中多个线程的指令存储器是共享的,每一个微引擎内部只需要提供一块指令存储空间,从而节约了微引擎的硬件资源。
为了提高线程切换效率,本方案中每个线程配备一套专门的硬件来存放切换状态,该套硬件包括信号事件寄存器、程序指针寄存器、控制和状态寄存器。遇到线程切换指令时,信号事件寄存器和程序指针寄存器记录进入睡眠的线程的当前状态,同时,控制和状态寄存器根据实时的事件状态维护线程切换状态机,线程仲裁器从就绪状态的线程中仲裁出激活状态线程,并把该线程的程序指针寄存器值作为微引擎内核的程序指针PC,待切换线程指令之后立即执行指令存储器的指令,实现流水线指令无缝的衔接,不会因为线程切换而造成微引擎指令的中止。寄存器的列表如附图4所示。由于每个线程拥有独立的硬件资源,那么切换时无需增加额外时间保存当前线程的参数和状态,仲裁子模块会预先选定出下一个就绪的线程,线程切换时只需将微引擎指令的指针指向相应线程的程序指针寄存器即可,实现零开销切换。设计中对线程的个数采用参数化,也就是针对每个线程都有寄存器可以实现灵活的扩展和缩减。
具体地,当前线程执行线程切换指令后,会交出执行控制权,进入睡眠状态,同时将本线程需要等待的信号量标记在CTX_WAKEUP_EVENTS寄存器中,以期外设指令执行完毕。外设执行指令完成后,会将标志完成的信号量记录在微引擎中的CTX_SIG_EVENTS寄存器,根据比对,如果睡眠线程所等待的信号量完全匹配,那么该线程又可以重新进入就绪状态,等待下一次的仲裁,可以认为此时线程被唤醒。
微引擎内部除了流水线硬件之外,微引擎线程切换的硬件状态机维护着不同线程的工作状态,为微引擎的指令执行提供有力的保障。线程状态切换过程如附图5所示。每个线程都将处于下述4个状态中的一个,这些状态包括:
未激活状态:该状态下的线程不执行任何操作。如果不需要使用所有线程时可以通过线程使能寄存器CTX_ENABLES进行配置,将不用的线程关闭。
运行状态:该状态下的线程控制微引擎内核的执行权,根据程序指针读取指令来执行,线程执行线程切换指令Context_arb就会进入睡眠状态,其他就绪线程才会获得执行权。激活线程状态寄存器ACTIVE_CTX_STATUS记录当前处于运行状态的线程,任何时刻只有一个线程运行。
就绪状态:该状态下的线程准备去运行,就绪线程状态寄存器INDIRECT_CTX_STATU记录就绪线程的情况,当运行线程进入睡眠状态,线程仲裁器采用轮转算法从就绪线程中选择一个去运行。
睡眠状态:当线程执行了线程切换指令Context_arb后会进入睡眠状态。当睡眠线程唤醒事件寄存器CTX_SIG_EVENTS中指明的外设事件信号量发生时,通过与CTX_WAKEUP_EVENTS比较匹配之后线程即可进入就绪状态。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (8)
1.一种采用硬件多线程机制的网络处理器,其特征在于,包括:
控制内核、微引擎内核、Hash加速器、DDR控制器、网络接口控制器、PCIe控制器以及SRAM控制器;
控制内核:由通用CPU内核实现网络处理器的寄存器、存储器以及查找表的访问;
网络接口控制器用于连接外部的网络终端接口;
PCIe控制器用于连接外部的CPU;
SRAM控制器外接片外的SRAM存储器,用于存放查找表数据;
微引擎内核处理数据报文中的信息时,采用外设命令调用如Hash加速器或DDR控制器处理和读取数据;
在微引擎内核执行完外设命令之后执行线程切换指令,在执行此线程外设命令的时间段内,对应着其他数据包的线程会被唤醒,执行相应的指令。
2.根据权利要求1所述的采用硬件多线程机制的网络处理器,其特征在于,所述微引擎内核:
当网络接口接收到数据包以后,数据包的信息会提取到微引擎内核进行处理,通过线程切换指令实现多个线程的切换。
3.根据权利要求2所述的采用硬件多线程机制的网络处理器,其特征在于,所述微引擎内核中没有硬件中断机制,多线程切换为非抢占式,通过微码切换指令控制线程间的切换,切换时采用Round-Robin轮转调度算法对就绪的线程按序号进行调度。
4.根据权利要求3所述的采用硬件多线程机制的网络处理器,其特征在于,不同线程对应的程序指针不同,即指向指令存储器的执行地址不同;
同一微引擎中多个线程的指令存储器是共享的,每一个微引擎内部只需要提供一块指令存储空间。
5.根据权利要求4所述的采用硬件多线程机制的网络处理器,其特征在于,每个线程配备一套专门的硬件来存放切换状态,该套硬件包括:
信号事件寄存器、程序指针寄存器、控制和状态寄存器;
遇到线程切换指令时,信号事件寄存器和程序指针寄存器记录进入睡眠的线程的当前状态,同时控制和状态寄存器根据实时的事件状态维护线程切换状态机,线程仲裁器从就绪状态的线程中仲裁出激活状态线程,并把该线程的程序指针寄存器值作为微引擎内核的程序指针,待切换线程指令之后立即执行指令存储器的指令,实现流水线指令无缝的衔接,不因线程切换而造成微引擎指令的中止。
6.根据权利要求5所述的采用硬件多线程机制的网络处理器,其特征在于,所述信号事件寄存器包括每个线程*_CTX_SIG_EVENTS寄存器和*_CTX_WAKEUP_EVENTS寄存器,记录线程切换所需要的信号量;
程序指针寄存器记录每个线程所对应的程序指针,线程激活时,程序指针用于控制微引擎内核指令执行的内存地址;
控制和状态寄存器用于进行线程状态机的切换和激活线程的维护。
7.根据权利要求6所述的采用硬件多线程机制的网络处理器,其特征在于,当前线程执行线程切换指令后,交出执行控制权,进入睡眠状态,同时将本线程需要等待的信号量标记在CTX_WAKEUP_EVENTS寄存器中,等待外设指令执行完毕;
外设执行指令完成后,将标志完成的信号量记录在微引擎中的CTX_SIG_EVENTS寄存器,根据比对,如果睡眠线程所等待的信号量完全匹配,那么该线程又可以重新进入就绪状态,等待下一次的仲裁,可以认为此时线程被唤醒。
8.根据权利要求4所述的采用硬件多线程机制的网络处理器,其特征在于,每个线程都处于下述4个状态中的一个:
未激活状态:该状态下的线程不执行任何操作;
运行状态:该状态下的线程控制微引擎内核的执行权,根据程序指针读取指令来执行,线程执行线程切换指令就会进入睡眠状态,其他就绪线程才会获得执行权,激活线程状态寄存器ACTIVE_CTX_STATUS记录当前处于运行状态的线程,任何时刻只有一个线程运行;
就绪状态:该状态下的线程准备去运行,就绪线程状态寄存器INDIRECT_CTX_STATUS记录就绪线程的情况,当运行线程进入睡眠状态,线程仲裁器采用轮转算法从就绪线程中选择一个去运行;
睡眠状态:当线程执行了线程切换指令后会进入睡眠状态,当睡眠线程唤醒事件寄存器INDIRECT_CTX_SIG_EVENTS中指明的外设事件信号量发生时,通过与记录外设返回于各自线程的信号量位图的寄存器INDIRECT_CTX_WAKEUP_EVENTS比较匹配之后线程即可进入就绪状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214339.7A CN111459630B (zh) | 2020-03-24 | 2020-03-24 | 采用硬件多线程机制的网络处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010214339.7A CN111459630B (zh) | 2020-03-24 | 2020-03-24 | 采用硬件多线程机制的网络处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459630A true CN111459630A (zh) | 2020-07-28 |
CN111459630B CN111459630B (zh) | 2023-12-08 |
Family
ID=71676267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010214339.7A Active CN111459630B (zh) | 2020-03-24 | 2020-03-24 | 采用硬件多线程机制的网络处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459630B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001016702A1 (en) * | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
CN1643499A (zh) * | 1999-12-28 | 2005-07-20 | 英特尔公司 | 在多线程网络处理器中的线程信令 |
CN101221493A (zh) * | 1999-08-31 | 2008-07-16 | 英特尔公司 | 并行处理器中的多线程执行 |
CN101309184A (zh) * | 2008-05-28 | 2008-11-19 | 华为技术有限公司 | 检测微引擎故障的方法及装置 |
CN101763285A (zh) * | 2010-01-15 | 2010-06-30 | 西安电子科技大学 | 零开销切换多线程处理器及其线程切换方法 |
CN104301228A (zh) * | 2014-09-12 | 2015-01-21 | 中国电子科技集团公司第三十二研究所 | 网络处理器中查找模块的实现方法及系统 |
CN108762810A (zh) * | 2017-12-27 | 2018-11-06 | 北京时代民芯科技有限公司 | 一种基于并行微引擎的网络报文头处理器 |
-
2020
- 2020-03-24 CN CN202010214339.7A patent/CN111459630B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221493A (zh) * | 1999-08-31 | 2008-07-16 | 英特尔公司 | 并行处理器中的多线程执行 |
WO2001016702A1 (en) * | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
CN1643499A (zh) * | 1999-12-28 | 2005-07-20 | 英特尔公司 | 在多线程网络处理器中的线程信令 |
CN101309184A (zh) * | 2008-05-28 | 2008-11-19 | 华为技术有限公司 | 检测微引擎故障的方法及装置 |
CN101763285A (zh) * | 2010-01-15 | 2010-06-30 | 西安电子科技大学 | 零开销切换多线程处理器及其线程切换方法 |
CN104301228A (zh) * | 2014-09-12 | 2015-01-21 | 中国电子科技集团公司第三十二研究所 | 网络处理器中查找模块的实现方法及系统 |
CN108762810A (zh) * | 2017-12-27 | 2018-11-06 | 北京时代民芯科技有限公司 | 一种基于并行微引擎的网络报文头处理器 |
Non-Patent Citations (2)
Title |
---|
INTEL: "《Intel IXP2400 Network Processor》", pages: 16 - 17 * |
吴闻,李雪莹,许榕生,刘秉瀚: "IXP2400网络处理器及其微引擎中多线程实现的研究", no. 09, pages 26 - 28 * |
Also Published As
Publication number | Publication date |
---|---|
CN111459630B (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2308754C2 (ru) | Способ и устройство для приостановки исполнения потока до момента осуществления определенного доступа к памяти | |
US9753729B2 (en) | System for selecting a task to be executed according to an output from a task control circuit | |
CN101689157B (zh) | 定时端口 | |
US8850236B2 (en) | Power gating of cores by an SoC | |
US6587937B1 (en) | Multiple virtual machine system with efficient cache memory design | |
US9047120B2 (en) | Virtual queue processing circuit and task processor | |
KR101629989B1 (ko) | 시스템 태스크를 실행하는 복수의 프로세싱 코어를 포함하는 정보 프로세싱 시스템의 결정적 실행 및 동기화 방법 | |
US8776079B2 (en) | Task processor | |
CN101763285B (zh) | 零开销切换多线程处理器及其线程切换方法 | |
US6944850B2 (en) | Hop method for stepping parallel hardware threads | |
JP2007520769A (ja) | モニタメモリ待機を用いたキューされたロック | |
US20140129784A1 (en) | Methods and systems for polling memory outside a processor thread | |
JP2000029737A (ja) | デバッグ機能のためのリアルタイム外部命令挿入を有するプロセッサ | |
US7941650B2 (en) | Microprocessor based on event-processing instruction set and event-processing method using the same | |
US20100122064A1 (en) | Method for increasing configuration runtime of time-sliced configurations | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
JP2001202155A (ja) | 低消費電力処理装置 | |
US9785538B2 (en) | Arbitrary instruction execution from context memory | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
JPH11296388A (ja) | プロセッサでマルチタスキングを管理するコンテキスト・コントロ―ラ | |
CN111459630B (zh) | 采用硬件多线程机制的网络处理器 | |
US6708259B1 (en) | Programmable wake up of memory transfer controllers in a memory transfer engine | |
KR100978147B1 (ko) | 중앙형 인터럽트 콘트롤러를 위한 장치, 방법 및 시스템 | |
KR100728899B1 (ko) | 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 | |
JP4738891B2 (ja) | データ処理装置およびそのポーリング・ループ管理方法 |
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 |