CN104025043B - 从十进制浮点格式转换为区位格式 - Google Patents

从十进制浮点格式转换为区位格式 Download PDF

Info

Publication number
CN104025043B
CN104025043B CN201280065483.2A CN201280065483A CN104025043B CN 104025043 B CN104025043 B CN 104025043B CN 201280065483 A CN201280065483 A CN 201280065483A CN 104025043 B CN104025043 B CN 104025043B
Authority
CN
China
Prior art keywords
field
operand
instruction
converted
code
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
CN201280065483.2A
Other languages
English (en)
Other versions
CN104025043A (zh
Inventor
S.卡洛
E.M.施瓦兹
T.斯莱格尔
小查尔斯.盖尼
M.米特兰
R.科佩兰德
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104025043A publication Critical patent/CN104025043A/zh
Application granted granted Critical
Publication of CN104025043B publication Critical patent/CN104025043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/3001Arithmetic 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/30098Register arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

提供本文中被称为长的从区位转换指令(CDZT)和扩展的从区位转换指令(CXZT)的机器指令,这些机器指令从存储器读取EBCDIC或ASCII数据,将其转换为适当的十进制浮点格式,且将其写入至目标浮点寄存器或浮点寄存器对。另外,提供本文中被称为长的转换为区位指令(CZDT)和扩展的转换为区位指令(CZXT)的机器指令,这些机器指令将源浮点寄存器或浮点寄存器对中的十进制浮点(DFP)操作数转换为EBCDIC或ASCII数据,且将其存储至目标存储器位置。

Description

从十进制浮点格式转换为区位格式
技术领域
本发明的一个方面一般是涉及在计算环境内的处理,且具体地,是涉及将数据从一个格式转换为另一个格式。
背景技术
可按许多不同格式将数据存储在内部计算机存储器或外部存储器中,格式包括扩展二进制编码十进制交换码(EBCDIC)、美国信息交换标准码(ASCII)及十进制浮点等等。
不同计算机架构支持不同数据格式,并且可能希望对特定格式执行操作。在此情况下,可能需要将处于一种格式的数据转换为所希望的格式。
另外,传统上,用于处理按EBCDIC或ASCII格式存储在数据库中的数字十进制数据的运算直接在存储器上操作。被称为存储器至存储器十进制运算的这些运算及这些运算的执行受到存储器接口的延时限制。取决于来自先前运算的结果的每一运算在其可开始前必须等待,直至将结果写出至存储器为止。因为存储器延时与处理器速度之间的间隙继续增大,所以这些运算的相对执行继续减少。
发明内容
经由提供一种用于在中央处理单元中执行机器指令的计算机程序产品来克服现有技术的缺点并且提供优势。该计算机程序产品包括计算机可读存储介质,其可由处理电路读取且存储用于由该处理电路执行以用于执行一方法的指令。该方法包括例如由处理器获得用于执行的机器指令,该机器指令根据计算机架构经定义用于计算机执行,该机器指令包括:至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数;第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数;第二寄存器字段及位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及掩码字段,该掩码字段包括在该机器指令的执行期间使用的一个或多个控制;及执行该机器指令,该执行包括:将十进制浮点格式的该第一操作数的至少一部分转换为区位格式;及将该转换的结果放置在由该第二操作数的该地址指定的位置处。
在此还描述及主张涉及本发明的一个或多个方面的方法和系统。另外,本文中还描述且可主张涉及本发明的一个或多个方面的服务。
经由本发明的技术,认识到额外特征及优势。本发明的其他实施例和方面在此得以详细描述且被视为所主张的本发明的一部分。
附图说明
本发明的一个或多个方面在本说明书的结束处的权利要求中作为示例经特定指出且清楚地主张。从以下结合附图进行的详细描述,本发明的前述内容及目标、特征及优势是显而易见的。
图1描绘并入且使用本发明的一个或多个方面的计算环境的一个实施例;
图2A描绘并入且使用本发明的一个或多个方面的计算环境的另一实施例;
图2B描绘根据本发明的一个方面的图2A的存储器的进一步细节;
图3描绘根据本发明的一个方面的从区位格式转换为十进制浮点格式的逻辑的概述;
图4描绘根据本发明的一个方面使用的从区位转换指令的格式的一个实施例;
图5描绘根据本发明的一个方面的从区位转换为十进制浮点的逻辑的进一步细节;
图6描绘根据本发明的一个方面的从十进制浮点格式转换为区位格式的逻辑的概述;
图7描绘根据本发明的一个方面使用的从十进制浮点转换为区位指令的一个实施例;
图8描绘根据本发明的一个方面的从十进制浮点转换为区位的逻辑的进一步细节;
图9描绘并入本发明的一个或多个方面的计算机程序产品的一个实施例;
图10描绘并入且使用本发明的一个或多个方面的主机计算机系统的一个实施例;
图11描绘并入且使用本发明的一个或多个方面的计算机系统的又一示例;
图12描绘并入且使用本发明的一个或多个方面的包含计算机网络的计算机系统的另一示例;
图13描绘并入且使用本发明的一个或多个方面的计算机系统的各种元件的一个实施例;
图14A描绘并入且使用本发明的一个或多个方面的图13的计算机系统的执行单元的一个实施例;
图14B描绘并入且使用本发明的一个或多个方面的图13的计算机系统的分支单元的一个实施例;
图14C描绘并入且使用本发明的一个或多个方面的图13的计算机系统的载入/存储单元的一个实施例;及
图15描绘并入且使用本发明的一个或多个方面的模拟主机计算机系统的一个实施例。
具体实施方式
不同计算机架构可支持不同数据格式,且所支持的数据格式可随时间改变。举例而言,由国际商业机器公司提供的机器传统上已支持EBCDIC及ASCII格式。后来,机器开始支持十进制浮点(DFP)格式及运算,存在针对DFP格式及运算的IEEE标准(IEEE754-2008)。然而,为了使用DFP运算,要将EBCDIC及ASCII数据转换为DFP。
根据本发明的一个方面,提供在EBCDIC或ASCII与十进制浮点之间转换的有效机制。在一个示例中,此机制在无其他技术的存储器开销的情况下执行转换。
在本发明的一个方面中,提供机器指令,机器指令从存储器读取EBCDIC或ASCII数据(其具有区位格式),将其转换为适当的十进制浮点格式,且将其写入至目标浮点寄存器或浮点寄存器对。这些指令在本文中被称为长的从区位转换指令(CDZT)及扩展的从区位转换指令(CXZT)。
在本发明的又一个方面中,提供机器指令,机器指令将源浮点寄存器或浮点寄存器对中的十进制浮点(DFP)操作数转换为EBCDIC或ASCII数据,且将其存储至目标存储器位置。这些指令在本文中被称为长的转换为区位指令(CZDT)及扩展的转换为区位指令(CZXT)。
参看图1描述并入且使用本发明的一个或多个方面的计算环境的一个实施例。计算环境100包括(例如)经由(例如)一个或多个总线108和/或其他连接相互耦接的处理器102(例如,中央处理单元)、存储器104(例如,主存储器)及一个或多个输入/输出(I/O)设备和/或接口106。
在一个示例中,处理器102为处理器,其为由国际商业机器公司(纽约Armonk)提供的系统服务器的部分。 服务器实施由国际商业机器公司提供的其指定计算机的逻辑结构及函数运算。的一个实施例描述于题为“z/Architecture Principles of Operation”的公开(公开第SA22-7832-08号,第九版,2010年8月)中,该公开在此以引用的方式全部并入本文中。在一个示例中,该服务器运行操作系统,诸如,也由国际商业机器公司提供的 为国际商业机器公司(美国纽约Armonk)的注册商标。本文中使用的其他名称可为国际商业机器公司或其他公司的注册商标、商标或产品名称。
参看图2A描述并入且使用本发明的一个或多个方面的计算环境的另一实施例。在此示例中,计算环境200包括(例如)经由(例如)一个或多个总线208和/或其他连接相互耦接的原生中央处理单元202、存储器204及一个或多个输入/输出设备和/或接口206。作为示例,计算环境200可包括由国际商业机器公司(纽约Armonk)提供的处理器、服务器或服务器;由Hewlett Packard Co.(Palo Alto,California)提供的具有Intel Itanium处理器的HP Superdome;和/或基于由HewlettPackard、Intel、Sun Microsystems或其他者提供的架构的其他机器。为国际商业机器公司(美国纽约Armonk)的注册商标。及Itanium为Intel Corporation(Santa Clara,California)的注册商标。
原生中央处理单元202包括在环境内的处理期间使用的一个或多个原生寄存器210,诸如,一个或多个通用寄存器和/或一个或多个专用寄存器。这些寄存器包括表示在任何特定时间点的环境状态的信息。
此外,原生中央处理单元202执行存储在存储器204中的指令及代码。在一个特定示例中,中央处理单元执行存储在存储器204中的模拟器(emulator)代码212。此代码使在一个架构中组态的处理环境能够模拟另一架构。举例而言,模拟器代码212允许基于不同于的架构的机器(诸如,处理器、服务器、服务器、HP Superdome服务器或其他)模拟及执行基于开发的软件及指令。
参看图2B描述关于模拟器代码212的进一步细节。客体指令250包含经开发以待在不同于原生CPU202的架构的一个架构中执行的软件指令(例如,机器指令)。举例而言,客体指令250可已经设计以在处理器102上执行,但实情为,正在原生CPU202(其可为(例如)Itanium处理器)上经模拟。在一个示例中,模拟器代码212包括指令提取单元252以从存储器204获得一个或多个客体指令250,及可选地提供用于获得的指令的局部缓冲。其也包括指令转译例程254以判定已获得的客体指令的类型且将客体指令转译成一个或多个对应的原生指令256。此转译包括(例如)识别要由客体指令执行的函数及选择原生指令来执行该函数。
另外,模拟器212包括模拟控制例程260以使原生指令被执行。模拟控制例程260可使原生CPU202执行模拟一个或多个先前获得的客体指令的原生指令的例程,且在此执行完结时,将控制返回至指令提取例程以模拟下一个客体指令或一组客体指令的获得。客体指令250的执行可包括将数据从存储器204载入至寄存器;将数据从寄存器存储回至存储器;或执行某一类型的算术或逻辑运算(如由转译例程判定)。
每一例程(例如)以软件实施,该软件存储在存储器中且由原生中央处理单元202执行。在其他示例中,例程或运算中的一个或多个以固件、硬件、软件或其某一组合实施。可使用原生CPU的寄存器210或通过使用存储器204中的位置来模拟模拟的处理器的寄存器。在实施例中,客体指令250、原生指令256及模拟器代码212可常驻于同一存储器中或可分布在不同存储器设备间。
如本文中使用,固件包括(例如)处理器的微代码、毫代码和/或宏代码。其包括(例如)在较高层级机器代码的实施中使用的硬件层级指令和/或数据结构。在一个实施例中,其包括(例如)通常作为微代码递送的专有代码,该微代码包括特定针对基础硬件的受信任软件或微代码且控制操作系统对系统硬件的存取。
在一个示例中,获得、转译及执行的客体指令250为本文中描述的指令的一。在此示例中为指令的指令从存储器经提取、转译且表示为被执行的一系列原生指令256(例如,等)。
在另一实施例中,在另一架构环境中执行指令中的一个或多个,该另一架构环境包括(例如)如在以下描述的架构:2006年11月的“64and IA-32ArchitecturesSoftware Developer's Manual Volume1”(序号253665-022US);2006年11月的“64and IA-32Architecture Software Developer's Manual Volume2A”(序号253666-022US);2006年1月的“ Architecture Software Developer's ManualVolume1”(文件号245317-005);2006年1月的“Architecture SoftwareDeveloper's Manual Volume2”(文件号245318-005);和/或2006年1月的“Architecture Software Developer's Manual Volume3”(文件号245319-005)。
本文中描述的处理器以及其他执行指令,以执行某些功能(诸如,在EBCDIC或ASCII与十进制浮点格式之间转换)。在一个示例中,EBCDIC或ASCII数据具有区位格式,且因此,示例指令包括(例如)如本文中描述的从区位转换为十进制浮点指令以及从十进制浮点转换为区位指令。
然而,在描述指令前,描述本文中提及的各种数据格式。举例而言,在区位格式下,字节的最右边四个位称为数字位(N)且通常包括表示十进制数位(digit)的代码。字节的最左边四个位称为数字位(Z),除十进制操作数的最右边字节外,在该情况下,可将这些位作为区位或作为符号(S)来处理。
区位格式的十进制数位可为较大字符集合的部分,其还包括字母及特殊字符。区位格式因此适合于以人可读形式输入、编辑及输出数字数据。在一个实施例中,十进制算术指令不直接按区位格式对十进制数运算;这样的数首先经转换为(例如)十进制浮点格式的一。
可按三个数据格式中的任一表示十进制浮点数据:短、长或扩展。每一数据格式的内容表示编码的信息。指派特殊代码以将有限数与NaN(非数)及无限数区分开。
对于有限数,按该格式使用有偏指数(biased exponent)。对于每一个格式,将与用于左单元视图(LUV)指数的有偏不同的有偏用于右单元视图(RUV)指数。有偏指数为不带符号的数。通过组合字段中的有效数(significand)的最左边数位(LMD)来编码有偏指数。在编码的尾有效数字段中编码有效数的其余数位。
这些数据格式的示例为:
DFP短格式
当将DFP短格式的操作数载入至浮点寄存器中时,其占据寄存器的左半边,且右半边保持不变。
DFP长格式
当将DFP长格式的操作数载入至浮点寄存器中时,其占据整个寄存器。
DFP扩展格式
DFP扩展格式的操作数占据浮点寄存器对。最左边的64个位占据该对的全部较低编号的寄存器,且最右边的64个位占据全部较高编号的寄存器。
符号位在每一个格式的位0中,且(例如)对于正为0且对于负为1。
对于有限数,组合字段包括有偏指数及有效数的最左边数位;对于NaN及无限数,此字段包括识别其的代码。
当该格式的位1-5处于00000-11101的范围中时,操作数为有限数。将有偏指数的两个最左边位及有效数的最左边数位编码于该格式的位1-5中。位6至组合字段的末尾包括有偏指数的其余。
当格式字段的位1-5为11110时,操作数为无限数。组合字段中在该格式的位5右边的所有位构成用于无限数的保留字段。在源无限数中接受保留字段中的非零值;在所得无限数中将保留字段设为0。
当该格式的位1-5为11111时,操作数为NaN,且位6(称为SNaN位)进一步将QNaN与SNaN区分开。如果位6为0,则其为QNaN;否则,其为SNaN。组合字段中在该格式的位6右边的所有位构成用于NaN的保留字段。在源NaN中接受保留字段中的非零值;在所得NaN中将保留字段设为0。
下表总结组合字段的编码及布局。在该表中,有限数的有偏指数为两个部分的串联:(1)从该格式的位1-5导出两个最左边位,及(2)组合字段中的其余位。举例而言,如果DFP短格式的组合字段含有10101010101二进制,则其表示10010101二进制的有偏指数及最左边有效数数位5。
编码的尾有效数字段包括编码的十进制数,其表示尾有效数中的数位。尾有效数包括所有有效数数位,除最左边的数位外。对于无限数,在源无限数中接受非零尾有效数数位;将所得无限数中的所有尾有效数数位设为0,除非另有规定。对于NaN,此字段包括称为有效载荷(payload)的诊断信息。
编码的尾有效数字段为大量10位区块(称为三位十进制数(declet))。三位十进制数的数目取决于格式定。每一三位十进制数表示10位值中的三个十进制数位。
各种格式的有限数的值展示于下表中:
术语有效数用于意味(例如)以下:
1.对于有限数,有效数包括在左边用从组合字段导出的有效数的最左边位填补的所有尾有效数数位。
2.对于无限数及NaN,有效数含有在左边用零数位填补的所有尾有效数数位。
对于有限数,DFP有效数位开始于最左边的非零有效数数位,且结束于最右边的有效数数位。
对于有限数,DFP有效数位的数目为从格式精确度减去前导零的数目的差。前导零的数目为有效数中在最左边非零数位的左边的零的数目。
除了以上之外,存在密集充填十进制(DPD)格式。3数位十进制数(000-999)至10位值(称为三位十进制数)的映射的示例展示于下表中。DPD项目按十六进制展示。十进制数的前两个数位展示于最左边行中,且沿着顶部列展示第三数位。
0 1 2 3 4 5 6 7 8 9
00_ 000 001 002 003 004 005 006 007 008 009
01_ 010 011 012 013 014 015 016 017 018 019
02_ 020 021 022 023 024 025 026 027 028 029
03_ 030 031 032 033 034 035 036 037 038 039
04_ 040 041 042 043 044 045 046 047 048 049
05_ 050 051 052 053 054 055 056 057 058 059
06_ 060 061 062 063 064 065 066 067 068 069
07_ 070 071 072 073 074 075 076 077 078 079
08_ 00A 00B 02A 02B 04A 04B 06A 06B 04E 04F
09_ 01A 01B 03A 03B 05A 05B 07A 07B 05E 05F
10_ 080 081 082 083 084 085 086 087 088 089
90_ 08C 08D 18C 18D 28C 28D 38C 38D 0AE 0AF
91_ 09C 09D 19C 19D 29C 29D 39C 39D 0BE 0BF
92_ 0AC 0AD 1AC 1AD 2AC 2AD 3AC 3AD 1AE 1AF
93_ 0BC 0BD 1BC 1BD 2BC 2BD 3BC 3BD 1BE 1BF
94_ 0CC 0CD 1CC 1CD 2CD 2CD 3CC 3CD 2AE 2AF
95_ 0DC 0DD 1DC 1DD 2DC 2DD 3DC 3DD 2BE 2BF
96_ 0EC 0ED 1EC 1ED 2EC 2ED 3EC 3ED 3AE 3AF
97_ 0FC 0FD 1FC 1FD 2FC 2FD 3FC 3FD 3BE 3BF
98_ 08E 08F 18E 18F 28E 28F 38E 38F 0EE 0EF
99_ 09E 09F 19E 19F 29E 29F 39E 39F 0FE 0FF
10位三位十进制数至3数位十进制数的映射的示例展示于下表中。将10位三位十进制数值分裂成在左边行中展示的6位索引及沿着顶部行展示的4位索引,两者皆按十六进制表示。
0 1 2 3 4 5 6 7 8 9 A B C D E F
00_ 000 001 002 003 004 005 006 007 008 009 080 081 800 801 880 881
01_ 010 011 012 013 014 015 016 017 018 019 090 091 810 811 890 891
02_ 020 021 022 023 024 025 026 027 028 029 082 083 820 821 808 809
03_ 030 031 032 033 034 035 036 037 038 039 092 093 830 831 818 819
04_ 040 041 042 043 044 045 046 047 048 049 084 085 840 841 088 089
05_ 050 051 052 053 054 055 056 057 058 059 094 095 850 851 098 099
06_ 060 061 062 063 064 065 066 067 068 069 086 087 860 861 888 889
07_ 070 071 072 073 074 075 076 077 078 079 096 097 870 871 898 899
08_ 100 101 102 103 104 105 106 107 108 109 180 181 900 901 980 981
09_ 110 111 112 113 114 115 116 117 118 119 190 191 910 911 990 991
0A_ 120 121 122 123 124 125 126 127 128 129 182 183 920 921 908 909
根据本发明的一个方面,提供从区位格式转换为十进制浮点的指令。在一个实施例中,存在两个类型的从区位转换为十进制浮点指令,包括长的从区位转换指令(CDZT)及扩展的从区位转换指令(CXZT),以下描述其中的每一个。这些指令提供用于将数据从直接在存储器中的EBCDIC或ASCII转换为寄存器中的十进制浮点格式的有效方式。
举例而言,参看图3,在一个实施例中,每机器指令从存储器读取EBCDIC或ASCII数据(步骤300);将其转换为适当的十进制浮点格式(步骤302);且将其写入至目标浮点寄存器或浮点寄存器对(步骤304)。
长的从区位转换指令CDZT从指定存储器位置读取操作数数据,将其转换为具有零指数的双精确度DFP操作数,且将其写入至指定目标浮点寄存器。扩展的从区位转换指令CXZT从指定存储器位置读取操作数数据,将其转换为具有零指数的扩展的精确度DFP操作数,且将其写入至指定目标浮点寄存器对。在源存储器位置中的字节的数目指定于指令中,且对于CDZT可为1至16个字节,或对于CXZT可为1至34个字节。针对有效数位码全部检查源操作数的数位。指令中的符号字段指示源操作数的符号半字节(nibble)待处理。如果符号字段经设置,则针对有效符号代码检查符号。假定其有效,则将DFP结果的符号设为同一符号,如由源操作数的符号半字节指示。如果检测到无效数位或符号代码,则认识到十进制数据例外状况。
在一个实施例中,从区位转换指令中的每一个具有同一个格式(RSL-b格式),其一示例描绘于图4中。如在一个实施例中所描绘,从区位转换指令的一个格式400包括(例如)以下字段:
操作码字段402a、402b:操作码字段提供指示正由指令执行的函数的操作码。作为示例,一个定义的操作码将函数定义为长的从区位转换指令,且另一预定义的操作码指示其为扩展的从区位转换指令。
长度字段(L2)404:长度字段404指定第二操作数的长度(例如,以字节为单位)。作为示例,对于扩展的转换为区位指令,长度字段包括0至33的长度码,且对于长的从区位转换指令,长度字段包括0至15的长度码。
基底寄存器字段(B2)406:基底寄存器字段指定通用寄存器,将其内容添加至位移字段的内容以形成第二操作数地址。
位移字段(D2)408:位移字段包括添加至由基底寄存器字段指定的通用寄存器的内容以形成第二操作数地址的内容。
寄存器字段(R1)410:寄存器字段指定寄存器,其内容为第一操作数。包括第一操作数的寄存器有时被称为第一操作数位置。
掩码字段(M3)412:掩码字段包括(例如)符号(S)控制(例如,位),在一个示例中,其为M3字段的位0。当此位为0时,第二操作数不具有符号字段,且将DFP第一操作数结果的符号位设为0。当为1时,第二操作数带符号。也就是说,最右边字节的最左边的四个位为符号。当符号字段指示正值时,将DFP第一操作数结果的符号位设为0;且当符号字段指示负值时,将其设为1。在一个实施例中,忽略M3字段的位1至3。
在从区位转换指令的操作中,将区位格式的第二操作数转换为DFP格式,且将结果放置在第一操作数位置处。在一个示例中,量为1,且用该量来表示递送值。放置在第一操作数位置处的结果为正准的(canonical)。
在一个实施例中,当在第二操作数中检测到无效数位或符号代码时,认识到十进制操作数数据例外状况。认识到规格例外状况,且当(例如)下列中的任一个为真时抑制该操作:对于CDZT,L2字段大于或等于16;及对于CXZT,R1字段指定无效浮点寄存器对,或L2字段大于或等于34。
在一个实施例中,当指定ASCII第二操作数时,M3字段的位0为0;否则,认识到十进制操作数数据例外状况。也就是说,0011二进制的符号值并非有效的符号。
参看图5描述关于从区位转换指令的执行的进一步细节。在一个示例中,执行执行此逻辑的从区位转换指令的为处理器。
最初,进行关于从区位转换指令的操作码是否指示其为扩展或长的格式(询问500)。也就是说,正执行的指令为长的从区位转换指令或扩展的从区位转换指令。如果操作码指示其为长的从区位转换指令,则进行关于在指令中提供的长度字段(L2)是否指定大于15的长度的另一判定(询问502)。如果长度字段指定大于15的长度,则提供指示其为16个以上数位(0至15)的例外状况(步骤504)。
返回询问502,如果长度字段未指定大于15的长度,则从存储器读取源区位数位(第二操作数的至少一部分)(步骤506)。其后,将从存储器读取的源区位数位转换为十进制浮点格式(步骤508)。在此示例中,将其转换为具有零指数的双精确度DFP操作数。
另外,进行关于在掩码字段(M3)中指定的符号控制(S)是否经设为1的判定(询问510)。如果符号控制不等于一,则强迫DFP数的符号为正(步骤512),且用经转换的值更新目标浮点寄存器,包括强迫的符号(步骤514)。
返回询问510,如果符号控制等于1,则从存储器读取(第二操作数的)源符号字段(步骤516)。其后,将DFP数的符号设为源的符号(步骤518),且用经转换的值及符号(例如,DFP格式的位0)更新目标浮点寄存器(步骤514)。
返回询问500,如果操作码指示其为扩展的从区位转换指令,则进行关于指令的长度字段是否指定大于33的长度的判定(询问530)。如果长度字段指定大于33的长度,则提供指示34个以上数位(0至33)的例外状况(步骤532)。然而,如果长度字段未指定大于33的长度,则进行关于指令的R1字段是否指定无效浮点寄存器对的判定(询问534)。如果指示无效浮点寄存器对,则提供例外状况(步骤536)。否则,从存储器读取源区位数位(第二操作数的至少一部分)(步骤538)。其后,从存储器读取的源区位数位转换为十进制浮点格式(步骤540)。在此示例中,将数位(第二操作数的至少一部分)转换为具有零指数的扩展的精确度数据浮点运算。
其后,进行关于是否将指令的掩码字段中的符号(S)控制设为1的判定(询问542)。如果符号控制不等于1,则强迫数据浮点数的符号为正(步骤544)。然而,如果符号控制等于1,则从存储器读取(第二操作数的)源符号字段(步骤546),且将DFP数的符号设为源的符号(步骤548)。在于步骤544或步骤548中设置了符号后,用转换的十进制浮点格式及符号更新目标浮点寄存器对(步骤550)。
以上所提及为用于将从存储器读取的源区位数位转换为十进制浮点格式的两个步骤。具体地,步骤508将源转换为具有零指数的双精确度十进制浮点操作数,且步骤540将源转换为具有零指数的扩展的精确度数据浮点操作数。关于转换的进一步细节描述于下文以及以上提及的“z/Architecture Principles of Operation”公开案第SA22-7832-08号,第九版,2010年8月)中。
从区位格式化的数转换为DFP格式的程序的一个实施例如下:从存储器读取源数位。如果必要,源数据的每一字节的右边4位中的二进制编码十进制(BCD)数位在左边用零填补,使得存在一共16个BCD数位用于双精确度运算,且使得存在34个数位用于扩展的精确度运算。接着将这些BCD数位从BCD转换为密集充填十进制(DPD),使得对于所有BCD数位(除最左边的BCD数位外),在源数据的右边开始的每隔3个BCD数位经转换为10位DPD组。因此,存在用于双精确度转换的5个DPD组及用于扩展的精确度转换的11个DPD组。这些DPD组构成双精确度结果的位14-63及扩展的精确度结果的位17-127。位6-13为双精确度结果的指数字段,且将位1-5中来自组合字段的2个位设为值398用于双精确度运算。对于扩展的精确度运算,位6-17为指数字段位,且将来自组合字段的2个位设为值6176用于扩展的精确度运算。
如果最高有效BCD数位为“8”或“9”,则将位1及2设为“1”;位3及4为指数的最高有效2个位,且因此将被设为“01”;且对于“8”,将位5设为“0”,或对于“9”,将位5设为“1”。如果最高有效BCD数位为“0”至“7”,则位1及2为指数的最高有效值,且因此将被设为“01”,且将位3-5设为最高有效BCD数位的最右边的3个位。
如果S=1,则源数据的最右边的字节的最左边4个位为符号代码。在此情况下,如果符号代码的值为“1011”或“1101”,则将结果符号位(位0)设为1。
以上详细描述的为提供显著改良传统存储器至存储器十进制工作负载的方式的两个指令。在传统存储器至存储器十进制工作负载中,EBCDIC或ASCII操作数首先经转换为充填十进制格式,其剥出字段代码,且将两个操作数的数字数位及符号数位置于存储器的另一部分中。接着通过算术运算(诸如,加、减、乘或除)对充填的操作数运算。这些算术运算在其可开始前必须等待充填程序的存储以完成,且这些运算接着将其结果存储至存储器。一旦结果存储完成,则接着将结果解封装回至目标格式(EBCDIC或ASCII)。存储器与运算的依赖性支配着性能。
根据本发明的一个方面,取决于目标格式,使用新的指令(例如,通过启用的新指令重新编译代码)用CDZT或CXZT替代Pack或PKA指令。数学运算可接着由其DFP当量(例如,AD/XTR、SD/XTR、MD/XTR、DT/XTR)替代,使得不存在等待存储任何操作数或从存储器读取任何操作数。这些指令在与加(AP)、减(SP)、乘(MP)或除(DP)类似的时间量中操作,但无存储器开销。当替代UNPK或UNPKA运算时,避免第二存储器依赖性,且经由以下描述的CZDT或CZXT指令将结果直接转换为目标格式。
传统存储器至存储器十进制充填操作能够处理15个数位及符号,其需要3个重叠充填操作以处理通常在诸如COBOL应用的应用中发现的每个31数位(及符号)操作数。必须将操作数分成较小的重叠迷你操作数增加了编译程序及经编译的代码的复杂性;需要执行额外指令以执行给定任务,诸如,处置迷你操作数之间的载运/借位;及影响性能。由于CXZT能够将34个数位及符号代码转换成DFP操作数,因此编译程序可将共同的31数位及符号操作数(例如,COBOL操作数)作为单一实体处理,从而简化编译的代码且改良性能。
如本文中所描述,CDZT及CXZT指令提供用于将数据从存储器中的EBCDIC或ASCII直接转换为寄存器中的DFP格式的有效方式。其允许在单一步骤中将数据从EBCDIC或ASCII转换为DFP格式。先前,该程序需要使用Pack或PKA操作将数据转换为充填十进制格式。接着必须将数据载入至通用寄存器(GPR)中,但由于指令集架构中当前不存在长度受控制的负载,因此这常需要字、半字与字节负载操作的混合。其他指令CDSTR或CXSTR可接着用于将GPR/GPR对中的充填十进制数据转换为目标DFP格式。根据本发明的一个方面,PACK/PKA及CDSTR/CXSTR由一个指令CDZT或CXZT替代。
除了从区位转换为十进制浮点指令外,根据本发明的又一个方面,也提供从十进制浮点转换为区位指令。这些指令提供将数据从保持于浮点寄存器或浮点寄存器对中的十进制浮点格式转换为EBCDIC或ASCII数据且将其直接存储至存储器的有效方式。
举例而言,参看图6,在一个示例中,将源寄存器或源寄存器对中的DFP操作数转换为EBCDIC或ASCII数据(步骤600)。接着将转换的结果存储在目标存储器位置中(步骤602)。这些指令允许在单一步骤中将数据从DFP格式直接转换为EBCDIC及ASCII。
这些指令的示例包括长的转换为区位指令(CZDT)及扩展的转换为区位指令(CZXT)。长的转换为区位指令CZDT从指定FPR寄存器读取双精确度DFP操作数数据,将尾数转换为区位格式,且将其写入至目标存储器位置。同样地,扩展的转换为区位指令CZXT从指定FPR寄存器对读取扩展的精确度DFP操作数数据,且将尾数转换为区位格式,且将其写入至目标存储器位置。如果指定的存储器位置的长度不足以配合源操作数的所有最左边非零数位,则认识到十进制溢出例外状况(假设启用十进制溢出掩码)。如果并非所有数位都配合至指定存储器位置,则设置特定条件码(例如,3)。将DFP操作数的符号复制至存储器中的结果的符号半字节(如果符号字段经设置)。所使用的正符号编码由以下描述的指令本文中的P字段控制,且零操作数的结果可有条件地由也在以下描述的指令本文的Z字段强迫为正。在编译代码中通常需要这种符号操纵,且将此功能直接包括于指令中提供性能节省且简化了编译代码。
参看图7描述转换为区位指令的格式(RSL-b)的一个实施例。在一个示例中,转换为区位指令的格式700包括以下字段:
操作码字段702a、702b:操作码字段提供指示正由指令执行的函数的操作码。作为示例,一个定义的操作码将函数指定为长的转换为区位指令,且另一预定义的操作码指示其为扩展的转换为区位指令。
长度字段(L2)704:长度字段704指定第二操作数的长度(例如,以字节为单位)。作为示例,对于扩展的转换为区位指令,长度字段包括0至33的长度码,且对于长的转换为区位指令,长度字段包括0至15的长度码。另外,待转换的第一操作数的最右边有效数数位的数由L2指定。
基底寄存器字段(B2)706:基底寄存器字段指定通用寄存器,将其内容添加至位移字段的内容以形成第二操作数地址。
位移字段(D2)708:位移字段包括添加至由基底寄存器字段指定的通用寄存器的内容以形成第二操作数地址的内容。
寄存器字段(R1)710:寄存器字段指定寄存器,其内容为第一操作数。
掩码字段(M3)712:掩码字段包括(例如):
符号控制(S):M3字段的位0为符号控制。当S为0时,第二操作数不具有符号字段。当S为1时,第二操作数具有符号字段。也就是说,最右边字节的最左边的四个位位置为符号。
区位控制(Z):M3字段的位1为区位控制。当Z为0时,将第二操作数的每一区位字段存储为1111二进制。当Z为1时,将第二操作数的每一区位字段存储为0011二进制。
加号代码控制(P):M3字段的位2为加号代码控制。当P为0时,将加号编码为1100二进制。当P为1时,将加号编码为1111二进制。当S位为0时,忽略P位,且假定P位为0。
强迫加零控制(F):M3字段的位3为强迫加零控制。当F为0时,不采取动作。当F为1且放置在第二操作数位置处的结果的绝对值为0时,通过由P位指定的符号代码设置结果的符号以指示加值。当S位为0时,忽略F位,且假定F位为0。
在操作中,DFP第一操作数的最右边有效数数位的指定数及第一操作数的符号位经转换为区位格式,且将结果放置在第二操作数位置处。暗示具有量1的第一操作数的右单元视图。忽略组合字段中的指数,且在有偏前将其如同其具有零值一样处理。
待转换的第一操作数的最右边有效数数位的数由L2指定。第二操作数的字节的长度对于CZXT为1-34,其对应于0至33的L2中的长度码,其意谓1-34个数位。第二操作数的字节的长度对于CZDT为1-16,其对应于0至15的L2中的长度码,其意谓1至16个数位。
在一个实施例中,针对任何第一个操作数(包括无限数、QNaN或SNaN)执行该操作,而不造成IEEE例外状况。如果第一操作数为无限数或NaN,则假定零数位为有效数的最左边数位,将最右边有效数数位的指定数及符号位转换为区位格式,将结果放置在第二操作数位置处,且执行包括特定条件码(例如,3)。
当失去结果的最左边非零数位时,因为第二操作数字段过短,所以通过忽略溢出数位来获得结果,设置指定条件码(例如,3),且如果十进制溢出掩码位为1,则十进制溢出的程序中断发生。操作数长度单独并非溢出的指示;在操作期间将失去非零数位。
认识到规格例外状况,且当(例如)下列中的任一个为真时,抑制该操作:对于CZDT,L2字段大于或等于16,其意谓17个或17个以上数位。对于CZXT,R1字段指定无效浮点寄存器对,或L2字段大于或等于34,其意谓35个或35个以上数位。
所得条件码的示例包括:
0源为0
1源小于0
2源大于0
3无限数、QNan、SNaN、部分结果。
在一个实施例中,当S位为1时,可将ASCII区位十进制操作数存储为带符号。此由该程序负责,这是因为ASCII表示通常不带符号且为正,无最右边区位被用作符号的概念。另外,包括特定条件码(例如,0)指示第一操作数的绝对值为0。
M3控制位对第一操作数DFP符号与为0的所得第二操作数的绝对值之间的关系说明于下表中,将该表作为一个示例来提供:
x忽略
--不可适用
参看图8描述关于转换为区位指令的逻辑的进一步细节。在一个示例中,此逻辑通过处理器执行转换为区位机器指令来执行。
参看图8,最初,进行关于此为扩展的转换为区位指令或是长的转换为区位指令的判定,如由指令的操作码指示(询问800)。如果其为长的转换为区位指令(如由操作码指示),则进行关于L2字段是否指定大于15的长度的判定(询问802)。如果L2字段未指定大于15的长度,则由于存在16个以上数位(0-15),因此提供例外状况(步骤804)。
返回至询问802,如果长度字段未指定大于15的长度,则从在转换指令中指定的浮点寄存器读取DFP操作数(使用R1)(步骤806)。接着将读取的DFP操作数的源DFP数位转换为BCD数位(步骤808)。
在转换后,进行关于非零数位是否配合于由L2指定的长度中的判定(询问810)。如果非零数位不配合,则指示溢出例外状况(步骤812)。否则,进行关于掩码字段的Z位是否等于1的又一判定(询问814)。如果Z等于1,则将区位字段及符号代码设为“0011”(步骤816)。否则,将区位字段及符号代码设为“1111”(步骤818)。
在设置了区位字段及符号代码后,进行关于掩码字段的S位是否设为1的又一判定(询问820)。如果S位未设为1,则按适当格式将BCD数位、符号字段及字段代码存储至存储器(步骤822)。区位格式的一个示例如下:
在此示例中,字节的最右边四个位称为数字位(N)且通常包括表示十进制数位的代码。字节的最左边四个位称为区位(Z),除十进制操作数的最右边字节外,在该情况下,可将这些位作为区位或作为符号(S)来处理。
返回至询问820,如果S位等于1,则进行关于掩码中的Z位是否设为1的又一判定(询问824)。如果Z等于1,则进行关于结果是否等于0的判定(步骤826)。如果结果等于0,则将结果符号设为正(步骤828)。如果未设置结果等于0或Z不等于1,则将结果符号设为DFP符号(步骤830)。
在设置了结果符号后,进行关于结果符号是否为正的判定(询问832)。如果结果符号并不为正,则处理继续步骤822,按适当格式将BCD数位、符号字段及字段代码存储至存储器。然而,如果结果符号为正(询问832),则进行关于掩码字段的P位是否设为1的又一判定(询问834)。如果P位经设为1,则设置符号等于1111;否则,设置符号等于1100(步骤838)。在设置了符号后,处理继续步骤822。
返回询问800,如果此为扩展的转换为区位指令,则进行关于长度字段是否指定大于33的长度的判定(询问850)。如果长度字段指定大于33的长度,则提供指示34个以上数位的例外状况(步骤852)。否则,进行关于寄存器字段(R1)是否指定无效浮点寄存器对的判定(询问854)。如果不,则处理继续步骤806。否则,提供例外状况(步骤856)。此完成转换为区位指令的实施例的描述。
以上所提及为用于将源DFP数位转换为BCD数位的步骤。关于转换的进一步细节描述于下文以及以上提及的“z/Architecture Principles of Operation”(公开案第SA22-7832-08号,第九版,2010年8月)中。以下描述还提供关于从DFP转换为区位格式的程序的细节。
在一个示例中,对于双精确度格式,组合字段(其为源数据的位1-5)中含有待转换为区位格式的尾数数据的最高有效数位。位0为符号位,其中通过位0为“1”来指示负值。位6-13为指数连续字段,且被此操作忽略。位14-63为编码的尾有效数且含有十进制数据的其余15个数位,且按DPD(密集充填十进制)格式编码。
在一个示例中,对于扩展的精确度格式,组合字段(其为源数据的位1-5)中含有待转换为区位格式的尾数数据的最高有效数位。位0为符号位,其中通过位0为“1”来指示负值。位6-17为指数连续字段,且被此操作忽略。位18-127为编码的尾有效数且含有按DPD格式编码的十进制数据的其余33个数位。
对于双精确度及扩展的精确度格式两者,为DPD编码的数位的尾有效数数位从DPD格式转换为BCD(二进制编码十进制)格式,且将来自组合字段(位1-5)的数位预先置于那些数位的开头。DPD至BCD转换仅需要少数闸(gate),且经由这些闸,将10位DPD数据的区块分解成12位BCD数据的区块,使得每一BCD区块包括三个4位BCD数。针对前导零检查该数串,且接着将该数串与指令的L2字段比较以判定是否发生溢出情形,且如果其发生,则一旦数据扩大至区位十进制格式,则其将适当最高有效数位(那些为将不配合于由L2指定的指定存储器长度内的数位)清零(zero out)。
将接下来的4位区位字段插入至每一BCD数位的左边,使得每一字节(8位)现在包括4位区位字段,接着为4位BCD数位。取决于本文中的Z位为0或是1,每一区位字段为“0011”或“1111”。接下来,如果在该指令中S=l,则来自DFP源操作数的符号位用于判定符号代码。如果BCD数位都为0且F=l,则忽略符号且创建正的符号代码。否则,所产生的符号代码为来自位0的DFP源操作数的符号,且将负的符号编码为“1101”;如果P=0,则将正的符号编码为“1100”,或如果P=l,则将正的符号编码为“1111”。此符号代码接着替代在最低有效BCD数位左边的字段代码。(在一个实施例中,符号与字段代码并行地处理,且插入于最低有效BCD数位的左边,代替字段代码。)接着将此结果写入至存储器。
以上详细描述为两个机器指令-CZDT及CZXT,其将源浮点寄存器或寄存器对中的十进制浮点操作数转换为EBCDIC或ASCII数据且将其存储至目标存储器位置。这些指令提供显著改良传统存储器至存储器十进制工作负载的方式。传统存储器至存储器十进制解封装操作能够处理15个数位及符号,其需要三个重叠解封装操作以处理通常在诸如COBOL应用的应用中发现的31数位(及符号)结果。必须将结果分成较小的重叠迷你结果增加了编译程序的复杂性且影响性能,这是因为其需要执行额外指令以执行给定任务。由于CZXT能够转换含有多达34个数位及符号代码的DFP操作数且按单一指令将其存储至存储器,因此编译程序可将共同的31数位及符号结果(例如,COBOL结果)作为单一实体来处理,从而简化编译的代码且改良性能。
先前,程序需要使用CSDTR或CSXTR将数据从DFP格式转换为GPR中的充填十进制格式。接着必须将数据从GPR存储至存储器,但由于指令集架构中当前不存在长度受控制的存储,因此此常需要字、半字与字节存储操作的混合。最后,需要解封装或UNPKA操作将存储器中的数据转换回至EBCDIC或ASCII。这些新指令允许在单一步骤中将数据从DFP格式直接转换为EBCDIC及ASCII。CZDT或CZXT指令替代CSDTR/CSXTR及UNPK/UNPKA指令两者。
如本领域的技术人员将了解,本发明的一个或多个方面可体现为系统、方法或计算机程序产品。因此,本发明的一个或多个方面可呈完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或组合软件与硬件方面的实施例的形式,这些实施例在本文中通常都可被称为“电路”、“模块”或“系统”。此外,本发明的一个或多个方面可呈体现于具有体现于其上的计算机可读代码的一个或多个计算机可读介质中的计算机程序产品的形式。
可利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读存储介质。举例而言,计算机可读存储介质可为(但不限于)电子、磁、光学、电磁、红外线或半导体系统、装置或设备或前述各者的任何合适组合。计算机可读存储介质的更特定示例(非详尽清单)包括以下各者:具有一个或多个电线的电连接、携带型计算机磁片、硬碟、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或高速缓冲存储器)、光纤、携带型致密盘-只读存储器(CD-ROM)、光学存储设备、磁性存储设备或前述各者的任何合适组合。在此文件的情况下,计算机可读存储介质可为可含有或存储供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备而使用的程序的任何有形介质。
现参看图9,在一个示例中,计算机程序产品900包括(例如)一个或多个非暂时性计算机可读存储介质902以在其上存储计算机可读代码构件或逻辑904以提供及有助于本发明的一个或多个方面。
可使用适当介质(包括(但不限于)无线、有线、光纤缆线、RF等或前述各者的任何合适组合)传输体现于计算机可读介质上的代码。
可用一个或多个程序设计语言的任何组合来撰写用于进行本发明的一个或多个方面的操作的计算机代码,该一个或多个程序设计语言包括诸如Java、Smalltalk、C++或类似者的物件导向式程序设计语言及诸如“C”程序设计语言、组译程序或类似程序设计语言的习知程序性程序设计语言。代码可整体地在用户的计算机上执行、部分地在用户的计算机上执行、作为一独立套装软件而执行、部分地在用户的计算机上且部分地在一远程计算机上执行或整体地在该远程计算机或服务器上执行。在后者情形下,远程计算机可经由任何类型的网络(包括区域网络(LAN)或广域网络(WAN))连接至用户的计算机,或可进行至外部计算机的连接(例如,经由使用因特网服务提供者的因特网)。
本文中参照根据本发明的实施例的方法、装置(系统)及计算机程序产品的流程图说明和/或方块图描述本发明的一个或多个方面。应理解,可由计算机程序指令来实施流程图说明和/或方块图的每一区块及这些流程图说明和/或方块图中的区块的组合。可将这些计算机程序指令提供至通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由该计算机或其他可编程数据处理装置的处理器执行的指令创建用于实施该或这些流程图和/或方块图区块中所指定的功能/动作的构件。
这些计算机程序指令也可存储在计算机可读介质中,其可指导计算机、其他可编程数据处理装置或其他设备以特定方式起作用,使得存储在该计算机可读介质中的指令产生一制品,该制品包括实施该或这些流程图和/或方块图方块中所指定的功能/动作的指令。
这些计算机程序指令也可载入至计算机、其他可编程数据处理装置或其他设备上以使一系列操作步骤在该计算机、其他可编程装置或其他设备上执行以产生计算机实施的程序,使得在该计算机或其他可编程装置上执行的指令提供用于实施该或这些流程图和/或方块图区块中所指定的功能/动作的程序。
这些图中的流程图及方块图说明根据本发明的一个或多个方面的各种实施例的系统、方法及计算机程序产品的可能实施的架构、功能性及操作。在此方面,流程图或方块图中的每一区块可表示模块、区段或代码的部分,其包含用于实施指定逻辑功能的一个或多个可执行指令。还应注意,在一些替代实施中,在区块中提到的功能可能不按图中所提到的顺序而发生。举例而言,实际上可实质上同时执行连续展示的两个区块,或有时可取决于所涉及饿功能性以相反顺序执行这些区块。还应注意,方块图和/或流程图说明的每一区块及方块图和/或流程图说明中的区块的组合可由执行指定功能或动作的基于专用硬件的系统或专用硬件与计算机指令的组合来实施。
除上之外,本发明的一个或多个方面可由提出客户环境的管理的服务提供者提供、提出、部署、管理、服务等。举例而言,服务提供者可为一个或多个客户创建、维持、支持等执行本发明的一个或多个方面的计算机代码和/或计算机基础结构。作为回报,作为示例,服务提供者可在订用和/或收费协议下从客户收取付款。另外或替代地,服务提供者可从广告内容销售至一个或多个第三方而收取付款。
在本发明的一个方面中,可部署一种用于执行本发明的一个或多个方面的应用程序。作为一个示例,应用程序的部署包含提供可操作以执行本发明的一个或多个方面的计算机基础结构。
作为本发明的又一个方面,可部署计算基础结构,其包含将计算机可读代码整合至计算系统内,其中与该计算系统组合的代码能够执行本发明的一个或多个方面。
作为本发明的又一个方面,可提供一种用于整合计算基础结构的程序,其包含将计算机可读代码整合至计算机系统内。计算机系统包含计算机可读介质,其中计算机介质包含本发明的一个或多个方面。与该计算机系统组合的代码能够执行本发明的一个或多个方面。
虽然以上描述了各种实施例,但这些实施例仅为示例。举例而言,其他架构的计算环境可并有及使用本发明的一个或多个方面。另外,虽然描述了某些字段和/或位,但也可使用其他。另外,流程图的一些步骤可并行地或按不同顺序执行。在不脱离本发明的精神的情况下,可进行许多改变和/或添加。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为一示例,适合于存储和/或执行代码的数据处理系统为可使用的,其包括经由系统总线直接或间接耦接至存储器元件的至少两个处理器。这些存储器元件包括(例如)在代码的实际执行期间使用的局部存储器、大容量存储器及高速缓冲存储器,高速缓冲存储器提供至少一些代码的临时存储以便减少在执行期间必须从大容量存储器提取代码的次数。
输入/输出或I/O设备(包括但不限于键盘、显示器、指标设备、DASD、磁带、CD、DVD、随身碟及其他存储器介质等)可直接或经由介入的I/O控制器而耦接至系统。网络适配器也可耦接至系统以使数据处理系统能够经由介入私用或公用网络而变得耦接至其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器及乙太网卡仅为可用类型网络适配器中的少数几种。
以下描述可并有和/或使用本发明的一个或多个方面的计算环境的其他示例。
参看图10,描绘实施本发明的一个或多个方面的主机计算机系统5000的代表性组件。代表性主机计算机5000包含与计算机存储器(也就是说,中央存储器)5002通信的一个或多个CPU5001,以及用于与其他计算机或SAN及类似者通信的至存储介质设备5011及网络5010的I/O接口。CPU5001顺应具有架构化的指令集及架构化的功能性的架构。CPU5001可具有用于将程序地址(虚拟地址)转变成存储器的真实地址的动态地址转译(DAT)5003。DAT通常包括用于高速缓存转译以使得对计算机存储器5002的区块的稍后存取不需要延迟地址转译的转译后援缓冲器(TLB)5007。通常,高速缓冲存储器5009用于计算机存储器5002与处理器5001之间。高速缓冲存储器5009可为阶层式,其具有一个以上CPU可用的大的高速缓冲存储器及在大高速缓冲存储器与每一CPU之间的较小、较快(较低层级)高速缓冲存储器。在一些实施中,较低层级高速缓冲存储器分裂以提供用于指令提取及数据存取的分开的低层级高速缓冲存储器。在一个实施例中,指令由指令提取单元5004经由高速缓冲存储器5009从存储器5002提取。指令在指令解码单元5006中经解码,且经调度(在一些实施例中,通过其他指令)至一个或多个指令执行单元5008。通常使用若干指令执行单元5008,例如,算术执行单元、浮点执行单元及分支指令执行单元。指令由执行单元执行,按需要从指令指定寄存器或存储器存取操作数。如果要从存储器5002存取(载入或存储)操作数,则载入/存储单元5005通常在正被执行的指令的控制下处理存取。可在硬件电路中或在内部微代码(固件)中或由两者的组合来执行指令。
如所指出,计算机系统包括在本地(或主)存储器中的信息,以及寻址、保护及参考及改变记录。寻址的一些方面包括地址的格式、地址空间的概念、各种地址类型及将一个类型的地址转译至另一类型的地址的方式。主存储器中的一些包括永久指派的存储位置。主存储器给系统提供数据的直接可寻址快速存取存储。数据及程序两者在可经处理前被载入至主存储器(从输入设备)。
主存储器可包括一个或多个较小、快速存取缓冲器存储器,有时称为高速缓冲存储器。高速缓冲存储器通常与CPU或I/O处理器实体相关联。截然不同的存储介质的实体构造及用途的效应(除了对性能外)通常不可由程序观测。
可针对指令与针对数据操作数维持分开的高速缓冲存储器。高速缓冲存储器内的信息按邻近字节维持于称为快取区块或快取行(或简称为行)的整数边界上。模型可提供EXTRACT CACHE ATTRIBUTE指令,其按字节返回快取行的大小。模型还可提供PREFETCHDATA及PREFETCH DATA RELATIVE LONG指令,其实现存储器至数据或指令高速缓冲存储器内的预提取或数据从高速缓冲存储器的释放。
将存储器看作长的水平位串。对于多数操作,对存储器的存取按从左至右序列进行。将该位串细分成八个位的单元。八位单元称为字节,其为所有信息格式的基础建置区块。存储器中的每一字节位置由唯一非负整数识别,该唯一非负整数为该字节位置的地址或简称为字节地址。邻近字节位置具有连续地址,其开始于左边的0且按从左至右序列进行。地址为不带符号的二进制整数,且为24、31或64个位。
在存储器与CPU或通道子系统之间一次一个字节或一组字节地传输信息。除非另有指定,否则,在(例如)中,存储器中的一组字节由该群的最左边字节寻址。该群中的字节的编号经暗示或由待执行的操作明确指定。当在CPU操作中使用时,一组字节称为字段。在每一组字节内,在(例如)中,按从左至右序列对位编号。在中,最左边位有时被称为“高阶”位,且最右边位有时被称为“低阶”位。然而,位编号并非存储地址。可仅寻址字节。为了对存储器中的字节的个别位操作,存取整个字节。字节中的位从左至右编号为0至7(例如,在中)。对于24位地址,地址中的位可编号为8-31或40-63,或对于31位地址,编号为1-31或33-63;对于64位地址,其编号为0-63。在多个字节的任一其他固定长度格式内,构成该格式的位从0开始连续编号。为了错误检测的目的,且优选地为了校正,可通过每一字节或通过一组字节来传输一个或多个检查位。这些检查位由机器自动产生,且可不直接由程序控制。按字节的数目来表达存储容量。当存储操作数字段的长度由指令的操作代码暗示时,将该字段认为具有固定长度,其可为一个、两个、四个、八个或十六个字节。对于一些指令,可暗示较大字段。当存储操作数字段的长度未暗示而明确叙述时,将该字段认为具有可变长度。可变长度操作数可在长度上按一个字节的增量变化(或在一些指令的情况下,按两个字节的倍数或其他倍数变化)。当将信息放置在存储器中时,替代仅包括于指定的字段中的那些字节位置的内容,即使物理路径至存储器的宽度可能大于正存储的字段的长度。
某些信息单元将在存储器中的整数边界上。对于信息单元,当其存储地址为该单元的长度(以字节为单位)的倍数时,将边界称为整数。对整数边界上的2、4、8及16个字节的字段给予特殊名称。半字为在两字节边界上的两个连续字节的组,且为指令的基础建置区块。字为四字节边界上的四个连续字节的组。双字为八字节边界上的八个连续字节的组。四倍字为16字节边界上的16个连续字节的组。当存储器地址指定半字、字、双字及四倍字时,地址的二进制表示分别含有一个、两个、三个或四个最右边的零位。指令将在两字节整数边界上。多数指令的存储操作数不具有边界对准要求。
在针对指令及数据操作数实施分开的高速缓冲存储器的设备上,如果程序存储至指令随后所提取自的快取行中,则可经历显著延迟,而与存储器是否更改随后提取的指令无关。
在一个实施例中,本发明可通过软件(有时被称为授权的内部代码、固件、微代码、毫代码、微微代码及类似者,其中的任一个将与本发明的一个或多个方面一致)来实践。参看图10,体现本发明的一个或多个方面的软件代码可由主机系统5000的处理器5001从长期存储介质设备5011(诸如,CD-ROM驱动器、磁带驱动器或硬驱动器)存取。软件代码可体现于各种各样的已知介质中的任一个上,用于供数据处理系统(诸如,磁片、硬驱动器或CD-ROM)使用。代码可分布于这些介质上,或可分布至用户,在网络5010上从计算机存储器5002或一个计算机系统的存储器至其他计算机系统,供由这些其他系统的用户使用。
软件代码包括操作系统,其控制各种计算机组件及一个或多个应用程序的功能及交互。通常将代码从存储介质设备5011分页至相对较高速计算机存储器5002,在该相对较高速计算机存储器5002处,代码可用于由处理器5001处理。用于在存储器中、在实体介质上体现软件代码和/或经由网络分布软件代码的技术及方法是熟知的,且将不在本文中作进一步论述。代码当在有形介质(包括(但不限于)电子存储器模块(RAM)、高速缓冲存储器、致密盘(CD)、DVD、磁带及类似者)上创建及存储时常被称为“计算机程序产品”。计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取,用于由处理电路执行。
图11说明可实践本发明的一个或多个方面的代表性工作站或服务器硬件系统。图11的系统5020包含代表性基本计算机系统5021(诸如,个人计算机、工作站或服务器),包括可选外围设备。根据已知技术,基本计算机系统5021包括一个或多个处理器5026,及用于连接处理器5026与系统5021的其他组件及实现处理器5026与系统5021的其他组件之间的通信的总线。总线将处理器5026连接至存储器5025及长期存储器5027,长期存储器5027可包括(例如)硬驱动器(例如包括磁性介质、CD、DVD及高速缓冲存储器中的任一个)或磁带驱动器。系统5021也可包括用户接口适配器,用户接口适配器经由总线将微处理器5026连接至一个或多个接口设备,诸如,键盘5024、鼠标5023、打印机/扫描仪5030和/或可为诸如触敏式屏幕、数字化的输入板等任何用户接口设备的其他接口设备。总线也经由显示器适配器将诸如LCD屏幕或监视器的显示设备5022连接至微处理器5026。
系统5021可通过能够与网络5029通信5028的网络适配器而与其他计算机或计算机网络通信。示例网络适配器为通信通道、令牌环、乙太网络或调制解调器。替代地,系统5021可使用诸如CDPD(蜂窝数字封包数据)卡的无线接口通信。系统5021可与区域网络(LAN)或广域网络(WAN)中的这样的其他计算机相关联,或系统5021可为具有另一计算机的客户端/服务器配置中的客户端等。所有这些配置以及适当通信硬件及软件在本领域中为已知的。
图12说明可实践本发明的一个或多个方面的数据处理网络5040。数据处理网络5040可包括多个个别网络(诸如,无线网络及有线网络),其中的每一个可包括多个个别工作站5041、5042、5043、5044。另外,如本领域的技术人员将了解,可包括一个或多个LAN,其中LAN可包含耦接至主机处理器的多个智能工作站。
仍参看图12,网络也可包括大型计算机或服务器,诸如,网关计算机(客户端服务器5046)或应用服务器(远程服务器5048,其可存取数据存储库且也可从工作站5045直接存取)。网关计算机5046充当至每一个别网络的输入点。当将网络连接协议连接至另一网络连接协议时,需要网关。网关5046可优选地通过通信链路耦接至另一网络(例如,因特网5047)。也可使用通信链路将网关5046直接耦接至一个或多个工作站5041、5042、5043、5044。可利用可购自国际商业机器公司的IBM eServerTM 服务器来实施网关计算机。
同时参看图11及图12,可体现本发明的一个或多个方面的软件编程代码可由系统5020的处理器5026从长期存储介质5027(诸如,CD-ROM驱动器或硬驱动器)存取。软件编程代码可体现于各种各样的已知介质中的任一个上,用于供数据处理系统(诸如,磁片、硬驱动器或CD-ROM)使用。代码可分布于这些介质上,或可分布至用户5050、5051,在网络上从一个计算机系统的存储器或存储器至其他计算机系统,用于由这些其他系统的用户使用。
替代地,编程代码可体现于存储器5025中,且由处理器5026使用处理器总线存取。此编程代码包括操作系统,其控制各种计算机组件及一个或多个应用程序5032的功能及交互。代码通常从存储介质5027分页至高速存储器5025,在高速存储器5025处,其可用于由处理器5026处理。用于在存储器中、在实体介质上体现软件编程代码和/或经由网络分布软件代码的技术及方法是熟知的且将不在本文中作进一步论述。代码当在有形介质(包括(但不限于)电子存储器模块(RAM)、闪速存储器、致密盘(CD)、DVD、磁带及类似者)上创建及存储时常被称为“计算机程序产品”。计算机程序产品介质通常可由优选地在计算机系统中的处理电路读取,用于由处理电路执行。
最易于可用于处理器的高速缓冲存储器(通常比处理器的其他高速缓冲存储器快且小)为最低(L1或层级一)高速缓冲存储器,且主存储器(主存储器)为最高层级高速缓冲存储器(如果存在3个层级,则为L3)。最低层级高速缓冲存储器常被分成保持待执行的机器指令的指令高速缓冲存储器(I-Cache)及保持数据操作数的数据高速缓冲存储器(D-Cache)。
参看图13,针对处理器5026描绘示例性处理器实施例。通常,使用高速缓冲存储器5053的一或多层级来缓冲存储器区块以便改良处理器性能。高速缓冲存储器5053为保持有可能使用的存储器数据的快取行的高速缓冲器。典型的快取行为存储器数据的64、128或256个字节。常将与用于快取数据分开的高速缓冲存储器用于快取指令。快取连贯性(存储器及高速缓冲存储器中的行的复本的同步)常由本领域熟知的各种“窥探”算法来提供。处理器系统的主存储器存储器5025常被称为高速缓冲存储器。在具有高速缓冲存储器5053的4个层级的处理器系统中,主存储器5025有时被称为层级5(L5)高速缓冲存储器,这是因为其通常较快且仅保持可用于计算机系统的非易失性存储器(DASD、磁带等)的一部分。主存储器5025“快取”由操作系统在主存储器5025中及之外分页的数据页。
程序计数器(指令计数器)5061追踪待执行的当前指令的地址。处理器中的程序计数器为64个位,且可截短至31或24个位以支持先前寻址限制。程序计数器通常体现于计算机的PSW(程序状态字)中,使得其在上下文切换期间持续。因此,具有程序计数器值的进行中的程序可由(例如)操作系统中断(从程序环境至操作系统环境的上下文切换)。程序的PSW在程序不在作用中时维持程序计数器值,且在操作系统正执行时使用操作系统的程序计数器(在PSW中)。通常,程序计数器按等于当前指令的字节数目的量来增加。RISC(精简指令集计算)指令通常为固定长度,而CISC(复杂指令集计算)指令通常为可变长度。IBM的指令为具有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。参看图14A,执行单元5057可通过接口连接逻辑5071与架构化的通用寄存器5059、解码/调度单元5056、载入存储单元5060及其他5065处理器单元通信。执行单元5057可使用若干寄存器电路5067、5068、5069来保持算术逻辑单元(ALU)5066将对的操作的信息。ALU执行算术运算(诸如,加、减、乘及除)以及逻辑函数(诸如,“和”、“或”及“互斥或(XOR)”、旋转及位移)。优选地,ALU支持与设计有关的专业化运算。其他电路可提供其他架构化的设施5072,包括(例如)条件码及恢复支持逻辑。通常,将ALU运算的结果保持于输出寄存器电路5070中,输出寄存器电路5070可将结果转递至各种各样的其他处理功能。存在处理器单元的许多配置,本描述仅意欲提供一个实施例的代表性理解。
ADD指令(例如)将在具有算术及逻辑功能性的执行单元5057中执行,而浮点指令(例如)将在具有专业化的浮点能力的浮点执行中执行。优选地,执行单元通过对操作数执行操作码定义功能而对由指令识别的操作数操作。举例而言,ADD指令可由执行单元5057对在由指令的寄存器字段识别的两个寄存器5059中发现的操作数执行。
执行单元5057对两个操作数执行算术加法,且将结果存储在第三操作数中,其中第三操作数可为第三寄存器或两个源寄存器之一。执行单元优选地利用能够执行各种各样的逻辑函数(诸如,位移、旋转、和(And)、或(Or)及XOR)以及各种各样的代数函数(包括加、减、乘、除中的任一个)的算术逻辑单元(ALU)5066。一些ALU5066经设计用于标量运算且一些用于浮点。取决于架构,数据可为大端序(Big Endian)(其中最低有效字节处于最高字节地址)或小端序(Little Endian)(其中最低有效字节处于最低字节地址)。IBM为大端序。取决于架构,带符号的字段可为符号及量值、1的补数或2的补数。2的补数是有利的,因为ALU不需要设计减能力,这是由于在ALU内,2的补数中的负值或正值仅需要加。通常按速记法描述数,其中12位字段定义4,096字节区块的地址,且通常描述为(例如)4Kbyte(千字节)区块。
参看图14B,用于执行分支指令的分支指令信息通常发送至分支单元5058,分支单元5058常在其他条件运算完成前使用分支预测演算法(诸如,分支历史表5082)来预测分支的结果。当前分支指令的目标将在条件运算完成前经提取且推测性地执行。当完成条件运算时,基于条件运算的条件及推测的结果来完成或丢弃推测性执行的分支指令。如果条件码符合分支指令的分支要求,则典型分支指令可测试至目标地址的条件码及分支,可基于若干个数(例如,包括在寄存器字段或指令的立即字段中发现的数)来计算目标地址。分支单元5058可使用具有多个输入寄存器电路5075、5076、5077及一输出寄存器电路5080的ALU5074。举例而言,分支单元5058可与通用寄存器5059、解码调度单元5056或其他电路5073通信。
可因包括(例如)以下各种各样的原因而中断一组指令的执行:由操作系统起始的上下文切换、造成上下文切换的程序例外状况或错误、造成上下文切换的I/O中断信号或多个程序的多线程活动(在多线程环境中)。优选地,上下文切换动作存储关于当前执行的程序的状态信息,且接着载入关于正调用的另一程序的状态信息。举例而言,状态信息可存储在硬件寄存器中或存储器中。状态信息优选地包含程序计数器值,该程序计数器值指向待执行的下一指令、条件码、存储器转译信息及架构化的寄存器内容。上下文切换活动可由硬件电路、应用程序、操作系统程序或固件代码(微代码、微微代码或授权的内部代码(LIC))单独或组合地练习。
处理器根据指令定义方法来存取操作数。指令可使用指令的一部分的值提供立即操作数,可提供明确指向通用寄存器或专用寄存器(例如,浮点寄存器)的一个或多个寄存器字段。指令可利用由操作码字段识别的暗示的寄存器作为操作数。指令可利用用于操作数的存储器位置。操作数的存储器位置可由寄存器、立即字段或寄存器与立即字段的组合提供,如由长位移设施举例说明,其中指令定义(例如)加在一起提供操作数在存储器中的位置的基底寄存器、索引寄存器及立即字段(位移字段)。本文中的位置通常暗示主存储器(主存储器)中的位置,除非另有指示。
参看图14C,处理器使用载入/存储单元5060来存取存储器。载入/存储单元5060可通过获得目标操作数在存储器5053中的地址且在寄存器5059或另存储器5053位置中载入操作数来执行载入操作,或可通过获得目标操作数在存储器5053中的地址且将从寄存器5059或另存储器5053位置获得的数据存储在存储器5053中的目标操作数位置中来执行存储操作。载入/存储单元5060可为推测性的,且可按无序(相对于指令序列)的序列存取存储器,然而载入/存储单元5060将维持按次序执行指令的程序的外观。载入/存储单元5060可与通用寄存器5059、解码/调度单元5056、高速缓冲存储器/存储器接口5053或其他元件5083通信,且包含各种寄存器电路、ALU5085及控制逻辑5090以计算存储位置及提供管线定序以使操作按次序。一些操作可能无序,但载入/存储单元提供使无序操作对程序显得为已按次序执行的功能性,如在本领域中所熟知。
优选地,应用程序“看到”的地址常被称为虚拟地址。虚拟地址有时被称为“逻辑地址”及“有效地址”。这些虚拟地址为虚拟的,因为通过各种各样的动态地址转译(DAT)技术之一将其重定向至实体存储器位置,这些技术包括(但不限于)仅对具有偏移值的虚拟地址加首码、经由一个或多个转译表转译虚拟地址,转译表优选地单独或组合地包含至少一区段表及一页表,优选地,区段表具有指向页表的项。在中,提供转译的阶层,包括区域第一表、区域第二表、区域第三表、区段表及可选页表。常通过利用转译后援缓冲器(TLB)(其包含将虚拟地址映射至相关联的实体存储器位置的项)来改良地址转译的性能。当DAT使用转译表转译虚拟地址时,创建这些项。虚拟地址的随后使用可接着利用快速TLB的项,而非慢顺序转换表存取。可通过包括LRU(最近最少使用)的各种各样的替代演算法来管理TLB内容。
在处理器为多处理器系统的处理器的情况下,每处理器具有保持共用的信息(诸如,I/O、高速缓冲存储器、TLB及存储器)为了一致性而连锁的责任。通常,在维持高速缓冲存储器一致性过程中将利用“窥探”技术。在窥探环境中,将每一快取行标记为处于共用状态、互斥状态、改变状态、无效状态及类似者中的任一个下以便有助于共用。
I/O单元5054(图13)给处理器提供用于附接至外围设备(例如,包括磁带、碟、打印机、显示器及网络)的方式。I/O单元常由软件驱动器呈现至计算机程序。在大型计算机(诸如,来自)中,通道适配器及开放系统适配器为大型计算机的I/O单元,这些I/O单元提供操作系统与外围设备之间的通信。
另外,其他类型的计算环境可受益于本发明的一个或多个方面。作为一示例,如本文中所提及,环境可包括模拟器(例如,软件或其他模拟机制),其中模拟特定架构(包括(例如)指令执行、架构化的功能(诸如,地址转译)及架构化的寄存器)或其一子集(例如,在具有处理器及存储器的原生计算机系统上)。在此环境中,模拟器的一个或多个模拟功能可实施本发明的一个或多个方面,即使执行该模拟器的计算机可具有与正模拟的能力不同的架构。作为一个示例,在模拟模式下,解码特定指令或正模拟的操作,且适当模拟功能经建置以实施个别指令或操作。
在模拟环境中,主机计算机包括(例如):存储器,其存储指令及数据;指令获取单元,其从存储器获取指令,且视情况,提供获取的指令的局部缓冲;指令解码单元,其接收获取的指令且判定已经获取的指令的类型;及指令执行单元,其执行这些指令。执行可包括将数据从存储器载入至寄存器中;将数据从寄存器存储回至存储器;或执行某一类型的算术或逻辑运算(如由解码单元判定)。在一个示例中,以软件来实施每一单元。举例而言,正由这些单元执行的操作经实施为模拟器软件内的一个或多个次例程。
更明确而言,在大型计算机中,架构化的机器指令由程序员(现今通常为“C”程序员)常通过编译应用程序来使用。存储在存储介质中的这些指令可原生地在服务器中或者在执行其他架构的机器中执行。可在现有及未来大型计算机服务器中及在的其他机器(例如,Power Systems服务器及服务器)上将其模拟。可在于使用由 AMDTM及其他者制造的硬件的广泛的各种各样的机器上执行Linux的机器中执行这些指令。除了在下在该硬件上执行外,也可使用Linux,以及使用由Hercules、UMX或FSI(FundamentalSoftware,Inc)进行的模拟的机器,在该情况下,通常执行处于模拟模式下。在模拟模式下,模拟软件由原生处理器执行以模拟经模拟的处理器的架构。
原生处理器通常执行包含固件或原生操作系统的模拟软件以执行经模拟的处理器的模拟。模拟软件负责提取及执行经模拟的处理器架构的指令。模拟软件维持经模拟的程序计数器以追踪指令边界。模拟软件可一次提取一个或多个经模拟的机器指令,且将该一个或多个经模拟的机器指令转换为对应的一组原生机器指令,用于由原生处理器执行。可快取这些经转换的指令,使得可实现较快速转换。尽管模拟软件将维持经模拟的处理器架构的架构规则以便确保操作系统及针对经模拟的处理器撰写的应用程序正确地操作。此外,模拟软件将提供由经模拟的处理器架构(包括(但不限于)控制寄存器、通用寄存器、浮点寄存器、包括(例如)区段表及页表的动态地址转译功能、中断机制、上下文切换机制、日历(TOD)时钟及至I/O子系统的架构化的接口)识别的资源,使得操作系统或经设计以在经模拟的处理器上执行的应用程序可在具有模拟软件的原生处理器上执行。
解码正被模拟的特定指令,且调用次例程以执行个别指令的功能。模拟经模拟的处理器的功能的模拟软件功能实施(例如)于“C”次例程或驱动例程中,或在理解较佳实施例的描述后,提供用于特定硬件的驱动器额某一其他方法将在本领域的技术人员的技术内。包括(但不限于)以下各者的各种软件及硬件模拟专利说明用于达成针对用于可用于本领域的技术人员的目标机器的不同机器而架构化的指令格式的模拟的各种各样的已知方式:Beausoleil等人的题为“Multiprocessor for Hardware Emulation”的美国专利证书第5,551,013号;及Scalzi等人的题为“Preprocessing of Stored Target Routines forEmulating Incompatible 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 and Chipset Usedfor Coprocessor Support Allowing Non-Native Code to Run in a System”的美国专利证书第6,308,255号;及Lethin等人的题为“Dynamic Optimizing Object CodeTranslator for Architecture Emulation and Dynamic Optimizing Object CodeTranslation Method”的美国专利证书第6,463,582号;及Eric Traut的题为“Method forEmulating Guest Instructions on a Host Computer Through Dynamic Recompilationof Host Instructions”的美国专利证书第5,790,825号(这些专利案中的每一个在此以引用的方式全部并入本文中);及许多其他者。
在图15中,提供经模拟的主机计算机系统5092的示例,其模拟主机架构的主机计算机系统5000'。在经模拟的主机计算机系统5092中,主机处理器(CPU)5091为经模拟的主机处理器(或虚拟主机处理器),且包含模拟处理器5093,模拟处理器5093具有与主机计算机系统5000'的处理器5091的指令集架构不同的原生指令集架构。经模拟的主机计算机系统5092具有可为模拟处理器5093存取的存储器5094。在示例实施例中,将存储器5094分割为主机计算机存储器5096部分及模拟例程5097部分。根据主机计算机架构,主机计算机存储器5096可用于经模拟的主机计算机5092的程序。模拟处理器5093执行架构的架构化的指令集的原生指令,这些原生指令不同于经模拟的处理器5091的原生指令,这些原生指令是从模拟例程存储器5097获得,且可通过使用在序列及存取/解码例程中获得的一个或多个指令而从主机计算机存储器5096中的程序存取用于执行的主机指令,序列及存取/解码例程可解码经存取的主机指令以判定用于模拟经存取的主机指令的功能的原生指令执行例程。针对主机计算机系统5000'架构定义的其他设施可由架构化的设施例程模拟,这些其他设施包括诸如通用寄存器、控制寄存器、动态地址转译及I/O子系统支持及处理器高速缓冲存储器的设施。模拟例程也可利用可用于模拟处理器5093中的功能(诸如,通用寄存器及虚拟地址的动态转译)以改良模拟例程的性能。也可提供特殊硬件及卸载引擎以辅助处理器5093模拟主机计算机5000'的功能。
本文中使用的术语仅是用于描述特定实施例的目的,且并不意欲限制本发明。如本文中所使用,单数形式“一”及“该”意欲也包括复数形式,除非上下文另有清晰指示。应进一步理解,当术语“包含”用于本说明书中时,其指定所述特征、整体、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或其群的存在或添加。
以下申请专利范围中的所有构件或步骤加功能元件的对应结构、材料、动作及等效物(如果有)意欲包括用于连同如具体主张的其他所主张元件一起执行功能的任何结构、材料或动作。本发明的一个或多个方面的描述已经呈现以用于达成说明及描述的目的,但其并不意欲为详尽的或限于所公开的形式下的本发明。在不脱离本发明的范围及精神的情况下,许多修改及变化对于一般本领域的技术人员将显而易见。选择并描述了实施例以便最佳地解释本发明的原理及实务应用,且使其他一般本领域的技术人员能够针对具有适合于所预期的特定用途的各种修改的各种实施例来理解本发明。

