以从右向左的方向移动数据的指令

文档序号:74758 发布日期:2021-10-01 浏览:22次 >En<

阅读说明:本技术 以从右向左的方向移动数据的指令 (Instructions to move data in a right-to-left direction ) 是由 T·什莱格尔 J·R·埃尔曼 D·格雷纳 A·萨珀里托 A·蔡 于 2020-02-13 设计创作,主要内容包括:执行用于移动数据的单个架构化指令。所述执行包括以从右向左的顺序将指定长度的数据从源位置移动到目的地位置,以提供可预测的结果。即使目的地位置的一部分包含在数据正从其移动的源位置内,也提供可预测的结果。(A single architected instruction for moving data is executed. The execution includes moving data of a specified length from a source location to a destination location in right-to-left order to provide predictable results. Even if a portion of the destination location is contained within the source location from which the data is being moved, predictable results are provided.)

以从右向左的方向移动数据的指令

背景技术

本发明一般涉及促进计算环境内的处理,尤其涉及促进与移动数据相关联的处理。

计算机编程中的常见任务是将元素插入到阵列中的特定位置。为此,从要插入的位置开始到阵列的末端的所有元素在阵列中向高移动一个元素。然后,将新元素存储在阵列中的插入点处。现有元素的这种移动是从最高编号的元素开始,并在地址上向下进行到插入点处的现有元素。

许多计算机指令集架构提供了将数据从一个位置拷贝到另一个位置的机制。例如,英特尔x86架构具有REP MOVS指令。此外,由纽约阿蒙克市的国际商业机器公司提供的硬件架构具有移动字符(MVC)指令。这些移动型指令以从左到右的方式处理数据(例如,在存储器中的较低位置处开始,且进行到较高位置)。因此,使用这些移动型指令中的一者将在元素P处开始的N个现有元素向高移动一个元素导致在阵列元素P+1到N+1处拷贝阵列元素P。使用这些指令将不会为上述将阵列中的元素移动到更高索引以插入新元素的编程范例提供期望的结果。相反,编译器使用通常比给定指令集架构的本机移动型指令慢的指令序列。

发明内容

通过提供一种用于促进计算环境内的处理的计算机程序产品,解决了现有技术的缺点,并且提供了附加的优点。该计算机程序产品包括可由处理电路读取并且存储用于执行方法的指令的计算机可读存储介质。所述方法包括获得用于移动数据的指令,所述指令是单个架构化指令。执行所述指令,并且所述执行包括将指定长度的数据在从右向左的方向从源位置移动到目的地位置以提供可预测的结果。目的地位置的一部分被包含在数据正从其移动的源位置内。

通过使用单个架构化指令来在从右向左的方向移动数据,可以比使用软件范例更有效地执行某些任务,例如将元素插入到阵列中。数据移动执行得更快,从而减少执行时间,且改进处理器和/或整体系统性能。

作为一个示例,源位置是是以字节为单位的一个大小,而目的地位置是以字节为单位的另一个大小。在一个示例中,以字节为单位的一个大小和以字节为单位的另一个大小是相同的大小。此外,在一个示例中,目的地位置的该部分包括与源位置的一个或多个字节重叠的目的地位置的一个或多个字节。例如,目的地位置的一个或多个字节包括目的地位置的最左字节。然而,在一个示例中,源位置的最左字节在目的地位置之外。

即使在源位置和目的地位置存在重叠,结果仍然是可预测的,使得指令能够被用于在从右向左的方向上移动数据以便在一个或多个任务中使用。

在一个实施例中,要移动的数据的指定长度由与指令相关联的位置指定。该位置例如是与指令相关联的隐式寄存器。

作为示例,使用指令的一个或多个字段来指定源位置,并且使用指令的一个或多个其他字段来指定目的地位置。

在一个实施例中,由计算环境的处理器执行该执行,并且如由处理器观察到的,用于移动数据的源位置和目的地位置的访问序列是从右向左的方向,但是如由一个或多个其他处理器观察到的访问序列是未定义的。

