CN107851021B - 使用动态矢量长度循环的矢量处理 - Google Patents

使用动态矢量长度循环的矢量处理 Download PDF

Info

Publication number
CN107851021B
CN107851021B CN201680043612.6A CN201680043612A CN107851021B CN 107851021 B CN107851021 B CN 107851021B CN 201680043612 A CN201680043612 A CN 201680043612A CN 107851021 B CN107851021 B CN 107851021B
Authority
CN
China
Prior art keywords
instruction
value
data
change
vector
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.)
Active
Application number
CN201680043612.6A
Other languages
English (en)
Other versions
CN107851021A (zh
Inventor
奈杰尔·约翰·斯蒂芬斯
格里戈里奥斯·马格克里斯
纳撒尼尔·普瑞米利尤
亚利阳德罗·马丁内兹·文森特
姆布·埃约勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ARM Ltd filed Critical ARM Ltd
Publication of CN107851021A publication Critical patent/CN107851021A/zh
Application granted granted Critical
Publication of CN107851021B publication Critical patent/CN107851021B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

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)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Communication Control (AREA)

Abstract

数据处理装置,包括:处理电路,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;处理电路包括:指令解码器电路,用于解码程序指令;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;其中该指令解码器电路响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该指令处理电路以取决于谓词标记数量及更改值以量改变变量的该值。

Description

