一种可控动态多线程方法及处理器的制造方法

文档序号:10470901阅读:208来源:国知局
一种可控动态多线程方法及处理器的制造方法
【专利摘要】本发明公开了一种可控动态多线程方法及处理器,所述方法是对一个采用流水线结构的处理器,在其指令结构中新增mark,该mark包含二部分信息:mark对应指令所属的线程以及mark对应指令的优先级信息;处理器根据mark控制其对应指令,并根据mark中的线程及优先级信息发射并执行该指令。所述处理器至少包括一个含有mark的指令系统、一个能够识别和跟踪mark的程序执行控制单元(Branch)、一个能够识别mark并进行解码的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元。本发明能够动态的调度一个处理器的所有运算硬件资源从而提高处理器的运算能力,且不需要增加很多复杂的硬件。
【专利说明】
-种可控动态多线程方法及处理器
技术领域
[0001 ] 本发明设及处理器领域,尤其设及一种可控动态多线程方法(Dynamic Multi- t虹eading)及处理器。
【背景技术】
[0002] 为了提高处理器的运算能力,很多并行处理技术被开发出来,如超标量(Super- scalar),流水线(Pipeline).超长宽指令(VLIW),单指令多执行(SIMD),等等。可是,由于一 个软件程序的指令处理是顺序执行的,其执行过程中存在的指令及数据的依赖性 (dependencies)造成了处理器经常的处于等待状态因而限制了运些并行处理技术效率的 发挥。
[0003] 为了克服指令执行中的依赖性,一些提高指令发射效率的技术,如乱序码(Out- of-Order) , 控制程序预测 (Branch Prediction) 等被开发出来 ,但是运些技术都有其局限 性。它们或者是硬件非常复杂,或者是效率提高有限而不适合嵌入式系统的应用。一个嵌入 式系统,尤其是移动设备,如移动通信,车载设备,穿戴式设备等,对处理器性能的要求不仅 运算能力要高,更要求功耗要低及实时性要强。
[0004] 多线程并行处理器技术(Multi-化reading),因为它可W在同一个处理器中并行 处理2个或多个完全独立的运算程序,因而可W比较好的解决指令执行过程中的控制及数 据依赖性所带来的运行效率限制,其中同步多线程技术(Simultaneous Multi-threading) 及令牌驱动多线程技术(Token Triggered multi-t虹eading,SMT)在一些处理器产品中得 到 了很好的应用,比如Intel的Hyper-Threading, IBM的POWERS , Sun Microsystems的 叫化aSPARC Τ2及MIPS的MT都是采用了SMT技术。San化ridge的SaiKlblasterDSP核采用的是 令牌驱动多线程技术。
[0005] SMT技术虽然能解决程序执行过程中的依赖性问题,SMT技术除了需要给每个线程 都有自己的一套执行程序所需的寄存器外还要在每级的流水线加上线程跟踪逻辑,增加共 享资源的尺寸,如指令Cache,化Bs等。其线程跟踪逻辑不仅要跟踪线程的行程还要检查和 判断该线程是否已执行完成。由于会有大量的线程处于执行或半执行状态,因而CPU的 化ches及TLB的尺寸必须足够大W避免不必要的线程之间的化rashing,其硬件的复杂程度 随着线程数的增加而大大的增加因而限制了其很难应用于嵌入式处理器及低功耗处理器 的设计。
[0006] 下表是一个典型的SMT多线程程序执行过程:
令牌驱动多线程是一种时分多线程,由于在每个时钟周期内它只能执行同一个线程程 序的指令,因而相比SMT它的硬件复杂要简化很多,但是效率也跟着下降。其特点是: 1. 每个时钟周期只有一个线程能发出指令; 2. 所有线程是顺序启动如图1所示,因而简化了线程选择电路; 3. 每个线程都有相同的执行指令的时钟周期,不需要依赖检查和绕行硬件; 4. 运算结果能保证在下次的线程执行之前就已经得到。
[0007] 下表给出了令牌驱动多线程的程序执行过程:
'^但是由于令牌驱动多线程处理器在规定的时钟周期只能执行特定的线程操作,因此如I 果在运个时钟周期,其指定的线程由于指令或数据的缺失(missing)或因为依赖性而不能 发射指令时,该时钟周期就被浪费了。为了克服令牌驱动多线程运个运个缺陷,一个机会多 线程技术被开发出来。
[0008] 机会多线程技术允许一个多线程处理器的一个线程在某一个的时钟周期内如果 没有有效指令时不必HOLD运个时钟周期,而是将该时钟周期让给别的有有效指令的线程。 即将原来浪费的时钟周期作为一个"机会"让给别的线程使用。
[0009] 采用该方法对一个具有多线程处理器来说,其线程不再受每个线程周期只能发一 次指令的限制,而是可W利用任何"机会"在每个时钟周期都可W发射指令只要该时钟周期 原始设定的线程在该时钟周期内没有有效的指令。
[0010] 1.机会多线程技术和令牌驱动多线程技术一样,它是一种分时多线程技术,每个 时钟周期只能执行一个程序。其可执行的线程数受限于硬件的线程数。
[0011] 2.机会多线程需要一个指令预测电路,对于一个采用化IW结构的处理器,它需要 对每一个子指令的依赖性进行预测。因此指令预测电路相当复杂。
[0012] 3.机会多线程技术需要一组2维的线程身份(ID)寄存器W用于跟踪线程指令在 每级流水线的执行情况W保证结果数据不会被搞混乱。
[0013] 4.实际应用中,采用机会多线程的处理器的每个运算单元必需为每个线程增加 一组2维的完全独立于其他线程的数据寄存器W防止处于半执行状态的线程之间的数据 Thr曰shingo
[0014] 5.为了能在每一个处理器的时钟周期内发射指令,线程所属的指令内存也必须 运行在和处理器时钟周期相同的时钟频率W保证线程能及时的读取指令。由此,多线程的 一个能降低存储器功耗的特点将不再存在。
[0015] W上分析可W看出采用机会多程序技术的处理器的硬件复杂度要比令牌驱动多 线程技术增加很多,而且为了使每个线程能在每个时钟周期都能读取指令,其指令内存的 时钟频率必须是和处理器的主振频率一样,运样处理器的功耗会明显增加。因而机会多线 程技术并不适合应用于低功耗嵌入式处理器设计。
[0016] 图2是机会多线程的程序执行示意图。

