瓦解的多嵌套循环的向量化的制作方法_2

文档序号:8516036阅读:来源:国知局
入操作 数向量一起),并且将该掩码向量呈现给掩码逻辑104、105层中的至少一层。
[0035] 在执行向量程序代码的过程中,每一向量指令无需要求完整的数据字。例如,针对 一些指令的输入向量可能仅是8个元素,针对其他指令的输入向量可以是16个元素,针对 其他指令的输入向量可以是32个元素等等。因此,掩码层104/105用于识别应用于特定指 令的完整向量数据字的元素集合,以便实现指令之间的不同向量大小。典型地,针对每一向 量指令,在掩码寄存器空间106中保持的特定掩码模式被指令调用出,被从掩码寄存器空 间获取,并且被提供到掩码层104/105中的一个或二者,以"实现"针对特定向量操作的正 确的元素集合。
[0036] 向量机能够被设计为处理"多维"数据结构,其中,向量的每一元素与数据结构的 唯一维度相对应。例如,如果向量机要被编程为关注三维结构(例如,"立方体"),则可以创 建具有与立方体的宽度相对应的第一元素、与立方体的长度相对应的第二元素以及与立方 体的高度相对应的第三元素的向量。
[0037] 本领域的普通技术人员将理解,在计算系统中计算多维结构可以导致具有两个或 更多个维度的结构,包括多于三个的维度。然而,为了简单起见,本申请将大部分提供示例。
[0038] 表1是能够使用本文描述的指令瓦解的示例嵌套循环。要注意的是,可以由用户 或者诸如静态编译器或诸如立即(JIT)编译器的运行时间编译器的编译器来执行循环瓦 解。大体上,表1示出了嵌套循环,其中以根据各个循环计数器值的偏移为基础,基于对嵌 套循环的循环计数器αρ以及对从第二多维阵列B获得的数据元素执行的计算来对第一 多维阵列A进行更新。
[0039] 轰1
【主权项】
1. 一种处理器,包括: 执行模块,其包括向量单元和标量单元,其中,所述向量单元用于执行由多个循环形成 的被瓦解的循环以获得偏移向量,其中,所述向量单元用于针对多次迭代的每一个,计算在 多维数据结构中的标量偏移,将所述标量偏移存储在第一向量寄存器的数据元素中,并更 新多维循环计数器向量的至少一个循环计数器值,并且之后用于使用来自所述偏移向量的 基础值和索引从所述多维数据结构中装载多个数据元素,对所装载的多个数据元素执行至 少一个计算以获得多个结果,并使用来自所述偏移向量的所述基础值和所述索引将所述多 个结果存储到所述多维数据结构中。
2. 根据权利要求1所述的处理器,其中,计算所述标量偏移包括获得索引的绝对值。
3. 根据权利要求2所述的处理器,其中,使用从开始值向量获得的开始值和所述多维 循环计数器向量的循环计数器值来确定所述索引的绝对值。
4. 根据权利要求3所述的处理器,其中,所述向量单元用于执行多维循环计数器更新 指令以更新所述多维循环计数器向量。
5. 根据权利要求4所述的处理器,其中,所述多维循环计数器更新指令与用于标识所 述多维循环计数器向量的第一操作数、用于标识递增因子向量的第二操作数以及用于标识 在针对所述多维循环计数器向量的所述循环计数器值中的每一个的开始值与结束值之间 的差向量的第三操作数相关联。
6. 根据权利要求1所述的处理器,其中,所述多个循环是通过用户或编译器被瓦解成 所述被瓦解的循环的。
7. 根据权利要求6所述的处理器,其中,所述被瓦解的循环之后被向量化,以减小与所 述多个循环的每一个的行程计数的乘积相对应的行程计数值。
8. 根据权利要求1所述的处理器,其中,所述向量单元用于将与多维循环计数器更新 指令相关联的第一操作数的至少一个循环计数器值更新第一数量,所述第一数量依照与所 述多维循环计数器更新指令相关联的第二操作数的值。
9. 根据权利要求8所述的处理器,其中,所述多维循环计数器更新指令包括组合的递 增和递减指令,以使所述第一操作数的至少一个循环计数器值被递增并且使所述第一操作 数的至少一个其它的循环计数器值被递减。
10. -种方法,包括: 在处理器的向量单元中执行由多个循环形成的被瓦解的循环,以获得偏移向量,所述 执行包括针对多次迭代的每一个,计算在多维数据结构中的标量偏移,将所述标量偏移存 储在第一向量寄存器的数据元素中,并更新多维循环计数器向量的至少一个循环计数器 值; 使用来自所述偏移向量的基础值和索引从所述多维数据结构中装载多个数据元素; 对所装载的多个数据元素执行至少一个计算以获得多个结果;以及 使用来自所述偏移向量的所述基础值和所述索引将所述多个结果存储到所述多维数 据结构中。
11. 根据权利要求10所述的方法,还包括执行多维循环计数器更新指令以更新所述多 维循环计数器向量。
12. 根据权利要求11所述的方法,其中,所述多维循环计数器更新指令与用于标识所 述多维循环计数器向量的第一操作数、用于标识递增因子向量的第二操作数以及用于标识 在针对所述多维循环计数器向量的所述循环计数器值中的每一个的开始值与结束值之间 的差向量的第三操作数相关联。
13. -种系统,包括: 处理器,其包括多个核心,所述多个核心中的至少一个包括: 执行模块,其包括向量单元和标量单元,其中,所述向量单元用于执行由多个循环形成 的被瓦解的循环以获得偏移向量,其中,所述向量单元用于针对多次迭代的每一个,计算在 多维数据结构中的标量偏移,将所述标量偏移存储在第一向量寄存器的数据元素中,更新 多维循环计数器向量的至少一个循环计数器值,并基于标志值确定是否完成了所述被瓦解 的循环;以及 动态随机存取存储器(DRAM),其耦合到所述处理器。
13. 根据权利要求12所述的系统,其中,所述执行模块还用于使用来自所述偏移向量 的基础值和索引从所述多维数据结构中装载多个数据元素,对所装载的多个数据元素执行 至少一个计算以获得多个结果,并使用来自所述偏移向量的所述基础值和所述索引将所述 多个结果存储到所述多维数据结构中。
14. 根据权利要求12所述的系统,其中,所述向量单元用于执行多维循环计数器递增 指令以更新所述多维循环计数器向量,所述多维循环计数器递增指令还用于更新所述标志 值。
15. 根据权利要求13所述的处理器,其中,所述执行模块用于响应于通过执行所述多 维循环计数器递增指令而更新的所述标志值的第一状态来完成所述多次迭代的执行,而不 是完成全部的所述多次迭代的执行。
16. 根据权利要求15所述的处理器,其中,所述执行模块还用于在向量掩码下执行至 少一个向量计算。
17. 根据权利要求16所述的处理器,其中,如果所述多次迭代的第一迭代由所述执行 模块执行,则所述向量掩码的第一元素具有第一值,并且如果所述多次迭代的第二迭代没 有由所述执行模块执行,则所述向量掩码的第二元素具有第二值。
18. 根据权利要求14所述的处理器,其中,所述执行模块用于响应于通过执行所述多 维循环计数器递增指令而更新的所述标志值的第一状态来完成所述被瓦解的循环的执行。
【专利摘要】在实施例中,一种向量化被瓦解的多嵌套循环的方法包括:在处理器的向量单元中执行被瓦解的循环以获得偏移向量,包括针对多次迭代中的每一个,将标量偏移计算到多维数据结构中,将所述标量偏移存储在第一向量寄存器的数据元素中,并更新多维循环计数器向量的循环计数器值。继而,使用来自所述偏移向量的基础值和索引从所述多维数据结构装载多个数据元素,对所装置的多个数据元素执行至少一个计算以获得多个结果,并使用来自所述偏移向量的所述基础值和所述索引将所述多个结果存储到所述多维数据结构中。描述和请求保护了其他实施例。
【IPC分类】G06F9-45
【公开号】CN104838357
【申请号】CN201380061936
【发明人】M·普洛特尼科夫, A·纳赖金, E·乌尔德艾哈迈德瓦勒
【申请人】英特尔公司
【公开日】2015年8月12日
【申请日】2013年6月29日
【公告号】DE112013005188T5, US20140188961, WO2014105208A1
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1