使用动态矢量长度循环的矢量处理
技术领域
本公开涉及数据处理装置及方法。
背景技术
某些数据处理布置允许向量处理操作,涉及将单向量处理指令应用于在数据向量中的各别位置处具有多个数据项的该数据向量的数据项。相较的下,标量处理有效地操作于单数据项上而非数据向量上。
在处理操作被实现于许多不同的要被处理的数据的实例的实例中,向量处理可为有用的。在向量处理布置中,单指令可同时应用于(数据向量的)多个数据项。这相较于标量处理可改良数据处理的效率及吞吐量。
发明内容
在示例布置中,提供了数据处理装置,该数据处理装置包括:
处理电路,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该处理电路包括:指令解码器电路,用于解码程序指令;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;其中该指令解码器电路响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该指令处理电路以取决于该等谓词标记数量及该更改值以量改变变量的该值。
在另一示例布置中,提供了数据处理装置,该数据处理装置包括:用于选择性地将向量处理操作应用于数据向量的一个或多个数据项的装置,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该应用装置包括:用于解码指令的装置;以及用于执行由用于解码的装置所解码的指令的装置;其中用于解码指令的该装置响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制用于执行指令的该装置以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
在另一示例布置中,提供了数据处理方法,数据处理方法包括以下步骤:选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;解码指令;以及执行指令;其中该解码步骤响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该执行步骤以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
在另一示例布置中,提供了虚拟机,该虚拟机包括数据处理器,该数据处理器用于执行计算机程序,该计算机程序包括机器可读取指令,其中该计算机程序的执行使得该数据处理器充当数据处理装置,该数据处理装置包括:处理器,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该处理器包括:指令解码器,用于解码指令;以及指令处理器,用于执行由该指令解码器所解码的指令。其中该指令解码器响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该指令处理器以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
在另一示例布置中,提供了数据处理装置,该数据处理装置包括:指令解码器电路,用于解码指令;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;该指令解码器电路响应于WHILE指令以控制该指令处理电路,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及该指令解码器电路响应于CHANGE指令以控制该指令处理电路,来根据相关联的饱和值取决于该等谓词标记数量以量改变该控制变量的该值,从而在不超过该饱和值的情况下改变该控制变量。
在另一示例布置中,提供了数据处理装置,该数据处理装置包括:用于解码指令的装置;以及用于执行由用于解码的装置所解码的指令的装置;用于解码的该装置响应于WHILE指令以控制用于执行的该装置,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及用于解码的该装置响应于CHANGE指令以控制用于执行的该装置,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行可用于在不超过该饱和值的情况下改变该控制变量的该值。
在另一示例布置中,提供了数据处理方法,该数据处理方法包括以下步骤:解码指令;以及执行由该解码步骤所解码的指令;该解码步骤响应于WHILE指令以控制该执行步骤,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及该解码步骤响应于CHANGE指令以控制该执行步骤,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行在不超过该饱和值的情况下改变该控制变量的该值。
在另一示例布置中,提供了虚拟机,虚拟机包括数据处理器,数据处理器用于执行计算机程序,该计算机程序包括机器可读取指令,其中计算机程序的执行使得该数据处理器充当数据处理装置,数据处理装置包括:指令解码器,用于解码指令;以及指令处理器,用于执行由该指令解码器所解码的指令;指令解码器响应于WHILE指令以控制该指令处理器,来将向量处理操作应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量包括多个数据项,该应用步骤根据与该多个数据项相关联的各别谓词标记该状态来进行;以及该指令解码器响应于CHANGE指令以控制该指令处理器,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行在执行时在不超过该饱和值的情况下改变该控制变量的该值。
附图说明
仅通过示例的方式,将进步参照如随附绘图中所示出的本技术的实施例描述本技术,在该等绘图中:
图1示意性地示出数据处理装置;
图2示意性地示出将数据处置为多个数据向量;
图3为示意流程图,示出循环化操作;
图4示意性地示出使用谓词标记(predicate flag);
图5示意性地示出根据计数变量控制谓词标记;
图6为示意流程图,示出根据计数变量通过WHILE指令来设定谓词标记;
图7示意性地示出所谓的展开循环(unrolled loop);
图8及9示意性地示出可由计数变量所表示的值;
图10及11为示意流程图,分别示出增量及减量指令的操作;
图12示意性地示出虚拟机。
具体实施方式
在参照随附图式来讨论实施例之前,提供以下实施例说明。
示例实施例提供数据处理装置,包括:处理电路,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该处理电路包括:指令解码器电路,用于解码程序指令;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;其中该指令解码器电路响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该指令处理电路以取决于该等谓词标记数量及该更改值以量改变变量的该值。
本公开辨识的是,在要由不同向量处理电路的实例(在无重新编译程序的情况下)执行程序指令且其中该等不同实例可能具有不同可用向量长度VL的情况下,提供用于控制循环化或其它操作的布置可为有用的,该等操作根据向量处理电路的任何可用长度VL而操作,其中通过该向量处理电路执行该等指令。(替代方案(其会要将概念上的VL固定于可能在不同的向量处理电路实例当中遭遇的最小水平)因为不使用在某些实例中可用的较大向量长度而可能是没有效率的。)
本公开的实施例提供CHANGE指令,CHANGE指令在执行时,取决于谓词标记数量(例如作为用于向量长度的代理器)以量更改变量(例如循环控制变量),且可因此根据系统的向量长度来设定该改变的该量,其中通过该系统执行该指令。这可允许在不定需要重新编译的情况下,在具有不同各别可用的向量长度的不同向量处理电路实例上执行相同的程序指令。
使用更改值允许将单CHANGE指令用在(例如)循环控制或其它向量操作中,其中该向量操作是“展开的”,这也就是说,多个数据向量系以循环或其它处理指令集合的单迭代或实例来处理。
在示例实施例中,指令解码器电路响应于CHANGE指令来控制指令处理电路,以取决于谓词标记数量的值及更改值的乘积以量改变变量的值。在示例中,更改值可为乘法值。在示例中,由CHANGE指令所设定的控制变量的连续值之间的步阶可取决于(例如正比于)更改值。
为了允许由简单的算术测试来测试变量值以(例如)决定循环是否已完成,在示例实施例中,CHANGE指令具有相关联的饱和值,从而CHANGE指令在执行时,在不超过该饱和值的情况下改变变量值。
在某些示例中,CHANGE指令是用于减少变量值的减量指令;而饱和值是可由该变量表示的最小值。在其它示例中,CHANGE指令是用于增加变量值的增量指令;而饱和值是可由该变量表示的最大值。
CHANGE指令在循环控制的背景中特别有用(虽然不是只在该背景中有用),且在示例实施例中,变量是计数变量,向量处理电路在处理循环的一个或多个迭代期间将向量处理指令应用于至少部分地由该计数变量所定义的数据向量;指令解码器电路响应于用于控制指令处理电路的进步指令,以检测是否继续取决于该计数变量而迭代执行处理循环。
在示例实施例中,用于检测是否继续执行处理循环的进步指令包括WHILE指令,指令解码器电路响应于WHILE指令以在算术条件应用于计数变量的同时控制指令处理电路继续迭代执行处理循环。例如,算术条件可以是从下述项组成的列表中选出的条件:
i.计数变数小于上限值;
ii.计数变数大于下限值;
iii.计数变数小于或等于上限值;以及
iv.计数变数大于或等于下限值。
因为谓词标记数量在某些实例中可能不等于系统的向量长度,在某些实例中,指令解码器电路响应于CHANGE指令以控制指令处理电路,来取决于谓词标记数量及更改值的所选子集合(例如,如由处理电路所选择的)以量改变变量值。
如以下所讨论的,在示例实施例中,指令解码器电路响应于WHILE指令以控制指令处理电路,来选择谓词标记中的一个或多个以供设定至活动状态,从而循环变量值(考虑经选择以供设定至活动状态的谓词标记数量)并不突破算术条件。如以下所讨论的,在示例实施例中,指令解码器电路响应于WHILE指令以控制指令处理电路,来选择谓词标记中的一个或多个以供根据预定的谓词标记顺序设定至活动状态,从而循环变量值(考虑经选择以供设定至活动状态的谓词标记数量)并不突破算术条件。
示例实施例也提供数据处理装置,包括:用于选择性地将向量处理操作应用于数据向量的一个或多个数据项的装置,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该应用装置包括:用于解码指令的装置;以及用于执行由用于解码的装置所解码的指令的装置;其中用于解码指令的该装置响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制用于执行指令的该装置以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
示例实施例也提供数据处理方法,包括以下步骤:选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;解码指令;以及执行指令;其中该解码步骤响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该执行步骤以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
示例实施例也提供虚拟机,该虚拟机包括数据处理器,该数据处理器用于执行计算机程序,该计算机程序包括机器可读取指令,其中该计算机程序的执行使得该数据处理器充当数据处理装置,该数据处理装置包括:
处理器,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项;该处理器包括:指令解码器,用于解码指令;以及指令处理器,用于执行由该指令解码器所解码的指令。
其中该指令解码器响应于CHANGE指令,CHANGE指令具有更改值作为指令参数,CHANGE指令用于控制该指令处理器以取决于该等谓词标记数量及取决于该更改值以量改变变量的该值。
在数据处理操作(例如在向量处理系统中控制循环化操作)的背景下,示例实施例可使用饱和计数器及优雅简洁的算术测试来控制循环化功能的执行。示例实施例提供数据处理装置,包括:指令解码器电路,用于解码指令;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;该指令解码器电路响应于WHILE指令以控制该指令处理电路,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及该指令解码器电路响应于CHANGE指令以控制该指令处理电路,来根据相关联的饱和值取决于该等谓词标记数量以量改变该控制变量的该值,从而在不超过该饱和值的情况下改变该控制变量。
通过抑制该计数器跑到饱和值的外,可避免无效的结果(例如会由绕圈(wrapround)或溢出计数变量中的位数量的计数器造成的结果,举例而言)。
在示例实施例中,算术条件是从下述项组成的列表中选出的条件:
i.控制变量小于上限值;
ii.控制变量大于下限值;
iii.控制变量小于或等于上限值;以及
iv.控制变量大于或等于下限值。
在示例实施例中,谓词标记可用作控制机能的部分。在示例实施例中,谓词标记具有活动状态,该活动状态指示的是,向量处理指令应应用于相对应于活动状态下的谓词标记的数据向量的该等位置。
在示例实施例中,指令解码器电路响应于WHILE指令以控制指令处理电路,来选择谓词标记中的一个或多个以供设定至活动状态,从而控制变量值(考虑(例如,视情况可以是加或减)经选择以供设定至活动状态的谓词标记数量)并不突破算术条件。如此,WHILE指令可方便地使用谓词标记机制以供进行执行控制(例如循环控制)。
在示例实施例中,该指令解码器电路响应于该WHILE指令以控制该指令处理电路,来根据该等谓词标记预定顺序选择该等谓词标记中的一个或多个以供设定至该活动状态。例如,该顺序可为相对应于要处理的下层数据项的该顺序的顺序。
在示例实施例中,指令解码器电路响应于WHILE指令以在算术条件应用于控制变量的同时控制指令处理电路继续迭代执行处理循环。
示例实施例也提供数据处理装置,包括:用于解码指令的装置;以及用于执行由用于解码的装置所解码的指令的装置;用于解码的该装置响应于WHILE指令以控制用于执行的该装置,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及用于解码的该装置响应于CHANGE指令以控制用于执行的该装置,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行可用于在不超过该饱和值的情况下改变该控制变量的该值。
示例实施例也提供数据处理方法,包括以下步骤:解码指令;以及执行由该解码步骤所解码的指令;该解码步骤响应于WHILE指令以控制该执行步骤,来将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤根据与该等位置相关联的各别谓词标记该状态来进行;以及该解码步骤响应于CHANGE指令以控制该执行步骤,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行在不超过该饱和值的情况下改变该控制变量的该值。
示例实施例也提供虚拟机,该虚拟机包括数据处理器,该数据处理器用于执行计算机程序,该计算机程序包括机器可读取指令,其中该计算机程序的执行使得该数据处理器充当数据处理装置,该数据处理装置包括:指令解码器,用于解码指令;以及指令处理器,用于执行由该指令解码器所解码的指令;该指令解码器响应于WHILE指令以控制该指令处理器,来将向量处理操作应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量包括多个数据项,该应用步骤根据与该多个数据项相关联的各别谓词标记该状态来进行;以及该指令解码器响应于CHANGE指令以控制该指令处理器,来取决于当前被设定至特定状态的该等谓词标记数量以量改变该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行在执行时在不超过该饱和值的情况下改变该控制变量的该值。
现参照附图,图1示意性地示出数据处理系统10,该数据处理系统10包括耦接至储存数据值32及程序指令34的存储器30的处理器20。处理器20包括指令撷取单元40,该指令撷取单元40用于从存储器30撷取程序指令34且将经撷取的程序指令供应至解码器电路50。解码器电路50解码经撷取的程序指令且产生控制讯号,以控制向量处理电路60如由经解码向量指令所指定地在储存在向量寄存器电路70内的向量寄存器上执行向量处理操作。
处理器20也包括与标量寄存器90相关联的标量处理电路80。
标量处理及向量处理之间的一般区隔如下。向量处理涉及将单向量处理指令应用于在数据向量中的各别位置处具有多个数据项的该数据向量的数据项。标量处理有效地操作于单数据项上而非数据向量上。
在处理操作被实现于许多不同的要被处理的数据的实例的实例中,向量处理可为有用的。在向量处理布置中,单指令可同时应用于(数据向量的)多个数据项。这相较于标量处理可改良数据处理的效率及吞吐量。
以下的讨论关于示例程序指令34。本公开的实施例包括一种装置(例如图1中所示的类型的装置),该装置可操作或配置为解码及执行这样的程序指令。图1因此提供处理电路的示例,该处理电路用于选择性地将向量处理操作应用于在数据向量内的位置处的数据项,该应用步骤是根据与该等位置相关联的各别谓词标记(以下讨论)的集合的该等状态来进行,该等数据向量具有数据向量处理顺序,各数据向量包括具有数据项顺序的多个数据项,该处理电路包括用于解码程序指令的指令解码器电路;以及指令处理电路,用于执行由该指令解码器电路所解码的指令;其中该指令解码器电路响应于指令以控制该指令处理电路来实现以下所要讨论的机能。
图2示意性地示出将数据处置为多个数据向量。在此布置中,要以处理顺序110处理数据项集合100。数据项100事实上被处置为连续的数据向量120,从而在向量处理操作中,单的向量处理指令同时应用于数据向量中的所有数据项(例如4个数据项、8个数据项或任何特定系统的向量长度)。
虽然如此,各数据向量120保持数据项处理顺序130,且从向量到向量存在向量处理顺序140,从而若在处理期间需要对于原始处理顺序110的任何参照,则这可通过以下步骤来达成:以向量处理顺序140考虑数据向量及以数据项处理顺序130考虑各数据向量内的数据项。此考虑相关于(至少)循环处理的终止,如以下所讨论的。
图3为示意流程图,示出向量处理布置中的循环化操作。在步骤200处,初始参数被设置。于此,一个简单的示例是,循环控制变量例如通过标量处理电路80的操作而设定至初始值(例如0)。
在步骤210处,针对当前的数据向量实现一个或多个处理操作。可例如如下地针对储存于存储器中的数据32的邻接区块定义当前的数据向量:
VectorA=Data[SA+i…SA+i+VL-1]
其中变量i是循环控制变量,变量SA是数据的邻接区块的开始地址,而变量VL是可应用于使用中的特定处理系统的向量长度。换言之,在此示例中,地址(SA+i)及地址(SA+i+VL-1)间的数据项的邻接群组包括性地形成向量VectorA的VL数据项。
这提供了示例数据向量VectorA至少部分地取决于循环控制(或计数)变量的示例,其中循环控制(或计数)变量定义数据的区块或数组内(如以下以聚集布置所讨论的)或者指针的区块或数组内的数据向量的位置(例如开始位置)。
在其它示例中,可使用所谓的聚集数据向量,其中提供指向存储器中的二个或更多个非邻接位置的指针集合以填入数据向量。类似地,在将数据向量写回主存储器的时候,可使用所谓的散布程序,从而将数据项写回非邻接的存储器位置。这样的布置原本并不影响于此所述的程序操作的方式,且因此为了本说明的目的,将假设连续的数据集合(无论是否邻接地储存)。然而,注意的是,使用停用的谓词标记(以下讨论)来避免不必要地从或向主存储器进行聚集或散布可减少向量处理操作的处理负担。
各种不同类型的向量处理操作(或多个)可在步骤210处实现。例如,可针对VectorA的数据项实现向量处理操作,从而产生被储存为第二数据向量(VectorB)的数据项的结果。
在步骤220处,计数或循环控制变量被增量,从而向前移动循环操作。这此,用语「增量」并不仅指增加1,而可指增加另值。确实,在本示例中,循环控制变量系以如由处理电路所决定的向量长度VL(如由谓词标记数量表示的)增量,举例而言。
在步骤230处,系统检测是否继续循环操作,或换言之,检测循环控制变量是否已到达针对该循环所定义的结束点。若应继续循环操作,则控制回到步骤210。也在步骤220处设定其它参数,且将于下讨论程序的此部分的示例。否则,程序结束。
可以改变程序流(例如回到步骤210)的条件跳转、分支或其它指令的形式采取是否继续循环操作上的决策,其中可例如基于指令(例如以下要讨论的WHILE指令)的执行通过一个或多个处理器条件标记(例如N、Z、C及V标记)指示条件。据此,WHILE指令具有设定一个或多个条件标记以控制单独的(条件分支或跳转)指令实际上是否改变程序流以继续循环的效果。(但在其它示例中,设想的是WHILE指令也可执行跳转或分支)。
在要由不同向量处理电路的实例(在无重新编译程序的情况下)执行程序指令且其中该等不同实例可能具有不同可用向量长度VL的情况下,提供用于控制循环化操作的布置可为有用的,该等操作根据向量处理电路的任何可用长度VL而操作,其中通过该向量处理电路执行该等指令。(替代方案(其会要将概念上的VL固定于可能在不同的向量处理电路实例当中遭遇的最小水平)因为不使用在某些实例中可用的较大向量长度而可能是没有效率的。)在于此讨论的示例布置中,与其使用标量操作来控制循环操作,系使用谓词标记(以下讨论)。
图4示意性地示出使用谓词标记来控制向量处理操作。
可存在以下实例:单向量处理操作应不同地应用于数据向量内的不同数据项。向量处理电路60通过使用所谓的谓词标记来提供此实例。谓词标记包括针对数据向量内的各数据项位置所提供的标记信息,以指示处理操作是否应针对该数据项位置实现。在示例中,向量处理电路60可存取多个谓词标记集合,使得任何特定的向量处理操作可将一个或多个谓词标记集合参照为该向量处理操作的参数。
参照图4,示例布置使用包括四个数据项(VL=4)的数据向量,但应理解的是,这些布置可应用于不同的向量长度。示例输入数据向量250(VectorA)要作为向量处理操作260的受体,使得在无任何由谓词标记进行的控制的情况下,向量处理操作260会应用于各数据项位置。然而,也提供谓词标记集合270(每个数据项位置或「航道」一个集合)以控制向量处理操作。
根据向量处理操作260来处理输入向量(向量A)的数据项252,以产生输出数据向量280(向量B)的数据项282。若相对应于输出数据向量280中的数据项位置的谓词标记272被设定至「活动」(例如为1的值)。若用于输出向量位置的相对应谓词标记被设定至「停用」(例如为0的值),则针对该输出向量位置的向量处理操作260不被实现。
如以上所讨论的,在本示例中,谓词标记控制用于相关于输出数据向量280的特定输出位置或「航道」的向量处理操作是否实现。然而,在其它示例中,谓词标记可用于控制输入向量(或一个或多个输入向量)250中的数据项位置是否被使用。
这因此提供示例实施例,其中谓词标记具有活动状态,该活动状态指示的是,向量处理指令应应用于相对应于活动状态下的谓词标记的数据向量的该等位置。停用状态指示的是,向量处理操作不应被如此应用。
若因为停用的谓词标记,而不针对特定输出向量位置282实现向量处理操作,则在某些示例中,可将固定值(例如0)插进该输出位置。在其它示例中,该输出位置的先前内容(无论它们是什么)可被保留不变。
以此方式使用谓词标记因此提供示例,其中选择性地将向量处理指令应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,该数据向量在该数据向量中的各别位置处包括多个数据项。
本示例允许在控制循环化操作(例如图3中示意性地图示的该循环化操作)时使用谓词标记。图5及6将用于解释此类型操作的态样。
循环化操作的特征是,在循环控制变量的控制的下以数据项处理顺序处置许多数据项,直到循环控制变量到达特定上限为止,在该时点处,循环终止于图3的步骤230处。由以下示意性伪码来提供标量处理循环的示例:
For i=0to 97
Process Data[i]
Next i
于此,循环化操作在循环控制变量i被设定至0的情况下开始,且继续直到循环控制变量i到达97的值为止。换言之,总共处置了98个数据项。
可反而如参照图3所讨论地使用向量处理来执行循环操作,从而次一个向量地处置数据项。这可通过允许由单的向量处理指令处置多个数据项的群组来提供效率。
例如,在向量长度VL为4的系统的情况下(所以各数据向量包含四个数据项),可仅由24(=96/4)个向量处理操作来处置循环操作中的第一个的96个数据项。然而,若要处理四个数据项的整个的25th向量,这会将处理数据项的数量变成100,这超过了所需的循环操作。
反之,最终的向量处理操作应仅针对97th及98th的数据项(以处理顺序110)操作,且不以处理顺序110针对99th及100th的数据项操作。
示例实施例提WHILE指令来控制向量处理电路60,以例如在循环化操作中将向量处理指令应用于至少部分地由控制变量(例如循环控制变量)所定义的数据向量的一个或多个数据项。WHILE指令响应于控制变量,从而选择谓词标记中的一个或多个以供设定至活动状态,从而经处理的数据项的数量并不超过循环上限。
使用此布置的示例图示于图5中,图5示意性地示出要在以上所讨论的示例循环操作中处置的最后三个数据向量,其中(纯粹是为了此示例的目的)要处理98个数据项,且VL=4。
如以上所讨论的,在98个数据项的示例循环中,系次一个数据向量地处置数据项,且假设的是,此示例中的数据向量长度VL是4个数据项,循环计数器将从0开始且以VL为单元推进(0、4、8、12...)。关于最后三个回路计数器实例如此推进的情况系示意性地图示于图5中,也即回路计数器被设定至88、92及接着设定至96的情况。示出了可应用于这些情况中的各者的谓词标记300、310、320,其中1的逻辑值指示“活动”而0的逻辑值指示“停用”。
根据谓词标记预定顺序由WHILE指令设定谓词标记,该顺序相对应于各数据向量的数据项处理顺序130。
在i=88时,WHILE指令检测的是,所有四个谓词标记可被设定至1(活动),而作为将该等谓词标记设定至1的结果而处理的数据项的总数量仍将小于97的循环上限。类似地,在i推进至92时,WHILE指令检测的是,所有四个谓词标记310可被设定至1,且仍然地,在结束处理该数据向量时,经处理的数据项的数量(96)仍将小于98的所需总数。
在图5中所示的第三实例处,循环控制变量i被设定至96。WHILE指令检测的是,为了符合97的循环上限,在循环的最终的向量处理操作中仅有两个数据项要被处理。WHILE指令因此将第一个的两个谓词标记(以处理顺序130)设定至1,且将其它两个谓词标记(以处理顺序130)设定至0,从而步骤210处的处理操作可根据该等谓词标记来实现,且仍不超过由循环控制变量i的上限所定义的操作总数。
作为其操作的部分,WHILE指令也提供步骤230的机能的至少部分,且设定一个或多个条件标记,以控制只要仍存在要实现的处理操作,就将控制传回图3的步骤210,这也就是说,在步骤220处传递至WHILE指令的i的值小于循环控制变量上限(在此示例中是97)。
这因此提供了这样的示例,其中WHILE指令在执行时,选择谓词标记中的一个或多个以供设定至活动状态,从而控制变量值(考虑经选择以供设定至活动状态的谓词标记数量)并不突破算术条件。于此,「考虑」在增量计数器的情况下可意指加到当前的计数值,而在减量计数器的情况下,可意指从当前的计数值减去。可根据谓词标记预定顺序(例如顺序130)来选择供设定至活动状态的谓词标记中的一个或多个。
图6为示意流程图,表示根据计数变量通过WHILE指令来设定谓词标记。
在图6中,在步骤330处,WHILE指令检测当前的计数(循环控制变量)值及极限值(在本示例中分别为i及97)。在步骤340处,WHILE指令填入谓词标记,从而循环控制变量的值(在此示例中)加上经选择以供设定至活动状态的谓词标记数量并不超出循环控制变量的上限。
当然,将理解的是,在其它示例中,循环控制变量可向下计数而非向上计数,在此情况下,极限值会是下限值而非上限值。类似地,由WHILE指令在步骤340处应用的算术测试会是关于控制变量是否大于下限值的测试。也将理解的是,可应用“小于或等于”或“大于或等于”测试,从而例如循环化操作终止一个缺少极限值的实例。一般而言,由WHILE指令所应用的算术条件可以是从下述项组成的列表中选出的条件:
·控制变量小于上限值;
·控制变量大于下限值;
·控制变量小于或等于上限值;以及
·控制变量大于或等于下限值。
图7示意性地示出所谓的展开循环(unrolled loop)。
在无循环展开的情况下,循环化操作的各迭代实现单数据向量的处理值(wortheof processing)。循环接着推进至下个循环位置,且下个数据向量的处理值被实现等等。
“循环展开”循环涉及在单循环迭代内处理多个连续的数据向量。实现循环展开以例如改良效率,其中涉及起始及终止循环的各迭代的处理负担接着在多个数据向量的处理之间共享。
在图7中,为了循环处理的目的将要处理的数据400(具有数据处理顺序410)布置成多个数据向量,各数据向量具有向量长度VL。在所示的示例中,VL等于4,但当然,可根据使用中的向量处理电路60的参数使用不同值。
操作类似于参照图3所述的该等操作,除了于各个循环迭代处理多个数据向量以外。据此,在步骤420处,以类似于图3的步骤200的方式设定初始参数。例如,循环控制变量或计数器被初始化至0。接着,在步骤430、440、450及460处,多个连续的数据向量经受相同的处理。步骤430涉及处理具有由循环控制变量i所定义的数据400内的开始位置的数据向量。步骤440应用相同处理,但是是应用于具有由i+VL所定义的数据400中的开始位置的数据向量等等。将理解,循环的各迭代中所处理的数据向量的数量可为大于或等于2的任何数量,而在此示例中使用4个数据向量仅是为了此解释的目的。在步骤470处,循环控制变量i被推进n×VL,其中n是于展开的循环的各迭代处理的数据向量数量。在步骤480处,WHILE指令设定参数(如连结图5及6所讨论的谓词标记),且检测是否设定一个或多个条件标记,从而继续循环或不继续循环。若循环继续,控制再次通过步骤430(例如,通过WHILE指令设定标记(例如条件标记),且条件跳转或分支指令响应于该条件),而若否,则程序遵循结束进程。
图3及7的流程图(结合图5及6的说明来阅读)提供以下解码示例(例如通过解码器电路50):WHILE指令(如在步骤230、480处所讨论的),用于控制向量处理器,以将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于该控制变量,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤是根据与该等位置相关联的各别谓词标记该状态来进行;以及CHANGE指令,用于取决于该等谓词标记数量以量改变(例如,在步骤220或步骤470处)该控制变量的该值,CHANGE指令具有相关联的饱和值,从而CHANGE指令的执行在不超过该饱和值的情况下改变该控制变量的该值;以及执行(例如,通过向量处理电路60及/或标量处理电路80)由该指令解码器所解码的指令。
步骤230、480提供示例,其中该WHILE指令在执行时,使得该处理器在算术条件应用于该控制变量的同时继续迭代执行处理循环,例如通过如以上所讨论地设定一个或多个条件标记来进行。
图8及9示意性地示出可由计数变量所表示的值。在图8的情况下,计数变量是有符号变量,从而-VAL的下限及+VAL的上限之间的值是可表示的。在图9的情况下,计数变量是无符号的,从而0及+VAL的上限之间的值是可表示的。注意的是,在图8的情况下,上及下限可具有不同的量值,从而下限是–VAL1而上限是+VAL2,其中|VAL1|及|VAL2|是不同的(其中|x|表示x的模数或量值)。例如,在8位有符号的二补码表示(two’s complementrepresentation)中,–VAL1可为-127而+VAL2可为+128。类似地,图9中+VAL的上限不定相同于图8中+VAL的上限。但在任实例中,所示出的原理是,计数变量的属性可由其可表示的值的下及上限所指示。
图10及11为示意流程图,分别示出增量及减量指令的操作。
参照图10,在步骤500处,增量指令取决于模式(pattern)(以下进步描述)乘以因子MUL来以量增加变量(例如循环控制变量),其中在展开的循环的步骤(例如步骤470)中使用如此指令的示例中,值MUL可被设定至循环的一个迭代中所处理的连续数据向量的数量。
在步骤510处,增量指令饱和于可由变量所表示的最高值处。饱和步骤关于以下步骤。若步骤500的结果仍小于可由该变量表示的最高值(例如+VAL),则步骤500的输出被回传为增量指令的结果。另方面来说,若步骤500的输出会超过可由该变量表示的最高值,使得(例如)该变量会绕圈(超过该变量可用的位数量)或从其它可表示的极值重新开始,则步骤510饱和或盖住(cap)该增加,从而不到达但不超过该最高可表示值(例如+VAL)而作为通过执行该指令所回传的输出。
饱和(无论是在使用MUL因子的情况下,如步骤470中地,或不使用的情况下,如步骤220中地)可关联于WHILE或类似操作或指令用在步骤230或480的情况中,使得若循环控制变量或计数器符合算术条件则继续执行循环。在具有上限的向上计数计数器的示例中,算术条件例如可为计数值是否小于(或小于或等于)特定极限值。然而,若不使用饱和特征,则潜在风险是,计数器会跑到可由计数变量表示的最大值的外及「绕圈」或重新开始于可由计数变量表示的最低(或另)值处。因为计数器以VL为单位推进,WHILE算术测试可于一个循环迭代(正确地)通过,且接着对于下个如此的测试而言,计数器可能已绕圈,所以测试会于下个迭代(不正确地)通过。
作为经运作的示例,若计数变量被维持为简单的8位无符号值,则在无饱和特征的情况下,计数器可能在继续从0向上计数之前到达255的最大计数。假设MUL x VL是8(所以计数以8为单位推进),且循环的结束是由i=253所定义。在步骤230或480处使用「小于」测试则会没有用,因为(谓)绕圈值的值(0或接近0)会通过测试,然而测试理应已失败,因为计数器会于i=248处通过测试,但于下个迭代i会绕圈回到0且因此(不正确地)再次通过“小于”测试。饱和特征会使得计数器在其最终迭代中于255处饱和,且因此计数器i会(正确地)未通过“小于253”测试。
注意的是,饱和值是计数变量被储存或维护的方式的属性。其不同于由循环化操作的实例施加于计数变量上的特定限制。
现将讨论“模式”参数。这取决于可用的谓词标记数量提供改变量,该改变量反过来提供根据向量长度自动调整尺度的布置,藉此促进通过具有不同可用向量长度的向量处理电路的实例,在不定需要干预性重新编译的情况下,允许执行相同的程序指令。
“change”指令在用于例如为步骤220或470的情况下时,至少取决于倍增因子MUL(其可为1或可大于1,例如可由3位参数表示的值,例如1...8)以量改变(增量或减量)变量。改变量(增量或减量)也取决于谓词标记数量作为VL的表示(如由向量处理电路所检测的,举例而言)。例如,若各谓词标记相对应于数据项,则适当的改变可为MUL x VL。但在其它示例中,个别的数据项可能是第示例中的两倍大(例如半词而非字节),因此可能的是,只有每个交替的谓词标记被有效使用。在这样的实例中,VL的有效值可为谓词标记数量的半大,在该情况下,改变量应为(MUL x number_of_predicate_flags/2)。
CHANGE指令根据模式检测谓词标记数量,且(在乘以MUL之后)以该数量增量或减量变量。该模式例如可为交替谓词标记或每四个谓词标记模式或具有“所有谓词标记”的默认的各种其它模式。此布置提供自适应增量或减量指令,从而改变量取决于系统可用的谓词标记数量,其中指令运行于该系统上。反之这意味着,相同的指令可用在具有不同可用向量长度的不同系统上,因为增量或减量指令将调整至当前可用的向量长度。
据此,这提供示例,其中CHANGE指令在执行时,取决于谓词标记数量及更改值的所选子集合以量改变变量值。注意的是,如所述,该子集合事实上可为“所有的”。所选子集合取决于指令的参数,且供使用的子集合的检测是由执行指令的其它态样的相同处理电路、布置或资源所进行的指令执行的部分。
图11为示意流程图,示出减量指令的类似操作,使得在步骤520处,变量(例如循环控制变量)以模式量及因子MUL的乘积(或其它组合)减少,且在步骤530处,结果于可由该变量表示的最低值处饱和,或换言之到达可由该变量表示的最低量(但被约束而不能变得比该最低量更低)。
注意的是,计数器I可为标量变量,且因此可由标量处理电路80处置(更新及测试),或可被处置为数据向量或数据向量的部分,且因此可由向量处理电路60处置。
图10及11因此提供执行具有更改值(例如MUL)作为指令参数的“change”指令的示例,CHANGE指令取决于谓词标记数量及取决于该更改值以量改变变量值。例如,连续改变或步阶尺寸可正比于更改值。
图1的装置在执行相对应于图10或11的流程图中所示的这些操作的操作时,提供数据处理装置(例如装置10)的示例,该数据处理装置包括:向量处理电路(例如与寄存器70协同操作的电路60),用于将向量处理指令应用于数据向量的一个或多个数据项,该数据向量于该数据向量中的各别位置处包括多个数据项,该应用步骤是根据与该等位置相关联的各别谓词标记该状态来进行;指令解码器(例如解码器电路50),用于解码CHANGE指令(例如由图10或11的流程图所表示),CHANGE指令具有更改值(例如MUL)作为指令参数,CHANGE指令在执行时,取决于该等谓词标记数量及取决于该更改值以量改变变量(例如循环控制变量)的该值;指令处理器(例如标量处理电路80或向量处理电路60),用于执行由该指令解码器所解码的指令。例如,CHANGE指令在执行时,可取决于谓词标记值及更改值的乘积以量改变变量的该值。
如参照步骤510、530所讨论的,CHANGE指令可具有相关联的饱和值,从而CHANGE指令在执行时,在不超过该饱和值的情况下改变变量值。如参照图8及9所讨论的,在用于减少变量值的减量指令的情况下,饱和值可为可由该变量所表示的最小值。在用于增加变量值的增量指令的情况下,饱和值可为可由该变量所表示的最大值。
在这样的指令用于例如为图7的循环化操作的步骤470的背景中时(其中变量为计数变量,向量处理电路在处理循环的一个或多个迭代期间将向量处理指令应用于至少部分地由计数变量所定义的数据向量),指令解码器可配置为解码指令(例如相对应在步骤480)以取决于计数变量检测是否继续迭代执行处理循环。这样的指令例如可为用于设定条件标记WHILE指令,从而控制处理电路来在算术条件应用于该计数变量的同时继续迭代执行处理循环。算术条件的示例包括:计数变数小于上限值;计数变数大于下限值;计数变数小于或等于上限值;以及计数变数大于或等于下限值。
图12示意性地示出虚拟机,系通过该虚拟机提供以上所讨论的某些或所有机能。虚拟机包括作为数据处理电路800的示例的中央处理单元(CPU)、非依电性存储器810、控制接口820及输入/输出(IO)接口830,皆由总线布置840互连。随机存取存储器(RAM)850储存提供软件860以控制CPU 800的操作的程序指令。在软件860的控制的下,CPU 800提供或模仿以上所讨论的处理指令中的一个或多个的机能。RAM 850也储存程序指令870及数据880,其中程序指令870为可用应用于图1的处理器20的指令,且其由充当虚拟机的CPU 800解译、模仿或在其它情况下执行。数据880是相对应于图1的数据32的数据,系通过程序指令870的(虚拟)执行来针对该数据采取行动。图12的布置因此提供虚拟机的示例,该虚拟机包括数据处理器(例如CPU 800),该数据处理器用于执行包括机器可读取指令的计算机程序(例如软件860),其中计算机程序的执行使得数据处理器充当上述类型的数据处理装置。示例实施例也由计算机软件所表示,该计算机软件在由计算机执行时,使该计算机实现上述技术中的一个或多个,且是通过储存如此计算机软件的非暂时性机器可读存储介质来进行。
在本案中,用词“配置为...”用于意指的是,装置的构件具有能够实现所定义的操作的配置。在此背景下,“配置”意指硬件或软件互连的布置或方法。例如,装置可具有提供所定义操作的专用硬件,或处理器或其它处理装置可编程为执行该功能。“配置为”并不暗示装置构件需要以任何方式改变以提供所定义的操作。
虽然已于本文中参照随附绘图详细描述本技术的说明性实施例,应了解本技术不限于这些准确的实施例,且可由本领域技术人员将各种改变、添加及更改作用于该等实施例中而不脱离如由随附权利要求所定义的技术的范围及精神。例如,可同独立权利要求的特征作出从属权利要求的特征的各种组合,而不脱离本技术的范围。

Claims (27)

1.一种数据处理装置,包括:
指令解码器电路,用于解码指令;以及
指令处理电路,用于执行由所述指令解码器电路所解码的指令;
所述指令解码器电路响应于WHILE指令来控制所述指令处理电路将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于所述控制变量,根据与位置相关联的各谓词标记的状态,所述数据向量于所述数据向量中的各位置处包括多个数据项;以及
所述指令解码器电路响应于CHANGE指令来控制所述指令处理电路根据相关联的饱和值、取决于所述谓词标记的数量以量改变所述控制变量的值,从而在不超过所述饱和值的情况下改变所述控制变量的所述值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理指令应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
2.如权利要求1所述的装置,其中所述算术条件是从下述项组成的列表中选出的条件:
i.所述控制变量小于上限值;
ii. 所述控制变量大于下限值;
iii.所述控制变量小于或等于上限值;以及
iv. 所述控制变量大于或等于下限值。
3.如权利要求1或权利要求2所述的装置,其中所述指令解码器电路响应于所述WHILE指令来控制所述指令处理电路选择所述谓词标记中的一个或多个以供设定至所述活动状态,从而所述控制变量的值并不突破所述算术条件,所述控制变量的所述值考虑了经选择以供设定至所述活动状态的所述谓词标记的数量。
4.如权利要求3所述的装置,其中所述指令解码器电路响应于所述WHILE指令来控制所述指令处理电路根据所述谓词标记预定顺序选择所述谓词标记中的一个或多个以供设定至所述活动状态。
5.如权利要求1至2中的任一项所述的装置,其中所述指令解码器电路响应于所述WHILE指令以在算术条件应用于所述控制变量的同时控制所述指令处理电路继续迭代执行处理循环。
6.如权利要求1至2中的任一项所述的装置,其中所述指令解码器电路响应于所述CHANGE指令来控制所述指令处理电路取决于所述谓词标记的数量及取决于更改值以量改变所述控制变量的所述值,所述更改值形成所述CHANGE指令的参数。
7.如权利要求1至2中的任一项所述的装置,其中:
所述CHANGE指令为减量指令,用于减少所述控制变量的所述值;以及
所述饱和值为可由所述控制变量表示的最小值。
8.如权利要求1至2中的任一项所述的装置,其中:
所述CHANGE指令为增量指令,用于增加所述控制变量的所述值;以及
所述饱和值为可由所述控制变量表示的最大值。
9.一种数据处理装置,包括:
用于解码指令的装置;以及
用于执行由用于解码的装置所解码的指令的装置;
所述用于解码的装置响应于WHILE指令来控制用于执行的所述装置将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于所述控制变量,根据与位置相关联的各谓词标记的状态,所述数据向量于所述数据向量中的各位置处包括多个数据项;以及
所述用于解码的装置响应于CHANGE指令来控制用于执行的所述装置取决于当前被设定至特定状态的所述谓词标记的数量以量改变所述控制变量的值,所述CHANGE指令具有相关联的饱和值,从而所述CHANGE指令的执行可用于在不超过所述饱和值的情况下改变所述控制变量的所述值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理指令应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
10.一种数据处理方法,包括以下步骤:
解码指令;以及
执行由所述解码指令的步骤所解码的指令;
所述解码步骤响应于WHILE指令来控制所述执行步骤将向量处理指令应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于所述控制变量,根据与位置相关联的各谓词标记的状态,所述数据向量于所述数据向量中的各位置处包括多个数据项;以及
所述解码步骤响应于CHANGE指令来控制所述执行步骤取决于当前被设定至特定状态的所述谓词标记的数量以量改变所述控制变量的值,所述CHANGE指令具有相关联的饱和值,从而所述CHANGE指令的执行在不超过所述饱和值的情况下改变所述控制变量的所述值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理指令应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
11.一种包括指令的非暂态机器可读存储介质,所述指令在由计算机执行时,使得所述计算机实现如权利要求10所述的方法。
12.一种虚拟机,所述虚拟机包括数据处理器,所述数据处理器用于执行包括机器可读取指令的计算机程序,其中所述计算机程序的执行使得所述数据处理器充当数据处理装置,所述数据处理装置包括:
指令解码器,用于解码指令;以及
指令处理器,用于执行由所述指令解码器所解码的指令;
所述指令解码器响应于WHILE指令来控制所述指令处理器将向量处理操作应用于至少部分地由控制变量所定义的数据向量的一个或多个数据项,同时算术条件应用于所述控制变量,根据与所述多个数据项相关联的各谓词标记的状态,所述数据向量包括多个数据项;以及
所述指令解码器响应于CHANGE指令来控制所述指令处理器取决于当前被设定至特定状态的所述谓词标记的数量以量改变所述控制变量的值,所述CHANGE指令具有相关联的饱和值,从而所述CHANGE指令的执行在执行时在不超过所述饱和值的情况下改变所述控制变量的所述值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理操作应应用于相对应于所述活动状态下的谓词标记的数据向量的位置。
13.一种数据处理装置,包括:
处理电路,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,所述数据向量在所述数据向量中的各位置处包括多个数据项;所述处理电路包括:
指令解码器电路,用于解码程序指令;以及
指令处理电路,用于执行由所述指令解码器电路所解码的指令;
其中所述指令解码器电路响应于CHANGE指令,所述CHANGE指令具有更改值作为指令参数,所述CHANGE指令用于控制所述指令处理电路以取决于所述谓词标记的数量及所述更改值以量改变变量的值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理操作应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
14.如权利要求13所述的装置,其中所述指令解码器电路响应于所述CHANGE指令来控制所述指令处理电路取决于所述谓词标记的数量的值及所述更改值的乘积以量改变所述变量的所述值。
15.如权利要求13或14所述的装置,其中所述CHANGE指令具有相关联的饱和值,从而所述指令解码器电路响应于所述CHANGE指令来控制所述指令处理电路在不超过所述饱和值的情况下改变所述变量的所述值。
16.如权利要求15所述的装置,其中:
所述CHANGE指令为减量指令,用于减少所述变量的所述值;以及
所述饱和值为可由所述变量表示的最小值。
17.如权利要求15所述的装置,其中:
所述CHANGE指令为增量指令,用于增加所述变量的所述值;以及
所述饱和值为可由所述变量表示的最大值。
18.如权利要求13至14中的任一项所述的装置,其中所述变量为计数变量,所述处理电路在处理循环的一个或多个迭代期间将所述向量处理操作应用于至少部分地由所述计数变量所定义的数据向量;
所述指令解码器电路响应进一步的指令来控制所述指令处理电路取决于所述计数变量检测是否继续迭代执行所述处理循环。
19.如权利要求18所述的装置,其中用于检测是否继续执行所述处理循环的所述进一步的指令包括WHILE指令,所述指令解码器电路响应于所述WHILE指令以在算术条件应用于所述计数变量的同时控制所述指令处理电路继续迭代执行所述处理循环。
20.如权利要求19所述的装置,其中所述算术条件是从下述项组成的列表中选出的条件:
i.所述计数变量小于上限值;
ii. 所述计数变量大于下限值;
iii.所述计数变量小于或等于上限值;以及
iv. 所述计数变量大于或等于下限值。
21.如权利要求19或权利要求20所述的装置,其中所述指令解码器电路响应于所述CHANGE指令来控制所述指令处理电路取决于所述谓词标记的所述数量及所述更改值的所选子集合以量改变所述变量的所述值。
22.如权利要求21所述的装置,其中所述指令解码器电路响应于所述WHILE指令来控制所述指令处理电路选择所述谓词标记中的一个或多个以供设定至所述活动状态,从而循环变量的值并不突破所述算术条件,所述循环变量的所述值考虑了经选择以供设定至所述活动状态的所述谓词标记的数量。
23.如权利要求22所述的装置,其中所述指令解码器电路响应于所述WHILE指令来控制所述指令处理电路选择所述谓词标记中的一个或多个以供根据所述谓词标记预定顺序设定至所述活动状态,从而所述循环变量的值并不突破所述算术条件,所述循环变量的所述值考虑了经选择以供设定至所述活动状态的所述谓词标记的数量。
24.一种数据处理装置,包括:
用于选择性地将向量处理操作应用于数据向量的一个或多个数据项的装置,根据与位置相关联的各谓词标记的状态,所述数据向量在所述数据向量中的各位置处包括多个数据项;所述用于选择性地将向量处理操作应用于数据向量的一个或多个数据项的装置包括:
用于解码指令的装置;以及
用于执行由用于解码的装置所解码的指令的装置;
其中用于解码指令的所述装置响应于CHANGE指令,所述CHANGE指令具有更改值作为指令参数,所述CHANGE指令用于控制用于执行指令的所述装置以取决于所述谓词标记的数量及取决于所述更改值以量改变变量的值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理操作应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
25.一种数据处理方法,包括以下步骤:
选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,所述数据向量在所述数据向量中的各位置处包括多个数据项;
解码指令;以及
执行指令;
其中解码步骤响应于CHANGE指令,所述CHANGE指令具有更改值作为指令参数,所述CHANGE指令用于控制执行步骤以取决于所述谓词标记的数量及取决于所述更改值以量改变变量的值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理操作应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
26.一种包括指令的非暂态机器可读存储介质,所述指令在由计算机执行时,使得所述计算机实现如权利要求25所述的方法。
27.一种虚拟机,所述虚拟机包括数据处理器,所述数据处理器用于执行计算机程序,所述计算机程序包括机器可读取指令,其中所述计算机程序的执行使得所述数据处理器充当数据处理装置,所述数据处理装置包括:
处理器,用于选择性地将向量处理操作应用于数据向量的一个或多个数据项,根据与位置相关联的各谓词标记的状态,所述数据向量在所述数据向量中的各位置处包括多个数据项;所述处理器包括:
指令解码器,用于解码指令;以及
指令处理器,用于执行由所述指令解码器所解码的指令;
其中所述指令解码器响应于CHANGE指令,所述CHANGE指令具有更改值作为指令参数,所述CHANGE指令用于控制所述指令处理器以取决于所述谓词标记的数量及取决于所述更改值以量改变变量的值;
其中,所述谓词标记具有活动状态,所述活动状态指示的是,所述向量处理操作应应用于相对应于所述活动状态下的谓词标记的数据向量的所述位置。
CN201680043612.6A 2015-07-31 2016-07-28 使用动态矢量长度循环的矢量处理 Active CN107851021B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15386025.9 2015-07-31
EP15386025.9A EP3125108A1 (en) 2015-07-31 2015-07-31 Vector processing using loops of dynamic vector length
PCT/EP2016/068013 WO2017021269A1 (en) 2015-07-31 2016-07-28 Vector processing using loops of dynamic vector length

Publications (2)

Publication Number Publication Date
CN107851021A CN107851021A (zh) 2018-03-27
CN107851021B true CN107851021B (zh) 2022-04-22

Family

ID=54140381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680043612.6A Active CN107851021B (zh) 2015-07-31 2016-07-28 使用动态矢量长度循环的矢量处理

Country Status (8)

Country Link
US (1) US10430192B2 (zh)
EP (2) EP3125108A1 (zh)
JP (1) JP6883564B2 (zh)
KR (2) KR20180034501A (zh)
CN (1) CN107851021B (zh)
IL (1) IL256859B (zh)
TW (1) TWI723036B (zh)
WO (1) WO2017021269A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
GB2571527B (en) * 2018-02-28 2020-09-16 Advanced Risc Mach Ltd Data processing
US10528346B2 (en) * 2018-03-29 2020-01-07 Intel Corporation Instructions for fused multiply-add operations with variable precision input operands
EP4278366A1 (en) 2021-01-12 2023-11-22 Emed Labs, LLC Health testing and diagnostics platform
US11929168B2 (en) 2021-05-24 2024-03-12 Emed Labs, Llc Systems, devices, and methods for diagnostic aid kit apparatus
US11615888B2 (en) 2021-03-23 2023-03-28 Emed Labs, Llc Remote diagnostic testing and treatment
US11610682B2 (en) 2021-06-22 2023-03-21 Emed Labs, Llc Systems, methods, and devices for non-human readable diagnostic tests
US12014829B2 (en) 2021-09-01 2024-06-18 Emed Labs, Llc Image processing and presentation techniques for enhanced proctoring sessions
GB2616601B (en) * 2022-03-11 2024-05-08 Advanced Risc Mach Ltd Sub-vector-supporting instruction for scalable vector instruction set architecture

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103890718A (zh) * 2011-10-18 2014-06-25 联发科技瑞典有限公司 数字信号处理器及基带通信设备
TW201437963A (zh) * 2013-03-28 2014-10-01 Fujitsu Ltd 用於包含節點的圖形之資訊處理技術

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745547A (en) * 1985-06-17 1988-05-17 International Business Machines Corp. Vector processing
IT1270439B (it) * 1993-06-10 1997-05-05 Sip Procedimento e dispositivo per la quantizzazione dei parametri spettrali in codificatori numerici della voce
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
WO2002084451A2 (en) * 2001-02-06 2002-10-24 Victor Demjanenko Vector processor architecture and methods performed therein
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US8345968B2 (en) * 2007-06-28 2013-01-01 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method and image decoding method
CA2798354C (en) * 2010-05-12 2016-01-26 Nippon Telegraph And Telephone Corporation A video encoding bit rate control technique using a quantization statistic threshold to determine whether re-encoding of an encoding-order picture group is required
US20120254588A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
CN103583048B (zh) * 2011-06-30 2017-05-17 太阳专利托管公司 图像解码方法、图像编码方法、图像解码装置、图像编码装置及图像编码解码装置
US20130151822A1 (en) * 2011-12-09 2013-06-13 International Business Machines Corporation Efficient Enqueuing of Values in SIMD Engines with Permute Unit
US20140189296A1 (en) * 2011-12-14 2014-07-03 Elmoustapha Ould-Ahmed-Vall System, apparatus and method for loop remainder mask instruction
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
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
US9619229B2 (en) * 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
GB2540941B (en) * 2015-07-31 2017-11-15 Advanced Risc Mach Ltd Data processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103890718A (zh) * 2011-10-18 2014-06-25 联发科技瑞典有限公司 数字信号处理器及基带通信设备
TW201437963A (zh) * 2013-03-28 2014-10-01 Fujitsu Ltd 用於包含節點的圖形之資訊處理技術

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
多任务嵌入式实时控制系统软件的研究;朱文强;《中国优秀硕士论文电子期刊网 信息科技辑》;20150515;第I138-443页 *