【发明内容】

[0017] 本发明所要解决的技术问题是针对【背景技术】中所设及到的缺陷,提供一种可控动 态多线程方法及处理器。
[001引本发明为解决上述技术问题采用W下技术方案: 一种可控动态多线程方法,对一个采用流水线结构且具有I-cache的处理器,在其指 令结构中新增mark,该mark包含二部分信息:mark对应指令所属的线程W及mark对应指令 的优先级信息,所述优先级信息用于指明指令的执行顺序及与其前后指令的相关性;处理 器根据mark控制其对应指令,按该指令的优先级信息和所属的线程发射并执行该指令。
[0019] 作为本发明一种可控动态多线程方法进一步的优化方案,所述处理器根据mark控 制其对应指令、按该指令的优先级信息和所属的线程发射并执行该指令的具体步骤如下: 步骤1),根据等待被执行指令对应mark中的优先级信息读取指令; 步骤2),指令解码及分配: 处理器的解码电路将步骤1)中所读取的指令解码为mark和各个子指令,处理器的分配 逻辑根据各个子指令的功能将其分配给不同的运算单元去执行; 步骤3),指令执行: 对于各个子指令,处理器按照其所属指令mark中的线程信息读取相应的寄存器的数 据,并将执行的结果存入相应线程的寄存器; 步骤4),跳转至步骤1)。
[0020] 根据具体的硬件实现方法,有时步骤1和2会需要多个时钟周期,有时只需要1个时 钟周期,步骤3)则需要n-1个时钟周期,η为处理器运算单元的流水线级数。
[0021] 作为本发明一种可控动态多线程方法进一步的优化方案,所述步骤1)的详细步骤 如下: 步骤1.1 ),处理器的指令读取电路检查I-化Che是否有指令被等待执行,即是否存在处 于化lid状态的指令; 步骤1.1.1),如果仅存在1个处于化lid状态的指令,则读取该指令; 步骤1.1.2),如果有2个W上的指令处于化1 id状态,则根据指令对应的mark检查哪一 条指令的优先级高; 步骤1.1.2.1),如果存在优先级高于其他指令的指令,则读取该指令, 步骤1.1.2.2),如果不存在优先级高于其他指令的指令,则判断是否存在前一步执行 的指令线程; 步骤1.1.2.2.1 ),如果存在前一步执行的指令线程,读取和前一步执行的指令线程不 同的指令或根据线程的顺序读取指令; 步骤1.1.2.2.1 ),如果不存在前一步执行的指令线程,根据线程的顺序读取指令。
[0022] 作为本发明一种可控动态多线程方法进一步的优化方案,所述mark由软件写入或 者编译器在编译过程中自动写入。
[0023] 作为本发明一种可控动态多线程方法进一步的优化方案,所述处理器为多指令发 射处理器,其每条指令都独立带有自己的mark。
[0024] 作为本发明一种可控动态多线程方法进一步的优化方案,所述处理器为多指令发 射处理器,多条指令共用一组mark。
[0025] 作为本发明一种可控动态多线程方法进一步的优化方案,所述处理器为单指令发 射处理器,其每条指令对应一个mark。
[00%]本发明还公开了一种基于该可控动态多线程方法的处理器,至少包含一个mark的 指令系统、一个能够识别和跟踪mark的程序执行控制单元、一个能够识别mark并进行解码 的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元。
[0027] 本发明采用W上技术方案与现有技术相比,具有W下技术效果: 1. 不需要复杂的多线程控制电路及复杂的指令有效预测电路就可W高效的调动处理 器的硬件资源,有效的判断指令的优先级及相关性; 2. 根据指令的优先级顺序执行指令而不用担屯、因为某些指令或数据的missing而造 成硬件资源的浪费和出现运算结果混乱的现象; 3. 有效的提高处理器的硬件资源的利用率,进而降低功耗。
【附图说明】
[0028] 图1是一个四线程的令牌驱动多线程线程流程图; 图2是机会多线程程序执行示意图; 图3是带mark的单指令结构图; 图4是多指令带单个mark指令结构图; 图5是多指令带多mark指令结构图; 图6是一个具有6级流水线的多线程执行流程图; 图7是一个具有软件可控动态多线程功能的处理器框图。
【具体实施方式】
[0029] 下面结合附图对本发明的技术方案做进一步的详细说明: 本发明是在一个采用多级流水线结构的处理器的指令系统中增加一组对应指令的线 程身份和其优先级信息的符号(mark)。处理器的指令系统在读取(Fetch)指令的同时获得 执行该指令的线程身份W及其优先级的信息的mark。处理器的指令控制运算系统(Branch) 根据该mark的信息来安排处理器的硬件资源W及执行顺序。运个mark将一直跟随着指令 执行的每一步w便于跟踪该指令的执行步骤,并根据优先级信息指示该条指令与它前后的 指令/数据的依赖性W及优先执行的顺序。
[0030] 本发明的mark的内容可W是在程序员编程时根据应用系统的要求而设定执行该 程序指令的线程及执行优先级,也可W是编译器在编译过程中自动设定线程并根据程序的 运算功能在判别该指令与其前后指令和数据的相关性来设定其优先级。
[0031] 采用软件设置程序的执行线程并提供该程序中每条指令的优先级和与其前后执 行指令的相关性的信息附着在每一条指令上作为一个识别符(mark)。处理器硬件只需能够 识别运些mark的信息就可W实现动态的调动处理器的硬件资源并高效的执行多线程的指 令运行。
[0032] 采用软件设置和管理多线程处理器的程序的执行线程还可W使得同时运行的线 程数不受处理器的发射指令数及流水线级数的限制。也可W避免因程序线程少于流水线而 造成的时钟周期/硬件资源浪费的现象。
[0033] 为实现软件可控动态多线程方法,其处理器的指令系统除了通常执行程序的指令 字外还必须附加一组包含有线程号及优先级信息的识别符作为一个mark附加在指令字中, 如图3所示。图中的mark是一个至少2位的2进制数字。
[0034] W-个3位数的mark为例: 假设mark= "000";表示执行该指令的线程是0,优先级是0(0代表低优先级) 假设mark="l〇r;表示执行该指令的线程是1,优先级是1(代表高优先级) Mark的具体数值可W是程序员在编程时根据系统的要求设定该段程序的执行线程及 优先级,也可W是编译系统在编译过程中根据程序的功能来自动给出。
[0035] 本发明的软件可控动态多线程方法不仅可W用于单指令发射的处理器,也可W用 于多指令发射的处理器。
[0036] 对于一个多指令发射的处理器,其多发射指令可W共用一个mark信息,也可W每 条指令带有一个自己的mark信息。
[0037] 图3是一个单mark单指令的指令结构。
[003引图4是一个单mark多指令的指令结构;其中指令字l,2,,n必须是同一个线程程序 中的不同指令。单mark指令字的结构只能执行时分多线程处理。
[0039] 图5给出的是多mark、多指令字的指令结构,图中,Μ即代表Mark的意思;由于每个 指令字都有其自己的mark,所W运些指令可W是不同线程的程序的指令。运种多mark的指 令结构可适用于同步多线程处理。
[0040] 本发明的动态多线程方法的执行步骤如下: 步骤1(或时钟周期0)读取指令:处理器的I-化Che读取控制电路检查是否有指令等待 执行(Valid),如果有2个W上的指令Valid,(-个多线程的处理器的I-化che应该至少有2 个或W上的Bank),则检查哪一条指令的优先级高,如果有就读取优先级高的指令,如果优 先级一样则读取和前一步执行的指令线程不同的指令或根据线程的顺序读取指令; 步骤2(或时钟周期1)指令解码及分配:解码电路解码指令1,指令2,指令3,分配逻辑再 根据解码指令的功能分配给不同的运算单元去执行; 步骤3(或时钟周期2~n+1)指令执行:处理器按照mark中的线程信息读取相应的寄存 器的数据,并将执行的结果存入相应线程的寄存器;W指令控制电路为例,根据mark的线程 信息按相应的PC寄存器内容顺序执行程序指令,并根据指令读取相应的线程的其他功能寄 存器(如loop counter, jump, condition等)数据,并将执行指令的结果再存入相应的线 程的运些寄存器; 运里时钟周期2~n+1中的η数值决定于处理器运算单元的流水线级数。如果是一个4级 流水的结构,运个η就等于4,如果是6级流水线结构,η就等于6; 步骤3的时钟周期n+1执行完后就再回到步骤1。
[0041] 由于本发明中的单mark多指令的动态多线程结构是一个时分多线程结构,因此当 当前程序运行到步骤2(时钟周期1)时,处理器的I-化Che读取控制电路在重复步骤1,即读 取控制电路在检查下一步的出现的指令的有效性(Valid)并根据Valid来决定读取哪一个 线程的程序指令。
[0042] 当当前的程序执行到步骤3时(时钟周期2),I-Cache读取控制电路仍然重覆步骤 1,根据指令的Valid信息读取第Ξ组指令;而处理器的解码分配电路则重覆执行步骤2,解 码和分配程序2的指令;如此周而复始。
[0043] 图6给出了一个具有6级流水线(运算单元)结构的动态多线程的执行流程示意。图 中: T-线程; Y-线程号,y=〇,1,2,,,n;用于代表第y线程T;比如Τ(2)表示线程2; Υ的值是由指令字中的mark给出; i-相同线程在同一个指令周期内的第i次发射;在运个例子中一个指令周期等于6个 时钟周期; J-流水线级数; 比如T(32,4)代表线程3的第2次发射及其在流水线第4级时的状态。
[0044] 运里的流程图的操作过程相当上面所述的步骤3)。其中η等于6,即处理器已经读 取了指令并将指令解码和分配给了相应的处理单元。相应的处理单元已经得到了线程和优 先级的?胃息。
[0045] -个动态多线程的操作流程是:(假设程序0,1,2,,,5都是独立的线程) 在时钟周期零时C0(运里的时钟周期0相当于前述的指令周期2):处理器的处理单元已 经读取指令并解码出指令字的mark部分得到当前指令的线程Υ,假设Υ=0,即线程0的程序的 指令,该指令就被授予线程Τ(Οο,ο)并从第零级流水线开始执行; 在时钟周期一时C1:处理器读取下一条指令并解码出mark得到Υ=1,说明该指令是线程 1的程序的指令,该指令被授予线程Τ(1〇,〇),并从第一级流水线开始执行,而运时前条指令 已经流水到第1级流水线,所W状态变成T(Oo,i); 在时钟周期二时C2:正常情况下处理器应该读取到线程2程序的指令即Υ=2,但是由于 某种原因,线程2的程序的指令missing,而出现线程0的程序的指令已经准备好,运时处理 器会读到指令的mark并解码得到Υ=0如果解码还得到优先级等于1(即不需要等待线程0的 程序前一条指令的运算结果),运时处理器就开始授权线程Τ(化,0)并开始执行该指令,顺序 的,前面2条指令的状态变成,Τ(Οο,2)和Τ( 1〇, 1); 在时钟周期Ξ时C3:处理器读取指令并解码mark得到Υ=3,即授予该指令线程T(3g,〇)并 开始执行。运时前面的指令执行状态顺序变成T(〇G,3),T(U2)及T(0l,l); 在时钟周期四时C4:处理器读取指令并解码mark得到Υ=4,即授予该指令线程Τ(4〇,〇)并 开始执行。运时前面的指令执行状态顺序变成了(0(),4),了(1(),3),1'(〇1,2)及1'(3〇,1); 在时钟周期五时巧:处理器读取指令并解码mark得到Υ=5,即授予该指令线程T(5g,〇)并 开始执行。运时前面的指令执行状态顺序变成T(0g,5),T(1(),4),T(0i,3),T(3(),2^T(4(),2);S 此,一个指令周期结束,指令Τ(0〇)的运算结果存入相应的寄存器。
[0046] 从W上分析可W看出,采用软件控制动态多线程技术,对于处理器来说只需跟踪 每条指令的T(Yi,j)便能够有效的调动硬件资源。而多线程的设置完全可W从系统的要求出 发灵活的调动。
[0047] 图7是一个化rvard结构的,采用了软件设置线程的动态可控的多线程处理器逻辑 框图。图中的处理器的指令结构是一个单marks指令字发射结构。从图中可W看到处理器 在指令字结构中增加几个比特的mark位外其他部分和一个典型的处理器结构几乎完全一 样。Mark的信息需要传送给所有的运算单元。指令控制单元根据mark的线程及优先级信息 控制指令的读取及控制和跟踪多线程的执行状态,算术运算单元则是利用mark的信息来确 保该指令的运算结果不会被搞混乱。
[004引本技术领域技术人员可W理解的是,除非另外定义,运里使用的所有术语(包括技 术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还 应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中 的意义一致的意义,并且除非像运里一样定义,不会用理想化或过于正式的含义来解释。 [0049] W上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步 详细说明,所应理解的是,W上所述仅为本发明的【具体实施方式】而已,并不用于限制本发 明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。
【主权项】
1. 一种可控动态多线程方法,其特征在于,对一个采用流水线结构且具有I-cache的处 理器,在其指令结构中新增mark,该mark包含二部分信息:mark对应指令所属的线程以及 mark对应指令的优先级信息,所述优先级信息用于指明指令的执行顺序及与其前后指令的 相关性(dependencies);处理器根据mark控制其对应指令,按该指令的优先级信息和所属 的线程发射并执行该指令。2. 根据权利要求1所述的可控动态多线程方法,其特征在于,所述处理器根据mark控制 其对应指令、按该指令的优先级信息和所属的线程发射并执行该指令的具体步骤如下: 步骤1 ),根据等待被执行指令对应mark中的优先级信息读取指令; 步骤2),指令解码及分配: 处理器的解码电路将步骤1)中所读取的指令解码为mark和各个子指令,处理器的分配 逻辑根据各个子指令的功能将其分配给不同的运算单元去执行; 步骤3),指令执行: 对于各个子指令,处理器按照其所属指令mark中的线程信息读取相应的寄存器的数 据,并将执行的结果存入相应线程的寄存器; 步骤4),跳转至步骤1)。3. 根据权利要求2所述的可控动态多线程方法,其特征在于,所述步骤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 ),如果不存在前一步执行的指令线程,根据线程的顺序读取指令。4. 根据权利要求1所述的可控动态多线程方法,其特征在于,所述mark由软件写入或者 编译器在编译过程中自动写入。5. 根据权利要求1所述的可控动态多线程方法,其特征在于,所述处理器为多指令发射 处理器,其每条指令都独立带有自己的mark。6. 根据权利要求1所述的可控动态多线程方法,其特征在于,所述处理器为多指令发射 处理器,多条指令共用一组mark。7. 根据权利要求1所述的可控动态多线程方法,其特征在于,所述处理器为单指令发射 处理器,其每条指令对应一个mark。8. 基于权利要求1所述的可控动态多线程方法的处理器,其特征在于,至少包含一个带 mar k的指令系统、一个能够识别和跟踪mar k的程序执行控制单元、一个能够识别mar k并进 行解码的指令解码电路、一个能够识别和解码mark的算术运算单元及相应的内存单元。
【文档编号】G06F9/38GK105824605SQ201610272367
【公开日】2016年8月3日
【申请日】2016年4月28日
【发明人】王生洪
【申请人】王生洪
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1