CN101763285A - 零开销切换多线程处理器及其线程切换方法 - Google Patents
零开销切换多线程处理器及其线程切换方法 Download PDFInfo
- Publication number
- CN101763285A CN101763285A CN 201010013723 CN201010013723A CN101763285A CN 101763285 A CN101763285 A CN 101763285A CN 201010013723 CN201010013723 CN 201010013723 CN 201010013723 A CN201010013723 A CN 201010013723A CN 101763285 A CN101763285 A CN 101763285A
- Authority
- CN
- China
- Prior art keywords
- thread
- register
- processor
- arbitration
- unit
- 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
- Advance Control (AREA)
Abstract
本发明公开了一种零开销线程切换的方法及多线程处理器,该处理器包括:用于完成基本指令运行的五级流水线处理单元,用于从多个处于就绪态的线程中仲裁得到切换线程的线程仲裁单元,用于响应对外部存储单元访问的反馈事件信号的信号监视逻辑单元,用于保存五级流水线处理单元中程序运行及线程切换时数据的寄存器文件单元和用于用户监测和控制处理器的运行状态的本地控制状态单元。五级流水线处理单元发出线程切换请求信号给线程仲裁单元,零开销地线程切换,并等待外部单元的反馈事件信号以唤醒线程,仲裁线程继续运行。本发明具有零开销线程切换和良好的处理器性能/面积比的优点,用于IP数据包高速分组、交换及转发处理。
Description
技术领域
本发明属于微电子技术领域,涉及处理器设计,特别是一种实现零开销线程切换的方法和处理器,可用于各种网络中的IP数据包高速分组、交换及转发。
背景技术
随着计算机网络的用户数目与连接带宽正在迅速的增长,使得对各种网络实体如路由器、交换机和网关等的处理性能要求不断增长。不仅如此,更复杂的协议与服务的应用也对网络处理器提出了可编程与多功能性的需求。特别是网络处理器线速处理性能的不断提高,处理器与存储器性能的差距即“存储器墙”的问题越来越大,已经成为各种计算主要考虑的问题。在过去的10多年中,处理器性能的增长为每18个月翻一倍,而存储器访问延迟平均每12个月仅能提高10%。例如对于Intel IXP2800处理器,当微引擎工作在1.4GHz时钟下时,访问一次存储器需要150个时钟。这种访存延迟会带来指令流水线的停顿,而且在包处理系统中,每个包的处理需要上百次的内存访问,这个问题更加突出。模拟研究显示,单线程处理器花费在等待存储器访问的时间占据执行时间的75%,处理器访问存储器时会一直处于等待状态。而多线程技术则能利用线程并行以隐藏内存访问延迟,是网络处理器用来克服“存储器墙”的一种有效途径。目前硬件多线程主要有三种实现方式:
1)交替多线程方式,每次从不同线程取出一条指令执行,线程交替运行,这种方式能够避免每个线程中指令间的数据与控制冒险,且实现简单,但是降低了单线程的性能。
2)同步多线程方式,是多线程技术与超标量处理器结构的结合,它在每个周期可以从多个线程发布多条指令,进一步提高了处理器的利用率,但由于其结构复杂并且功耗不易降低而影响了其在嵌入式网络处理器的使用。
3)阻塞式多线程方式,能够全速连续地执行一个线程的指令直到线程切换,从而能最大化单线程性能。而且由于嵌入式网络处理器是利用包处理应用中的包间并行性,将包分布在多个线程上进行并行处理,因此阻塞式多线程技术方式能够最大限度的提高单个包的处理能力。
相比之下,阻塞式多线程方式更加适合IP包处理,但其线程切换主要有两种方式:一是中断方式,当某一线程需要进行长时间的访存操作,沉睡本线程,启动线程切换,操作完成后立即恢复该沉睡线程,线程切换可以不断嵌套,但线程切换占用最少一个时钟周期,造成流水线停顿,单次线程切换开销虽不大,但在频繁进行访存操作的包处理应用中,浪费的时钟周期所占比重就会非常严重。而且沉睡线程的突然恢复会打乱当前活动线程的运行,使程序员无法合理地安排和跟踪程序运行。另一种方式是让处理器按照时间片轮转的方式分别处理每个线程的指令,但这要求在程序设计时,需要合理安排好各个线程的指令执行顺序、策略和现场保护,不利于程序编写和移植。
发明内容
本发明的目的在于避免上述已有技术的不足,对已有的阻塞式多线程技术进行改进,提出一种零开销线程切换多线程处理器及其切换方法,以消除线程切换所占开销,使处理器达到更佳的运行性能,同时使线程切换完全被程序员所掌控,简化程序编写条件环境。
为实现上述目的,本发明提供的线程切换多线程处理器包括:
五级流水线处理单元,使用精简指令集,完成基本的指令运行,并在遇到访存操作指令或者显式线程切换指令后,发出线程切换请求信号至线程仲裁单元,同时发出沉睡类型和沉睡线程号至本地控制状态单元;
线程仲裁单元,用于从多个处于就绪态的线程中仲裁得到切换线程,更新线程状态,并对流水线处理单元发出的线程切换请求信号进行仲裁,得到线程号输出至本地控制状态单元;
信号监视逻辑单元,用于响应对外部存储单元访问的反馈事件信号,使用多位的寄存器保存反馈事件信号的事件类型和事件线程号,每个周期处理一个反馈事件信号,输出该反馈事件信号至本地控制状态单元以修改事件寄存器,并以该反馈事件信号的信号所属线程号选择本地控制状态单元中对应的沉睡寄存器和唤醒寄存器,进行对应位相与的原子操作,若不为0,则唤醒对应线程,若为0,则继续沉睡该线程。
寄存器文件单元,用于保存五级流水线处理单元中程序运行及线程切换时的数据,并作为五级流水线处理单元与外部单元通信的接口;
本地控制状态单元,用于用户监测和控制处理器的运行状态,它包括,
活跃线程寄存器,用于记录当前线程号,响应线程仲裁单元输出的切换线程号,以修改活跃线程寄存器值;
多个程序计数器,用以记录线程切换后线程的程序地址值,根据活跃线程寄存器值,选择其中的一个程序计数器,作为五级流水线处理单元中当前程序的取指令地址;
多个沉睡寄存器,用以记录处理器不同线程的访存操作,响应五级流水线处理单元发出的沉睡类型和沉睡线程号,选择其中的一个沉睡寄存器进行读修改写操作;
多个事件寄存器,用于记录外部单元对处理器不同线程的反馈事件信号,响应信号监视逻辑输出的事件类型及事件线程的号,对其中的一个事件寄存器进行读修改写操作;
仲裁寄存器,用于记录当前活动线程切换前线程号及切换后线程号,根据线程仲裁器更新的线程状态,修改仲裁寄存器值;
线程使能寄存器,用于记录当前每个线程的使能值,接受用户修改;
运算结果寄存器,用于记录当前线程中每条指令的运算结果。
所述的每个沉睡寄存器按照线程号与每个事件寄存器对应,进行位原子比较,更新当前的线程状态,该当前线程状态与所述的仲裁寄存器和线程使能寄存器,共同决定线程仲裁单元的仲裁结果。
为实现上述目的,本发明用于实现多线程处理器中零开销线程切换的方法,包括如下步骤:
a)活动线程向处理器外部的SDRAM单元、SRAM单元和MAC单元提出访问请求,处理器将该线程置为休眠态,暂停该线程的执行,并零开销地保护现场的线程状态和线程运行结果,以使下一个线程顺利地接管处理器资源;
b)处理器采用了“准备好就切换”的仲裁切换策略,依照轮训调度算法,按照(i+1)mod N的顺序选择下一个处于就绪态的线程激活,使其转为活动线程,并更新当前活动线程号和当前程序运行的程序地址值,完成线程仲裁;
c)将程序中线程仲裁前一条的指令编译至线程仲裁后一个时钟周期执行,并通过延迟槽保证该指令运行的有效性,达到零开销地完成线程仲裁切换,
d)当处理器外部的SDRAM单元、SRAM单元和MAC单元中任意一个单元接收到活动线程发送的访问请求后,进行读写操作,并在操作完成后反馈事件信号至处理器;
e)处理器时刻地监视反馈事件信号,以确定是否唤醒线程及所唤醒的线程号,并将唤醒的线程置为就绪态,以等待下一次的线程仲裁。
本发明具有以下优点:
1)本发明中处理器采用了阻塞式多线程的运行方式,能够全速连续地执行一个线程的指令,直到访存操作引起线程切换,处理器连续运行,避免了访存等待。
2)本发明中由于使用了程序编译优化技术和延迟槽技术,多线程处理器真正达到了零开销的线程切换,从而一直处于工作运行状态,避免了因线程切换引起的流水线暂停清空现象。
3)本发明中采用多位的标志符寄存器保存当前线程的线程状态,并通过寄存器文件和寄存器相对寻址方式保存当前线程的运行结果,达到零开销地保护现场的线程状态和线程运行结果。
4)本发明中采用了“准备好就切换”的仲裁切换策略,这是一种基于信号机制且线程主动的仲裁切换方式,使硬件多线程对程序员透明,程序员可以在任何希望线程切换的地方进行线程切换,从而达到程序可控。
5)本发明中采用了本地控制状态单元,使程序员可以及时地监测线程运行状态、访问外部单元的反馈事件信号、当前程序运行地址和指令的计算结果。
6)本发明通过FPGA综合及仿真显示,所述零开销线程切换多线程处理器使性能在单线程处理器基础上提高了大约3倍的同时,所用的面积只增加了25%,具有良好的处理器性能/面积比。
附图说明
图1为本发明中的零开销线程切换的多线程处理器整体结构图;
图2为本发明中的五级流水线处理单元结构图;
图3为本发明中的信号监视逻辑单元结构图;
图4为本发明中的寄存器文件单元结构图;
图5为本发明中的零开销线程切换过程图;
图6为本发明切换过程中的线程状态值的迁移流程图;
图7为本发明切换过程中的线程仲裁流程图;
图8为本发明切换过程中的三种状态转换关系图。
具体实现方式
参照图1,本发明零开销线程切换的多线程处理器主要包括五个部分:五级流水线处理单元、线程仲裁单元、信号监视逻辑单元、寄存器文件单元和本地控制状态单元。其中:
所述的五级流水线处理单元,是在标准的五级流水线精简指令集处理器基础上改进得到,其结构如图2所示,它包括取指级P0、译码级P1、读取操作数级P2、执行级P3及写回级P4共五个部分。其运行的指令集包含运算指令、循环指令、移位处理指令,分支跳转指令,本地寄存器访问指令,访存指令和显式线程切换指令。在本发明中五级流水线处理单元去掉了标准五级流水线中的存储器访问级,因为访存操作是通过基于信号机制的线程切换完成的,不再需要存储器访问级从高速缓存中读写数据,而将译码级与读取操作数级分开,可以最大限度地减小关键路径长度,提高处理器的工作频率。访存指令运行在译码级P1之后,即可发出线程切换请求101至所述线程仲裁器,下一周期,所述五级流水线处理单元就会收到仲裁器的请求回应102,并获得仲裁线程号,从而激活新的线程。紧跟在访存指令之后的位置称为“延迟槽”,延迟槽中的指令称为延迟指令,延迟指令无论如何都会由处理器取出执行,在线程切换请求到请求回应之间会有一个时钟周期的延迟,通过编译器的优化编译手段,使得线程切换前一条指令编译至延迟槽中,从而消除了所述的一个时钟周期的延迟,实现了零开销的线程切换。
所述的线程仲裁单元,使用轮询调度算法,从多个处于就绪态的线程中,仲裁得到一个切换线程。线程仲裁单元中使用一个m位的线程号标识符,用来在数据通道流水线的取指级对不同的线程进行标记,每个线程对应到唯一的线程号标识符,m位的线程号标识符可以标记2m个线程。n位的线程状态标识符寄存器则保存了n个线程的当前运行状态,用以区分就绪态,或者非就绪态,例如就绪态线程对应的线程状态标识符寄存器位值为0,执行态和休眠态对应的线程状态标识符寄存器位值为1。每个线程状态与所述线程状态标识符寄存器的唯一一位相关联,n位的线程状态标识符寄存器可保存n个线程的状态,因此本发明中必须满足2m=n。仲裁完成后线程仲裁单元会自动更新线程状态,对所述标识符寄存器执行读修改写的原子操作。线程仲裁单元输出的仲裁线程号,用以控制从本地控制状态单元中多个程序计数器PC0、PC1、…、PCn中,选择一个程序寄存器的值用于取指令的地址。
所述的信号监视逻辑单元,对外部单元反馈事件信号及时做出反应,并更新线程状态和本地控制状态单元中的对应事件寄存器对应位。信号监视逻辑单元每个周期仅处理一个反馈事件信号,但事件信号只能持续一个时钟周期,所以监视逻辑必须使用多位的信号寄存器保存反馈事件信号的事件类型及事件所属线程号,每个反馈事件信号对应于寄存器中1位的所述反馈信号类型和2位的所述反馈信号所属线程号,共3位。如图3所示,信号监视逻辑单元按照预设的事件处理优先级顺序,从信号寄存器300中选出当前需要处理的事件信号,以其中2位所属线程号作为个n个事件寄存器与n个唤醒寄存器的多路选择控制端,选出对应线程的事件寄存器和唤醒寄存器,以其中1位事件类型作为所述事件寄存器的位选择,执行读修改写的原子操作。再使用更新后的事件寄存器和唤醒寄存器进行相与逻辑,如果值不为0表示需要唤醒对应线程,反之继续休眠。每处理完一个事件信号,将该事件对应的3位寄存器值清零。
所述寄存器文件,用于保存五级流水线处理单元中程序运行及线程切换时的数据,并作为五级流水线处理单元与外部单元通信的接口。现以4线程为例,如图4所示,所述寄存器文件中共支持128个32比特的通用寄存器,分为A块和B块两部分,分别称之为GPRA和GPRB。每块都支持逻辑运算单元和桶形移位器的读写操作。所述寄存器文件还支持128个32比特的传输寄存器,用于所述处理器与外界通信,收发数据。传输寄存器分为32个SRAM读传输寄存器SRAM_RD、32个SRAM写传输寄存器SRAM_WR、32个SDRAM读传输寄存器SDRAM_RD和32个SDRAM写传输寄存器SDRAM_WR,分别对应与SRAM和SDRAM读写总线相连。每个通用寄存器和传输寄存器支持一个读端口和一个写端口,这种双端口的结构允许五级流水线处理单元同时执行读写操作,在一个时钟周期内多条指令同时操作。线程采用相对寻址方式,在逻辑上将128个通用寄存器和128个传输寄存器平均分为4组,每组16个GPRA、16个GPRB、16个SDRAM传输寄存器和16个SRAM传输寄存器。每一个线程使用其中的一组寄存器,可以在当前活动线程号的控制下针对当前运行的线程进行对应寄存器组的访问,再利用指令中的地址信息在指定寄存器组中确定寄存器的具体位置。相对寻址方式的优点是每个线程都拥有自己独立的数据区,在线程切换时无需保存寄存器数据,从而消除了线程切换引起的额外开销。同时还可以使用绝对寻址方式,此时处理器的四个线程共享寄存器文件,可用于线程间数据通信。
所述的本地控制状态单元,用于用户监测和控制处理器的运行状态,包括:多个程序计数器用以记录线程切换后线程的程序地址值,多个唤醒寄存器记录处理器访存操作,多个事件寄存器记录反馈事件信号,活跃线程寄存器记录当前线程号,仲裁寄存器记录当前活动线程前一个线程号及后一个线程号等,线程使能寄存器记录每个线程的使能状态、运算结果寄存器用于调试时读出指令执行运算的结果。本地控制状态寄存器散落于处理器各个单元模块中,实时地更新并控制处理器的运行,并接收用户的读写控制。
参照图5,本发明提供的零开销线程切换方法,包括如下过程:
过程1,活动线程向外部单元发出访存请求,进入休眠态。
处理器内的每个线程拥有三种运行状态:休眠态、就绪态和执行态。每个线程的三种状态的转换关系如图6所示。处于执行态的线程需要进行访存操作,发生线程切换后,进入到休眠态,直到外部反馈事件信号将该线程从休眠态唤醒,进入到就绪态。
处于执行态的活动线程向处理器外部的SDRAM单元、SRAM单元和MAC单元提出访问请求,由于访存等待时间较长,处理器会将该线程置为休眠态,暂停该线程的执行。处理器采用多位的标志符寄存器保存当前线程的线程状态,并通过寄存器文件和寄存器相对寻址方式,保存当前线程的运行结果,达到零开销地保护现场的线程状态和线程运行结果,以使下一个线程顺利地接管处理器资源。
过程2,线程仲裁单元进行仲裁,得到仲裁线程。
处理器采用了“准备好就切换”的仲裁策略,当引起线程切换的访存事件完成后并不着急线程切换,而是等待下一个访存事件发生而引起新的线程切换。线程仲裁单元依照轮训调度算法,按照(i+1)mod N的顺序选择下一个处于就绪态的线程激活,使其转为活动线程,并更新当前活动线程号和当前程序运行的程序地址值,完成线程仲裁,若无就绪态线程,继续等待第一个满足条件进入到继续态的线程。
所述的“准备好就切换”的仲裁策略,是指处理器依赖于线程状态标识符寄存器值、本地控制状态寄存器中的仲裁寄存器中记录的下一个线程号及线程使能寄存器值,参照图7,它包括如下步骤:
2a)当所述仲裁寄存器中记录的下一个线程号所对应的线程处于就绪态,且线程使能寄存器对应位为1,则跳往该线程,并更新仲裁寄存器,否则进入步骤2);
2b)查看当前线程状态标识符寄存器值,通过仲裁逻辑得到仲裁线程号,若其对应线程处于就绪态,且线程使能寄存器对应位为1,则跳往该线程,并更新仲裁寄存器,否则进入步骤2c);
2c)若无合适线程切换,则处理器进入等待状态,当线程状态再次改变而有合适线程切换时,离开等待状态,进入步骤2a)。
步骤2b)中所述的仲裁逻辑,依照轮询调度算法,包括如下四种情况:
第一种情况,如果N位的线程状态标识符寄存器中只有一位为1,则该位为执行线程位,标识符寄存器中自执行线程位向左循环寻找第一个为0的位,对应的线程即为仲裁线程;
第二种情况,如果N位的线程状态标识符寄存器中有M位为1,2≤M≤N-2,若该M位为连续位,则以M位中左边一位为执行线程位,否则以当前的线程号对应的标识符寄存器位作为执行线程位。标识符寄存器中自执行线程位向左循环寻找第一个为0的位,对应的线程即为仲裁线程。
第三种情况,如果N位的线程状态标识符寄存器中有N-1位为1,则剩余的一个为0位对应的线程即为仲裁线程。
第四种情况,如果N位的线程状态标识符寄存器中有N位为1,则说明没有处于就绪态的线程可以被仲裁,线程仲裁失败,处理器进入等待状态。
步骤2b)中所述仲裁寄存器更新方式包括:将高两位记录当前线程的前一个线程,更新为线程切换前的线程号;将低两位记录当前线程的后一个线程,更新为仲裁线程所轮询的下一个线程。例如当前线程为0线程,仲裁线程为1线程,则轮询的下一个线程为2线程,在线程切换时,需要更新所述仲裁寄存器值为4’b0010。
过程3,通过程序优化编译和延迟槽方式,消除线程切换开销。
紧跟在访存指令之后的位置称为“延迟槽”,延迟槽中的指令称为延迟指令,延迟指令无论如何都会由处理器取出执行,由于线程切换请求位于流水线的译码P1,会导致流水线取指级P0的指令丢弃和流水线停顿一个时钟周期,因此使用软件编译优化,将程序中线程仲裁前一条的指令编译至线程仲裁后一个时钟周期,放至延迟槽中,保证该指令运行的有效性,从而消除了所述的一个时钟周期的延迟,实现了零开销的线程切换。
过程4,外部单元接收访问请求,读写操作完成后反馈事件信号至处理器。
当处理器外部的SDRAM单元、SRAM单元和MAC单元中任意一个单元接收到活动线程发送的访问请求后,进行读写操作,读取传输寄存器中的数据或者写数据至传输寄存器,并在操作完成后反馈事件信号至处理器,反馈事件信号包括事件类型和事件所属线程号。
过程5,处理器监视反馈事件信号,确定是否唤醒线程和改变线程状态。
处理器中的信号监视逻辑单元时刻地监视外部单元的反馈事件信号,以确定是否唤醒线程及所唤醒的线程号,并将唤醒的线程置为就绪态,以等待下一次的线程仲裁,我们称这种机制为信号机制。所述反馈事件信号并不立即引起线程切换,却有效地改变了当前的线程状态,从而改变了下次仲裁结果。线程状态值的迁移过程如图8所示,当处理器处于复位状态时,流水线尚未使能,线程状态为4’b0000;当处理器处于运行状态时,执行线程的线程状态位置1,其余位保持不变;当处理器检测到外部单元的反馈事件信号后,按照反馈信号所属线程号唤醒对应线程,并将对应的线程状态位清0;当处理器线程发生仲裁切换时,如果为自愿主动式切换,则将该线程的线程状态位清0,否则将该位保持为1;如果线程仲裁成功,将跳转后的线程对应的状态位置1,否则线程状态保持不变。
Claims (10)
1.一种零开销线程切换多线程处理器,包括:
五级流水线处理单元,使用精简指令集,完成基本的指令运行,并在遇到访存操作指令或者显式线程切换指令后,发出线程切换请求信号至线程仲裁单元,同时发出沉睡类型和沉睡线程号至本地控制状态单元;
线程仲裁单元,用于从多个处于就绪态的线程中,仲裁得到切换线程,更新线程状态,并对流水线处理单元发出的线程切换请求信号进行仲裁,得到线程号输出至本地控制状态单元;
信号监视逻辑单元,用于响应对外部存储单元访问的反馈事件信号,使用多位的寄存器保存反馈事件信号的事件类型和事件所属线程号,每个周期处理一个事件信号,输出该反馈事件信号至本地控制状态单元以修改事件寄存器,并以该反馈事件信号的事件线程号选择本地控制状态单元中对应的沉睡寄存器和唤醒寄存器,进行对应位相与的原子操作,若不为0,则唤醒对应线程,若为0,则继续沉睡该线程。
寄存器文件单元,用于保存五级流水线处理单元中程序运行及线程切换时的数据,并作为五级流水线处理单元与外部单元通信的接口;
本地控制状态单元,用于用户监测和控制处理器的运行状态,它包括,
活跃线程寄存器,用于记录当前线程号,响应线程仲裁单元输出的切换线程号,以修改活跃线程寄存器值;
多个程序计数器,用以记录线程切换后线程的程序地址值,根据活跃线程寄存器值,选择其中的一个程序计数器,作为五级流水线处理单元中当前程序的取指令地址;
多个沉睡寄存器,用以记录处理器不同线程的访存操作,响应五级流水线处理单元发出的沉睡类型和沉睡线程号,选择其中的一个沉睡寄存器进行读修改写操作;
多个事件寄存器,用于记录外部单元对处理器不同线程的反馈事件信号,响应信号监视逻辑输出的事件类型及事件所属线程号,对其中的一个事件寄存器进行读修改写操作;
仲裁寄存器,用于记录当前活动线程切换前线程号及切换后线程号,根据线程仲裁器更新的线程状态,修改仲裁寄存器值;
线程使能寄存器,用于记录当前每个线程的使能值,接受用户修改;
运算结果寄存器,用于记录当前线程中每条指令的运算结果。
所述的每个沉睡寄存器按照线程号与每个事件寄存器对应,进行位原子比较,更新当前的线程状态,该当前线程状态与所述的仲裁寄存器和线程使能寄存器,共同决定线程仲裁单元的仲裁结果。
2.如权利1所述的多线程处理器,其特征在于,所述的基本的指令运行,依次包括:取指、译码、取操作数、执行和写回5级操作;
所述的精简指令集,包含运算指令、循环指令、移位处理指令,分支跳转指令,本地寄存器访问指令,访存指令和显式线程切换指令。
3.如权利1所述的多线程处理器,其特征在于,所述的线程状态,使用N位的线程状态标识符寄存器表示N个线程的状态,每个线程对应于所述寄存器的每一位,位值为1表示对应线程处于执行态或者沉睡态,不能切换,位值为0表示对应线程处于就绪态,能够切换,
所述的执行态,是指处理器线程正在运行指令的状态,
所述的沉睡态,是指处理器线程因为执行访存指令和显式线程切换指令而处于的等待完成状态,
所述的就绪态,是指处理器线程完成了访存指令和显式线程切换指令操作而处于等待仲裁状态。
4.如权利1所述的多线程处理器,其特征在于,所述寄存器文件单元,包括第一通用寄存器GPRA,第二通用寄存器GPRB,SDRAM读、写传输寄存器和SRAM读、写传输寄存器,这些读、写传输寄存器用以与外部单元通信。
5.如权利1所述的多线程处理器,其特征在于,所述的寄存器文件单元,接受绝对寻址和相对寻址方式两种不同方式的访问,该绝对寻址用以线程间的数据通信,相对寻址用以保存当前线程的寄存器数据。
6.一种零开销线程切换方法,包括如下步骤:
a)活动线程向处理器外部的SDRAM单元、SRAM单元和MAC单元提出访问请求,处理器将该线程置为休眠态,暂停该线程的执行,并零开销地保护现场的线程状态和线程运行结果,以使下一个线程顺利地接管处理器资源;
b)处理器采用了“准备好就切换”的仲裁策略,依照轮训调度算法,按照(i+1)mod N的顺序选择下一个处于就绪态的线程激活,使其转为活动线程,并更新当前活动线程号和当前程序运行的程序地址值,完成线程仲裁;
c)将程序中线程仲裁前一条的指令编译至线程仲裁后一个时钟周期执行,并通过延迟槽保证该指令运行的有效性,达到零开销地完成线程仲裁切换;
d)当处理器外部的SDRAM单元、SRAM单元和MAC单元中任意一个单元接收到活动线程发送的访问请求后,进行读写操作,并在操作完成后发送反馈事件信号至处理器;
e)处理器时刻地监视反馈事件信号,以确定是否唤醒线程及所唤醒的线程号,并将唤醒的线程置为就绪态,以等待下一次的线程仲裁。
7.如权利要求7所述的方法,其特征在于,步骤a)所述的零开销地保护现场的线程状态和线程运行结果,是由处理器采用多位的标志符寄存器保存当前线程的线程状态,并通过寄存器文件和寄存器相对寻址方式,保存当前线程的运行结果。
8.如权利要求7所述的方法,其特征在于,步骤b)所述的“准备好就切换”的仲裁策略,包括如下步骤:
1)当所述仲裁寄存器中记录的下一个线程号所对应的线程处于就绪态,且线程使能寄存器对应位为1,则跳往该线程,并更新仲裁寄存器,否则进入步骤2);
2)查看当前线程状态标识符寄存器值,通过仲裁逻辑得到仲裁线程号,若其对应线程处于就绪态,且线程使能寄存器对应位为1,则跳往该线程,并更新仲裁寄存器,否则进入步骤3);
3)若无合适线程切换,则处理器进入等待状态,当线程状态再次改变而有合适线程切换时,离开等待状态,进入步骤1)。
9.如权利要求8所述的方法,其特征在于,步骤2)所述的仲裁逻辑,包括如下四种情况:
第一种情况,如果N位的线程状态标识符寄存器中只有一位为1,则该位为执行线程位,标识符寄存器中自执行线程位向左循环寻找第一个为0的位,对应的线程即为仲裁线程;
第二种情况,如果N位的线程状态标识符寄存器中有M位为1,2≤M≤N-2,若该M位为连续位,则以M位中左边一位为执行线程位,否则以当前的线程号对应的标识符寄存器位作为执行线程位。标识符寄存器中自执行线程位向左循环寻找第一个为0的位,对应的线程即为仲裁线程。
第三种情况,如果N位的线程状态标识符寄存器中有N-1位为1,则剩余的一个为0位对应的线程即为仲裁线程。
第四种情况,如果N位的线程状态标识符寄存器中有N位为1,则说明没有处于就绪态的线程可以被仲裁,线程仲裁失败,处理器进入等待状态。
10.如权利要求8所述的方法,其特征在于,步骤2)所述的更新仲裁寄存器,包括:
将高两位记录当前线程的前一个线程,更新为线程切换前的线程号;
将低两位记录当前线程的后一个线程,更新为仲裁线程所轮询的下一个线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010013723 CN101763285B (zh) | 2010-01-15 | 2010-01-15 | 零开销切换多线程处理器及其线程切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010013723 CN101763285B (zh) | 2010-01-15 | 2010-01-15 | 零开销切换多线程处理器及其线程切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763285A true CN101763285A (zh) | 2010-06-30 |
CN101763285B CN101763285B (zh) | 2013-03-20 |
Family
ID=42494456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010013723 Expired - Fee Related CN101763285B (zh) | 2010-01-15 | 2010-01-15 | 零开销切换多线程处理器及其线程切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763285B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
CN103294623A (zh) * | 2013-03-11 | 2013-09-11 | 浙江大学 | 一种可配置simd系统的多线程调度电路 |
CN104901901A (zh) * | 2014-03-07 | 2015-09-09 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
CN105824605A (zh) * | 2016-04-28 | 2016-08-03 | 王生洪 | 一种可控动态多线程方法及处理器 |
CN106233254A (zh) * | 2014-03-27 | 2016-12-14 | 国际商业机器公司 | 多线程计算机系统中的地址扩展及缩短 |
CN108027769A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 使用寄存器访问指令发起指令块执行 |
CN108255745A (zh) * | 2016-12-29 | 2018-07-06 | 展讯通信(上海)有限公司 | 处理器以及无效指令缓存的方法 |
CN108431831A (zh) * | 2015-12-31 | 2018-08-21 | 微软技术许可有限责任公司 | 循环代码处理器优化 |
CN108475196A (zh) * | 2015-12-02 | 2018-08-31 | 斯瓦姆64有限责任公司 | 数据处理 |
CN109901813A (zh) * | 2019-03-27 | 2019-06-18 | 苏州中晟宏芯信息科技有限公司 | 一种浮点运算装置及方法 |
CN110045989A (zh) * | 2019-03-14 | 2019-07-23 | 西安理工大学 | 一种动态切换式低功耗处理器 |
CN110806900A (zh) * | 2019-04-30 | 2020-02-18 | 海光信息技术有限公司 | 一种访存指令处理方法及处理器 |
CN111459630A (zh) * | 2020-03-24 | 2020-07-28 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
CN112055853A (zh) * | 2018-03-31 | 2020-12-08 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的多个类型的线程标识符 |
CN112463327A (zh) * | 2020-11-25 | 2021-03-09 | 海光信息技术股份有限公司 | 逻辑线程快速切换的方法、装置、cpu芯片及服务器 |
CN112732416A (zh) * | 2021-01-18 | 2021-04-30 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
CN115617740A (zh) * | 2022-10-20 | 2023-01-17 | 长沙方维科技有限公司 | 单发射多线程动态循环并行技术实现的处理器架构 |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293902A (zh) * | 2015-05-28 | 2017-01-04 | 宇龙计算机通信科技(深圳)有限公司 | 一种处理器调度方法及系统 |
CN112631858A (zh) * | 2020-12-18 | 2021-04-09 | 苏州浪潮智能科技有限公司 | 一种线程监控方法、系统、设备以及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0528104A (ja) * | 1991-07-20 | 1993-02-05 | Fuji Xerox Co Ltd | マルチプロセツサシステム |
US5713005A (en) * | 1995-02-10 | 1998-01-27 | Townsend And Townsend And Crew Llp | Method and apparatus for pipelining data in an integrated circuit |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
-
2010
- 2010-01-15 CN CN 201010013723 patent/CN101763285B/zh not_active Expired - Fee Related
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
CN103294623B (zh) * | 2013-03-11 | 2016-04-27 | 浙江大学 | 一种可配置simd系统的多线程调度电路 |
CN103294623A (zh) * | 2013-03-11 | 2013-09-11 | 浙江大学 | 一种可配置simd系统的多线程调度电路 |
WO2015131445A1 (zh) * | 2014-03-07 | 2015-09-11 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法、计算机存储介质 |
CN104901901A (zh) * | 2014-03-07 | 2015-09-09 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
CN104901901B (zh) * | 2014-03-07 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
CN106233254B (zh) * | 2014-03-27 | 2019-04-26 | 国际商业机器公司 | 多线程计算机系统中的地址扩展及缩短 |
CN106233254A (zh) * | 2014-03-27 | 2016-12-14 | 国际商业机器公司 | 多线程计算机系统中的地址扩展及缩短 |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
CN108027769A (zh) * | 2015-09-19 | 2018-05-11 | 微软技术许可有限责任公司 | 使用寄存器访问指令发起指令块执行 |
CN108475196A (zh) * | 2015-12-02 | 2018-08-31 | 斯瓦姆64有限责任公司 | 数据处理 |
CN108431831A (zh) * | 2015-12-31 | 2018-08-21 | 微软技术许可有限责任公司 | 循环代码处理器优化 |
CN105824605A (zh) * | 2016-04-28 | 2016-08-03 | 王生洪 | 一种可控动态多线程方法及处理器 |
CN105824605B (zh) * | 2016-04-28 | 2018-04-13 | 王生洪 | 一种可控动态多线程方法及处理器 |
CN108255745A (zh) * | 2016-12-29 | 2018-07-06 | 展讯通信(上海)有限公司 | 处理器以及无效指令缓存的方法 |
CN108255745B (zh) * | 2016-12-29 | 2020-11-06 | 展讯通信(上海)有限公司 | 处理器以及无效指令缓存的方法 |
CN112055853A (zh) * | 2018-03-31 | 2020-12-08 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的多个类型的线程标识符 |
CN112055853B (zh) * | 2018-03-31 | 2024-04-09 | 美光科技公司 | 用于多线程自调度可重新配置计算架构的电路及系统 |
CN110045989A (zh) * | 2019-03-14 | 2019-07-23 | 西安理工大学 | 一种动态切换式低功耗处理器 |
CN110045989B (zh) * | 2019-03-14 | 2023-11-14 | 合肥雷芯智能科技有限公司 | 一种动态切换式低功耗处理器 |
CN109901813A (zh) * | 2019-03-27 | 2019-06-18 | 苏州中晟宏芯信息科技有限公司 | 一种浮点运算装置及方法 |
CN110806900A (zh) * | 2019-04-30 | 2020-02-18 | 海光信息技术有限公司 | 一种访存指令处理方法及处理器 |
CN110806900B (zh) * | 2019-04-30 | 2021-07-09 | 成都海光微电子技术有限公司 | 一种访存指令处理方法及处理器 |
CN111459630B (zh) * | 2020-03-24 | 2023-12-08 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
CN111459630A (zh) * | 2020-03-24 | 2020-07-28 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
CN112463327B (zh) * | 2020-11-25 | 2023-01-31 | 海光信息技术股份有限公司 | 逻辑线程快速切换的方法、装置、cpu芯片及服务器 |
CN112463327A (zh) * | 2020-11-25 | 2021-03-09 | 海光信息技术股份有限公司 | 逻辑线程快速切换的方法、装置、cpu芯片及服务器 |
CN112732416A (zh) * | 2021-01-18 | 2021-04-30 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
CN112732416B (zh) * | 2021-01-18 | 2024-03-26 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
CN115617740A (zh) * | 2022-10-20 | 2023-01-17 | 长沙方维科技有限公司 | 单发射多线程动态循环并行技术实现的处理器架构 |
CN115617740B (zh) * | 2022-10-20 | 2023-10-27 | 长沙方维科技有限公司 | 单发射多线程动态循环并行技术实现的处理器架构 |
Also Published As
Publication number | Publication date |
---|---|
CN101763285B (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763285B (zh) | 零开销切换多线程处理器及其线程切换方法 | |
US7730340B2 (en) | Method and apparatus for dynamic voltage and frequency scaling | |
CN105867584B (zh) | 用于异构多核心系统的动态核心选择 | |
CN105144082B (zh) | 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择 | |
TWI494850B (zh) | 通透地提供給作業系統之非對稱多核心處理器系統 | |
CN103348323B (zh) | 用于在计算机系统中执行目标程序的方法和系统 | |
EP2207092B1 (en) | Software-based thread remapping for power savings | |
CN101526895B (zh) | 基于指令双发射的高性能低功耗嵌入式处理器 | |
US8756605B2 (en) | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline | |
US20060136919A1 (en) | System and method for controlling thread suspension in a multithreaded processor | |
CN105512088B (zh) | 一种可重构的处理器架构及其重构方法 | |
US20140229669A1 (en) | Memory Architecture For Dynamically Allocated Manycore Processor | |
CN102591722B (zh) | 片上网络多核处理器多线程的资源分配处理方法和系统 | |
CN100592255C (zh) | 32位的多模式微处理器 | |
US9870226B2 (en) | Control of switching between executed mechanisms | |
JP4956891B2 (ja) | 演算処理装置,情報処理装置および演算処理装置の制御方法 | |
CN101369224A (zh) | 超线程微处理器中经线程优先级提供服务质量 | |
EP1760581A1 (en) | Processing operations management systems and methods | |
GB2441897A (en) | Enabling execution stacks based on active instructions | |
US20110231637A1 (en) | Central processing unit and method for workload dependent optimization thereof | |
CN101989191A (zh) | 一种多Ready输入中央处理器的实现方法 | |
KR100728899B1 (ko) | 복수의 레지스터 집합과 하드웨어 작업 관리자를 가진고성능 멀티쓰레드 임베디드 프로세서 | |
CN105302749A (zh) | Gpdsp中面向单指令多线程模式的dma传输方法 | |
EP3929743B1 (en) | Technology for optimizing hybrid processor utilization | |
CN111459630B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130320 Termination date: 20190115 |
|
CF01 | Termination of patent right due to non-payment of annual fee |