Also Published As

Publication number Publication date
TWI723036B (zh) 2021-04-01
US10430192B2 (en) 2019-10-01
EP3125108A1 (en) 2017-02-01
WO2017021269A1 (en) 2017-02-09
EP3329365A1 (en) 2018-06-06
JP2018525735A (ja) 2018-09-06
CN107851021A (zh) 2018-03-27
KR20240058195A (ko) 2024-05-03
IL256859B (en) 2020-03-31
JP6883564B2 (ja) 2021-06-09
TW201716991A (zh) 2017-05-16
US20190012176A1 (en) 2019-01-10
IL256859A (en) 2018-03-29
KR20180034501A (ko) 2018-04-04

Similar Documents

Publication Publication Date Title
CN107851021B (zh) 使用动态矢量长度循环的矢量处理
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
US10778815B2 (en) Methods and systems for parsing and executing instructions to retrieve data using autonomous memory
CN107851018B (zh) 数据处理
KR20160065145A (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
CN110851179A (zh) 控制数据处理器中的指令执行
JP5690728B2 (ja) 外部メモリーへのアクセスを制御する処理システム
KR20130108547A (ko) 다음-명령-타입 필드
EP3125109B1 (en) Vector length querying instruction
EP3759592B1 (en) Data processing
JP2014013605A (ja) 外部メモリーへのアクセスを制御する処理システム

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