CN114365110A - 重复使用相邻simd单元用于快速宽结果生成 - Google Patents
重复使用相邻simd单元用于快速宽结果生成 Download PDFInfo
- Publication number
- CN114365110A CN114365110A CN202080063263.0A CN202080063263A CN114365110A CN 114365110 A CN114365110 A CN 114365110A CN 202080063263 A CN202080063263 A CN 202080063263A CN 114365110 A CN114365110 A CN 114365110A
- Authority
- CN
- China
- Prior art keywords
- instruction
- execution unit
- instruction execution
- result
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims description 36
- 238000007667 floating Methods 0.000 claims description 22
- 239000013598 vector Substances 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 11
- 230000000873 masking effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
用于处理具有扩展结果的指令的系统包括第一指令执行单元,其具有用于执行处理器指令的第一结果总线。该系统还包括第二指令执行单元,其具有用于执行处理器指令的第二结果总线。第一指令执行单元被配置成在处理器指令的执行期间,如果第二指令执行单元不被用于执行处理器指令并且如果所接收的处理器指令产生具有大于第一结果总线的宽度的数据宽度的结果,则选择性地将由第一指令执行单元计算的结果的一部分发送到第二指令执行单元。第二指令执行单元被配置为接收由第一指令执行单元计算的结果的该部分,且将所接收的结果放在第二结果总线上。
Description
背景技术
本发明涉及计算机系统领域,更具体地,涉及重复使用相邻SIMD(单指令多数据)单元来处理产生更宽宽度结果的指令。
为了在面对从一代硅技术改进中减少的益处的情况下改进计算性能,设计已经移动到实现更复杂的计算基元。在通用微处理器中,这种计算原语通常采用在紧密耦合到负责实现标准(传统)指令集的处理器核的加速器上实现的扩展指令集的形式。该加速器实现短向量SIMD计算模型,由此每个指令指定要跨宽数据字执行的操作,该操作取决于特定指令而被解释为少量(1-16)子字(sub-word)的向量。然后,单个指令可以指定对多个数据段的多个操作。
发明内容
本发明的实施例涉及用于处理指令具有扩展结果的系统。系统包括第一指令执行单元,其具有用于执行处理器指令的第一结果总线。系统还包括第二指令执行单元,其具有用于执行处理器指令的第二结果总线。第二指令执行单元通信地耦合到第一指令执行单元。第一指令执行单元被配置为如果第二指令执行单元不被用于执行处理器指令,则在处理器指令的执行期间选择性地将由第一指令执行单元计算的结果的一部分发送到第二指令执行单元。第二指令执行单元被配置为接收由第一指令执行单元计算的结果的所述部分,且将所接收的结果放在第二结果总线上。
本发明的实施例涉及用于处理指令具有扩展结果的方法。方法包含确定所接收的处理器指令是否产生具有大于第一指令执行单元的第一结果总线的宽度且大于第二指令执行单元的第二结果总线的宽度的数据宽度的结果。响应于确定所接收的处理器指令产生具有大于第一结果总线的宽度且大于第二结果总线的宽度的数据宽度的结果,确定第二指令执行单元是否不用于执行所接收的处理器指令。第二指令执行单元通信地耦合到第一指令执行单元。响应于确定第二指令执行单元不用于执行处理器指令,在处理器指令的执行期间将由第一指令执行单元计算的结果的一部分选择性地发送到第二指令执行单元的第二结果总线。
本发明的实施例涉及用于处理指令具有扩展结果的计算机程序产品。计算机程序产品包括具有在其上体现的程序指令的计算机可读存储介质。程序指令可由处理器执行以使处理器执行方法。方法的非限制性实例包括确定所接收的处理器指令是否产生具有大于第一指令执行单元的第一结果总线的宽度且大于第二指令执行单元的第二结果总线的宽度的数据宽度的结果。响应于确定所接收的处理器指令产生具有大于第一结果总线的宽度且大于第二结果总线的宽度的数据宽度的结果,确定第二指令执行单元是否不用于执行所接收的处理器指令。第二指令执行单元通信地耦合到第一指令执行单元。响应于确定第二指令执行单元不用于执行处理器指令,在处理器指令的执行期间将由第一指令执行单元计算的结果的一部分选择性地发送到第二指令执行单元的第二结果总线。
通过本发明的技术实现了额外的技术特征和益处。在本文中详细描述了本发明的实施例和方面,并且认为其是所要求保护的主题的一部分。为了更好地理解,参考详细描述和附图。
附图说明
在说明书的结尾处的权利要求中特别指出并清楚地要求了本文描述的专有权的细节。从下面结合附图的详细描述中,本发明的实施例的前述和其它特征和优点将变得显而易见,在附图中:
图1示出了根据本发明实施例的具有多个单指令多数据(SIMD)执行单元的数据处理系统的高级框图;
图2是示出根据本发明实施例的SIMD执行单元内的部件以及SIMD执行单元与数据处理系统之间的接口的高级框图;
图3是示出根据本发明实施例的重复使用相邻SIMD执行单元的未使用结果输出的逻辑的图;
图4是示出根据本发明的实施例的增强向量浮点加载延长双精度(DP)指令的示图;
图5是示出根据本发明实施例的动态通道掩蔽功能的示意图;以及
图6是根据本发明实施例的用于重复使用相邻SIMD执行单元以进行快速宽结果生成的方法的流程图。
这里描述的图是说明性的。在不脱离本发明的精神的情况下,可以对其中描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。此外,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且不暗示元件之间的直接连接而在元件之间没有中间元件/连接。所有这些变化都被认为是说明书的一部分。
在附图和以下对所公开的实施例的详细描述中,附图中所示的各种元件具有两位或三位的附图标记。除了较小的例外,每个附图标记的最左位对应于其中首先示出其元件的图。
具体实施方式
通常,具有单指令多数据(SIMD)架构的处理器被设计成最大化指令流水线中的并行处理量。在SIMD架构中,并行执行同一指令以处理多个数据输入。SIMD指令指定控制对多个数据输入的向量的操作的单个控制线程的执行和分支行为。向量是包括打包成一维阵列的一组数据元素的指令操作数。元素可以是整数或浮点值。大多数SIMD指令对向量操作数进行操作。向量也被称为SIMD操作数或分组操作数。操作数和数据路径宽度定义了可以一次处理多少数据;更宽的数据路径可以执行更复杂的功能,但是通常这以更高的实现成本来实现。此外,与指令输入元素相比,一些向量指令产生更宽宽度的结果。产生更宽结果的示例性指令包括但不限于将数据转换成更大数据格式的指令、乘法运算等。二进制浮点数可以三种数据格式中的任何一种来表示:短、长或扩展的。作为非限制性示例,短格式包括32位,长格式包括64位,并且扩展格式包括128位。因此,从短格式到长格式或从长格式到扩展格式的转换产生更宽宽度的结果。由于芯片上的布线限制,传统数据处理系统中SIMD执行单元所使用的结果总线提供了尺寸有限的结果。应当注意,即使相邻SIMD执行单元当前未被使用,传统的数据处理系统也执行上述操作以在多个指令周期上产生更宽的结果。这种低效率实际上降低了数据处理系统的吞吐量并增加了等待时间。
传统的数据处理系统使用不同的方法解决这些问题。一些传统系统采用具有流水线操作的分离指令事务模型。这种模型最少需要两个协处理器,其中指令被分成低部分和高部分,并且每个协处理器执行相应的部分。利用这种方法,需要最少两个协处理器指令来执行协处理器中的操作以及从协处理器取得操作结果。例如,第一协处理器可以执行乘法运算的高部分,而第二处理器可以执行乘法运算的低部分。相反,本发明的实施例采用单个事务模型,其中仅需要单个协处理器指令来启动操作并提供操作的结果。
通常,流水线主要通过减少每指令周期(CPI)来提高中央处理单元(CPU)性能,尽管它也可以将CPU时钟周期减少到较小的程度。流水线是一种将指令执行分解成一系列步骤的技术。流水线中的每一步骤(称为流水线级(pipestage))完成指令的完整执行的指定部分。每个流水线级以与装配线的站增加产品的完整制造的相同方式增加执行。指令使流水线的最后一个流水线级完全被执行,就像产品使装配线完全被组装一样。
理想地,等于包括流水线的流水线级的数量的指令的数量在执行时可以重叠,每个指令占用不同的流水线级。如果CPU有足够的资源,并且较早的流水线级不依赖于较晚的流水线级的完成结果,每个流水线级可以独立地执行它的功能(根据当前占用它的指令)与其它流水线级并行。此外,如果CPU完全执行指令所需的平均时间在流水线级之间被均等地划分,则用于顺序执行上的流水线执行的CPU吞吐量的加速将等于流水线级的数量。因此,对于包括五个流水线级的理想流水线,五个指令将在执行一个指令所需的平均时间内顺序执行;吞吐量的加速是五倍。注意,流水线不减少执行单个指令的平均时间,而是通过在单位时间内完成更多指令来减少总平均执行时间。
为了处理由浮点操作的执行产生的更宽的结果,一些流水线数据处理系统使用多个周期(与完成操作所需的一样多)来写入结果。此方法需要阻塞流水线,直到寄存器回写(WB)操作完成为止。应注意,常规数据处理系统所采用的上述两种方法均减少带宽且增加延时,因为它们均需要多个指令来产生运算结果和/或它们均需要多个周期来写入结果。上述方法的另一个缺点是它们需要附加的多路复用能力来重新组合与所执行的操作的结果相关联的数据元素。另一个缺点是,由于在处理级之间重新排列数据的必要性而需要的额外指令降低了代码密度,并且需要在存储器和高速缓存中的更多存储。应当注意,在数据转发阶段期间所需的每个附加周期通常导致增加处理器的工作负荷。
处理产生更宽输出的指令的不同常规方法是利用更宽的数据总线。然而,这种方案也不是非常有效的,这是因为设计中的额外复杂性和更高的实现成本。同时,因为仅有限数量的指令需要这种能力,所以这种特定的方案通常导致更宽数据总线的未充分利用。
通常,可以采用具有提供更大输出并具有通道掩蔽能力的专用指令的向量SIMD引擎来解决许多当前问题。例如,至少一些人工智能(AI)引擎处理小精度输入以累加并生成更高精度输出。本发明的实施例通过利用未使用的相邻SIMD引擎生成更宽的结果来解决所有上述问题。
现在参照附图,特别是参照图1,其中示出了根据本发明实施例的具有SIMD执行单元的数据处理系统的高级框图。如图所示,数据处理系统100包括SIMD引擎102,其经由指令总线108和地址总线110耦合到存储器114。SIMD引擎102从存储器114获取指令,并通过指令分派总线112将这些指令分派到选定的SIMD执行单元106a-106c。存储器114可以以具有不同速度和容量的不同级别实现。存储器的这种级别可以被构造为使得从层级中的任何特定级别的角度来看,来自处理器的下一更低级别被认为是高速缓存。高速缓冲存储器是提供缓冲能力的辅助存储器,通过该缓冲能力,相对慢且越来越大的主存储器可以在更接近SIMD引擎102周期时间的周期时间与SIMD引擎102(或下一更高等级的存储器)通过接口连接。
在图1所示的例子中,多个执行单元106a-106c是SIMD执行单元。因此,在数据处理系统100内,SIMD引擎102与SIMD执行单元106a-106c通过接口连接,作为数据处理系统100中的执行单元的类别中的其它“执行类别”。至少在一些实施例中,SIMD执行单元106a-106c可以用于执行浮点算术运算以及其他运算。SIMD执行单元106a-106c经由总线118a-118c与存储器114耦合。
数据处理系统100内的另一个执行单元可以包括例如加载/存储执行单元104。经由总线116耦合到存储器114的加载/存储执行单元104用于计算地址,并且在需要存储器访问的指令的执行期间将该地址提供给存储器114。加载/存储执行单元104可用于在其它执行单元中执行指令期间向存储器114提供地址。
现在参考图2,其中示出了根据本发明实施例的进一步示出SIMD执行单元内的部件以及SIMD执行单元与数据处理系统之间的接口的高级框图。如图所示,SIMD执行单元106包括控制单元202和多个处理元件204。控制单元202经由命令总线206将命令分派到选定的处理元件204。控制单元202经由数据总线208向处理元件204传送数据并从处理元件204接收数据。每个处理元件204通过单独的数据总线208耦合到控制单元202。
控制单元202经由指令总线212从CPU 210接收向量处理指令。二级高速缓存(L2高速缓存)214可用于存储用于所有执行单元(包括SIMD执行单元106)的数据和指令。L2高速缓存214经由数据总线216耦合到CPU 210。L2高速缓存214还经由数据总线218耦合到SIMD执行单元106内的控制单元202。高速缓存控制器220提供地址信号给L2高速缓存214。可由加载/存储执行单元104(参见图1)计算用于产生这种地址信号的地址。
图3是示出根据本发明实施例的重复使用相邻SIMD执行单元的未使用的结果输出的逻辑的图。图3左侧所示的SIMD执行单元106a和106b采用分离指令事务模型。SIMD执行单元106a和106b接收相应的输入302a和302b,并产生相应的输出304a和304b。如果期望执行的操作产生更宽的结果,SIMD执行单元106a和106b使用多个周期执行操作。相反,根据本发明的实施例,图3右侧所示的SIMD执行单元106a-106d采用分离指令事务模型和单个事务模型两者,并且被配置为选择性地重复使用相邻SIMD执行单元的未使用的结果输出,以便传递更宽的结果。有利地,所公开的单个事务模型显著地增加了数据处理系统100的吞吐量并减少了延时。此外,单个事务模型消除了实现更大结果总线304的需要。
更具体地,图3右侧所示的示例性配置包括第一SIMD执行单元106a、第二SIMD执行单元106b、第三SIMD执行单元106c和第四SIMD执行单元106d。第一SIMD执行单元106a经由第一局部连接308a与第二SIMD执行单元106b连接,第三SIMD执行单元106c经由第二局部连接308b与第四SIMD执行单元106d连接。如图3所示,第二SIMD执行单元106b与第四SIMD执行单元106d分别包括复用器310b与310d。第一复用器310b被配置为选择以及组合由第二SIMD执行单元106b计算的结果和由相邻的第一SIMD执行单元106A计算的结果的一部分,如本文所述。第二复用器310d被配置为选择并组合由第四SIMD执行单元106d计算的结果和由相邻的第三SIMD执行单元106c计算的结果的一部分。可注意,相邻的第二SIMD执行单元106b和第四SIMD执行单元106d仅在它们在所执行的操作期间可用的情况下才由数据处理系统100选择性地使用。
根据本发明的实施例,实现指令的子集,其中指令直接在两个相邻SIMD执行单元上执行计算,以在一个周期内产生更宽的结果。在一个实施例中,所实现的指令可以使用二进制浮点数据。特别地,本发明的一个实施例消除了使用附加布线和逻辑来放回指令执行结果的需要,允许它们在一个周期中以少量附加逻辑来执行;从而提高性能并降低功耗。这些指令包括例如加载延长(也可以称为加载扩展)指令。然而,由于加载延长指令对二进制浮点数进行操作,因此最初提供了与二进制浮点数有关的细节。二进制浮点数可具有多种格式,包括例如32位、64位和128位格式,并且每个格式具有包括例如符号410、指数412和有效数416(图4中所示)的表示。
通常,加载延长指令使用双精度浮点输入,并产生扩展的双精度浮点输出(即,大于由指令接收的输入的输出)。图4是示出根据本发明的实施例的向量浮点加载延长双精度(DP)指令的增强的图。如图4所示,常规的向量浮点加载延长指令需要两个周期(第一周期402和第二周期404)以使用64位来完成其操作。在第一周期402期间,常规的向量浮点加载延长指令对有效数416的一部分406(例如,低部分)执行操作。有效数416的大小太大以至于不能在第二周期404期间被操作。在第二周期404期间,常规向量浮点加载延长指令对浮点数的其它部分(例如,符号410、指数412和有效数416的第二部分414(高部分))进行操作。
此外,图4示出了根据本发明的实施例的增强的向量浮点加载延长DP指令420实现。增强的向量浮点加载延长指令对128位422、424进行操作。与常规的向量浮点加载延长指令相比,增强的向量浮点加载延长DP指令420在一个周期中对浮点数的所有分量406和414进行操作。如这里所述,增强的向量浮点加载延长指令可以利用相邻SIMD执行单元的结果总线来完成在一个周期中产生更宽结果的操作。
在SIMD计算机以及其它类型的计算机中,需要通常称为掩蔽(masking)的基本概念,以便在处理元件中有条件地执行各个运算。掩蔽使得被应用于处理元件的指令序列中的不同的指令仅在被应用于单独的处理元件的特定数据满足序列内的特定指令的条件的那些处理元件中被实现。在本领域中已知从应用于处理元件的指令序列中的某些指令中掩蔽特定的处理元件的不同的技术。使用掩蔽的现代SIMD机的详细概述可以在Horde,R.Michael在1990CRC Press Inc,Boca Raton,Fla的“SIMD架构中的并行超计算”中找到。另外,美国专利4,907,148和5,045,995也提供了在这些类型的系统中掩蔽的讨论。
图5是示出根据本发明实施例的动态通道掩蔽功能的图。图5示意性地示出了由具有8个通道(SIMD执行单元)106a-106h的SIMD电路500执行的示例性乘法运算,该通道具有通道掩蔽能力。在一个实施例中,多个SIMD执行单元106a~106h中的每一个包括掩码寄存器。在一个实施例中,掩码寄存器还可以包括保持单个掩码上下文(MC)位的掩码上下文寄存器和保持单个全局响应标志(GRF)位的全局响应标志寄存器。掩码上下文位与用于掩蔽指令中的特定机器操作而选择的位进行按位与操作,以便在指令调用期间启用或禁用特定SIMD处理单元,如下文将更详细描述的。
电路500内的SIMD执行单元106a-106h接收输入数据元素302a-302h,并且基于此执行所需的乘法,从而产生相应的结果数据元素304a-304h。假设每个输入数据元素是32位宽,则每个乘法数据元素将至少是64位宽。此外,SIMD引擎102(图1所示)包括用于控制相邻SIMD处理元件106a-106h对指令的选择性执行的逻辑。多个SIMD执行单元106a-106h被配置为利用相邻SIMD处理单元的结果总线来产生更宽的结果,如本文所述。SIMD引擎102被配置为指示所选择的SIMD执行单元106a-106h在一个周期内执行当前指令。在图5所示的示例中,第二SIMD执行单元106b、第四SIMD执行单元106d、第六SIMD执行单元106f、第七SIMD执行单元106g以及第八SIMD执行单元106h被遮掩。根据本发明的一个实施例,第一SIMD执行单元106a、第三SIMD执行单元106c、第五SIMD执行单元106e被配置为使用相应的相邻的被掩蔽的SIMD执行单元的结果总线,如图5所示。在一个实施例中,相邻的掩蔽的SIMD执行单元被配置为延迟任何指令的处理,直到从相应SIMD执行单元接收到计算结果的对应部分。
图6是根据本发明实施例的用于重复使用相邻SIMD执行单元以进行快速宽结果生成的方法的流程图。在框602中,SIMD引擎102将要被处理的下一指令加载到发出缓冲器(issue buffer)中。SIMD指令被保持在发出缓冲器中,直到所有通道掩蔽依赖性被解决。
在框604,SIMD执行单元106确定所接收的指令是否表示产生宽结果的SIMD操作。例如,可以请求SIMD执行单元106执行乘法,其中每个输入数据元素是32位宽,并且结果数据元素至少是64位宽,并且比结果总线更宽。产生更宽结果的SIMD操作的一些其他示例可包括但不限于从短格式到长格式的转换、从长格式到扩展格式的转换等。响应于确定所接收的指令不表示产生宽结果的操作(判定框604,“否”分支),在框608,SIMD执行单元106以常规独立模式发出指令。
根据本发明的实施例,响应于确定所接收的指令表示产生宽结果的操作(判决框604,“是”分支),在框606,SIMD执行单元106确定相邻SIMD执行单元是否可用(被掩蔽或未使用)。例如,参考图5,第一SIMD执行单元106a可以被配置为确定第二SIMD执行单元106b是否被掩蔽。
根据本发明的实施例,响应于确定相邻SIMD执行单元不可用(判定框606,“否”分支),在框610,SIMD执行单元106发出如图4所示的两个周期传统窄操作402、404的指令。如果SIMD执行单元106确定相邻SIMD执行单元可用(判定框606,“是”分支),则在框612,SIMD执行单元106发出如图4所示的新的一个周期宽操作420的指令。在框614,SIMD执行单元执行与发出的指令相关联的操作。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,可以由计算机可读程序指令来实现流程图和/或框图的每个框以及流程图和/或框图中的框的组合。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),该计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CDROM)、数字多功能盘(DVD)、存储棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如因特网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,该编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及常规的过程式编程语言(例如“C”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
在此参考相关附图描述本发明的各种实施例。在不偏离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中,阐述了在元件之间的各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不旨在在这方面进行限制。因此,实体的耦合可以指直接或间接耦合,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和过程步骤可并入具有本文未详细描述的额外步骤或功能性的更综合程序或过程中。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含”、“包括”、“具有”、“含有”或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列元素的组合物、混合物、工艺、方法、制品或装置不一定仅限于那些元素,而是可以包括未明确列出的或此类组合物、混合物、工艺、方法、制品或装置固有的其他元素。
另外,术语“示例性”在本文中用于表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例或设计不一定被解释为比其它实施例或设计更优选或有利。术语“至少一个”和“一个或多个”可以理解为包括大于或等于一的任何整数,即,一、二、三、四等。术语“多个”可以理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可以包括间接“连接”和直接“连接”两者。“
术语“约”、“基本上”、“大约”及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,“约”可以包括给定值的±8%或5%或2%的范围。
本发明的各种实施例的描述将出于说明的目的而呈现,但不旨在是详尽的或限于所揭示的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语是为了最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或为了使本领域的其他普通技术人员能够理解。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种用于处理具有扩展结果的指令的系统,所述系统包括:
第一指令执行单元,其具有用于执行处理器指令的第一结果总线;以及
第二指令执行单元,其通信地耦合到所述第一指令执行单元,所述第二指令执行单元具有用于执行处理器指令的第二结果总线,
其中,所述第一指令执行单元被配置为在处理器指令的执行期间在所述第二指令执行单元不用于执行所述处理器指令的情况下选择性地将由所述第一指令执行单元计算的结果的一部分发送到所述第二指令执行单元,并且其中,所述第二指令执行单元被配置为接收由所述第一指令执行单元计算的结果的所述部分且被配置为将所接收的部分放到所述第二结果总线上。
2.根据权利要求1所述的系统,其中,所述系统进一步包括指令执行单元集合,并且其中,所述结果的不同部分由所述指令执行单元的子集的不同的指令执行单元基于预定义的通道掩码来计算。
3.根据权利要求2所述的系统,其中,所述第一指令执行单元和所述第二指令执行单元包括单指令多数据(SIMD)处理单元,并且其中,所述处理器指令包括SIMD指令。
4.根据权利要求3所述的系统,其中,所述第一指令执行单元和所述第二指令执行单元包括掩码寄存器,并且其中,所述掩码寄存器被配置为存储所述预定义的通道掩码。
5.根据权利要求1所述的系统,其中,由所述执行的处理器指令产生的结果数据的宽度大于所述第一结果总线的宽度且大于所述第二结果总线的宽度。
6.根据权利要求1所述的系统,其中,所述第一指令执行单元被布置为邻近于所述第二指令执行单元。
7.根据权利要求1所述的系统,其中,所述处理器指令包括向量浮点(FP)加载延长指令。
8.根据权利要求1所述的系统,其中,所述处理器指令在一个计算周期中执行。
9.根据权利要求1所述的系统,其中,所述第一指令执行单元和所述第二指令执行单元被配置为采用单个事务模型。
10.一种用于处理具有扩展结果的指令的方法,所述方法包括:
确定所接收的处理器指令是否产生具有大于第一指令执行单元的第一结果总线的宽度且大于第二指令执行单元的第二结果总线的宽度的数据宽度的结果;
响应于确定所接收的处理器指令产生具有大于所述第一结果总线的所述宽度且大于所述第二结果总线的所述宽度的数据宽度的所述结果,确定所述第二指令执行单元是否不用于执行所接收的处理器指令,所述第二指令执行单元通信地耦合到所述第一指令执行单元;
响应于确定所述第二指令执行单元不用于执行所述处理器指令,在所述处理器指令的执行期间选择性地将由所述第一指令执行单元计算的结果的一部分发送到所述第二指令执行单元的所述第二结果总线。
11.根据权利要求10所述的方法,其中,确定所述第二指令执行单元是否不用于执行所接收的处理器指令进一步包括基于预定义的通道掩码确定所述第二指令执行单元是否不用于执行所接收的处理器指令。
12.根据权利要求11所述的方法,其中,所述第一指令执行单元和所述第二指令执行单元包括单指令多数据(SIMD)处理单元,并且其中,所述处理器指令包括SIMD指令。
13.根据权利要求12所述的方法,其中,所述第一指令执行单元和所述第二指令执行单元包括掩码寄存器,并且其中,所述掩码寄存器被配置为存储所述预定义的通道掩码。
14.根据权利要求10所述的方法,其中,所述第一指令执行单元被布置为邻近于所述第二指令执行单元。
15.根据权利要求10所述的方法,其中,所述处理器指令包括向量浮点(FP)加载延长指令。
16.根据权利要求10所述的方法,其中,所述处理器指令在一个计算周期中执行。
17.根据权利要求10所述的方法,其中,所述第一指令执行单元和所述第二指令执行单元被配置为采用单个事务模型。
18.一种用于处理具有扩展结果的指令的计算机程序产品,所述计算机程序产品包括具有与其一起体现的程序指令的计算机可读存储介质,所述程序指令可由一个或多个处理器执行以使所述一个或多个处理器执行方法,所述方法包括:
确定所接收的处理器指令是否产生具有大于第一指令执行单元的第一结果总线的宽度且大于第二指令执行单元的第二结果总线的宽度的数据宽度的结果;
响应于确定所接收的处理器指令产生具有大于所述第一结果总线的所述宽度且大于所述第二结果总线的所述宽度的数据宽度的所述结果,确定所述第二指令执行单元是否不用于执行所接收的处理器指令,所述第二指令执行单元通信地耦合到所述第一指令执行单元;
响应于确定所述第二指令执行单元不用于执行所述处理器指令,在所述处理器指令的执行期间选择性地将由所述第一指令执行单元计算的结果的一部分发送到所述第二指令执行单元的所述第二结果总线。
19.根据权利要求18所述的计算机程序产品,其中,确定所述第二指令执行单元是否不用于执行所接收的处理器指令进一步包括基于预定义的通道掩码确定所述第二指令执行单元是否不用于执行所接收的处理器指令。
20.根据权利要求19所述的计算机程序产品,其中,所述第一指令执行单元和所述第二指令执行单元包括单指令多数据(SIMD)处理单元,并且其中,所述处理器指令包括SIMD指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/565,946 | 2019-09-10 | ||
US16/565,946 US11269651B2 (en) | 2019-09-10 | 2019-09-10 | Reusing adjacent SIMD unit for fast wide result generation |
PCT/IB2020/057461 WO2021048653A1 (en) | 2019-09-10 | 2020-08-07 | Reusing adjacent simd unit for fast wide result generation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114365110A true CN114365110A (zh) | 2022-04-15 |
Family
ID=74850944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080063263.0A Pending CN114365110A (zh) | 2019-09-10 | 2020-08-07 | 重复使用相邻simd单元用于快速宽结果生成 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11269651B2 (zh) |
JP (1) | JP2022546785A (zh) |
CN (1) | CN114365110A (zh) |
DE (1) | DE112020003313T5 (zh) |
GB (1) | GB2603339B (zh) |
WO (1) | WO2021048653A1 (zh) |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4766564A (en) * | 1984-08-13 | 1988-08-23 | International Business Machines Corporation | Dual putaway/bypass busses for multiple arithmetic units |
US5045995A (en) | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
US4907148A (en) | 1985-11-13 | 1990-03-06 | Alcatel U.S.A. Corp. | Cellular array processor with individual cell-level data-dependent cell control and multiport input memory |
US5903772A (en) * | 1993-10-29 | 1999-05-11 | Advanced Micro Devices, Inc. | Plural operand buses of intermediate widths coupling to narrower width integer and wider width floating point superscalar processing core |
US5513366A (en) | 1994-09-28 | 1996-04-30 | International Business Machines Corporation | Method and system for dynamically reconfiguring a register file in a vector processor |
US6029244A (en) * | 1997-10-10 | 2000-02-22 | Advanced Micro Devices, Inc. | Microprocessor including an efficient implementation of extreme value instructions |
US6308252B1 (en) * | 1999-02-04 | 2001-10-23 | Kabushiki Kaisha Toshiba | Processor method and apparatus for performing single operand operation and multiple parallel operand operation |
US6260133B1 (en) * | 1999-02-08 | 2001-07-10 | Kabushiki Kaisha Toshiba | Processor having operating instruction which uses operation units in different pipelines simultaneously |
US8736623B1 (en) | 2004-11-15 | 2014-05-27 | Nvidia Corporation | Programmable DMA engine for implementing memory transfers and video processing for a video processor |
JP2008084009A (ja) | 2006-09-27 | 2008-04-10 | Toshiba Corp | マルチプロセッサシステム |
US7694112B2 (en) | 2008-01-31 | 2010-04-06 | International Business Machines Corporation | Multiplexing output from second execution unit add/saturation processing portion of wider width intermediate result of first primitive execution unit for compound computation |
US8051275B2 (en) | 2009-06-01 | 2011-11-01 | Arm Limited | Result path sharing between a plurality of execution units within a processor |
US9323521B2 (en) * | 2011-12-19 | 2016-04-26 | Silminds, Inc. | Decimal floating-point processor |
US9557993B2 (en) * | 2012-10-23 | 2017-01-31 | Analog Devices Global | Processor architecture and method for simplifying programming single instruction, multiple data within a register |
US10514928B2 (en) * | 2014-04-17 | 2019-12-24 | Arm Limited | Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
CN106537411B (zh) * | 2014-10-08 | 2019-12-17 | 深圳市汇顶科技股份有限公司 | 指纹传感器中的主动基线信号消除 |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
US10275391B2 (en) | 2017-01-23 | 2019-04-30 | International Business Machines Corporation | Combining of several execution units to compute a single wide scalar result |
-
2019
- 2019-09-10 US US16/565,946 patent/US11269651B2/en active Active
-
2020
- 2020-08-07 CN CN202080063263.0A patent/CN114365110A/zh active Pending
- 2020-08-07 WO PCT/IB2020/057461 patent/WO2021048653A1/en active Application Filing
- 2020-08-07 GB GB2203969.7A patent/GB2603339B/en active Active
- 2020-08-07 JP JP2022515759A patent/JP2022546785A/ja active Pending
- 2020-08-07 DE DE112020003313.9T patent/DE112020003313T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022546785A (ja) | 2022-11-08 |
DE112020003313T5 (de) | 2022-04-21 |
GB202203969D0 (en) | 2022-05-04 |
US11269651B2 (en) | 2022-03-08 |
GB2603339A (en) | 2022-08-03 |
US20210073000A1 (en) | 2021-03-11 |
WO2021048653A1 (en) | 2021-03-18 |
GB2603339B (en) | 2023-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10469397B2 (en) | Processors and methods with configurable network-based dataflow operator circuits | |
US11086816B2 (en) | Processors, methods, and systems for debugging a configurable spatial accelerator | |
US10515046B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US10445451B2 (en) | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features | |
US10380063B2 (en) | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator | |
CN108268278B (zh) | 具有可配置空间加速器的处理器、方法和系统 | |
US10416999B2 (en) | Processors, methods, and systems with a configurable spatial accelerator | |
US20190004878A1 (en) | Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
KR100690225B1 (ko) | 데이터 처리기 시스템 및 그룹화를 이용한 명령 시스템 | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
EP2569694B1 (en) | Conditional compare instruction | |
US6304954B1 (en) | Executing multiple instructions in multi-pipelined processor by dynamically switching memory ports of fewer number than the pipeline | |
JP2002333978A (ja) | Vliw型プロセッサ | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
US9965275B2 (en) | Element size increasing instruction | |
KR20100092805A (ko) | 재구성 가능한 구조의 프로세서 | |
US6026486A (en) | General purpose processor having a variable bitwidth | |
US20240004663A1 (en) | Processing device with vector transformation execution | |
US7143268B2 (en) | Circuit and method for instruction compression and dispersal in wide-issue processors | |
CN114365110A (zh) | 重复使用相邻simd单元用于快速宽结果生成 | |
David et al. | Self-timed architecture of a reduced instruction set computer | |
EP3314404A1 (en) | Processing header to interpret information regarding a group of instructions | |
US6922773B2 (en) | System and method for encoding constant operands in a wide issue processor | |
EP2666082B1 (en) | Integrated circuit device and method for calculating a predicate value |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |