CN205721743U - 一种可控动态多线程方法的处理器 - Google Patents
一种可控动态多线程方法的处理器 Download PDFInfo
- Publication number
- CN205721743U CN205721743U CN201620372107.3U CN201620372107U CN205721743U CN 205721743 U CN205721743 U CN 205721743U CN 201620372107 U CN201620372107 U CN 201620372107U CN 205721743 U CN205721743 U CN 205721743U
- Authority
- CN
- China
- Prior art keywords
- instruction
- mark
- processor
- thread
- threading
- 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
Abstract
本实用新型公开了一种可控动态多线程方法的处理器,所述方法是对一个采用流水线结构的处理器,在其指令结构中新增mark,该mark包含二部分信息:mark对应指令所属的线程以及mark对应指令的优先级信息;处理器根据mark控制其对应指令,并根据mark中的线程及优先级信息发射并执行该指令。所述处理器至少包括一个含有mark的指令系统、一个能够识别和跟踪mark的程序执行控制单元(Branch)、一个能够识别mark并进行解码的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元。本实用新型能够动态的调度一个处理器的所有运算硬件资源从而提高处理器的运算能力,且不需要增加很多复杂的硬件。
Description
技术领域
本实用新型涉及处理器领域,尤其涉及一种可控动态多线程方法(Dynamic
Multi-threading) 的处理器。
背景技术
为了提高处理器的运算能力,很多并行处理技术被开发出来,如超标量(Super-scalar),流水线(Pipeline).超长宽指令(VLIW),单指令多执行(SIMD),等等。可是,由于一个软件程序的指令处理是顺序执行的,其执行过程中存在的指令及数据的依赖性(dependencies)造成了处理器经常的处于等待状态因而限制了这些并行处理技术效率的发挥。
为了克服指令执行中的依赖性,一些提高指令发射效率的技术,如乱序码(Out-of-Order),控制程序预测(Branch Prediction)等被开发出来,但是这些技术都有其局限性。它们或者是硬件非常复杂,或者是效率提高有限而不适合嵌入式系统的应用。一个嵌入式系统,尤其是移动设备,如移动通信,车载设备,穿戴式设备等,对处理器性能的要求不仅运算能力要高,更要求功耗要低及实时性要强。
多线程并行处理器技术(Multi-Threading),因为它可以在同一个处理器中并行处理2个或多个完全独立的运算程序,因而可以比较好的解决指令执行过程中的控制及数据依赖性所带来的运行效率限制,其中同步多线程技术(Simultaneous Multi-threading)及令牌驱动多线程技术(Token
Triggered multi-threading,SMT)在一些处理器产品中得到了很好的应用,比如Intel的Hyper-Threading,IBM的POWER5,Sun Microsystems的UltraSPARC T2及MIPS的MT都是采用了SMT技术。Sandbridge的SandblasterDSP核采用的是令牌驱动多线程技术。
SMT技术虽然能解决程序执行过程中的依赖性问题,SMT技术除了需要给每个线程都有自己的一套执行程序所需的寄存器外还要在每级的流水线加上线程跟踪逻辑,增加共享资源的尺寸,如指令Cache,TLBs等。其线程跟踪逻辑不仅要跟踪线程的行程还要检查和判断该线程是否已执行完成。由于会有大量的线程处于执行或半执行状态,因而CPU的Caches及TLB的尺寸必须足够大以避免不必要的线程之间的Thrashing,其硬件的复杂程度随着线程数的增加而大大的增加因而限制了其很难应用于嵌入式处理器及低功耗处理器的设计。
下表是一个典型的SMT多线程程序执行过程:
令牌驱动多线程是一种时分多线程,由于在每个时钟周期内它只能执行同一个线程程序的指令,因而相比SMT它的硬件复杂要简化很多,但是效率也跟着下降。其特点是:
1. 每个时钟周期只有一个线程能发出指令;
2. 所有线程是顺序启动如图1所示,因而简化了线程选择电路;
3. 每个线程都有相同的执行指令的时钟周期,不需要依赖检查和绕行硬件;
4. 运算结果能保证在下次的线程执行之前就已经得到。
下表给出了令牌驱动多线程的程序执行过程:
1 | 时钟周期i:线程T0发指令j和j+1和j+2 |
2 | 时钟周期i+1:线程T0发指令k和k+1 |
3 | 时钟周期i+2:线程T2发指令l |
4 | 时钟周期i+3:线程T3发指令m和m+1和m+2 |
5 | 时钟周期i+4:线程T0指令missing,处理器等待 |
6 | 时钟周期i+5:线程T1发指令K+2 |
7 | 时钟周期i+6:线程T2发指令I+1和I+2 |
8 | 时钟周期i+7:线程T3指令missing,处理器等待 |
但是由于令牌驱动多线程处理器在规定的时钟周期只能执行特定的线程操作,因此如果在这个时钟周期,其指定的线程由于指令或数据的缺失(missing)或因为依赖性而不能发射指令时,该时钟周期就被浪费了。为了克服令牌驱动多线程这个这个缺陷,一个机会多线程技术被开发出来。
机会多线程技术允许一个多线程处理器的一个线程在某一个的时钟周期内如果没有有效指令时不必HOLD这个时钟周期,而是将该时钟周期让给别的有有效指令的线程。即将原来浪费的时钟周期作为一个“机会”让给别的线程使用。
采用该方法对一个具有多线程处理器来说,其线程不再受每个线程周期只能发一次指令的限制,而是可以利用任何“机会”在每个时钟周期都可以发射指令只要该时钟周期原始设定的线程在该时钟周期内没有有效的指令。
1. 机会多线程技术和令牌驱动多线程技术一样,它是一种分时多线程技术,每个时钟周期只能执行一个程序。其可执行的线程数受限于硬件的线程数。
2. 机会多线程需要一个指令预测电路,对于一个采用VLIW结构的处理器,它需要对每一个子指令的依赖性进行预测。因此指令预测电路相当复杂。
3. 机会多线程技术需要一组2维的线程身份(ID)寄存器以用于跟踪线程指令在每级流水线的执行情况以保证结果数据不会被搞混乱。
4. 实际应用中,采用机会多线程的处理器的每个运算单元必需为每个线程增加一组2维的完全独立于其他线程的数据寄存器以防止处于半执行状态的线程之间的数据Thrashing。
5. 为了能在每一个处理器的时钟周期内发射指令,线程所属的指令内存也必须运行在和处理器时钟周期相同的时钟频率以保证线程能及时的读取指令。由此,多线程的一个能降低存储器功耗的特点将不再存在。
以上分析可以看出采用机会多程序技术的处理器的硬件复杂度要比令牌驱动多线程技术增加很多,而且为了使每个线程能在每个时钟周期都能读取指令,其指令内存的时钟频率必须是和处理器的主振频率一样,这样处理器的功耗会明显增加。因而机会多线程技术并不适合应用于低功耗嵌入式处理器设计。
图2是机会多线程的程序执行示意图。
实用新型内容
本实用新型所要解决的技术问题是针对背景技术中所涉及到的缺陷,提供一种可控动态多线程方法的处理器。
本实用新型为解决上述技术问题采用以下技术方案:
一种可控动态多线程方法的处理器,采用流水线结构且具有I-cache,至少包含一个带mark的指令系统、一个能够识别和跟踪mark的程序执行控制单元、一个能够识别mark并进行解码的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元;
所述mark包含二部分信息:mark对应指令所属的线程以及mark对应指令的优先级信息,所述优先级信息用于指明指令的执行顺序及与其前后指令的相关性(dependencies);处理器根据mark控制其对应指令,按该指令的优先级信息和所属的线程发射并执行该指令。
所述mark由软件写入或者编译器在编译过程中自动写入。
作为本实用新型一种可控动态多线程方法的处理器进一步的优化方案,所述处理器为多指令发射处理器,其每条指令都独立带有自己的mark。
作为本实用新型一种可控动态多线程方法的处理器进一步的优化方案,所述处理器为多指令发射处理器,多条指令共用一组mark。
作为本实用新型一种可控动态多线程方法的处理器进一步的优化方案,所述处理器为单指令发射处理器,其每条指令对应一个mark。
所述处理器根据mark控制其对应指令、按该指令的优先级信息和所属的线程发射并执行该指令的具体步骤如下:
步骤1),根据等待被执行指令对应mark中的优先级信息读取指令;
步骤2),指令解码及分配:
处理器的解码电路将步骤1)中所读取的指令解码为mark和各个子指令,处理器的分配逻辑根据各个子指令的功能将其分配给不同的运算单元去执行;
步骤3),指令执行:
对于各个子指令,处理器按照其所属指令mark中的线程信息读取相应的寄存器的数据,并将执行的结果存入相应线程的寄存器;
步骤4),跳转至步骤1)。
根据具体的硬件实现方法,有时步骤1和2会需要多个时钟周期,有时只需要1个时钟周期,步骤3)则需要n-1个时钟周期,n为处理器运算单元的流水线级数。
所述步骤1)的详细步骤如下:
步骤1.1),处理器的指令读取电路检查I-Cache是否有指令被等待执行,即是否存在处于Valid状态的指令;
步骤1.1.1),如果仅存在1个处于Valid状态的指令,则读取该指令;
步骤1.1.2),如果有2个以上的指令处于Valid状态,则根据指令对应的mark检查哪一条指令的优先级高;
步骤1.1.2.1),如果存在优先级高于其他指令的指令,则读取该指令,
步骤1.1.2.2),如果不存在优先级高于其他指令的指令,则判断是否存在前一步执行的指令线程;
步骤1.1.2.2.1),如果存在前一步执行的指令线程,读取和前一步执行的指令线程不同的指令或根据线程的顺序读取指令;
步骤1.1.2.2.1),如果不存在前一步执行的指令线程,根据线程的顺序读取指令。
本实用新型采用以上技术方案与现有技术相比,具有以下技术效果:
1. 不需要复杂的多线程控制电路及复杂的指令有效预测电路就可以高效的调动处理器的硬件资源,有效的判断指令的优先级及相关性;
2. 根据指令的优先级顺序执行指令而不用担心因为某些指令或数据的missing而造成硬件资源的浪费和出现运算结果混乱的现象;
3. 有效的提高处理器的硬件资源的利用率,进而降低功耗。
附图说明
图1是一个四线程的令牌驱动多线程线程流程图;
图2是机会多线程程序执行示意图;
图3是带mark的单指令结构图;
图4是多指令带单个mark指令结构图;
图5是多指令带多mark指令结构图;
图6是一个具有6级流水线的多线程执行流程图;
图7是一个具有软件可控动态多线程功能的处理器框图。
具体实施方式
下面结合附图对本实用新型的技术方案做进一步的详细说明:
本实用新型是在一个采用多级流水线结构的处理器的指令系统中增加一组对应指令的线程身份和其优先级信息的符号(mark)。处理器的指令系统在读取(Fetch)指令的同时获得执行该指令的线程身份以及其优先级的信息的mark。处理器的指令控制运算系统(Branch)根据该mark的信息来安排处理器的硬件资源以及执行顺序。这个 mark将一直跟随着指令执行的每一步以便于跟踪该指令的执行步骤,并根据优先级信息指示该条指令与它前后的指令/数据的依赖性以及优先执行的顺序。
本实用新型的mark的内容可以是在程序员编程时根据应用系统的要求而设定执行该程序指令的线程及执行优先级,也可以是编译器在编译过程中自动设定线程并根据程序的运算功能在判别该指令与其前后指令和数据的相关性来设定其优先级。
采用软件设置程序的执行线程并提供该程序中每条指令的优先级和与其前后执行指令的相关性的信息附着在每一条指令上作为一个识别符(mark)。处理器硬件只需能够识别这些mark的信息就可以实现动态的调动处理器的硬件资源并高效的执行多线程的指令运行。
采用软件设置和管理多线程处理器的程序的执行线程还可以使得同时运行的线程数不受处理器的发射指令数及流水线级数的限制。也可以避免因程序线程少于流水线而造成的时钟周期/硬件资源浪费的现象。
为实现软件可控动态多线程方法,其处理器的指令系统除了通常执行程序的指令字外还必须附加一组包含有线程号及优先级信息的识别符作为一个mark附加在指令字中,如图3所示。图中的mark是一个至少2位的2进制数字。
以一个3位数的mark为例:
假设mark=“000”;表示执行该指令的线程是0,优先级是0(0代表低优先级)
假设mark=“101”;表示执行该指令的线程是1,优先级是1(代表高优先级)
Mark的具体数值可以是程序员在编程时根据系统的要求设定该段程序的执行线程及优先级,也可以是编译系统在编译过程中根据程序的功能来自动给出。
本实用新型的软件可控动态多线程方法不仅可以用于单指令发射的处理器,也可以用于多指令发射的处理器。
对于一个多指令发射的处理器,其多发射指令可以共用一个mark信息,也可以每条指令带有一个自己的mark信息。
图3是一个单mark单指令的指令结构。
图4是一个单mark多指令的指令结构;其中指令字1,2,,n必须是同一个线程程序中的不同指令。单mark指令字的结构只能执行时分多线程处理。
图5给出的是多mark、多指令字的指令结构,图中,M即代表Mark的意思;由于每个指令字都有其自己的mark,所以这些指令可以是不同线程的程序的指令。这种多mark的指令结构可适用于同步多线程处理。
本实用新型的动态多线程方法的执行步骤如下:
步骤1(或时钟周期0)读取指令:处理器的I-Cache读取控制电路检查是否有指令等待执行(Valid),如果有2个以上的指令Valid,(一个多线程的处理器的I-Cache应该至少有2个或以上的Bank),则检查哪一条指令的优先级高,如果有就读取优先级高的指令,如果优先级一样则读取和前一步执行的指令线程不同的指令或根据线程的顺序读取指令;
步骤2(或时钟周期1)指令解码及分配:解码电路解码指令1,指令2,指令3,分配逻辑再根据解码指令的功能分配给不同的运算单元去执行;
步骤3(或时钟周期2~n+1)指令执行:处理器按照mark中的线程信息读取相应的寄存器的数据,并将执行的结果存入相应线程的寄存器;以指令控制电路为例,根据mark的线程信息按相应的PC寄存器内容顺序执行程序指令,并根据指令读取相应的线程的其他功能寄存器(如loop counter, jump, condition 等)数据,并将执行指令的结果再存入相应的线程的这些寄存器;
这里时钟周期2~n+1中的n数值决定于处理器运算单元的流水线级数。如果是一个4级流水的结构,这个n就等于4,如果是6级流水线结构,n就等于6;
步骤3的时钟周期n+1执行完后就再回到步骤1;
由于本实用新型中的单mark多指令的动态多线程结构是一个时分多线程结构,因此当当前程序运行到步骤2(时钟周期1)时,处理器的I-Cache读取控制电路在重复步骤1,即读取控制电路在检查下一步的出现的指令的有效性(Valid)并根据Valid来决定读取哪一个线程的程序指令。
当当前的程序执行到步骤3时(时钟周期2),I-Cache读取控制电路仍然重覆步骤1,根据指令的Valid信息读取第三组指令;而处理器的解码分配电路则重覆执行步骤2,解码和分配程序2的指令;如此周而复始。
图6给出了一个具有6级流水线(运算单元)结构的动态多线程的执行流程示意。图中:
T—线程;
Y—线程号,y=0,1,2,,,n;用于代表第y线程T;比如T(2)表示线程2;
Y的值是由指令字中的mark给出;
i—相同线程在同一个指令周期内的第i次发射;在这个例子中一个指令周期等于6个时钟周期;
J–流水线级数;
比如T(32,4)代表线程3的第2次发射及其在流水线第4级时的状态。
这里的流程图的操作过程相当上面所述的步骤3。其中n等于6,即处理器已经读取了指令并将指令解码和分配给了相应的处理单元。相应的处理单元已经得到了线程线程和优先级的信息。
一个动态多线程的操作流程是:(假设程序0,1,2,,,5都是独立的线程)
在时钟周期零时C0(这里的时钟周期0相当于前述的指令周期2):处理器的处理单元已经读取指令并解码出指令字的mark部分得到当前指令的线程Y,假设Y=0,即线程0的程序的指令,该指令就被授予线程T(00 ,0)并从第零级流水线开始执行;
在时钟周期一时C1:处理器读取下一条指令并解码出mark得到Y=1,说明该指令是线程1的程序的指令,该指令被授予线程T(10 ,0),并从第一级流水线开始执行,而这时前条指令已经流水到第1级流水线,所以状态变成T(00 ,1);
在时钟周期二时C2:正常情况下处理器应该读取到线程2程序的指令即Y=2,但是由于某种原因,线程2的程序的指令missing,而出现线程0的程序的指令已经准备好,这时处理器会读到指令的mark并解码得到Y=0如果解码还得到优先级等于1(即不需要等待线程0的程序前一条指令的运算结果),这时处理器就开始授权线程T(01 ,0)并开始执行该指令,顺序的,前面2条指令的状态变成,T(00 ,2)和T(10 ,1);
在时钟周期三时C3:处理器读取指令并解码mark得到Y=3,即授予该指令线程T(30 ,0)并开始执行。这时前面的指令执行状态顺序变成T(00 ,3),T(10 ,2)及T(01 ,1);
在时钟周期四时C4:处理器读取指令并解码mark得到Y=4,即授予该指令线程T(40 ,0)并开始执行。这时前面的指令执行状态顺序变成T(00 ,4),T(10 ,3),T(01 ,2)及T(30 ,1);
在时钟周期五时C5:处理器读取指令并解码mark得到Y=5,即授予该指令线程T(50 ,0)并开始执行。这时前面的指令执行状态顺序变成T(00 ,5),T(10 ,4),T(01 ,3),T(30 ,2)及T(40 ,2);至此,一个指令周期结束,指令T(00)的运算结果存入相应的寄存器。
从以上分析可以看出,采用软件控制动态多线程技术,对于处理器来说只需跟踪每条指令的T(Yi ,j)便能够有效的调动硬件资源。而多线程的设置完全可以从系统的要求出发灵活的调动。
图7是一个Harvard结构的,采用了软件设置线程的动态可控的多线程处理器逻辑框图。图中的处理器的指令结构是一个单mark三指令字发射结构。从图中可以看到处理器在指令字结构中增加几个比特的mark位外其他部分和一个典型的处理器结构几乎完全一样。Mark的信息需要传送给所有的运算单元。指令控制单元根据mark的线程及优先级信息控制指令的读取及控制和跟踪多线程的执行状态,算术运算单元则是利用mark的信息来确保该指令的运算结果不会被搞混乱。
本技术领域技术人员可以理解的是,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本实用新型所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
以上所述的具体实施方式,对本实用新型的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本实用新型的具体实施方式而已,并不用于限制本实用新型,凡在本实用新型的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本实用新型的保护范围之内。
Claims (4)
1. 一种可控动态多线程方法的处理器,采用流水线结构且具有I-cache,其特征在于:
至少包含一个带mark的指令系统、一个能够识别和跟踪mark的程序执行控制单元、一个能够识别mark并进行解码的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元;
所述mark包含二部分信息:mark对应指令所属的线程以及mark对应指令的优先级信息,所述优先级信息用于指明指令的执行顺序及与其前后指令的相关性(dependencies);处理器根据mark控制其对应指令,按该指令的优先级信息和所属的线程发射并执行该指令。
2. 根据权利要求1所述的可控动态多线程方法的处理器,其特征在于,所述处理器为多指令发射处理器,其每条指令都独立带有自己的mark。
3.根据权利要求1所述的可控动态多线程方法的处理器,其特征在于,所述处理器为多指令发射处理器,多条指令共用一组mark。
4. 根据权利要求1所述的可控动态多线程方法的处理器,其特征在于,所述处理器为单指令发射处理器,其每条指令对应一个mark。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201620372107.3U CN205721743U (zh) | 2016-04-28 | 2016-04-28 | 一种可控动态多线程方法的处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201620372107.3U CN205721743U (zh) | 2016-04-28 | 2016-04-28 | 一种可控动态多线程方法的处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN205721743U true CN205721743U (zh) | 2016-11-23 |
Family
ID=57291337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201620372107.3U Active CN205721743U (zh) | 2016-04-28 | 2016-04-28 | 一种可控动态多线程方法的处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN205721743U (zh) |
-
2016
- 2016-04-28 CN CN201620372107.3U patent/CN205721743U/zh active Active
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104481B (zh) | 用于执行确定性和机会性多线程的系统和方法 | |
US10684860B2 (en) | High performance processor system and method based on general purpose units | |
CN108027807B (zh) | 基于块的处理器核拓扑寄存器 | |
CN108027769B (zh) | 使用寄存器访问指令发起指令块执行 | |
EP3350711B1 (en) | Block-based processor core composition register | |
CN108027772B (zh) | 用于逻辑处理器的不同的系统寄存器 | |
US20230106990A1 (en) | Executing multiple programs simultaneously on a processor core | |
CN106104464B (zh) | 具有指令链接能力的多线程处理器中的机会多线程 | |
EP3350686B1 (en) | Debug support for block-based processor | |
CN102004719B (zh) | 支持同时多线程的超长指令字处理器结构 | |
US10095519B2 (en) | Instruction block address register | |
US20170371660A1 (en) | Load-store queue for multiple processor cores | |
US20170083343A1 (en) | Out of order commit | |
EP3028143A1 (en) | System and method for an asynchronous processor with multiple threading | |
EP3491516A1 (en) | Load-store ordering in a block-based processor | |
CN102495726B (zh) | 机会多线程方法及处理器 | |
CN205721743U (zh) | 一种可控动态多线程方法的处理器 | |
CN105824605B (zh) | 一种可控动态多线程方法及处理器 | |
CN202711237U (zh) | 机会多线程处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract |
Assignee: Suzhou Hongxin integrated circuit Co.,Ltd. Assignor: Wang Shenghong Contract record no.: X2023990000728 Denomination of utility model: A Controllable Dynamic Multi threading Method for Processors Granted publication date: 20161123 License type: Exclusive License Record date: 20230726 |
|
EE01 | Entry into force of recordation of patent licensing contract |