向量操作数位大小控制的利记博彩app

文档序号:14013939阅读:271来源:国知局

本公开涉及数据处理系统的领域。更具体地,本公开涉及支持向量处理操作的数据处理系统。



背景技术:

已知提供一种数据处理系统,该系统支持使用至少一个向量操作数而进行向量处理操作,该向量操作数具有向量操作数位大小且包括多个向量元件。通常,向量操作数位大小被定义为数据处理系统架构的一部分,例如该架构定义了向量操作数位大小将为某个具体固定值,诸如256位、512位、1024位等。



技术实现要素:

本公开的至少一些实施例提供了一种用于处理数据的装置,包括:

处理电路,用于在异常级别状态层级中的选定异常级别状态下执行处理操作,该异常级别状态层级在顶部异常级别状态与底部异常级别状态之间延伸;以及

解码器电路,用于解码程序指令,以生成控制信号来控制该处理电路来执行该处理操作,该处理操作包括使用至少一个向量操作数的向量处理操作;其中

该解码器电路响应于在该选定异常级别状态下执行的向量操作数位大小相关程序指令,以控制该处理电路根据该选定异常级别状态的向量操作数位大小极限值、和比该选定异常级别状态更靠近该层级内顶部异常级别状态的异常级别状态的至少一个可编程向量操作数位大小极限值,来执行向量处理操作。

本公开的至少一些实施例提供了用于处理数据的装置,包括:

处理装置,用于在异常级别状态层级中的选定异常级别状态下执行处理操作,该异常级别状态层级在顶部异常级别状态与底部异常级别状态之间延伸;以及

解码器装置,用于解码程序指令,以生成控制信号来控制该处理装置来执行该处理操作,该处理操作包括使用至少一个向量操作数的一个或多个向量处理操作;其中

该解码器装置响应于在该选定异常级别状态下执行的向量操作数位大小相关程序指令,以控制该处理装置根据该选定异常级别状态的向量操作数位大小极限值、和比该选定异常级别状态更靠近该层级内顶部异常级别状态的异常级别状态的至少一个可编程向量操作数位大小极限值,来执行向量处理操作。

本公开的至少一些实施例提供了一种用于处理数据的方法,包括:

用处理电路在异常级别状态层级中的选定异常级别状态下执行处理操作,该异常级别状态层级在顶部异常级别状态与底部异常级别状态之间延伸;以及

解码程序指令,以生成控制信号来控制该处理电路来执行该处理操作,该处理操作包括使用至少一个向量操作数的向量处理操作;其中

响应于在该选定异常级别状态下执行的向量操作数位大小相关程序指令,控制该处理电路根据该选定异常级别状态的向量操作数位大小极限值、和比该选定异常级别状态更靠近该层级内顶部异常级别状态的异常级别状态的至少一个可编程向量操作数位大小极限值,来执行向量处理操作。

附图说明

示例的实施例现将通过仅示例的方式参照附图被描述,其中:

图1示意地示出了支持使用向量操作数进行向量处理的数据处理系统;

图2示意地示出了通用向量操作数和向量述词操作数(vectorpredicateoperand)形式的示例性向量操作数;

图3示意地示出了在具有多个异常级别状态和用于控制与各个异常级别状态相关联的向量操作数位大小的可编程极限值的系统内的向量操作数位大小相关指令和允许的向量操作数位大小查询指令的行为的具体实例;

图4是图3的概括版本,示出了具有n个异常级别状态的系统的行为;

图5示意地示出了系统配置寄存器,用于储存可编程极限值,并且从该系统配置寄存器中可以由允许的向量操作数位大小查询指令来进行上下文相关读取;

图6a和6b是示意地分别示出了上下文相关向量操作数位大小相关指令和上下文相关允许的向量操作数大小查询指令的行为的流程图;

图7是示意地示出了写入可编程极限值时的行为的流程图;

图8示意地示出了当增加向量操作数大小时的行为;以及

图9示意地示出了虚拟机实现方式。

具体实现方式

图1示意地示出了数据处理系统2,其包括处理器4、和储存数据8和程序指令10的存储器6。处理器4包括指令撷取电路12,该电路从存储器6中撷取程序指令10并将该指令传递到解码器电路14,在该解码器电路处指令被解码以生成控制处理器4的操作的控制信号16。更具体地,控制信号16控制处理电路18以执行由经解码的程序指令指定的处理操作。处理电路18耦接到向量寄存器电路20用于储存向量操作数,该向量操作数具有向量操作数位大小并且包含多个向量元件。系统配置寄存器22还耦接到处理电路18并且用以储存配置值,该配置值可在处理电路18的软件控制下被编程,并且该配置值用于配置处理电路18的行为,诸如用于向量处理指令的向量操作数位大小,并根据可编程极限值(plv)对向量操作数位大小的约束。

图2示意地示出了向量操作数的两个示例的形式。第一示例的向量操作数24是通用向量操作数,诸如可以在执行向量程序指令(例如,向量运算指令、向量逻辑指令等)时用作源操作数或目的操作数。在此示例中,通用向量操作数24被示出为具有512位的向量操作数位大小,并且被示出为包含八个向量元件,每个向量元件具有64位向量元件位大小。向量元件示出为a0至a7。

图2还示出了向量操作数的另一示例的形式,即,向量述词操作数26。这可以是正在对通用向量操作数24执行的向量处理操作相关联的向量述词操作数。向量述词操作数26包含多个述词值p0至p7,该述词值针对向量程序指令所操纵的向量操作数内的相应向量元件控制相关联的向量程序指令的执行。例如,述词值可以开启或关闭与通用向量操作数内各个向量元件相关联的向量处理。在示出的示例中,向量述词操作数具有64位长度,并且每个述词值的长度是8位。

图1的数据处理系统2使用用于储存向量操作数24、26的向量寄存器电路22的特定实现方式而实施。实际上,利用本公开的处理器架构进行的不同实体实现方式可以为向量操作数提供具有不同实现方式限制的最大位大小。目标为高处理速度的复杂实现方式可以为向量操作数提供较大位大小,诸如1024位。相反,目标为在操作期间提供更低能耗的处理器的实现方式,可以支持更小的最大向量操作数位大小,诸如128位。期望的是,被写入用以在数据处理系统2的处理器架构上执行的软件,将能够在无需根据用于执行该软件的特定处理器4的实现方式受限的向量操作数位大小而作任何(或显著)修改的情况下使用。此外,特定软件可以经测试/验证用于特定向量操作数位大小,并且该软件自身可意在约束在其执行中使用的向量操作数位大小,使其不同于(小于)实现方式最大向量操作数位大小。在利用多个异常级别状态(例如,特权级别)的系统内,期望的是,更高特权级别的软件应该能够约束在较低异常级别状态执行的软件所使用的向量操作数位大小,例如,已经验证可正确操作直至给定最大向量操作数位大小的操作系统,可希望约束在该操作系统下执行的应用程序不超过该操作系统已经验证的最大向量操作数位大小。

图3示意地示出了在用于处理器4的特定实现方式的与不同的异常级别状态相关联的可编程极限值。在此实现方式中,实现方式受限的最大操作数位大小是512。处理器4支持在四个不同异常级别状态下的执行,即el0、el1、el2及el3。该异常级别状态被布置在从底部异常级别状态延伸至顶部异常级别状态el3的异常级别状态层级中。除了底部异常级别状态以外,每个异常级别状态具有与自身相关联的可编程极限值(plvx)。在其他示例的实施例(未示出)中,底部异常级别状态el0还可以具有与自身关联的可编程极限值(plv0)。这些可编程极限值指示与每个异常级别状态相关联的向量操作数位大小。在图3的示例中,异常级别状态el1具有384位的可编程极限值,异常级别状态el2具有256位的可编程极限值,以及异常级别el3具有512位的可编程限制级别。该可编程极限值指示将用于执行向量程序指令的最大向量操作数位大小,该向量程序指令在考虑的异常级别状态处和在低于该相关异常级别状态的全部异常级别状态下执行。由此,与异常级别状态相关联的可编程极限值对于在自身异常级别处执行的程序指令的向量操作数大小施加限制,并且还向在异常级别状态层级内的更低异常级别处执行的程序指令施加此限制。例如,在异常级别状态el2处执行的管理程序(hypervisor)可支持最大向量操作数位大小256,并且此限制将施加于在异常级别el1处执行的操作系统软件和在异常级别el0处执行的应用软件,然而其他软件实例自身能够使用由其自身的可编程极限值指定的更大的向量操作数位大小,例如,在异常级别状态el1下的操作系统。

当要执行向量操作数位大小相关指令时,则控制所采用的(以及由处理电路18所使用的)向量操作数位大小,使得能够使用向量操作数位大小来执行处理,该向量操作数位大小受控于当前选定异常级别状态的极限值和针对比(自身可或不可编程的)当前选定选择级别状态更靠近层级内顶部异常级别状态的异常级别状态而设定的任何(全部)可编程极限值。底部异常级别状态(在此示例的实施例中)没有相关联的可编程极限值,但遵从比底部异常级别状态更靠近层级内顶部异常级别状态的所有其他异常级别状态的可编程极限值。向量程序指令将正常使用向量操作数位大小,该向量操作数位大小具有允许用于正在执行的向量操作数位大小相关指令的最大值。这提供更高级别的并行操作。

在特定异常级别状态下执行的软件需要确定由于更靠近顶部异常级别状态的异常级别状态的约束,而使能够潜在地使用的最大向量操作数位大小。为实现此目的,解码器电路14和处理电路18支持允许的操作数位大小查询指令。该允许的向量操作数位大小查询指令用于返回向量操作数位大小指示值,该向量操作数位大小指示值由比选定异常级别状态更靠近层级内顶部异常级别状态的异常级别状态所约束,在该选定异常级别状态下,处理电路18执行所允许的向量操作数位大小查询指令。因此,在图3的示例中,在异常级别状态el0(对应于由应用程序使用的底部异常级别状态)中执行的允许的向量操作数位大小查询指令将返回受异常级别状态el2的可编程极限值256的约束的允许的向量操作数位大小指示值256,其,尽管(在此示例性实施例中)异常级别状态el0不具有相关联极限值,并且在异常级别el1处执行的操作系统的相关联极限值是更高值384。返回的允许的向量操作数位大小指示值是根据与更高异常级别状态相关联的可编程极限值,而不是根据与允许的向量操作数位大小查询指令自身在其中执行的选定异常状态相关联的任何可编程极限值。在图3的示例中,允许的向量操作数位大小查询指令在异常级别状态el2处的执行返回了允许的向量操作数位大小指示值512,因为此值是与异常级别状态el3相关联的可编程极限值,尽管与异常级别状态el2自身相关联的可编程极限值是256。允许的向量操作数位大小查询指令允许在特定异常级别状态下执行的软件决定该软件可使用的最大向量操作数位大小,从而设定软件自身的可编程极限值或修改其自身行为的某些其他方面。

4图是图3中给定的特定实例的广义版本。在此广义版本中,有n个异常级别。用于在给定异常级别下的向量操作数位大小相关指令的向量操作数位大小被确定为由异常级别状态自身的可编程极限值所指示的最小值,并且具有更靠近层级内顶部异常级别状态的其他可编程极限值。(在此示例的实施例中)在异常级别el0的情况下,其自身并不具有可编程极限值,并因此它的向量操作数位大小被确定为由层级内更高异常级别状态的全部可编程极限值所指示的最小值。顶部异常级别状态el(n-1)具有用于其向量操作数位大小相关指令的向量操作数位大小,由其自身可编程极限值plv(n-1)指定。

在图4的广义示例的情况下,在返回的向量操作数位大小指示值情况下,这是由与比允许的向量操作数位大小查询指令自身执行时所在的异常级别状态更高的层级内异常级别状态相关联的全部可编程极限值指示的最小值而给定的。在顶部异常级别状态的情况下,返回的允许的向量操作数位大小指示值是处理器4(以及向量寄存器电路20)的特定实现方式的实现方式受限的向量操作数位大小。

图5示意地示出了系统寄存器22的形式的示例,该系统寄存器22可用于控制上述行为。该系统寄存器22包括标识寄存器zidr_el1以及多个异常级别配置寄存器zcr_elx。解码器电路14可响应于允许的向量操作数位大小查询指令和当前异常级别状态(从而使得指令为上下文相关)来读取标识寄存器zidr_el1。从该寄存器读取的所返回的值是允许的向量操作数位大小指示值,该值如以上关于图3和图4所述确定。具体地,尽管允许的向量操作数位大小查询指令的执行可以被编程者视为读取标识系统寄存器,实际上,可从其他源(包括多个异常级别配置寄存器zcr_elx和实现方式受限的最大操作数位大小)提取结果。在编程模型中,向量操作数位大小查询指令的执行效果将返回标识寄存器位zidr_el1的最低有效位。这具有对应于前述的最大允许的向量操作数位大小指示值的值。该返回值依据的异常级别配置寄存器zcr_elx是由异常级别状态控制的,在该异常级别状态下执行允许的向量操作数位大小查询指令。当在底部异常级别状态下执行时,读取标识寄存器zidr_el1的尝试可以不返回值,并且该指令可随后被处理为触发未定义指令异常的未定义指令。与除底部级别异常级别状态以外的各个异常级别状态相关联的异常级别配置寄存器zcr_elx用于储存可编程极限值plvx,该值plvx通过写入这些异常级别配置寄存器而被设定。从在给定异常级别状态下执行的异常级别配置寄存器zcr_elx中读取指令或写入指令的系统寄存器,被允许读取或写入在其自身异常级别状态下和在异常级别状态层级内任何更低的异常级别状态(更靠近底部异常级别状态)下的异常级别配置寄存器。尝试读取或写入更高异常级别状态的异常级别配置寄存器zcr_elx,导致未定义指令行为。

在该示例的实例中,可编程极限值可以是4位值,并且用来通过增加1和乘以128来指示向量操作数位大小。显然的是,还可使用可编程极限值与向量操作数位大小之间的由它们指定的其他映射,例如,指定向量操作数大小为2的幂。

图6a是示意地示出上下文相关的向量操作数位大小相关指令的执行的流程图。在步骤28中,处理等待直至解码器14接收到向量操作数位大小相关指令。在步骤30中,解码器14随后生成控制信号16以控制处理电路18和处理器内的其他元件,以读取当前选定的异常级别状态可编程极限值和所有更高异常级别状态可编程极限值。在步骤32中,确定这些读取值的最小值。在步骤34中,执行由向量操作数位大小相关指令指定的处理(诸如算术操作、逻辑操作或一些其他操作),该指令将在步骤32处所确定的最小值用作向量操作数位大小。

图6b是示意地示出了上下文相关的允许的向量操作数位大小查询指令的操作的流程图。在步骤36,处理等待直到解码器电路14接收到允许的向量操作数位大小查询指令。该允许的向量操作数位大小查询指令可以例如是读取标识寄存器zidr_el1。当接收到该种指令时,处理前进到步骤38,此处,读取针对所有更高异常级别状态(和适当地,实现方式受限的最大向量操作数位大小)而设定的可编程极限值。步骤40确定从步骤38的读取值的最小值。步骤42返回读取值的最小值,作为最大的允许的向量操作数位大小(允许的向量操作数位大小指示值)。然后,处理结束。

