MX2014007915A - Metodo para convertir a formato zonificado a partir de formato de punto flotante decimal. - Google Patents

Metodo para convertir a formato zonificado a partir de formato de punto flotante decimal.

Info

Publication number
MX2014007915A
MX2014007915A MX2014007915A MX2014007915A MX2014007915A MX 2014007915 A MX2014007915 A MX 2014007915A MX 2014007915 A MX2014007915 A MX 2014007915A MX 2014007915 A MX2014007915 A MX 2014007915A MX 2014007915 A MX2014007915 A MX 2014007915A
Authority
MX
Mexico
Prior art keywords
field
operand
sign
instruction
computer
Prior art date
Application number
MX2014007915A
Other languages
English (en)
Inventor
Reid Copeland
Timothy Slegel
Marcel Mitran
Steven Carlough
Eric Mark Schwarz
Charles Gainey Jr
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of MX2014007915A publication Critical patent/MX2014007915A/es

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)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Nonlinear Science (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Se proveen instrucciones de máquina, referidas en la presente como instrucción de convertir de zonificado larga (CDZT) e instrucción de convertir de zonificado extendida (CXZT), que leen datos de EBCDIC o ASCII de memoria, convertirlos al formato de punto flotante decimal apropiado y escribirlos a un registro de punto flotante objetivo o par de registros de punto flotante objetivos. Además, se proveen instrucciones de máquina, referidas en la presente como instrucción de convertir a zonificado larga (CZDT) e instrucción de convertir a zonificado extendida (CZXT), que convierten un operando de punto flotante decimal (DFP) en un registro de punto flotante fuente o par de registros de punto flotante fuentes a datos de EBCDIC o ASCII y almacenarlos a un sitio de memoria objetivo.

Description

METODO PARA CONVERTIR A FORMATO ZONIFICADO A PARTIR DE FORMATO DE PUNTO FLOTANTE DECIMAL ANTECEDENTES DE LA INVENCION Un aspecto de la presente invención es concerniente en general con el procesamiento dentro de un medio ambiente de cómputo y en particular con la conversión de datos de un formato a otro formato.
Los datos pueden ser almacenados en almacenamiento de computadora externo o almacenamiento externo en una diversidad de formatos diferentes, incluyendo en Intercambio Decimal Codificado Binario Extendido (EBCDIC) , Estándar Estadounidense para Intercambio de Información (ASCII) y punto flotante decimal, entre otros.
Diferentes arquitecturas de computadora soportan diferentes formatos de datos y pueden desear efectuar operaciones en un formato particular. En tal caso, los datos, que están en un formato, pueden necesitar ser convertidos al formato deseado.
Además, tradicionalmente, las operaciones usadas para procesar datos decimales numéricos almacenados en formatos EBCDIC o ASCII en bases de datos operan directamente en almacenamiento. Estas operaciones, referidas como operaciones decimales de almacenamiento a almacenamiento y la ejecución de estas operaciones están limitados por la latencia de la interfase de memoria. Cada operación que es dependiente de los resultados de una operación previa debe esperar hasta que los resultados sean escritos almacenamiento antes de que puedan comenzar. A medida que el espacio entre la latencia de memoria y velocidad del procesador continúa incrementándose, la ejecución relativa de estas operaciones continúa disminuyendo .
BREVE DESCRIPCIÓN DE LA INVENCIÓN Se superan deficiencias del arte previo y se proveen ventajas por medio de la provisión de un producto de programa de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central . El producto de programa de computadora incluye medio de almacenamiento que se puede leer por computadora que se puede leer por un circuito de procesamiento y almacenar instrucciones para ejecución por el circuito del procesamiento para efectuar un método. El método incluye, por ejemplo obtener mediante un procesador, una instrucción de máquina para ejecución, la instrucción de máquina es definida por la ejecución de computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina incluye: por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una conversión a zonificado de función de punto flotante decimal; un primer campo registro que designa un primer registro, el primer registro comprende un primer operando; un segundo campo de registro y un campo de desplazamiento, en donde el contenido de un segundo registro designado por el segundo campo de registro son combinados con el contenido del campo de desplazamiento para formar una dirección de un segundo operando; y un campo de máscara, el campo de máscara incluye uno o más controles usados durante la ejecución de la instrucción de la máquina; y ejecutar la instrucción de la máquina, la ejecución incluye: convertir por lo menos una porción del primer operando en un formato de punto flotante decimal a un formato zonificado; y colocar el resultado de convertir en un sitio designado por el la dirección del segundo operando.
Métodos y sistemas concernientes con uno o más aspectos de la presente invención son también descritos y reivindicados en la presente. Además, también se describen y reivindican en la presente servicios concernientes con uno o más aspectos de la presente invención.
Elementos y ventajas adicionales son realizados por medio de las técnicas de la presente invención. Otras modalidades y aspectos de la invención son descritos en detalle en la presente y son considerados parte de la invención reivindicada.
BREVE DESCRIPCIÓN DE LAS VARIAS VISTAS DE LAS FIGURAS Uno o más aspectos de la presente invención son indicados en particular y reivindicados distintamente como ejemplos en las reivindicaciones en la conclusión de la especificación. Los anteriores y otros objetos, elementos y ventajas de la invención son evidentes de la siguiente descripción detallada tomada en conjunción por las figuras adjuntas en las cuales: La Figura 1 ilustra una modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención; La Figura 2A ilustra otra modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención; La Figura 2B ilustra detalles adicionales de la memoria de la Figura 2A, de acuerdo con un aspecto de la presente invención; La Figura 3 ilustra una vista general del lógico para convertir de un formato zonificado a un formato de punto flotante decimal, de acuerdo con un aspecto de la presente invención; La Figura 4 ilustra una modalidad de un formato de una instrucción de convertir a zonificado usado de acuerdo con un aspecto de la presente invención,- La Figura 5 ilustra detalles adicionales del lógico para convertir de zonificado a punto flotante decimal, de acuerdo con un aspecto de la presente invención; La Figura 6 ilustra una vista general del lógico para convertir un formato zonificado de un formato de punto flotante decimal, de acuerdo con un aspecto de la presente invención; La Figura 7 ilustra una modalidad de una instrucción de convertir a zonificado de punto flotante decimal usada de acuerdo con un aspecto de la presente invención; La Figura 8 ilustra detalles adicionales del lógico para convertir a zonificados del punto flotante decimal, de acuerdo con un aspecto de la presente invención; La Figura 9 ilustra una modalidad de un producto de programa de computadora que incorpora uno o más aspectos de la presente invención; La Figura 10 ilustra una modalidad de un sistema de computadora huésped para incorporar y usar uno o más aspectos de la presente invención; La Figura 11 ilustra un ejemplo adicional de un sistema de computadora para incorporar y usar uno o más aspectos de la presente invención; La Figura 12 ilustra otro ejemplo de un sistema de computadora que comprende una red de computadoras para incorporar y usar uno o más aspectos de la presente invención; La Figura 13 ilustra una modalidad de varios elementos de un sistema de computadora para incorporar y usar uno o más aspectos de la presente invención; La Figura 14A ilustra una modalidad de la unidad de ejecución del sistema de computadora de la Figura 13 para incorporar y usar uno o más aspectos de la presente invención; La Figura 14B ilustra una modalidad de la unidad ramal del sistema de computadora de la Figura 13 para incorporar y usar uno o más aspectos de la presente invención; La Figura 14C ilustra una modalidad de la unidad de carga/almacenamiento del sistema de computadora de la Figura 13 para incorporar y usar uno o más aspectos de la presente invención; y La Figura 15 ilustra una modalidad de un sistema de computadora huésped emulado para incorporar y usar uno o más aspectos de la presente invención.
DESCRIPCIÓN DETALLADA Diferentes arquitecturas de computadora pueden soportar diferentes formatos de datos y los formatos de datos soportados pueden cambiar de vez en cuando. Por ejemplo, las máquinas ofrecidas por International Business Machines Corporation han soportado tradicionalmente formatos EBCDIC y ASCII . Más tarde máquinas comenzaron a soportar formatos y operaciones de punto flotante decimal (DFP) para las cuales hay un estándar IEEE (IEEE 754-2008) . Sin embargo, para usar las operaciones de DFP, los datos de EBCDIC y ASCII tienen que ser convertidos a DFP.
De acuerdo con un aspecto de la presente invención, se provee un mecanismo eficiente para convertir entre EBCDIC o ASCII y punto flotante decimal. En un ejemplo, este mecanismo efectúa la conversión sin la carga o gasto de memoria de otras técnicas .
En un aspecto de la presente invención, se proveen instrucciones de máquina que leen datos de EBCDIC o datos de ASCII (que tienen un formato zonificado) de la memoria, los convierten al formato de punto flotante decimal apropiado y lo escriben a un registro de punto flotante objetivo o par registro de punto flotante. Estas instrucciones son referidas en la presente como instrucción de convertir desde zonificado larga (CDZT) y una instrucción de convertir de zonificado extendida (CXZT) .
En un aspecto adicional de la presente invención, se proveen instrucciones de máquina que convierten un operando de punto flotante decimal (DFP) en un registro de punto flotante fuente o par registro de punto flotante a datos de EBCDIC o ASCII, y lo almacenan a un sitio de memoria objetivo. Estas instrucciones son referidas en la presente como una instrucción de convertir a zonificado larga (CZDT) y una instrucción de convertir a zonificado extendido (CZXT) .
Una modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención es descrita con referencia a la Figura 1. ün medio ambiente de cómputo 100 incluye, por ejemplo, un procesador 102 (por ejemplo, una unidad de procesamiento central) , una memoria 104 (por ejemplo, memoria principal) , y uno o más dispositivos y/o interfases de entrada/salida (I/O) 106 acoplados entre sí vía, por ejemplo, una o más líneas de distribución principales 108 y/u otras conexiones.
En un ejemplo, el procesador 102 es un procesador z/Architecture® que es parte de un servidor de System z® ofrecido por International Business Machines Corporation (IBM®) , Armonk, Nueva York. El servidor System z® implementa la z/Architecture®, ofrecida por International Business Machines Corporation, que especifica la estructura lógica y operación funcional de la computadora. Una modalidad de la z/Architecture® es descrita en una publicación de IBM® intitulada "z/Architecture Principies of Operation" , Publicación de IBM® No. SA22-7832-08 , Novena Edición, agosto de 2010. En un ejemplo el servidor ejecuta un sistema operativo, tal como z/OS®, también ofrecido por International Business Machines Corporation. IBM®, z/Architecture® y z/OS® son marcas registradas de International Business Machines Corporation, Armonk, Nueva York, Estados Unidos de América. Otros nombres usados en la presente pueden ser marcas registradas, marcas o nombres de productos de International Business Machines Corporation u otras compañías .
Otra modalidad de un medio ambiente de cómputo para incorporar y usar uno o más aspectos de la presente invención es descrita con referencia a la Figura 2A. En este ejemplo, un medio ambiente de cómputo 200 incluye por ejemplo, una unidad de procesamiento central nativa 202, una memoria 204, y uno o más dispositivos y/o interfaces 206 de entrada/salida acoplados entre sí vía por ejemplo, una o más líneas de distribución principales 208 y/u otras conexiones. Como ejemplos, el medio ambiente de cómputo 200 puede incluir un procesador PowerPC®, un servidor pSeries® o un servidor xSeries® ofrecido por International Business Machines Corporation, Armonk, Nueva York; un HP Superdome con procesadores Itanium II® de Intel ofrecidos por Hewlett Packard Co., Palo Alto, California; y/u otras máquinas basadas en arquitecturas ofrecidas por IBM®, Hewlett Packard, Intel, Sun Microsystems u otros. PowerPC®, pSeries® y xSeries® son marcas registradas de International Business Machines Corporation, Armonk, Nueva York, Estados Unidos de América. Intel® e Itanium II® son marcas registradas de Intel Corporation, Santa Clara, California.
La unidad de procesamiento central nativa 202 incluye uno o más registros nativos 210, tales como uno o más registros de propósito general y/o uno o más registros de propósito especial usados durante el procesamiento dentro del medio ambiente. Estos registros incluyen información que representan el estado del medio ambiente en cualquier punto en el tiempo particular.
Además, la unidad de procesamiento central nativa 202 ejecuta instrucciones y códigos que son almacenados en la memoria 204. En un ejemplo particular, la unidad de procesamiento central ejecuta códigos de emulador 212 almacenados en la memoria 204. Estos códigos permiten el medio ambiente de procesamiento configurado en una arquitectura emule otra arquitectura. Por ejemplo, los códigos de emulador 212 permite que máquinas basadas en arquitecturas diferentes de la z/Architecture®, tales como procesadores PowerPC®, servidores pSeries®, servidores xSeries®, servidores HP Superdome y otros, emulen la z/Architecture® y ejecuten elementos de programación e instrucciones desarrollados basados en la z/Architecture®.
Detalles adicionales concernientes con los códigos de emulador 212 son descritos con referencia a la Figura 2B. Las instrucciones de invitado 250 comprenden instrucciones de elementos de programación (por ejemplo, instrucciones de la máquina) que fueron desarrolladas para ser ejecutadas en una arquitectura diferente de la CPU nativa 202. Por ejemplo, las instrucciones de invitado 250 pueden haber sido diseñadas para ejecutarse en un procesador de z/Architecture® 102, pero en lugar de esto son emuladas en la CPU nativa CPU 202 (que por ejemplo puede ser un procesador Itanium II® de Intel®) . En un ejemplo, los códigos de emulador 212 incluyen una unidad de relleno de instrucciones 252 para obtener una o más instrucciones de huésped 250 de la memoria 204 y para proveer opcionalmente almacenamiento en memoria temporal local para las instrucciones obtenidas. También incluye una rutina de traducción de instrucción 254 para determinar el tipo de instrucción de invitado que ha sido obtenida y para traducir la instrucción de huésped a una o más instrucciones nativas correspondientes 256. Esta traducción incluye, por ejemplo, identificar la función a ser efectuada por la instrucción del huésped y escoger la instrucción nativa para efectuar aquella función.
Además, el emulador 212 incluye una rutina de control de emulación 260 para provocar que las instrucciones nativas sean ejecutadas. La rutina de control de emulación 260 puede provocar que la CPU nativa 202 ejecute una rutina de instrucciones nativas que emulan una o más instrucciones de huésped previamente obtenidas y en la conclusión de tal ejecución, regresar el control a la rutina de llenado de instrucciones para emular la obtención de la siguiente instrucción de invitado o un grupo de instrucciones de invitado. La ejecución de las instrucciones nativas 250 puede incluir cargar datos a un registro de la memoria 204,-almacenar datos de regreso a la memoria de un registro o efectuar algún tipo de operación aritmética o lógica, tal como se determinar por la rutina de traducción.
Cada rutina es implementada por ejemplo en elementos de programación que están almacenados en memoria y ejecutada por la unidad de procesamiento central nativa 202. En otros ejemplos, una o más de las rutinas u operaciones son implementadas en medios fijos, elementos físicos, elementos de programación o alguna combinación de los mismos. Los registros del procesador emulado pueden ser emulados utilizando registros 210 de la CPU nativas o al usar sitios en la memoria 204. En modalidades, las instrucciones de huésped la ejecución de las instrucciones nativas 250 puede incluir cargar datos a un registro de la memoria 204; almacenar datos de regreso a la memoria de un registro o efectuar algún tipo de operación aritmética o lógica, tal como se determina por la rutina de traducción.
Cada rutina es implementada por ejemplo en elementos de programación que están almacenados en memoria y ejecutada por la unidad de procesamiento central nativa 202. En otros ejemplos, una o más de las rutinas u operaciones son implementadas en medios fijos, elementos físicos, elementos de programación o alguna combinación de los mismos. Los registros del procesador emulado pueden ser emulados utilizando los registros 210 de la CPU nativa o al usar sitios en la memoria 204. En modalidades, las instrucciones de huésped 250, instrucciones nativas 256 y códigos de emulador 212 pueden residir en la misma memoria o pueden estar distribuidos entre diferentes dispositivos de memoria.
Como se usa en la presente, los elementos fijos incluyen, por ejemplo los microcódigos , minicódigos y/o macrocódigos del procesador. Incluyen, por ejemplo las instrucciones a nivel de elementos físicos y/o estructuras de datos usadas en la implementación de los códigos de máquina de nivel superior. En una modalidad, incluyen por ejemplo códigos patentados que son proporcionados comúnmente como microcódigos que incluyen elementos de programación confiables o microcódigos específicos a los elementos físicos fundamentales y controla el acceso del sistema operativo a los elementos físicos del sistema.
En un ejemplo, una instrucción de invitado 250 que es obtenida, traducida y ejecutada es una de las instrucciones descritas en la presente. La instrucción, que es una instrucción de z/Architecture® en este ejemplo, es llenada de la memoria, reducida y representada como una secuencia de instrucciones nativas 256 (por ejemplo, PowerPC®, pSeries®, xSeries®, Intel®, etc.) que son ejecutadas.
En otra modalidad, una o más de las instrucciones son ejecutadas en otro medio ambiente de arquitectura, incluyendo, por ejemplo una arquitectura como se describe en el "Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 1", No. de Orden 253665-022US, Noviembre de 2006; "Intel® 64 and IA-32 Architecture Software Developer's Manual Volume 2A" , No. de Orden 253666-022US, Noviembre de 2006; el "Intel® Itanium® Architecture Software Developer's Manual Volume 1", Doc . No. 245317-005, Enero de 2006; el "Intel® Itanium® Architecture Software Developer's Manual Volume 2", Doc. No. 245318-005, Enero de 2006; y/o el "Intel® Itanium® Architecture Software Developer's Manual Volume 3", Doc. No. 245319-005, Enero de 2006.
Los procesadores descritos en la presente, también como otros, ejecutan instrucciones para efectuar ciertas funciones, tales como por ejemplo convertir entre formatos de EBCDIC o ASCII y punto flotante decimal. En un ejemplo, los datos de EBCDIC o AFCII tienen un formato zonificado y por consiguiente, instrucciones ejemplares se describen, por ejemplo convertir de instrucciones de zonificado a punto flotante decimal, también como convertir a zonificado de instrucciones de punto flotante decimal, como se describe en la presente .
Antes de describir las instrucciones, sin embargo, varios formatos de datos referidos en la presente son descritos. Por ejemplo, en el formato zonificado, los cuatro bits más a la derecha de un byte con llamados los bits numéricos (n) e incluyen normalmente un código que representa un dígito decimal. Los cuatro bits más a la izquierda de un byte son llamados los bits zonificados (Z) excepto por el byte más a la derecha de un operando decimal, en donde estos bits pueden ser tratados ya sea como una zona o como un signo (S) .
Los dígitos decimales en el formato zonificado pueden ser parte de un conjunto de caracteres más grandes, que incluye también caracteres alfabéticos y especiales. El formato zonificado es por consiguiente, apropiado para entrada, edición y salida de datos numéricos en forma que se puede leer por humanos. En una modalidad, las instrucciones decimales-aritméticas no operan directamente sobre números decimales en el formato zonificado; tales números son convertidor primero por ejemplo a uno de los formatos de punto flotante decimal.
Los datos de punto flotante decimal pueden ser representados en cualquiera de tres formatos de datos: corto, largo o extendido. El contenido de cada formato de datos representa información codificada. Códigos especiales son asignados para distinguir números finitos de NaN (no un número) e infinito.
Para números finitos, un exponente polarizado es usado en el formato. Para cada formato, se usa una polarización o sesgo diferente para los exponentes de vista de unidades a la derecha (RUV) de aquellos para exponentes de vista de unidades a la izquierda (LUV) . Los exponentes sesgados son números sin signo. El exponente polarizado es codificado con el dígito más a la izquierda (LMD) del significando en el campo de combinación. Los dígitos restantes del significando son codificados en el campo de significando de cola codificado .
Ejemplos de estos formatos de datos son: Formato corto de DFP Combinación Significando de cola codificado 12 31 Cuando un operando en el formato corto de PFP es cargado a un registro de punto flotante, ocupa la mitad izquierda del registro y la mitad derecha permanece sin cambio.
Formato largo de DFP Combinación gnificando trasero codificado 0 1 14 31 Significando trasero codificado (continuación) 32 63 Cuando un operando en el formato largo de DFP es cargado a un registro de punto flotante, ocupa todo el registro.
Formato extendido de BFP S Combinación Significando trasero codificado 0 18 31 Significando trasero codificado (continuación) 32 63 Significando trasero codificado (continuación) 64 95 Significando trasero codificado (continuación) 96 127 Un operando en el formato extendido de DFP ocupa un par de registros de punto flotante. Los 64 bits más a la izquierda ocupan todo el registro de número más bajo del par y los 64 bits más a la derecha ocupan todo el registro de número superior.
El bit de signo está en el bit 0 de cada formato y es por ejemplo 0 para más y 1 para menos.
Para números finitos, el campo de combinación incluye el exponente polarizado y el dígito más a la izquierda del significando para NaN e infinito, este campo incluye códigos para identificarlos.
Cuando los bits 1-5 del formato están el intervalo de 00000-11101, el operando es un número finito. Los dos bits más a la izquierda del exponente polarizado y el dígito más a la izquierda del significando son codificados en los bits 1-5 del formato. El bit 6 hasta el final del campo de combinación incluyen el resto del exponente polarizado.
Cuando los bits 1-5 del campo de formato son 11110, el operando es un infinito. Todos los bits en el campo de combinación a la derecha del bit 5 del formato constituyen el campo reservado para infinito. Un valor no cero en el campo reservado es aceptado en un infinito fuente; el campo reservado es ajustado a cero en un infinito resultante.
Cuando los bits 1-5 del formato son 11111, el operando es un NaN y el bit 6, llamado el bit SNaN, distingue además QNaN de SNaN. Si el bit 6 es cero, entonces es QNaN; de otra manera, es SNaN. Todos los bits en el campo de combinación a la derecha del bit 6 del formato constituyen el campo reservado para NaN. Un valor de no cero en el campo reservado es afectado en un NaN puente; el campo reservado es ajustado a cero en un NaN resultante.
La tabla a continuación resume la codificación y disposición física del campo de combinación. En la tabla, el exponente por el estado de un número finito es la concatenación de dos partes: (1) dos bits más a la izquierda son derivados de los bits 1-5 del formato y (2) los bits restantes en el campo de combinación. Por ejemplo, si el campo de combinación del formato corto de DFP contiene el binario 10101010101, representa un exponente polarizado del binario 10010101 y un dígito significando más a la izquierda de 5.
No aplicable.
Concatenación.
Todos los bits en el campo de combinación a la derecha del bit 5 del formato constituyen el campo reservado para infinito.
Todos los bits en el campo de combinación a la derecha del bit 6 del formato constituyen el campo reservado para NaN LMD Dígito más a la izquierda del significando. m El bit 6 es parte del exponente polarizado restante.
RBE Exponente polarizado restante. Incluye todos los bits en el campo de combinación a la derecha del bit 5 del formato.
El bit 6 es un bit reservado para infinito.
El campo de significando de cola codificado incluye un número decimal codificado, que representa dígitos en el significando trasero. El significando trasero incluye todos los dígitos de significando, excepto el dígito más a la izquierda. Para infinitos, los dígitos de significando trasero no cero son aceptados de un finito fuente; todos los dígitos de significando trasero en un infinito resultante son ajustados a cero, a no ser que se asigne de otra manera. Para NaN, este campo incluye información de diagnóstico llamada la carga .
El campo de significativo trasero codificado es un múltiplo de bloques de 10 bits llamados declets. El número de declets depende del formato. Cada declet representa tres dígitos decimales en un valor de 10 bits.
Los valores de números finitos en los varios formatos mostrados de la siguiente tabla El término significando es usado para dar a entender, por ejemplo, lo siguiente: 1. Para números finitos, el significando incluye todos los dígitos de significando traseros rellenos a la izquierda con el dígito más a la izquierda del significando derivado del campo de combinación. 2. Para infinitos y NaN, el significando contiene todos los dígitos de significando traseros rellenos en la izquierda con un dígito cero.
Para un número finito, los dígitos significativos de DFP comienzan con el dígito de significando no cero más a la izquierda y terminan con el dígito de significando más a la derecha .
Para un número finito, el número de dígitos signif icativos de DFP es la diferencia de restar el número de ceros delanteros de la precisión del formato . El número de ceros delanteros es el número de ceros en el significando a la izquierda del dígito no cero más a la izquierda .
Además de lo anterior, hay un formato decimal densamente empacado (DPD) . Ej emplos de un mapeo de un número decimal de tres dígitos ( 000 - 999 ) a un valor de diez bits , llamado un declet son mostrados en la tabla a continuación . Las entradas de DPD son mostradas en hexadecimal . Los primeros dos dígitos del número decimal son mostrados en la columna más a la izquierda y el tercer dígito j unto con la hilera superior .
Ej emplos del mapeo del declet de 10 bits a un número decimal de tres dígitos son mostrados en la tabla a continuación . El valor de declet de 10 bits es dividido en un índice de 6 bits mostrado en la columna izquierda y un índice de 4 bits mostrado al lado de la hilera superior, ambos representados en hexadecimal .
* Resultado mapeado de un declet no canónico De acuerdo con un aspecto de la presente invención, se proveen instrucciones para convertir de formato zonificado a punto flotante decimal. En una modalidad, hay dos tipos de instrucciones de convertir de zonificado a punto flotante decimal, incluyendo una instrucción de convertir de zonificado larga (CDZT) y una instrucción de convertir de zonificado extendida (CXZT) , cada una de las cuales es descrita posteriormente en la presente. Estas instrucciones proveen un medio eficiente para convertir datos de EBCDIC o ASCII directamente en memoria a los formatos de punto flotante decimal en un registro.
Por ejemplo, refiriéndose a la Figura 3 en una modalidad, cada instrucción de la máquina lee datos de EBCDIC o ASCII de la memoria, etapa 300 ; los convierte al formato de punto flotante decimal apropiado, etapa 302 y los escribe a un registro de punto flotante objetivo o par de registros de punto flotante objetivos, etapa 304 .
La instrucción de convertir de zonificado larga, CDZT, lee los datos de operando de un sitio de memoria especificado, los convierte a un operando de DFP de doble precisión con un exponente cero y los escribe al registro de punto flotante objetivo especificado. La instrucción de convertir de zonificado extendida, CXZT, lee los datos de operando de un sitio de memoria especificado, los convierte a una operación de DFP de precisión extendida con un exponente cero y los escribe al par de registros de punto flotante objetivo especificado. El número de bytes en el sitio de memoria fuente es especificado en una instrucción y puede ser de 1 a 16 bytes para CDZT o de 1 a 34 bytes para CXZT. Los dígitos del operando fuente son todos verificados en cuanto a códigos de dígito válidos . Un campo de signo en la instrucción indica que el pico de signo del operando fuente va a ser procesado. Si el campo de signo es establecido, el signo es verificado en cuanto a un código de signo válido. Suponiendo que es válido, el signo del resultado del DFP es ajustado al mismo signo como es indicado por el pico de signo del operando fuente . Si se detecta un dígito o código de signo no válido, se reconoce una excepción de datos decimal.
En una modalidad, cada una de las instrucciones de convertir de zonificado tiene un mismo formato (un formato RSL-b) , un ejemplo del cual es ilustrado en la Figura 4. Como se ilustra en una modalidad, un formato 400 de la instrucción de convertir de zonificado incluye, por ejemplo, los siguientes campos: Campos de código de operación 402a, 402b: Los campos de código de operación proveen un código de operación que indica la función que es efectuada por la instrucción. Como ejemplos, uno código de operación definido define la función como la instrucción de convertir de zonificado larga y otro código de operación predefinido indica que es una instrucción de convertir de zonificado extendida.
Campo de longitud (L2) 404: El campo de longitud 404 especifica la longitud (por ejemplo, en bytes) del segundo operando. Como ejemplos, el campo de longitud incluye un código de longitud de 0 a 33 para una instrucción de convertir a zonificado extendida y un código de longitud de 0 a 15 para una instrucción de convertir de zonificado larga.
Campo de registro base (B2) 406: El campo de registro base designa un registro general, el contenido del cual es agregado al contenido del campo de desplazamiento para formar la segunda dirección de operando.
Campo de desplazamiento (D2) 408: El campo de desplazamiento incluye contenido que es agregado al contenido del registro general designado por el campo de registro base para formar la dirección de segundo operando.
Campo de registro (Ri) 410: El campo de registro designa un registro, el contenido del cual es el primer operando. El registro que incluye el primer operando es algunas veces referido como la ubicación del primer operando.
Campó de máscara ( 3) 412: El campo de máscara incluye, por ejemplo, un control de signo (S) (por ejemplo, bit) , que en un ejemplo es el bit 0 del campo M3. Cuando este bit es cero, el segundo operando no tiene un campo de signo y el bit de signo del resultado del primer operando de DFP es ajustado a 0. Cuando es uno, el segundo operando está con signo. Esto es, los cuatro bits más a la izquierda del byte más a la derecha son un signo. El bit de signo del resultado del primer operando de DFP es ajustado a cero, cuando el campo de signo indica un valor positivo; y uno, cuando el campo de signo indica un valor negativo. En una modalidad, los bits 1 a 3 del campo M3 son ignorados .
Durante la operación de la instrucción de convertir de zonificado, el segundo operando en el formato zonificado es convertido al formato de DFP, y el resultado es colocado en el sitio del primer operando. En un ejemplo, el quantum es uno y el valor entregado es representado con el quantum. El resultado colocado en la ubicación del primer operando es canónico.
En una modalidad, cuando se detecta un dígito o código de signo no válido en el segundo operando, se reconoce una excepción de datos de operando decimal. Una excepción de especificación es reconocida y la operación es suprimida cuando, por ejemplo, cualquiera de los siguientes es cierto: Para CDZT, el campo L2 es mayor o igual a 16; y para CXZT, el campo Rj. designa un par de registros de punto flotante no válido, o el campo L2 es mayor o igual a 34.
En una modalidad, cuando se específica un segundo operando ASCII, el bit 0 del campo M3 es 0; de otra manera, se reconoce una excepción de datos de operando decimal. Esto es, un valor de signo del binario 0011 no es un signo válido.
Detalles adicionales con respecto a la ejecución de una instrucción de convertir de zonificado son descritos con referencia a la Figura 5. En un ejemplo, es el procesador que ejecuta la instrucción de convertir de zonificado que efectúa este lógico.
Inicialmente , se hace una determinación en cuanto a si el código de operación de la instrucción de convertir de zonificado indica que es el formato extendido o largo, PREGUNTA 500. Esto es, es la instrucción que es ejecutada la instrucción de convertir de zonificado larga o la instrucción de convertir de zonificado extendida. Si el código de operación indica que es la instrucción de convertir de zonificado larga, entonces se hace una determinación adicional en cuanto a si el campo de longitud (L2) provisto a la instrucción especifica una longitud mayor de 15, PREGUNTA 502. Si el campo de longitud especifica una longitud mayor de 15, entonces una excepción es provista indicando que es más de 16 dígitos (0 a 15), ETAPA 504.
Volviendo a PREGUNTA 502, si el campo de longitud no especifica una longitud mayor de 15, entonces los dígitos zonificados fuente (por lo menos una porción del segundo operando) son leídos de memoria, ETAPA 506. Después de esto, los dígitos zonificados fuente leídos de la memoria son convertidos a un formato de punto flotante decimal, ETAPA 508. En este ejemplo, es convertido a un operando de DFP de doble precisión con un exponente cero.
Adicionalmente, se hace una determinación en cuanto a si el control de signo (S) designado en el campo de máscara (M3) es establecido a 1, PREGUNTA 510. Si el control de signo no es igual a uno, entonces el signo del número de DFP es forzado a positivo, ETAPA 512, y el registro de punto flotante objetivo es actualizado con el valor convertido, incluyendo el signo forzado, ETAPA 514.
Volviendo a PREGUNTA 510, si el control de signo es igual a 1, entonces el campo de signo fuente (del segundo operando) es leído de la memoria, ETAPA 516. Después de esto, el signo del número de DFP es ajustado al signo de la fuente, ETAPA 518, y el registro de punto flotante objetivo es actualizado con el valor convertido y el signo (por ejemplo, bit 0 del formato de DFP), ETAPA 514.
Volviendo a PREGUNTA 500, si el código de operación indica que es una instrucción de convertir de zonificado extendida, entonces se hace una determinación en cuanto a si el campo de longitud de la instrucción especifica una longitud mayor de 33, PREGUNTA 530. Si el campo de longitud especifica una longitud mayor que 33, entonces se provee una excepción que indica más de 34 dígitos (0 a 33), ETAPA 532. Sin embargo, si el campo de longitud no especifica una longitud mayor de 33, entonces se hace una determinación en cuanto a si el campo Ri de la instrucción especifica un par de registros de punto flotante no validos, PREGUNTA 534. Si se indica un par de registros de punto flotante no válido, se provee una excepción, ETAPA 536. De otra manera, los dígitos zonificados fuente (por lo menos una porción del segundo operando) son leídos de la memoria, ETAPA 538. Después de esto, los dígitos zonificados fuente leídos de la memoria son convertidos a un formato de punto flotante decimal, ETAPA 540. En este ejemplo, los dígitos (por lo menos una porción del segundo operando) son convertidos a una operación de punto flotante de datos de precisión extendida con un exponente cero.
Después de esto, se hace una determinación en cuanto a si el control de signo (S) en el campo de máscara de la instrucción es ajustado a uno, PREGUNTA 542. Si el control de signo no es igual a 1, entonces el signo del número de punto flotante de datos es forzado a positivo, ETAPA 544. Sin embargo, si el control de signo es igual a 1, entonces el campo de signo fuente (del segundo operando) es leído de la memoria, ETAPA 546, y el signo del número de DFP es ajustado al signo de la fuente, ETAPA 548. Subsecuente a establecer el signo ya sea en la etapa 544 o ETAPA 548, el par de registros de punto flotante objetivo es actualizado con el formato de punto flotante decimal convertido y el signo, ETAPA 550.
Referidas anteriormente se encuentran dos etapas para convertir dígitos zonificados fuente leídos de la memoria a un formato de punto flotante decimal. En particular, la ETAPA 508 convierte la fuente a un operando de punto flotante decimal de doble precisión con un exponente cero, y la ETAPA 540 convierte la fuente a una operación de punto flotante de datos de precisión extendida con un exponente cero. Detalles adicionales con respecto a las conversiones como se describen a continuación, también como en la publicación "z/Architecture Principies of Operation" , recibida anteriormente IBM® No. SA22-7832-08, Novena Edición, Agosto de 2010.
Una modalidad del proceso de convertir de un número con formato zonificado al formato de DFP es como sigue: los dígitos fuente son leídos de la memoria. Los dígitos decimales codificados binarios (BCD) en los 4 bits de la derecha de cada byte de datos fuente son rellenos a la izquierda con ceros, si es necesario, de tal manera que un total de 16 dígitos de BCD existen para una operación de doble precisión, y de tal manera que existen 34 dígitos para una operación de precisión extendida. Luego, estos dígitos de BCD son convertidos de BCD a decimal densamente empacados (DPD) de tal manera que cada 3 dígitos de BCD partiendo a la derecha de los datos fuente son convertidos a un grupo de DPD de 10 bits para todos los dígitos de BCD excepto el dígito de BCD más a la izquierda. Así, existen 5 grupos de DPD para los grupos de conversión de doble precisión y 11 grupos de DPD para la conversión de precisión extendida. Estos grupos de DPD componen bits 14-63 del resultado de doble precisión y los bits 17-127 de un resultado de precisión extendida. Los bits 6-13 son el campo de exponente de un resultado de doble precisión y con 2 bits del campo combo en los bits 1-5 son ajustados a un valor de 398 para operaciones de doble precisión.
Para operaciones de precisión extendida, los bits 6-17 son bits de campo de exponente y con 2 bits del campo combo son ajustados a un valor de 6176 para operaciones de precisión extendida.
Si el dígito de BCD más significativo es "8" o "9", entonces los bits 1 y 2 son ajustados a "1"; los bits 3 y 4 son los 2 bits más significativos del exponente y así serían ajustados a "01"; y el bit 5 es ajustado a "0" para un "8" o "1" para un "9" . Si el dígito de BCD más significativo es w0" a "7", entonces los bits 1 y 2 son el valor más significativo del exponente y así serían ajustados a "01", y los bits 3-5 son ajustados a los 3 bits más a la derecha del dígito de BCD más significativo.
Los 4 bits más a la izquierda del byte más a la derecha de los datos fuente es el código de signo, si S=l . En este caso, el bit de signo de resultado, bit 0, es ajustado a 1, si el valor del código de signo es "1011" o "1101" .
Descritas en detalle anteriormente están dos instrucciones que proveen un medio para mejorar significativamente la carga de trabajo decimal de almacenamiento tradicional. En las cargas de trabajo decimales de almacenamiento a almacenamiento tradicionales, los operandos de EBCDIC o ASCII son primero convertidos a un formato decimal empacado, que separa los códigos de campo y pone los dígitos numéricos y dígitos de signo de dos operandos en otra parte de almacenamiento. Los operandos empacados son luego operados por una operación aritmética, tal como adición, sustracción, multiplicación o división. Estas operaciones aritméticas deben esperar que los almacenamientos del paquete procesen para completar antes de que puedan comenzar y estas operaciones pueden almacenar sus resultados a la memoria. Una vez que el almacenamiento de resultados está completo, el resultado es luego vuelto a desempacar al formato objetivo (EBCDIC o ASCII) . Las dependencias de memoria de las operaciones dominan el desempeño .
De acuerdo con un aspecto de la presente invención, el empleo de las nuevas instrucciones (por ejemplo, recopilar el código con las nuevas instrucciones habilitadas) reemplaza el paquete o instrucción de PKA con el CDZT o CXZT dependiendo del formato objetivo. La operación matemática puede luego ser reemplazada con su equivalente de DFP (por ejemplo, AD/XTR, SD/XTR, MD/XTR, DT/XTR) de tal manera que no hay ninguna espera para operandos sean almacenado o leídos de la memoria. Estas instrucciones operan en una cantidad de tiempo similar como adición (AP) , sustracción (SP) , multiplicación (MP) o división (DP) , pero sin los gastos de memoria. La segunda dependencia de memoria es evitada cuando la operación de UNPK o UNPKA es reemplazada y el resultado es convertido directamente al formato objetivo vía instrucciones de CZDT o CZXT descritas posteriormente en la presente.
Las operaciones de paquete de decimales de almacenamiento a almacenamiento tradicionales son aptas de procesar 15 dígitos y un signo que requiere 3 operaciones de paquete traslapantes para procesar cada operando de 31 dígitos (y signo) encontrado comúnmente en aplicaciones, tales como aplicaciones de COBOL. Teniendo que romper un operando en mini-operandos traslapantes más pequeños se suma a la complejidad del compilador y el código compilado,-requiere que instrucciones adicionales sean ejecutadas para efectuar una tarea dada, tal como manejar transporte/préstamo entre mini-operandos ; e impacta el desempeño. Puesto que CXZT es apto de convertir 34 dígitos y un código de signos a un operando DFP, los compiladores pueden tratar los operandos de 31 dígitos y signos comunes (por ejemplo, operandos de COBOL) como una sola entidad, simplificando el código compilado y mejorando el desempeño.
Como se describe en la presente, las instrucciones de CDZT y CXZT proveen un medio eficiente para convertir datos de EBCDIC o ASCII en memoria directamente a los formatos de DFP en registros. Permiten que los datos sean convertidos de EBCDIC o ASCII al formato de DFP en una sola etapa. Previamente, el proceso requería usar operaciones de Pack o PKA para convertir los datos a formato decimal empacado. Los datos deben luego ser cargados a registros de propósito general (GPR) , pero puesto que no hay carga controlada por longitud actualmente en la arquitectura de conjunto de instrucciones, esto frecuentemente requiere una mezcla de operaciones de palabra, media palabra y carga de bytes. Otras instrucciones, CDSTR o CXSTR, pueden luego ser usadas para convertir los datos decimales empacados en el par de GPR/GPR al formato de DFP objetivo. De acuerdo con un aspecto de la presente invención, PACK/PKA y CDSTR/CXSTR son reemplazados por una instrucción, CDZT o CXZT.
Además de instrucciones de convertir de zonificado a punto flotante decimal, de acuerdo con un aspecto adicional de la presente invención, se proveen las instrucciones de convertir a zonificado de punto flotante decimal Estas instrucciones proveen un medio eficiente de convertir datos del formato de punto flotante decimal mantenido en un registro de punto flotante o par de registros de punto flotante a datos de EBCDIC o ASCII y almacenarlo directamente a la memoria.
Por ejemplo, refiriéndose a la Figura 6, en un ejemplo, un operando de DFP en un registro fuente o par de registros fuente es convertido a datos de EBCDIC o ASCII, ETAPA 600. El resultado convertido es luego almacenado en un sitio de memoria objetivo, ETAPA 602. Estas instrucciones permiten que los datos sean convertidos del formato de DFP directamente a EBCDIC y ASCII en una sola etapa.
Ejemplos de estas instrucciones incluyen una instrucción de convertir a zonificado larga (CZDT) y una instrucción de convertir a zonificado extendida (CZXT) . La instrucción de convertir a zonificado larga, CZDT, lee los datos de operando de DFP de doble precisión de un registro de FPR especificado, convierte la mantisa al formato zonificado y lo escribe al sitio de memoria objetivo. Asimismo, la instrucción de convertir a zonificado extendida, CZXT, lee los datos de operando de DFP de precisión extendida de un par de registros de FPR especificado y convierte la mantisa a un formato zonificado y lo escribe al sitio de memoria objetivo. Si la longitud de la ubicación de memoria especificada no es suficiente para encajar a todos los dígitos no cero más a la izquierda del operando fuente, se reconoce una excepción de desbordamiento decimal, a condición de que la máscara de desbordamiento decimal esté habilitada. En el caso de que no todos los dígitos encajen al sitio de memoria especificado, establece3 un código de condición específica (por ejemplo, 3) . El signo del operando de DFP es copiado al pico de signo del resultado en memoria, si el campo de signo a ajustar. La codificación de signo positivo usada es controlada por el campo P en el texto de instrucción, descrito posteriormente en la presente y los resultados del operando cero pueden condicionalmente ser forzados positivos por el campo Z del texto de instrucción, también descrito posteriormente en la presente. Esta suerte de manipulación de signo es requerida comúnmente en el código del compilador y la inclusión de esta función directamente a las instrucciones provee ahorros de desempeño y simplifica el código del compilador.
Una modalidad de un formato (RSL-b) de una instrucción de convertir a zonificado es descrita con referencia a la Figura 7. En un ejemplo, un formato 700 de la instrucción de convertir a zonificado incluye los siguientes campos: Campos de código de operación 702a, 702b: Los campos de código de operación proveen un código de operación que indica la función que es efectuada por la instrucción. Como ejemplos, un código de operación definido especifica la función como la instrucción de convertir a zonificado larga y otro código de operación predefinido indica que es una instrucción de convertir a zonificado extendida.
Campo de longitud (F2) 704: El campo de longitud 704 especifica la longitud (por ejemplo, en bytes) del segundo operando. Como ejemplos, el campo de longitud incluye un código de longitud de 0 a 33 para una instrucción de convertir a zonificado extendida, y un código de longitud de 0 a 15 para una instrucción de convertir a zonificado larga. Además, el número de dígitos de significando más a la derecha del primer operando a ser convertido es especificado por F2.
Campo de registro base (B ) 706: El campo de registro base designa un registro general, el contenido del cual es agregado al contenido del campo de desplazamiento para formar la dirección del segundo operando.
Campo de desplazamiento (D2) 708: El campo de desplazamiento incluye contenido que es agregado al contenido del registro general designado por el campo de registro base para formar la dirección del segundo operando.
Campo de registro (Ri) 710: El campo de registro designa un registro, el contenido del cual es el primer operando.
Campo de máscara ( 3) 712: El campo de máscara incluye, por ejemplo: Control de Signo (S) : Bit 0 del campo M3 es el control de signo. Cuando S es cero, el segundo operando no tiene un campo de signo. Cuando S es uno, el segundo operando tiene un campo de signo. Esto es, las cuatro posiciones de bits más a la izquierda del byte más a la derecha son un signo.
Control de Zona (Z) : El bit 1 del campo M3 es el control de zona. Cuando Z es cero, cada campo zonificado del segundo operando es almacenado como 1111 binario. Cuando Z es uno, cada campo zonificado del segundo operando es almacenado como 0011 binario.
Control de Código de Signo Más (P) : El bit 2 del campo M3 es el control del código de signo más. Cuando P es cero, el signo de más es codificado como 1100 binario. Cuando P es uno, el signo de más es codificado como 1111 binario. Cuando el bit S es cero, el bit P bit ignorado y se supone que es cero .
Control de Fuerza Más Cero (F) : El bit 3 del campo M3 es el control de fuerza más cero. Cuando F es cero, no se toma ninguna acción. Cuando F es uno y el valor absoluto del resultado colocado en la ubicación del segundo operando es cero, el signo del resultado es establecido para indicar un valor más con el código de signo especificado por el bit P. Cuando el bit S es cero, el bit F es ignorado y se supone que es cero.
En operación, el número especificado de dígitos de significando más a la derecha del primer operando de DFP y el bit de signo del primer operando son convertidos al formato zonificado, y el resultado es colocado en la ubicación del segundo operando. Una vista de unidades a la derecha del primer operando con quantum de uno es implicado. El exponente en el campo de combinación es ignorado y tratado como si tuviera un valor de cero, antes que de la polarización.
El número de dígitos de significando más a la derecha del primer operando a ser convertido es especificado por L2. La longitud en bytes del segundo operando es 1-34 para CZXT, correspondiente a un código de longitud en L2 de 0 a 33, lo que significa 1-34 dígitos. La longitud en bytes del segundo operando es 1-16 para CZDT, correspondiente a un código de longitud en L2 de 0 a 15, lo que significa de 1 a 16 dígitos.
En una modalidad, la operación es efectuada para cualquier primer operando, incluyendo un infinito, QNaN, o SNaN, sin provocar una excepción de IEEE. Si el primer operando es infinito o un NaN, se supone un dígito cero que es el dígito más a la izquierda del significando, el número especificado de los dígitos de significando más a la derecha y el bit de signo son convertidos al formato zonificado, el resultado es colocado en el sitio del segundo operando y la ejecución se completa con un código de condición específico (por ejemplo, 3) .
Cuando los dígitos no cero más a la izquierda del resultado se pierden debido a que el campo del segundo operando es demasiado corto, el resultado es obtenido al ignorar los dígitos de desbordamiento, un código de condición especificado (por ejemplo, de 3) es establecido y si el bit de máscara de desbordamiento decimal es uno, se presenta una interrupción de programa de desbordamiento decimal. Las longitudes de operando solas no son una indicación de desbordamiento; los dígitos que no son cero van a ser perdidos durante la operación.
Una excepción de especificación es reconocida y la operación es suprimida cuando, por ejemplo, cualquiera de los siguientes es cierto: para CZDT, el campo L2 es mayor o igual a 16, lo que significa 17 o más dígitos. Para CZXT, el campo Ri designa un par de registros de punto flotante no válido, o el campo de L2 es mayor o igual a 34, lo que significa 35 o más dígitos .
Ejemplos de códigos de condición resultante incluyen: 0 La fuente es cero 1 La fuente es menor de cero 2 La fuente es mayor de cero 3 Infinito, QNaN, SNaN, resultado parcial.
En una modalidad, un operando decimal zonificado ASCII puede ser almacenado como firmado cuando el bit S es uno. Esto es hasta que los programas como representaciones de ASCII están usualmente sin firmar y positivas con ningún concepto de una zona más a la derecha siendo usada como un signo. Además, una consumación de un código de condición particular (por ejemplo, 0 ) indica que el valor absoluto del primer operando es cero.
Las relaciones entre los bits de control M3 versus el signo de DFP del primer operando y el valor absoluto del segundo operando resultante siendo cero son ilustrados en la tabla a continuación que es provista como un ejemplo: x Ignorada -- No aplicable Detalles adicionales con respecto al lógico de la instrucción de convertir a zonificado son descritos con referencia a la Figura 8. En un ejemplo, este lógico es efectuado por un procesador que ejecuta una instrucción de máquina de convertir a zonificado.
Refiriéndose a la Figura 8, inicialtnente, se hace una determinación en cuanto a si esta es una instrucción de convertir a zonificado extendida o una instrucción de convertir a zonificado larga, tal como es indicado por el código de operación de la instrucción, PREGUNTA 800. Si es una instrucción de convertir a zonificado larga, como se indica por el código de operación, entonces se hace una determinación adicional en cuanto a si el campo L2 especifica una longitud mayor de 15, PREGUNTA 802. Si el campo L2 especifica una longitud mayor de 15, entonces una excepción es provista puesto que hay más de 16 dígitos (0-15) , ETAPA 804.
Volviendo a PREGUNTA 802, si el campo de longitud no especifica una longitud mayor de 15, entonces el operando de DFP es leído del registro de punto flotante designado en la instrucción de convertir (utilizando Ri, ETAPA 806. Los dígitos de DFP fuente del operando de DFP leídos son luego convertidos a dígitos de BCD, ETAPA 808.
Subsecuentemente a la conversión, se hace una determinación en cuanto a si los dígitos no cero encajan en la longitud especificada por L2, PREGUNTA 810. Si los dígitos no cero no encaja, entonces se indica una excepción de desbordamiento, ETAPA 812. De otra manera, se hace una determinación adicional en cuanto a si el bit Z del campo de máscara es igual a 1, PREGUNTA 814. Si Z es igual a 1, entonces el campo zonificado y los códigos signo son ajustados a "0011", ETAPA 816. De otra manera, el campo zonificado y códigos signo son ajustados a "1111", ETAPA 818.
Subsecuentemente a establecer el campo zonificado y códigos signo, se hace una determinación adicional en cuanto a si el bit S del campo de máscara es ajustado a 1, PREGUNTA 820. Si el bit S no es ajustado a 1, entonces los dígitos de BCD, campo de signo y códigos de campo son almacenados a la memoria en el formato apropiado, ETAPA 822. Un ejemplo de un formato zonificado es como si ue: En este ejemplo, los cuatro bits más a la derecha de un byte son llamados los bits numéricos (N) e incluyen normalmente un código que representa un dígito decimal. Los cuatro bits más a la izquierda de un byte son llamados los bits zonificados (Z) , excepto por el byte más a la derecha de un operando decimal, en donde estos bits pueden ser tratados ya sea como una zona o como un signo (S) .
Volviendo a PREGUNTA 820, si el bit S es igual a 1, entonces se hace una determinación adicional en cuanto a si el bit Z en la máscara está establecido a 1, PREGUNTA 824. Si Z es igual a 1, entonces se hace una determinación en cuanto a si el resultado es igual a cero, ETAPA 826. Si el resultado es igual a cero, entonces el signo del resultado es ajustado a positivo, ETAPA 828. Si el resultado no es ajustado a igual a cero o Z no es igual a uno, entonces el signo del resultado es ajustado al signo de DFP, ETAPA 830.
Subsecuentemente al establecimiento del signo del resultado, se hace una determinación en cuanto a si el signo del resultado es positivo, PREGUNTA 832. Si el signo del resultado no es positivo, entonces el procesamiento continúa con la ETAPA 822, almacenando los dígitos de BCD, campo de signo y códigos de campo a la memoria en el formato apropiado. Sin embargo, si el signo del resultado es positivo, PREGUNTA 832, se hace una determinación adicional en cuanto a si el bit P del campo de máscara es ajustado a 1, PREGUNTA 834. Si el bit P es ajustado a uno, entonces el signo es ajustado igual a 1111; de otra manera, el signo es ajustado igual a 1100, ETAPA 838. Después de ajustar el signo, el procesamiento continúa con la ETAPA 822.
Volviendo a PREGUNTA 800, si esta es una instrucción de convertir a zonificado extendida, entonces se hace una determinación en cuanto a si el campo de longitud especifica una longitud mayor de 33, PREGUNTA 850. Si el campo de longitud especifica una longitud mayor de 33, entonces se especifica una excepción indicando más de 34 dígitos, ETAPA 852. De otra manera, se hace una determinación en cuanto a si el campo de registro (Ri) especifica un par de registros de punto flotante no válido, PREGUNTA 854. Si no, entonces el procesamiento continúa con la ETAPA 806. De otra manera, se provee una excepción, ETAPA 856. Esto completa la descripción de modalidades de la instrucción de convertir a zonificado.
Referida anteriormente es una etapa para convertir dígitos de DFP fuente a dígitos de BCD. Detalles adicionales con respecto a la conversión son descritos posteriormente en la presente, también como en la publicación de IBM® "z/Architecture Principies of Operation" , referida anteriormente, No. SA22-7832-08 , Novena Edición, Agosto de 2010. La descripción a continuación también provee detalles con respecto al proceso de convertir del formato de DFP a zonificado .
En un ejemplo, para el formato de doble precisión, el dígito más significativo de los datos de mantisa a ser convertidos a formato zonificado está contenido en el campo combo, que es de bits 1 -5 de los datos fuente. El bit 0 es el bit de signo, un valor negativo siendo indicado con el bit 0 siendo un "1" .
Los bits 6-13 son el campo de continuación de exponente y son ignorados por esta operación. Los bits 14-63 son el significando trasero codificado y contiene los 15 dígitos restantes de datos decimales y son codificados en el formato de DPD (decimal densamente empacado) .
Para el formato de precisión extendida, en un ejemplo, el dígito más significativo de los datos de mantisa a ser convertidos a formato zonificado está contenido en el campo combo, que son los bits 1 -5 de los datos fuente. El bit 0 es el bit de signo, un valor negativo siendo indicado con el bit 0 siendo "1". Los bits 6-17 son el campo de continuación de exponente y son ignorados por esta operación. Los bits 18-127 son el significando trasero codificado y contiene los 33 dígitos restantes de datos decimales que son codificados en el formato de DPD, Para ambos en los formatos de doble precisión y precisión extendida, los dígitos de significando traseros que son dígitos codificado de DPD son convertidos del formato de DPD al formato de BCD (decimal codificado binario) y el dígito del campo combo (bits 1-5) está pre-pendiente al comienzo de estos dígitos. La conversión de DPD a BCD requiere solamente unas pocas compuertas y por medio de tales compuertas, bloques de datos de DPD de 10 bits son descomprimidos en bloques de datos de BCD de 12 bits, de tal manera que cada bloque de BCD incluye tres números de BCD de 4 bits. La cadena de números es verificada en cuanto a ceros delanteros y es luego comparada con el campo de F2 de la instrucción para determinar si se presenta una situación de desbordamiento y si se presenta, convierte en ceros los dígitos más significativos apropiados (aquellos son los dígitos que no encajarán a la longitud de memoria especificada (especificada por F2) una vez que los datos son expandidos al formato decimal zonificado.
Enseguida los campos zonificados de 4 bits son insertados a la izquierda de cada dígito de BCD de tal manera que cada byte (8 bits) incluye ahora un campo zonificado de 4 bits seguido por un dígito de BCD de 4 bits . Cada campo zonificado es ya sea "0011" o "1111" dependiendo de que el bit Z en el texto es un 0 o un 1. Enseguida, el bit de signo del operando fuente de DFP es usado para determinar un código de signo si S=l en la instrucción. Si los dígitos de BCD son todos 0 y F=l, entonces el signo es ignorado y un código de signo positivo creado. De otra manera, el código de signo generado es el signo del operando fuente de DFP del bit 0 y un signo negativo es codificado como un "1101"; un signo positivo es codificado como un "1100" si P=0 o como un "1111" si P=l. Este código de signo reemplaza luego el código de campo a la izquierda del dígito de BCD menos significativo. (En una modalidad, el signo es procesado en paralelo a los códigos de campo y es insertado a la izquierda del dígito de BCD menos significativo, en lugar del código de campo) . Este resultado es luego escrito a la memoria.
Descritas en detalle anteriormente están dos instrucciones de máquina, CZDT y CZXT que convierten un operando de punto flotante decimal en un registro de punto flotante fuente o par de registros a datos de EBCDIC o ASCII y lo almacena a un sitio de memoria objetivo. Estas instrucciones proveen un medio para mejorar significativamente las cargas de trabajo decimales de almacenamiento a almacenamiento tradicionales. Las operaciones de desempaque de decimales de almacenamiento a almacenamiento tradicionales son aptas de procesar 15 dígitos y un signo que requiere tres operaciones de desempaque traslapantes para procesar un resultado de 31 dígitos (y signo) encontrado comúnmente en aplicaciones, tales como aplicaciones de COBOL. Teniendo que romper el resultado en mini-resultados traslapantes más pequeños se suma a la complejidad del compilador e impacta el desempeño ya que requiere que instrucciones adicionales sean ejecutadas para efectuar una tarea dada. Puesto que CZXT es apto de convertir un operando de DFP que contiene hasta 34 dígitos y un código de signo y almacenarlo a la memoria en una sola instrucción, los compiladores pueden tratar los resultados de 31 dígitos y signo comunes (por ejemplo, resultados de COBOL) como una sola entidad, simplificando el código recopilado y mejorando el desempeño.
Previamente, el proceso requería usar CSDTR o CSXTR para convertir los datos del formato de DFP al formato decimal empacado en GPR. Los datos deben luego ser almacenados de GPR a la memoria, pero puesto que no hay ningún almacenamiento controlado por longitud actualmente en la arquitectura de instrucciones, esto frecuentemente requería una mezcla de operaciones de almacenamiento de palabra, media palabra y bytes . Finalmente, una operación de desempaque o U PKA es necesaria para convertir los datos en la memoria de regreso a EBCDIC o ASCII. Estas nuevas instrucciones permiten que los datos sean convertidos del formato de DFP directamente a EBCDIC y ASCII en una sola etapa. La instrucción de CZDT o CZXT reemplaza ambas de las instrucciones de CSDTR/CSXTR y U PK/U PKA.
Como se apreciará por aquel experimentado en el arte, uno o más aspectos de la presente invención pueden ser implementados como un sistema, método o producto de programa de computadora. Así, uno o más aspectos de la presente invención pueden tomar la forma completamente de una modalidad de elementos físicos, una modalidad completamente de elementos de programación (incluyendo elementos fijos, elementos de programación residentes, micro-códigos, etc.) o una modalidad que combina los aspectos de elementos programación y elementos físicos que pueden todos en general ser referidos en la presente como un "circuito", "módulo" o "sistema". Además, uno o más aspectos de la presente invención pueden tomar la forma de un producto de programa de computadora implementado en una o más medio (s) que se puede (n) leer por computadora que tiene (n) código de programas que se pueden leer por computadora implementados en los mismos .
Cualquier combinación de uno o más medios que se pueden leer por computadora puede ser utilizada. El medio que se puede leer por computadora puede ser un medio de almacenamiento que se puede leer por computadora. Un medio de almacenamiento que se puede leer por computadora puede ser por ejemplo, pero no está limitado a, un sistema, aparato o dispositivo electrónico, magnético, óptico, electromagnético, infrarrojo o de semiconductor o cualquier combinación apropiada de los anteriores. Ejemplos más específicos (una lista no exhaustiva) del medio de almacenamiento que se puede leer por computadora incluyen los siguientes: una conexión eléctrica que tiene una o más líneas o alambres, un disco flexible de computadora portátil, un disco duro, una memoria de acceso aleatorio (RAM) , una memoria de solo lectura (ROM) , una memoria de solo lectura programable borrable (EPROM o memoria instantánea) , una fibra óptica, una memoria de solo lectura de disco compacto portátil (CD-ROM) , un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento magnético o cualquier combinación apropiada de los anteriores. En el contexto de este documento, un medio de almacenamiento que se puede leer por computadora puede ser cualquier medio tangible que puede contener o almacenar un programa para uso por o en relación con un sistema, aparato o dispositivo de ejecución de instrucciones.
Refiriéndose ahora a la Figura 9, en un ejemplo, un producto de programa de computadora 900 incluye, por ejemplo, un medio de almacenamiento que se puede leer por computadora no transitorio 902 para almacenar medios de código de programa que se puede leer por computadora o lógico 904 en el mismo para proveer y facilitar uno o más aspectos de la presente invención.
Los códigos de programa implementados en un medio que se puede leer por computadora pueden ser transmitidos utilizando un medio apropiado, incluyendo pero no limitado a inalámbrico, cableado, cable de fibra óptica, RF, etc., o cualquier combinación apropiada de los anteriores .
Los códigos de programa de computadora para llevar a cabo las operaciones para uno o más aspectos de la presente invención pueden ser escritos en cualquier combinación de un o más lenguajes de programación, incluyendo un lenguaje de programación orientado al objeto, tal como Java, Smalltalk, C++ o los semejantes y lenguajes de programación de procedimientos convencionales, tales como el lenguaje de programación "C", lenguajes de ensamblador o lenguajes de programación similares. Los códigos de programa pueden ejecutarse completamente en la computadora del usuario, parcialmente en la computadora del usuario, como un paquete de elementos de programación autónomos, parcialmente en la computadora del usuario y parcialmente en una computadora remota o completamente en la computadora remota o servidor. En el último escenario, la computadora remota puede ser conectada a la computadora del usuario por medio de cualquier tipo de red, incluyendo un red de área local (LAN) o una red de área amplia ( AN) , o la conexión se puede hacer a una computadora externa (por ejemplo, por medio de Internet utilizando un Proveedor de servicio de Internet) .
Uno o más aspectos de la presente invención son descritos en la presente con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloque del método, aparato (sistemas) y productos de programa de computadora de acuerdo con modalidades de la invención. Se comprenderá que cada bloque de las ilustraciones de diagrama de flujo y/o diagramas de bloque, y combinaciones de bloques en las ilustraciones de diagrama de flujo y/o diagramas de bloque, pueden ser implementados por instrucciones de programa de computadora. Estas instrucciones de programa de computadora pueden ser provistas a un procesador de una computadora de multiuso, una computadora de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de tal manera que las instrucciones, que se ejecutan vía el procesador de la computadora u otro aparato de procesamiento de datos programable, crea medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque de diagrama de bloques o bloques.
Estas instrucciones de programa de computadora pueden también ser almacenadas en un medio que se puede leer por computadora que puede dirigir a una computadora, otro aparato de procesamiento de datos programable u otros dispositivos para funcionar de una manera particular, de tal manera que las instrucciones almacenadas en el medio que se puede leer por computadora producen un artículo de manufactura que incluye instrucciones que implementan la función/acción especificada en el diagrama de flujo y/o bloque o bloques del diagrama de bloques .
Las instrucciones de programa de computadora pueden también ser cargadas a una computadora, otro aparato de procesamiento de datos programable, u otros dispositivos para provocar que una serie de etapas operacionales sean efectuadas en la computadora, otro aparato programable u otros dispositivos para producir un proceso implementado por computadora, de tal manera que las instrucciones, cuando se ejecutan en la computadora u otro aparato programable proveen procesos para implementar las funciones/acciones especificadas en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
El diagrama de flujo y diagramas de bloques en las figuras ilustran la arquitectura, funcionalidad y operación de implementaciones posibles de sistemas, métodos y productos de programa de computadora de acuerdo con varias modalidades de uno o más aspectos de la presente invención. A este respecto, cada bloque en el diagrama de flujo o diagramas de bloque pueden representar un módulo, segmento o porción de códigos, que comprenden una o más instrucciones ejecutables para implementar la(s) función(es) lógica(s) especificada (s) . Se debe también notar que, en algunas implementaciones alternativas, las funciones indicadas en el bloque pueden ocurrir fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden en efecto ser ejecutados sustancialmente de manera concurrente, o los bloques pueden algunas veces ser ejecutados en el orden inverso, dependiendo de la funcionalidad involucrada. También se notará que cada bloque de los diagramas de bloque y/o ilustración de diagrama de flujo, y combinaciones de bloques en los diagramas de bloques y/o ilustración de diagrama de flujo, pueden ser implementados mediante sistemas a base de elementos físicos de propósito especial que efectúan las funciones o acciones especificadas, o combinaciones de elementos físicos de propósito especial e instrucciones de computadora .
Además de los anteriores, uno o más aspectos de la presente invención pueden ser provistos, ofrecidos, desplegados, manejados, servidos, etc. por un proveedor de servicio que ofrece el manejo de medios ambientes del cliente. Por ejemplo, el proveedor de servicio puede crear, mantener, soportar, etc. códigos de computadora y/o una inf aestructura de computadora que efectúa uno o más aspectos de la presente invención para uno o más clientes. En respuesta, el proveedor de servicio puede recibir pago del cliente bajo una suscripción y/o acuerdo de cuota, como ejemplos. Adicional o alternativamente, el proveedor de servicio puede recibir pago de la venta de contenido de publicidad a una o más terceras partes.
En un aspecto de la presente invención, una aplicación puede ser desplegada para efectuar uno o más aspectos de la presente invención. Como un ejemplo, el despliegue de una aplicación comprende proveer infraestructura de computadora operable para efectuar uno o más aspectos de la presente invención.
Como un aspecto adicional de la presente invención, una infraestructura de cómputo puede ser desplegada que comprende integrar códigos que se pueden leer por computadora a un sistema de cómputo, en el cual los códigos en combinación con el sistema de cómputo son aptos de efectuar uno o más aspectos de la presente invención.
Como todavía un aspecto adicional de la presente invención, se puede proveer un proceso para integrar infraestructura de cómputo que comprende integrar códigos que se pueden leer por computadora a un sistema de computadora. El sistema de computadora comprende un medio que se puede leer por computadora, en el cual el medio de computadora comprende uno o más aspectos de la presente invención. Los códigos en combinación con el sistema de computadora son aptos de efectuar uno o más aspectos de la presente invención.
Aunque varias modalidades son descritas anteriormente, estas son solo ejemplos. Por ejemplo, medios ambientes de cómputo de otras arquitecturas pueden incorporar y usar uno o más aspectos de la presente invención. Además, aunque ciertos campos y/o bits son descritos, otros pueden ser usados también. Adicionalmente, algunas etapas de los diagramas de flujo pueden ser efectuadas en paralelo o en un orden diferente. Muchos cambios y/o adiciones se pueden hacer sin desviarse del alcance de la presente invención.
Además, otros tipos de medios ambientes de cómputo se pueden beneficiar de uno o más aspectos de la presente invención. Como un ejemplo, un sistema de procesamiento de datos apropiado para almacenar y/o ejecutar código de programa es utilizable que incluye por lo menos dos procesadores acoplados directa o indirectamente a elementos de memoria por medio de una línea de distribución principal del sistema. Los elementos de memoria incluyen, por ejemplo, memoria local empleada durante la ejecución real de los códigos de programa, almacenamiento global y memoria que provee almacenamiento temporal de por lo menos algún código de programa con el fin de reducir el número de veces que los códigos deben ser recuperados del almacenamiento global durante la ejecución.
Dispositivos de Entrada/Salida o dispositivos I/O (incluyendo pero no limitado a teclados, pantallas, dispositivos de apuntamiento, DASD, cinta, CD, DVD, unidades de pulgar y otros medios de memoria, etc.) pueden ser acoplados al sistema ya sea directamente o por medio de controladores 1/0 intermedios. Adaptadores de red pueden también ser acoplados al sistema para permitir que el sistema de procesamiento de datos sea acoplado a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento por medio de redes privadas o públicas intermedias. Módems, módems de cable y tarjetas de Ethernet son solo unos pocos de los tipos disponibles de adaptadores de red.
Otros ejemplos de medios ambientes de cómputo que pueden incorporar y/o usar uno o más aspectos de la presente invención son descritos posteriormente en la presente .
Refiriéndose a la Figura 10, componentes representativos de un sistema de computadora huésped 5000 para implementar uno o más aspectos de la presente invención son ilustrados. La computadora huésped representativa 5000 comprende una o más CPU 5001 en comunicación con memoria de computadora 5002 (esto es, almacenamiento central) , también como interfases de I/O a dispositivos de medios de almacenamiento 5011 y redes 5010 para comunicación con otras computadoras o SAN y los semejantes. La CPU 5001 cumple con una arquitectura que tiene un conjunto de instrucción de arquitectura y funcionalidad de arquitectura. La CPU 5001 puede tener traducción de dirección dinámica (DAT) 5003 para transformar direcciones de programa (direcciones virtuales) a direcciones reales de memoria. Una DAT incluye comúnmente una memoria temporal de vista lateral de traducción (TLB) 5007 para guardar en memoria caché traducciones de tal manera que los accesos más tarde al bloque de la memoria de computadora 5002 no requieren el retardo de traducción de dirección. Comúnmente, una memoria caché 5009 es empleada entre la memoria de computadora 5002 y el procesador 5001. La memoria caché 5009 puede ser jerárquica teniendo una memoria caché grande disponible a más de una CPU y memoria caché más pequeña, más rápida (nivel inferior) entre la memoria caché grande y cada CPU. En algunas implementaciones , las memorias caché de nivel inferior son divididas para proveer memorias caché de nivel bajo para recuperación de instrucciones de acceso de datos. En una modalidad, una instrucción es recuperada de la memoria 5002 por una unidad de recuperación de instrucciones 5004 vía una memoria caché 5009. La instrucción es descodificada en una unidad de descodificación de instrucciones 5006 y despachada (con otras instrucciones en algunas modalidades) a la unidad o unidades de ejecución de instrucciones 5008. Comúnmente, varias unidades de ejecución 5008 son empleadas, por ejemplo una unidad de ejecución aritmética, una unidad de ejecución de punto flotante y una unidad de ejecución de instrucción ramal. La instrucción es ejecutada por la unidad de ejecución, operandos de acceso de registros especificados de instrucción o memoria como sea necesario. Si se va a tener acceso a un operando (cargado o almacenado) de la memoria 5002, una unidad de carga/almacenamiento 5005 comúnmente maneja el acceso bajo el control de la instrucción que es ejecutada. Las instrucciones pueden ser ejecutadas en circuitos de elementos físicos o en microcódigos internos (elementos fijos) o por una combinación de ambos.
Como se indica, un sistema de computadora incluye información en el almacenamiento local (o principal) , también como direccionamiento, protección y referencia y registro de cambios. Algunos aspectos de direccionamiento incluyen el formato de direcciones, el concepto de espacio de dirección, los varios tipos de direcciones y la manera en la cual un tipo de dirección es traducida a otro tipo de dirección. Algo del almacenamiento principal incluye sitios de almacenamiento asignados permanentemente. El almacenamiento principal provee al sistema con almacenamiento de datos de acceso rápido direccionable directamente . Ambos de los datos y programas van a ser cargados al almacenamiento principal (desde dispositivos de entrada) antes de que puedan ser procesados.
El almacenamiento principal puede incluir uno o más almacenamientos de memoria temporal o memoria intermedia de acceso más rápido más pequeño, algunas veces llamados memorias caché. Una memoria caché está comúnmente asociada físicamente con una CPU o un procesador de 1/0. Los efectos, excepto el desempeño, de la construcción física y uso de medios de almacenamiento distintos son en general no observables por el programa.
Memorias caché separadas pueden ser mantenidas para instrucciones y para operandos de datos. La información dentro de una memoria caché es mantenida en bytes contiguos en una frontera integral llamada un bloque de memoria caché o línea de memoria caché (o línea, por brevedad) . Un modelo puede proveer una instrucción de extraer ATRIBUTO DE CACH, que devuelve el tamaño de una línea de caché en bytes . Un modelo puede también proveer INSTRUCCIONES DE PREEXTRAER DATOS y instrucciones de PREEXTRAER DATOS RELATIVAMENTE LARGOS que efectúan la preextraccion de almacenamiento a los datos o memoria caché de instrucciones o la liberación de datos de la memoria caché .
El almacenamiento es visto como una cadena de bits horizontal larga. Para la mayoría de las operaciones, accesos al almacenamiento proceden en secuencia de izquierda a derecha. La cadena de bits es subdividida en unidades de ocho bits. Una unidad de ocho bits es llamada un byte, que es el bloque de construcción básico de todos los formatos de información. Cada sitio de byte en almacenamiento es identificado por un número entero no negativo único, que es la dirección de aquel sitio de byte o, simplemente, la dirección de byte. Los sitios de byte adyacentes tienen direcciones consecutivas, empezando con 0 a la izquierda y procediendo en la secuencia de izquierda a derecha. Las direcciones son asignadas a números enteros binarios enteros y son de 24, 31 ó 64 bits.
La información es transmitida entre el almacenamiento y una CPU o un sistema de canal de un byte o un grupo de bytes a la vez. A no ser que se especifique de otra manera, por ejemplo, la z/Architecture®, un grupo de bytes en almacenamiento es direccionado por el byte más a la izquierda del grupo. El número de bytes en el grupo es ya sea especificado implícita o explícitamente por la operación a ser efectuada. Cuando se usa en una operación de CPU, un grupo de bytes es llamado un campo. Dentro de cada grupo de bytes, en por ejemplo, la z/Architecture®, los bits son numerados en secuencia de izquierda a derecha. En la z/Architecture®, los bits más a la izquierda son algunas veces referidos como los bits de "orden alto" y los bits más a la derecha son los bits de "orden bajo". Los números de bits no son direcciones de almacenamiento, sin embargo. Solamente los bytes pueden ser direccionados . Para operar sobre bits individuales de un byte en almacenamiento, se tiene acceso a todo el byte. Los bits en un byte son numerados de 0 a 7, de izquierda a derecha (en, por ejemplo, la z/Architecture®) . Los bits en una dirección pueden ser numerados 8-31 ó 40-63 para direcciones de 24 bits, o 1-31 ó 33-63 para direcciones de 31 bits; son numerados de 0-63 para direcciones de 64 bits . Dentro de cualquier otro formato de longitud fija de múltiples bytes, los bits que componen el formato son numerados consecutivamente empezando desde 0. Por propósitos de detección de error y preferiblemente para corrección, uno o más bits de verificación pueden ser transmitidos con cada byte o con un grupo de bytes. Tales bits de verificación son generados automáticamente por la máquina y no pueden ser controlados directamente por el programa. Las capacidades de almacenamiento son expresadas en número de bytes . Cuando la longitud de un campo de almacenamiento-operando es implicada por el código de operación de una instrucción, se dice que el campo tiene una longitud fija, que puede ser de uno, dos, cuatro, ocho o dieciséis bytes. Campos más grandes pueden ser implicados para algunas instrucciones . Cuando la longitud de un campo de almacenamiento-operando no es implicada pero es afirmada explícitamente, se dice que el campo tiene una longitud variable. Los operandos de longitud variable pueden variar en longitud por incrementos de un byte (o con algunas instrucciones, en múltiplos de dos bytes u otros múltiplos) . Cuando la información es colocada en almacenamiento, el contenido de solamente aquellos sitios de byte son reemplazados que están incluidos en el campo designado, aunque el ancho de la ruta física al almacenamiento puede ser mayor que la longitud del campo que es almacenado.
Ciertas unidades de información van a estar en una frontera integral en almacenamiento. Una frontera es llamada integral para una unidad de información cuando su dirección de almacenamiento es un múltiplo de la longitud de la unidad en bytes. Se dan nombres especiales a los campos de 2, 4, 8, y 16 bytes en una frontera integral . Una media palabra es un grupo de dos bytes consecutivos en una frontera de dos bytes y es el bloque de construcción básico de instrucciones. Una palabra es un grupo de cuatro bytes consecutivos en una frontera de cuatro bytes . Una doble palabra es un grupo de ocho bytes consecutivos en una frontera de ocho bytes. Una cuadripalabra es un grupo de 16 bytes consecutivos en una frontera de 16 bytes. Cuando las direcciones de almacenamiento designan medias palabras, dobles palabras y cuadripalabras , la representación binaria de la dirección contiene uno, dos, tres o cuatro bits cero más a la derecha, respectivamente . Las instrucciones van a estar sobre fronteras integrales de dos bytes. Los operandos de almacenamiento de la mayoría de las instrucciones no tienen requerimientos de alineación de frontera.
En dispositivos que implementan memorias cachés separadas para instrucciones y operandos de datos, se puede experimentar un retardo significativo si el programa se almacena a una línea de caché de la cual las instrucciones son recuperadas subsecuentemente, sin consideración de si el almacenamiento altera las instrucciones que son subsecuentemente recuperadas .
En una modalidad, la invención se puede llevar a la práctica por elementos de programación (algunas veces referidos como códigos internos con licencia, elementos fijos, micro-códigos, mili-códigos, pico-códigos y los semejantes, cualquiera de los cuales serían consistentes con uno o más aspectos de la presente invención) . Refiriéndose a la Figura 10, los códigos de programa de elementos de programación que implementan uno o más aspectos de la presente invención pueden ser accedidos por el procesador 5001 del sistema 5000 de dispositivos de medios de almacenamiento a largo plazo 5011, tal como una unidad de CD-ROM, unidad de cinta o unidad de disco duro. Los códigos de programa de elementos de programación pueden ser implementados en cualquiera de una variedad de medios conocidos para uso con un sistema de procesamiento de datos, tal como un disco flexible, disco duro, o CD-ROM. Los códigos pueden ser distribuidos en tales medios o pueden ser distribuidos a usuarios de la memoria de computadora 5002 o almacenamiento de un sistema de computadora sobre una red 5010 a otros sistemas de computadora para uso por usuarios de tales otros sistemas.
Los códigos de programa de elementos de programación incluyen un sistema operativo que controla la función e interacción de los varios componentes de computadora y uno o más programas de aplicación. Los códigos de programa son normalmente buscados del dispositivo de medio de almacenamiento 5011 al almacenamiento de computadora relativamente velocidad superior 5002 en donde están disponibles para procesamiento por el procesador 5001. Las técnicas y métodos para implementar códigos de programa de elementos de programación en memoria, el medio físico, y/o códigos de elementos de programación de distribución vía redes son bien conocidos y no serán discutidos además en la presente. Los código de programa, cuando son creados y almacenados en un medio tangible (incluyendo pero no limitado a módulos de memoria electrónicos (RAM) , memoria instantánea, discos compactos (CD) , DVD, cinta magnética y los semejantes son frecuentemente referidos como "producto de programa de computadora" . El medio de producto de programa de computadora comúnmente se puede leer por un circuito de procesamiento, preferiblemente en un sistema de computadora para ejecución por el circuito de procesamiento.
La Figura 11 ilustra una estación de trabajo representativa o sistema de elementos físicos del servidor en el cual uno o más aspectos de la presente invención se pueden llevar a la práctica. El sistema 5020 de la Figura 11 comprende un sistema de computadora base representativo 5021, tal como una computadora personal, una estación de trabajo o un servidor, que incluye dispositivos periféricos opcionales. El sistema de computadora base 5021 incluye uno o más procesadores 5026 y un línea de distribución principal empleada para conectar y permitir la comunicación entre los procesadores 5026 y los otros componentes del sistema 5021 de acuerdo con técnicas conocidas. La línea de distribución conecta el procesador 5026 a la memoria 5025 y el almacenamiento a largo plazo 5027 que puede incluir una unidad de disco duro (incluyendo cualquiera de medios magnéticos, CD, DVD y memoria instantánea por ejemplo) o una unidad de cinta por ejemplo. El sistema 5021 podría también incluir un adaptador de interfase de usuario, que conecta el microprocesador 5026 vía la línea de distribución principal a uno o más dispositivos de interfase, tales como un teclado 5024, un ratón 5023, una impresora/escáner 5030 y/u otros dispositivos de interfase, que pueden ser cualquier dispositivo de interfase del usuario, tal como una pantalla sensible al contacto, almohadilla de entrada digitalizada, etc. La línea de distribución también conecta un dispositivo de pantalla 5022, tal como una pantalla de LCD o monitor, al microprocesador 5026 vía un adaptador de pantalla.
El sistema 5021 se puede comunicar con otras computadoras o redes de computadoras por medio de un adaptador de red apto de comunicación 5028 con una red 5029. Adaptadores de red ejemplares son canales de comunicación, token ring, Ethernet o módems . Alternativamente, el sistema 5021 se puede comunicar utilizando una interfase inalámbrica, tal como una tarjeta de CDPD (datos de paquete digital celular) . El sistema 5021 puede estar asociado con otras de tales computadoras en una red de área local (LAN) o una red de área amplia (WAN) , o el sistema 5021 puede ser un cliente en un arreglo de cliente/servidor con otra computadora, etc. Todas estas configuraciones, también como los elementos físicos y elementos de programación de comunicaciones apropiados, son conocidos en el arte.
La Figura 12 ilustra una red de procesamiento de datos 5040 en la cual uno o más aspectos de la presente invención se pueden llevar a la práctica. La red de procesamiento de datos 5040 puede incluir una pluralidad de redes individuales, tal como una red inalámbrica y una red cableada, cada una de las cuales puede incluir una pluralidad de estaciones de trabajo individuales 5041, 5042, 5043, 5044. Adicionalmente, aquellos experimentados en el arte apreciarán que una o más LAN pueden ser incluidas, en donde una LAN puede incluir una pluralidad de estaciones de trabajo inteligentes acopladas a un procesador huésped.
Todavía refiriéndose a la Figura 12, las redes pueden también incluir computadoras principales o servidores, tal como una computadora de compuerta (servidor cliente 5046) o servidor de aplicación (servidor remoto 5048 que puede acceder a un depósito de datos y puede también ser accedido directamente de una estación de trabajo 5045) . Una computadora de compuerta 5046 sirve como punto de entrada a cada red individual . Una compuerta es necesaria cuando se conecta un protocolo de red a otro. La compuerta 5046 puede ser acoplada preferiblemente a otra red (Internet 5047 por ejemplo) por medio de un enlace de comunicaciones. La compuerta 5046 puede también ser acoplada directamente a una o más estaciones de trabajo 5041, 5042, 5043, 5044 utilizando un enlace de comunicaciones . La computadora de compuerta puede ser implementada utilizando un servidor eServer™ System z® de IBM disponible de International Business Machines Corporation.
Refiriéndose concurrentemente a la Figura 11 y Figura 12, los códigos de programación de elementos de programación que pueden implementar uno o más aspectos de la presente invención pueden ser accedidos por el procesador 5026 del sistema 5020 de los medios de almacenamiento a largo plazo 5027, tal como una unidad de CD- drive o unidad de disco duro. Los códigos de programación de elementos de programación pueden ser implementados en cualquiera de una variedad de medios conocidos para uso con un sistema de procesamiento de datos, tal como un disco flexible, disco duro o CD-ROM. Los códigos pueden estar distribuidos en tales medios o pueden ser distribuidos a usuarios 5050, 5051 de la memoria o almacenamiento de un sistema de computadora en una red a otros sistemas de computadora para uso por los usuarios de tales otros sistemas.
Alternativamente, los códigos de programación pueden ser implementados en la memoria 5025 y accedidos por el procesador 5026 utilizando la línea de distribución del procesador. Tales códigos de programación incluyen un sistema operativo que controla la función e interacción de los varios componentes de computadora y uno o más programas de aplicación 5032. Los códigos de programa son llamados normalmente de los medios de almacenamiento 5027 a la memoria de alta velocidad 5025 en donde está disponible para procesamiento por el procesador 5026. Las técnicas y métodos para implementar códigos de programación de elementos de programación en memoria, en medios físicos y/o distribuir códigos de elementos de programación vía redes son bien conocidos y no serán discutidos adicionalmente en la presente. Los códigos de programa, cuando son creados y almacenados en un medio tangible (incluyendo pero no limitado a módulos de memoria electrónicos (RAM) , memoria instantánea, discos compactos (CD) , DVD, cinta magnética y los semejantes son referidos frecuentemente como "producto de programa de computadora" . El medio de producto de programa de computadora se puede leer comúnmente por un circuito de procesamiento preferiblemente en un sistema de computadora para ejecución por el circuito de procesamiento.
La memoria caché está en su mayoría disponible fácilmente al procesador (normalmente más rápida y más pequeña que otras memorias caché del procesador) es la memoria caché más baja (Ll o nivel uno) y el almacenamiento principal (memoria principal) es la memoria caché de nivel más alto (L3 si hay 3 niveles) . La memoria caché de nivel más bajo es frecuentemente dividida en una memoria caché de instrucciones (Cache I) que mantiene instrucciones de la máquina a ser ejecutadas y una memoria caché de datos (D-Cache) que contiene operandos de datos.
Refiriéndose a la Figura 13, una modalidad de procesador ejemplar es ilustrada para el procesador 5026. Comúnmente uno o más niveles de memoria caché 5053 son empleados para almacenar en memoria temporal bloques de memoria con el fin de mejorar el desempeño del procesador. La memoria caché 5053 es una memoria caché de alta velocidad que contiene líneas de datos de memoria caché que son probables de ser usados. Las líneas de caché típicas son de 64, 128 ó 256 bytes de datos de memoria. Memorias cachés separadas son frecuentemente empleadas para almacenar en memoria caché instrucciones que para guardar en memoria caché datos. Coherencia de caché (sincronización de copias de líneas en memoria y las memorias caché) es frecuentemente provista por varios algoritmos "espía" bien conocidos en el arte. El almacenamiento de memoria principal 5025 de un sistema de procesador es frecuentemente referido como una memoria caché . En un sistema de procesador que tiene 4 niveles de caché 5053, el almacenamiento principal 5025 es algunas veces referido como la memoria caché nivel 5 (L5) puesto que es comúnmente más rápida y contiene solamente una porción del almacenamiento no volátil (DASD, cinta, etc.) que está disponible a un sistema de computadora. El almacenamiento principal 5025 "guarda en caché" páginas de datos buscados dentro y fuera del almacenamiento principal 5025 por el sistema operativo.
Un contador de programa (contador de instrucciones) 5061 mantiene el seguimiento de la dirección de la instrucción actual a ser ejecutada. Un contador de programa en un procesador de z/Architecture® es de 64 bits y puede ser truncado a 31 ó 24 bits para soportar límites de direccionamiento previos. Un contador de programa es implementado comúnmente en una PSW (palabra de estatus de programa) de una computadora de tal manera que persiste durante el cambio de contexto. Así, un programa en avance, que tiene un valor de contador de programa, puede ser interrumpido por, por ejemplo, el sistema operativo (cambio de contexto del medio ambiente de programa al medio ambiente del sistema operativo) . La PSW del programa mantiene el valor del contador del programa mientras que el programa no está activo y el contador de programa (en la PSW) del sistema operativo es usado mientras que el sistema operativo se está ejecutando. Comúnmente, el contador de programa es incrementado por una cantidad igual al número de bytes de la instrucción actual. Las instrucciones de RISC (Cómputo de Conjunto de Instrucciones Reducido) son comúnmente de longitud fija mientras que las instrucciones de CISC (Cómputo de Conjunto de Instrucciones Complejas) es comúnmente de longitud variable. Las instrucciones de la z/Architecture® de IBM son instrucciones de CISC que tienen una longitud de 2 , 4 ó 6 bytes. El contador de programa 5061 es modificado ya sea por una operación de cambio de contexto o una operación de toma ramal de una instrucción ramal por ejemplo. En una operación de cambio de contexto, el valor de contador de programa actual es guardado en la palabra de estatus de programa junto con otra información de estado acerca del programa que es ejecutado (tales como códigos de condición) , y un nuevo valor de contador de programa es cargado apuntando a una instrucción de un nuevo módulo de programa a ser ejecutado. Una operación de toma ramal es efectuada con el fin de permitir que el programa tome decisiones o efectúe bucles dentro del programa al cargar el resultado de la instrucción ramal al contador de programa 5061.
Comúnmente, una unidad de extracción de instrucciones 5055 es empleada para recuperar instrucciones a nombre del procesador 5026. La unidad de extracción ya sea extrae "próximas instrucciones secuenciales" , instrucciones objetivo de instrucciones tomadas ramales o primeras instrucciones de un programa enseguida de un cambio de contexto. Las unidades de extracción de instrucciones modernas frecuentemente emplean técnicas de pre-extracción para pre-extraer especulativamente instrucciones a base de la propiedad de que las instrucción pre-extraídas podrían ser usadas. Por ejemplo, una unidad de extracción puede extraer 16 bytes de instrucción que incluyen la siguiente instrucción secuencial si bytes adicionales de instrucciones secuenciales adicionales .
Las instrucciones extraídas son luego ejecutadas por el procesador 5026. En una modalidad, la(s) instrucción (es) extraída(s) se hace(n) pasar a una unidad de despacho 5056 de la unidad de extracción. La unidad de despacho decodifica la(s) instrucción (es) y envía información acerca de la(s) instrucción (es) descodificada (s) a unidades apropiadas 5057, 5058, 5060. Una unidad de ejecución 5057 comúnmente recibirá información acerca de instrucciones aritméticas descodificadas de la unidad de extracción de instrucciones 5055 y efectuará operaciones aritméticas sobre operandos de acuerdo con el código de operación de la instrucción. Los operandos son provistos a la unidad de ejecución 5057 preferiblemente ya sea de la memoria 5025, registros de arquitectura 5059 o de un campo inmediato de la instrucción que es ejecutada. Los resultados de la ejecución, cuando son almacenados, son almacenados ya sea en la memoria 5025, registros 5059 o en otros elementos físicos de la máquina (tales como registros de control, registros de PSW y los semejantes) .
Un procesador 5026 comúnmente tiene una o más unidades 5057, 5058, 5060 para ejecutar la función de la instrucción. Refiriéndose a la Figura 14A, una unidad de ejecución 5057 se puede comunicar con registros generales de arquitectura 5059, una unidad de descodificación/despacho 5056, una unidad de almacenamiento de carga 5060 y otras unidades de procesador 5065 por medio de los lógicos de interconexión 5071. Una unidad de ejecución 5057 puede emplear varios circuitos de registro 5067, 5068, 5069 para mantener información sobre la unidad lógica aritmética (ALU) 5066 operará. La ALU efectúa operaciones aritméticas tales como suma, resta, multiplicación y división también como función lógica tal como y o exclusivo (XOR) , girar y desplazamiento. Preferiblemente, la ALU soporta operaciones especializadas que son dependientes del diseño. Otros circuitos pueden proveer otras instalaciones arquitectónicas 5072 incluyendo códigos de condición y lógico de soporte de recuperación por ejemplo. Comúnmente, el resultado de una operación de ALU es mantenido en un circuito registro de salida 5070 que puede enviar el resultado a una variedad de otras funciones de procesamiento. Hay muchos arreglos de unidades de procesador, la descripción presente solamente pretende proveer un entendimiento representativo de una modalidad.
Una instrucción de Sumar por ejemplo sería ejecutada en una unidad de ejecución 5057 que tiene funcionalidad aritmética y lógica mientras que una instrucción de punto flotante por ejemplo sería ejecutada en una ejecución de punto flotante que tiene capacidad de punto flotante especializada. Preferiblemente, una unidad de ejecución opera sobre operandos identificados por una instrucción al efectuar una función definida por código de operación sobre los operandos. Por ejemplo, una instrucción de Sumar puede ser ejecutada por una unidad de ejecución 5057 sobre operandos encontrados en dos registro 5059 identificados por campos de registro de la instrucción.
La unidad de ejecución 5057 efectúa la adición aritmética sobre dos operandos y almacena el resultado en un tercer operando en donde el tercer operando puede ser un tercer registro o uno de los dos registros fuente. La unidad de ejecución utiliza preferiblemente una Unidad Lógica Aritmética (ALU) 5066 que es apta de efectuar una variedad de funciones lógicas tales como Desplazar, Girar, Y, 0 y XOR también como una variedad de funciones algebraicas incluyendo cualquiera de sumar, restar, multiplicar, dividir. Algunas ALU 5066 están diseñadas para operaciones escalares y algunos para punto flotante. Los datos pueden ser Big Endian (en donde el byte menos significativo está en la dirección de byte más alta) o Little Endian (en donde el byte menos significativo está en la dirección de byte más baja) dependiendo de la arquitectura. La z/Architecture® de IBM es Big Endian. Los campos con signo pueden ser destino y magnitud, 1er complemento o 2do complemento dependiendo de la arquitectura. Un número de complemento 3 es ventajoso en que la ALU no necesita diseñar una capacidad de restar puesto que ya sea un valor negativo o un valor positivo en el complemento de 2 requiere solamente una adición dentro de la ALU. Los números son comúnmente descritos en breve, en donde un campo de 12 bits define una dirección de un bloque de 4,096 bytes y es descrito comúnmente como un bloque de 4 Kbytes (Kilo-byte) , por ejemplo.
Refiriéndose a la Figura 14B, la información de instrucción ramal para ejecutar una instrucción ramal es enviada comúnmente a una unidad ramal 5058 que frecuentemente emplea un algoritmo de predicción ramal tal como una tabla de historia ramal 5082 para predecir el resultado de la rama antes de que otras operaciones condicionales estén completas. El objetivo de la instrucción ramal actual será extraído y ejecutado especulativamente antes de que las operaciones condicionales estén completas. Cuando las operaciones condicionales están completas, las instrucciones ramales ejecutadas especulativamente con ya completada o descartada en base a las condiciones de la operación general y el resultado especulado. Una instrucción ramal típica puede probar códigos de condición y ramificarse a una dirección objetivo si los códigos de condición cumplen con el requerimiento ramal de la instrucción ramal, una dirección objetivo puede ser calculada en base a varios números incluyendo los encontrados en los campos de registro o un campo inmediato de la instrucción por ejemplo. La unidad ramal 5058 puede emplear una ALU 5074 que tiene una pluralidad de circuitos de registro de entrada 5075, 5076, 5077 y un circuito de registro de salida 5080. La unidad ramal 5058 se pude comunicar con registros generales 5059, unidad de despacho de descodificación 5056 u otros circuitos 5073, por ejemplo.
La ejecución de un grupo de instrucciones puede ser interrumpida para una variedad de razones incluyendo un cambio de contexto iniciado por un sistema operativo, una excepción o error de programa que provoca un cambio de contexto, una señal de interrupción de I/O que provoca un cambio de contexto o actividad de multi-hebras de una pluralidad de programas (en un medio ambiente de multi- hebras), por ejemplo. Preferiblemente una acción de cambio de contexto guarda información de estado acerca de un programa que se ejecuta actualmente y luego carga la información de estado acerca de otro programa que es invocado. La información de estado puede ser guardada en registros de elementos físicos o en memoria por ejemplo. La información de estado comprende preferiblemente un valor de contador de programa que apunta a una siguiente instrucción a ser ejecutada, código de condición, información de traducción de memoria y contenido de registro de arquitectura. Una actividad de cambio de contexto puede ser ejercitada por circuitos de elementos físicos, programas de aplicación, programas de sistema operativo o códigos de elementos fijos (microcódigos, pico-códigos o códigos internos con licencia (LIC) ) solos o en combinación.
Un procesador accede a operandos de acuerdo con métodos definidos por instrucciones. La instrucción puede proveer un operando inmediato utilizando el valor de una porción de la instrucción, puede proveer uno o más campos de registro que apuntan explícitamente ya sea a registros de propósito universal o registros de propósito especial (registros de punto flotante, por ejemplo) . La instrucción puede utilizar registros implicados identificados por un campo de código de operación como operandos. La instrucción puede utilizar sitios de memoria para operandos. Un sitio de memoria de un operando puede ser provisto por un registro, un campo inmediato o una combinación de registros y campo inmediato como es ejemplificado por el equipo de desplazamiento largo de z/Architecture® en donde la instrucción define un registro base, un registro índice y un campo inmediato (campo de desplazamiento) que son sumados con untamente para proveer la dirección del operando en memoria por ejemplo. La ubicación en la presente implica comúnmente una ubicación en la memoria principal (almacenamiento principal) a no ser que se indique de otra manera.
Refiriéndose a la Figura 1 C, un procesador accede al almacenamiento utilizando una unidad de carga/almacenamiento 5060. La unidad de carga/almacenamiento 5060 puede efectuar una operación de carga al obtener la dirección del operando objetivo en memoria 5053 y cargar el operando en un registro 5059 u otro sitio 5053 de memoria o puede efectuar una operación de almacenamiento al obtener la dirección del operando objetivo en la memoria 5053 y almacenar datos obtenidos de un registro 5059 u otro sitio de memoria 5053 en el sitio de operando objetivo en la memoria 5053. La unidad de carga/almacenamiento 5060 puede ser especulativa y puede acceder a la memoria en una secuencia que está fuera de orden en relación con la secuencia de instrucciones, sin embargo la unidad de carga/almacenamiento 5060 es para mantener la apariencia a programas que las instrucciones fueron ejecutadas en orden. Una unidad de carga/almacenamiento 5060 se puede comunicar con registros generales 5059, unidad de descodificación/despacho 5056, interfase de caché/memoria 5053 u otros elementos 5083 y comprender varios circuitos de registro, ALU 5085 y lógico de control 5090 para calcular direcciones de almacenamiento y proveer secuencia de vencimiento para mantener las operaciones en orden. Algunas operaciones pueden estar fuera de orden pero la unidad de carga/almacenamiento provee funcionalidad para hacer que las operaciones fuera de orden aparezcan al programa como habiendo sido efectuadas en orden, como es bien conocido en el arte.
Preferiblemente las direcciones que un programa de aplicación "ve" son frecuentemente referidas como direcciones virtuales. Las direcciones virtuales son algunas veces referidas como "direcciones lógicas" y "direcciones efectivas" . Estas direcciones virtuales son virtuales en que son redirigidas al sitio de memoria físico mediante uno de una variedad de tecnologías de traducción de dirección dinámica (DAT) incluyendo pero no limitado a, simplemente prefijar una dirección virtual con un valor de desplazamiento, traducir la dirección virtual vía una o más tablas de traducción, las tablas de traducción comprenden preferiblemente por lo menos una tabla de segmento y una tabla de página sola o en combinación, preferiblemente, la tabla de segmento tiene una entrada que apunta a la tabla de página. En la z/Architecture®, se provee una jerarquía de traducción que incluye una primera tabla de región, una segunda tabla de región, una tercera tabla de región, una tabla de segmento y una tabla de página opcional. La incursión de la traducción de dirección es frecuentemente mejorada al utilizar una memoria temporal o intermedia lateral de traducción (TLB) que comprende mapeo de entradas de una dirección virtual a un sitio de memoria físico asociado. Las entradas son creadas cuando la DAT traduce una dirección virtual utilizando las tablas de traducción. El uso subsecuente de la dirección virtual puede luego utilizar la entrada de la TLB más rápida en lugar de los accesos de tabla de traducción secuencial lentos. El contenido de TLB puede ser manejado por una variedad de algoritmos de reemplazo incluyendo LRU (Último Recién Usado) .
En el caso en donde el procesador es un procesador de un sistema de muíti-procesador, cada procesador tiene responsabilidad para mantener recursos compartidos, tales como I/O, memorias caché, TLB y memoria, entrelazados en cuanto a coherencia. Comúnmente, tecnologías "espía" serán utilizadas en mantener coherencia de memoria caché. En un medio ambiente de espía, cada línea caché puede ser marcada como estando en cualquiera de un estado compartido, un estado exclusivo, un estado cambiado, un estado no válido y los semejantes con el fin de facilitar la compartición.
Las unidades de 1/0 5054 (Figura 13) proveen al procesador con medios para anexar a dispositivos periféricos incluyendo cinta, disco, impresoras, pantallas y redes por ejemplo. Las unidades de 1/0 son frecuentemente presentadas al programa de computadora por controladores de elementos de programación. En computadoras principales tales como el System z® de IBM®, los adaptadores de canal y adaptadores de sistema abierto son unidades I/O de la computadora principal que provee las comunicaciones entre el sistema operativo y dispositivos periféricos.
Además, otros tipos de medios ambientes de cómputo se pueden beneficiar de uno o más aspectos de la presente invención. Como un ejemplo, como se menciona en la presente, un medio ambiente puede incluir un emulador (por ejemplo, elementos de programación u otros mecanismos de emulación) , en los cuales una arquitectura particular (incluyendo, por ejemplo, ejecución de instrucciones, funciones de arquitectura, tales como traducción de dirección y registros de arquitectura) o un subconjunto de la misma es emulada (por ejemplo, en un sistema de computadora nativo que tiene un procesador y memoria) . En tal medio ambiente, una o más funciones de emulación del emulador pueden implementar uno o más aspectos de la presente invención, aunque una computadora que ejecuta el emulador puede tener una arquitectura diferente que las capacidades que son emuladas. Como un ejemplo, en el modo de emulación, la instrucción u operación específica que es emulada es descodificada y una función de emulación apropiada es integrada para implementar la instrucción u operación individual.
En un medio ambiente de emulación, una computadora huésped incluye, por ejemplo, una memoria para almacenar instrucciones y datos; una unidad de extracción de instrucciones para extraer instrucciones de la memoria y para opcionalmente, proveer almacenamiento en memoria temporal local para la instrucción extraída; una unidad de descodificación de instrucciones para recibir las instrucciones extraídas y para determinar el tipo de instrucciones que han sido extraídas; y una unido de ejecución de instrucción para ejecutar las instrucciones. La ejecución puede incluir cargar datos en a un registro de memoria; almacenar datos de regreso a la memoria de un registro o efectuar algún tipo de operación aritmética o lógica, tal como se determina por la unidad de descodificación.
En un ejemplo, cada unidad es implementada en elementos de programación. Por ejemplo, las operaciones que son efectuadas por las unidades son implementadas como una o más subrutinas dentro de los elementos de programación de emulador Más en particular, en una computadora principal, las instrucciones de la máquina de arquitectura son usadas por programadores, usualmente hoy en día programadores "C" , frecuentemente por medio de una aplicación de compilador.
Estas instrucciones almacenadas en el medio de almacenamiento pueden ser ejecutadas de manera natural en un Servidor de IBM® de z/Architecture®, o alternativamente en máquinas que ejecutan otras arquitecturas. Pueden ser emuladas en los servidores de computadora principales de IBM® existentes y futuros y en otras máquinas de IBM® (por ejemplo. Servidores Power System y Servidores System x®) . Pueden ser ejecutadas en máquinas que operan Linux en una amplia variedad de máquinas utilizando elementos físicos manufacturados por IBM®, Intel®, AMD™ y otros. Además de la ejecución en aquellos elementos físicos bajo una z/Architecture®, Linux puede ser usado también como máquinas que usan emulación por Hercules, UMX o FSI (Fundamental Software, Inc.), en donde en general la ejecución está en un modo de emulación. En el modo de emulación, los elementos de programación de emulación son ejecutados por un procesador nativo para emular la arquitectura de un procesador emulado.
El procesador nativo comúnmente ejecuta elementos de programación de emulación que comprenden ya sea elementos fijos o un sistema operativo nativo para efectuar la emulación del procesador emulado. Los elementos de programación de emulación son responsables de extraer y ejecutar instrucciones de la arquitectura del procesador emulado. Los elementos de programación de emulación mantienen un contador de programa emulado para mantener seguimiento de las fronteras de instrucciones. Los elementos de programación de emulación pueden extraer una o más instrucciones de máquina emuladas a la vez y convertir la una o más instrucciones de máquina emuladas a un grupo correspondiente de instrucciones de máquina nativas para ejecución por el procesador nativo. Estas instrucciones convertidas pueden ser almacenadas en memoria caché de tal manera que se puede llevar a cabo una conversión más rápida. No obstante, los elementos de programación de emulación van a mantener las reglas de arquitectura de la arquitectura del procesador emulado para asegurar que los sistemas operativos y aplicaciones escritas para el procesador emulado operen correctamente. Además, los elementos de programación de emulación proveerán recursos identificados por la arquitectura de procesador emulado incluyendo pero no limitado a registros de control, registros de propósito general, registros de punto flotante, función de traducción de dirección dinámica incluyendo tablas de segmento y tablas de página, por ejemplo, mecanismos de interrupción, mecanismos de cambio de contexto, relojes de hora del día (TOD) e interfases de arquitectura a subsistemas de I/O de tal manera que un sistema operativo o un programa de aplicación diseñado para ponerse en operación en el procesador emulado, pueda ser ejecutado en el procesador nativo que tiene los elementos de programación de emulación.
Una instrucción específica que es emulada es descodificada y una subrutina es llamada para efectuar la función de la instrucción individual. Una función de elementos de programación que emula una función de un procesador emulado es implementada, por ejemplo, en una subrutina "C" o controlador o algún otro método para proveer un controlador para los elementos físicos específicos como estará dentro de la habilidad de aquellos experimentados en el arte después del entendimiento de la descripción de la modalidad preferida. Varias patentes de emulación de elementos de programación y elementos físicos incluyendo, pero no limitado a la patente estadounidense No. 5,551,013, intitulado "Multiprocessor for Hardware Emulation" , por Beausoleil et al.; y patentes estadounidenses No. 6,009,261, intitulada "Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor" , por Scalzi et al; y patente estadounidense No. 5,574,873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions" , por Davidian et al; y patente estadounidense No. 6,308,255, intitulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System", por Gorishek et al; y patente estadounidense No. 6,463,582, intitulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", por Lethin et al; y patente estadounidense No. 5,790,825, intitulada "Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", por Eric Traut, y muchos otros, ilustran una variedad de maneras conocidas para obtener la emulación de un formato de instrucción con arquitectura para una máquina diferente para una máquina objetivo disponible para aquellos experimentados en el arte.
En la Figura 15, se provee un ejemplo de un sistema de computadora huésped emulada 5092 que emula un sistema de computadora huésped 5000' de un arquitectura huésped. En el sistema de computadora huésped emulado 5092, el procesador huésped (CPU) 5091 es un procesador huésped emulado (o procesador huésped virtual) y comprende un procesador de emulación 5093 que tiene una arquitectura de conjunto de instrucciones nativas diferentes que aquella del procesador 5091 de la computadora huésped 5000' . El sistema de computadora huésped emulado 5092 tiene memoria 5094 accesible al procesador de emulación 5093.
En la modalidad ejemplar, la memoria 5094 es repartida en una porción de memoria de computadora huésped 5096 y una porción de rutinas de emulación 5097. La memoria de computadora huésped 5096 está disponible a programas de la computadora huésped emulada 5092 de acuerdo con la arquitectura de computadora huésped. El procesador de emulación 5093 ejecuta instrucciones nativas de un conjunto de instrucciones de arquitectura de una arquitectura diferente de aquella del procesador emulado 5091, las instrucciones nativas obtenidas de la memoria de rutina de emulación 5097, y puede acceder a una instrucción huésped para ejecución de un programa en la memoria de computadora huésped 5096 al emplear una o más instrucciones obtenidas en una rutina de secuencia y acceso/descodificación que puede descodificar la(s) instrucción (es) huésped accedida (s) para determinar una rutina de ejecución de instrucciones nativa para emular la función de la instrucción huésped accedida. Otros equipos que son definidos por la arquitectura del sistema de computadora huésped 5000' pueden ser emulados por rutinas de equipos de arquitectura, incluyendo tales equipos como registros de propósito general, registros de control, traducción de dirección dinámica y soporte de subsistema de I/O y memoria de caché de procesador, por ejemplo. Las rutinas de emulación pueden también tomar ventaja de las funciones disponibles en el procesador de emulación 5093 (tales como registros generales y traducción dinámica de direcciones virtuales) para mejorar el desempeño de las rutinas de emulación. Elementos físicos especiales y motores de descarga pueden también ser provistos para ayudar al procesador 5093 en emular la función de la computadora huésped 5000 ' .
La terminología usada en la presente es por el propósito de describir modalidades particulares solamente y no pretende ser limitante de la invención. Como se usan en la presente, las formas singulares "un" , "uno" y "el" pretender incluir las formas plurales también, a no ser que el contexto lo indique claramente de otra manera. Se comprenderá además que los términos "comprende" y/o "que comprende" , cuando son usados en esta especificación, especifican la presencia de aspectos, enteros, etapas, operaciones, elementos y/o componentes afirmados, pero no impiden la presencia o adición de uno o más otros aspectos, enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las correspondientes estructuras, materiales, acciones y equivalentes de todos los medios o etapa más elementos de función en las reivindicaciones a continuación, si los hay, pretenden incluir cualquier estructura, material, o acción para efectuar la función en combinación con otros elementos reivindicados como se reivindica específicamente. La descripción de uno o más aspectos de la presente invención ha sido presentada por propósitos de ilustración y descripción, pero no se pretende que sea exhaustiva o limitada a invención en la forma revelada. Muchas modificaciones y variaciones serán evidentes para aquellos de habilidad ordinaria en el arte sin desviarse del alcance de la invención. La modalidad fue escogida y descrita con el fin de explicar mejor los principios de la invención y la aplicación práctica y para permitir que otros de habilidad ordinaria en el arte entiendan la invención para varias modalidades con varias modificaciones como sean apropiadas al uso particular contemplado .

Claims (20)

REIVINDICACIONES
1. Un producto de programa de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central, el producto de programa de computadora comprende : un medio de almacenamiento que se puede leer por computadora que se puede leer por un circuito de procesamiento y que almacena instrucciones para ejecución por el circuito de procesamiento para efectuar un método que comprende: obtener, mediante un procesador, una instrucción de máquina para ejecución, la instrucción de máquina es definida por la ejecución de computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina comprende: por lo menos un campo del código de operación para proveer un código de operación, el código de operación identifica una función de convertir a zonificado de punto flotante decimal; un primer campo de registro que designa un primer registro comprende un primer operando,- un segundo campo de registro y un campo de desplazamiento, en donde el contenido de un segundo registro designado por el segundo campo de registro es combinado con el contenido del campo de desplazamiento para formar una dirección de un segundo operando; y un campo de máscara, el campo de máscara comprende uno o más controles usados durante la ejecución de la instrucción de la máquina; y ejecutar la instrucción de la máquina, la ejecución comprende : convertir por lo menos una porción del primer operando en un formato de punto flotante decimal a un formato zonificado; y colocar el resultado de la conversión en un sitio designado por la dirección del segundo operando.
2. El producto de programa de computadora de la reivindicación 1, en donde el campo de código de operación, cuando es un primer valor, indica una fuente de punto flotante decimal largo y un resultado zonificado.
3. El producto de programa de computadora de la reivindicación 1, en donde el código de operación, cuando es de un segundo valor, indica una fuente de punto flotante decimal extendido y un resultado zonificado.
4. El producto de programa de computadora de la reivindicación 1, en donde el campo de máscara comprende un control de signo usado para indicar si el segundo operando tiene un campo de signo.
5. El producto de programa de computadora de la reivindicación 1, en donde el campo de máscara comprende un control de zona usado para determinar un valor para un campo zonificado del segundo operando.
6. El producto de programa de computadora de la reivindicación 1, en donde el campo de máscara comprende un control de código de signo más usado para codificar un signo más .
7. El producto de programa de computadora de la reivindicación 1, en donde el campo de máscara comprende un control de fuerza más cero usado para determinar un signo de un resultado colocado en el segundo operando.
8. El producto de programa de computadora de la reivindicación 1, en donde el campo de máscara comprende un campo zonificado y un campo de signo, y en donde el método comprende además usar por lo menos uno del campo zonificado y el campo de signo para determinar el valor para por lo menos uno del campo de signo y un código de campo del resultado almacenado en el segundo operando.
9. El producto de programa de computadora de la reivindicación 1, en donde la instrucción de la máquina comprende un campo de longitud que especifica por lo menos uno de un número de dígitos de significando más a la derecha del primer operando a ser convertido y una longitud del segundo operando.
10. El producto de programa de computadora de la reivindicación 1, en donde la ejecución comprende leer por lo menos una porción del primer operando de por lo menos un registro de punto flotante y en donde el segundo operando para incluir el resultado está en la memoria.
11. Un sistema de computadora para ejecutar una instrucción de máquina en una unidad de procesamiento central, el sistema de computadora comprende: una memoria; y un procesador en comunicaciones con la memoria, en donde el sistema de computadora está configurado para efectuar un método, dicho método comprende: obtener una instrucción de máquina para ejecución, la instrucción de máquina es definida para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina comprende: por lo menos un campo de código de operación para proveer un código de operación, el código de operación identifica una función de convertir a zonificado de punto flotante decimal ,- un primer campo de registro que designa un primer registro, el primer registro comprende un primer operando; un campo de segundo registro y un campo de desplazamiento, en donde el contenido de un segundo registro designado por el segundo campo de registro es combinado con el contenido del campo de desplazamiento para formar una dirección de un segundo operando y un campo de máscara, el campo de máscara comprende uno o más controles usados durante la ejecución de la instrucción de la máquina; y ejecutar la instrucción de la máquina, la ejecución comprende : convertir por lo menos una porción del primer operando en un formato de punto flotante decimal a un formato zonificado; y colocar el resultado de la conversión en un sitio designado por la dirección del segundo operando.
12. El sistema de computadora de la reivindicación 11, en donde el campo de máscara comprende un control de signo usado para indicar si el segundo operando tiene un campo de signo .
13. El sistema de computadora de la reivindicación 11, en donde el campo de máscara comprende un control de zona usado para determinar un valor para un campo zonificado del segundo operando.
14. El sistema de computadora de la reivindicación 11, en donde el campo de máscara comprende un control de código de signo más usado para codificar un signo de más.
15. El sistema de computadora de la reivindicación 11, en donde el campo de máscara comprende un control de fuerza más cero usado para designar un signo del resultado colocado en el segundo operando.
16. El sistema de computadora de la reivindicación 11, en donde el campo de máscara comprende un campo zonificado y un campo de signo, y en donde el método comprende además usar por lo menos uno del campo zonificado y el campo de signo para determinar un valor para por lo menos uno del campo de signo y un código de campo del resultado almacenado en el segundo operando.
17. El sistema de computadora de la reivindicación 11, en donde la instrucción de la máquina comprende un campo de longitud que especifica por lo menos uno de un número de dígitos de significando más a la derecha del primer operando a ser convertido y un longitud del segundo operando.
18. Un método para ejecutar una instrucción de máquina en una unidad de procesamiento central, el método comprende: obtener, mediante un procesador, una instrucción de máquina para ejecución, la instrucción de máquina es definida para ejecución por computadora de acuerdo con una arquitectura de computadora, la instrucción de máquina comprende : por lo menos un campo de códigos de operación para proveer un código de operación, el código de operación identifica una función de convertir a zonificado de punto flotante decimal; un primer campo de registro que designa un primer registro, el primer registro comprende un primer operando; un segundo campo de registro y un campo de desplazamiento, en donde el contenido de un segundo registro designado por el segundo campo de registro es combinado con el contenido del campo de desplazamiento para formar una dirección de un segundo operando; y un campo de máscara, el campo de máscara comprende uno o más controles usados durante la ejecución de la instrucción de máquina; y ejecutar la instrucción de la máquina, la ejecución comprende: convertir por lo menos una porción del primer operando en un formato de punto flotante decimal a un formato zonificado; y colocar el resultado de la conversión en un sitio designado por la dirección del segundo operando.
19. El método de la reivindicación 18, en donde el campo de máscara comprende un control de signo usado para indicar si el segundo operando tiene un campo de signo, un control de zona usado para determinar un valor para un campo zonificado del segundo operando, un control de código de signo más usado para codificar un signo de más y un control de fuerza más cero usado para determinar un signo del resultado colocado en el segundo operando.
20. El método de conformidad con la reivindicación 18, en donde la instrucción de máquina comprende un campo de longitud que especifica por lo menos uno de un número de dígitos de significando más a la derecha del primer operando a ser convertido y una longitud del segundo operando.
MX2014007915A 2011-12-29 2012-11-13 Metodo para convertir a formato zonificado a partir de formato de punto flotante decimal. MX2014007915A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
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 (1)

Publication Number Publication Date
MX2014007915A true MX2014007915A (es) 2014-07-30

Family

ID=48695919

Family Applications (1)

Application Number Title Priority Date Filing Date
MX2014007915A MX2014007915A (es) 2011-12-29 2012-11-13 Metodo para convertir a formato zonificado a partir de formato de punto flotante decimal.

Country Status (16)

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

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
US11023205B2 (en) * 2019-02-15 2021-06-01 International Business Machines Corporation Negative zero control in instruction execution
US11099853B2 (en) 2019-02-15 2021-08-24 International Business Machines Corporation Digit validation check 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

Family Cites Families (41)

* 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
US6085313A (en) 1998-04-30 2000-07-04 International Business Machines Corporation Computer processor system for executing RXE format floating point instructions
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
US6282554B1 (en) 1998-04-30 2001-08-28 Intel Corporation Method and apparatus for floating point operations and format conversion operations
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
US20020147969A1 (en) 1998-10-21 2002-10-10 Richard A. Lethin 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
US8051117B2 (en) * 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
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
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
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
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

Also Published As

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

Similar Documents

Publication Publication Date Title
CA2852862C (en) Convert from zoned format to decimal floating point format
RU2565496C2 (ru) Команда для загрузки данных до заданной границы памяти, указанной командой
RU2585975C2 (ru) Команда векторного типа для поиска равнозначного элемента
RU2598814C2 (ru) Команда векторного типа для поиска неравнозначного элемента
MX2014007915A (es) Metodo para convertir a formato zonificado a partir de formato de punto flotante decimal.
RU2568920C2 (ru) Способ выполнения машинной команды, компьютерная система и машиночитаемый носитель, обеспечивающие расчет расстояния от положения в основной памяти до границы блока основной памяти
MX2014010948A (es) Transformacion de especificadores de instrucciones no contiguos a especificadores de instrucciones contiguos.

Legal Events

Date Code Title Description
FG Grant or registration