1、10申请公布号CN102334094A43申请公布日20120125CN102334094ACN102334094A21申请号201080009472322申请日20100318129607/200920090528JPG06F9/38200601G06F9/4620060171申请人松下电器产业株式会社地址日本大阪府72发明人古贺义宏瓶子岳人74专利代理机构永新专利商标代理有限公司72002代理人徐殿军54发明名称多线程处理器、编译器装置及操作系统装置57摘要一种并行执行多个线程的命令的多线程处理器1,具有由分别执行命令的多个运算器构成的运算器组119;第1命令分组部108第3命令分组部11
2、0,按照每个线程,将该线程所包含的命令分组为由能够由上述多个运算器同时执行的命令构成的组;线程选择部114,通过控制多个线程的命令的执行频度,从而按照多线程处理器1的每个执行周期,从多个线程中选择含有对多个运算器发行的命令的线程;以及命令发行部115,按照多线程处理器1的每个执行周期,对多个运算器发行由线程选择部114选择的线程所包含的命令中、被分组后的组的命令。30优先权数据85PCT申请进入国家阶段日2011082686PCT申请的申请数据PCT/JP2010/0019312010031887PCT申请的公布数据WO2010/137220JA2010120251INTCL19中华人民共和国
3、国家知识产权局12发明专利申请权利要求书3页说明书15页附图16页CN102334110A1/3页21一种多线程处理器,并行执行多个线程的命令,具有分别执行命令的多个运算器;分组部,按照每个线程,将该线程所包含的命令分组为由能够由上述多个运算器同时执行的命令构成的组;线程选择部,通过控制上述多个线程的命令的执行频度,从而按照上述多线程处理器的每个执行周期,从上述多个线程中选择含有对上述多个运算器发行的命令的线程;以及命令发行部,按照上述多线程处理器的每个执行周期,对上述多个运算器发行如下命令,即由上述线程选择部选择的上述线程所包含的命令中、由上述分组部进行分组而得到的组的命令。2根据权利要求1
4、所述的多线程处理器,其中,上述多线程处理器还具有命令数指定部,该命令数指定部按照每个线程来指定由上述分组部进行分组的上述组所包含的命令的最大个数,上述分组部以不超过由上述命令数指定部指定的上述命令的最大个数的方式对命令进行分组。3根据权利要求2所述的多线程处理器,其中,上述命令数指定部按照在寄存器中设定的值来指定上述最大个数。4根据权利要求2所述的多线程处理器,其中,上述命令数指定部按照上述多个线程所包含的用于指定上述最大个数的命令来指定上述最大个数。5根据权利要求14中任意一项所述的多线程处理器,其中,上述线程选择部具有执行间隔指定部,该执行间隔指定部对上述多个线程分别指定在上述多个运算器中
5、的命令的执行周期间隔,上述线程选择部按照由上述执行间隔指定部指定的执行周期间隔来选择上述线程。6根据权利要求5所述的多线程处理器,其中,上述执行间隔指定部按照在寄存器中设定的值来指定上述执行周期间隔。7根据权利要求5所述的多线程处理器,其中,上述执行间隔指定部按照上述多个线程所包含的用于指定上述执行周期间隔的命令来指定上述执行周期间隔。8根据权利要求17中任意一项所述的多线程处理器,其中,上述线程选择部具有发行间隔抑制部,该发行间隔抑制部针对发行了在多个线程之间引起运算器竞争的命令的线程来进行抑制,以使得引起上述竞争的命令在固定的执行周期数内无法执行。9一种编译器装置,将源程序转换为可执行代码
6、,适合于将多个线程的命令并行执行的多线程处理器,该编译器装置具有指示取得部,取得与多线程控制相关的编程员的指示;以及控制代码生成部,根据上述指示来生成对处理器的执行模式进行控制的代码。10根据权利要求9所述的编译器装置,其中,上述指示取得部取得对并行执行进行关注的指示。权利要求书CN102334094ACN102334110A2/3页311根据权利要求9所述的编译器装置,其中,上述指示取得部取得不对并行执行进行关注的指示。12根据权利要求10或11所述的编译器装置,其中,上述控制代码生成部根据上述指示来生成使运算器数增减的代码。13根据权利要求9所述的编译器装置,其中,上述指示取得部取得关于命
7、令并行度的指示,上述控制代码生成部生成按上述命令并行度来执行线程的代码。14根据权利要求9所述的编译器装置,其中,上述指示取得部取得关于线程的执行数的指示。15根据权利要求14所述的编译器装置,其中,上述指示取得部取得关于单线程执行的指示。16根据权利要求14或15所述的编译器装置,其中,上述控制代码生成部根据上述指示来生成对线程的执行数进行控制的代码。17根据权利要求9所述的编译器装置,其中,上述指示取得部取得与线程的响应性的确保相关的指示。18根据权利要求9所述的编译器装置,其中,上述指示取得部取得与产生停顿周期的频度相关的指示。19根据权利要求9所述的编译器装置,其中,上述指示取得部取得
8、与运算器资源的释放相关的指示。20根据权利要求1719中任意一项所述的编译器装置,其中,上述控制代码生成部根据上述指示来生成按固定频度插入停顿周期的代码。21根据权利要求1719中任意一项所述的编译器装置,其中,上述控制代码生成部根据上述指示来生成按固定频度释放运算器资源的代码。22根据权利要求921中任意一项所述的编译器装置,其中,上述指示是指针对上述源程序中的固定区间的指示。23一种编译器装置,将源程序转换为可执行代码,适合于将多个线程的命令并行执行的多线程处理器,该编译器装置具有用于检测处理的紧迫度的接口。24根据权利要求23所述的编译器装置,其中,上述接口是对使周期计数开始的地点进行指
9、示的接口。25根据权利要求23所述的编译器装置,其中,上述接口是对上述紧迫度的测定地点中的周期数的期待值进行输入的接口。26根据权利要求25所述的编译器装置,其中,上述接口是返回根据上述期待值和实际周期数导出的紧迫度的接口。27根据权利要求2326中任意一项所述的编译器装置,其中,上述编译器装置还具有代码生成部,该代码生成部生成与上述紧迫度对应的处理。28根据权利要求27所述的编译器装置,其中,上述代码生成部按照上述紧迫度来生成使运算器资源增减的代码。29根据权利要求27所述的编译器装置,其中,权利要求书CN102334094ACN102334110A3/3页4上述代码生成部按照上述紧迫度来生
10、成使命令并行度增减的代码。30根据权利要求2327中任意一项所述的编译器装置,其中,上述接口通过编译器装置的内部函数而实现。31一种操作系统装置,适合于将多个线程的命令并行执行的多线程处理器,该操作系统装置具有系统代码处理部,该系统代码处理部根据与多线程控制相关的编程员的指示来处理系统调用,该系统调用使得处理器的执行模式能够控制。32根据权利要求31所述的操作系统装置,其中,上述系统调用是与命令并行度相关的系统调用。33根据权利要求31所述的操作系统装置,其中,上述系统调用是与线程的执行数相关的系统调用。34根据权利要求31所述的操作系统装置,其中,上述系统调用是与周期计数相关的系统调用。35
11、根据权利要求31所述的操作系统装置,其中,上述系统调用是实施与紧迫度对应的处理的系统调用。权利要求书CN102334094ACN102334110A1/15页5多线程处理器、编译器装置及操作系统装置技术领域0001本发明涉及并行执行多个线程THREAD的多线程处理器等,尤其涉及通过控制各个线程所包含的命令的执行定时来提高各个线程的执行效率的多线程处理器等。背景技术0002近年来,在AVAUDIO/VISUAL处理的领域中,连续发表了新的编解码器CODEC或新规格等,基于软件的AV处理的需求日益提高。因此,在AV系统等中要求的处理器性能也飞跃性提高。并且,对应于所执行的软件的多任务化,开发了许多
12、采用同时执行多个线程的多线程技术的多线程处理器。0003在现有的多线程处理器中,公知有以下技术,即按照处理器的每个执行周期来切换执行的线程的细粒度多线程FINEGRAINEDMULTITHREADING例如,参照专利文献1,或者以INTEL公司的超线程技术为代表的、在执行周期内同时执行多个线程的同步多线程SIMULTANEOUSMULTITHREADINGSMT例如,参照非专利文献1等。0004现有技术文献0005专利文献0006专利文献1日本特开2008123045号公报图6等0007非专利文献0008非专利文献1INTEL社一一平成21年2月16日检索、网址发明概要0009发明要解决的问题
13、0010但是,在现有的多线程处理器中,当在线程之间竞争运算资源的情况下,用户指定或处理器实施方面的线程的优先度中处于劣势的其它线程的执行效率存在局部明显下降的情况。0011并且,在各个线程的命令数与运算器资源数的平衡较差的情况下,有可能不能得到在多线程动作中期待的那样的执行效率。例如,针对具有能够同时执行4个命令的运算器资源的处理器、想要连续发行分别包含在两个线程中的2个命令和3个命令时,两个线程的合计命令数是5。因此,不能同时执行这两个线程而只执行某一个线程的命令。因此,导致一个或两个运算器资源不被使用而造成浪费,存在线程的执行效率降低的问题。发明内容0012本发明是为了解决上述问题而提出的
14、,其目的在于,提供线程的执行效率高的多线程处理器、以及适合于该多重处理器的编译器装置和操作系统装置。0013用于解决问题的手段0014本发明的某个方面的多线程处理器,并行执行多个线程的命令,具有分别执行命说明书CN102334094ACN102334110A2/15页6令的多个运算器;分组部,按照每个线程,将该线程所包含的命令分组为由能够由上述多个运算器同时执行的命令构成的组;线程选择部,通过控制上述多个线程的命令的执行频度,从而按照上述多线程处理器的每个执行周期,从上述多个线程中选择含有对上述多个运算器发行的命令的线程;以及命令发行部,按照上述多线程处理器的每个执行周期,对上述多个运算器发行
15、如下命令,即由上述线程选择部选择的上述线程所包含的命令中、由上述分组部进行分组而得到的组的命令。0015根据这种结构,通过控制多个线程的执行频度,能够防止在用户指定或处理器实施方面的线程之间的优先度中处于劣势的线程的执行效率局部明显下降。此外,能够控制多个线程的执行频度以使得运算器资源能够有效利用,能够获得各个线程的命令数和运算器资源数的平衡,高效率地使用运算器资源。由此,能够提供线程的执行效率高的多线程处理器。0016优选为,上述多线程处理器还具有命令数指定部,该命令数指定部按照每个线程来指定由上述分组部进行分组的上述组所包含的命令的最大个数,上述分组部以不超过由上述命令数指定部指定的上述命
16、令的最大个数的方式对命令进行分组。0017根据这种结构,能够获得各个线程的命令数和运算器资源数的平衡,高效率地使用运算器资源。0018另外,优选为,上述命令数指定部按照在寄存器中设定的值来指定上述最大个数。0019根据这种结构,通过在维持命令集体系的状态下利用程序来更新寄存器的设定值,能够按程序的每个任意的范围来控制上述最大个数,优化执行效率。0020并且,也可以是,上述命令数指定部按照上述多个线程所包含的用于指定上述最大个数的命令来指定上述最大个数。0021根据这种结构,与按照在寄存器中设定的值来指定最大个数的情况相比,能够与能够削减的地址设定和存储器访问相应地更高速地变更设定。此外,能够不
17、必在意开销损耗而与能够高速地变更设定相应地按程序的更详细的每个任意的范围来控制上述最大个数,优化执行效率。0022另外,优选为,上述线程选择部具有执行间隔指定部,该执行间隔指定部对上述多个线程分别指定在上述多个运算器中的命令的执行周期间隔,上述线程选择部按照由上述执行间隔指定部指定的执行周期间隔来选择上述线程。0023根据这种结构,能够抑制优先度较高的线程长时间占用资源,能够防止优先度较低的线程的执行局部停止。0024另外,优选为,上述执行间隔指定部按照在寄存器中设定的值来指定上述执行周期间隔。0025根据这种结构,通过在维持命令集体系的状态下利用程序来更新寄存器的设定值,能够按程序的每个任意
18、的范围来抑制资源占用,提高其它线程的执行效率。0026并且,也可以是,上述执行间隔指定部按照上述多个线程所包含的用于指定上述执行周期间隔的命令来指定上述执行周期间隔。0027根据这种结构,与按照在寄存器中设定的值来指定执行周期间隔的情况相比,能够与能够削减的地址设定、存储器访问相应地更高速地变更设定。此外,能够不必在意开销损耗而与能够高速地变更设定相应地按程序的更详细的每个任意的范围来抑制资源占用,说明书CN102334094ACN102334110A3/15页7提高其它线程的执行效率。0028另外,优选为,上述线程选择部具有发行间隔抑制部,该发行间隔抑制部针对发行了在多个线程之间引起运算器竞
19、争的命令的线程来进行抑制,以使得引起上述竞争的命令在固定的执行周期数内无法执行。0029根据这种结构,与唯一地抑制执行周期的方法不同,能够只对最小必要限度的命令进行抑制。因此,能够不降低执行效率并高效率地向其它线程让出资源。0030本发明的另一个方面的编译器装置,将源程序转换为可执行代码,适合于将多个线程的命令并行执行的多线程处理器,该编译器装置具有指示取得部,取得与多线程控制相关的编程员的指示;以及控制代码生成部,根据上述指示来生成对处理器的执行模式进行控制的代码。0031根据这种结构,能够按照与多线程控制相关的编程员的指示来控制处理器的执行模式。因此,能够生成适合于线程执行效率高的多线程处
20、理器的代码。0032本发明的另一个方面的操作系统装置,适合于将多个线程的命令并行执行的多线程处理器,该操作系统装置具有系统代码处理部,该系统代码处理部根据与多线程控制相关的编程员的指示来处理系统调用,该系统调用使得处理器的执行模式能够控制。0033根据这种结构,能够按照与多线程控制相关的编程员的指示来控制处理器的执行模式。因此,能够处理适合于线程执行效率高的多线程处理器的系统调用。0034另外,本发明不仅能够实现为这样的具有特征性的处理部的多线程处理器,而且也能够实现为将多线程处理器所包含的特征性的处理部作为步骤的信息处理方法。此外,还能够实现为使计算机执行信息处理方法所包含的特征性步骤的程序
21、。并且,这种程序当然能够通过CDROMCOMPACTDISCREADONLYMEMORY等非易失性记录介质、因特网等通信网络而进行流通。0035发明效果0036根据本发明的多线程处理器等,即使是在线程之间竞争运算资源的情况下,也能够防止在用户指定及处理器实施方面的线程之间的优先度中处于劣势的线程的执行效率局部明显下降。此外,能够得到各个线程的命令数和运算器资源数的平衡,高效率地使用运算器资源。由此,能够提供线程的执行效率高的多线程处理器。附图说明0037图1是本发明的实施方式1的多线程处理器的框图。0038图2是本发明的实施方式1的线程选择部的框图。0039图3是表示本发明的实施方式1的多线程
22、处理器的动作的流程图。0040图4是本发明的实施方式1的线程选择处理的流程图。0041图5是表示本发明的实施方式2的编译器的结构的框图。0042图6是表示本发明的实施方式2的编译器能够受理的用于多线程的控制的指示的一览的图。0043图7是表示使用了“关注区间指示”的源程序的一例的图。0044图8是表示使用了“非关注区间指示”的源程序的一例的图。0045图9是表示使用了“命令并行度指示”的源程序的一例的图。说明书CN102334094ACN102334110A4/15页80046图10是表示使用了“多线程执行模式指示”的源程序的一例的图。0047图11是表示使用了“响应性确保区间指示”的源程序的
23、一例的图。0048图12是表示使用了“停顿插入频度指示”的源程序的一例的图。0049图13是表示使用了“运算器释放频度指示”的源程序的一例的图。0050图14是表示使用了“紧迫度检测指示”的源程序的一例的图。0051图15是表示使用了“执行周期期待值指示”的源程序的一例的图。0052图16是表示本发明的实施方式2的操作系统的结构的框图。具体实施方式0053下面,参照附图说明多线程处理器等的实施方式。另外,在实施方式中标注了相同标号的构成要素进行同样的动作,因而有时省略重复说明。0054实施方式10055在本实施方式中,说明通过命令执行控制来提高命令执行效率的多线程处理器、命令数的限制、限制的命
24、令数的基于寄存器的指定、限制的命令数的基于命令的指定、执行周期数间隔的指定、执行周期数间隔的基于寄存器的指定、执行周期数间隔的基于命令的指定、存在资源制约的命令的发行间隔的抑制。0056图1是表示本实施方式的多线程处理器的结构的框图。另外,在本实施方式中,假定是能够并行执行3个线程的多线程处理器。0057多线程处理器1具备命令存储器101、第1命令解码器102、第2命令解码器103、第3命令解码器104、第1命令数指定部105、第2命令数指定部106、第3命令数指定部107、第1命令分组部108、第2命令分组部109、第3命令分组部110、第1寄存器111、第2寄存器112、第3寄存器113、
25、线程选择部114、命令发行控制部115、线程选择器THREADSELECTOR116、线程用寄存器选择器117118、以及运算器组119。0058命令存储器101是对在多线程处理器1中执行的命令进行保持的存储器,保持3个独立执行的线程的命令流。0059第1命令解码器102、第2命令解码器103和第3命令解码器104从命令存储器101读出彼此不同的线程的命令,并对读出的命令进行解码。0060第1命令数指定部105、第2命令数指定部106和第3命令数指定部107分别指定如下命令数,即将由第1命令解码器102、第2命令解码器103和第3命令解码器104解码后的命令分组为能够同时执行的命令组时的、能够
26、同时执行的命令数。在本实施方式中,将命令数的上限设为3来进行说明。关于指定命令数的方法,可以是,将用于指定命令数的专用命令包含在各个线程的命令流中,通过执行该专用命令来指定命令数。或者,也可以是,设置对命令数进行设定的专用寄存器,由各个线程的命令流而变更专用寄存器的值来指定命令数。0061在通过执行专用命令来指定命令数的情况下,不存在因地址设定、寄存器访问而引起的开销损耗OVERHEADLOSS。因此,能够高速地实现命令数的变更。此外,通过预先在线程的多个位置插入上述专用命令,能够在线程内的多个命令范围中指定不同的命令数。对专用寄存器来设定命令数的情况下,能够在维持命令集INSTRUCTION
27、SET的体系的状态下对同时执行的命令数进行控制。说明书CN102334094ACN102334110A5/15页90062通过与运算器资源的数量、能够同时执行的线程数的平衡相应地变更命令数的指定,能够提高命令执行效率。例如,在运算器是4个、能够同时执行的线程数是2个的情况下,如果预先将命令数的上限设为2,则两个线程各使用两个运算器。但是,如果预先将命令数的上限设为3,则对于各个线程,最大将3个命令分组到一个命令组。因此,例如,在两个线程中、一个线程的命令组所包含的命令数是3而另一个线程的命令组所包含的命令数是2的情况下,则只能执行某一个线程,产生未使用的运算器,因此导致线程的执行效率下降。00
28、63第1命令分组部108、第2命令分组部109和第3命令分组部110将由第1命令解码器102、第2命令解码器103和第3命令解码器104分别解码后的命令分组为能够同时执行的命令组。另外,在进行分组时,以不超过由第1命令数指定部105、第2命令数指定部106和第3命令数指定部107设定的命令数的方式进行命令的分组。0064第1寄存器111、第2寄存器112和第3寄存器113是在基于各个线程的命令的运算时使用的寄存器堆REGISTERFILE。0065线程选择部114保持与线程优先度相关的设定信息,根据线程的执行状况来选择执行的线程。假设线程优先度是预先设定的。0066命令发行控制部115控制线程
29、选择器116、线程用寄存器选择器117和118,以便对运算器组119发行由线程选择部114选择的线程。此外,命令发行控制部115将与已对运算器组119发行的线程相关的发行命令信息通知线程选择部114。另外,本实施方式中将能够同时执行的线程数设为2。0067线程选择器116是按照命令发行控制部115的指示来选择执行线程由运算器组119执行命令的线程的选择器。0068线程用寄存器选择器117118是与线程选择器116同样地按照命令发行控制部115的指示来选择与执行线程成套的寄存器的选择器。0069运算器组119包含加法器或乘法器等多个运算器。在本实施方式中,将能够同时执行的运算器数量设为4。007
30、0图2是表示图1所示的线程选择部114的具体结构的框图。0071线程选择部114具有第1发行间隔抑制部201、第2发行间隔抑制部202、第3发行间隔抑制部203、第1执行间隔指定部204、第2执行间隔指定部205和第3执行间隔指定部206。0072第1发行间隔抑制部201、第2发行间隔抑制部202和第3发行间隔抑制部203分别进行控制,以使得在从所分配的线程发行了由于运算器组119的运算器数量限制等而不能同时执行的命令的情况下,在此后的固定期间中不对该线程发行该命令。0073第1执行间隔指定部204、第2执行间隔指定部205和第3执行间隔指定部206分别指定线程的执行间隔,以使得按照固定间隔来
31、执行所分配的线程。关于指定执行间隔的方法,可以是,将用于指定执行间隔的专用命令包含在各个线程的命令流中,通过执行该专用命令来指定执行间隔。或者,也可以是,设置对执行间隔进行设定的专用寄存器,由各个线程的命令流而变更专用寄存器的值来指定执行间隔。通过指定执行间隔,能够抑制优先度高的线程长时间占用资源,能够防止低优先度的线程的执行发生局部停止。在通过执行专用命令来指定执行间隔的情况下,不存在因地址设定、寄存器访问而引起的开销损耗。并且,通过预先在线程的多个位置插入上述专用命令,能够在线程内的多个命令范围中指定说明书CN102334094ACN102334110A6/15页10不同的执行间隔。对专用
32、寄存器设定执行间隔的情况下,能够在维持命令集的体系的状态下对执行间隔进行控制。0074另外,在本实施方式中,第1发行间隔抑制部201、第2发行间隔抑制部202、第3发行间隔抑制部203、第1执行间隔指定部204、第2执行间隔指定部205以及第3执行间隔指定部206分别包含减计数器,该减计数器在每当执行周期经过时使值减1。0075下面,为了方便而将3个线程称为线程A、线程B、线程C。利用第1命令解码器102、第1命令数指定部105、第1命令分组部108、第1寄存器111、第1发行间隔抑制部201和第1执行间隔指定部204来执行线程A。利用第2命令解码器103、第2命令数指定部106、第2命令分组
33、部109、第2寄存器112、第2发行间隔抑制部202和第2执行间隔指定部205来执行线程B。利用第3命令解码器104、第3命令数指定部107、第3命令分组部110、第3寄存器113、第3发行间隔抑制部203和第3执行间隔指定部206来执行线程C。0076下面,说明多线程处理器1的动作。0077图3是表示多线程处理器1的动作的流程图。0078第1命令解码器102、第2命令解码器103和第3命令解码器104分别对在命令存储器101中存储的线程A、B和C的命令流进行解码步骤S001。0079第1命令分组部108将由第1命令数指定部105指定的命令数作为上限,将在第1命令解码器102中识别出的线程A的
34、命令流分组为由能够被运算器组119同时执行的命令构成的命令组。同样,第2命令分组部109将由第2命令数指定部106指定的命令数作为上限,将在第2命令解码器103中识别出的线程B的命令流分组为由能够被运算器组119同时执行的命令构成的命令组。并且,第3命令分组部110将由第3命令数指定部107指定的命令数作为上限,将在第3命令解码器104中识别出的线程C的命令流分组为由能够被运算器组119同时执行的命令构成的命令组步骤S002。0080命令发行控制部115根据与线程选择部114保持的线程优先度相关的设定信息、和通过步骤S002的处理而被分组后的命令的信息,确定两个能够执行的线程步骤S003。在此
35、,假设线程A和C是被确定为能够执行的线程来进行以后的说明。0081线程选择器116选择线程A和C作为执行线程。此外,线程用寄存器选择器117选择与线程A和C对应的第1寄存器111和第3寄存器113。运算器组119利用在由线程用寄存器选择器117选择的寄存器第1寄存器111和第3寄存器113中存储的数据,执行由线程选择器116选择的线程线程A和C的运算步骤S004。0082线程用寄存器选择器118选择与线程用寄存器选择器117选择的寄存器相同的寄存器第1寄存器111和第3寄存器113。运算器组119将线程线程A和C的运算结果写入到线程用寄存器选择器118选择的寄存器第1寄存器111和第3寄存器1
36、13中步骤S005。0083接着,使用图4的流程图说明基于线程选择部114和命令发行控制部115的线程选择处理。0084另外,在本说明中,在从线程A发行了后述的发行间隔抑制命令的情况下,第1发行间隔抑制部201在这之后抑制禁止在两个机器周期MACHINECYCLE之间发行该发行间隔抑制命令。在此,发行间隔抑制命令是指在多个线程之间引起运算器的竞争的命令。同样,在从线程B发行了发行间隔抑制命令的情况下,第2发行间隔抑制部202在这之后抑说明书CN102334094ACN102334110A7/15页11制禁止在两个机器周期之间发行该发行间隔抑制命令。并且,在从线程C发行了发行间隔抑制命令的情况下
37、,第3发行间隔抑制部203在这之后抑制禁止在两个机器周期之间发行该发行间隔抑制命令。这样,能够只对必要最小限度的命令进行抑制。因此,能够不降低执行效率而高效率地向其它线程让出资源。0085此外,假定为,第1执行间隔指定部204指定执行周期间隔,以使得运算器组119能够在两个机器周期中执行一次线程A的命令。同样,假设为,第2执行间隔指定部205指定执行周期间隔,以使得运算器组119能够在两个机器周期中执行一次线程B的命令。并且,假设为,第3执行间隔指定部206指定执行周期间隔,以使得运算器组119能够在两个机器周期中执行一次线程C的命令。0086此外,关于线程的优先度,假设线程A最高,其次线程B
38、较高,线程C最低。0087下面,假设在关注的机器周期的前一个机器周期中执行线程A和C、且利用线程A发行了发行间隔抑制命令,来对关注的机器周期的动作进行说明。另外,将要说明的动作是第1回的动作,为了与后面叙述的第2回的动作进行区分,对各个步骤的步骤序号赋予表示第1回的“1”。在第1回开始时,假设对第1发行间隔抑制部201、第2发行间隔抑制部202和第3发行间隔抑制部203的减计数器设定了0。此外,假设对第1执行间隔指定部204、第2执行间隔指定部205和第3执行间隔指定部206的减计数器设定了0。0088线程选择部114从命令发行控制部115取得在之前的机器周期中执行的线程A和C的执行状况步骤S
39、1011。即,取得如下信息,该信息表示线程A和C的已执行已发行的命令是否是发行间隔抑制命令。在此,假设线程选择部114取得了表示线程A的已执行的命令是发行间隔抑制命令这一情况的信息。0089由于执行了线程A的发行间隔抑制命令,因而第1发行间隔抑制部201对其减计数器设定2,以作为对该发行间隔抑制命令的发行进行抑制的周期数步骤S1021。此外,由于执行了线程A和C,因而第1执行间隔指定部204和第3执行间隔指定部206对各自的减计数器的值设定1。0090由于第1执行间隔指定部204和第3执行间隔指定部206的减计数器的值是1不是0,因而线程选择部114判定为不能执行线程A和C。并且,由于第2执行
40、间隔指定部205的减计数器的值是0,因而线程选择部114判定为能够执行线程B。因此,线程选择部114只选择线程B作为执行对象线程,并通知命令发行控制部115。此外,线程选择部114将选择出的线程B的优先度最高这一情况一并进行通知步骤S1031。0091命令发行控制部115根据从线程选择部114接收到的线程B的优先度信息、和表示由第2命令分组部109进行的线程B的命令的分组结果的信息,将线程B确定为执行线程步骤S1041。0092命令发行控制部115通过对线程选择器116以及线程用寄存器选择器117和118进行操作,从第2命令分组部109向运算器组119发送线程B的命令,从而运算器组119执行线
41、程B的命令步骤S1051。0093第1发行间隔抑制部201、第2发行间隔抑制部202、第3发行间隔抑制部203、第1执行间隔指定部204、第2执行间隔指定部205和第3执行间隔指定部206将各自的减计数器的值分别减1步骤S1061。此时,在减计数器的值是0的情况下,不进行减法而保持设定为0的状态。说明书CN102334094ACN102334110A8/15页120094在每个机器周期实施以上的步骤S101S106的处理。对上述说明的下一个机器周期说明后续步骤。另外,对各个步骤的步骤序号赋予表示第2回的“2”。另外,假设线程A要再次执行发行间隔抑制命令来进行说明。0095线程选择部114从命令
42、发行控制部115取得在之前的机器周期中执行的线程B的执行状况步骤S1012。即,假设取得如下信息,该信息表示在线程B的已执行的命令中不包含发行间隔抑制命令。0096由于执行了线程B,因而第2执行间隔指定部205对减计数器设定1步骤S1022。0097由于第2执行间隔指定部205的减计数器的值是1不是0,因而线程选择部114判定为不能执行线程B。此外,由于第1执行间隔指定部204和第3执行间隔指定部206的减计数器的值是0,因而线程选择部114判定为能够执行线程A和C。因此,线程选择部114选择线程A和C作为执行对象线程,并通知命令发行控制部115。此外,线程选择部114将线程A的优先度比线程B
43、的优先度高这一情况一并通知命令发行控制部115。此外,第1发行间隔抑制部201的减计数器的值是1。因此,为了使线程A的发行间隔抑制命令不被发行,线程选择部114除了优先度信息以外、还将线程A没有发行间隔抑制命令的执行权这一情况通知命令发行控制部115步骤S1032。0098命令发行控制部115根据从线程选择部114接收到的线程A和C的优先度信息以及发行间隔抑制命令的信息、和表示由第1命令分组部108和第3命令分组部110进行的线程A和C的命令的分组结果的信息,判断为线程A是由于发行间隔抑制命令的限制而不能执行的线程,将线程C确定为执行线程步骤S1042。0099命令发行控制部115通过对线程选
44、择器116、线程用寄存器选择器117和118进行操作,从第3命令分组部110向运算器组119发送线程C的命令,从而运算器组119执行线程C的命令步骤S1052。0100第1发行间隔抑制部201、第2发行间隔抑制部202、第3发行间隔抑制部203、第1执行间隔指定部204、第2执行间隔指定部205和第3执行间隔指定部206将各自的减计数器的值分别减1步骤S1062。此时,在减计数器的值是0的情况下,不进行减法而保持设定为0的状态。0101另外,在图4的流程图中,通过多线程处理器1的电源断开或复位来结束处理。0102如以上说明的那样,根据实施方式1的多线程处理器1,即使是在线程之间竞争运算资源的情
45、况下,也能够防止在用户指定或处理器实施方面的线程间的优先度中处于劣势的线程的执行效率局部明显下降。此外,能够得到各个线程的命令数和运算器资源数的平衡,高效率地使用运算器资源。0103另外,根据本实施方式,将线程数设为3,但是不限于该值,当然能够进行各种变更,而且这些变更都包含在本发明的范围内。0104并且,根据本实施方式,将同时命令发行数上限设为3,但是不限于该值,当然能够进行各种变更,而且这些变更都包含在本发明的范围内。0105并且,根据本实施方式,将能够同时执行的线程数的上限设为2,但是不限于该值,当然能够进行各种变更,而且这些变更都包含在本发明的范围内。0106并且,根据本实施方式,将能
46、够同时执行的运算器数的上限设为4,但是不限于该说明书CN102334094ACN102334110A9/15页13值,当然能够进行各种变更,而且这些变更都包含在本发明的范围内。0107实施方式20108下面,参照附图说明本发明的实施方式2的编译器和操作系统。0109图5是表示本发明的实施方式2的编译器3的结构的框图。0110编译器3接受编程员利用C语言记述的源程序301作为输入,转换为内部的中间表现中间代码并实施了优化、资源的分配后,生成适合于目标处理器的可执行代码302。被编译器3作为目标的处理器是在实施方式1中说明的多线程处理器1。0111下面,说明本发明的编译器3的各个构成要素的详细结构
47、及其动作。另外,编译器3是一种程序,通过在具有处理器和存储器的计算机上执行用于实现编译器3的各个构成要素的程序来实现其功能。这样的程序当然能够通过CDROM等非易失性记录介质、因特网等通信网络而进行流通。0112编译器3,作为在计算机上被执行的情况下发挥作用的处理部,具有句法分析PARSER部31、优化部32和代码生成部33。编译器3通过使计算机作为这些处理部而发挥作用,能够使计算机作为编译器装置进行动作。0113句法分析部31对输入到编译器3的源程序301提取保留字关键字等并进行词法分析和语法分析,根据固定规则将各个语句转换为中间代码。0114优化部32对所输入的中间代码实施冗余去除、命令调
48、度或寄存器分配等优化处理。0115代码生成部33,对于从优化部32输出的中间代码,通过参照在内部保持的转换表等,将全部代码置换为机器语言代码。由此,生成可执行代码302。0116优化部32具有多线程执行控制指示解释部321、命令调度部322、执行状态检测代码生成部323和执行控制代码生成部324。命令调度部322具有响应性确保调度部3221。0117多线程执行控制指示解释部321受理由编程员进行的用于控制多线程执行的指示,作为编译选项COMPILEOPTION、PRAGMA指令PRAGMA或内部函数INTRINSICFUNCTION。多线程执行控制指示解释部321将所受理的指示存储到中间代码中
49、,并传递给后级的命令调度部322等。0118图6是表示多线程执行控制指示解释部321受理的用于多线程执行控制的指示的一览的图。下面,关于图6所示的各个指示,参照使用该指示的源程序301的示例进行说明。0119参照图7,“关注区间指示”利用“PRAGMA_FOCUSBEGIN”和“PRAGMA_FOCUSEND”将相比其它线程应该关注的源程序301中的区间包围起来从而进行指定。根据该指示,编译器3进行控制,以使得重点对该区间分配处理器周期、运算资源。0120参照图8,“非关注区间指示”利用“PRAGMA_UNFOCUSBEGIN”和“PRAGMA_UNFOCUSEND”将相比其它线程不怎么需要关注的源程序301中的区间包围起来从而进行指定。根据该指示,编译器3进行控制,以使得不怎么对该区间分配处理器周期、运算资源。0121参照图9,“命令并行度指示”用于指定源程序301中被“PRAGMAILPNUMBEGIN”和“PRAGMAILPEND”包围起来的区间的命令并行度。对NUM部分指定13中的任意一个数字,编译器3生成用于设定所指定的动作模式的代码,并实施假设了所指定的命令并行度的命令调度。图9示出了对NUM指定“3”的命令并行度指示。即,指定“3”作为由“PRAGMAILP3BEGIN”和“PRAGMAILPEND
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1