此外,在一个实施例中,所述执行由计算环境的处理器执行,并且移动数据包括将数据从源位置拷贝到内部缓冲器。然后,将数据从内部缓冲器移动到目的地位置。数据表现为如处理器所观察到的那样在从右向左的方向上移动,并且如一个或多个其它处理器所观察到的那样在不确定的方向上移动。因此,移动数据可以以多种方式实现,包括在序列中从右向左移动数据,或者将数据移动到内部缓冲器,然后将其从内部缓冲器移动到目的地位置。在后一种情况下,如处理器所观察到的,数据表现为从右向左移动,因为重叠的任何字节位置都没有被拷贝(复制),而是看起来被移动了。

本文还描述并要求保护与一个或多个方面相关的计算机实现的方法和系统。此外,本文还描述并要求保护与一个或多个方面相关的服务。

通过本文所述的技术实现了额外的特征和优点。其它实施例和方面在本文中详细描述,且被视为所主张的方面的一部分。

附图说明

在说明书结尾处的权利要求中作为示例特别指出并清楚地要求了一个或多个方面。从结合附图的以下详细描述中,一个或多个方面的前述和目的、特征和优点将变得显而易见,在附图中:

图1A描绘了用于结合和使用本发明的一个或多个方面的计算环境的一个示例;

图1B描绘了根据本发明的一个或多个方面的图1A的处理器的进一步细节;

图2描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一示例;

图3A描绘了根据本发明的一个方面的从右向左移动指令的一种格式;

图3B描述了根据本发明的一个方面的由指令所使用的隐式寄存器、通用寄存器0的字段的一个示例;

图4描绘了根据本发明的一个方面的与从右向左移动指令的执行相关联的处理的一个示例;

图5A-5B描绘了根据本发明的一个方面的促进计算环境内的处理的一个示例;

图6A描绘了用于结合和使用本发明的一个或多个方面的计算环境的另一示例;

图6B描绘了图6A的存储器的进一步细节;

图7描绘了云计算环境的一个实施例;以及

图8描绘了抽象模型层的一个示例。

具体实施方式

根据本发明的一个方面,提供了促进计算环境内的处理的能力。作为一个示例,提供单个指令(例如,在硬件/软件接口处的单个架构硬件机器指令)以便以从右向左的方向移动数据。该指令,在此称为从右向左移动指令,是通用处理器指令集体系架构(ISA)的一部分,其由处理器(例如通用处理器)上的程序分派。

参见图1A描述包括和使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括例如处理器102(例如,中央处理单元)、存储器104(例如,主存储器;又名系统存储器、主存储装置、中央存储装置、存储装置)、以及通过例如一个或多个总线108和/或其他连接而彼此耦合的一个或多个输入/输出(I/O)设备和/或接口106。

在一个示例中,处理器102基于硬件架构,并且是诸如IBM服务器之类的服务器的一部分,该服务器也由国际商业机器公司提供并实现z/Architecture硬件架构。z/Architecture硬件架构的一个实施例在名称为“z/Architecture Principles ofOperation(z/Architecture操作原理)”的出版物(IBM公开号SA22-7832-11,第12版,2017年9月)中描述,特此将其通过引用全文并入本文。然而,z/Architecture硬件架构仅是一个示例架构;其他架构和/或其他类型的计算环境可包括和/或使用本发明的一个或多个方面。在一个示例中,处理器执行操作系统,诸如由纽约州阿蒙克市的国际商业机器公司提供的操作系统。

处理器102包括用于执行指令的多个功能组件。如图1B中所描绘的,这些功能组件包括:例如,指令提取组件120,用于提取要执行的指令;指令解码单元122,用于对所提取的指令进行解码并且获得经解码的指令的操作数;指令执行组件124,用于执行解码的指令;存储器访问组件126,用于在必要时为指令执行而访问存储器;以及回写组件130,用于提供所执行的指令的结果。根据本发明的一个或多个方面,这些组件中的一个或多个可以包括在从右向左移动数据(或可以使用本发明的一个或多个方面的其它处理)时使用的一个或多个其它组件的至少一部分或可以访问这些组件,如本文所述。一个或多个其他组件包括例如移动数据组件(或其他组件)136。

参看图2来描述用以并入且使用本发明的一个或多个方面的计算环境的另一示例。在一个示例中,计算环境基于z/Architecture硬件架构;然而,计算环境可基于由国际商业机器公司或其他公司提供的其他架构。

参照图2,在一个示例中,计算环境包括中央电子复合体(CEC)200。CEC 200包括多个组件,例如耦接到一个或多个处理器(又名中央处理单元(CPU))204和输入/输出子系统206的存储器202(又名系统存储器、主存储器、主存储装置、中央存储装置、存储装置)。

存储器202包括例如一个或多个逻辑分区208、管理逻辑分区的管理程序(hypervisor)210和处理器固件212。管理程序210的一个示例是由纽约Armonk的国际商业机器公司提供的Processor Resource/System Manager(处理器资源/系统管理器)(PR/SMTM)管理程序。如本文所使用的,固件包括例如处理器的微代码。其包括例如在更高级机器代码的实现中使用的硬件级指令和/或数据结构。在一个实施例中,其包括例如通常作为微代码递送的专有代码,所述微代码包括可信软件或特定于底层硬件的微代码,并控制对系统硬件的操作系统访问。

每个逻辑分区208能够充当单独的系统。即,每个逻辑分区可以被独立地重置,运行诸如z/OS操作系统或另一操作系统的客户操作系统220,并且用不同的程序222操作。在逻辑分区中运行的操作系统或应用程序看上去有权访问完整的系统,但是实际上,其仅一部分是可用的。

存储器202耦合到处理器(例如,CPUs)204,其是可以被分配给逻辑分区的物理处理器资源。例如,逻辑分区208包括一个或多个逻辑处理器,每个逻辑处理器表示可以被动态地分配给逻辑分区的物理处理器资源204的全部或共享。

进一步,存储器202耦合到I/O子系统206。I/O子系统206可以是中央电子复合体的一部分或与其分离。它引导主存储器202和输入/输出控制单元230以及耦接到中央电子复合体的输入/输出(I/O)设备240之间的信息流。

可以使用许多类型的I/O设备。一个特定类型是数据存储设备250。数据存储设备250可以存储一个或多个程序252、一个或多个计算机可读程序指令254和/或数据等。计算机可读程序指令可以被配置以执行本发明的各方面的实施例的功能。

作为一个示例,每个处理器204包括和/或具有对用于从右向左移动数据(和/或本发明的一个或多个方面的其它操作)的移动数据组件(或其它组件)260的访问。在各种示例中,可以存在执行这些功能的一个或多个组件。许多变化是可能的。

中央电子复合体200可以包括和/或耦合到可移除/不可移除、易失性/非易失性计算机系统存储介质。例如,它可以包括和/或耦合到不可移除的非易失性磁性介质(通常称为“硬盘驱动器”)、用于从一个可移除的非易失性磁盘(例如,“软盘”)中读取和向其写入的磁盘驱动器、和/或用于从可移除的非易失性光盘(例如CD-ROM、DVD-ROM或其他光学介质)读取或向可移除的非易失性光盘写入的光盘驱动器。应当理解,其他硬件和/或软件组件可以与中央电子复合体200结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据归档存储系统等。

进一步,中央电子复合体200可以与许多其他通用或专用计算系统环境或配置一起操作。可以适用于中央电子复合体200的公知的计算系统、环境和/或配置的例子包括但不限于:个人计算机(PC)系统、服务器计算机系统、瘦客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品,网络PC、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境,等等。

虽然本文描述了计算环境的不同示例,但本发明的一个或多个方面可与许多类型的环境一起使用。本文提供的计算环境仅是示例。

如上所述,计算机编程中的常见任务是将一个或多个元素插入到阵列中的特定位置。为此,从要插入的位置开始到阵列的末端的所有元素在阵列中向高移动一个元素。然后,将新元素存储在阵列中的插入点处。现有元素的这种移动是从最高编号的元素开始,并在地址上向下进行到插入点处的现有元素。

作为示例,在C语言中,元素的移动可以如下所示地被编码。假设阵列中当前有N个元素,并且新的元素将被插入到位置P。

for(int i=N;i>=P;i--)

array[i+1]=array[i];

常规上,认为较低编号的阵列元素和存储器中的地址在左边,且认为较高编号的阵列元素和地址在右边。因此,在一个示例中,数据将在从右向左的方向上移动。

根据本发明的一个方面,提供了一种指令,即单个架构化硬件指令,被称为从右向左移动指令,以便在从右向左的方向上移动数据。在一个示例中,编译器直接使用从右向左(而不是如常规那样从左向右)移动数据的单个架构化指令来实施以下循环:

for(int i=N;i>=P;i--)

array[i+1]=array[i].

使用该指令在阵列中插入元素比使用循环中的离散指令或使用立即软件缓冲器快得多。促进了计算机内的处理以及任务的处理,从而提高了系统性能。