图7是示意地示出了当将可编程极限值plv写入系统配置寄存器22中的一个时,处理器4的行为的流程图。可以针对给定的异常级别状态而设定的可编程极限值,被限制于针对更高异常级别状态而设定的可编程极限值,并且限制于处理器4的具体实现方式的约束。例如,处理器4的具体实现方式可以支持向量操作数位大小512、256及128,但不支持向量操作数位大小384。因此,如果对异常级别配置寄存器zcr_elx中的一个的系统寄存器写入指令正在尝试定义对应于向量操作数位大小384的可编程极限值,则这可以由异常级别状态层级内更高的可编程极限值而允许,但无法被处理器4的硬件实现方式所允许。在此情况下,响应于系统寄存器写入指令而储存在异常级别配置寄存器zcr_elx内的可编程极限值,被舍入至下一最低硬件支持向量操作数位大小。因此,在上述示例中,对应于384的可编程极限值的尝试写入可以被更高异常级别状态的可编程极限值允许但无法由硬件实现方式所允许,因此,储存的值被舍入到下一最低支持向量操作数大小,即256。通过尝试将不同的可编程极限值写入异常级别配置寄存器,然后读取回已储存的值,由于更高异常级别状态的软件设定的可编程极限和由硬件实现方式设定的极限,在特定异常级别状态下执行的软件可以确定哪些向量操作数位大小被支持或不被支持。

在图7的步骤44中,处理等待到解码器14接收到写入异常级别配置寄存器zcr_elx的指令。在步骤46中,确定被写入的指定的可编程极限值是否是由硬件支持的可编程极限值。执行附加检查(未图示)以确保写入的值不与更高异常级别状态的可编程极限值冲突。

如果由步骤44中解码的指令写入的可编程极限值被硬件(和软件控制配置)支持,则步骤48用于将指定的可编程极限值写入相关的状态配置寄存器。如果在步骤46处确定写入的可编程极限值不受硬件支持,则处理前进到步骤50,此处,转而将舍入的可编程极限值写入状态配置值,该状态配置值已被舍入到相关的硬件实现方式所支持的下一最低值。

图8示意地示出在向量操作数位大小增加时处理系统的行为。应当了解,通过可编程极限值的使用,软件可以动态改变使用中的向量操作数位大小。该改变可以对系统具有显着的操作后果,并且这是为什么不允许底部异常级别状态控制其自身向量操作数位大小的一个原因,从而避免通常在该底部异常级别状态下执行的应用程序产生不期望的行为。

当向量操作数位大小增加(诸如,响应于可编程极限值改变,或在允许使用更大向量操作数位大小的异常级别状态内对于操作的异常级别状态的改变)时,向量操作数的最新可访问部分52变得可供向量处理指令使用。为帮助提供处理系统2的决定性行为,该处理系统2通过以下方式响应于该向量操作数位大小的增加:使向量操作数的最新可访问部分内的值归零,或替代地确保最新可访问部分内的值已被保持在当该最新可访问部分是最后一次可用时该值所具有的状态下。

图9示出了可使用的虚拟机实现方式。尽管前文描述的实施例根据操作支持相关技术的特定处理硬件的设备和方法方面而实现了本发明,但还可以提供所谓的硬件设备的虚拟机实现方式。这些虚拟机实现方式在运行支持虚拟机程序510的主机操作系统520的主机处理系统530上运行。通常,需要大型强大的处理器来提供以合理速度执行的虚拟机实现方式,但在某些情况下该种方法可以是合理的,诸如当期望为了兼容性或重用原因而运行另一处理器本地的代码时。虚拟机程序510向应用程序500提供应用程序接口,其与将由实际硬件提供的应用程序接口相同,该实际硬件是由虚拟机程序510建模的设备。因此,可以使用虚拟机程序510从应用程序500内执行包括上述存储器访问的控制的程序指令以便对它们与虚拟机硬件的交互进行建模。

尽管本文已参照附图详细描述了发明的说明性实施例,但应当理解,发明并不限定于这种精确实施例,并且在不背离本发明的范围和精神的情况下,本领域技术人员可以在对其进行各种改变、增加和修改。例如,在不背离本发明的范围和精神的情况下,独立权利要求的特征可以与从属权利要求的特征进行各种组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1