多线程处理器、编译器装置及操作系统装置.pdf

上传人:n****g 文档编号:1036373 上传时间:2018-03-27 格式:PDF 页数:35 大小:1.06MB
返回 下载 相关 举报
摘要
申请专利号:

CN201080009472.3

申请日:

2010.03.18

公开号:

CN102334094A

公开日:

2012.01.25

当前法律状态:

授权

有效性:

有权

法律详情:

专利权的转移IPC(主分类):G06F 9/38登记生效日:20151117变更事项:专利权人变更前权利人:松下电器产业株式会社变更后权利人:株式会社索思未来变更事项:地址变更前权利人:日本大阪府变更后权利人:日本神奈川县|||授权|||实质审查的生效IPC(主分类):G06F 9/38申请日:20100318|||公开

IPC分类号:

G06F9/38; G06F9/46

主分类号:

G06F9/38

申请人:

松下电器产业株式会社

发明人:

古贺义宏; 瓶子岳人

地址:

日本大阪府

优先权:

2009.05.28 JP 129607/2009

专利代理机构:

永新专利商标代理有限公司 72002

代理人:

徐殿军

PDF下载: PDF下载
内容摘要

一种并行执行多个线程的命令的多线程处理器(1),具有:由分别执行命令的多个运算器构成的运算器组(119);第1命令分组部(108)~第3命令分组部(110),按照每个线程,将该线程所包含的命令分组为由能够由上述多个运算器同时执行的命令构成的组;线程选择部(114),通过控制多个线程的命令的执行频度,从而按照多线程处理器(1)的每个执行周期,从多个线程中选择含有对多个运算器发行的命令的线程;以及命令发行部(115),按照多线程处理器(1)的每个执行周期,对多个运算器发行由线程选择部(114)选择的线程所包含的命令中、被分组后的组的命令。

权利要求书

1: 一种多线程处理器, 并行执行多个线程的命令, 具有 : 分别执行命令的多个运算器 ; 分组部, 按照每个线程, 将该线程所包含的命令分组为由能够由上述多个运算器同时 执行的命令构成的组 ; 线程选择部, 通过控制上述多个线程的命令的执行频度, 从而按照上述多线程处理器 的每个执行周期, 从上述多个线程中选择含有对上述多个运算器发行的命令的线程 ; 以及 命令发行部, 按照上述多线程处理器的每个执行周期, 对上述多个运算器发行如下命 令, 即: 由上述线程选择部选择的上述线程所包含的命令中、 由上述分组部进行分组而得到 的组的命令。
2: 根据权利要求 1 所述的多线程处理器, 其中, 上述多线程处理器还具有命令数指定部, 该命令数指定部按照每个线程来指定由上述 分组部进行分组的上述组所包含的命令的最大个数, 上述分组部以不超过由上述命令数指定部指定的上述命令的最大个数的方式对命令 进行分组。
3: 根据权利要求 2 所述的多线程处理器, 其中, 上述命令数指定部按照在寄存器中设定的值来指定上述最大个数。
4: 根据权利要求 2 所述的多线程处理器, 其中, 上述命令数指定部按照上述多个线程所包含的用于指定上述最大个数的命令来指定 上述最大个数。
5: 根据权利要求 1 ~ 4 中任意一项所述的多线程处理器, 其中, 上述线程选择部具有执行间隔指定部, 该执行间隔指定部对上述多个线程分别指定在 上述多个运算器中的命令的执行周期间隔, 上述线程选择部按照由上述执行间隔指定部指 定的执行周期间隔来选择上述线程。
6: 根据权利要求 5 所述的多线程处理器, 其中, 上述执行间隔指定部按照在寄存器中设定的值来指定上述执行周期间隔。
7: 根据权利要求 5 所述的多线程处理器, 其中, 上述执行间隔指定部按照上述多个线程所包含的用于指定上述执行周期间隔的命令 来指定上述执行周期间隔。
8: 根据权利要求 1 ~ 7 中任意一项所述的多线程处理器, 其中, 上述线程选择部具有发行间隔抑制部, 该发行间隔抑制部针对发行了在多个线程之间 引起运算器竞争的命令的线程来进行抑制, 以使得引起上述竞争的命令在固定的执行周期 数内无法执行。
9: 一种编译器装置, 将源程序转换为可执行代码, 适合于将多个线程的命令并行执行 的多线程处理器, 该编译器装置具有 : 指示取得部, 取得与多线程控制相关的编程员的指示 ; 以及 控制代码生成部, 根据上述指示来生成对处理器的执行模式进行控制的代码。
10: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得对并行执行进行关注的指示。 2
11: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得不对并行执行进行关注的指示。
12: 根据权利要求 10 或 11 所述的编译器装置, 其中, 上述控制代码生成部根据上述指示来生成使运算器数增减的代码。
13: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得关于命令并行度的指示, 上述控制代码生成部生成按上述命令并行度来执行线程的代码。
14: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得关于线程的执行数的指示。
15: 根据权利要求 14 所述的编译器装置, 其中, 上述指示取得部取得关于单线程执行的指示。
16: 根据权利要求 14 或 15 所述的编译器装置, 其中, 上述控制代码生成部根据上述指示来生成对线程的执行数进行控制的代码。
17: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得与线程的响应性的确保相关的指示。
18: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得与产生停顿周期的频度相关的指示。
19: 根据权利要求 9 所述的编译器装置, 其中, 上述指示取得部取得与运算器资源的释放相关的指示。
20: 根据权利要求 17 ~ 19 中任意一项所述的编译器装置, 其中, 上述控制代码生成部根据上述指示来生成按固定频度插入停顿周期的代码。
21: 根据权利要求 17 ~ 19 中任意一项所述的编译器装置, 其中, 上述控制代码生成部根据上述指示来生成按固定频度释放运算器资源的代码。
22: 根据权利要求 9 ~ 21 中任意一项所述的编译器装置, 其中, 上述指示是指针对上述源程序中的固定区间的指示。
23: 一种编译器装置, 将源程序转换为可执行代码, 适合于将多个线程的命令并行执行 的多线程处理器, 该编译器装置具有用于检测处理的紧迫度的接口。
24: 根据权利要求 23 所述的编译器装置, 其中, 上述接口是对使周期计数开始的地点进行指示的接口。
25: 根据权利要求 23 所述的编译器装置, 其中, 上述接口是对上述紧迫度的测定地点中的周期数的期待值进行输入的接口。
26: 根据权利要求 25 所述的编译器装置, 其中, 上述接口是返回根据上述期待值和实际周期数导出的紧迫度的接口。
27: 根据权利要求 23 ~ 26 中任意一项所述的编译器装置, 其中, 上述编译器装置还具有代码生成部, 该代码生成部生成与上述紧迫度对应的处理。
28: 根据权利要求 27 所述的编译器装置, 其中, 上述代码生成部按照上述紧迫度来生成使运算器资源增减的代码。
29: 根据权利要求 27 所述的编译器装置, 其中, 3 上述代码生成部按照上述紧迫度来生成使命令并行度增减的代码。
30: 根据权利要求 23 ~ 27 中任意一项所述的编译器装置, 其中, 上述接口通过编译器装置的内部函数而实现。
31: 一种操作系统装置, 适合于将多个线程的命令并行执行的多线程处理器, 该操作系统装置具有系统代码处理部, 该系统代码处理部根据与多线程控制相关的编 程员的指示来处理系统调用, 该系统调用使得处理器的执行模式能够控制。
32: 根据权利要求 31 所述的操作系统装置, 其中, 上述系统调用是与命令并行度相关的系统调用。
33: 根据权利要求 31 所述的操作系统装置, 其中, 上述系统调用是与线程的执行数相关的系统调用。
34: 根据权利要求 31 所述的操作系统装置, 其中, 上述系统调用是与周期计数相关的系统调用。
35: 根据权利要求 31 所述的操作系统装置, 其中, 上述系统调用是实施与紧迫度对应的处理的系统调用。

说明书


多线程处理器、 编译器装置及操作系统装置

    【技术领域】
     本发明涉及并行执行多个线程 (thread) 的多线程处理器等, 尤其涉及通过控制 各个线程所包含的命令的执行定时来提高各个线程的执行效率的多线程处理器等。背景技术
     近年来, 在 AV(Audio/Visual) 处理的领域中, 连续发表了新的编解码器 (codec) 或新规格等, 基于软件的 AV 处理的需求日益提高。因此, 在 AV 系统等中要求的处理器性能 也飞跃性提高。 并且, 对应于所执行的软件的多任务化, 开发了许多采用同时执行多个线程 的多线程技术的多线程处理器。
     在现有的多线程处理器中, 公知有以下技术, 即: 按照处理器的每个执行周期来切 换执行的线程的细粒度多线程 (Fine-Grained Multithreading)( 例如, 参照专利文献 1), 或者以 Intel 公司的超线程技术为代表的、 在执行周期内同时执行多个线程的同步多线程 (Simultaneous Multithreading : SMT)( 例如, 参照非专利文献 1) 等。
     现有技术文献
     专利文献
     专利文献 1 : 日本特开 2008-123045 号公报 ( 图 6 等 )
     非专利文献
     非专利文献 1 : Intel 社ハイパ一スレツデイング·テクノロジ一 ( 平成 21 年 2 月 16 日检索 )、 网址 发明概要 发明要解决的问题
     但是, 在现有的多线程处理器中, 当在线程之间竞争运算资源的情况下, 用户指定 或处理器实施方面的线程的优先度中处于劣势的其它线程的执行效率存在局部明显下降 的情况。
     并且, 在各个线程的命令数与运算器资源数的平衡较差的情况下, 有可能不能得 到在多线程动作中期待的那样的执行效率。例如, 针对具有能够同时执行 4 个命令的运算 器资源的处理器、 想要连续发行分别包含在两个线程中的 2 个命令和 3 个命令时, 两个线程 的合计命令数是 5。因此, 不能同时执行这两个线程而只执行某一个线程的命令。因此, 导 致一个或两个运算器资源不被使用而造成浪费, 存在线程的执行效率降低的问题。
     发明内容
     本发明是为了解决上述问题而提出的, 其目的在于, 提供线程的执行效率高的多 线程处理器、 以及适合于该多重处理器的编译器装置和操作系统装置。
     用于解决问题的手段
     本发明的某个方面的多线程处理器, 并行执行多个线程的命令, 具有 : 分别执行命令的多个运算器 ; 分组部, 按照每个线程, 将该线程所包含的命令分组为由能够由上述多个 运算器同时执行的命令构成的组 ; 线程选择部, 通过控制上述多个线程的命令的执行频度, 从而按照上述多线程处理器的每个执行周期, 从上述多个线程中选择含有对上述多个运算 器发行的命令的线程 ; 以及命令发行部, 按照上述多线程处理器的每个执行周期, 对上述多 个运算器发行如下命令, 即: 由上述线程选择部选择的上述线程所包含的命令中、 由上述分 组部进行分组而得到的组的命令。
     根据这种结构, 通过控制多个线程的执行频度, 能够防止在用户指定或处理器实 施方面的线程之间的优先度中处于劣势的线程的执行效率局部明显下降。此外, 能够控制 多个线程的执行频度以使得运算器资源能够有效利用, 能够获得各个线程的命令数和运算 器资源数的平衡, 高效率地使用运算器资源。 由此, 能够提供线程的执行效率高的多线程处 理器。
     优选为, 上述多线程处理器还具有命令数指定部, 该命令数指定部按照每个线程 来指定由上述分组部进行分组的上述组所包含的命令的最大个数, 上述分组部以不超过由 上述命令数指定部指定的上述命令的最大个数的方式对命令进行分组。
     根据这种结构, 能够获得各个线程的命令数和运算器资源数的平衡, 高效率地使 用运算器资源。 另外, 优选为, 上述命令数指定部按照在寄存器中设定的值来指定上述最大个数。
     根据这种结构, 通过在维持命令集体系的状态下利用程序来更新寄存器的设定 值, 能够按程序的每个任意的范围来控制上述最大个数, 优化执行效率。
     并且, 也可以是, 上述命令数指定部按照上述多个线程所包含的用于指定上述最 大个数的命令来指定上述最大个数。
     根据这种结构, 与按照在寄存器中设定的值来指定最大个数的情况相比, 能够与 能够削减的地址设定和存储器访问相应地更高速地变更设定。此外, 能够不必在意开销损 耗而与能够高速地变更设定相应地按程序的更详细的每个任意的范围来控制上述最大个 数, 优化执行效率。
     另外, 优选为, 上述线程选择部具有执行间隔指定部, 该执行间隔指定部对上述多 个线程分别指定在上述多个运算器中的命令的执行周期间隔, 上述线程选择部按照由上述 执行间隔指定部指定的执行周期间隔来选择上述线程。
     根据这种结构, 能够抑制优先度较高的线程长时间占用资源, 能够防止优先度较 低的线程的执行局部停止。
     另外, 优选为, 上述执行间隔指定部按照在寄存器中设定的值来指定上述执行周 期间隔。
     根据这种结构, 通过在维持命令集体系的状态下利用程序来更新寄存器的设定 值, 能够按程序的每个任意的范围来抑制资源占用, 提高其它线程的执行效率。
     并且, 也可以是, 上述执行间隔指定部按照上述多个线程所包含的用于指定上述 执行周期间隔的命令来指定上述执行周期间隔。
     根据这种结构, 与按照在寄存器中设定的值来指定执行周期间隔的情况相比, 能 够与能够削减的地址设定、 存储器访问相应地更高速地变更设定。 此外, 能够不必在意开销 损耗而与能够高速地变更设定相应地按程序的更详细的每个任意的范围来抑制资源占用,
     提高其它线程的执行效率。
     另外, 优选为, 上述线程选择部具有发行间隔抑制部, 该发行间隔抑制部针对发行 了在多个线程之间引起运算器竞争的命令的线程来进行抑制, 以使得引起上述竞争的命令 在固定的执行周期数内无法执行。
     根据这种结构, 与唯一地抑制执行周期的方法不同, 能够只对最小必要限度的命 令进行抑制。因此, 能够不降低执行效率并高效率地向其它线程让出资源。
     本发明的另一个方面的编译器装置, 将源程序转换为可执行代码, 适合于将多个 线程的命令并行执行的多线程处理器, 该编译器装置具有 : 指示取得部, 取得与多线程控制 相关的编程员的指示 ; 以及控制代码生成部, 根据上述指示来生成对处理器的执行模式进 行控制的代码。
     根据这种结构, 能够按照与多线程控制相关的编程员的指示来控制处理器的执行 模式。因此, 能够生成适合于线程执行效率高的多线程处理器的代码。
     本发明的另一个方面的操作系统装置, 适合于将多个线程的命令并行执行的多线 程处理器, 该操作系统装置具有系统代码处理部, 该系统代码处理部根据与多线程控制相 关的编程员的指示来处理系统调用, 该系统调用使得处理器的执行模式能够控制。 根据这种结构, 能够按照与多线程控制相关的编程员的指示来控制处理器的执行 模式。因此, 能够处理适合于线程执行效率高的多线程处理器的系统调用。
     另外, 本发明不仅能够实现为这样的具有特征性的处理部的多线程处理器, 而且 也能够实现为将多线程处理器所包含的特征性的处理部作为步骤的信息处理方法。此外, 还能够实现为使计算机执行信息处理方法所包含的特征性步骤的程序。并且, 这种程序当 然能够通过 CD-ROM(Compact Disc-Read Only Memory) 等非易失性记录介质、 因特网等通 信网络而进行流通。
     发明效果
     根据本发明的多线程处理器等, 即使是在线程之间竞争运算资源的情况下, 也能 够防止在用户指定及处理器实施方面的线程之间的优先度中处于劣势的线程的执行效率 局部明显下降。 此外, 能够得到各个线程的命令数和运算器资源数的平衡, 高效率地使用运 算器资源。由此, 能够提供线程的执行效率高的多线程处理器。
     附图说明 图 1 是本发明的实施方式 1 的多线程处理器的框图。
     图 2 是本发明的实施方式 1 的线程选择部的框图。
     图 3 是表示本发明的实施方式 1 的多线程处理器的动作的流程图。
     图 4 是本发明的实施方式 1 的线程选择处理的流程图。
     图 5 是表示本发明的实施方式 2 的编译器的结构的框图。
     图 6 是表示本发明的实施方式 2 的编译器能够受理的用于多线程的控制的指示的 一览的图。
     图 7 是表示使用了 “关注区间指示” 的源程序的一例的图。
     图 8 是表示使用了 “非关注区间指示” 的源程序的一例的图。
     图 9 是表示使用了 “命令并行度指示” 的源程序的一例的图。
     图 10 是表示使用了 “多线程执行模式指示” 的源程序的一例的图。 图 11 是表示使用了 “响应性确保区间指示” 的源程序的一例的图。 图 12 是表示使用了 “停顿插入频度指示” 的源程序的一例的图。 图 13 是表示使用了 “运算器释放频度指示” 的源程序的一例的图。 图 14 是表示使用了 “紧迫度检测指示” 的源程序的一例的图。 图 15 是表示使用了 “执行周期期待值指示” 的源程序的一例的图。 图 16 是表示本发明的实施方式 2 的操作系统的结构的框图。具体实施方式
     下面, 参照附图说明多线程处理器等的实施方式。 另外, 在实施方式中标注了相同 标号的构成要素进行同样的动作, 因而有时省略重复说明。
     ( 实施方式 1)
     在本实施方式中, 说明通过命令执行控制来提高命令执行效率的多线程处理器、 命令数的限制、 限制的命令数的基于寄存器的指定、 限制的命令数的基于命令的指定、 执行 周期数间隔的指定、 执行周期数间隔的基于寄存器的指定、 执行周期数间隔的基于命令的 指定、 存在资源制约的命令的发行间隔的抑制。 图 1 是表示本实施方式的多线程处理器的结构的框图。另外, 在本实施方式中, 假 定是能够并行执行 3 个线程的多线程处理器。
     多线程处理器 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、 线程选择部 114、 命令发行控制部 115、 线程选择器 (thread selector)116、 线程用寄存器选择器 117 ~ 118、 以及运算器组 119。
     命令存储器 101 是对在多线程处理器 1 中执行的命令进行保持的存储器, 保持 3 个独立执行的线程的命令流。
     第 1 命令解码器 102、 第 2 命令解码器 103 和第 3 命令解码器 104 从命令存储器 101 读出彼此不同的线程的命令, 并对读出的命令进行解码。
     第 1 命令数指定部 105、 第 2 命令数指定部 106 和第 3 命令数指定部 107 分别指定 如下命令数, 即: 将由第 1 命令解码器 102、 第 2 命令解码器 103 和第 3 命令解码器 104 解码 后的命令分组为能够同时执行的命令组时的、 能够同时执行的命令数。 在本实施方式中, 将 命令数的上限设为 3 来进行说明。关于指定命令数的方法, 可以是, 将用于指定命令数的专 用命令包含在各个线程的命令流中, 通过执行该专用命令来指定命令数。或者, 也可以是, 设置对命令数进行设定的专用寄存器, 由各个线程的命令流而变更专用寄存器的值来指定 命令数。
     在通过执行专用命令来指定命令数的情况下, 不存在因地址设定、 寄存器访问而 引起的开销损耗 (overhead loss)。因此, 能够高速地实现命令数的变更。此外, 通过预 先在线程的多个位置插入上述专用命令, 能够在线程内的多个命令范围中指定不同的命令 数。对专用寄存器来设定命令数的情况下, 能够在维持命令集 (instruction set) 的体系 的状态下对同时执行的命令数进行控制。
     通过与运算器资源的数量、 能够同时执行的线程数的平衡相应地变更命令数的指 定, 能够提高命令执行效率。例如, 在运算器是 4 个、 能够同时执行的线程数是 2 个的情况 下, 如果预先将命令数的上限设为 2, 则两个线程各使用两个运算器。 但是, 如果预先将命令 数的上限设为 3, 则对于各个线程, 最大将 3 个命令分组到一个命令组。因此, 例如, 在两个 线程中、 一个线程的命令组所包含的命令数是 3 而另一个线程的命令组所包含的命令数是 2 的情况下, 则只能执行某一个线程, 产生未使用的运算器, 因此导致线程的执行效率下降。
     第 1 命令分组部 108、 第 2 命令分组部 109 和第 3 命令分组部 110 将由第 1 命令解 码器 102、 第 2 命令解码器 103 和第 3 命令解码器 104 分别解码后的命令分组为能够同时执 行的命令组。另外, 在进行分组时, 以不超过由第 1 命令数指定部 105、 第 2 命令数指定部 106 和第 3 命令数指定部 107 设定的命令数的方式进行命令的分组。
     第 1 寄存器 111、 第 2 寄存器 112 和第 3 寄存器 113 是在基于各个线程的命令的运 算时使用的寄存器堆 (register file)。
     线程选择部 114 保持与线程优先度相关的设定信息, 根据线程的执行状况来选择 执行的线程。假设线程优先度是预先设定的。
     命令发行控制部 115 控制线程选择器 116、 线程用寄存器选择器 117 和 118, 以便 对运算器组 119 发行由线程选择部 114 选择的线程。此外, 命令发行控制部 115 将与已对 运算器组 119 发行的线程相关的发行命令信息通知线程选择部 114。 另外, 本实施方式中将 能够同时执行的线程数设为 2。
     线程选择器 116 是按照命令发行控制部 115 的指示来选择执行线程 ( 由运算器组 119 执行命令的线程 ) 的选择器。
     线程用寄存器选择器 117 ~ 118 是与线程选择器 116 同样地按照命令发行控制部 115 的指示来选择与执行线程成套的寄存器的选择器。
     运算器组 119 包含加法器或乘法器等多个运算器。在本实施方式中, 将能够同时 执行的运算器数量设为 4。
     图 2 是表示图 1 所示的线程选择部 114 的具体结构的框图。
     线程选择部 114 具有第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202、 第3发 行间隔抑制部 203、 第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 和第 3 执行间隔指 定部 206。
     第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202 和第 3 发行间隔抑制部 203 分 别进行控制, 以使得在从所分配的线程发行了由于运算器组 119 的运算器数量限制等而不 能同时执行的命令的情况下, 在此后的固定期间中不对该线程发行该命令。
     第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 和第 3 执行间隔指定部 206 分 别指定线程的执行间隔, 以使得按照固定间隔来执行所分配的线程。关于指定执行间隔的 方法, 可以是, 将用于指定执行间隔的专用命令包含在各个线程的命令流中, 通过执行该专 用命令来指定执行间隔。或者, 也可以是, 设置对执行间隔进行设定的专用寄存器, 由各个 线程的命令流而变更专用寄存器的值来指定执行间隔。通过指定执行间隔, 能够抑制优先 度高的线程长时间占用资源, 能够防止低优先度的线程的执行发生局部停止。在通过执行 专用命令来指定执行间隔的情况下, 不存在因地址设定、 寄存器访问而引起的开销损耗。 并 且, 通过预先在线程的多个位置插入上述专用命令, 能够在线程内的多个命令范围中指定不同的执行间隔。对专用寄存器设定执行间隔的情况下, 能够在维持命令集的体系的状态 下对执行间隔进行控制。
     另外, 在本实施方式中, 第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202、 第3 发行间隔抑制部 203、 第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 以及第 3 执行间 隔指定部 206 分别包含减计数器, 该减计数器在每当执行周期经过时使值减 1。
     下面, 为了方便而将 3 个线程称为线程 A、 线程 B、 线程 C。 利用第 1 命令解码器 102、 第 1 命令数指定部 105、 第 1 命令分组部 108、 第 1 寄存器 111、 第 1 发行间隔抑制部 201 和 第 1 执行间隔指定部 204 来执行线程 A。利用第 2 命令解码器 103、 第 2 命令数指定部 106、 第 2 命令分组部 109、 第 2 寄存器 112、 第 2 发行间隔抑制部 202 和第 2 执行间隔指定部 205 来执行线程 B。利用第 3 命令解码器 104、 第 3 命令数指定部 107、 第 3 命令分组部 110、 第 3 寄存器 113、 第 3 发行间隔抑制部 203 和第 3 执行间隔指定部 206 来执行线程 C。
     下面, 说明多线程处理器 1 的动作。
     图 3 是表示多线程处理器 1 的动作的流程图。
     第 1 命令解码器 102、 第 2 命令解码器 103 和第 3 命令解码器 104 分别对在命令存 储器 101 中存储的线程 A、 B 和 C 的命令流进行解码 ( 步骤 S001)。 第 1 命令分组部 108 将由第 1 命令数指定部 105 指定的命令数作为上限, 将在第 1 命令解码器 102 中识别出的线程 A 的命令流分组为由能够被运算器组 119 同时执行的命 令构成的命令组。同样, 第 2 命令分组部 109 将由第 2 命令数指定部 106 指定的命令数作 为上限, 将在第 2 命令解码器 103 中识别出的线程 B 的命令流分组为由能够被运算器组 119 同时执行的命令构成的命令组。并且, 第 3 命令分组部 110 将由第 3 命令数指定部 107 指 定的命令数作为上限, 将在第 3 命令解码器 104 中识别出的线程 C 的命令流分组为由能够 被运算器组 119 同时执行的命令构成的命令组 ( 步骤 S002)。
     命令发行控制部 115 根据与线程选择部 114 保持的线程优先度相关的设定信息、 和通过步骤 S002 的处理而被分组后的命令的信息, 确定两个能够执行的线程 ( 步骤 S003)。 在此, 假设线程 A 和 C 是被确定为能够执行的线程来进行以后的说明。
     线程选择器 116 选择线程 A 和 C 作为执行线程。此外, 线程用寄存器选择器 117 选择与线程 A 和 C 对应的第 1 寄存器 111 和第 3 寄存器 113。运算器组 119 利用在由线程 用寄存器选择器 117 选择的寄存器 ( 第 1 寄存器 111 和第 3 寄存器 113) 中存储的数据, 执 行由线程选择器 116 选择的线程 ( 线程 A 和 C) 的运算 ( 步骤 S004)。
     线程用寄存器选择器 118 选择与线程用寄存器选择器 117 选择的寄存器相同的寄 存器 ( 第 1 寄存器 111 和第 3 寄存器 113)。运算器组 119 将线程 ( 线程 A 和 C) 的运算结 果写入到线程用寄存器选择器 118 选择的寄存器 ( 第 1 寄存器 111 和第 3 寄存器 113) 中 ( 步骤 S005)。
     接着, 使用图 4 的流程图说明基于线程选择部 114 和命令发行控制部 115 的线程 选择处理。
     另外, 在本说明中, 在从线程 A 发行了后述的发行间隔抑制命令的情况下, 第1发 行间隔抑制部 201 在这之后抑制 ( 禁止 ) 在两个机器周期 (machine cycle) 之间发行该发 行间隔抑制命令。 在此, 发行间隔抑制命令是指在多个线程之间引起运算器的竞争的命令。 同样, 在从线程 B 发行了发行间隔抑制命令的情况下, 第 2 发行间隔抑制部 202 在这之后抑
     制 ( 禁止 ) 在两个机器周期之间发行该发行间隔抑制命令。并且, 在从线程 C 发行了发行 间隔抑制命令的情况下, 第 3 发行间隔抑制部 203 在这之后抑制 ( 禁止 ) 在两个机器周期 之间发行该发行间隔抑制命令。这样, 能够只对必要最小限度的命令进行抑制。因此, 能够 不降低执行效率而高效率地向其它线程让出资源。
     此外, 假定为, 第 1 执行间隔指定部 204 指定执行周期间隔, 以使得运算器组 119 能够在两个机器周期中执行一次线程 A 的命令。同样, 假设为, 第 2 执行间隔指定部 205 指 定执行周期间隔, 以使得运算器组 119 能够在两个机器周期中执行一次线程 B 的命令。并 且, 假设为, 第 3 执行间隔指定部 206 指定执行周期间隔, 以使得运算器组 119 能够在两个 机器周期中执行一次线程 C 的命令。
     此外, 关于线程的优先度, 假设线程 A 最高, 其次线程 B 较高, 线程 C 最低。
     下面, 假设在关注的机器周期的前一个机器周期中执行线程 A 和 C、 且利用线程 A 发行了发行间隔抑制命令, 来对关注的机器周期的动作进行说明。 另外, 将要说明的动作是 第 1 回的动作, 为了与后面叙述的第 2 回的动作进行区分, 对各个步骤的步骤序号赋予表示 第 1 回的 “-1” 。 在第 1 回开始时, 假设对第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202 和第 3 发行间隔抑制部 203 的减计数器设定了 0。此外, 假设对第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 和第 3 执行间隔指定部 206 的减计数器设定了 0。 线程选择部 114 从命令发行控制部 115 取得在之前的机器周期中执行的线程 A 和 C 的执行状况 ( 步骤 S101-1)。即, 取得如下信息, 该信息表示线程 A 和 C 的已执行 ( 已发 行 ) 的命令是否是发行间隔抑制命令。在此, 假设线程选择部 114 取得了表示线程 A 的已 执行的命令是发行间隔抑制命令这一情况的信息。
     由于执行了线程 A 的发行间隔抑制命令, 因而第 1 发行间隔抑制部 201 对其减计 数器设定 2, 以作为对该发行间隔抑制命令的发行进行抑制的周期数 ( 步骤 S102-1)。此 外, 由于执行了线程 A 和 C, 因而第 1 执行间隔指定部 204 和第 3 执行间隔指定部 206 对各 自的减计数器的值设定 1。
     由于第 1 执行间隔指定部 204 和第 3 执行间隔指定部 206 的减计数器的值是 1 不 是 0, 因而线程选择部 114 判定为不能执行线程 A 和 C。并且, 由于第 2 执行间隔指定部 205 的减计数器的值是 0, 因而线程选择部 114 判定为能够执行线程 B。因此, 线程选择部 114 只选择线程 B 作为执行对象线程, 并通知命令发行控制部 115。此外, 线程选择部 114 将选 择出的线程 B 的优先度最高这一情况一并进行通知 ( 步骤 S103-1)。
     命令发行控制部 115 根据从线程选择部 114 接收到的线程 B 的优先度信息、 和表 示由第 2 命令分组部 109 进行的线程 B 的命令的分组结果的信息, 将线程 B 确定为执行线 程 ( 步骤 S104-1)。
     命令发行控制部 115 通过对线程选择器 116 以及线程用寄存器选择器 117 和 118 进行操作, 从第 2 命令分组部 109 向运算器组 119 发送线程 B 的命令, 从而运算器组 119 执 行线程 B 的命令 ( 步骤 S105-1)。
     第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202、 第 3 发行间隔抑制部 203、 第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 和第 3 执行间隔指定部 206 将各自的减计 数器的值分别减 1( 步骤 S106-1)。 此时, 在减计数器的值是 0 的情况下, 不进行减法而保持 设定为 0 的状态。
     在每个机器周期实施以上的步骤 S101 ~ S106 的处理。对上述说明的下一个机器 周期说明后续步骤。另外, 对各个步骤的步骤序号赋予表示第 2 回的 “-2” 。另外, 假设线程 A 要再次执行发行间隔抑制命令来进行说明。
     线程选择部 114 从命令发行控制部 115 取得在之前的机器周期中执行的线程 B 的 执行状况 ( 步骤 S101-2)。即, 假设取得如下信息, 该信息表示在线程 B 的已执行的命令中 不包含发行间隔抑制命令。
     由 于 执 行 了 线 程 B, 因 而 第 2 执 行 间 隔 指 定 部 205 对 减 计 数 器 设 定 1( 步 骤 S102-2)。
     由于第 2 执行间隔指定部 205 的减计数器的值是 1 不是 0, 因而线程选择部 114 判 定为不能执行线程 B。此外, 由于第 1 执行间隔指定部 204 和第 3 执行间隔指定部 206 的减 计数器的值是 0, 因而线程选择部 114 判定为能够执行线程 A 和 C。 因此, 线程选择部 114 选 择线程 A 和 C 作为执行对象线程, 并通知命令发行控制部 115。此外, 线程选择部 114 将线 程 A 的优先度比线程 B 的优先度高这一情况一并通知命令发行控制部 115。此外, 第 1 发行 间隔抑制部 201 的减计数器的值是 1。因此, 为了使线程 A 的发行间隔抑制命令不被发行, 线程选择部 114 除了优先度信息以外、 还将线程 A 没有发行间隔抑制命令的执行权这一情 况通知命令发行控制部 115( 步骤 S103-2)。 命令发行控制部 115 根据从线程选择部 114 接收到的线程 A 和 C 的优先度信息以 及发行间隔抑制命令的信息、 和表示由第 1 命令分组部 108 和第 3 命令分组部 110 进行的 线程 A 和 C 的命令的分组结果的信息, 判断为线程 A 是由于发行间隔抑制命令的限制而不 能执行的线程, 将线程 C 确定为执行线程 ( 步骤 S104-2)。
     命令发行控制部 115 通过对线程选择器 116、 线程用寄存器选择器 117 和 118 进行 操作, 从第 3 命令分组部 110 向运算器组 119 发送线程 C 的命令, 从而运算器组 119 执行线 程 C 的命令 ( 步骤 S105-2)。
     第 1 发行间隔抑制部 201、 第 2 发行间隔抑制部 202、 第 3 发行间隔抑制部 203、 第 1 执行间隔指定部 204、 第 2 执行间隔指定部 205 和第 3 执行间隔指定部 206 将各自的减计 数器的值分别减 1( 步骤 S106-2)。 此时, 在减计数器的值是 0 的情况下, 不进行减法而保持 设定为 0 的状态。
     另外, 在图 4 的流程图中, 通过多线程处理器 1 的电源断开或复位来结束处理。
     如以上说明的那样, 根据实施方式 1 的多线程处理器 1, 即使是在线程之间竞争运 算资源的情况下, 也能够防止在用户指定或处理器实施方面的线程间的优先度中处于劣势 的线程的执行效率局部明显下降。此外, 能够得到各个线程的命令数和运算器资源数的平 衡, 高效率地使用运算器资源。
     另外, 根据本实施方式, 将线程数设为 3, 但是不限于该值, 当然能够进行各种变 更, 而且这些变更都包含在本发明的范围内。
     并且, 根据本实施方式, 将同时命令发行数上限设为 3, 但是不限于该值, 当然能够 进行各种变更, 而且这些变更都包含在本发明的范围内。
     并且, 根据本实施方式, 将能够同时执行的线程数的上限设为 2, 但是不限于该值, 当然能够进行各种变更, 而且这些变更都包含在本发明的范围内。
     并且, 根据本实施方式, 将能够同时执行的运算器数的上限设为 4, 但是不限于该
     值, 当然能够进行各种变更, 而且这些变更都包含在本发明的范围内。
     ( 实施方式 2)
     下面, 参照附图说明本发明的实施方式 2 的编译器和操作系统。
     图 5 是表示本发明的实施方式 2 的编译器 3 的结构的框图。
     编译器 3 接受编程员利用 C 语言记述的源程序 301 作为输入, 转换为内部的中间 表现 ( 中间代码 ) 并实施了优化、 资源的分配后, 生成适合于目标处理器的可执行代码 302。 被编译器 3 作为目标的处理器是在实施方式 1 中说明的多线程处理器 1。
     下面, 说明本发明的编译器 3 的各个构成要素的详细结构及其动作。另外, 编译器 3 是一种程序, 通过在具有处理器和存储器的计算机上执行用于实现编译器 3 的各个构成 要素的程序来实现其功能。这样的程序当然能够通过 CD-ROM 等非易失性记录介质、 因特网 等通信网络而进行流通。
     编译器 3, 作为在计算机上被执行的情况下发挥作用的处理部, 具有句法分析 (parser) 部 31、 优化部 32 和代码生成部 33。编译器 3 通过使计算机作为这些处理部而发 挥作用, 能够使计算机作为编译器装置进行动作。
     句法分析部 31 对输入到编译器 3 的源程序 301 提取保留字 ( 关键字 ) 等并进行 词法分析和语法分析, 根据固定规则将各个语句转换为中间代码。
     优化部 32 对所输入的中间代码实施冗余去除、 命令调度或寄存器分配等优化处 理。
     代码生成部 33, 对于从优化部 32 输出的中间代码, 通过参照在内部保持的转换表 等, 将全部代码置换为机器语言代码。由此, 生成可执行代码 302。
     优化部 32 具有多线程执行控制指示解释部 321、 命令调度部 322、 执行状态检测代 码生成部 323 和执行控制代码生成部 324。命令调度部 322 具有响应性确保调度部 3221。
     多线程执行控制指示解释部 321 受理由编程员进行的用于控制多线程执行的 指示, 作为编译选项 (compile option)、 pragma 指令 (#pragma) 或内部函数 (intrinsic function)。多线程执行控制指示解释部 321 将所受理的指示存储到中间代码中, 并传递给 后级的命令调度部 322 等。
     图 6 是表示多线程执行控制指示解释部 321 受理的用于多线程执行控制的指示的 一览的图。 下面, 关于图 6 所示的各个指示, 参照使用该指示的源程序 301 的示例进行说明。
     参照图 7, “关注区间指示” 利用 “#pragma_focus begin” 和 “#pragma_focus end” 将相比其它线程应该关注的源程序 301 中的区间包围起来从而进行指定。根据该指示, 编 译器 3 进行控制, 以使得重点对该区间分配处理器周期、 运算资源。
     参照图 8“ ,非关注区间指示” 利用 “#pragma_unfocus begin” 和 “#pragma_unfocus end” 将相比其它线程不怎么需要关注的源程序 301 中的区间包围起来从而进行指定。根据 该指示, 编译器 3 进行控制, 以使得不怎么对该区间分配处理器周期、 运算资源。
     参 照 图 9, “命 令 并 行 度 指 示”用 于 指 定 源 程 序 301 中 被 “#pragma ILP = ‘num’ begin” 和 “#pragma ILP end” 包围起来的区间的命令并行度。对 ‘num’ 部分指定 1 ~ 3 中的任意一个数字, 编译器 3 生成用于设定所指定的动作模式的代码, 并实施假设了 所指定的命令并行度的命令调度。图 9 示出了对 ‘num’ 指定 “3” 的命令并行度指示。即, 指定 “3” 作为由 “#pragma ILP = 3begin” 和 “#pragma ILP end” 包围起来的区间的命令并行度。 参照图 10, “多线程执行模式指示”用于使源程序 301 中被 “#pragma_single_ thread begin” 和 “#pragma_single_thread end” 包围起来的区间仅在自身线程的单线程 模式下进行动作。根据该指示, 编译器 3 生成对动作模式进行设定的代码、 即在上述区间中 将线程的执行数设为一个的代码。
     参照图 11, “响应性确保区间指示” 用于针对源程序 301 中被 “#pragma_response = ‘num’ begin” 和 “pragma_response end” 包围起来的区间来指定其它线程最低限度能 够响应的频度。对 ‘num’ 部分指定表示应该最低限度几个周期能够执行一次其它线程的数 值, 编译器 3 调整自身线程的生成代码以使得满足指定条件。在图 11 中示出了对 ‘num’ 指 定 “10” 的响应性确保区间指示。即, 该指示用于使在由 “#pragma_response = 10begin” 和 “#pragma_response end” 包围的区间中、 在 10 个周期中有一个周期执行其它线程, 以满 足该指示的方式生成代码。例如, 生成按照固定频度来插入停顿周期 (stall cycle) 的代 码、 按照固定周期来释放运算器资源的代码。
     参照图 12, “停顿插入频度指示” 用于针对源程序 301 中被 “#pragma_stall_freq = ‘num’ begin” 和 “#pragma_stall_freq end” 包围起来的区间来指定产生最低限度一个 停顿周期的频度。对 ‘num’ 部分指定表示应该最低限度几个周期产生一次停顿的数值, 编 译器 3 插入适当的停顿周期以使得满足指定条件。图 12 示出了对 ‘num’ 指定 “10” 的停顿 插入频度指示。即, 生成代码, 以使得在由 “#pragma_stall_freq = 10begin” 和 “#pragma_ stall_freq end” 包围起来的区间中、 在 10 个周期中有 1 个周期产生停顿周期。
     参照图 13, “运算器释放频度指示” 用于针对源程序 301 中被 “#pragma_release_ freq = ‘res’ ‘num’ : begin” 和 “#pragma_release_freq end” 包围起来的区间来指定对 于所指定的运算器产生最低限度一次未使用的周期的频度。对 ‘res’ 部分能够指定 ‘mul’ 或者 ‘mem’ 作为运算器的种类, ‘mul’ 表示乘法器, ‘mem’ 表示存储器访问装置。对 ‘num’ 部分指定表示应该最低限度几个周期产生一次所指定的运算器的未使用周期的数值, 编译 器 3 调整生成代码以使得满足指定条件。图 13 示出了对 ‘res’ 指定 ‘mul’ 、 对 ‘num’ 指定 “10” 的运算器释放频度指示。即, 生成代码, 以使得在由 “#pragma_release_freq = mul : 10begin” 和 “#pragma_release_freqend” 包围的区间中、 在 10 个周期中有 1 个周期产生不 使用所指定的运算器即乘法器的周期。
     参照图 14, “紧迫度 (tightness) 检测指示” 是一种内部函数的集, 用于检测对于 所期待的执行周期数紧迫到何种程度。 利用函数 _get_tightness_start() 指定源程序 301 中的周期数计测区间的起点。能够利用函数 _get_tightness(num) 得到紧迫度。对自变量 ‘num’ 指定自起点起的执行周期数的期待值或应保证值, 该函数将实际的执行周期数与所 指定的数值之比返回。图 14 示出了对 ‘num’ 指定 “1000” 的紧迫度检测指示。由此, 如果 实际的执行周期数是 n, 则函数 _get_tightness_start(1000) 返回 n/1000。
     此外, 编程员利用该函数能够得到处理的紧迫度, 能够对与紧迫度对应的控制进 行编程。例如, 在紧迫度大于 1 的情况下, 可以生成使运算器资源减少或使命令并行度减少 的代码。并且, 在紧迫度小于 1 的情况下, 可以生成使运算器资源增加或使命令并行度增加 的代码。
     参照图 15, “执行周期期待值指示” 是用于指示所期待的执行周期数的内部函数的
     集。利用函数 _expected_cycle_start() 指定源程序 301 中的周期数计测区间的起点。利 用函数 _expected_cycle(num) 指定执行周期数的期待值。对自变量 ‘num’ 指定自起点起 的执行周期数的期待值或应保证值。根据编程员利用该函数而指定的期待值, 编译器 3 或 操作系统 4 能够导出实际的处理的紧迫度, 并自动实施适当的执行周期数的控制。
     “自 动 控 制 指 示”是 一 种 编 译 选 项, 指 示 出 实 施 自 动 多 线 程 执 行 控 制。 利 用 -auto-MT-control = OS 选项来指示操作系统 4 的自动控制, 利用 -auto-MT-control = COMPILER 选项来指示编译器 3 的自动控制。
     再次参照图 5, 命令调度部 322 保持所输入的命令组之间的依存关系并适当进行 命令的再排列, 由此实施使执行效率提高的优化。另外, 在进行命令的再排列时, 假定命令 等级的并行度来实施再排列。在前述的指示中, 对于进行 “关注区间指示” 的区间假设并行 度为 3, 对于进行 “非关注区间指示” 的区间假设并行度为 1, 对于进行 “命令并行度指示” 的 区间假设为遵从指示的并行度。在缺省情况下假设并行度为 3。
     并且, 对于进行 “多线程执行模式指示” 的区间, 假设不存在其它线程而只有自身 线程在处理器上动作, 来实施命令调度。
     命令调度部 322 具有响应性确保调度部 3221。 响应性确保调度部 3221, 对于进行前述 “响应性确保区间指示” 或 “停顿插入频度 指示” 的区间, 从开头开始按顺序搜索周期, 在所指定的数值的周期数的停顿不发生的周期 连续的情况下, 插入使停顿发生的 “nop” 命令, 并从下一个命令开始继续搜索。由此, 其它 线程对所指定的周期在 1 个周期能够可靠地执行命令。
     并且, 对于进行前述 “运算器释放频度指示” 的区间, 进行命令调度时, 对使用所指 定的运算器的周期进行计数, 计数器达到所指定的数值的情况下假设在下一个周期中不能 使用该运算器, 从而进行调度。 如果产生不使用该运算器的周期, 则对计数进行复位。 由此, 其它线程对所指定的周期在 1 周期能够使用该运算器。
     执行状态检测代码生成部 323 对应于前述指示来插入用于检测执行状态的代码。
     具 体 地 讲, 对应于前述 “紧 迫 度 检 测 指 示” , 在 记 述 有 函 数 _get_tightness_ start() 的部分中插入用于使处理器的周期计数开始的系统调用 (system call)。并且, 在记述有函数 _get_tightness(num) 的部分中插入 : 将处理器的周期计数值读出的系统调 用; 以及将用所读出的计数值除以对 num 赋予的期待值而得到的值作为紧迫度来返回的代 码。编程员能够根据该返回值得知处理的紧迫度。
     此 外, 对应于前述 “执 行 周 期 期 待 值 指 示” , 在 记 述 有 函 数 _expected_cycle_ start() 的部分中插入用于使处理器的周期计数开始的系统调用。能够对应于各个指示而 独立地进行周期计数。
     并且, 作为自动控制指示的编译选项 -auto-MT-control 而指定了 OS 的情况下, 在 记述有函数 _expected_cycle(num) 的部分中插入用于将由指示的执行周期数的期待值传 递给操作系统 4 而敦促执行控制的系统调用。与此对应地, 能够由操作系统 4 实施执行控 制。
     此外, 作为自动控制指示的编译选项 -auto-MT-control 而指定了 COMPILER 的情 况下, 在记述有函数 _expected_cycle(num) 的部分中插入将处理器的周期计数读出的系 统调用, 用所读出的计数值除以对 num 赋予的期待值来计算紧迫度, 在紧迫度为 0.8 以上的
     情况下, 插入进行与后述的 “关注区间” 对应的控制的代码, 在紧迫度小于 0.8 的情况下, 插 入进行与后述的 “非关注区间” 对应的控制的代码。由此, 编译器能够自动生成对与紧迫度 对应的多线程执行控制进行实施的代码。
     执行控制代码生成部 324 插入用于对应于前述指示来对执行进行控制的代码。
     具体地讲, 对应于 “关注区间指示” , 在区间的 begin 的部分中插入将命令并行度 设定为 3 的系统调用, 在区间的 end 的部分中插入恢复为原来的设定的系统调用。
     并且, 对应于 “非关注区间指示” , 在区间的 begin 的部分中插入将命令并行度设 定为 1 的系统调用、 和设定为使其它线程的周期不中断的执行模式的代码, 在区间的 end 的 部分中插入恢复为原来的设定的系统调用。
     另外, 对应于 “命令并行度指示” , 在区间的 begin 的部分中插入将命令并行度设 定为所指定的值的系统调用, 在区间的 end 的部分中插入恢复为原来的设定的系统调用。
     另外, 对应于 “多线程执行模式指示命令并行度指示” , 在区间的 begin 的部分中 插入用于转移到单线程模式的系统调用, 在区间的 end 的部分中插入恢复为原来的设定的 系统调用。
     并且, 对应于 “执行周期期待值指示” 和 “自动控制指示” , 插入与如前所述地检测 到的紧迫度相对应来进行与 “非关注区间” 或 “关注区间” 同样的控制的代码。 通过采取以上所述的编译器 3 的结构, 在多线程处理器 1 中, 能够控制自身线程的 执行模式和处理器资源的使用状况, 能够根据需要来关注自身线程的处理或对其它线程分 配处理器资源。 此外, 即使是在关注自身线程的处理的情况下, 其它线程也能够保证规定的 响应性。 此外, 能够获得执行时的执行周期数的信息并据此按照紧迫度进行上述控制, 能够 实现极其精细的性能调谐 (tuning) 和处理器利用效率的提高。
     图 16 是表示本发明的实施方式 2 的操作系统 4 的结构的框图。
     操作系统 4, 作为被在计算机上执行时发挥作用的处理部, 具有系统调用处理部 41、 进程 (process) 管理部 42、 存储器管理部 43 和硬件控制部 44。另外, 操作系统 4 是一 种程序, 通过在具有处理器和存储器的计算机上执行用于实现操作系统 4 的各个构成要素 的程序来实现功能。这样的程序当然能够通过 CD-ROM 等非易失性记录介质、 因特网等通信 网络进行流通。操作系统 4, 通过使计算机作为这些处理部发挥作用, 能够使计算机作为操 作系统装置进行动作。另外, 操作系统 4 动作的处理器是实施方式 1 所示的多线程处理器 1。
     进程管理部 42 对在操作系统 4 上动作的多个进程赋予优先度, 据此来确定分配给 各个进程的时间, 并控制进程的切换等。
     存储器管理部 43 实施如下等控制 : 存储器的可利用部分的管理、 存储器的分配及 释放、 主存储与二次存储之间的交换 (swap)。
     系统调用处理部 41 提供与系统调用对应的处理, 该系统调用是针对应用程序的 核心服务 (kernel service)。
     系统调用处理部 41 具有多线程执行控制系统调用处理部 411 和紧迫度检测系统 调用处理部 412。
     多线程执行控制系统调用处理部 411 处理用于对处理器的多线程动作进行控制 的系统调用。
     具体地讲, 多线程执行控制系统调用处理部 411 受理对前述编译器 3 的执行控制 代码生成部 324 的命令并行度进行设定的系统调用, 设定处理器的动作命令并行度并保存 原来的命令并行度。并且, 多线程执行控制系统调用处理部 411 受理向原来的命令并行度 进行恢复的系统调用, 并将处理器设定为所保存的原来的命令并行度。 另外, 多线程执行控 制系统调用处理部 411 受理向单线程模式转移的系统调用, 将处理器的动作模式设定为单 线程模式并保存原来的线程模式。并且, 多线程执行控制系统调用处理部 411 受理向原来 的线程模式进行恢复的系统调用, 并将处理器设定为所保存的原来的线程模式。
     紧迫度检测系统调用处理部 412 处理用于检测处理的紧迫度并予以应对的系统 调用。
     具体地讲, 紧迫度检测系统调用处理部 412 受理用于使前述编译器 3 的执行状态 检测代码生成部 323 的处理器的周期计数开始的系统调用, 获得处理器的计数器并进行使 计数开始的设定。此外, 紧迫度检测系统调用处理部 412 受理将当前的周期计数读出的系 统调用, 读出处理器的相应计数器的当前的计数值, 并返回该值。进而, 紧迫度检测系统调 用处理部 412 受理用于传递执行周期数的期待值而敦促执行控制的系统调用, 读出处理器 的相应计数器的当前的计数值, 根据该值和所传递的执行周期数的期待值来推导紧迫度, 并实施与紧迫度对应的执行控制。 在紧迫度较高的情况下, 紧迫度检测系统调用处理部 412 提高该进程的优先度, 并实施与前述 “关注区间” 对应的控制。 另一方面, 在紧迫度较低的情 况下, 紧迫度检测系统调用处理部 412 降低该进程的优先度, 并实施与前述 “非关注区间” 对应的控制。
     硬件控制部 44 实施在系统调用处理部 41 等中所需要的硬件控制用的寄存器设定 和读出。
     具体地讲, 实施如下处理 : 前述命令并行度的设定和恢复、 多线程动作模式的设定 和恢复、 周期计数器的初始化、 与周期计数器的读出对应的硬件的寄存器设定和读出。
     通过采取以上所述的操作系统 4 的结构, 能够实现利用程序的多线程处理器的动 作控制, 能够对各个程序适当地分配处理器资源。 并且, 能够根据所输入的由编程员假设的 执行周期数的期待值和从硬件读出的实际的执行周期的信息来检测紧迫度, 并自动实施适 当的控制, 能够减轻编程员的调谐负担。
     本发明不限于上述的实施方式, 当然能够实现各种变更, 并且这些变更都包含在 本发明的范围内。例如, 可以考虑以下所述的变形。
     (1) 在上述实施方式 2 的编译器中, 假设了适合于 C 语言的编译器系统, 但是本发 明不限于 C 语言。在采用其它编程语言的情况下, 本发明也能够保持其意义。
     (2) 在上述实施方式 2 的编译器中, 假设了适合于高级语言的编译器系统, 但是本 发明不限于此。例如, 同样能够将本发明应用于以汇编程序为输入的汇编器。
     (3) 在上述实施方式 2 中, 作为目标处理器, 假设了 1 个周期能够发行 3 个命令、 能 够同时使 3 个线程并行动作的处理器, 但是本发明不限于该同时发行命令数、 线程数。
     (4) 在上述实施方式 2 中, 作为目标处理器, 假设了超标量处理器 (superscalar processor), 但是本发明不限于此。也能够将本发明应用于 VLIM(Very Long Instruction Word) 处理器。
     (5) 在上述实施方式 2 中, 作为对多线程执行控制指示解释部进行指示的方法, 分别规定了 pragma 指令、 内部函数、 编译选项, 但是本发明不限于这种规定。进行 pragma 指 令的部分也可以利用内部函数来实现, 反过来也可以。并且, 在汇编程序的情况下, 还能够 作为伪指令进行指示。
     (6) 在上述实施方式 2 中, 作为提供给多线程执行控制指示解释部的命令并行度 指示, 作为处理器假设了最少 1 最多 3, 但是本发明不限于这种指定。也可以指定位于处理 器的能力的中间的 2 等并行度。
     (7) 在上述实施方式 2 中, 作为提供给多线程执行控制指示解释部的响应确保区 间指示、 停顿插入频度指示和运算器释放指示, 提供了作为周期数的频度, 但是本发明不限 于这种指定。 也可以用毫秒等时间进行这些指示, 还可以如高、 中、 低那样用程度进行指示。
     (8) 在上述实施方式 2 中, 作为提供给多线程执行控制指示解释部的运算器释放 频度指示的运算器, 假设了乘法器和存储器访问, 但是本发明不限于这种指示。 也可以指示 其它运算器, 还可以用更细的单位进行指示以使得对加载 (load) 和储存 (storage) 进行区 分等。
     (9) 在上述实施方式 2 中, 在提供给多线程执行控制指示解释部的紧迫度检测指 示和执行周期期待值指示中, 用周期数来提供期待值, 但是本发明不限于这种指示。 也可以 用毫秒等时间进行指示, 还可以如大、 中、 小那样用程度进行指示。
     (10) 在上述实施方式 2 的操作系统中, 假设了伴随有进程管理和存储器管理的通 用操作系统, 但是也可以是诸如缩小了功能的设备驱动程序 (device driver) 那样的操作 系统。即使在这种形态下, 也能够通过 API 进行硬件的适当控制。
     另外, 也可以将上述实施方式和上述变形例分别进行组合。
     此次公开的实施方式在所有方面上都仅是示例, 不能认为是限制性的方式。本发 明的范围不在于上述的说明, 而包含由请求保护的范围所示、 与请求保护的范围同等意义 及范围内的所有变更。
     产业上的可利用性
     如上所述, 本发明的多线程处理器, 即使是在线程之间竞争运算资源的情况下也 具有如下效果, 即: 能够防止在用户指定、 处理器实施方面的线程之间的优先度中处于劣势 的线程的执行效率局部明显下降, 并且能够取得各个线程的命令数和运算器资源数的平衡 而实现高效率的多线程执行, 因而可以应用于多线程处理器和使用该多线程处理器的应用 软件等。
     附图标记说明
     1 多线程处理器
     3 编译器
     4 操作系统
     31 句法分析部
     32 优化部
     33 代码生成部
     41 系统调用处理部
     42 进程管理部
     43 存储器管理部44 硬件控制部 101 命令存储器 102 第 1 命令解码器 103 第 2 命令解码器 104 第 3 命令解码器 105 第 1 命令数指定部 106 第 2 命令数指定部 107 第 3 命令数指定部 108 第 1 命令分组部 109 第 2 命令分组部 110 第 3 命令分组部 111 第 1 寄存器 112 第 2 寄存器 113 第 3 寄存器 114 线程选择部 115 命令发行控制部 116 线程选择器 117、 118 线程用寄存器选择器 119 运算器组 201 第 1 发行间隔抑制部 202 第 2 发行间隔抑制部 203 第 3 发行间隔抑制部 204 第 1 执行间隔指定部 205 第 2 执行间隔指定部 206 第 3 执行间隔指定部 301 源程序 302 可执行代码 321 多线程执行控制指示解释部 322 命令调度部 323 执行状态检测代码生成部 324 执行控制代码生成部 411 多线程执行控制系统调用处理部 412 紧迫度检测系统调用处理部 3221 响应性确保调度部

多线程处理器、编译器装置及操作系统装置.pdf_第1页
第1页 / 共35页
多线程处理器、编译器装置及操作系统装置.pdf_第2页
第2页 / 共35页
多线程处理器、编译器装置及操作系统装置.pdf_第3页
第3页 / 共35页
点击查看更多>>
资源描述

《多线程处理器、编译器装置及操作系统装置.pdf》由会员分享,可在线阅读,更多相关《多线程处理器、编译器装置及操作系统装置.pdf(35页珍藏版)》请在专利查询网上搜索。

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