此外,尽管使用从右向左移动指令的一个例子是在阵列中插入元素,但是从右向左移动指令可以用于执行其中数据将在从右向左的方向上移动的其它任务。

参考附图3A-3B描述了用于将数据从右向左移动的从右向左移动指令的一个实施例。在一个示例中,使用通用处理器(例如,处理器102或204)来执行指令。在本文的描述中,指示了特定位置、特定字段和/或字段的特定大小(例如,特定字节和/或位)。然而,可以提供其他位置、字段和/或大小。此外,尽管可以指定将位设置为特定值,例如一或零,但是这仅是示例。在其它示例中,可将所述位设定为不同值,例如相反值或另一值。许多变化是可能的。

参考图3A,在一个示例中,从右向左移动(MVCRL)指令300的格式是SSE格式,其表示具有扩展操作代码(操作码)字段的存储和存储操作。作为示例,指令包括具有指示从右向左移动操作的操作码的操作码字段302(例如,位0-15);第一基址字段(B1)304(例如,位16-19),其指定将由所述指令使用的通用寄存器;提供第一位移的第一位移字段(D1)306(例如,位20-31);第二基址字段(B2)308(例如,位32-35),其指定将由所述指令使用的另一通用寄存器;以及提供第二位移的第二位移字段(D2)310(例如位36-47)。在一个示例中,位移D1和D2被作为12位无符号二进制整数来对待。作为示例,由B1字段304指定的通用寄存器的内容被添加到D1字段306的内容以形成第一操作数的地址(在存储中);且由B2字段308指定的通用寄存器的内容被添加到D2字段310的内容以形成第二操作数的地址(在存储中)。两个操作数地址指定例如相应操作数的最左字节。在一个示例中,字段304-310中的每一者与操作码字段分离且独立。此外,在一个实施例中,它们彼此分离且独立;然而,在其它实施例中,可以合并多于一个字段。

在一个实施例中,指令的执行包括使用隐式通用寄存器(即,未由指令明确指定的寄存器),例如通用寄存器0、GR0。如图3B所示,通用寄存器0的内容(320)包括长度(L)322。例如,通用寄存器0的位56-63包括第一和第二操作数的长度。此外,在一个示例中,通用寄存器0的位32-55应含有零;否则,程序在将来可能不能兼容地运行。在此实施例中忽略通用寄存器0的位0-31。作为示例,L指定每个操作数的第一字节右边的字节数目。因此,每个操作数的字节长度是1-256,对应于L中的长度代码0-255。尽管在一个示例中,长度在隐式寄存器中提供,但是在其他示例中,它可以在指令的字段中提供,或者在寄存器中提供,或者在由指令指定的其他位置中提供。存在许多可能性。

在执行从右向左移动指令时,通过例如以从右向左的顺序移动字节,从每个操作数的最右字节开始,将第二操作数(例如,使用第二操作数地址来定位)放置在第一操作数位置(由第一操作数地址指定)。获得结果,就好像从右向左处理两个操作数一样。然而,如其它CPU和通道程序所观察到的,对操作数的访问顺序是未定义的。任一操作数可在24位寻址模式中从位置224-1绕回到0,在31位寻址模式中从位置231-1绕回到0,或在64位寻址模式中从位置264-1绕回到0。

当由第二操作数地址指定的字节位置(源的最左字节)与第一操作数(目的地)的除了由第一操作数地址指定的字节位置(目的地的最左字节)之外的任何字节位置重叠时,结果是不可预测的。

在一个示例中,条件码保持不变。

示例程序异常包括:

-存取(取,操作数2;存储,操作数1)

-操作(如果没有安装混杂指令扩展设施3(例如,设施指示位61没有被设置为一)

-事务约束

示例编程注释包括:

1.例如,通过向右移动原始元素和所有更高的元素,可以使用从右向左移动指令来在阵列中打开一个孔,以便随后插入元素。在这种情况下不能使用从左向右移动的指令,例如移动字符指令,因为它们会破坏性地覆盖数组元素。

2.对于具有多于一个存储操作数的大多数其它指令,当目的地操作数的最左字节位于源操作数内并且两个操作数不完全重叠时,发生破坏性重叠。然而,对于从右向左移动的指令,当目的地操作数的最右字节位于源操作数内并且没有与源操作数完全重叠时,发生破坏性重叠。因此,在编程注释1中描述的情形对于MVCRL来说不是破坏性的重叠,但是如果使用z/架构硬件架构的移动字符(MVC)指令,则将是破坏性的重叠。

在一个实施例中,使用内部缓冲器的硬件实现禁用破坏性重叠检查。例如,硬件(例如,处理器或耦合到处理器的其他硬件的硬件)在存储到目的地操作数之前将整个源操作数取到内部硬件缓冲器中。执行此操作的硬件具有大的内部缓冲器,这些内部缓冲器对于正获取由该CPU存储的目的地操作数的其他CPU是不可见的。

因此,根据本发明的一个方面,可以以至少两种方式来实现从右向左移动指令:(1)处理器将数据从右向左移动,然后其他处理器只观察到从右向左的排序;或者(2)处理器将整个源数据移动到内部硬件缓冲器,然后将其移动到其目的地,其中可以以任何顺序(例如,在不确定的方向上、从左到右、从右向左等)执行目标数据的这种存储。对于后一种情况,由于数据首先被拷贝到内部硬件缓冲器,如该处理器所观察到的,数据看起来从右向左移动,因为重叠的任何字节位置未被拷贝(复制),而是看起来被移动;如其它处理器所观察到的,数据例如在不确定的方向上移动。

参考图4描述了根据本发明的一个方面的基于执行从右向左移动指令的处理的一个实施例的进一步细节。在一个示例中,诸如通用处理器102或204之类的处理器被用于执行该指令。在一个示例中,处理器的硬件被用于执行指令。硬件可以在处理器内或耦合到处理器以用于从处理器接收指令,处理器例如获得、解码和设置指令以在硬件上执行。其它变化是可能的。

参考图4,最初,获得(例如,取回、接收、提供等)被称为从右向左移动指令(例如,MVCRL指令300)的指令,步骤400,并且执行该指令,步骤402。该执行包括例如获得要移动的数据长度的指示,步骤404。长度(例如,L 322)由指令使用的位置(例如,隐式寄存器,例如,通用寄存器0(320))指定。

例如,从源操作数的最右字节(其位置使用指令的字段(例如,B1、D1)指定)开始,将数据的一个或多个字节从源操作数移动到例如从最右字节开始的目的地位置(例如,使用指令的字段(例如,B2、D2)指定),步骤406。所移动的数据量(例如,所移动的字节的数目)取决于从例如通用寄存器0获得的长度。

在步骤408,即使在源操作数位置和目的地位置之间存在重叠(除了源操作数位置的最左字节与目的地位置的除了目的地位置的最左字节之外的字节重叠之外),在从右向左的方向上移动数据的结果(即,移动的数据)也是可预测的。

在一个示例中,如从执行指令的处理器观察到的,用于从右向左执行移动数据的访问序列是从右向左的;如从其它处理器/通道程序所观察到的,访问序列是未定义的,步骤410。

如本文所述,在一个方面,提供单个指令(例如,硬件/软件接口处的单个架构化机器指令,例如,从右向左移动指令)以在从右向左的方向上移动数据。该指令例如是在指令集架构(ISA)中定义的硬件指令。结果,降低了与在从右向左的方向上移动数据相关的程序的复杂度。此外,操作的性能以及因此处理器的性能得到改进。处理更快,减少了执行时间,提高了性能。

尽管描述了从右向左移动指令的各种字段和寄存器,但是本发明的一个或多个方面可以使用其它、附加或更少的字段或寄存器,或者其它大小的字段和寄存器等。许多变化是可能的。例如,可以使用隐式寄存器来代替明确指定的寄存器或指令的字段,和/或可以使用明确指定的寄存器或字段来代替隐式寄存器或字段。其它变化也是可能的。

本发明的一个或多个方面不可分地依赖于计算机技术,并便于计算机内的处理,从而提高其性能。使用单个架构化机器指令来从右向左的方向移动数据通过降低复杂度并提高处理速度来改善计算环境内的性能。数据和/或指令可以用于许多技术领域,例如计算机处理、医疗处理、安全等。通过提供移动数据的优化,通过减少执行时间来改进这些技术领域。

参考附图5A-5B描述了促进计算环境内的处理的一个实施例的进一步细节,因为它涉及本发明的一个或多个方面。

参考图5A,在一个实施例中,获得用于移动数据的指令(500)。所述指令是单个架构化指令(502)。执行指令(504),并且执行包括将指定长度的数据以从右向左的方向从源位置移动到目的地位置以提供可预测的结果(506)。目的地位置的一部分被包含在正从其移动数据的源位置内(508)。

作为示例,源位置是以字节为单位的一个大小,而目的地位置是以字节为单位的另一个大小(510)。目的地位置的该部分包括例如目的地位置的一个或多个字节,其与源位置的一个或多个字节重叠(512)。目的地位置的一个或多个字节包括目的地位置的最左字节(514)。此外,在一个示例中,源位置的最左字节在目的地位置之外(516)。此外,作为示例,以字节为单位的一个大小和以字节为单位的另一大小是相同大小(518)。

作为一个示例,参考图5B,要移动的数据的指定长度由与指令相关联的位置指定(520)。该位置例如是与指令相关联的隐式寄存器(522)。

此外,在一个示例中,使用指令的一个或多个字段来指定源位置(524);并且使用指令的一个或多个其它字段来指定目的地位置(526)。

在一个方面,该执行由计算环境的处理器执行,并且如由处理器观察到的,用于移动数据的源位置和目的地位置的访问序列是从右向左的方向,但是如由一个或多个其他处理器观察到的访问序列是未定义的(528)。

在一个实施例中,由计算环境的处理器执行该执行,并且移动数据包括将数据从源位置拷贝到内部缓冲器(530),以及将数据从内部缓冲器移动到目的地位置(532)。数据表现为如处理器所观察到的那样在从右向左的方向上移动,并且如一个或多个其它处理器所观察到的那样在不确定的方向上移动(534)。

尽管本文的示例描述了移动数据字节,但是可以移动其他大小的数据单元。字节仅是一个示例。其他变化和实施例是可能的。

本发明的方面可由许多类型的计算环境使用。参看图6A描述用以并入且使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境10包含(例如)本地中央处理单元(CPU)12、存储器14和通过(例如)一个或多个总线18和/或其他连接而彼此耦合的一个或多个输入/输出装置和/或接口16。作为示例,计算环境10可以包括由纽约州阿蒙克市的国际商业机器公司提供的处理器;具有Intel Itanium II处理器的HPSuperdome,其由美国加州Palo Alto惠普公司提供;和/或基于由国际商业机器公司、惠普、英特尔公司、甲骨文或其他公司提供的架构的其他机器。IBM、z/Architecture、IBM z、z/OS、PR/SM和PowerPC是国际商业机器公司在至少一个管辖区域中的商标或注册商标。Intel和Itanium是英特尔公司或其子公司在美国和其他国家的商标或注册商标。

本地中央处理单元12包括一个或多个本地寄存器20,诸如在环境内的处理期间使用的一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示环境在任何特定时间点的状态的信息。

此外,本地中央处理单元12执行存储在存储器14中的指令和代码。在一个特定示例中,中央处理单元执行存储在存储器14中的仿真器代码22。此代码使在一个架构中配置的计算环境能够模拟另一架构。例如,仿真器代码22允许基于除z/Architecture硬件架构之外的架构的机器(诸如PowerPC处理器、HPSuperdome服务器或其他)仿真z/Architecture硬件架构并执行基于z/Architecture硬件架构开发的软件和指令。

参考图6B描述与仿真器代码22有关的进一步细节。存储在存储器14中的客户指令30包括为在不同于本地CPU 12的架构的架构中执行的而开发的软件指令(例如,与机器指令相关)。例如,客户机指令30可能已经被设计得用以在基于z/Architecture硬件架构处理器上执行,但改为在本地CPU 12上仿真,所述本地CPU 12可为(例如)Intel Itanium II处理器。在一个示例中,仿真器代码22包括指令获取例程32,以从存储器14获得一个或多个客户指令30,并且可选地为所获得的指令提供本地缓冲。它还包括指令转换例程34以确定已经获得的客户指令的类型并将客户指令转换成一个或多个对应的本机指令36。此转换包含(例如)识别将由客户指令执行的功能及选择原生指令以执行所述功能。

进一步,仿真器代码22包括仿真控制例程40以使得本机指令被执行。仿真控制例程40可致使本地CPU12执行模拟一个或多个先前获得的客户指令的本地指令的例程,且在此执行结束时,将控制返回到指令获取例程以模拟下一客户指令或一组客户指令的获得。本机指令36的执行可包含如由转换例程确定的将数据从存储器14加载到寄存器中;将数据从寄存器存储回存储器;或执行某种类型的算术或逻辑运算。

每一例程例如以软件实现,所述软件存储在存储器中且由本地中央处理单元12执行。在其他示例中,在固件、硬件、软件或其某一组合中实施例程或操作中的一个或多个。仿真处理器的寄存器可使用本地CPU的寄存器20或通过使用存储器14中的位置来模拟。在实施例中,客户指令30、本机指令36和仿真器代码22可以驻留在相同的存储器中或者可以分布在不同的存储器设备之间。

上文所描述的计算环境仅为可使用的计算环境的示例。可以使用其他环境,包括但不限于其他非分区环境、其他分区环境和/或其他仿真环境;实施例不限于任何一个环境。

每个计算环境都能够被配置得包括本发明的一个或多个方面。例如,根据本发明的一个或多个方面,每个计算环境可以被配置得提供移动数据处理。

一个或多个方面可以涉及云计算。

应当理解,尽管本公开包括关于云计算的详细描述,但是本文所引用的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其他类型的计算环境来实现。

云计算是一种服务交付模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便、按需的网络访问,所述可配置计算资源可以用最小的管理努力或与服务提供商的交互来快速配置和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。

特性如下:

按需自助服务:云消费者可按需自动地单方面供应计算能力,诸如服务器时间和网络存储,而无需与服务提供商进行人工交互。

广泛的网络接入:通过网络提供功能,并通过标准机制进行访问,所述标准机制促进由异构的瘦客户端或厚客户端平台(例如,移动电话、膝上型计算机和PDA)的使用。

资源池化:提供者的计算资源被汇集起来以使用多租户模型来服务于多个消费者,不同的物理和虚拟资源根据需要被动态分配和重新分配。存在位置独立性的意义,因为消费者通常对所提供资源的确切位置不具有控制权或知识,但可能能够指定更高抽象层级的位置(例如,国家、州或数据中心)。

快速弹性:在某些情况下,可以快速且弹性地配置功能,以快速扩展缩小并迅速释放以快速收缩。对于消费者而言,可用于配置的功能通常似乎是无限的,可以在任何时间以任何数量购买。

度量的服务:云系统通过利用与服务类型(例如,存储、处理、带宽和活动用户帐户)相适应的某种抽象层级的计量能力,自动控制和优化资源使用。可以监视、控制和报告资源使用情况,为所使用服务的提供者和使用者提供透明性。

服务模型如下:

软件即服务(SaaS):向消费者提供的能力是使用在云基础设施上运行的提供者的应用。这些应用可通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储或甚至个体应用功能的底层云基础结构,可能的例外是有限的用户特定的应用配置设置。

平台即服务(PaaS):向消费者提供的能力是在云基础结构上部署消费者创建或获取的应用,所述应用是用提供者所支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础结构,但是具有对所部署的应用以及可能的应用托管环境配置的控制。

基础设施即服务(IaaS):向消费者提供的能力是提供消费者能够部署和运行可包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消费者不管理或控制底层云基础结构,而是具有对操作系统、存储、所部署的应用的控制,以及对所选联网组件(例如,主机防火墙)的可能有限的控制。

部署模型如下:

私有云:云基础结构仅为组织运营。它可以由组织或第三方管理,并且可存在于场所内或场所外。

社区云:云基础结构由多个组织共享,并支持具有共同关注点(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可存在于场所内或场所外。

公共云:云基础结构可供公众或大型行业团体使用,并由销售云服务的组织拥有。

混合云:云基础结构是由两个或更多个云(私有、社区或公共的)组成的,这些云仍然是唯一性实体,但通过标准化或专有技术来绑定在一起,这些技术实现数据和应用的可移植性(例如,用于云之间的负载平衡的云突发)。

云计算环境是面向服务的,着重于无状态性、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点网络的基础架构。

现在参见图7,描绘说明性云计算环境50。如图所示,云计算环境50包括一个或多个云计算节点52,云消费者使用的本地计算设备(诸如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N)可与云计算节点52通信。节点52可以彼此通信。它们可以在一个或多个网络中,诸如在上文所述的私有云、社区云、公共云或混合云或其组合中,被物理地或虚拟地分组(未示出)。这允许云计算环境50提供基础结构、平台和/或软件作为服务,云消费者不需要为其在本地计算设备上维护资源。应当理解,图7中所示的计算设备54A-N的类型仅旨在是说明性的,并且计算节点52和云计算环境50可通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备进行通信。

现在参见图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应预先理解,图8中所示的部件、层和功能旨在仅是说明性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储65;以及网络和联网组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。

在一个示例中,管理层80可提供下文所描述的功能。资源供应81提供用于执行云计算环境内的任务的计算资源和其他资源的动态获取。计量和定价82在云计算环境内利用资源时提供成本跟踪,并针对这些资源的消费进行计费或开票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及对数据和其他资源的保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)计划和履行85为根据SLA预期的云计算资源的未来要求提供云计算资源的预安排和采购。

工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负荷和功能的示例包括:地图和导航91;软件开发和生命周期管理92;虚拟教室教育交付93;数据分析处理94;事务处理95;以及移动数据处理96。

本发明的各个方面可以是处于任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或媒体),所述计算机可读程序指令用于致使处理器执行本发明的方面。

计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。

本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令并且转发这些计算机可读程序指令以便存储在对应的计算/处理设备内的计算机可读存储介质中。

用于执行本技术方案的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的Smalltalk、C++等编程语言,以及过程式编程语言,例如“C”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA))可以通过使用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本技术方案的各方面。

在此参照根据技术方案的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本技术方案的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。

这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储介质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。

计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的过程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中指定的功能和动作。

附图中的流程图和框图示出了根据本技术方案的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。

除上述之外,一个或多个方面可由提供客户环境管理的服务提供商提供、承诺、部署、管理、服务等。例如,服务提供商可创建、维护、支持为一个或多个客户执行一个或多个方面的计算机代码和/或计算机基础设施。作为回报,服务提供商例如可根据订阅和/或费用协议从消费者接收支付。附加地或替代地,服务提供商可以从广告内容向一个或多个第三方的销售接收支付。

在一个方面,可部署用于执行一个或多个实施例的应用程序。作为一个示例,应用程序的部署包括提供可操作用于执行一个或多个实施例的计算机基础设施。

作为另一方面,可部署计算基础架构,包括将计算机可读代码集成到计算系统中,其中与计算系统结合的代码能够执行一个或多个实施例。

作为又一方面,可提供一种用于集成计算基础结构的过程,所述过程包括将计算机可读代码集成到计算机系统中。计算机系统包括计算机可读介质,其中计算机介质包括一个或多个实施例。与计算机系统结合的代码能够执行一个或多个实施例。