Claims (10)

1.一种用于在中央处理单元中执行机器指令的计算机系统,该计算机系统包含:
存储器;以及
处理器,其与该存储器通信,其中该计算机系统配置为执行一种方法,该方法包含:
获得用于执行的机器指令,该机器指令根据计算机架构定义用于计算机执行,该机器指令包含:
至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数;
第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数;
第二寄存器字段和位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及
掩码字段,该掩码字段包含在该机器指令的执行期间使用的一个或多个控制;并且
执行该机器指令,该执行包含:
将十进制浮点格式的该第一操作数的至少一部分转换为区位格式,其中所述转换包括:将十进制浮点格式的该第一操作数的最右边有效数数位的指定数及该第一操作数的符号位转换为区位格式;以及
将该转换的结果放置在由该第二操作数的该地址指定的位置处。
2.如权利要求1所述的计算机系统,其中该掩码字段包含符号控制,其用于指示该第二操作数具有符号字段。
3.如权利要求1所述的计算机系统,其中该掩码字段包含区位控制,其用于确定该第二操作数的区位字段的值。
4.如权利要求1所述的计算机系统,其中该掩码字段包含加号代码控制,其用于编码加号。
5.如权利要求1所述的计算机系统,其中该掩码字段包含强迫加零控制,其用于确定放置在该第二操作数中的结果的符号。
6.如权利要求1所述的计算机系统,其中该掩码字段包含区位字段和符号字段,并且其中该方法进一步包含使用该区位字段和该符号字段中的至少一个以确定该符号字段及存储在该第二操作数中的该结果的字段代码中的至少一个的值。
7.如权利要求1所述的计算机系统,其中该机器指令包含长度字段,其指定要转换的该第一操作数的最右边有效数数位的数目和该第二操作数的长度中的至少一个。
8.一种用于在中央处理单元中执行机器指令的方法,该方法包含:
由处理器获得用于执行的机器指令,该机器指令根据计算机架构定义用于计算机执行,该机器指令包含:
至少一个操作码字段,其用于提供操作码,该操作码识别从十进制浮点转换为区位函数;
第一寄存器字段,其指定第一寄存器,该第一寄存器包含第一操作数;
第二寄存器字段和位移字段,其中由该第二寄存器字段指定的第二寄存器的内容与该位移字段的内容组合以形成第二操作数的地址;以及
掩码字段,该掩码字段包含在该机器指令的执行期间使用的一个或多个控制;并且
执行该机器指令,该执行包含:
将十进制浮点格式的该第一操作数的至少一部分转换为区位格式,其中所述转换包括:将十进制浮点格式的该第一操作数的最右边有效数数位的指定数及该第一操作数的符号位转换为区位格式;以及
将该转换的结果放置在由该第二操作数的该地址指定的位置处。
9.如权利要求8的方法,其中该掩码字段包含用于指示该第二操作数是否具有符号字段的符号控制、用于确定该第二操作数的区位字段的值的区位控制、用于编码加号的加号代码控制以及用于确定放置在该第二操作数中的结果的符号的强迫加零控制。
10.如权利要求8的方法,其中该机器指令包含长度字段,其指定要转换的该第一操作数的最右边有效数数位的数目和该第二操作数的长度中的至少一个。
CN201280065483.2A 2011-12-29 2012-11-13 从十进制浮点格式转换为区位格式 Active CN104025043B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/339,526 2011-12-29
US13/339,526 US9329861B2 (en) 2011-12-29 2011-12-29 Convert to zoned format from decimal floating point format
PCT/IB2012/056368 WO2013098668A1 (en) 2011-12-29 2012-11-13 Convert to zoned format from decimal floating point format

