[发明专利]用于在微处理器中使用多个阶段执行来对指令发布进行调度的方法和设备有效
| 申请号: | 201180065275.8 | 申请日: | 2011-12-13 |
| 公开(公告)号: | CN103314357A | 公开(公告)日: | 2013-09-18 |
| 发明(设计)人: | Y·C·弗 | 申请(专利权)人: | 想象技术有限公司 |
| 主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/30;G06F15/80;G06T1/20;G06F9/48;G06F9/50 |
| 代理公司: | 北京润平知识产权代理有限公司 11283 | 代理人: | 肖冰滨;陈潇潇 |
| 地址: | 英国赫*** | 国省代码: | 英国;GB |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 微处理器 使用 阶段 执行 指令 发布 进行 调度 方法 设备 | ||
技术领域
本发明涉及微处理器领域并特别有益于单指令多数据(SIMD)处理器。
背景技术
对于一些类型的数据,诸如图形数据,大块的数据经常需要经历相同的处理操作。一个示例是当改变图像的亮度时。SIMD处理对于该处理是有益的。正如任何其它处理器,SIMD处理器是具有执行单元、高速缓存和存储器的微处理器,但额外包含了多数据流的并行执行的概念。并非单独地提取数据实例,而是单提取指令能够被用于提取数据块。然后单指令能够被用于在提取的数据块上操作,诸如“添加”操作。因此与传统的单指令单数据(SISD)处理相比,SIMD处理减少了在处理器上的负载。
然而,SIMD处理仅仅能够被用于有限的情况。例如,甚至在大块数据首先以相同方式被处理的情况下,程序经常包含条件指令或分支指令而导致块中的一些数据由指令的一个分支对齐进行操作以及余下的数据由指令的另一个分支进行操作。提前预测多少数据实例将需要由一个分支处理及多少数据实例由另一个分支处理常常是不可能的。
通常在SIMD处理器中,调度器被用于调度程序的执行,分配由在开端处的程序请求的资源。对于在一部分程序期间不同部分的数据集由不同指令进行处理的程序的一个解决方案已经在所有数据上执行每一个分支,然后丢弃不需要的结果。显然这是处理器资源和时间的低效使用。
相应地,在SIMD处理器中的程序执行期间能够更好地分配资源是可取的,既减少了功率消耗又优化了资源利用。
发明内容
在第一方面,本发明提供了一种多线程的SIMD微处理器,该微处理器被配置为执行被划分为多个离散编程指令阶段的程序,还被配置以使多个数据实例能够由编程指令的单线程处理,该微处理器包括:
调度器,用于调度待在处理器上执行的程序指令;以及
多个资源,用于执行由所述调度器发布的编程指令;
其中所述调度器被配置为仅在接收到所述程序的先前阶段的执行已经完成的指示后,调度所述程序的每一个阶段,以及被配置为在所述程序的每一个阶段的调度期间,确定待分配给用于所述程序的该阶段的每一线程的数据实例的数量。
所述调度器被配置为重新计算用于所述程序的每一个阶段的SIMD比率。SIMD比率是由单指令处理的数据实例的数量。
处理器包括对于调度器的反馈环路,通过该反馈环路,程序的每一个阶段的完成被传达给调度器。
优选地,在每一被调度的程序的每一个阶段执行期间,调度器保持用于该程序的该阶段的记录。
优选地,所述处理器还包括线程完成计数器,其中当每一个线程完成所述程序的阶段时,指示被发送到所述线程完成计数器,并且所述处理器被配置为仅当所述线程完成计数器指示用于所述程序的先前阶段的所有线程已经完成时,使调度器调度所述程序的下一个阶段。线程完成计数器可以是所述调度器的一部分或被提供作为单独的部件。所述线程完成计数器可以包括存储用于程序的每一个阶段的线程的数量的存储器,并且所述线程完成计数器在每一次线程完成一个阶段时减少,并被配置以使当所述线程完成计数器达到零时,所述调度器被命令调度所述程序的下一个阶段。
所述线程完成计数器可以存储用于程序的阶段的每一个线程的数据实例的数量的记录。
优选地,所述调度器被配置为基于先前阶段的结果动态地分配用于所述程序的每一个阶段的线程的数量。
在第二方面,本发明提供了一种用于在多线程的SIMD微处理器中调度程序的方法,该微处理器包括用于调度编程指令的程序的调度器,所述程序被划分为多个离散编程指令阶段,所述方法包括以下步骤:
调度待在处理器上执行的程序的第一阶段,该步骤包括确定多少数据实例被分配给第一阶段的多个线程的每一个线程的步骤;
执行由所述调度器调度的所述程度的第一阶段;
当所述程序的第一阶段的执行完成时,提供所述程序的第一阶段的执行完成的指示给所述调度器;以及
在所述调度器已经接收到所述程序的第一阶段的执行完成的指示之后,调度所述程序的第二阶段,该步骤包括确定多少数据实例被分配给所述第二阶段的多个线程的每一个线程的步骤。
优选地,所述方法还包括在所述被调度的程序的每一个阶段的执行期间,保持该阶段的记录。
优选地,所述方法还包括当每一个线程完成所述程序的阶段时,更新记录,以及仅当所述记录指示用于所述程序的先前阶段的所有线程已经完成时,调度所述程序的下一个阶段。
优选地,所述方法还包括存储用于程序的阶段的每一个线程的数据实例的数量的记录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于想象技术有限公司,未经想象技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201180065275.8/2.html,转载请声明来源钻瓜专利网。





