CN108780395A - 矢量预测指令 - Google Patents
矢量预测指令 Download PDFInfo
- Publication number
- CN108780395A CN108780395A CN201780017670.6A CN201780017670A CN108780395A CN 108780395 A CN108780395 A CN 108780395A CN 201780017670 A CN201780017670 A CN 201780017670A CN 108780395 A CN108780395 A CN 108780395A
- Authority
- CN
- China
- Prior art keywords
- vector
- instruction
- mask
- processing
- value
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 485
- 238000012545 processing Methods 0.000 claims abstract description 164
- 230000004044 response Effects 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012360 testing method Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 22
- 239000000872 buffer Substances 0.000 claims description 108
- 230000002457 bidirectional effect Effects 0.000 claims description 13
- 230000006399 behavior Effects 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 description 46
- 238000010586 diagram Methods 0.000 description 24
- 230000009466 transformation Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 5
- 238000013139 quantization Methods 0.000 description 5
- 229920000208 temperature-responsive polymer Polymers 0.000 description 5
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 102100036822 Ankyrin repeat and KH domain-containing protein 1 Human genes 0.000 description 1
- 241001269238 Data Species 0.000 description 1
- 101000928335 Homo sapiens Ankyrin repeat and KH domain-containing protein 1 Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种装置包括处理电路4及指令解码器6,指令解码器6支持对矢量值的相应数据元素执行处理的多个路径的矢量指令。响应于矢量预测指令,指令解码器6控制处理电路4基于每个用于确定对应元素通过还是未通过测试条件的多个元素比较运算的结果而设置控制信息。该控制信息控制在矢量预测指令之后的预定数量之后续矢量指令的处理。通过矢量预测指令硬连接或识别该预定数量。对于该等后续矢量指令中的一个,基于通过对应数据元素的控制信息指示的结果掩码矢量处理的给定路径的给定部分的操作。
Description
技术领域
本技术涉及数据处理领域。更具体地,本技术涉及矢量指令的处理。
背景技术
一些数据处理系统支持矢量指令的处理,针对这样的矢量指令,指令的源操作数或结果值为包括多个数据元素的矢量。通过响应于单指令来支持多个不同数据元素的处理,可改进代码密度并减小指令的撷取及解码的负担。通过将数据值加载矢量操作数的各个元素中及使用单个矢量指令一次处理数据值的若干元素,可更有效地处理要处理的数据值数组。
发明内容
至少一些示例提供一种装置,该装置包括:处理电路,用于执行数据处理;以及指令解码器,用于解码矢量指令以控制处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径;其中响应于矢量预测指令,该指令解码器被配置为控制该处理电路根据每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件的多个元素比较运算而设置控制信息,该控制信息用于控制在待处理的指令序列内的该矢量预测指令后的预定数量的后续矢量指令的处理,其中该预定数量通过该矢量预测指令硬连接或识别;以及响应于该预定数量的后续矢量指令中的一个,该指令解码器被配置为控制该处理电路根据该元素比较运算的结果确定是否掩码与矢量处理的给定路径的给定部分关联的操作,该元素比较运算通过对应于该给定部分的该目标矢量值的数据元素的控制信息来指示;其中响应于至少一种类型的矢量指令,该指令解码器被配置为控制该处理电路独立于矢量处理的该多个路径执行额外操作;以及该处理电路被配置为当该预定数量的后续矢量指令中的一个为至少一种类型的矢量指令中的一个时独立于该控制信息执行该额外操作。
至少一些示例提供一种设备,该设备包括:用于执行数据处理的装置;以及用于解码矢量指令的装置以控制处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径;其中响应于矢量预测指令,该用于解码的装置被配置为控制该用于执行数据处理的装置根据每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件的多个元素比较运算而设置控制信息,该控制信息用于控制在要处理中的指令序列内的该矢量预测指令后的预定数量的后续矢量指令的处理,其中该预定数量通过该矢量预测指令硬连接或识别;以及响应于该预定数量的后续矢量指令中的一个,该用于解码的装置被配置为控制该用于处理的装置根据该元素比较运算的结果确定是否掩码与矢量处理的给定路径的给定部分关联的操作,该元素比较运算通过对应于该给定部分的该目标矢量值的数据元素的控制信息来指示;其中响应于至少一种类型的矢量指令,该用于解码的装置被配置为控制该用于执行数据处理的装置独立于矢量处理的多个路径执行额外操作;以及该用于执行数据处理的装置被配置为当该预定数量的后续矢量指令中的一个为至少一种类型的矢量指令中的一个时独立于该控制信息执行额外操作。
至少一些示例提供一种用于处理矢量指令的数据处理方法,该等矢量指令用于控制处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径,该方法包括以下步骤:解码矢量预测指令以控制处理电路根据每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件的多个元素比较运算而设置控制信息,该控制信息用于控制在要处理中的指令序列内的该矢量预测指令后的预定数量的后续矢量指令的处理,其中该预定数量通过该矢量预测指令硬连接或识别;以及响应于该预定数量的后续矢量指令中的一个,解码该后续矢量指令以控制该处理电路根据该元素比较运算的结果确定是否掩码与矢量处理的给定路径的给定部分关联的操作,该元素比较运算通过对应于该给定部分的该目标矢量值的数据元素的控制信息来指示;其中当该预定数量的后续矢量指令中的一个为该处理电路独立于矢量处理的该多个路径执行额外操作中的一个种类型的矢量指令时,控制该处理电路独立于该控制信息来执行该额外操作。
至少一些示例提供包括程序指令的虚拟机计算机程序以控制主机数据处理装置以提供对应于上文论述的装置的指令执行环境。
也可提供储存虚拟机计算机程序的计算机可读存储介质。存储介质可为非暂态存储介质。
附图说明
从以下结合附图阅读的示例的描述中,本技术的另外的方面、特征及优点将显而易见,其中:
图1示意地图示了支持矢量指令执行的数据处理装置的示例;
图2图示矢量预测指令的编码的示例;
图3图示使用矢量预测指令以控制响应于后续矢量指令而执行的处理的路径的部分的掩码的示例;
图4图示独立于矢量预测指令的结果响应后续矢量指令而执行更新地址指针的额外操作的示例;
图5至图7图示在执行矢量预测指令后掩码后续矢量指令的矢量操作的部分的示例;
图8图示响应于控制预定数量的后续指令的操作的矢量预测指令而设置的控制信息的示例;
图9为图示用于控制多少后续矢量指令由预测指令影响的掩码字段的不同编码的表格;
图10至图12图示使用多个掩码字段以支持连续矢量指令执行之间的不同数量的重叠的三个示例;
图13图示基于涉及多次比较的更复杂条件的评估来预测的示例;
图14图示根据在矢量指令的循环中处理的数据元素的数目来掩码矢量处理的路径的示例;
图15图示处理矢量预测指令的方法;以及
图16图示可使用的虚拟机实施方式。
具体实施方式
将在下文论述一些特定示例。应理解,本发明不限于该等精确示例。
在一些程序应用中,可能需要矢量处理的数据依赖控制流程,其中根据对应于彼等路径的目标矢量的元素值将某些矢量操作仅应用至矢量处理的选定路径。因此,提供用于比较目标矢量的元素与测试条件的指令支持,且选择是否基于目标矢量的对应元素的比较结果来掩码与矢量中的一个些部分关联的操作可能很有用。
这么做的一个方法为,在硬件中提供多个述词缓存器的组,可通过比较指令将元素比较的结果写入其中,在可通过后续指令引用其以控制用于后续指令的矢量处理中的一个路径的预测。然而,此方法的问题是,述词缓存器组增加电路面积及缓存器档案的功耗,其对功率效率为最重要准则中的一个的相对简单的处理器至关重要,以及此也增加当处理异常时保存或恢复的缓存器状态的数目,从而可增加处理器的复杂性。此外,指令集中的编码空间可能非常宝贵,且此方法大体需要将预测缓存器字段增加至每种类型的矢量指令,所以将会增加所需的指令编码宽度,从而增加快取、撷取、解码及处理指令时功耗。
相反,处理电路可具备支持矢量预测指令的解码的指令解码器,该矢量预测指令专用于控制许多后续矢量指令的预测。响应于矢量预测指令,解码器控制处理电路根据每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件的许多元素比较运算而设置控制信息,该控制信息用于控制在要处理中的指令序列内的矢量预测指令后的预定数量的后续矢量指令的处理。响应于后续矢量指令中的一个,指令解码器控制处理电路以基于处理电路响应于矢量预测指令设置的控制信息来确定是否掩码与矢量处理的给定路径的给定部分关联的操作。掩码给定路径的给定部分系根据元素比较运算的结果来确定,该元素比较运算通过对应于该给定部分的目标矢量值的数据元素的控制信息来指示。
因此,通过提供专用矢量预测指令,该专用矢量预测指令基于元素比较运算设置控制信息并控制用于预定数量的后续矢量指令的矢量处理的部分的选择性掩码,后续指令不一定在其等编码中指定述词缓存器说明符。后续矢量指令的编码可完全相同,犹如并未预测后续矢量指令一样。因此,完全相同指令若在矢量预测指令之后,则可触发不同于相同指令不在矢量预测指令之后的行为的处理器行为。通过分配特殊矢量预测指令(例如,使用不同的作业码),此举避免增加编码空间通常非常重要的后续矢量指令的指令编码大小。此方法也简化异常处理,因为不需要保存或恢复多个述词缓存器状态集,且避免对在硬件中提供多个述词缓存器的需要。
在一些示例中,可硬连接通过矢量预测指令影响的预定数量的后续矢量指令,以便总存在根据控制信息控制的固定量的后续矢量指令。例如,在一些示例中可硬连接的预定数目为一,以便当遇到矢量预测指令时,根据控制信息控制紧随其后的后续矢量指令,但此后的指令则独立于该控制信息来处理。
然而在其它示例中,可通过矢量预测指令识别该预定数量。因此,矢量预测指令可指定控制参数,该控制参数识别应根据控制信息而控制多少后续矢量指令。例如,架构可支持通过矢量预测指令指定的可变数目的后续矢量指令,最多达到某最大数目的指令。例如,最大数目可为四个或八个指令。通过赋能通过单个矢量预测指令预测的多个指令,相比于利用不同矢量预测指令个别地预测不同指令,此提高代码密度并减小撷取/解碼负担。
图1示意地图示支持矢量指令的处理的数据处理装置2的示例。应理解,此为便于说明的简图,并且实务上该装置可能具有为简明起见未在图1中图示的许多元素。装置2包括用于响应于通过指令解码器6解码的指令而执行数据处理的处理电路4。程序指令自存储器系统8中撷取并通过指令解码器解码以产生控制信号,该等控制信号控制处理电路4以该架构界定的方式处理指令。例如,解码器6可解释经解码指令的作业码及指令的任意额外控制字段以产生控制信号,该等控制信号引起处理电路4起动适合硬件单元来执行诸如算术运算、加载/储存操作或逻辑运算的操作。该装置具有用于储存由处理电路4处理的数据值及用于配置处理电路的操作的控制信息的一组缓存器10。响应于算术或逻辑指令,处理电路4自缓存器10读取操作数并将指令的结果写回至缓存器10。响应于加载/储存指令,数据值经由处理逻辑在缓存器10与存储器系统8之间传输。存储器系统8可包括一阶或多阶高速缓存以及主存储器。
缓存器10包括标量缓存器档案12,其包括用于储存包括单个数据元素的标量值中的一个定数量标量缓存器。指令解码器6及处理电路4支持中的一个些指令为标量指令,该等标量指令处理自标量缓存器12读取的标量操作数以产生回写至标量缓存器的标量结果。
缓存器10也包括矢量缓存器档案14,其包括各自用于储存包括多个数据元素的矢量值中的一个定数量矢量缓存器。响应于矢量指令,指令解码器6控制处理电路4以对自矢量缓存器14中的一个读取的矢量操作数的各别元素执行矢量处理的多个路径,以产生写入至标量缓存器12的标量结果或写入至矢量缓存器14的另一矢量结果。一些矢量指令可自一个或多个标量操作数产生矢量结果,或可对在标量缓存器档案中的标量操作数执行额外标量运算以及对自矢量缓存器档案14读取的矢量操作数执行矢量处理的路径。因此,一些指令可为混合-标量-矢量指令,其中一个或多个源缓存器及指令的目的地缓存器的至少一个为矢量缓存器14及一个或多个源缓存器及目的地缓存器的另一个为标量缓存器12。矢量指令也可包括引起数据值在矢量缓存器14与存储器系统8中的位置之间传输的矢量加载/储存指令。加载/储存指令可包括存储器中的位置对应于连续的地址范围的连续矢量加载/储存指令,或散射/集合类型矢量加载/储存指令,其指定一定数量个不同地址并控制处理电路4将来自彼等地址的每个的数据加载矢量缓存器的各别元素中或将来自矢量缓存器的各别元素的数据储存至离散地址中。
处理电路4可支持具有一定范围不同数据元素大小的矢量的处理。例如,128位矢量缓存器14可经分隔成例如十六个8位数据元素、八个16位数据元素、四个32位数据元素或两个64位数据元素。缓存器组10内的控制缓存器可指定正使用的当前数据元素大小,或替代地此可为要执行的给定矢量指令的参数。
缓存器组10也包括用于储存控制处理电路4的操作的控制信息的缓存器。控制缓存器可包括缓存器,诸如用于指示对应于当前执行点的指令的地址的程序计数缓存器、指示在当处理异常时保存/恢复缓存器状态的堆栈数据结构的存储器系统8中位置的地址的堆栈指针缓存器、及用于储存在函数的执行后处理分叉进入的函数返回地址的链路缓存器。为简明起见该等未在图1中图示。
如在图1图示,缓存器也包括用于追踪矢量化循环的进展的循环计数器16、用于储存指示当前正处理的矢量中每个数据元素中的位计数的参数的元素大小缓存器18、用于储存指示一个矢量缓存器中的位总数的参数的矢量宽度缓存器20及用于控制矢量操作的预测的矢量述词缓存器22。该等将在下文更详细地描述。在一些示例中,在制造装置期间根据在给定装置的矢量缓存器14中实施的特定矢量宽度来硬连接矢量宽度缓存器20。或者,若矢量缓存器档案14支持具有不同矢量宽度的不同配置,则矢量宽度缓存器20可经程序化以指示正使用的当前宽度。类似地,若特定元素大小总用于给定装置则元素大小缓存器18可硬连接,或若装置支持使用不同数据元素大小的矢量的处理则元素大小缓存器18可变。在一些示例中,例如若每个矢量指令指定用于该指令的元素大小,则可省去元素大小缓存器18。尽管循环计数器16示为专用控制缓存器,但其它示例可使用通用标量缓存器12中的一个来追踪矢量化循环的进展。
图2图示用于控制预定数量的后续矢量指令的预测的矢量预测指令(VPT指令)的示例。矢量预测指令指定包括以下各者的多个字段:
·作业码30,识别此指令为VPT指令;
·元素大小字段32,指定通过VPT指令处理的目标矢量的数据元素的大小;
·条件字段34,指定通过矢量预测指令应用的测试条件。例如,可指定测试条件为EQ(等于)、NE(不等于)、GT(大于)、GE(大于或等于)、LT(小于)、LE(小于或等于)中的一个;
·掩码字段36,指定用于控制多少后续矢量指令通过矢量预测指令来预测的掩码值。掩码字段也可识别后续矢量指令的至少一个应作为then条件矢量指令(「T指令」)还是else条件矢量指令(「E指定」)来处理。对于T指令,若通过VPT指令测试的目标矢量的对应元素未通过其测试条件,则掩码对矢量的给定部分的操作。对于E指令,若通过VPT指令测试的目标矢量的对应元素通过其测试条件,则掩码对矢量的给定部分的操作。
·目标矢量缓存器字段38,指定矢量缓存器Qa,该矢量缓存器Qa储存逐个元素应用测试条件的目标矢量值;
·比较值字段40,指定与目标矢量比较的参考值;以及
·组合旗标字段41,其指定矢量述词缓存器22中的述词条件是否应设置为比较运算的结果以确定目标矢量的每个元素是否满足测试条件,或矢量述词缓存器22中的预测条件是否应设置为与在矢量述词缓存器22中的预测条件之前值组合的比较运算的结果。
应理解,图2仅图示VPT指令的可能编码的示例。将指令编码的哪些特定位分配至每个字段为特定实施方式的任意设计选择。
VPT指令触发各自对应于目标矢量的元素的各别一个的一系列元素比较运算。可提供不同形式VPT指令(通过不同作业码或通过识别比较类型的指令的另一字段来识别),其各自提供不同类型的比较:
·对于矢量比较VPT指令,比较值字段40指定储存另一矢量值的第二矢量缓存器Qb,且每个元素比较运算比较在缓存器Qa中的目标矢量的给定元素与在缓存器Qb中的另一矢量的对应元素。
·对于标量比较VPT指令,比较值字段40指定储存标量值的标量缓存器,且元素比较的每个比较缓存器Qa中的目标矢量的对应元素与缓存器Rb中的相同标量值。
·对于常数比较VPT指令,每个元素比较比较缓存器Qa中的目标矢量的对应数据元素与预定常数。该常数可识别为比较值字段40中的立即值,或可为从识别常数比较VPT指令的作业码中隐含的预定值(例如0)。
图3示意地图示响应于VPT指令而执行的操作的示例。在此示例中,VPT指令具有矢量比较形式,因此第二缓存器字段40指定矢量缓存器Qb。在此情况下,条件字段34指定GT条件,因此响应于VPT指令,指令解码器6产生控制信号,该等控制信号控制处理电路4执行多个元素比较运算,其中每个元素比较运算比较矢量Qa及矢量Qb的对应数据元素Qai、对应数据元素Qbi以确定矢量Qa的元素Qai是否大于矢量Qb的对应元素Qbi(其中在此示例中i在0与3之间)。响应于VPT指令,处理电路4设置矢量述词缓存器(vector predicate register;VPR)22的控制信息,指示每个元素比较运算的结果。在此示例中,对于路径0、路径1及路径3,矢量Qa中的对应元素大于矢量Qb中的对应元素,因此通过了测试条件。另一方面,对于路径2,Qa2≤Qb2,因此未通过GT测试条件。
当执行在VPT指令后的预定数量的后续矢量指令的一个(诸如在图3的示例中图示的矢量乘加(vector multiply add;VMLA)指令)时,处理电路4读取设置在VPR22中的控制信息,并基于比较运算的结果控制是否掩码与矢量处理的给定路径的给定部分关联的操作,该比较运算的结果通过VPT指令比较的目标矢量的对应元素的控制信息来指示。在此示例中,VMLA指令的数据元素大小与VPT指令的数据元素大小相同,因此VMLA指令的处理的每个路径对应于VPT指令的单个元素并根据对应元素比较运算的结果来掩码或不掩码VPT指令的单个元素。因此,对于路径0、路径1及路径3,VMLA指令乘以矢量Qa、矢量Qc的对应元素并将该等乘法的乘积累加至标量缓存器Rn中。因为在路径2中未通过测试条件,因此掩码与此路径关联的操作,因此乘积Qa2*Qc2并不影响标量缓存器Rn中的值。
掩码路径2中的操作可以不同方式执行。例如,可完全地抑制在路径2中元素的乘法。或者,可仍然执行乘法,但抑制将其结果加至目的地缓存器中。大体上,以任何方式执行掩码可确保矢量的掩码部分的矢量处理不影响指令的结果。例如,赋能信号可提供至矢量的每个部分,其控制该部分的结果是否写入目的地缓存器中。
尽管图3图示通过在前的VPT指令来预测单指令的示例,但VPT指令可预测多个后续指令(最多达到某最大数)且掩码字段36可指定多少指令应根据控制信息而受控制。将在下文更详细地论述此内容。
图4图示使用VPT指令的第二示例。此次VPT指令为标量比较VPT指令,因此比较目标矢量Qa的数据元素的每个与来自缓存器Rn的相同标量值。此次所应用的测试条件为GE及其在路径0中通过且在路径1及路径3中未通过。在此示例中后续矢量指令为矢量处理的每个路径包括储存操作的矢量储存(VSTR)指令,该储存操作用于将矢量操作数Qa的对应元素储存至存储器中基于标量缓存器Rn中的指针地址来计算的位置中。然而,因为VPT指令未通过路径1至路径3的测试条件,在此情况下仅执行路径0的储存操作,而掩码路径1至路径3的储存操作(因此,不将路径1至路径3中的元素的储存请求发至存储器系统8)。
不同于图3中的示例,对于图4中的储存指令,指令解码器6解码储存指令以控制处理电路4以执行独立于矢量处理的路径的额外指针更新操作,另外还执行对应于矢量处理本身的各别路径的储存操作(一些储存操作可在计算用于储存的地址之前更新指针,而之后其它形式可更新该指针)。不管使用指针的储存前增量还是储存后增量,不管VPT指令通过还是未通过每个路径中的各别测试条件,可执行图4的底部图示的指针更新操作以将立即值加至标量缓存器Rn。也即,指针数据操作可为独立于通过VPT指令设置的控制信息而执行的额外操作。因此,不管VPT指令的结果如何,总是进行指针更新操作。预测影响用于后续指令的矢量处理的路径,但独立于矢量处理的路径的后续指令的一个所触发的另一非矢量操作,诸如标量缓存器更新,不受路径掩码影响。即使VPT指令导致掩码给定矢量指令的所有路径,也执行该额外非矢量操作。
上文论述的VPT指令可用于赋能具有数据依赖控制流程的循环的矢量化。具有包括数据依赖操作的循环的高阶程序代码的示例显示如下:
for(int i=0;i<LEN;i++){
if(data[i]>=THRESHOLD){data[i]=0;
}
}
因此,存在要处理的长度LEN的元素的数组数据[],且对于数组的每个元素数据[i],元素将与阈值比较及若元素小于阈值则设置为0。在纯的标量指令的情况下,数组的每个元素将需要要执行若干指令(一个加载来自存储器中的数据,一个将其与阈值比较,而另一个在数据值小于阈值时将0值写回至存储器中)。
当使用矢量指令将此编译进组合程序代码中时,可提供以下序列:
VMOV Q7,#0
DLSTP.32LR,R4,loopEnd//R4=LEN
loopStart:
VLDR.32Q0,[R2]//R2=数据指针
VPT.32GE,Q0,R0//R0=THRESHOLD
VSTR.32Q7,[R2],#16//基于VPI的VSTR的路径预测
DLE loopStart loopEnd:
因此,执行循环,其中循环的每次迭代包括用于处理数组的多个元素的矢量指令。加载指令VLDR将来自存储器中的数组的数据值块加载矢量缓存器Q0中。VPT指令比较该等元素的每个与缓存器R0中的标量阈值,并基于每个元素比较的结果设置控制信息。逐个元素地预测后续储存指令VSTR,以便其仅将值#0储存至数组中VPT指令确定前数据值大于或等于阈值的元素。注意,通过允许进行储存指令VSTR的指针更新,即使VPT指令掩码全部路径(如上文图4论述),此也赋能增加数据指针R2以便循环的下一次迭代将存取来自存储器中的数组的下一个数据块。因此,此类VPT预测对支持矢量化循环很有用。
此方法避免对储存指令本身的需要,该储存指令包括在其识别应使用哪些述词信息的编码中的信息,且避免对提供专用述词缓存器组的需要,该专用述词缓存器组可由特定矢量指令来引用。反的,在组合程序代码中的VPT指令之后的多个指令仅假定为受VPT指令的影响而不管其等编码如何。此举也通过减少要保存及恢复的状态的数目来简化异常处理。
图5至图7图示通过在其前面加上VPT指令来控制矢量操作的执行的三个另外示例。在图3及图4的示例中,VPT指令的数据元素大小与要预测的后续矢量指令的数据元素大小相同,但此不重要,且图5至图7图示元素大小不同的三个示例。在图5的示例中,VPT指令指定小于基于预测控制的后续矢量加法(VADD)指令的数据元素大小。在此情况下VPT指令可导致设置控制信息,该控制信息在16位元素的粒度下指定通过还是未通过测试条件的结果,但由VPT指令预测的后续矢量加法指令可增加两个输入矢量的各别32位元素以提供如图所示的总和0、总和1、总和2、总和3的各个总和结果。
如图5图示,在一个方法中,由VPT设置的控制信息可包括对矢量缓存器的对应部分设置中的一个连串赋能位45(也称为「述词位」),其中每个赋能位45指示映像至矢量缓存器的对应部分的元素的元素比较运算对VPT指令通过还是未通过。因此,图5中图示的VPT指令产生将对对应于通过测试条件的16位路径的部分设置等于「1」的赋能位,及对未通过测试条件的其它路径设置等于「0」的赋能位。在此示例中,赋能位45各自对应于目标矢量的8位部分。因此,若VPT指令的数据元素大小大于8位(例如在此示例中的16位),则根据目标矢量的对应元素通过还是未通过测试条件将多个邻接赋能位块45设置为相同值(1或0)。
当执行后续VADD指令时,若对应于该部分的赋能位为VPR22中的0,则抑制目的地缓存器Qr的给定部分的写入。因此,若VADD指令的数据元素大小大于VPT指令的数据元素,则此可导致仅将VADD指令的路径的结果的部分写入目的地缓存器Qr中(例如,查看图5中的路径2,其中仅将路径的结果sum2的较低部分写入目的地缓存器Qr中,因为在由VPT指令测试的矢量的对应部分中,元素E4通过测试条件但元素E5未通过)。因此,若由于元素大小不匹配赋能位仅部分地对给定路径设置,则并非路径结果的所有位可输出至目的地缓存器。
或者,如图7图示,另一种方法为基于对应于该路径的赋能位中的一个而控制的每个路径的掩码,以便仅可总体上掩码或不掩码路径。例如,在路径2中将总和值sum2写入至缓存器Qr可依赖于对应于彼路径的最低有效赋能位47(例如,在此情况下不掩码路径2,因为VPT指令的目标矢量的对应部分中的最低元素E4通过其测试条件,而不管元素E5是否未通过)。此方法可对诸如加载/储存指令中的一个些类型的矢量指令更佳,该等指令中执行数据字的仅部分的加载/储存是不当的或不实际的。
一些系统可用在控制缓存器中或在指定应使用哪个选项的VPT指令的编码中所设置的可程序化参数来支持图5及图7中图示的两种方法。其它硬件实施例可支持图5或图7中图示的技术中的一个者或另一者。实务上,图5中图示的方法在硬件中实施可较容易,因为在矢量的给定部分与用于控制掩码该部分的特定赋能位45之间存在固定映像,而不管用于后续矢量指令的特定数据元素大小如何。
如图6图示,后续矢量指令也可能具有小于VPT指令的数据元素大小。在此情况下,对应于在VPT指令中测试的目标矢量的相同数据元素的全部字节赋能位45经设置为相同值,1或者0,且这根据对应元素比较的结果来控制后续矢量指令中的更小数据元素组掩码还是不掩码。
因此总体而言,在VPT指令的元素与在后续矢量指令中处理的元素之间可存在一对一、一对多或多对一映射。掩码在后续指令中处理的全部路径不重要,因为如图5图示当两个指令的数据元素中存在大小不匹配时也可能仅部分地抑制给定路径的部分。大体上,对于后续矢量指令,控制信息根据对经受VPT指令的目标矢量中的对应元素执行的元素比较运算的结果来控制是否掩码给定路径的给定部分。
同时,如图5图示,对于怎样掩码在数据元素的给定部分中的操作存在不同选项。如路径0所示,一个选项为,将对其作掩码操作的目的地缓存器的部分设置为预定值。或者,目的地缓存器的被掩码部分可保持其等的前值以便在非掩码路径中的加法指令的新结果与先前在被掩码路径中的相同目的地缓存器中储存的旧值合并。因此,有时VPT指令可指定(经由其作业码或单独控制参数)使用合并还是清零预测。或者,被预测的指令(例如,在图5至图7的示例中的VADD)可指示应该应用合并还是清零预测,这再次可经由作业码或单独控制参数来进行。
用于掩码的另一种选项为,一起去能执行对于矢量的被掩码部分的矢量操作,例如以抑制对于矢量路径的给定部分执行的算术运算。
图8图示控制信息响应于VPT指令在VPR22中储存的示例。VPR22包括用于指示各别元素比较运算的结果的述词字段50,及用于根据该述词字段来控制哪些后续矢量指令要处理中的一个或多个掩码字段52。在此示例中,存在用于支持如下文论述的矢量指令的重叠执行的多个掩码字段52,但可能使用仅单个掩码字段52来实施VPR22。
述词字段50可指定如上文所提及的赋能位45。每个赋能位对应矢量缓存器块,该矢量缓存器块对应于系统支持的最小元素大小。例如,若矢量宽度为128位且所支持的最小元素大小为8位,则述词缓存器可包括各自对应于矢量的8位块(一个字节)的16字节赋能位。在以下示例中,若允许用于矢量的对应8位矢量块的对应操作,则将字节赋能位设置为1,且若掩码该操作,则将字节赋能位设置为0。应理解,其它系统可相反解释赋能位,并当对应赋能位为1时掩码操作。
注意,因为可能转变用于处理如下文示例中图示的T/E指令的述词字段50的位,述词字段50并不总明确地指示由VPT指令执行的元素比较的实际结果(其可当处理E指令时指示相反结果)。在替代实施例中,若保持识别元素比较运算的实际结果的信息很重要,则可在指示赋能位「1」还是赋能位“0”应该触发矢量的对应部分的矢量操作掩码的VPR22中提供额外then/else位。此可允许支持在VPT后的“then”指令块及“else”指令块而无需翻转述词字段50的状态。then/else位将随后控制当自VPR缓存器读出其等以控制掩码时使用未改变还是转变的述词字段50。
掩码字段52基于述词字段50的内容来追踪多少剩余矢量指令要掩码。当执行VPT指令时,将每个掩码字段52设置为如图9的表格中图示来编码的初值。用于给定VPT指令的初始掩码值可通过VPT指令本身的掩码字段36来指定,或可通过一些逻辑电路自VPT指令中编码的其它信息来导出。然而,直接编码指令中的初始掩码值可能最简单。不同VPT指令语法VPT、VPTT、VPTE、VPTTTE等用于简化对哪些后续指令受VPT指令影响的理解,其中要预测的最多四个后续指令I0、I1、I2、I3的图案通过在VPT指令语法的结尾的字母T及E的集合来指示。此处,“T”表示在矢量中对应于未通过其测试条件的元素的部分中应用掩码的“then条件”指令,而“E”表示在矢量中对应于通过其测试条件的元素的部分中应用掩码的“else条件”指令。
4位掩码值识别待通过可在1与4之间的VPT指令来预测的后续矢量指令的数目。要预测的后续矢量指令的数目由在掩码值中的最小有效「1」位的位位置来表示。若最低有效“1”位处于最高有效位(0b1000),则仅预测一个后续指令I0。若最低有效“1”位处于第二个最高有效位(0bx100,其中x为0或者1),则预测两个后续指令I0及I1。若最低有效“1”位处于第三个最高有效位(0bxx10),则预测三个后续指令I0、I1及I1。若最低有效“1”位处于最低有效位(0b之前1),则预测所有四个后续指令I0、I1、I2、I3。
在VPT指令之后的第一个指令I0总视为T指令。在要预测的后续矢量指令的数目多余1的编码中,上文图示的「x」位值(在最低有效「1」位与掩码值的最高有效末端之间的位位置处)指示要预测的T指令及E指令的图案。大体上,在最低有效1位与掩码的顶端之间的此掩码部分中等于1的每个位值指示,在状态中存在自T指令至E指令的变化,或反的也然。例如,掩码编码0b0001指示所有四个后续指令I0-I3为T,因为在上三个位中不存在“1”位,因此没有后续指令改变相对于先前指令的T/E状态。另一方面,例如掩码编码0b0110表示三个后续指令I0-I2分别预测为T、T、E,因为第一个“0”指示I1为与I0(两个T)相同的T/E状态,而下一个位“1”指示I2为与I1相反的T/E状态,即I2为E指令。类似地,掩码位的其它图案可以图9中图示的方式来解译。
图10至图12图示怎样将掩码值设置为初值赋能根据正确的预测结果及T及E指令的所需图案来处理的后续指令的三个示例。
矢量指令的执行分成称为「节拍」的多个部分,其中每个节拍对应于预定大小的矢量段的处理。节拍为完全执行或根本不执行且不能部分地执行的矢量指令的原子部分。在一个节拍中处理的矢量段的大小通过架构界定且可为矢量的任意分数。在图10至图12的示例中,节拍经定义为对应于四分中的一个矢量宽度的处理,以便每矢量指令存在四个节拍。显而易见,此仅为一个示例且其它示例可使用不同数目的节拍,例如两个或八个。对应于一个节拍的矢量段可为等于、大于或小于正在处理的矢量的数据元素大小。因此,即使元素大小在实施方式之间变化或在不同指令之间的运行时间下变化,节拍仍为矢量处理的某个固定宽度。若在一个节拍中正处理的矢量段包括多个数据元素,则可在各别元素之间的界限处去能进位信号以确保独立地处理每个元素。若在一个节拍中处理的矢量段对应于元素的仅部分及硬件不足以并列计算若干节拍,则在处理中的一个节拍期间产生的进位输出可作为进位输入而输入至下一个处理节拍,以便两个节拍的结果共同形成数据元素。
处理电路4的不同硬件实施方式可在抽象架构时钟中的一个“计数单位(tick)”中执行不同数量的节拍。这里,“计数单位”对应于架构状态前进的单位(例如,在简单架构上每个计数单位可对应于更新与执行指令关联的所有架构状态的实例,包括更新程序计数器以指向下一个指令)。熟习此项技术者应当理解,诸如布置管线的已知微架构技术可意味着单个计数单位可能需要多个时钟循环来在硬件位准下执行,并且确实在硬件位准下的单个时钟循环可以处理多个指令的多个部分。然而,该微架构技术对软件不可见,因为计数单位在架构阶层下为原子级。为了简明起见,在本揭示案的进一步描述期间忽略该微架构。
如图10图示,一些处理电路4可具有充足硬件以并行执行给定矢量指令的所有节拍,以便在每个计数单位中执行四个节拍。这意谓在架构位准下重叠执行不同指令不是必需的,因为全部指令可在一个计数单位中完成。如图10图示,当存在包括矢量预测指令及许多后续指令I0至I4的矢量指令序列时,一个指令的处理在结束前一个指令后才开始。
图10的下部图示当控制指令序列时在VPR22中设置的控制信息的示例。第1列至第5列图示分别在计数单位1至计数单位5结束时设置的VPR控制信息(即,用于分别控制在计数单位2至计数单位6中的指令I0至指令I4的处理的控制信息)。在此示例中,VPT指令指定为VPTTTE,所以响应于VPT指令根据图9中图示的编码将掩码值0011写入VPR22的掩码字段52的每个中。VPT指令在此示例中指定32位的数据元素大小,因此VPT指令的处理的每个节拍触发32位元素的对应元素比较(在此示例中,数据元素大小匹配在一个节拍中处理的处理单元,但此并不重要)。VPT指令的目标矢量的路径0及路径3未通过其等测试条件,而路径1及路径2通过,因此设置VPR22的述词字段50,对应于路径1及路径2的字节赋能位等于“1”且对应于路径0及路径3的字节赋能位等于“0”。
当处理后续矢量指令时,若掩码字段为非零,则基于在字段50中的述词位应用预测。若掩码字段具有全部设置为“0”的位,则不应用预测。因此,在计数单位1结束时掩码字段已设置为0011,因此在计数单位2中后续矢量指令I0基于述词缓存器50中的字节述词位来预测,且掩码与述词位为0的矢量部分关联的操作。指令I0为T指令,因为掩码正应用在VPT指令未通过测试条件的矢量部分中。
当在计数单位2结束时自指令I0切换至指令I1时,掩码字段的每个左移了一个位位置以产生如图10的第2列中图示的已更新掩码值。在此点处移出掩码字段的顶部位具有位值0,因此不转变述词字段50并保持原样,以便指令I1也视为T指令。再次,因为在计数单位3期间掩码字段为非零,基于述词字段50选择性地掩码指令I1。
在计数单位3与计数单位4之间,当自指令I1切换至指令I2时,掩码字段再次左移了一个位置且又移出掩码的顶部位为0,因此不存在述词字段的转变。因此,指令I2也视为T指令。图10的第3列图示用于指令i2的VPR值。
然而,当指令I2切换至指令I3时,掩码字段的左移导致位值1移出该掩码,且这触发述词字段50的转变以便如图10的第4列中图示“1”及“0”翻转值。第4列图示用于计数单位5中的指令I3的控制信息。因为述词位已翻转,则I3为E指令,因为其掩码将应用在原始VPT指令通过测试条件的矢量的部分中,并且此次将不掩码原始VPT指令未通过其测试条件的矢量的部分。这与将指令I1-I3指示为如原始VPT指令指定的TTE的一致。
最终,当在计数单位5结束时自指令I3切换至指令I4时,再次对每个掩码字段应用左移且这导致将移出掩码的最后“1”位,以便掩码值现在全变成0。这意谓独立于述词字段50的内容处理在计数单位6中要处理的随后指令I4,以便其不以VPT指令的结果为前提。因此,吾人可以看到,通过将掩码值设置为定位最低有效“1”位的值,以便其可在预定数量的后续指令之后移出掩码,这控制多少指令受述词值影响,该述词值响应于VPT指令来设置。在此情况下,“1”放置在掩码的最低有效位处,因此移出需要四个后续移位,所以这意谓四个后续指令I0至I3通过VPT指令来预测。
注意,因为在计数单位5结束时移出的顶部掩码字段为“1”,应用另一种转变以翻转为计数单位6作好准备的述词字段50中的位,尽管当掩码变成全0时,述词位不管怎样都不会影响指令I4的结果。首先,这使得硬件更简单,因为当移出的顶部位为1时述词字段的位可简单地转变(不需要额外电路以当掩码字段变成全0时侦测特殊情况并在此情况下抑制该转变)。此外,在VPT指令块结束时转换述词位可用于将预测位50设置为数个值,该等值可随后通过VPT指令的“AND”形式来用于评估测试条件的更复杂组合,如下文根据图13所论述。
图10图示将掩码字段52的每个设置为同一值并当处理每个矢量指令的适当节拍时读取的示例。当在执行不同矢量指令之间不存在重叠时,替代方法将为仅将VPT指令写入掩码字段中的一个(例如,掩码字段0)且当预测后续指令时矢量处理的每个节拍引用同一掩码字段。若处理器仅支持图10中图示的形式的非重叠执行,则提供仅单个掩码字段是足够的。或者另一种方法在此种情况下将为,仅实施与单掩码字段(MASK0)关联的数据储存器,但将该掩码字段的值复制至全部其它掩码字段。此方法会提供处理电路中的一个致视图至软件,而不管重叠指令还是不重叠指令。若处理器实施该复制流程,则其通常忽略写入复本掩码字段MASK1至MASK3。
然而,在更小、更能量高效的处理器中,可能不存在充足的硬件资源以并行处理给定矢量指令的全部节拍。例如,矢量处理单元的宽度可能更狭小,例如为总矢量缓存器中的一个半宽度,且在此情况下给定矢量指令的处理将需要架构时钟的两个计数单位,一个用于处理头两个节拍而另一个用于处理次两个节拍,如图11图示。尽管在该情况下仍然执行无任何重叠的矢量指令是可能的,以便第一个一旦完成就开始第二个指令,但这可导致可用硬件资源的低效使用。在使用矢量指令的应用中,存在不同类型的矢量指令的相对均匀混合相对常见,诸如一方面与存储器系统8互相作用的加载/储存指令及另一方面诸如乘法的算术指令。若处理在加载/储存指令与乘法指令之间交替,则当相对昂贵硬件块中的一个(诸如乘法累加单元或加载/储存单元)保持未使用时无重叠地执行指令可导致相对长的时段,从而降低效能且消耗更多功率。
如图11图示,若处理可重叠不同矢量指令的执行则可获得资源的更高效利用,以便第二矢量指令的节拍的第一子集与第一指令的节拍的第二子集并行执行。在图11的示例中,指令I0的节拍0及节拍1与VPT指令的节拍2及节拍3并行执行,且指令I0/I1及指令I1/I2以类似方式重叠。尽管此重叠执行并不总是可能的(例如,在指令之间可能存在依赖性,或若两个连续指令需要同一硬件单元,则第二个指令可能需要等到第一个指令完成),在许多情况下使用不同硬件单元的矢量指令可在不同路径之间不具有任何依赖性,因为许多矢量操作大部分处在同一路径内。例如,尽管给定矢量指令I1的路径0可取决于先前指令I0的路径0的结果,但I1的路径0不可能取决于I0的路径1、路径2、路径3,因此一旦I0的路径0完成则可开始I1的路径0(且其它连续矢量指令的情况类似)。通过以图11中图示的方式重叠执行指令中的一个些节拍,可改进给定硬件单元的使用百分比以提高处理效能。此举也可有助于通过减少诸如乘法累加单元的相对昂贵硬件块必须保持工作的时间来节省功率。
图11图示当以此方式重叠执行时设置在VPT指令的VPR22中的控制信息的示例。图11的第1列至第4列图示分别在计数单位1至计数单位4结束时设置的VPR的内容(即,用于控制分别在计数单位2至计数单位5中处理的节拍的操作的VPR内容)。在给定指令的节拍0及节拍1期间设置/读取的掩码字段0及掩码字段1,且在给定指令的节拍2及节拍3期间设置/读取掩码字段2及掩码字段3。类似地,述词字段对应于节拍分别有效地分成零及一个或两个及三个。
在计数单位1中,执行VPT指令的节拍0及节拍1。这次指定VPT指令为VPTT,VPTT指示在VPT指令后的两个后续指令要预测且将其等两者视为then指令(T)。因此,VPT指令的节拍0/节拍1根据图9的编码控制将掩码值0100写入掩码字段0/1。掩码字段2及掩码字段3保持其等的前值,若不存在最新的VPT指令该等前值通常为0000。这次,元素大小为16位位,即一个节拍中的一个半,因此节拍0及节拍1一起对16位元素执行四次元素比较运算,且将该等元素比较的结果写入述词字段50的下半部中。因为在矢量的8位块的粒度下来指定述词位,所以每16位元素比较运算中存在两个位,因此根据在每个元素中比较的结果来将位对设置为0或1。
在计数单位2中,基于在述词字段50的更低块中的述词值来控制矢量指令I0的头两个节拍,因为掩码字段0及掩码字段1为非零。I0为T指令,因为不存在述词字段的下半部的翻转,因为其已由VPT指令设置。此外,在计数单位2期间,也执行VPT指令的节拍2及节拍3,且这导致对目标矢量的上四个16位元素执行另一元素比较。处理电路4设置述词字段的上半部以指定指示每个元素比较的结果的字节述词位。再次,因为将VPT指令指定为VPTT,在掩码字段2及掩码字段3中将初始掩码值设置为0100。因为在计数单位2期间VPT指令已写入掩码字段2及掩码字段3,在计数单位2结束时不再左移该等掩码字段。然而,在计数单位2结束时,将掩码字段0、掩码字段1左移一个位位置以产生用于控制后续指令I1的节拍0及节拍1的掩码(因为VPT指令并不在此计数单位中更新该等字段)。在此阶段移出掩码字段0、掩码字段1的位等于0,因此不存在述词字段的下半部的转变。因此,在计数单位3开始时,VPR22如图11的第2列图示。
在计数单位3中,所有掩码字段为非零的。指令I1的节拍0及节拍1基于掩码字段0及掩码字段1来控制并基于述词字段50的下半部来预测,且指令I0的节拍2及节拍3基于掩码字段2及掩码字段3来控制并基于述词字段50的上半部来预测。
在计数单位3结束时,将所有掩码字段左移一个位位置。对于掩码字段2/3,此导致在计数单位2结束时掩码字段0/1发生相同转移,且再次移出的位为零,因此不存在述词字段50的上半部的翻转。然而,对于掩码字段0/1,现在左移导致正移出该掩码字段的最后“1”位值及该等掩码字段为全零,其意谓在计数单位4期间指令I2的节拍0及节拍1将独立于述词来执行。此为正确的处理,因为VPTT指令应仅影响下两个矢量指令,因此I2将不会依赖于预测。因为移出掩码字段0及掩码字段1的顶部位为“1”,述词字段50的下半部在计数单位3与计数单位4之间变换时转变。然而,掩码字段2及掩码字段3在计数单位4中仍为非零的(查看图11的第3列),因此在计数单位4期间执行的指令I1的节拍2及节拍3仍依赖于述词字段50的上半部分。
最后,在计数单位4结束时对每个掩码字段应用另一种左移,且这导致掩码字段2/3也变成全零,以便在计数单位5期间独立于预测值50来执行指令I2的节拍2及节拍3。此外,因为移出掩码字段2及掩码字段3的顶部位为“1”,述词字段50的上半部在计数单位4与计数单位5之间变换时转变。
概括而言,通过掩码字段及对应正执行的矢量指令的节拍的述词字段的部分来独立地控制后续矢量指令的每个节拍的处理。类似地,述词字段的部分是否在计数单位结束时转变,取决于移出对应于该部分的掩码字段的位为1还是0。
图12图示在连续指令之间执行更大程度的重叠的另一示例。处理电路4可具有每计数单位仅支持一个处理节拍的处理硬件,因此给定矢量指令的处理可能需要延续四个计数单位。在维持硬件单元的更高使用的情况下,其中在其等执行中可交错可能的不同矢量指令以便第二指令的节拍0与如图12的顶部的图表图示的前面指令的节拍1并行启动。
在此情况下,给定指令的节拍0至节拍3各自从掩码字段0至掩码字段3的对应一个设置或读取,且述词字段50也分成四等分,其中每四分中的一个在VPT指令的处理的对应节拍之后来设置。图12的第1列至第7列图示分别在计数单位1至计数单位7结束时VPR 22的内容(即,用于控制分别在计数单位2至计数单位8中执行的处理的节拍的控制信息)。这次VPT指令指定为VPTEE,且数据元素大小为8位,因此每个节拍对应四个元素且述词字段50的每个字节述词位独立于其它位,根据由VPT指令指定的目标矢量的对应8位元素的元素比较的结果来设置。
在计数单位1中,执行VPT指令的节拍0并将掩码字段0设置为1010以指示VPTEE指令。根据对应元素比较的结果将述词位写入述词字段50的下四分中的一个中。
在计数单位2中,在图12的第1列中图示的VPR内容用于处理指令I0的节拍零以便其基于在述词字段50的下四分中的一个中的述词位来预测。此外在计数单位2中,执行VPT指令的节拍1且其将初值1010写入掩码字段1并基于对应元素比较的结果来更新述词字段的第二个四分中的一个中的述词位。在计数单位2结束时不存在掩码字段0的左移,且当移出的掩码字段的顶部位为“1”时,存在述词字段的下四分中的一个的转变以便在计数单位3开始时,VPR 22的内容如图12的第2列中图示。因为翻转了述词字段的下四分中的一个,这意谓在计数单位3期间,指令I1的节拍0表示“else”指令,因为在对应VPT指令通过测试条件的部分的矢量的部分中将掩码其操作。
类似地,如在图12的剩余列中图示,当执行VPT指令的不同节拍时,基于对应元素比较的结果填充述词字段50的对应部分且每个连续掩码字段在连续计数单位中设置为初值。在每次计数单位结束时,将所有掩码字段左移一个位位置,且存在任一掩码字段的述词字段的对应部分的转变,在任一掩码字段中移出的位等于“1”。最后,每个掩码字段变成全零,一旦全部“1”位已移出,这对于不同掩码字段就会交错,以便给定掩码字段在计数单位的时间中将变成全零,在该计数单位的时间中应处理指令I3的对应节拍(因为I3为独立于该述词处理的第一指令)。类似地,交错述词字段的各个等分的转变以匹配对应TEE指令I0、指令I1、指令I2的交错执行。
概括而言,通过提供多个掩码字段,为微架构设计者提供灵活性,能根据功率预算及可用电路面积及在给定应用的效能及能量效率之间权衡来实施不同的硬件设计。高效能系统可使用图10的方法以允许并行处理所有节拍,而更低功率系统可使用在图11或图12中的方法。通过定义架构中的多个掩码字段,这避免限制应提供什么特定形式的执行资源,其赋能架构跨一定范围的功率及效能点而得以使用。
尽管图9至图12图示掩码字段编码,其使用最低有效“1”位的位位置以指示由VPT指令预测的剩余指令的数目,并每次处理另一指令左移掩码字段,在其它实施例中,可以相反方式编码掩码字段,其中设置为“1”的最高有效位表示剩余指令的数目,并且响应于每个后续指令应用右移。此外,除了使用识别要预测的指令的数目的“1”位,并当移出“1”时触发述词字段50的转变,此操作可使用等于“0”的位来进行。因此,更通常待由VPT指令预测的预定数量的指令可通过离掩码字段的给定端的最远位的位位置来表示,该掩码字段的给定端具有预定位值(其中预定位值为“0”或者“1”),并响应于每个后续矢量指令,掩码字段可向给定端移动一个位位置。若移出的位具有预定位值,则转变对应于彼掩码字段的述词字段的至少一部分。
此外,使用等于1或0的最低/最高有效位的位位置预测的剩余矢量指令的数目并不是必需的。尽管此技术有用,因为其赋能使用掩码字段的剩余位相对有效地编码T/E指令的图案,但其它技术可用于指示怎样处理后续矢量指令。例如,掩码字段50可简单地指定指示要预测的剩余矢量指令的数目的二进制数值,该二进制数值响应于VPT指令设置为预定数,随后在每个后续指令之后递减直到其达到零,在达到零时将独立于述词字段50来处理下一个矢量指令。T/E指令的图案可由与指示要预测的剩余指令数目的值分开的字段来指示,而非使用如图9图示的单个编码值。
当发生异常事件时可将VPR22的内容保存至堆栈,并在异常的处理之后,所保存的VPR值可自堆栈恢复至VPR,以便处理可自由异常打断的点继续。这避免了在异常返回之后VPT指令的重复处理的需要。
在图10至图12图示的示例图示在VPT指令后之后来指令的每一个为矢量指令的情况。然而,有时后来指令中的一个可为标量指令或一些其它类型的非矢量指令。在此情况下,标量或非矢量指令可独立于VPR的内容操作以便独立于矢量预测来执行其功能。然而,标量指令的执行可仍然触发转移VPR22的掩码字段,以倒数要处理的另一个剩余指令。因此,尽管VPT指令指定若VPT指令为矢量指令则预测预定数量的后续指令槽,但实际上并非所有槽为矢量指令。或者,当遇到非矢量指令时可能不移动掩码缓存器,在此情况下,由VPT指令实际上影响的矢量指令的数目将不取决于是否存在任何中间非矢量指令。
此外,有时程序员或编写员可在一个VPT指令后追加后续指令块内原本由第一VPT指令来预测的另一VPT指令。在此情况下,第二VPT指令可重设VPR22的对应掩码字段为初始掩码值,从而有效地重新启动计算在VPT块中的剩余指令的数目。因此,包括第二矢量预测指令也可中断VPT块并停止由早先VPT指令预测全部指令。实务上,若程序员或编写员意图包括在第一指令后不久的第二VPT指令,则其等将正常地编码第一VPT指令以便其VPT块在第二个出现之前结束,例如通过选择掩码初值以便在预测之后存在较少指令。
指令解码器可支持如下的VPT指令中的一个些变体:
·VPT:上文论述的基本VPT指令,其控制处理电路4以独立于由控制信息指示的任一前预测结果,根据对目标矢量执行元素比较运算的结果设置VPR 22中的控制信息。因此,VPT指令重设述词字段50为由对应元素比较运算确定的赋能位值45。此外VPT指令以上文论述的方式设置掩码字段52以控制根据述词字段50控制哪些后续矢量指令。
·VPTA:VPT指令的AND形式,对于该形式,由响应于VPT指令执行的元素比较运算导致的赋能位45与在述词字段50中的对应位及写入至述词字段50的结果相加。以与VPT指令相同的方式设置掩码字段52。因此,当在VPTA指令之后执行后续矢量指令中的一个时,矢量操作的掩码不仅取决于由VPTA指令执行的比较,也取决于用于设置述词字段50的上述比较的结果。
·VCMP:比较指令,其触发对目标矢量的多个元素比较运算及设置述词字段50以指示比较的结果(独立于通过控制信息指示的任一前预测结果),但其不设置掩码字段52或者将掩码字段52设置为全零,因此不导致根据预测而控制后续矢量指令。
·VCMPA:VCMP指令的AND形式,对于该形式,由对目标矢量执行元素比较运算导致的赋能位45可与上述由述词字段50指示的对应位、及写入述词字段50(类似于VPTA指令)的AND的结果相加,但其不设置掩码字段52或者将掩码字段52设置为全零,因此不导致根据述词而控制后续矢量指令。
除非另有说明,否则对上文描述中的VPT指令的引用也适用于VPTA。上文展示的VCMP及VCMPA指令每个指示是否未通过测试条件的比较产生一个布尔结果,而非多位条件代码,该码指示可用于条件状态范围的条件状态。在由VCMP或VCMPA执行的元素比较的宽度大于单字节的情况下,应理解每次比较产生的单个布尔结果可储存在多个字节述词位中,其中述词字段50内具有相同值。VCMP指令仅留下掩码字段52还是将其等清零,可在一些实施方式的硬件中固定,或可根据由VCMP指令指定的参数来选择。在一些实施例中,VCMP及VCMPA指令可作为分别具有设置为0的掩码字段的VPT及VPTA指令来实施,使得预测的后续指令的预定数量为0(因此不需要单独作业码以指示VCMP及VCMPA指令)。
通过支持彼等指令变体,此举允许可不通过使用指令序列建立的单指令评估的更复杂的逻辑条件。例如:
高阶代码:
for(int i=0;i<LEN;i++){
if((data[i]<THRESHOLD)&&(data[i]>-THRESHOLD)){data[i]=0;
}
}
组合程序代码:
VMOV Q7,#0
RSB R1,R0,#0//R0=THRESHOLD,R1=-THRESHOLD
DLSTP.16LR,R4,loopEnd//R4=LEN loopStart:
VLDR.16Q0,[R2],#2//R2=数据指针
VCMP.16LT,Q0,R0
VPTA.16GT,Q0,R1//与以上LT比较组合GT比较
VSTR.16Q7,[R2]!,#2//基于以上VPI的VSTR的路径预测
DLE loopStart loopEnd:
图13图示响应于控制后续VSTR指令的操作的VCMP及VPTA指令而设置字节述词位45的示例。因此,在此示例中VCMP指令使用LT条件(对应于高阶代码中的「data[i]<THRESHOLD」)比较目标矢量Q0的每个数据元素与标量阈值R0,并设置VPR22的述词字段50中的述词位45以指示比较的结果。后续VPTA指令基于GT条件(对应于高阶代码中的「data[i]>-THRESHOLD」)将该等赋能位与目标矢量Q0与缓存器R1的对应元素比较的结果相加,以便最终结果为满足该等准则的两者的彼等元素(在此示例中矢量Q0的元素2、元素4及元素5),赋能位为1。随后后续储存指令VSTR掩码与赋能位为0的路径关联的储存操作。在此示例中,储存指令为紧接的矢量储存指令,其中每个非掩码储存操作的地址通过增加缓存器R2中的基本地址至n此增量值(inc)来计算,其中n为相关路径的数据元素位置(例如,路径2中的储存值堆积储存至R2+2*inc)。应理解,其它示例可使用非紧接的(散射)储存指令,其中每个非掩码储存操作使用目标地址,该目标地址基于在矢量缓存器中的一个中指定的地址矢量的对应元素来确定。
尽管VPT及VCMP指令的AND形式在上文论述过,但定义其它类型的指令也是可能的,对于该其它类型的指令,控制信息经设置以指示目标矢量值的给定数据元素的述词结果,其依赖于该多个元素比较运算的对应一个的结果及由该控制信息指示之前述词结果。例如,上述述词结果及新元素比较的述词结果可通过诸如OR、NAND、XOR等的其它逻辑运算来组合。
如上文提及的,当图10及图12中图示的技术与当移出对应掩码字段52的顶部位为“1”时转变的述词字段50的相关部分的位一起使用时,此产生当到达VPT块的结尾时转变的述词位(因为移出掩码的最后“1”位以将掩码字段对下一个计数单位留下全0)。尽管当不预测下一个指令时转变述词位看似无意义,但此举可对设置后续VPTA或VCMPA指令的适宜预测条件很有用。例如,考虑以下指令:
VPTA AL,Qa,Qb
VNOP.
VPTA指令通过与其相加而将其结果与述词旗标之前值组合。此举实际上不会改变述词值,因为测试条件指定为AL(总是满足),所以前述词旗标全部与“1”相加。VNOP指令为VPT块中的仅有指令且为不会正常触发至数据缓存器状态的任何改变的非操作(no-op;nooperation)指令。然而,因为当移出掩码的最高有效位为1时硬件转变述词位50,所以VPTA及VNOP指令的作用为转变VPR22中的述词条件而无任何其它副作用。因此,此提供了对VPR22的述词字段评估「NOT」逻辑运算的方式。帝莫根定律允许以AND及NOT的组合方式表示任何基于「OR」的条件,所以与AND形式VPTA及VCMPA指令的提供一起在VPT块的末端的转变行为意谓可评估任何复杂链条件以控制后续指令块的预测。
在上文的示例中,VPT/VPTA指令控制处理电路4以对目标矢量的各别元素执行元素比较运算。然而,这不是必需的并且在一些示例方式中矢量预测指令可基于通过先前指令(诸如上文所论述的VCMP或VCMPA指令)执行的比较来设置控制信息来控制预定数量的后续矢量指令的处理。因此,响应于矢量预测指令本身进行元素比较运算不是必需的。然而,实务上,响应于单指令,执行元素比较及设置用于控制后续矢量指令的控制信息两者更有效,因为其减少了需要执行的指令的数目、降低了在存储器中储存程序、快取要执行的指令、撷取及解码指令的负担。
如图14图示,在VPT指令之后应用的预测可能不为正使用的预测的仅有形式。如上文所提及,矢量指令的常见用途为在矢量化循环中,其中某一序列的操作需要应用于在储存在存储器中的数组80的每个元素a0、a1等。每高阶代码中的元素迭代一次的循环可编写成包括具有较少迭代的循环的矢量代码,每个循环将块元素加载矢量缓存器中,使用一连串矢量指令处理元素,并将处理的每个路径的结果储存回至存储器。因此,每次迭代可处理对应于一个矢量缓存器中的数据元素的数目的块元素。若要处理的数组中的元素的总数为NE及一个矢量NV中的数据元素的数目(等于矢量宽度VW除以数据元素大小ES),则整个数组可处理最少NE/NV次迭代。然而,往往元素NE的总数可能不为一个矢量中元素NV的数目的整数倍,因此在循环的最终迭代中,并非矢量的所有元素都将被填充要处理的实际值。若允许未填充路径中的处理无掩码进行,则此举可引起错误。例如,超出数组80的末尾的存储器地址空间可能尚未映像在页表中,所以若对于在处理数组的末尾的最终迭代中的“未使用”路径中的一个执行加载/储存操作,则相邻于数组存在存储器存取故障或数据损坏。
因此,期望在循环的最终迭代中掩码未使用路径中的操作。如图1图示,处理电路4可具备用于控制赋能还是掩码给定矢量化循环的哪些路径的循环预测电路90。在启动矢量化循环时,将循环计数器16设定为指定在循环中要处理的元素总数NE的值。例如,循环启动指令可指定元素的数目(例如查看上文示例中的循环启动指令DLSTP哪个引用储存数组长度LEN的缓存器R4)。在循环的每次迭代结束时,自循环计数器16减去一个矢量NV中的元素的数目以计算要处理的剩余元素的数目NErem。在启动给定循环迭代时,若NErem<NV,则循环预测电路90控制处理电路4以掩码与矢量处理的上NV-NErem路径关联的操作,例如通过本身抑制矢量处理的路径(例如阻止发出载入/储存请求)及/或去能在掩码路径中写入处理的结果来掩码。
若当循环预测电路90已确定应掩码一些路径时在迭代中执行VPT或VPTA指令,则不管VPT指令的结果如何,掩码用于VPT指令之后的后续矢量指令的彼等路径。例如,由循环预测电路90提供的控制信号可与自VPR 22中预测赋能位产生的任何掩码控制信号相加,以确定是否应掩码总体特定路径。另一方面,对于由循环预测电路90来掩码而不需要的其它路径,由VPT/VPTA指令设置的述词位控制是否以上述相同的方式来掩码与彼等路径的部分关联的操作。
图15图示处理矢量预测的方法。在步骤100中,指令解码器6确定要解码的指令是否为矢量预测指令。若否,则根据相关指令的功能解码指令。当遇到矢量预测指令时,在步骤102,指令解码器6产生控制信号以控制处理电路根据对由矢量预测指令指定的目标矢量值的各别元素来执行的该元素比较运算,将控制信息设置为VPR 22。在步骤104,指令解码器6控制处理电路以处理预定数量的后续指令,其中掩码与给定路径的部分的给定部分关联的操作,该给定路径根据由在矢量述词指令后的控制信息指示的目标矢量的对应元素的对应元素比较运算的结果来控制。
图16图示了可使用的虚拟机实施方式。尽管前文描述的实施例以用于操作支持相关技术的特定处理硬件的装置及方法方式实施本发明,但也可能提供硬件装置的所谓虚拟机实施方式。该等虚拟机实施例在运行支持虚拟机程序130的主操作系统140的主处理器150上运行。通常,需要大功率处理器以提供在合理速度下执行的虚拟机实施方式,但该方法在某些情况下为合理的,诸如当期望为了兼容性或重新使用原因而运行另一处理器的本端代码。虚拟机程序130提供至客程序120的虚拟硬件接口,其与原本由真实硬件提供的硬件接口相同,该真实硬件为由虚拟机程序130模型化的装置。因此,可以使用虚拟机程序130自客程序120内执行包括对如上所述的存储器存取的控制的程序指令,以模型化其与虚拟机硬件的互动。客程序120可为裸金属程序,或者其可为以与主OS 140运行虚拟机应用130相似的方式运行应用的客操作系统。也应理解,存在不同类型的虚拟机,并在一些类型中存在直接在主硬件150上运行的虚拟机而无需主操作系统140。
在本申请案中,使用用语“被配置为…”意味着装置元素具有能够执行所定义操作的结构。在此上下文中,“配置”意味着硬件或软件的互连的排列或方式。例如,装置可具有提供定义操作的专用硬件,或处理器或其它处理元素可经程序化以执行功能。“被配置为”不暗示装置元素需要以任何方式改变以便提供所定义的操作。
尽管本文已参考所附图式详细地描述本发明的说明性实施例,但应理解,本发明并不限于彼等精确实施例且熟习此项技术者可在不背离如随附申请专利范围所定义的本发明的范畴及精神的情况下在其中实施各种改变及修改。
Claims (25)
1.一种装置,包括:
处理电路,用于执行数据处理;以及
指令解码器,用于解码矢量指令以控制所述处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径;
其中响应于矢量预测指令,所述指令解码器被配置为控制所述处理电路根据多个元素比较运算来设置控制信息,所述多个元素比较运算中的每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件,所述控制信息用于控制在待处理的指令序列内的所述矢量预测指令后的预定数量的后续矢量指令的处理,其中所述预定数量由所述矢量预测指令硬连接或识别;以及
响应于所述预定数量的后续矢量指令中的一个,所述指令解码器被配置为控制所述处理电路根据所述元素比较运算的结果确定是否掩码与矢量处理中的给定路径的给定部分关联的操作,所述元素比较运算通过对应于所述给定部分的所述目标矢量值的数据元素的所述控制信息来指示;
其中响应于至少一种类型的矢量指令,所述指令解码器被配置为控制所述处理电路独立于矢量处理的所述多个路径执行额外操作;以及
所述处理电路被配置为当所述预定数量的后续矢量指令中的一个为所述至少一种类型的矢量指令中的一个时独立于所述控制信息执行所述额外操作。
2.如权利要求1所述的装置,其中响应于所述矢量预测指令,所述指令解码器被配置为控制所述处理电路执行所述多个元素比较运算。
3.如权利要求2所述的装置,其中所述指令解码器被配置为支持以下各项中的至少一个:
矢量比较矢量预测指令,针对所述指令,每个元素比较运算依赖于所述目标矢量值的所述对应数据元素与另一矢量值中的对应元素中的比较,所述另一矢量值保存在由所述矢量预测指令指定的缓存器中;
标量比较矢量预测指令,针对所述指令,每个元素比较运算依赖于所述目标矢量值的所述对应数据元素与标量值中的一个比较,所述标量值保存在由所述标量预测指令指定的缓存器中;以及
常数比较矢量预测指令,针对所述指令,每一个元素比较运算依赖于所述目标矢量值的所述对应数据元素与预定常数的比较。
4.如任意前述权利要求所述的装置,其中对于所述预定数量的后续矢量指令的至少一个,所述矢量预测指令识别后续矢量指令为then条件矢量指令还是else条件矢量指令;
对于识别为then条件矢量指令的所述后续矢量指令中的一个,所述处理电路被配置为当对应于所述给定部分的所述目标矢量值的所述数据元素未通过所述测试条件时掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作;以及
对于识别为else条件矢量指令的所述后续矢量指令中的一个,所述处理电路被配置为当对应于所述给定部分的所述目标矢量值的所述数据元素通过所述测试条件时掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作。
5.如任意前述权利要求所述的装置,包括用于储存所述控制信息中的一个述词缓存器,其中响应于根据所述控制信息来控制的处理的所述预定数量的后续矢量指令中的一个,对于至少一些类型的后续矢量指令,所述处理电路被配置为自所述相同述词缓存器读取所述控制信息而无论所述后续矢量指令的编码如何。
6.如任意前述权利要求所述的装置,其中所述控制信息包括多个位旗标,每个位旗标对应于所述目标矢量值中的相应部分并指示包括所述目标矢量值的所述部分的数据元素通过还是未通过所述测试条件。
7.如任意前述权利要求所述的装置,其中所述控制信息包括:
述词字段,指示所述多个元素比较运算的结果;以及
掩码字段,用于根据所述述词字段来控制要处理的后续矢量指令。
8.如权利要求7所述的装置,其中响应于所述矢量预测指令,所述指令解码器被配置为控制所述处理电路将所述掩码字段设置为初值,其中所述预定数量通过离所述掩码字段的给定端的最远位的所述位位置来表示,所述最远位具有预定位值。
9.如权利要求8所述的装置,其中在所述初值中,在所述掩码字段的所述最远位与所述给定端之间的位具有指示所述后续矢量指令是否为以下项的位值:
then条件矢量指令,针对所述指令,所述处理电路被配置为当对应于所述给定部分的所述目标矢量值的所述数据元素未通过所述测试条件时掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作;或
else条件矢量指令,针对所述指令,所述处理电路被配置为当对应于所述给定部分的所述目标矢量值的所述数据元素通过所述测试条件时掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作。
10.如权利要求8和9中的任一项所述的装置,其中响应于所述预定数量的后续矢量指令中的一个,所述处理电路被配置为将所述掩码字段向所述掩码字段的所述给定端移动一个位位置。
11.如权利要求10所述的装置,其中所述处理电路被配置为当移出所述掩码字段中的位具有预定位值时转变所述述词字段的至少一部分的位。
12.如权利要求7-11中的任一项所述的装置,其中响应于给定矢量指令,所述处理电路被配置为执行每个对应于矢量值中的区段的多个处理节拍;以及
所述控制信息包括每个对应于所述预定数量的后续矢量指令的处理中的一个相应节拍的多个掩码字段。
13.如权利要求12所述的装置,其中所述处理电路被配置为支持第一矢量指令与第二矢量指令的重叠执行,其中所述第二矢量指令的节拍中的第一子集与所述第一矢量指令的节拍中的一个第二子集并行执行。
14.如权利要求13所述的装置,其中当处理所述矢量预测指令的节拍的所述第一子集或所述预定数量的后续矢量指令中的一个时,所述处理电路被配置为使用所述多个掩码字段中的第一掩码字段;以及
当处理所述矢量预测指令的节拍的所述第二子集或所述预定数量的后续矢量指令中的一个时,所述处理电路被配置为使用所述多个掩码字段中的第二掩码字段。
15.如任意前述权利要求所述的装置,其中所述处理电路包括循环预测电路以根据由矢量指令中的一个循环处理的数据元素数目及每矢量值的数据元素数目,来确定是否应在所述循环中的一个给定迭代期间掩码矢量处理的任何路径;以及
响应于所述预定数量的后续矢量指令中的一个,所述指令解码器被配置为控制所述处理电路以当所述循环预测电路确定应掩码所述给定路径时,独立于响应于所述矢量预测指令而设置的所述控制信息,掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作。
16.如任意前述权利要求所述的装置,其中响应于第一类型矢量预测指令,所述指令解码器被配置为控制所述处理电路独立于由所述控制信息指示的先前述词结果,根据所述多个元素比较运算中的结果来设置所述控制信息。
17.如任意前述权利要求所述的装置,其中响应于第二类型矢量预测指令,所述指令解码器被配置为控制所述处理电路以设置所述控制信息以指示所述目标矢量值中的一个给定数据元素中的一个述词结果,所述目标矢量值依赖于所述多个元素比较运算中的对应一个的结果及由所述控制信息指示的先前述词结果;以及
在所述第二类型矢量预测指令中的一个之后,响应于所述预定数量的后续矢量指令中的一个,所述指令解码器被配置为控制所述处理电路根据由对应于所述给定部分的所述目标矢量值的数据元素的所述控制信息指示的所述述词结果来控制是否掩码与矢量处理的所述给定路径的所述给定部分关联的操作。
18.如任意前述权利要求所述的装置,其中所述指令解码器被配置为解码矢量比较指令以产生控制信号以控制所述处理电路根据以下各项中的一项设置所述控制信息:
多个元素比较运算,其各自用于确定目标矢量值中的一个对应数据元素通过还是未通过测试条件;或
所述控制信息及多个元素比较运算的先前值,所述多个元素比较运算各自用于确定目标矢量值中的一个对应数据元素通过还是未通过测试条件。
19.如任意前述权利要求所述的装置,其中所述处理电路被配置为通过以下各项中的一项掩码与矢量处理的所述给定路径的所述给定部分关联的所述操作:
抑制对应于所述给定路径的所述给定部分的目的地矢量缓存器中的一个部分的更新;
将对应于所述给定路径的所述给定部分的所述目的地矢量缓存器的部分设置为预定值;以及
抑制所述给定路径的所述矢量处理。
20.如任意前述权利要求所述的装置,其中响应于所述预定数量的后续矢量指令中的一个,所述处理电路被配置为根据所述控制信息分别为给定路径的每部分确定是否掩码与矢量处理的所述给定路径的所述部分关联的所述操作,所述控制信息对应于该部分的所述目标矢量值的数据元素而指示。
21.如权利要求1-19中的任一项所述的装置,其中响应于所述预定数量的后续矢量指令中的一个,所述处理电路被配置为根据所述控制信息确定是否来与矢量处理中的一个给定路径整体关联的操作,所述控制信息对应于所述给定路径的所述目标矢量值的数据元素而指示。
22.一种设备,包括:
用于执行数据处理的装置;以及
用于解码矢量指令以控制所述处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径的装置;
其中响应于矢量预测指令,所述用于解码的装置被配置为控制所述用于执行数据处理的装置以根据每个确定目标矢量值中的一个对应数据元素通过还是未通过测试条件的多个元素比较运算来设置控制信息,所述控制信息用于控制在要处理中的指令序列内的所述矢量预测指令后的预定数量的后续矢量指令的处理,其中所述预定数量由所述矢量预测指令硬连接或识别;以及
响应于所述预定数量的后续矢量指令中的一个,所述用于解码的装置被配置为控制所述用于处理的装置根据所述元素比较运算的结果确定是否掩码与矢量处理中的一个给定路径的给定部分关联的操作,所述元素比较运算通过对应于所述给定部分的所述目标矢量值的数据元素的所述控制信息来指示;
其中响应于至少一种类型的矢量指令,所述用于解码的装置被配置为控制所述用于执行数据处理的装置独立于矢量处理的所述多个路径而执行额外操作;以及
所述用于执行数据处理的装置被配置为当所述预定数量的后续矢量指令中的一个为所述至少一种类型的矢量指令中的一个时独立于所述控制信息执行所述额外操作。
23.一种用于处理矢量指令的数据处理方法,所述矢量指令用于控制处理电路执行对应于矢量值的相应数据元素的矢量处理的多个路径,所述方法包括:
解码矢量预测指令以控制所述处理电路根据多个元素比较运算来设置控制信息,,所述多个元素比较运算中的每个用于确定目标矢量值的对应数据元素通过还是未通过测试条件,所述控制信息用于控制在待处理的指令序列内的所述矢量预测指令后的预定数量的后续矢量指令的处理,其中所述预定数量由所述矢量预测指令硬连接或识别;以及
响应于所述预定数量的后续矢量指令中的一个,解码所述后续矢量指令以控制所述处理电路以根据所述元素比较运算的结果确定是否掩码与矢量处理中的给定路径的给定部分关联的操作,所述元素比较运算通过对应于所述给定部分的所述目标矢量值的数据元素的所述控制信息来指示;
其中当所述预定数量的后续矢量指令中的一个为所述处理电路独立于矢量处理的所述多个路径执行额外操作的一种类型的矢量指令时,控制所述处理电路独立于所述控制信息来执行所述额外操作。
24.一种虚拟机计算机程序,包括程序指令以控制主数据处理装置以提供对应于如权利要求1至21中任一项所述的装置的指令执行环境。
25.一种计算机可读取存储介质,其储存如权利要求24所述的所述虚拟机计算机程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1604943.9A GB2548600B (en) | 2016-03-23 | 2016-03-23 | Vector predication instruction |
GB1604943.9 | 2016-03-23 | ||
PCT/GB2017/050737 WO2017163024A1 (en) | 2016-03-23 | 2017-03-17 | Vector predication instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108780395A true CN108780395A (zh) | 2018-11-09 |
CN108780395B CN108780395B (zh) | 2023-02-28 |
Family
ID=55968773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780017670.6A Active CN108780395B (zh) | 2016-03-23 | 2017-03-17 | 矢量预测指令 |
Country Status (9)
Country | Link |
---|---|
US (1) | US10782972B2 (zh) |
EP (1) | EP3433722B1 (zh) |
JP (1) | JP7002462B2 (zh) |
KR (1) | KR102379899B1 (zh) |
CN (1) | CN108780395B (zh) |
GB (1) | GB2548600B (zh) |
IL (1) | IL261311B (zh) |
TW (1) | TWI746530B (zh) |
WO (1) | WO2017163024A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021238737A1 (zh) * | 2020-05-26 | 2021-12-02 | 索尼集团公司 | 物联网中的操作电子设备、管理电子设备和通信方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111176608A (zh) * | 2016-04-26 | 2020-05-19 | 中科寒武纪科技股份有限公司 | 一种用于执行向量比较运算的装置和方法 |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
WO2018182445A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements |
EP3499362B1 (en) * | 2017-12-13 | 2022-11-30 | ARM Limited | Vector add-with-carry instruction |
US11087067B2 (en) * | 2020-01-06 | 2021-08-10 | quadric.io, Inc. | Systems and methods for implementing tile-level predication within a machine perception and dense algorithm integrated circuit |
US11301252B2 (en) * | 2020-01-15 | 2022-04-12 | Arm Limited | Executing mutually exclusive vector instructions according to a vector predicate instruction |
GB2599652B (en) * | 2020-10-06 | 2023-01-18 | Advanced Risc Mach Ltd | Masked-vector-comparison instruction |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1267258A2 (en) * | 2001-06-11 | 2002-12-18 | Broadcom Corporation | Setting up predicates in a processor with multiple data paths |
EP1347374A2 (en) * | 2002-03-21 | 2003-09-24 | Sony Computer Entertainment Inc. | Method and apparatus for processing branch instructions in a pipilined processor |
CN103353834A (zh) * | 2012-02-24 | 2013-10-16 | 苹果公司 | 对零谓词分支误预测的分支误预测行为抑制 |
US20150143083A1 (en) * | 2013-11-18 | 2015-05-21 | International Business Machines Corporation | Techniques for Increasing Vector Processing Utilization and Efficiency Through Vector Lane Predication Prediction |
US20150227367A1 (en) * | 2014-02-07 | 2015-08-13 | Arm Limited | Data processing apparatus and method for performing segmented operations |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4949250A (en) * | 1988-03-18 | 1990-08-14 | Digital Equipment Corporation | Method and apparatus for executing instructions for a vector processing system |
JPH06274529A (ja) * | 1993-03-18 | 1994-09-30 | Kofu Nippon Denki Kk | ベクトル処理装置 |
US6959378B2 (en) * | 2000-11-06 | 2005-10-25 | Broadcom Corporation | Reconfigurable processing system and method |
US7051180B2 (en) * | 2002-01-09 | 2006-05-23 | International Business Machines Corporation | Masterless building block binding to partitions using identifiers and indicators |
US20080016320A1 (en) * | 2006-06-27 | 2008-01-17 | Amitabh Menon | Vector Predicates for Sub-Word Parallel Operations |
US7676647B2 (en) * | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
GB2470782B (en) * | 2009-06-05 | 2014-10-22 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling vector instructions |
US9733935B2 (en) * | 2011-12-23 | 2017-08-15 | Intel Corporation | Super multiply add (super madd) instruction |
US10095516B2 (en) * | 2012-06-29 | 2018-10-09 | Intel Corporation | Vector multiplication with accumulation in large register space |
US9298456B2 (en) * | 2012-08-21 | 2016-03-29 | Apple Inc. | Mechanism for performing speculative predicated instructions |
US9632781B2 (en) * | 2013-02-26 | 2017-04-25 | Qualcomm Incorporated | Vector register addressing and functions based on a scalar register data value |
US9792121B2 (en) | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
US10628156B2 (en) * | 2013-07-09 | 2020-04-21 | Texas Instruments Incorporated | Vector SIMD VLIW data path architecture |
US20150277904A1 (en) * | 2014-03-28 | 2015-10-01 | Roger Espasa | Method and apparatus for performing a plurality of multiplication operations |
US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
JP6274529B2 (ja) | 2015-02-09 | 2018-02-07 | 富士フイルム株式会社 | 有機半導体素子及びその製造方法、有機半導体膜形成用組成物、並びに、有機半導体膜の製造方法 |
-
2016
- 2016-03-23 GB GB1604943.9A patent/GB2548600B/en active Active
-
2017
- 2017-03-17 WO PCT/GB2017/050737 patent/WO2017163024A1/en active Application Filing
- 2017-03-17 EP EP17713061.4A patent/EP3433722B1/en active Active
- 2017-03-17 JP JP2018548423A patent/JP7002462B2/ja active Active
- 2017-03-17 US US16/079,241 patent/US10782972B2/en active Active
- 2017-03-17 CN CN201780017670.6A patent/CN108780395B/zh active Active
- 2017-03-17 KR KR1020187029667A patent/KR102379899B1/ko active IP Right Grant
- 2017-03-22 TW TW106109491A patent/TWI746530B/zh active
-
2018
- 2018-08-22 IL IL261311A patent/IL261311B/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1267258A2 (en) * | 2001-06-11 | 2002-12-18 | Broadcom Corporation | Setting up predicates in a processor with multiple data paths |
EP1347374A2 (en) * | 2002-03-21 | 2003-09-24 | Sony Computer Entertainment Inc. | Method and apparatus for processing branch instructions in a pipilined processor |
CN103353834A (zh) * | 2012-02-24 | 2013-10-16 | 苹果公司 | 对零谓词分支误预测的分支误预测行为抑制 |
US20150143083A1 (en) * | 2013-11-18 | 2015-05-21 | International Business Machines Corporation | Techniques for Increasing Vector Processing Utilization and Efficiency Through Vector Lane Predication Prediction |
US20150227367A1 (en) * | 2014-02-07 | 2015-08-13 | Arm Limited | Data processing apparatus and method for performing segmented operations |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021238737A1 (zh) * | 2020-05-26 | 2021-12-02 | 索尼集团公司 | 物联网中的操作电子设备、管理电子设备和通信方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3433722B1 (en) | 2019-12-04 |
WO2017163024A1 (en) | 2017-09-28 |
KR102379899B1 (ko) | 2022-03-31 |
TW201737067A (zh) | 2017-10-16 |
EP3433722A1 (en) | 2019-01-30 |
GB2548600A (en) | 2017-09-27 |
TWI746530B (zh) | 2021-11-21 |
GB201604943D0 (en) | 2016-05-04 |
JP7002462B2 (ja) | 2022-01-20 |
US10782972B2 (en) | 2020-09-22 |
CN108780395B (zh) | 2023-02-28 |
KR20180126520A (ko) | 2018-11-27 |
GB2548600B (en) | 2018-05-09 |
IL261311B (en) | 2020-09-30 |
JP2019509573A (ja) | 2019-04-04 |
US20190050226A1 (en) | 2019-02-14 |
IL261311A (en) | 2018-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108780395A (zh) | 矢量预测指令 | |
CN108139907A (zh) | 向量数据传送指令 | |
WO2011141726A2 (en) | Conditional compare instruction | |
JP2019526866A (ja) | ベクトル積和命令 | |
TW200428276A (en) | Predication instruction within a data processing system | |
KR20180132085A (ko) | 복소수 승산 명령 | |
CN108140011A (zh) | 向量加载指令 | |
CN114911526B (zh) | 一种基于类脑指令集的类脑处理器及其应用方法 | |
CN108139911A (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
Osama et al. | GPU acceleration of bounded model checking with ParaFROST | |
US11106465B2 (en) | Vector add-with-carry instruction | |
Rotenberg | Exploiting large ineffectual instruction sequences | |
JP6882320B2 (ja) | ベクトル命令の処理 | |
EP3759592B1 (en) | Data processing | |
JP4569284B2 (ja) | 集積回路のデバッグ方法、デバッグプログラム | |
Perrott | Languages for Parallel Computers. | |
Bulpin | Design and Simulation of a Super-Scalar CPU | |
Herrmann | A Novel Processor Verification Methodology based on UVM | |
Béchennec et al. | Improving Processor Hardware Compiled Cycle Accurate Simulation using Program Abstraction | |
Azambuja et al. | Algorithm transformation methods to reduce the overhead of software-based fault tolerance techniques |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |