CN104185872A - 用以计算与指定存储器的边界的距离的指令 - Google Patents
用以计算与指定存储器的边界的距离的指令 Download PDFInfo
- Publication number
- CN104185872A CN104185872A CN201280071423.1A CN201280071423A CN104185872A CN 104185872 A CN104185872 A CN 104185872A CN 201280071423 A CN201280071423 A CN 201280071423A CN 104185872 A CN104185872 A CN 104185872A
- Authority
- CN
- China
- Prior art keywords
- operand
- instruction
- border
- register
- field
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 107
- 238000004590 computer program Methods 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 28
- 238000006073 displacement reaction Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 8
- 238000003860 storage Methods 0.000 description 36
- 238000013519 translation Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 23
- 238000005516 engineering process Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 239000000872 buffer Substances 0.000 description 10
- 230000003139 buffering effect Effects 0.000 description 8
- 230000014759 maintenance of location Effects 0.000 description 8
- 230000001343 mnemonic effect Effects 0.000 description 7
- 238000004088 simulation Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000007935 neutral effect Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 208000015976 Corneal dystrophy-perceptive deafness syndrome Diseases 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004513 sizing Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Radar Systems Or Details Thereof (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供“对块边界载入计数”指令,该指令提供从指定存储器地址到指定存储器边界的距离。存储器边界是在载入数据时不跨越的边界。边界可以以多种方式指定,包括但不限于:指令文本中的可变值、以操作码编码的固定指令文本值或者基于寄存器的边界;或者边界可以被动态确定。
Description
技术领域
本发明总体涉及数据处理,尤其涉及包括存储器边界的处理。
背景技术
数据处理包括各种类型的处理,包括文本处理或者其他类型的处理。在数据处理期间,当被处理的数据正在接近指定存储器边界时,经常需要执行特殊处理。与接近存储器边界的处理相关联的当前指令和/或技术倾向于效率低下或有问题。
发明内容
经由提供用于执行机器指令的计算机程序产品来克服现有技术的缺点并提供优势。该计算机程序产品包括计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行方法的指令。该方法包括(例如):由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义以用于计算机执行,该机器指令包含:至少一个操作码字段,其提供操作码,该操作码识别“对块边界载入计数”操作;寄存器字段,其用以指明寄存器,该寄存器包含第一操作数;以及用于指示第二操作数的位置的至少一个字段,该第二操作数至少包括主存储器的块的一部分;以及执行该机器指令,该执行包含:确定从第二操作的位置到主存储器的块的边界的距离;以及将表示该距离的值放置在第一操作数中。
本文中也描述和主张关于本发明的一个或多个方面的方法和系统。另外,本文中也描述且可主张关于本发明的一个或多个方面的服务。
经由本发明的技术实现额外特征和优势。本发明的其他实施例和方面在本文中得以详细描述且被视为所主张的本发明的一部分。
附图说明
现在将参考附图仅通过示例方式描述本发明的实施例,在附图中:
图1描绘并入且使用本发明的一个或者多个方面的计算环境的实例;
图2A描绘并入且使用本发明的一个或者多个方面的计算环境的另一实例;
图2B描绘根据本发明的一个方面的图2A的存储器的进一步细节;
图3描绘根据本发明的一个方面的“对块边界载入计数”指令的格式的一个实施例;
图4描绘根据本发明的一个方面的与“对块边界载入计数”指令相关联的逻辑;
图5A描绘根据本发明的一个方面的对于其提供计数的存储器块的至少一部分的一个实例;
图5B描绘根据本发明的一个方面的包括计数的通用寄存器的一个实例;
图6描绘根据本发明的一个方面的寄存器文件的一个实施例;
图7描绘并入本发明的一个或多个方面的计算机程序产品的实施例;
图8描绘并入且使用本发明一个或多个方面的主机计算机系统的一个实施例;
图9描绘并入且使用本发明一个或多个方面的计算机系统的另一实例;
图10描绘并入且使用本发明一个或多个方面的包含计算机网络的计算机系统的另一实例;
图11描绘并入且使用本发明一个或多个方面的计算机系统的各种元件的一个实施例;
图12A描绘并入且使用本发明一个或多个方面的图11的计算机系统的执行单元的一个实施例;
图12B描绘并入且使用本发明一个或多个方面的图11的计算机系统的分支单元的一个实施例;
图12C描绘并入且使用本发明一个或多个方面的图11的计算机系统的载入/存储单元的一个实施例;以及
图13描绘并入且使用本发明一个或多个方面的仿真主机计算机系统的一个实施例。
具体实施方式
根据本发明的一个方面,提供用于确定从指定位置(例如,存储器地址)到指定存储器边界的距离的能力。存储器边界例如是主存储器(也称为主储存器)的块的末尾。主存储器的块是指定大小的存储器的任何块。指定大小也称为块的边界。主存储器的块包括诸如字符数据、整数数据或者任何其他类型的数据之类的数据。
字符数据包括(但不限于)任何语言中的字母字符;数字;标点符号;和/或其他符号。字符数据可为或可不为数据的串。标准与字符数据相关联,标准的实例包括(但不限于):ASCII(美国信息交换标准码);Unicode,包括(但不限于)UTF(Unicode变换格式)8;UTF16;等。
在一个具体实例中,提供“对块边界载入计数”(LCBB)指令,其提供从存储器中的指定地址到指定存储器边界的数据的字节的数目。在计算字节的数目(本文称为计数)时,使用边界大小。可以通过该指令(例如,指令文本中的可变值、以操作码编码的固定指令文本值、指令中指定的基于寄存器的边界等)明确指定边界大小;或者可以通过机器动态确定边界大小。例如,该指令指定边界(诸如页或者高速缓冲存储器边界)的类型,并且该机器要么通过预指定值要么动态基于信息(例如,例如在翻译后备缓冲器中用以确定页大小的查找),确定高速缓冲存储器线或者页大小。
作为一个实例,“对块边界载入计数”指令提供可以从或者已经从存储器载入至例如寄存器而没有跨越存储器的指定边界的数据的字节的数目。存储器可以是向量寄存器或者任何其他类型的寄存器。
向量寄存器(也被称作向量)包括一个或多个元素,且作为实例,向量寄存器(也称为向量)的每个元素的长度为一个、两个或四个字节。另外,向量操作数(例如)为具有多个元素的SIMD(单指令多数据)操作数。在其他实施例中,元素可以是其他大小的;且向量操作数不需要为SIMD,和/或可包括一个元素。
参看图1描述并入且使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括(例如)经由(例如)一个或多个总线108和/或其他连接耦接至彼此的处理器102(例如,中央处理单元)、存储器104(例如,主存储器)和或多个输入/输出(I/O)器件和/或接口106。
在一个实例中,处理器102基于由International Business MachinesCorporation供应的z/Architecture,且为服务器的一部分,诸如也由InternationalBusiness Machines Corporation供应且实施z/Architecture的System z服务器。z/Architecture的一个实施例描述于题为“z/Architecture Principles ofOperation”的公开号(SA22-7832-08号,第九版,2010年8月)中,该公开号在此以其全文引用的方式并入本文中。在一个实例中,该处理器执行操作系统,诸如,也由International Business Machines Corporation供应的z/OS。、和为International Business MachinesCorporation(Armonk,New York,USA)的注册商标。本文中使用的其他名称可为International Business Machines Corporation或其他公司的注册商标、商标或产品名称。
在另一实施例中,处理器102基于由International Business MachinesCorporation供应的Power架构。Power架构的一个实施例描述于“Power ISATM第2.06版修订B”(International Business Machines Corporation,2010年7月23日)中,该文件在此以其全文引用的方式并入本文中。POWER为International Business Machines Corporation的注册商标。
在另一实施例中,处理器102基于由Intel Corporation供应的Intel架构。Intel架构的一个实施例描述于“64and IA-32Architectures Developer'sManual:第2B卷,Instructions Set Reference,A-L”(序号253666-041US,2011年12月)和“64and IA-32Architectures Developer's Manual:第2B卷,Instructions Set Reference,M-Z”(序号253667-041US,2011年12月)中,这些文件中的每一个在此以其全文引用的方式并入本文中。为IntelCorporation(Santa Clara,California)的注册商标。
参看图2A描述并入且使用本发明的一个或多个实施例的计算环境的另一实施例。在此实例中,计算环境200包括(例如)经由(例如)一个或多个总线208和/或其他连接耦接至彼此的本地中央处理单元202、存储器204和一个或多个输入/输出器件和/或接口206。作为实例,计算环境200可包括:由International Business Machines Corporation(Armonk,New York)供应的PowerPC处理器、pSeries服务器或xSeries服务器;由Hewlett Packard Co.(PaloAlto,California)供应的具有Intel Itanium II处理器的HP Superdome;和/或基于由International Business Machines Corporation、Hewlett Packard、Intel、Oracle或其他供应的架构的其他机器。
本地中央处理单元202包括在该环境内的处理期间使用的一个或多个本地寄存器210,诸如,一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,本地中央处理单元202执行存储于存储器204中的指令和程序代码。在一个特定实例中,中央处理单元执行存储于存储器204中的仿真器代码212。此代码使得以一个架构中配置的处理环境能够仿真另一架构。举例而言,仿真器代码212允许基于不同于z/Architecture的架构的机器(诸如,PowerPC处理器、pSeries服务器、xSeries服务器、HP Superdome服务器或其他)仿真z/Architecture和执行基于z/Architecture开发的软件和指令。
参看图2B描述关于仿真器代码212的进一步细节。客户指令250包含经开发以欲于不同于本地CPU202的架构的架构中执行的软件指令(例如,机器指令)。举例而言,客户指令250可能已经设计以在z/Architecture处理器102上执行,但相反,正在本地CPU202(其可为(例如)Intel Itanium II处理器)上仿真客户指令250。在一个实例中,仿真器代码212包括指令取得单元252以自存储器204获得一个或多个客户指令250,并且可选地提供用于所获得的指令的本地缓冲。仿真器代码212也包括指令翻译例程254以确定已获得的客户指令的类型且将客户指令翻译成一个或多个对应本地指令256。此翻译包括(例如)识别要由客户指令执行的功能并选择(多个)本地指令以执行该功能。
另外,仿真器212包括仿真控制例程260以使得执行本地指令。仿真控制例程260可使得本地CPU202执行仿真一个或多个先前所获得的客户指令的本地指令的例程,并且,在这种执行完成时,将控制返回至指令取得例程以仿真下一个客户指令或群客户指令的获得。本地指令256的执行可包括将数据自存储器204载入至寄存器中;将数据自寄存器存储回至存储器;或执行某类型的算术或逻辑运算(如由翻译例程确定那样)。
每个例程(例如)以软件来实施,该软件存储于存储器中且由本地中央处理单元202来执行。在其他实例中,例程或运算中的一个或多个以固件、硬件、软件或其某组合来实施。可使用本地CPU的寄存器210或通过使用存储器204中的位置仿真仿真处理器的寄存器。在实施例中,客户指令250、本地指令256和仿真器代码212可常驻于相同存储器中或可在不同存储器器件间分配。
如本文中所使用,固件包括(例如)处理器的微码、毫码和/或宏码。固件包括(例如)在高级机器码的实施中使用的硬件级指令和/或数据结构。在一个实施例中,固件包括(例如)通常作为微码递送的专属码,该微码包括受信任软件或基础硬件所特有的微码且控制操作系统对系统硬件的存取。
在一个实例中,所获得的、经翻译并经执行的客户指令250为本文中所描述的指令。自存储器取得是一个架构(例如,z/Architecture)的指令,将该指令翻译且表示为另一架构(例如,PowerPC、pSeries、xSeries、Intel等)的本地指令256的序列。然后执行这些本地指令。
如本文中所描述,可将“对块边界载入计数”指令实施为包括(但不限于)z/Architecture、Power、Intel等的各种架构的一部分。尽管本文中所描述的实施例针对z/Architecture,但指令和本发明的一个或多个实施例可基于许多其他架构。z/Architecture仅为实例。
在图3中描绘“对块边界载入计数”指令的一个实施例。在一个实例中,“对块边界载入计数”指令300包括:操作码字段302a(例如,位0至7)、302b(例如,位40至47),其指示“对块边界载入计数”操作;寄存器字段304(例如,位8至11),其用以指明通用寄存器(R1);索引字段(X2)306(例如,位12至15);基本字段(B2)308(例如,位16至19);位移(displacement)字段(D2)310(例如,位20至31);和掩码字段(M3)312(例如,位32至35)。在一个实例中,字段304至312中的每一个分开且独立于(多个)操作码字段。另外,在一个实施例中,这些字段分开且独立于彼此;然而,在其他实施例中,可组合一个以上字段。下文描述关于这些字段的使用的其他信息。
在一个实例中,由操作码字段302a指明的操作码的选定位(例如,前两个位)指定指令的长度和格式。在此特定实例中,长度为三个半字,且格式为具有扩展操作码字段的“寄存器和索引储存器运算”。
与指令的字段相关联的下标编号表示该字段适用的操作数。举例而言,与R1相关联的下标编号1表示第一操作数,等等。寄存器操作数的长度为一个寄存器,其为(例如)128个位。
在一个实例中,在“寄存器和索引储存器运算”指令中,将由X2和B2字段指明的通用寄存器的内容添加至D2字段的内容以形成第二操作数地址。在一个实例中,将针对“对块边界载入计数”指令的位移D2作为12-位无符号整数对待。第二操作数地址用以指示主存储器中的位置;然而,在该实施例中不用于寻址数据。
在一个实施例中,M3字段指定用以用信号向CPU通知关于块边界大小,以计算在不跨越寄存器边界的情况下载入的可能字节的数目。若指定保留值,则看作为指定例外。实例码和对应值如下:
在另一实例中,边界大小不包括在该指令中,而相反,该边界大小由执行该指令的处理器动态确定。例如,M3字段指定边界的类型(例如,高速缓冲存储器线、页等),并且基于该类型和处理器的一个或者多个特性(例如,处理器的高速缓冲存储器线大小、处理器的页大小等),处理器确定该边界。作为实例,基于该类型,处理器使用边界的固定大小(例如,处理器的预定义固定高速缓冲存储器线或者页大小),或者基于该类型,处理器确定边界。例如,如果该类型是页边界,则处理器在翻译后备缓冲器(TLB)中查找开始地址,并且从其确定页边界。也存在其他实例。例如,可以由指令的另一字段或者依据指令的外部的控制提供该类型。
在“对块边界载入计数”指令的一个实施例的执行中,在第一操作数中指定的通用寄存器中放置含有可能自第二操作数位置载入而不跨越指定块边界(例如覆盖于要载入的向量寄存器大小(例如,16)处)的字节的数目的无符号的二进制整数(例如,64位)。
由于在指令的执行,可选条件码设定诸如例如:
0–操作数一是十六
1–
2–
3–操作数一小于十六
在上述实例指令中,开始地址通过索引寄存器值(X2)+基寄存器值(B2)+位移(D2)来确定;然而,在其他实施例中,通过以下来提供开始地址:寄存器值;指令地址+指令文本指定偏移(offset);寄存器值+位移;或寄存器值+索引寄存器值;(仅作为一些实例)。
参看图4描述处理“对块边界载入计数”指令的一个实施例的进一步细节。在一个实例中,计算环境的处理器正执行此逻辑。
在一个实施例中,最初,建立边界掩码(BdyMask),其用以确定与指定边界的靠近性(步骤400)。为了建立该掩码,在一个实例中,采用边界大小(BdySize)(402)的2的补数否定数(complement negation),建立边界掩码404(例如,BdyMask=0-BdySize)。在一个实例中,通过指令(例如,M3字段)提供边界大小;或在另一实例中,由机器确定边界大小,如本文中所描述。
此后,计算开始地址,其指示从其计数将开始的存储器中的位置(步骤410)。作为实例,可通过以下数据来提供开始地址412:寄存器值;指令地址加上指令文本指定偏移;寄存器值加上位移;寄存器值加上索引寄存器值;或寄存器值加上索引寄存器值加上位移。在本文中提供的指令中,由X2字段、B2字段和D2字段来提供开始地址。即,将通过X2和B2指明的寄存器的内容添加至通过D2指示的位移以提供开始地址。计算开始地址的上文所指示的方式仅为实例;其他实例也可能。
接下来,计算结束地址,其指示停止计数的位置(步骤420)。此计算的输入(例如)为边界大小402、开始地址412、向量大小414(vec_size)414和边界掩码404。向量大小是选定向量寄存器或者其他寄存器的大小(例如,以字节;例如,16)。寄存器例如是其中可以载入数据的寄存器。在一个实例中,如下计算结束地址422:
EndAddress=min(StartAddress+(BdySize-(StartAddress&BdyMask)),StartAddress+vec_size)。
此后,计算计数(步骤40)。例如,count=EndAddress422–StartAddress412。在另一实例中,可以依据开始地址而不是用结束地址计算该计数。在该实例中,count=min(16,BdySize–(StartAddress AND BdyMask)),其中,16是字节的向量寄存器(或者其他寄存器)的大小。在其他实例中,可以使用其他寄存器大小。
在图5A中描绘存储器块500的至少一部分的一个实例。存储器块500包括从选定地址502到指定边界504的数据。如所指示,无数据经过由虚垂直线504指明的边界计数或者载入。经过边界的位置不可存取且没有例外发生。另外,根据本发明的一个方面确定的从选定地址到指定边界的距离的计数存储在通用寄存器510中,其示例在图5B中描绘。如所示,在该实例中,计数是13十六进制,因此0D存储在通用寄存器510中,以指示数据的13个字节已经被计数并且可以存储在向量寄存器中。
上面描述用于确定从指定地址到指定边界的距离的计数指令。如果指定地址在边界附近,可以提供警报,由此可能需要特殊处理。
作为一个实例,“对块边界载入计数”指令用于确定有多少个数据的字节被载入至寄存器,诸如向量寄存器。然后该计数可以用在其他处理中。
在一个实施例中,被载入并且对于其获取计数的寄存器是作为向量工具的一部分的向量寄存器。该向量工具例如提供范围从一个到十六个元素的固定大小的向量。每个向量包括由该工具中定义的向量指令在其上操作的数据。在一个实施例中,如果向量由多个元素组成,则每个元素与其他元素并行处理。直至所有元素的处理完成,不出现指令完成。
作为一个实例,存在32个向量寄存器,且其他类型的寄存器可映射至该向量寄存器的象限。举例而言,如图6中所展示,若存在包括32个向量寄存器602的寄存器文件600且每寄存器的长度为128个位,则长度为64个位的16个浮点寄存器604可重叠这些向量寄存器。因此,作为实例,当修改浮点寄存器2时,然后也修改向量寄存器2。用于其他类型的寄存器的其他映射也可能。
本文中,除非另有明确注释或由上下文注释,否则可互换地使用存储器、主存储器、储存器与主储存器。
作为下文进一步描述的此实施方式的一部分提供关于向量工具的额外细节(包括其他指令的实例)。
如本领域技术人员将了解,本发明的一个或多个实施例可体现为系统、方法或计算机程序产品。因此,本发明的一个或多个实施例可采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微码等)或组合软件与硬件实施例的实施例的形式,这些实施例在本文中大体上皆可被称作“电路”、“模块”或“系统”。此外,本发明的一个或多个实施例可采用体现于一个或多个计算机可读介质(其具有体现于其上的计算机可读程序代码)中的计算机程序产品的形式。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读存储介质。举例而言,计算机可读存储介质可为(但不限于)电子、磁性、光学、电磁、红外线或半导体系统、装置或器件或前述中的任何合适组合。计算机可读存储介质的更特定实例(非详尽清单)包括以下:具有一个或多个电线的电连接、便携型计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便携型光盘-只读存储器(CD-ROM)、光学存储器件、磁性存储器件或前述的任何合适组合。在此文件的上下文中,计算机可读存储介质可为可含有或存储供指令执行系统、装置或器件使用或结合指令执行系统、装置或器件而使用的程序的任何有形介质。
现参看图7,在一个实例中,计算机程序产品700包括(例如)一个或多个非暂时性计算机可读存储介质702以在其上存储计算机可读程序代码构件或逻辑704,以提供和促进本发明的一个或多个实施例。
可使用适当介质(包括(但不限于)无线、有线、光纤缆线、RF等或前述的任何合适组合)传输体现于计算机可读介质上的程序代码。
可以一个或多个程序设计语言的任何组合来编写用于进行本发明的一个或多个方面的操作的计算机程序代码,该一个或多个程序设计语言包括诸如Java、Smalltalk、C++等的面向对象的程序设计语言,和诸如“C”程序设计语言、组译器或类似程序设计语言的常规程序性程序设计语言。程序代码可完全在用户的计算机上执行、部分地在用户的计算机上执行、作为独立软件包而执行、部分地在用户的计算机上且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后者情形下,远程计算机可经由任一类型的网络连接至用户的计算机,该任一类型的网络包括局域网(LAN)或广域网(WAN),或可进行至外部计算机的连接(例如,使用因特网服务提供者经由因特网)。
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或方块图描述本发明的一个或多个方面。应理解,可由计算机程序指令来实施流程图说明和/或方块图的每个块和这些流程图说明和/或方块图中的块的组合。可将这些计算机程序指令提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由该计算机或其他可编程数据处理装置的处理器执行的指令产生用于实施流程图和/或方块图块中所指定的功能/动作的构件。
这些计算机程序指令也可存储于计算机可读介质中,该计算机可读介质可指导计算机、其他可编程数据处理装置或其他器件以特定方式起作用,使得存储于该计算机可读介质中的指令产生制造物件,其包括实施流程图和/或方块图方块中所指定的功能/动作的指令。
也可将这些计算机程序指令载入至计算机、其他可编程数据处理装置或其他器件上以使得在该计算机、其他可编程装置或其他器件上执行一系列操作步骤以产生计算机实施的处理程序,使得在该计算机或其他可编程装置上执行的指令提供用于实施流程图和/或方块图块中所指定的功能/动作的处理程序。
这些图中的流程图和方块图说明根据本发明的一个或多个方面的各种实施例的系统、方法和计算机程序产品的可能实施的架构、功能性和操作。就此而言,流程图或方块图中的每个块可表示模块、区段或代码的一部分,其包含用于实施(多个)指定逻辑功能的一个或多个可执行指令。也应注意,在一些替代实施中,块中所注释的功能可能不以诸图中所注释的次序发生。举例而言,取决于所涉及的功能性,实际上可实质上同时执行连续展示的两个块,或有时可以相反次序执行这些块。也将注意,方块图和/或流程图说明的每个块和方块图和/或流程图说明中的块的组合可由执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施。
除上述内容之外,本发明的一个或多个实施例也可由供应客户环境的管理的服务提供者来提供、供应、部署、管理、服务等。举例而言,服务提供者可为一个或多个客户建立、维护、支持等执行本发明的一个或多个实施例的计算机代码和/或计算机基础结构。作为回报,作为实例,服务提供者可在订用和/或收费协议下自客户收取付款。此外或替代地,服务提供者可自广告内容销售至一个或多个第三方而收取付款。
在本发明的一个方面中,可部署用于执行本发明的一个或多个方面的应用程序。作为实例,应用程序的部署包含提供可操作以执行本发明的一个或多个方面的计算机基础结构。
作为本发明的另一方面,可部署计算基础结构,其包含将计算机可读代码整合至计算系统内,其中与该计算系统组合的代码能够执行本发明的一个或多个方面。
作为本发明的另一方面,可提供用于整合计算基础结构的处理,其包含将计算机可读代码整合至计算机系统中。计算机系统包含计算机可读介质,其中计算机介质包含本发明的一个或多个方面。与该计算机系统组合的代码能够执行本发明的一个或多个方面。
尽管上文描述了各种实施例,但这些仅为实例。举例而言,其他架构的计算环境可并入且使用本发明的一个或多个方面。另外,可使用其他大小的向量,且在不脱离本发明的精神的情况下,可作出对指令的改变。另外,可以使用其他技术计算从指定地址到特定边界的距离。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为实例,适合于存储和/或执行程序代码的数据处理系统为可使用,其包括直接或经由系统总线间接耦接至存储器元件的至少两个处理器。这些存储器元件包括(例如)在程序代码的实际执行期间使用的本地存储器、大容量储存器和高速缓冲存储器,高速缓冲存储器提供至少一些程序代码的临时存储以便减少在执行期间必须自大容量储存器取得代码的次数。
输入/输出端或I/O器件(包括(但不限于)键盘、显示器、指点器件、DASD、磁带、CD、DVD、随身碟(thumb drive)和其他存储器介质等)可直接或经由介入的I/O控制器而耦接至系统。网络适配器也可耦接至系统以使得数据处理系统能够经由介入的私有或公用网络而变得耦接至其他数据处理系统或远程打印机或储存器件。调制解调器、电缆调制解调器和以太网络卡仅为可用类型的网络适配器中的少数几种。
参看图8,描绘实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包含与计算机存储器(即,中央储存器)5002通信的一个或多个CPU5001,以及用于与其他计算机或SAN等通信的至存储介质器件5011和网络5010的I/O接口。CPU5001符合具有构建的指令集和构建的功能性的架构。CPU5001可具有动态地址翻译(DAT)5003,以用于将程序地址(虚拟地址)变换成存储器的真实地址。DAT通常包括翻译后备缓冲器(TLB)5007以用于高速缓冲翻译,使得对计算机存储器5002的块的稍后存取不需要延迟地址翻译。通常,高速缓冲存储器5009用于计算机存储器5002与处理器5001之间。高速缓冲存储器5009可为层级式的,其具有可用于一个以上CPU的大型高速缓冲存储器和在大型高速缓冲存储器与每个CPU之间的较小较快(较低层级)高速缓冲存储器。在一些实施中,将较低层级高速缓冲存储器分割以提供用于指令取得和数据存取的单独的低层级高速缓冲存储器。在一个实施例中,由指令取得单元5004经由高速缓冲存储器5009自存储器5002取得指令。在指令解码单元5006中解码指令,且将指令(在一些实施例中,其他指令)分派给一个或多个指令执行单元5008。通常使用若干个执行单元5008,例如,算术执行单元、浮点执行单元和分支指令执行单元。由执行单元执行指令,从而按需要自指令指定的寄存器或存储器存取操作数。若将自存储器5002存取(载入或存储)操作数,则载入/存储单元5005通常在正被执行的指令的控制下处置存取。可在硬件电路中或在内部微码(固件)中或由两者的组合来执行指令。
如所注释,计算机系统包括在本地(或主)储存器中的信息,以及寻址、保护和参考和改变记录。寻址的一些方面包括地址的格式、地址空间的概念、地址的各种类型,以及将地址的一种类型翻译至地址的另一类型的方式。主储存器中的一些储存器包括永久指派的存储位置。主储存器为系统提供数据的可直接寻址的快速存取存储。在可处理数据和程序两者之前将数据和程序两者载入至主储存器中(自输入器件)。
主储存器可包括一个或多个较小的快速存取缓冲储存器(有时称为高速缓冲存储器)。高速缓冲存储器通常与CPU或I/O处理器相关联。通过程序大体上不可观测到不同存储介质的实体构造和用途的效应(除了对性能的效应外)。
可维持针对指令和针对数据操作数的单独的高速缓冲存储器。将高速缓冲存储器内的信息以相邻字节维持于被称为高速缓冲块或高速缓冲存储器线(或简称为线)的整体边界上。模型可提供“EXTRACT CACHEATTRIBUTE(提取高速缓冲存储器属性)”指令,其返回以字节计的高速缓冲存储器线的大小。模型也可提供“PREFETCH DATA(预先取得数据)”和“PREFETCH DATA RELATIVE LONG(预取得数据相对长度)”指令,其实现储存器至数据或指令高速缓冲存储器中的预取得或数据自高速缓冲存储器的释放。
将储存器视为长水平位串。对于多数操作,对储存器的存取以自左至右顺序进行。将该位的串再分成八个位的单元。八位单元被称为字节,其为所有信息格式的基本建立块。储存器中的每个字节位置通过唯一非负整数来识别,该唯一非负整数为该字节位置的地址或简称为字节地址。邻近字节位置具有连续地址,其以左侧的0开始且以自左至右顺序进行。地址为无符号二进制整数,且为24个、31个或64个位。
在储存器与CPU或通道子系统之间一次一字节或字节群组地传输信息。除非另有指定,否则,在(例如)z/Architecture中,储存器中的字节群组由该群组的最左侧字节来寻址。通过要执行的操作隐含或明确指定该群组中的字节的数目。当在CPU操作中使用时,字节群组被称为字段。在每个字节群组内,在(例如)z/Architecture中,以自左至右顺序对位编号。在z/Architecture中,最左侧位有时被称作“高阶”位,且最右侧位有时被称作“低阶”位。然而,位编号不是存储地址。可仅寻址字节。为了对储存器中的字节的单独位操作,存取整个字节。将字节中的位自左至右编号为0至7(在(例如)z/Architecture中)。对于24位地址,可将地址中的位编号为8至31或40至63,或对于31位地址,可将地址中的位编号为1至31或33至63;对于64位地址,可将地址中的位编号为0至63。在多个字节的任何其他固定长度的格式内,自0开始对构成该格式的位连续地编号。为了错误检测的目的,且优选地为了校正的目的,可将一个或多个检查位与每字节或与字节群组一起传输。由机器自动地产生这种检查位,且不可直接由程序来控制这种检查位。以字节的数目来表达存储容量。当通过指令的操作码隐含存储操作数字段的长度时,认为该字段具有固定长度,其可为个、两个、四个、八个或十六个字节。对于一些指令,可隐含更大字段。当不隐含而是明确叙述存储操作数字段的长度时,认为该字段具有可变长度。可变长度操作数的长度可以一个字节的增量变化(或对于一些指令,以两个字节的倍数或其他倍数的增量变化)。当将信息放置于储存器中时,替换包括于指明的字段中的仅那些字节位置的内容,即使至储存器的物理路径的宽度可能大于正存储的字段的长度也如此。
某些信息单元将在储存器中的整体边界上。当其存储地址为该单元的长度(以字节计)的倍数时,将边界称为信息单元的整体。对整体边界上的2个、4个、8个和16个字节的字段给予特殊名称。半字为在两字节边界上的两个连续字节的群组,且为指令的基本建立块。字为四字节边界上的四个连续字节的群组。双字为八字节边界上的八个连续字节的群组。四倍字为16字节边界上的16个连续字节的群组。当储存器地址指明半字、字、双字和四倍字时,地址的二进制表示分别含有一个、两个、三个或四个最右侧零位。指令将在两-字节整体边界上。多数指令的存储操作数不具有边界对准要求。
在实施针对指令和数据操作数的单独的高速缓冲存储器的器件上,若程序存储至高速缓冲存储器线中(随后自该高速缓冲存储器线取得指令),则可经历显著延迟,而不管储存器是否更改随后取得的指令。
在一个实施例中,可通过软件(有时称为经授权内部码、固件、微码、毫码、微微码(pico-code)等,前述中的任一个将与本发明的一个或多个方面一致)来实践本发明。参看图8,体现本发明的一个或多个方面的软件程序代码可由主机系统5000的处理器5001自长期存储介质器件5011(诸如,CD-ROM驱动、磁带机或硬驱动)存取。软件程序代码可体现于多种已知介质中的任一个上,以用于供数据处理系统(诸如,磁片、硬驱动或CD-ROM)使用。该代码可分布于这种介质上,或可经由网络5010自计算机系统的计算机存储器5002或储存器至其他计算机系统地分发至用户,以供这种其他系统的用户使用。
软件程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序的功能和交互。通常将程序代码自存储介质器件5011分页至相对较高速计算机储存器5002,在该相对较高速计算机储存器5002处,程序代码可用于由处理器5001处理。用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件程序代码的技术和方法已熟知,且在本文中将不进一步加以讨论。当在有形介质(包括(但不限于)电子存储器模块(RAM)、快闪存储器、光盘(CD)、DVD、磁带等)上建立和存储程序代码时,程序代码常常被称作“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路来读取,以用于由处理电路执行。
图9说明可实践本发明的一个或多个方面的代表性工作站或服务器硬件系统。图9的系统5020包含代表性基础计算机系统5021(诸如,个人计算机、工作站或服务器),包括选用的外围器件。基础计算机系统5021包括一个或多个处理器5026和总线,该总线用以根据已知技术连接处理器5026与系统5021的其他组件并实现(多个)处理器5026与系统5021的其他组件之间的通信。总线将处理器5026连接至存储器5025和长期储存器5027,长期储存器5027可包括(例如)硬驱动(包括(例如)磁性介质、CD、DVD和快闪存储器中的任一个)或磁带驱动。系统5021也可能包括用户接口适配器,用户接口适配器经由总线将微处理器5026连接至或多个接口器件(诸如,键盘5024、鼠标5023、打印机/扫描仪5030和/或其他接口器件),这些接口器件可为诸如触敏式屏幕、数字化键入板(entry pad)等的任何用户接口器件。总线也经由显示器适配器将诸如LCD屏幕或监视器的显示器件5022连接至微处理器5026。
系统5021可借助于能够与网络5029通信(5028)的网络适配器与其他计算机或计算机网络通信。实例网络适配器为通信频道、令牌环、以太网络或调制解调器。替代地,系统5021可使用诸如CDPD(蜂窝式数字分组数据)卡的无线接口通信。系统5021可与局域网(LAN)或广域网(WAN)中的这种其他计算机相关联,或系统5021可为具有另一计算机的客户端/服务器布置中的客户端等。所有这些配置以及适当通信硬件和软件为本领域已知。
图10说明可实践本发明的一个或多个方面的数据处理网络5040。数据处理网络5040可包括多个单独网络(诸如,无线网络和有线网络),这些网络中的每一个可包括多个单独工作站5041、5042、5043、5044。另外,如本领域技术人员将了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能型工作站。
仍参看图10,网络也可包括大型计算机或服务器,诸如,网关计算机(客户端服务器5046)或应用程序服务器(远程服务器5048,其可存取数据储存库且也可自工作站5045直接存取)。网关计算机5046充当至每个单独网络的入口点。当将一个联网协议连接至另一联网络协议时,需要网关。网关5046可优选借助于通信链路耦接至另一网络(例如,因特网5047)。也可使用通信链路将网关5046直接耦接至一个或多个工作站5041、5042、5043、5044。可利用可购自International Business Machines Corporation的IBM eServerTM Systemz服务器来实施网关计算机。
同时参看图9和图10,可体现本发明的一个或多个实施例的软件程序代码可由系统5020的处理器5026自长期存储介质5027(诸如,CD-ROM驱动或硬驱动)存取。软件程序代码可体现于多种已知介质中的任一个上,以用于供数据处理系统(诸如,磁盘、硬驱动或CD-ROM)使用。程序代码可分发于这种介质上,或可经由网络自一个计算机系统的存储器或储存器至其他计算机系统地分发至用户5050、5051,以供这种其他系统的用户使用。
可替代地,程序代码可体现于存储器5025中,且由处理器5026使用处理器总线来存取。此程序代码包括操作系统,其控制各种计算机组件和一个或多个应用程序5032的功能和交互。通常将程序代码自存储介质5027分页至高速存储器5025,在高速存储器5025处,程序代码可用于由处理器5026处理。用于在存储器中、在物理介质上体现软件程序代码和/或经由网络分发软件程序代码的技术和方法已熟知且在本文中将不进一步加以讨论。当在有形介质(包括(但不限于)电子存储器模块(RAM)、快闪存储器、光盘(CD)、DVD、磁带等)上建立和存储程序代码时,程序代码常常被称作“计算机程序产品”。计算机程序产品介质通常可由优选在计算机系统中的处理电路来读取,以用于由处理电路执行。
最容易用于处理器的高速缓冲存储器(通常比处理器的其他高速缓冲存储器快且小)为最低(L1或层级一)高速缓冲存储器,且主储存器(主存储器)为最高层级高速缓冲存储器(若存在3个层级,则为L3)。常常将最低层级高速缓冲存储器划分成保持要执行的机器指令的指令高速缓冲存储器(I-高速缓冲存储器)和保持数据操作数的数据高速缓冲存储器(D-高速缓冲存储器)。
参看图11,针对处理器5026描绘例示性处理器实施例。通常,使用高速缓冲存储器5053的一个或多个层级缓冲存储器块以便改进处理器性能。高速缓冲存储器5053为保持有可能使用的存储器数据的高速缓冲存储器线的高速缓冲器。典型的高速缓冲存储器线为64个、128个或256个字节的存储器数据。除用于对数据进行高速缓冲外,单独的高速缓冲存储器也常常用于对指令进行高速缓冲。常常通过本领域中熟知的各种“窥探(snoop)”算法来提供高速缓冲一致性(存储器和高速缓冲存储器中的线的复制的同步)。处理器系统的主存储器储存器5025常常被称作高速缓冲存储器。在具有4个层级的高速缓冲存储器5053的处理器系统中,主储存器5025有时被称作层级5(L5)高速缓冲存储器,这是因为其通常较快且仅保持可用于计算机系统的非易失性储存器(DASD、磁带等)的部分。主储存器5025对由操作系统分页入和分页出主储存器5025的数据页“进行高速缓冲”。
程序计数器(指令计数器)5061保持追踪要执行的当前指令的地址。z/Architecture处理器中的程序计数器为64个位,且可经截断至31或24个位以支持先前寻址限制。程序计数器通常体现于计算机的PSW(程序状态字)中,使得程序计数器在上下文切换期间持续。因此,具有程序计数器值的进行中程序可由(例如)操作系统来中断(自程序环境至操作系统环境的上下文切换)。在程序不起作用时,程序的PSW维持程序计数器值,且在操作系统正执行时,使用操作系统的程序计数器(在PSW中)。通常,以等于当前指令的字节的数目的量来使程序计数器递增。RISC(精简指令集计算)指令通常为固定长度,而CISC(复杂指令集计算)指令通常为可变长度。IBM z/Architecture的指令为具有2个、4个或6个字节长度的CISC指令。举例而言,通过上下文切换操作或分支指令的分支选取操作来修改程序计数器5061。在上下文切换操作中,将当前程序计数器值连同关于正执行的程序的其他状态信息(诸如,条件码)一起保存于程序状态字中,且载入新程序计数器值从而指向要执行的新程序模块的指令。执行分支选取操作以便通过将分支指令的结果载入至程序计数器5061中而准许程序作出决策或在程序内循环。
通常,指令读取单元5055用以代表处理器5026取得指令。取得单元取得“下一个顺序指令”、分支选取指令的目标指令或在上下文切换之后的程序的第一指令。现代指令取得单元常常使用预取得技术以基于可能使用经预先取得的指令的可能性而推测性地预取得指令。举例而言,取得单元可取得包括下一个顺序指令的指令的16个字节和再下一个顺序指令的额外字节。
然后由处理器5026执行所取得的指令。在一个实施例中,将(多个)所取得的指令传递至取得单元的分派单元5056。分派单元解码(多个)指令且将关于(多个)经解码的指令的信息转递至适当单元5057、5058、5060。执行单元5057通常将自指令取得单元5055接收关于经解码的算术指令的信息,且将根据指令的操作码对操作数执行算术运算。优选自存储器5025、构建的寄存器5059或自正执行的指令的立即字段,将操作数提供至执行单元5057。当存储执行的结果时,将执行的结果存储于存储器5025、寄存器5059中或其他机器硬件(诸如,控制寄存器、PSW寄存器等)中。
处理器5026通常具有用于执行指令的功能的一个或多个单元5057、5058、5060。参看图12A,执行单元5057可借助于接口逻辑5071与构建的通用寄存器5059、解码/分派单元5056、载入存储单元5060和其他处理器单元5065通信。执行单元5057可使用若干个寄存器电路5067、5068、5069以保持算术逻辑单元(ALU)5066将进行运算的信息。ALU执行算术运算(诸如,加法、减法、乘法和除法)以及逻辑函数(诸如,“和”(and)、“或”(or)和“异或”(XOR)、旋转和移位)。优选地,ALU支持依赖于设计的专业化运算。其他电路可提供其他构建的工具5072,包括(例如)条件码和恢复支持逻辑。通常,将ALU运算的结果保持于输出寄存器电路5070中,输出寄存器电路5070可将结果转递至多种其他处理功能。存在处理器单元的许多布置,本发明描述仅意欲提供对一个实施例的代表性理解。
“加法”指令(例如)将在具有算术和逻辑功能性的执行单元5057中执行,而浮点指令(例如)将在具有专业化的浮点能力的浮点执行中执行。优选地,执行单元通过对操作数执行操作码定义的功能而对由指令识别的操作数进行运算。举例而言,“加法”指令可由执行单元5057对在由指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。
执行单元5057对两个操作数执行算术加法,且将结果存储于第三操作数中,其中第三操作数可为第三寄存器或两个源寄存器中的一个。执行单元优选利用算术逻辑单元(ALU)5066,算术逻辑单元(ALU)5066能够执行多种逻辑函数(诸如,移位、旋转、“和”(And)、“或”(Or)和“异或”(XOR))和多种代数函数(包括加法、减法、乘法、除法中的任一个)。一些ALU5066经设计以用于标量运算,且一些ALU5066经设计以用于浮点运算。取决于架构,数据可为大端法(Big Endian)(其中最低有效字节处于最高字节地址)或小端法(Little Endian)(其中最低有效字节处于最低字节地址)。IBM z/Architecture为大端法。取决于架构,无符号的字段可为符号和量值(1的补数或2的补数)。2的补数是有利的,因为ALU并不需要设计减法能力,这由于在ALU中,2的补数中的负值或正值仅需要加法。通常以速记法来描述数字,其中12位字段定义4,096字节块的地址,且通常描述为(例如)4Kbyte(千字节)块。
参看图12B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常常使用分支预测算法(诸如,分支历史表5082)以在其他条件运算完成之前预测分支的结果。将取得当前分支指令的目标,且在条件运算完成之前推测性地执行当前分支指令的目标。当完成条件运算时,基于条件运算的条件和所推测的结果,完成或放弃推测性执行的分支指令。典型分支指令可测试条件码,且在条件码满足分支指令的分支要求的情况下分支至目标地址,可基于包括(例如)在寄存器字段或指令的立即字段中发现的数字的若干个数字而计算目标地址。分支单元5058可使用具有多个输入寄存器电路5075、5076、5077和输出寄存器电路5080的ALU5074。举例而言,分支单元5058可与通用寄存器5059、解码分派单元5056或其他电路5073通信。
指令群组的执行可对于包括(例如)以下的多种原因被中断:由操作系统启动的上下文切换、引起上下文切换的程序例外或错误、引起上下文切换的I/O中断信号或多个程序的多线程活动(在多线程化环境中)。优选地,上下文切换动作保存关于当前正执行的程序的状态信息,且然后载入关于正被调用的另一程序的状态信息。举例而言,可将状态信息保存于硬件寄存器中或存储器中。状态信息优选包含指向要执行的下一个指令的程序计数器值、条件码、存储器翻译信息和构建的寄存器内容。上下文切换活动可单独或组合地通过硬件电路、应用程序、操作系统程序或固件程序代码(微码、微微码或经授权内部码(LIC))来训练。
处理器根据指令定义的方法来存取操作数。指令可使用指令的一部分的值来提供立即操作数,可提供明确指向通用寄存器或专用寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用通过操作码字段识别为操作数的隐含的寄存器。指令可将存储器位置用于操作数。操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合来提供,如通过z/Architecture长位移工具(long displacement facility)举例说明,其中指令定义(例如)相加在一起以提供操作数在存储器中的地址的基寄存器、索引寄存器和立即字段(位移字段)。除非另有指示,否则本文中的位置通常隐含主存储器(主储存器)中的位置。
参看图12C,处理器使用载入/存储单元5060来存取储存器。载入/存储单元5060可通过获得目标操作数在存储器5053中的地址且在寄存器5059或另一存储器5053的位置中载入操作数来执行载入操作,或可通过获得目标操作数在存储器5053中的地址且将自寄存器5059或另一存储器5053的位置获得的数据存储于存储器5053中的目标操作数位置中来执行存储操作。载入/存储单元5060可为推测性的,且可以相对于指令顺序而言无序的顺序存取存储器,然而,载入/存储单元5060对于程序维持按次序执行指令的显现。载入/存储单元5060可与通用寄存器5059、解码/分派单元5056、高速缓冲存储器/存储器接口5053或其他元件5083通信,且包含各种寄存器电路、ALU5085和控制逻辑5090以计算存储地址且提供管线定序以保持操作按次序。一些操作可能为无序的,但载入/存储单元提供使得无序操作对于程序显现为已按次序执行的功能性,如本领域中所熟知。
优选地,应用程序“看见”的地址常常被称作虚拟地址。虚拟地址有时被称作“逻辑地址”和“有效地址”。这些虚拟地址为虚拟是因为:它们通过多种动态地址翻译(DAT)技术中的一个而重新导向至物理存储器位置,这些DAT技术包括(但不限于)仅对虚拟地址加偏移值作为前缀、经由一个或多个翻译表翻译虚拟地址,翻译表优选单独或组合地包含至少段表和页表,优选地,段表具有指向页表的入口。在z/Architecture中,提供翻译层级,包括区第一表、区第二表、区第三表、段表和选用的页表。常常通过利用翻译后备缓冲器(TLB)(其包含将虚拟地址映射至相关联的物理存储器位置的入口)来改进地址翻译的性能。当DAT使用翻译表翻译虚拟地址时,建立这些入口。然后,虚拟地址的随后使用可利用快速TLB的入口,而不是缓慢依序翻译表存取。可通过包括LRU(最近最少使用)的多种替换演算法来管理TLB内容。
在处理器为多处理器系统的处理器的状况下,每处理器具有保持诸如I/O、高速缓冲存储器、TLB和存储器的共用资源互锁以达成一致性的责任。通常,在维持高速缓冲一致性中将利用“窥探”技术。在窥探环境中,可将每个高速缓冲存储器线标记为处于以下状态中的任一个以便促进共用:共用状态、互斥状态、改变的状态、无效状态等。
I/O单元5054(图11)为处理器提供用于附接至外围器件(例如,包括磁带、光盘、打印机、显示器和网络)的构件。I/O单元常常由软件驱动程序呈现至计算机程序。在大型计算机(诸如,来自的System)中,通道适配器和开放系统适配器为大型计算机的I/O单元,这些I/O单元提供操作系统与外围器件之间的通信。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为实例,环境可包括仿真器(例如,软件或其他仿真机制),在该仿真器中仿真特定架构(包括(例如)指令执行、构建的功能(诸如,地址翻译)和构建的寄存器)或其子集(例如,在具有处理器和存储器的本地计算机系统上)。在这种环境中,仿真器的一个或多个仿真功能可实施本发明的一个或多个方面,即使执行该仿真器的计算机可具有不同于正仿真能力的架构也如此。作为一个实例,在仿真模式下,解码特定指令或正仿真操作,且构建适当仿真功能以实施单独指令或操作。
在仿真环境中,主机计算机包括(例如):存储器,其存储指令和数据;指令取得单元,其自存储器取得指令且可选地提供所取得的指令的本地缓冲;指令解码单元,其接收所取得的指令且确定已取得的指令的类型;和指令执行单元,其执行这些指令。执行可包括:将数据自存储器载入至寄存器中;将数据自寄存器存储回至存储器;或执行某类型的算术或逻辑运算(如由解码单元确定)。在一个实例中,以软件来实施每个单元。举例而言,将正由这些单元执行的操作实施为仿真器软件内的一个或多个子例程。
更具体地,在大型计算机中,构建的机器指令常常借助于编译应用程序而由程序员(现今通常为“C”程序员)使用。存储于存储介质中的这些指令可本地地在z/Architecture服务器中或者在执行其他架构的机器中执行。可在现有和未来大型计算机服务器中和在的其他机器(例如,Power Systems服务器和System服务器)上仿真这些指令。可于在使用由、、AMDTM和其他制造的硬件的广泛多种机器上执行Linux的机器中执行这些指令。除了在z/Architecture下在该硬件上执行外,也可使用Linux,以及使用由Hercules、UMX或FSI(Fundamental Software,Inc)进行的仿真机器,其中执行大体上处于仿真模式下。在仿真模式下,由本地处理器执行仿真软件以仿真仿真处理器的架构。
本地处理器通常执行包含固件或本地操作系统的仿真软件以执行仿真处理器的仿真。仿真软件负责取得和执行仿真处理器架构的指令。仿真软件维持仿真程序计数器以追踪指令边界。仿真软件一次可取得一个或多个仿真机器指令,且将该一个或多个仿真机器指令转换至对应的本地机器指令群组,以用于由本地处理器执行。可对这些经转换的指令进行高速缓冲,使得可实现较快速转换。尽管如此,仿真软件仍将维持仿真处理器架构的架构规则以便确保操作系统和针对仿真处理器编写的应用程序正确地操作。此外,仿真软件将提供通过仿真处理器架构识别的资源(包括(但不限于)控制寄存器、通用寄存器、浮点寄存器、包括(例如)段表和页表的动态地址翻译功能、中断机制、上下文切换机制、当日时间(TOD)时钟和至I/O子系统的构建的接口),使得操作系统或经设计以在仿真处理器上执行的应用程序可在具有仿真软件的本地处理器上执行。
解码正进行仿真特定指令,且调用子例程以执行个别指令的功能。仿真仿真处理器的功能的仿真软件功能(例如)按以下来实施:“C”子例程或驱动程序,或在理解优选实施例的描述之后将在本领域的技术人员的技术内的提供用于特定硬件的驱动程序的某其他方法。包括(但不限于)以下的各种软件和硬件仿真专利说明达成针对不同机器构建的指令格式用于可用于本领域技术人员的目标机器的仿真的多种已知方式:Beausoleil等人的题为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;和Scalzi等人的题为“Preprocessing of Stored Target Routines for EmulatingIncompatible Instructions on a Target Processor”的美国专利证书第6,009,261号;和Davidian等人的题为“Decoding Guest Instruction to Directly AccessEmulation Routines that Emulate the Guest Instructions”的美国专利证书第5,574,873号;和Gorishek等人的题为“Symmetrical Multiprocessing Bus andChipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美国专利证书第6,308,255号;和Lethin等人的题为“DynamicOptimizing Object Code Translator for Architecture Emulation and DynamicOptimizing Object Code Translation Method”的美国专利证书第6,463,582号;和Eric Traut的题为“Method for Emulating Guest Instructions on a HostComputer Through Dynamic Recompilation of Host Instructions”的美国专利证书第5,790,825号(前述专利证书中的每一个在此以其全文引用的方式并入本文中);和许多其他。
在图13中,提供仿真主机计算机系统5092的实例,其仿真主机架构的主机计算机系统5000'。在仿真主机计算机系统5092中,主机处理器(CPU)5091为仿真主机处理器(或虚拟主机处理器),且包含仿真处理器5093,其具有不同于主机计算机5000'的处理器5091的本地指令集架构的本地指令集架构。仿真主机计算机系统5092具有仿真处理器5093可存取的存储器5094。在实例实施例中,将存储器5094分割成主机计算机存储器5096部分和仿真例程5097部分。主机计算机存储器5096可用于根据主机计算机架构的仿真主机计算机5092的程序。仿真处理器5093执行不同于仿真处理器5091的本地指令的架构的构建的指令集的本地指令,这些本地指令自仿真例程存储器5097获得,且可通过使用在序列和存取/解码例程中获得的一个或多个指令自主机计算机存储器5096中的程序存取主机指令以用于执行,序列和存取/解码例程可解码(多个)所存取的主机指令以确定用于仿真所存取的主机指令的功能的本地指令执行例程。举例而言,针对主机计算机系统5000'的架构定义的其他工具可通过构建的工具例程来仿真,包括诸如通用寄存器、控制寄存器、动态地址翻译和I/O子系统支持和处理器高速缓冲存储器的工具。仿真例程也可利用可用于仿真处理器5093中的功能(诸如,通用寄存器和虚拟地址的动态翻译)以改进仿真例程的性能。也可提供特殊硬件和卸载引擎以辅助处理器5093仿真主机计算机5000'的功能。
本文中所使用的术语仅用于描述特定实施例的目的,且并不意欲为本发明的限制。如本文中所使用,除非上下文另有清晰指示,否则单数形式“一”、“一个”和“该”意欲也包括复数形式。应进一步理解,当术语“包含”和/或“包括”用于此说明书中时,其指定所叙述特征、整数、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
以下权利要求书中的所有构件或步骤加功能元件的对应结构、材料、动作和等效物(若有的话)意欲包括用于结合如特别主张的其他所主张元件执行功能的任何结构、材料或动作。已出于说明和描述的目的呈现本发明的一个或多个方面的描述,但该描述并不意欲为详尽的或限于所公开的形式下的本发明。在不脱离本发明的范畴和精神的情况下,许多修改和变化对于本领域技术人员将为显而易见。选择并描述了实施例以便最佳地解释本发明的原理和实践应用,且使其他本领域技术人员能够针对具有如适合于所预期的特定用途的各种修改的各种实施例来理解本发明。
第23章向量串指令
向量串工具
指令
除非另有指定,否则所有操作数为向量寄存器操作数。汇编器语法中的“V”指明向量操作数。
向量寻找任何相等
自左至右进行,比较第二操作数的每个无符号二进制整数元素与第三操作数的每个无符号二进制整数元素的相等性,且若在M5字段中设定了零搜索标志,则视情况与零比较。
若M5字段中的结果类型(RT)标志为零,则对于匹配第三操作数中的任一元素或视情况匹配零的第二操作数中的每个元素,将第一操作数中对应的元素的位位置设定为一,否则,将其设定为零。
若M5字段中的结果类型(RT)标志为一,则将匹配第三操作数中的元素或零的第二操作数中的最左侧元素的字节索引存储于第一操作数的字节七中。
每个指令具有扩展的记忆码区段,其描述推荐的扩展的记忆码及其对应的机器组译器语法。
程序设计注释:对于视情况设定条件码的所有指令,若设定条件码,则性能可能降级。
若M5字段中的结果类型(RT)标志为一且未发现字节相等,或为零(若设定了零搜索标志),则将与向量中的字节的数目相等的索引存储于第一操作数的字节七中。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·结果类型(RT):若为零,则每个所得元素为关于该元素的所有范围比较的掩码。若为一,则将字节索引存储至第一操作数的字节七中,且将零存储于所有其他元素中。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0不是零。
所得条件码:
若CC标志为零,则码保持不变。
若CC标志为一,则如下来设定码:
0若设定了ZS-位,则在第二操作数中比零低的索引元素中不存在匹配。
1第二操作数的一些元素匹配第三操作数中的至少一个元素。
2第二操作数的所有元素匹配第三操作数中的至少一个元素。
3第二操作数中没有元素匹配第三操作数中的任何元素。
程序例外:
1具有DXC FE的数据,向量寄存器
·在未安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束(Transaction Constraint)
扩展的记忆码:
向量寻找元素相等
自左至右进行,将第二操作数的无符号二进制整数元素与第三操作数的对应的无符号二进制整数元素比较。若两个元素相等,则将最左侧相等元素的第一字节的字节索引放置于第一操作数的字节七中。将零存储于第一操作数的剩余字节中。若没有发现字节相等,或若没有发现字节为零(若设定了零比较),则将与向量中的字节的数目相等的索引存储于第一操作数的字节七中。将零存储于剩余字节中。
若在M5字段中设定了零搜索(ZS)位,则也比较第二操作数中的每个元素与零的相等性。若在发现第二操作数和第三操作数的任何其他元素相等之前在第二操作数中寻找到零元素,则将发现为零的元素的第一字节的字节索引存储于第一操作数的字节七中,且将零存储于所有其他字节位置中。若条件码设定(CC)标志为一,则将条件码设定为零。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·保留:保留位0至1且位0至1必须为零。否则,看作为指定例外。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则条件码保持不变。若为一,则如在以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0至1不是零。
所得条件码:
若将M5字段的位3设定为一,则如下设定码:
0若设定了零比较位,则比较在具有比任何相等比较小的索引的元素中检测到第二操作数中的零元素。
1比较在一些元素中检测到第二操作数与第三操作数之间的匹配。若设定了零比较位,则此匹配出现于具有小于或等于零比较元素的索引的元素中。
2--
3没有元素比较起来相等。
若M5字段的位3为零,则码保持不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在未安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
程序设计注释:
1.对于任一元素大小,始终将字节索引存储至第一操作数中。举例而言,若将元素大小设定为半字且比较出第2个索引的半字相等,则将存储字节索引4。
2.第三操作数不应含有具有零值的元素。若第三操作数确实含有零且在任何其他相等比较之前与第二操作数中的零元素匹配,则设定条件码,而不管零比较位设定。
向量寻找元素不相等
自左至右进行,将第二操作数的无符号二进制整数元素与第三操作数的对应的无符号二进制整数元素比较。若两个元素不相等,则将最左侧不相等元素的字节索引放置于第一操作数的字节七中,且将零存储至所有其他字节。若将M5字段中的条件码设定(CC)位设定为一,则设定条件码以指示哪一操作数较大。若所有元素相等,则将等于向量大小的字节索引放置于第一操作数的字节七中,且将零放置于所有其他字节位置中。若CC位为一,则设定条件码三。
若在M5字段中设定了零搜索(ZS)位,则也比较第二操作数中的每个元素与零的相等性。若在发现第二操作数的任一其他元素不相等之前在第二操作数中寻找到零元素,则将发现为零的元素的第一字节的字节索引存储于第一操作数的字节七中。将零存储于所有其他字节中,且设定条件码0。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M5字段具有以下格式:
如下定义M5字段的位:
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
2.M5字段的位0至1不是零。
所得条件码:
若将M5字段的位3设定为一,则如下设定码:
0若设定了零比较位,则比较在比任何不相等比较低的索引元素中检测到两个操作数中的零元素
1检测到元素失配,且VR2中的元素小于VR3中的元素
2检测到元素失配,且VR2中的元素大于VR3中的元素
3所有元素比较起来相等,且若设定了零比较位,则在第二操作数中没有寻找到零元素。
若M5字段的位3为零,则码保持不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
向量串范围比较
自左至右进行,将第二操作数中的无符号二进制整数元素与由第三操作数和第四操作数中的偶数-奇数对元素定义的值范围比较。结合来自第四操作数的控制值定义要执行的比较的范围。若元素匹配由第三操作数和第四操作数指定的范围中的任一个,则将其视为匹配。
若M6字段中的结果类型(RT)标志为零,则若第一操作数中对应于第二操作数中正进行比较的元素的元素匹配这些范围中的任一个,则将该元素的位位置设定为一,否则,将其设定为零。
若将M6字段中的结果类型(RT)标志设定为一,则第二操作数中匹配由第三操作数和第四操作数指定的范围中的任一个或零比较(若将ZS标志设定为一)的第一元素的字节索引放置于第一操作数的字节七中,且将零存储于剩余字节中。若没有元素匹配,则将等于向量中的字节的数目的索引放置于第一操作数的字节七中,且将零存储于剩余字节中。
M6字段中的零搜索(ZS)标志,若设定为一,则将第二操作数元素与零的比较添加至由第三操作数和第四操作数提供的范围。若为在比任何其他真比较低的索引元素中的零比较,则将条件码设定为零。
这些操作数含有由M5字段中的元素大小控制指定的大小的元素。
第四操作数元素具有以下格式:
若ES等于0:
若ES等于1:
若ES等于2:
如下定义第四操作数元素中的位:
·相等(EQ):当为一时,进行相等性比较。
·大于(GT):当为一时,执行大于比较。
·小于(LT):当为一时,执行小于比较。
·保留所有其他位且所有其他位应为零以确保未来相容性。
可以任何组合使用这些控制位。若这些位都没有经设定,则比较将始终产生假结果。若所有这些位经设定,则比较将始终产生真结果。
M5字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3至15-保留
M6字段具有以下格式:
如下定义M6字段的位:
·反转结果(IN):若为零,则继续进行与控制向量中的成对值的比较。若为一,则反转在这些范围中的这些成对的比较的结果。
·结果类型(RT):若为零,则每个所得元素为关于该元素的所有范围比较的掩码。若为一,则将索引存储至第一操作数的字节七中。将零存储于剩余字节中。
·零搜索(ZS):若为一,则也将第二操作数的每个元素与零比较。
·条件码设定(CC):若为零,则不设定条件码且条件码保持不变。若为一,则如以下段中所指定来设定条件码。
特殊条件
若出现以下中的任一个,则看作指定例外且不采取其他行动:
1.M4字段含有自3至15的值。
所得条件码:
0若ZS=1且在比任何比较低的索引元素中发现零
1发现比较
2--
3没有发现比较
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
图23-1.
ES=1,ZS=0
VR1(a) RT=0的结果
VR1(b) RT=1的结果
将计数载入至块边界
将含有可能自第二操作数位置载入而不与指定块边界跨越的字节的数目的32-位无符号二进制整数(覆盖于十六处)放置于第一操作数中。
将位移作为12-位无符号整数对待。
第二操作数地址不用以寻址数据。
M3字段指定用以用信号向CPU通知关于块边界大小以计算载入的可能字节的数目的码。若指定保留值,则看作为指定例外。
所得条件码:
0操作数一为十六
1--
2--
3操作数一小于十六
所得条件码:
程序例外:
·在没有安装向量扩展工具的情况下的操作
·指定
程序设计注释:期望结合向量载入至块边界(VECTOR LOAD TOBLOCK BOUNDARY)使用将计数载入至块边界(LOAD COUNT TO BLOCKBOUNDARY)以确定载入的字节的数目。
自VR元素的向量载入GR
将具有由M4字段中的ES值指定的大小且通过第二操作数地址编索引的第三操作数的元素放置于第一操作数位置中。第三操作数为向量寄存器。第一操作数为通用寄存器。若通过第二操作数地址指定的索引大于具有指定元素大小的第三操作数中最高编号的元素,则第一操作数中的数据为不可预测。
若向量寄存器元素小于双字,则该元素在64-位通用寄存器中恰好对准,且零填充剩余位。
第二操作数地址不用以寻址数据;相反,该地址的最右侧12个位用以指定元素在第二操作数内的索引。
M4字段指定元素大小控制(ES)。ES控制指定向量寄存器操作数中的元素的大小。若指定保留值,则看作为指定例外。
0-字节
1-半字
2-字
3-双字
4至15-保留不变。
所得条件码:码不变。
程序例外:
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的ES值)
·事务约束
扩展的记忆码:
向量载入至块边界
以零索引字节元素开始,以来自第二操作数的字节载入第一操作数。若遇到边界条件,则第一操作数的其余部分为不可预测。没有看作为关于未载入的字节的存取例外。
将针对VLBB的位移作为12-位无符号整数对待。
M3字段指定用以用信号向CPU通知关于用以载入至的块边界大小的码。若指定保留值,则看作为指定例外。
所得条件码:码保持不变。
程序例外:
·存取(取得,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·指定(保留的块边界码)
·事务约束
程序设计注释:
1.在某些情况下,可经过块边界载入数据。然而,若不存在关于该数据的存取例外,则将仅发生此情形。
向量存储
将第一操作数中的128-位值存储至通过第二操作数指定的存储位置。将针对VST的位移作为12-位无符号整数对待。
所得条件码:码保持不变。
程序例外:
·存取(存储,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·事务约束
具有长度的向量存储
自左至右进行,将来自第一操作数的字节存储于第二操作数位置处。指定第三操作数的通用寄存器含有32-位无符号整数,该整数含有表示存储的最高索引字节的值。若第三操作数含有大于或等于向量的最高字节索引的值,则存储第一操作数的所有字节。
仅看作为关于存储的字节的存取例外。
将针对具有长度的向量存储(VECTOR STORE WITH LENGTH)的位移作为12-位无符号整数对待。
所得条件码:条件码保持不变。
程序例外:
·存取(存储,操作数2)
·具有DXC FE的数据,向量寄存器
·在没有安装向量扩展工具的情况下的操作
·事务约束
RXB描述
所有向量指令具有在标注为RXB的指令的位36至40中的字段。此字段含有用于所有向量寄存器指明的操作数的最高有效位。保留用于没有通过指令指定的寄存器指明的位且应将其设定为零;否则,程序在未来无法相容地操作。将最高有效位串接至四-位寄存器指明的左侧以建立五-位向量寄存器指明。
如下定义这些位:
0.在指令的位8至11中用于向量寄存器指明的最高有效位。
1.在指令的位12至15中用于向量寄存器指明的最高有效位。
2.在指令的位16至19中用于向量寄存器指明的最高有效位。
3.在指令的位32至35中用于向量寄存器指明的最高有效位。
向量启用控制
若将控制寄存器零中的向量启用控制(位46)和AFP寄存器控制(位45)二者设定为一,则可仅使用向量寄存器和指令。若安装了向量工具且在没有设定启用位的情况下执行向量指令,则看作为具有DXC FE十六进制的数据例外。若没有安装向量工具,则看作为操作例外。
Claims (20)
1.一种用于在中央处理单元中执行机器指令的计算机程序产品,该计算机程序产品包含:
计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行方法的指令,该方法包含:
由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义以用于计算机执行,该机器指令包含:
至少一个操作码字段,其提供操作码,该操作码识别“对块边界载入计数”操作;
寄存器字段,其用以指明寄存器,该寄存器包含第一操作数;以及
用于指示第二操作数的位置的至少一个字段,该第二操作数至少包括主存储器的块的一部分;以及
执行该机器指令,该执行包含:
确定从第二操作的位置到主存储器的块的边界的距离;以及
将表示该距离的值放置在第一操作数中。
2.如权利要求1所述的计算机程序产品,其中该机器指令还包含掩码字段,该掩码字段指定边界。
3.如权利要求2所述的计算机程序产品,其中该块边界为可由该掩码字段指定的多个边界中的一个边界。
4.如任一前述权利要求所述的计算机程序产品,其中执行还包括动态确定该边界,该动态确定使用边界的指定类型和处理器的一个或者多个特性。
5.如任一前述权利要求所述的计算机程序产品,其中第二操作数的位置是从其数据要计数的存储器中的开始地址。
6.如权利要求5所述的计算机程序产品,其中确定距离包括确定在其处计数要停止的结束地址。
7.如权利要求6所述的计算机程序产品,其中确定结束地址包含如下计算该结束地址:
结束地址=(开始地址+(边界大小-(开始地址AND边界掩码)),开始地址+寄存器大小)中的最小值,其中该边界大小为该边界,边界掩码等于0-边界大小,且寄存器大小为选定寄存器的长度。
8.如权利要求6所述的计算机程序产品,其中确定距离包括通过从结束地址减去开始地址计算该值。
9.如权利要求1所述的计算机程序产品,其中确定距离包括如下计算该值:
值=(寄存器大小,边界大小–(第二操作数的位置AND边界掩码))中的最小值,其中寄存器大小是选定寄存器的长度,边界大小是边界,并且边界掩码等于0-边界大小。
10.如任一前述权利要求所述的计算机程序产品,该至少一个字段包含位移字段、基本字段和索引字段,用于定位通用寄存器的该基本字段和该索引字段具有要添加至该位移字段的内容以形成该第二操作数的地址的内容,且第二操作数的地址提供第二操作数的位置。
11.一种用于在中央处理单元中执行机器指令的计算机系统,该计算机系统包含:
存储器;以及
处理器,其与该存储器通信,其中配置该计算机系统以执行以下方法,该方法包含:
由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义以用于计算机执行,该机器指令包含:
至少一个操作码字段,其提供操作码,该操作码识别“对块边界载入计数”操作;
寄存器字段,其用以指明寄存器,该寄存器包含第一操作数;以及
用于指示第二操作数的位置的至少一个字段,该第二操作数至少包括主存储器的块的一部分;以及
执行该机器指令,该执行包含:
确定从第二操作的位置到主存储器的块的边界的距离;以及
将表示该距离的值放置在第一操作数中。
12.如权利要求11所述的计算机系统,其中该机器指令还包含掩码字段,该掩码字段指定边界。
13.如权利要求11或12所述的计算机系统,其中该执行还包括动态确定该边界,该动态确定使用边界的可指定类型和处理器的一个或者多个特性。
14.如权利要求11至13中的任一项所述的计算机系统,其中,第二操作数的位置是从其数据要计数的存储器中的开始地址,并且其中,确定距离包括确定在其处计数要停止的结束地址。
15.如权利要求14所述的计算机系统,其中该确定该结束地址包含如下计算该结束地址:
结束地址=(开始地址+(边界大小-(开始地址AND边界掩码)),开始地址+寄存器大小)中的最小值,其中该边界大小为该边界,边界掩码等于0-边界大小,且寄存器大小为选定寄存器的长度。
16.如权利要求14所述的计算机系统,其中确定距离包括通过从结束地址减去开始计算该值。
17.如权利要求11至16中任一项所述的计算机系统,其中确定距离包括如下计算该值:
值=(寄存器大小,边界大小–(第二操作数的位置AND边界掩码))中的最小值,其中寄存器大小是选定寄存器的长度,边界大小是边界,并且边界掩码等于0-边界大小。
18.一种在中央处理单元中执行机器指令的方法,该方法包含:
由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义以用于计算机执行,该机器指令包含:
至少一个操作码字段,其提供操作码,该操作码识别“对块边界载入计数”操作;
寄存器字段,其用以指明寄存器,该寄存器包含第一操作数;以及用于指示第二操作数的位置的至少一个字段,该第二操作数至少包括主存储器的块的一部分,以及
执行该机器指令,该执行包含:
确定从第二操作的位置到主存储器的块的边界的距离;以及
将表示该距离的值放置在第一操作数中。
19.如权利要求18所述的方法,其中该第二操作数的位置为从其数据要计数的存储器中的开始地址,并且其中,确定该距离包含:
确定计数要停止的结束地址,以及
通过从结束地址减去开始计算该值。
20.如权利要求18或19所述的方法,其中该确定距离包含如下计算该值:
值=(寄存器大小,边界大小–(第二操作数的位置AND边界掩码))中的最小值,其中寄存器大小是选定寄存器的长度,边界大小是边界,并且边界掩码等于0-边界大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/421,451 US9710266B2 (en) | 2012-03-15 | 2012-03-15 | Instruction to compute the distance to a specified memory boundary |
US13/421,451 | 2012-03-15 | ||
PCT/IB2012/056438 WO2013136145A1 (en) | 2012-03-15 | 2012-11-15 | Instruction to compute the distance to a specified memory boundary |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104185872A true CN104185872A (zh) | 2014-12-03 |
CN104185872B CN104185872B (zh) | 2017-10-03 |
Family
ID=49158812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280071423.1A Active CN104185872B (zh) | 2012-03-15 | 2012-11-15 | 用于在中央处理单元中执行机器指令的方法和系统 |
Country Status (23)
Country | Link |
---|---|
US (2) | US9710266B2 (zh) |
EP (1) | EP2769382B1 (zh) |
JP (1) | JP6138175B2 (zh) |
KR (1) | KR101938927B1 (zh) |
CN (1) | CN104185872B (zh) |
BR (1) | BR112014022726B1 (zh) |
CA (1) | CA2867116C (zh) |
DK (1) | DK2769382T3 (zh) |
ES (1) | ES2675512T3 (zh) |
HK (1) | HK1201372A1 (zh) |
HR (1) | HRP20180982T1 (zh) |
HU (1) | HUE038236T2 (zh) |
IL (1) | IL232816A (zh) |
LT (1) | LT2769382T (zh) |
MX (1) | MX346496B (zh) |
PL (1) | PL2769382T3 (zh) |
PT (1) | PT2769382T (zh) |
RU (1) | RU2568920C2 (zh) |
SG (1) | SG11201404822XA (zh) |
SI (1) | SI2769382T1 (zh) |
TW (1) | TWI617975B (zh) |
WO (1) | WO2013136145A1 (zh) |
ZA (1) | ZA201406611B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983445A (zh) * | 2016-12-21 | 2019-07-05 | 高通股份有限公司 | 具有不等量值跨距的预提取机制 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9454367B2 (en) * | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9513906B2 (en) | 2013-01-23 | 2016-12-06 | International Business Machines Corporation | Vector checksum instruction |
US9778932B2 (en) | 2013-01-23 | 2017-10-03 | International Business Machines Corporation | Vector generate mask instruction |
US9804840B2 (en) | 2013-01-23 | 2017-10-31 | International Business Machines Corporation | Vector Galois Field Multiply Sum and Accumulate instruction |
US9471308B2 (en) | 2013-01-23 | 2016-10-18 | International Business Machines Corporation | Vector floating point test data class immediate instruction |
US9715385B2 (en) | 2013-01-23 | 2017-07-25 | International Business Machines Corporation | Vector exception code |
US9478274B1 (en) | 2014-05-28 | 2016-10-25 | Emc Corporation | Methods and apparatus for multiple memory maps and multiple page caches in tiered memory |
US9703721B2 (en) | 2014-12-29 | 2017-07-11 | International Business Machines Corporation | Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions |
US9569127B2 (en) | 2014-12-29 | 2017-02-14 | International Business Machines Corporation | Computer instructions for limiting access violation reporting when accessing strings and similar data structures |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
US10713048B2 (en) * | 2017-01-19 | 2020-07-14 | International Business Machines Corporation | Conditional branch to an indirectly specified location |
KR102571629B1 (ko) * | 2018-05-23 | 2023-08-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11347506B1 (en) * | 2021-01-15 | 2022-05-31 | Arm Limited | Memory copy size determining instruction and data transfer instruction |
CN114153753B (zh) * | 2021-12-06 | 2024-06-25 | 海光信息技术股份有限公司 | 存储资源分配方法、装置及非暂时性存储介质 |
Family Cites Families (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62276668A (ja) | 1985-07-31 | 1987-12-01 | Nec Corp | ベクトルマスク演算制御ユニツト |
US5073864A (en) | 1987-02-10 | 1991-12-17 | Davin Computer Corporation | Parallel string processor and method for a minicomputer |
US5222225A (en) | 1988-10-07 | 1993-06-22 | International Business Machines Corporation | Apparatus for processing character string moves in a data processing system |
JPH0831032B2 (ja) | 1990-08-29 | 1996-03-27 | 三菱電機株式会社 | データ処理装置 |
US5465374A (en) | 1993-01-12 | 1995-11-07 | International Business Machines Corporation | Processor for processing data string by byte-by-byte |
AU6629894A (en) | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
AU7108994A (en) | 1993-06-14 | 1995-01-03 | Apple Computer, Inc. | Method and apparatus for finding a termination character within a variable length character string or a processor |
JPH0721034A (ja) | 1993-06-28 | 1995-01-24 | Fujitsu Ltd | 文字列複写処理方法 |
US5509129A (en) | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
US6185629B1 (en) | 1994-03-08 | 2001-02-06 | Texas Instruments Incorporated | Data transfer controller employing differing memory interface protocols dependent upon external input at predetermined time |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
DE69520350T2 (de) | 1994-09-27 | 2001-08-09 | Nkk Corp., Tokio/Tokyo | Galvanisiertes stahlblech und verfahren zur herstellung |
US5790825A (en) | 1995-11-08 | 1998-08-04 | Apple Computer, Inc. | Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions |
US5812147A (en) | 1996-09-20 | 1998-09-22 | Silicon Graphics, Inc. | Instruction methods for performing data formatting while moving data between memory and a vector register file |
US5931940A (en) | 1997-01-23 | 1999-08-03 | Unisys Corporation | Testing and string instructions for data stored on memory byte boundaries in a word oriented machine |
JP4467791B2 (ja) | 1997-11-24 | 2010-05-26 | ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー | 情報管理及び検索 |
US6009261A (en) | 1997-12-16 | 1999-12-28 | International Business Machines Corporation | Preprocessing of stored target routines for emulating incompatible instructions on a target processor |
US6094695A (en) | 1998-03-11 | 2000-07-25 | Texas Instruments Incorporated | Storage buffer that dynamically adjusts boundary between two storage areas when one area is full and the other has an empty data register |
US6334176B1 (en) | 1998-04-17 | 2001-12-25 | Motorola, Inc. | Method and apparatus for generating an alignment control vector |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US7100026B2 (en) | 2001-05-30 | 2006-08-29 | The Massachusetts Institute Of Technology | System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values |
US6463582B1 (en) | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
JP3564395B2 (ja) | 1998-11-27 | 2004-09-08 | 松下電器産業株式会社 | アドレス生成装置および動きベクトル検出装置 |
US6192466B1 (en) | 1999-01-21 | 2001-02-20 | International Business Machines Corporation | Pipeline control for high-frequency pipelined designs |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US6189088B1 (en) | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
US6499116B1 (en) | 1999-03-31 | 2002-12-24 | International Business Machines Corp. | Performance of data stream touch events |
US6802056B1 (en) | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
US6381691B1 (en) | 1999-08-13 | 2002-04-30 | International Business Machines Corporation | Method and apparatus for reordering memory operations along multiple execution paths in a processor |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6449706B1 (en) | 1999-12-22 | 2002-09-10 | Intel Corporation | Method and apparatus for accessing unaligned data |
JP2001236249A (ja) | 2000-02-24 | 2001-08-31 | Nec Corp | メモリ管理装置およびメモリ管理方法 |
US6625724B1 (en) | 2000-03-28 | 2003-09-23 | Intel Corporation | Method and apparatus to support an expanded register set |
US6349361B1 (en) | 2000-03-31 | 2002-02-19 | International Business Machines Corporation | Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6408383B1 (en) | 2000-05-04 | 2002-06-18 | Sun Microsystems, Inc. | Array access boundary check by executing BNDCHK instruction with comparison specifiers |
KR100852563B1 (ko) | 2000-10-18 | 2008-08-18 | 코닌클리즈케 필립스 일렉트로닉스 엔.브이. | 디지털 신호 처리 장치 및 방법 |
US7487330B2 (en) | 2001-05-02 | 2009-02-03 | International Business Machines Corporations | Method and apparatus for transferring control in a computer system with dynamic compilation capability |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
JP3900863B2 (ja) | 2001-06-28 | 2007-04-04 | シャープ株式会社 | データ転送制御装置、半導体記憶装置および情報機器 |
US6839828B2 (en) | 2001-08-14 | 2005-01-04 | International Business Machines Corporation | SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode |
US6907443B2 (en) | 2001-09-19 | 2005-06-14 | Broadcom Corporation | Magnitude comparator |
US6570511B1 (en) | 2001-10-15 | 2003-05-27 | Unisys Corporation | Data compression method and apparatus implemented with limited length character tables and compact string code utilization |
US20100274988A1 (en) | 2002-02-04 | 2010-10-28 | Mimar Tibet | Flexible vector modes of operation for SIMD processor |
US7089371B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US7441104B2 (en) | 2002-03-30 | 2008-10-21 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions with distributed results |
US7373483B2 (en) | 2002-04-02 | 2008-05-13 | Ip-First, Llc | Mechanism for extending the number of registers in a microprocessor |
US7376812B1 (en) | 2002-05-13 | 2008-05-20 | Tensilica, Inc. | Vector co-processor for configurable and extensible processor architecture |
US6918010B1 (en) | 2002-10-16 | 2005-07-12 | Silicon Graphics, Inc. | Method and system for prefetching data |
US7103754B2 (en) | 2003-03-28 | 2006-09-05 | International Business Machines Corporation | Computer instructions for having extended signed displacement fields for finding instruction operands |
US20040215924A1 (en) | 2003-04-28 | 2004-10-28 | Collard Jean-Francois C. | Analyzing stored data |
US7035986B2 (en) | 2003-05-12 | 2006-04-25 | International Business Machines Corporation | System and method for simultaneous access of the same line in cache storage |
US20040250027A1 (en) | 2003-06-04 | 2004-12-09 | Heflinger Kenneth A. | Method and system for comparing multiple bytes of data to stored string segments |
US7539714B2 (en) | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
US7610466B2 (en) | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
US7904905B2 (en) | 2003-11-14 | 2011-03-08 | Stmicroelectronics, Inc. | System and method for efficiently executing single program multiple data (SPMD) programs |
GB2411973B (en) | 2003-12-09 | 2006-09-27 | Advanced Risc Mach Ltd | Constant generation in SMD processing |
US20060095713A1 (en) | 2004-11-03 | 2006-05-04 | Stexar Corporation | Clip-and-pack instruction for processor |
JP4837305B2 (ja) * | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
US7421566B2 (en) | 2005-08-12 | 2008-09-02 | International Business Machines Corporation | Implementing instruction set architectures with non-contiguous register file specifiers |
US20070106883A1 (en) | 2005-11-07 | 2007-05-10 | Choquette Jack H | Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction |
US9436468B2 (en) | 2005-11-22 | 2016-09-06 | Intel Corporation | Technique for setting a vector mask |
US8010953B2 (en) | 2006-04-04 | 2011-08-30 | International Business Machines Corporation | Method for compiling scalar code for a single instruction multiple data (SIMD) execution engine |
US7565514B2 (en) | 2006-04-28 | 2009-07-21 | Freescale Semiconductor, Inc. | Parallel condition code generation for SIMD operations |
CN101097488B (zh) | 2006-06-30 | 2011-05-04 | 2012244安大略公司 | 从接收的文本中学习字符片段的方法及相关手持电子设备 |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
JP2008077590A (ja) | 2006-09-25 | 2008-04-03 | Toshiba Corp | データ転送装置 |
US7536532B2 (en) | 2006-09-27 | 2009-05-19 | International Business Machines Corporation | Merge operations of data arrays based on SIMD instructions |
US7991987B2 (en) | 2007-05-10 | 2011-08-02 | Intel Corporation | Comparing text strings |
CN101755265A (zh) | 2007-05-21 | 2010-06-23 | 茵科瑞蒂梅尔有限公司 | 交互式消息编辑系统和方法 |
US20090063410A1 (en) | 2007-08-29 | 2009-03-05 | Nils Haustein | Method for Performing Parallel Data Indexing Within a Data Storage System |
US7870339B2 (en) | 2008-01-11 | 2011-01-11 | International Business Machines Corporation | Extract cache attribute facility and instruction therefore |
US7895419B2 (en) | 2008-01-11 | 2011-02-22 | International Business Machines Corporation | Rotate then operate on selected bits facility and instructions therefore |
US7739434B2 (en) | 2008-01-11 | 2010-06-15 | International Business Machines Corporation | Performing a configuration virtual topology change and instruction therefore |
US7877582B2 (en) | 2008-01-31 | 2011-01-25 | International Business Machines Corporation | Multi-addressable register file |
KR20100126690A (ko) | 2008-02-18 | 2010-12-02 | 샌드브리지 테크놀로지스, 인코포레이티드 | 널-종료 문자열 동작을 가속화하는 방법 |
DK176835B1 (da) | 2008-03-07 | 2009-11-23 | Jala Aps | Fremgangsmåde til skanning, medium indeholdende et program til udövelse af fremgangsmåden samt system til udövelse af fremgangsmåden |
US8386547B2 (en) | 2008-10-31 | 2013-02-26 | Intel Corporation | Instruction and logic for performing range detection |
US20120023308A1 (en) | 2009-02-02 | 2012-01-26 | Renesas Electronics Corporation | Parallel comparison/selection operation apparatus, processor, and parallel comparison/selection operation method |
JP5471082B2 (ja) | 2009-06-30 | 2014-04-16 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US8595471B2 (en) | 2010-01-22 | 2013-11-26 | Via Technologies, Inc. | Executing repeat load string instruction with guaranteed prefetch microcode to prefetch into cache for loading up to the last value in architectural register |
JP2011212043A (ja) | 2010-03-31 | 2011-10-27 | Fujifilm Corp | 医用画像再生装置および方法並びにプログラム |
US20110314263A1 (en) * | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
US8972698B2 (en) | 2010-12-22 | 2015-03-03 | Intel Corporation | Vector conflict instructions |
US9009447B2 (en) | 2011-07-18 | 2015-04-14 | Oracle International Corporation | Acceleration of string comparisons using vector instructions |
US9459868B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a dynamically determined memory boundary |
US9454367B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Finding the length of a set of character data having a termination character |
US9459867B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Instruction to load data up to a specified memory boundary indicated by the instruction |
US9588762B2 (en) | 2012-03-15 | 2017-03-07 | International Business Machines Corporation | Vector find element not equal instruction |
US9454366B2 (en) | 2012-03-15 | 2016-09-27 | International Business Machines Corporation | Copying character data having a termination character from one memory location to another |
US9715383B2 (en) | 2012-03-15 | 2017-07-25 | International Business Machines Corporation | Vector find element equal instruction |
US9459864B2 (en) | 2012-03-15 | 2016-10-04 | International Business Machines Corporation | Vector string range compare |
US9710266B2 (en) | 2012-03-15 | 2017-07-18 | International Business Machines Corporation | Instruction to compute the distance to a specified memory boundary |
US9280347B2 (en) | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US9268566B2 (en) | 2012-03-15 | 2016-02-23 | International Business Machines Corporation | Character data match determination by loading registers at most up to memory block boundary and comparing |
-
2012
- 2012-03-15 US US13/421,451 patent/US9710266B2/en active Active
- 2012-11-15 WO PCT/IB2012/056438 patent/WO2013136145A1/en active Application Filing
- 2012-11-15 DK DK12871181.9T patent/DK2769382T3/en active
- 2012-11-15 CA CA2867116A patent/CA2867116C/en active Active
- 2012-11-15 EP EP12871181.9A patent/EP2769382B1/en active Active
- 2012-11-15 SG SG11201404822XA patent/SG11201404822XA/en unknown
- 2012-11-15 CN CN201280071423.1A patent/CN104185872B/zh active Active
- 2012-11-15 PT PT128711819T patent/PT2769382T/pt unknown
- 2012-11-15 KR KR1020147020905A patent/KR101938927B1/ko active IP Right Grant
- 2012-11-15 ES ES12871181.9T patent/ES2675512T3/es active Active
- 2012-11-15 MX MX2014010947A patent/MX346496B/es active IP Right Grant
- 2012-11-15 PL PL12871181T patent/PL2769382T3/pl unknown
- 2012-11-15 SI SI201231322T patent/SI2769382T1/en unknown
- 2012-11-15 HU HUE12871181A patent/HUE038236T2/hu unknown
- 2012-11-15 BR BR112014022726-8A patent/BR112014022726B1/pt active IP Right Grant
- 2012-11-15 RU RU2012148584/08A patent/RU2568920C2/ru active
- 2012-11-15 LT LTEP12871181.9T patent/LT2769382T/lt unknown
- 2012-11-15 JP JP2014561528A patent/JP6138175B2/ja active Active
-
2013
- 2013-03-01 TW TW102107388A patent/TWI617975B/zh active
- 2013-03-03 US US13/783,335 patent/US9710267B2/en active Active
-
2014
- 2014-05-27 IL IL232816A patent/IL232816A/en active IP Right Grant
- 2014-09-09 ZA ZA2014/06611A patent/ZA201406611B/en unknown
-
2015
- 2015-02-18 HK HK15101823.4A patent/HK1201372A1/zh unknown
-
2018
- 2018-06-27 HR HRP20180982TT patent/HRP20180982T1/hr unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109983445A (zh) * | 2016-12-21 | 2019-07-05 | 高通股份有限公司 | 具有不等量值跨距的预提取机制 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104185872A (zh) | 用以计算与指定存储器的边界的距离的指令 | |
CN104205067A (zh) | 将数据载入直到由指令所指示的指定存储器边界的指令 | |
CN104169869B (zh) | 比较具有终止字符的字符数据集 | |
CN104185839B (zh) | 将数据载入寄存器的方法和系统 | |
CN104170259B (zh) | 用于判定一组数据的长度的方法和系统 | |
CN104169870B (zh) | 用于复制数据集的方法和计算机系统 | |
CN104169877A (zh) | 将不相邻指令区分符变换为相邻指令区分符 | |
CN104169868B (zh) | 用于在中央处理单元中执行机器指令的方法和系统 | |
CN104169906A (zh) | 向量寻找元素不相等指令 | |
CN104169907A (zh) | 向量寻找元素相等指令 | |
TWI584190B (zh) | 用於促進例外處置之電腦程式產品、電腦系統及方法 | |
CN104937542A (zh) | 向量校验和指令 | |
CN104956323A (zh) | 向量伽罗瓦域乘法求和与累加指令 | |
CN104956319A (zh) | 向量浮点测试数据类立即指令 | |
CN104937538A (zh) | 向量生成掩码指令 | |
CN104937543A (zh) | 向量元素旋转和掩码下插入指令 | |
AU2012373736B2 (en) | Instruction to compute the distance to a specified memory boundary |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1201372 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1201372 Country of ref document: HK |