尽管上面描述了各种实施例,但是这些仅是示例。例如,可以使用其他架构的计算环境来包括和使用一个或多个实施例。进一步,可使用不同的指令或操作。另外,可以指定要移动的数据的不同大小和/或其他字段、字段的大小等等。许多变化是可能的。

进一步,其他类型的计算环境可以受益并且可以被使用。作为示例,适合于存储和/或执行程序代码的数据处理系统是可用的,其包括直接地或通过系统总线间接地耦合到存储器元件的至少两个处理器。存储器元件包括例如在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数的高速缓冲存储器。

输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备、DASD、磁带、CD、DVD、拇指驱动器和其他存储介质等)可以直接地或通过中间I/O控制器耦合到系统。网络适配器也可以耦合到系统,以使得数据处理系统能够通过居间的私有或公共网络变得耦合到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡仅是网络适配器的可用类型中的少数几种。

在此使用的术语仅用于描述具体实施例的目的并且不旨在是限制性的。如在此使用的,单数形式“一个”、“一种”和“该”旨在也包括复数形式,除非上下文另外清楚地指示。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包含”时,其指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。

以下权利要求中的所有装置或步骤加上功能元件(如果有的话)的相应结构、材料、动作和等效物旨在包括用于结合如具体要求保护的其他要求保护的元件来执行功能的任何结构、材料或动作。出于说明和描述的目的已经给出了对一个或多个实施例的描述,但是并不旨在是详尽的或限于所公开的形式。许多修改和变化对本领域的普通技术人员将是明显的。选择和描述实施例以便最好地解释各个方面和实际应用,并且使得本领域普通技术人员能够理解具有适合于所预期的特定用途的不同修改的不同实施例。

25页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:有条件退让给管理程序指令

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!