Publications (2)

Publication Number Publication Date
CN104025043A CN104025043A (zh) 2014-09-03
CN104025043B true CN104025043B (zh) 2016-09-14

Family

ID=48695919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280065483.2A Active CN104025043B (zh) 2011-12-29 2012-11-13 从十进制浮点格式转换为区位格式

Country Status (16)

Country Link
US (4) US9329861B2 (zh)
EP (1) EP2798482A4 (zh)
JP (1) JP6115920B2 (zh)
KR (1) KR101589840B1 (zh)
CN (1) CN104025043B (zh)
AU (1) AU2012360180B2 (zh)
BR (1) BR112014016333A8 (zh)
CA (1) CA2852861C (zh)
HK (1) HK1201351A1 (zh)
IL (1) IL230465A0 (zh)
MX (1) MX2014007915A (zh)
RU (1) RU2560796C2 (zh)
SG (1) SG11201402088PA (zh)
TW (1) TWI522906B (zh)
WO (1) WO2013098668A1 (zh)
ZA (1) ZA201400734B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9329861B2 (en) 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
US9335993B2 (en) 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US20160092163A1 (en) * 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting from decimal floating point format to packed decimal format
US10255072B2 (en) * 2016-07-01 2019-04-09 Intel Corporation Architectural register replacement for instructions that use multiple architectural registers
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10592208B2 (en) * 2018-05-07 2020-03-17 International Business Machines Corporation Very low precision floating point representation for deep learning acceleration
US10963219B2 (en) 2019-02-06 2021-03-30 International Business Machines Corporation Hybrid floating point representation for deep learning acceleration
US11099853B2 (en) 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check control in instruction execution
US11023205B2 (en) * 2019-02-15 2021-06-01 International Business Machines Corporation Negative zero control in instruction execution
CN110688156B (zh) * 2019-09-12 2021-02-02 无锡江南计算技术研究所 一种采用risc架构的cpu系统
US11442726B1 (en) 2021-02-26 2022-09-13 International Business Machines Corporation Vector pack and unpack instructions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085313A (en) * 1998-04-30 2000-07-04 International Business Machines Corporation Computer processor system for executing RXE format floating point instructions
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3872442A (en) * 1972-12-14 1975-03-18 Sperry Rand Corp System for conversion between coded byte and floating point format
US4001570A (en) 1975-06-17 1977-01-04 International Business Machines Corporation Arithmetic unit for a digital data processor
US4141005A (en) 1976-11-11 1979-02-20 International Business Machines Corporation Data format converting apparatus for use in a digital data processor
US4462102A (en) * 1981-11-13 1984-07-24 International Business Machines Corporation Method and apparatus for checking the parity of disassociated bit groups
US5276891A (en) 1990-01-11 1994-01-04 Bull Hn Information Systems Inc. Alignment of sign, data, edit byte operand results for storage in memory
GB2249319B (en) 1990-10-04 1994-11-30 Hitachi Metals Ltd R-TM-B permanent magnet member having improved corrosion resistance and method of producing same
US5268855A (en) 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
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
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
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
US6266769B1 (en) 1998-04-30 2001-07-24 Intel Corporation Conversion between packed floating point data and packed 32-bit integer data in different architectural registers
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
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
US6535898B1 (en) * 2000-01-24 2003-03-18 Microsoft Corporation Fast floating-point truncation to integer form
US6671796B1 (en) 2000-02-25 2003-12-30 Sun Microsystems, Inc. Converting an arbitrary fixed point value to a floating point value
US7006699B2 (en) * 2002-03-27 2006-02-28 Microsoft Corporation System and method for progressively transforming and coding digital data
US7236995B2 (en) 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
US7899855B2 (en) 2003-09-08 2011-03-01 Intel Corporation Method, apparatus and instructions for parallel data conversions
US7167968B2 (en) 2004-04-29 2007-01-23 International Business Machines Corporation Storage pre-alignment and EBCDIC, ASCII and unicode basic latin conversions for packed decimal data
US7389499B2 (en) 2004-10-21 2008-06-17 International Business Machines Corporation Method and apparatus for automatically converting numeric data to a processor efficient format for performing arithmetic operations
US7685213B2 (en) * 2005-03-31 2010-03-23 Siebel Systems, Inc. Conversion of floating-point numbers from binary into string format
US7685214B2 (en) * 2005-08-26 2010-03-23 International Business Machines Corporation Order-preserving encoding formats of floating-point decimal numbers for efficient value comparison
US7698352B2 (en) 2005-09-15 2010-04-13 International Business Machines Corporation System and method for converting from scaled binary coded decimal into decimal floating point
US8364734B2 (en) * 2005-09-15 2013-01-29 International Business Machines Corporation Converting from decimal floating point into scaled binary coded decimal
US7733785B2 (en) * 2007-01-31 2010-06-08 International Business Machines Corporation Method and system for dynamically adjusting packet size to decrease delays of streaming data transmissions on noisy transmission lines
US8051118B2 (en) * 2007-04-26 2011-11-01 International Business Machines Corporation Composition of decimal floating point data
US20080270495A1 (en) * 2007-04-26 2008-10-30 International Business Machines Corporation Insert/extract biased exponent of decimal floating point data
US8051117B2 (en) * 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
US8190664B2 (en) * 2007-04-26 2012-05-29 International Business Machines Corporation Employing a mask field of an instruction to encode a sign of a result of the instruction
US8392489B2 (en) * 2008-02-15 2013-03-05 International Business Machines Corporation ASCII to binary floating point conversion of decimal real numbers on a vector processor
CN100555225C (zh) * 2008-03-17 2009-10-28 中国科学院计算技术研究所 一种支持x86虚拟机的risc处理器装置及方法
US8346828B2 (en) 2008-10-14 2013-01-01 International Business Machines Corporation System and method for storing numbers in first and second formats in a register file
US7812757B1 (en) * 2009-06-12 2010-10-12 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Hybrid analog-to-digital converter (ADC) with binary-weighted-capacitor sampling array and a sub-sampling charge-redistributing array for sub-voltage generation
US20110004644A1 (en) 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control
US9311049B2 (en) 2009-12-15 2016-04-12 International Business Machines Corporation System to improve numereical conversions and associated methods
US9329861B2 (en) 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
US9335993B2 (en) 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085313A (en) * 1998-04-30 2000-07-04 International Business Machines Corporation Computer processor system for executing RXE format floating point instructions
CN102298515A (zh) * 2010-06-22 2011-12-28 国际商业机器公司 执行对两个操作数的操作并随后存储原始值的方法和系统

Also Published As

Publication number Publication date
SG11201402088PA (en) 2014-06-27
BR112014016333A8 (pt) 2017-07-04
JP2015507799A (ja) 2015-03-12
IL230465A0 (en) 2014-03-31
TW201337734A (zh) 2013-09-16
US20150089206A1 (en) 2015-03-26
MX2014007915A (es) 2014-07-30
HK1201351A1 (zh) 2015-08-28
KR101589840B1 (ko) 2016-01-28
US20130173892A1 (en) 2013-07-04
AU2012360180A1 (en) 2014-06-05
BR112014016333A2 (pt) 2017-06-13
EP2798482A1 (en) 2014-11-05
US20160210143A1 (en) 2016-07-21
US10719324B2 (en) 2020-07-21
US9335995B2 (en) 2016-05-10
KR20140098051A (ko) 2014-08-07
US20160210152A1 (en) 2016-07-21
CN104025043A (zh) 2014-09-03
AU2012360180B2 (en) 2016-04-07
RU2560796C2 (ru) 2015-08-20
EP2798482A4 (en) 2016-12-07
RU2012148405A (ru) 2014-05-20
JP6115920B2 (ja) 2017-04-19
WO2013098668A1 (en) 2013-07-04
TWI522906B (zh) 2016-02-21
CA2852861A1 (en) 2013-07-04
US9329861B2 (en) 2016-05-03
CA2852861C (en) 2019-08-13
ZA201400734B (en) 2015-10-28
US10725780B2 (en) 2020-07-28

Similar Documents

Publication Publication Date Title
CN104025043B (zh) 从十进制浮点格式转换为区位格式
TWI515654B (zh) 從區位格式轉換至十進制浮點格式
CN104937542A (zh) 向量校验和指令
CN104956364A (zh) 向量异常码
CN104169877A (zh) 将不相邻指令区分符变换为相邻指令区分符
CN104956323A (zh) 向量伽罗瓦域乘法求和与累加指令
CN104956319A (zh) 向量浮点测试数据类立即指令
CN104169907A (zh) 向量寻找元素相等指令
CN104937538A (zh) 向量生成掩码指令
CN104169906A (zh) 向量寻找元素不相等指令
CN104937543A (zh) 向量元素旋转和掩码下插入指令
Pyeatt Modern assembly language programming with the ARM processor

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: 1201351

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1201351

Country of ref document: HK