当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于在处理具有未对齐数据行的数组期间消除未对齐的存储器访问的指令集制造技术

技术编号:12782128 阅读:79 留言:0更新日期:2016-01-28 01:17
本申请公开了用于在处理具有未对齐数据行的数组期间消除未对齐的存储器访问的指令集。描述了具有指令执行流水线的处理器。该指令执行流水线包括用于取出指令的指令取出级。该指令的指令格式指定第一输入向量、第二输入向量和第三输入操作数。该指令执行流水线包括用于解码该指令的指令解码级。该指令执行流水线包括用于执行该指令的功能单元。该功能单元包括路由网络,该路由网络将来自多个输入向量中的一个的第一端的第一连续的元素组路由至该指令的结果向量的第二端,并且将来自多个输入向量中的另一个的第二端的第二连续的元素组路由至该指令的结果向量的第一端。第一端和第二端是相反的向量端。从第三输入操作数来定义第一连续的元素组和第二连续的元素组。该指令不能够将来自多个输入向量的非连续的元素组路由至该指令的结果向量。还描述了使用该指令的软件流水线。

【技术实现步骤摘要】

本专利技术的领域设及计算科学,更具体地说,本专利技术的领域设及用于消除具有未对 齐数据行的数组的处理期间的未对齐的存储器存取的指令集。
技术介绍
图1示出了在半导体忍片上用逻辑电路实现的处理核100的高层级的图。该处理 核包括流水线101。该流水线由多个级组成,运些级各自被设计成在完全执行程序代码指令 所需的多步骤过程中执行特定步骤。运些级通常至少包括:1)指令取出和解码;2)数据取 出;3)执行;4)写回。执行级对由指令标识的并且在先前级(例如,在上述步骤2)中所取 出的数据执行由在另一先前级(例如,在上述步骤1)中所取出并解码的相同指令所标识的 特定操作。被操作的数据通常是从(通用)寄存器存储空间102中取出的。在该操作完成 时所创建的新数据通常也被"写回"到寄存器存储空间(例如,在上述级4)。 与执行级相关联的逻辑电路通常由多个"执行单元"或"功能单元"103_1到103_ N构成,运些单元各自被设计成用于执行其自身的唯一操作子集(例如,第一功能单元执行 整数数学操作,第二功能单元执行浮点指令,第Ξ功能单元执行来自/去往高速缓存/存储 器的加载/存储操作,等等)。由所有运些功能单元执行的所有操作的集合与处理核100所 支持的"指令集"相对应。计算机科学领域中广泛认可两种类型的处理器架构:"标量"型和"向量"型。标 量处理器被设计成用于执行对单个数据集执行操作的指令,而向量处理器被设计成用于执 行对多个数据集执行操作的指令。图2A和2B呈现了展示标量处理器与向量处理器之间的 基本差异的比较示例。 图2A示出标量AND(与)指令的示例,其中单个操作数集A和B-起进行"与"运 算W产生单个(或"标量")结果C(即,AB=C)。相比之下,图2B示出向量AND指令的示 例,其中两个操作数集A/B和D/E并行地分别一起进行"与"运算W同时产生向量结果C和 F(即,A.AND.B=C并且化AND.E=巧。根据术语,"向量"是具有多个"元素"的数据元 素。例如,向量¥ = 0,氏5,1',11具有五个不同的元素:9、1?、5、1'和1]。示例性向量¥的"尺 寸"是5(因为它具有5个元素)。 图1也示出不同于通用寄存器空间102的向量寄存器空间107的存在。具体而言, 通用寄存器空间102名义上用于存储标量值。由此,当多个执行单元中的任何执行单元执 行标量操作时,它们名义上使用从通用寄存器存储空间102调用的操作数(并且将结果写 回到通用寄存器存储空间102)。相比之下,当多个执行单元中的任何执行单元执行向量操 作时,它们名义上使用从向量寄存器空间107调用的操作数(并将结果写回到向量寄存器 空间107)。可类似地分配存储器的不同区域W存储标量值和向量值。值得注意的是,一些 机器可使用向量寄存器空间来存储浮点标量值。【附图说明】 结合W下附图,从W下【具体实施方式】中可获得对本专利技术更好的理解,其中: 图1示出指令执行流水线; 图2a和2b将标量处理与向量处理进行比较; 图3a和3b描绘了对具有未对齐行的数组的处理; 图4示出处理具有未对齐行的数组的改进方法; 图5a示出针对图4的过程中所使用的第一指令的设计; 图化示出针对图4的过程中所使用的第二指令的设计; 图5c示出编译过程; 图6a是示出根据本专利技术的多个实施例的通用向量友好指令格式及其A类指令模 板的框图。 图化是示出根据本专利技术的多个实施例的通用向量友好指令格式及其B类指令模 板的框图。 图7a-d是示出根据本专利技术的多个实施例的示例性专用向量友好指令格式的框 图。 图8是根据本专利技术的一个实施例的寄存器架构的框图。 图9a是根据本专利技术的多个实施例的单个CPU核W及它与管忍上互连网络的连接 及其第二级化2)高速缓存的本地子集的框图。 图9b是根据本专利技术的多个实施例的图9A中的CPU核的部分的分解图。 图lOa-b是示出根据本专利技术的多个实施例的示例性无序架构的框图。 图11是根据本专利技术的一个实施例的系统的框图。图12是根据本专利技术的实施例的第二系统的框图。 图13是根据本专利技术的实施例的第Ξ系统的框图。图14是根据本专利技术的实施例的SoC的框图。 图15是根据本专利技术的多个实施例的具有集成的存储器控制器和图形器件的单核 处理器和多核处理器的框图。 图16是根据本专利技术的多个实施例的对照使用软件指令转换器将源指令集中的二 进制指令转换成目标指令集中的二进制指令的框图。【具体实施方式】 向量处理对于处理数组是有用的。作为示例,每一个向量可对应于数组中的行。根 据基本的数组处理,从输入数组读取行的信息量(或仅仅是该数组的"行"),并且对其进行 处理。然后,将来自该处理的行的结果信息量写入到结果数组结构中。[002引图3a示出当数组的多个行相对于存储器寻址空间是"未对齐的"(misaligned)时 候可能出现的问题或低效。图3a示出示例性输入数组结构301和示例性"结果"数组结构 302。在此,图3a中所观察到的每一个矩形行对应于其中单次存储器读取可填充一个或多 个此类向量寄存器的向量寄存器。理想情况下,在向量寄存器的边缘上对齐该数组的多个 行。然而,注意在它们各自的数组结构30U302中的行的信息量303、304是未对齐的。也 就是说,运些行不在正常的向量边界上开始/结束,而在向量边界之内开始/结束。此外, 行303、304两者具有不同的未对齐程度。 当承担处理具有未对齐向量行的数组的任务时,向量处理器及其编译器可能显现 出低效。更具体地说,未对齐访问是低效的,因为它们可能使来自存储器的多次读取用于输 入数据的单个行W供计算,并且/或者它们可能使对存储器的多次写入用于结果数据的单 个行。 当今的编译器通过被称为"剥离"("peeling")的技术力图减少与未对齐数组访 问相关联的损失,该"剥离"技术贯穿多次迭代滚动(scroll),直到达到对齐的结果行为止。 作为剥离的结果,数组结构将如图3b中那样被对齐。在此,输入和结果数组两者的起始位 置已被偏移了相同的量305,该偏移量使结果行307与机器的标称向量边界对齐。随着结果 307被对齐,避免了为写入单个结果行而向存储器的多次写入。然而,由于输入和结果行相 对于彼此是未对齐的,因此输入行308仍然是未对齐的。由此,从存储器的多次读取仍然可 能获取信息行用于计算,并且处理器可能继续W低效的方式操作。 图4示出利用软件流水线操作和专口改编的指令对的改进方法。使用利用特殊指 令的软件流水线操作提供了对具有未对齐行的数组的高效处理,同时没有往/返于存储器 的未对齐访问的损失。在此,运些数组行的多个边界被保持在流水线环路的内部而不是被 暴露在存储器访问接口处。结果,从存储器调用的输入数据被对齐到机器的向量边界而不 是运些未对齐行的边界。因此,即便正在被处理的数组的多个行是未对齐的,也可通过对齐 的存储器访问来取出输入数据。同样,即便结果数组行是未对齐的,也能W对齐的方式将结 果数据写入存储器。输入行和结果行之间的未对齐程度也可能是不同的。 如图4中所观察到的那样,输入数组结构401包含一系列将处理的未对齐行411、 412、413,响应于数组处理,运些未对齐行将在输出数组402中产生结果行431、432、433。为本文档来自技高网...

【技术保护点】
一种处理器,包括:指令执行流水线,包括:指令取出级,用于取出指令,所述指令的指令格式指定第一输入向量、第二输入向量和第三输入操作数;指令解码级,用于解码所述指令;以及功能单元,用于执行所述指令,所述功能单元包括路由网络,所述路由网络用于将来自所述多个输入向量中的一个的第一端的第一连续的元素组路由至所述指令的结果向量的第二端,并且将来自所述多个输入向量中的另一个的第二端的第二连续的元素组路由至所述指令的结果向量的第一端,所述第一端和所述第二端是相反的向量端,其中,从所述第三输入操作数来定义所述第一连续的元素组和所述第二连续的元素组,所述指令不能够将来自所述多个输入向量的非连续的元素组路由至所述指令的结果向量。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:M·普罗特尼科夫I·厄莫拉夫
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1