ES2965065T3 - Instrucción decimal para realizar una operación de signos - Google Patents

Instrucción decimal para realizar una operación de signos Download PDF

Info

Publication number
ES2965065T3
ES2965065T3 ES17791582T ES17791582T ES2965065T3 ES 2965065 T3 ES2965065 T3 ES 2965065T3 ES 17791582 T ES17791582 T ES 17791582T ES 17791582 T ES17791582 T ES 17791582T ES 2965065 T3 ES2965065 T3 ES 2965065T3
Authority
ES
Spain
Prior art keywords
sign
computer
instruction
vector instruction
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES17791582T
Other languages
English (en)
Inventor
Reid Copeland
Silvia Mueller
Jonathan Bradbury
Timothy Slegel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2965065T3 publication Critical patent/ES2965065T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • 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/544Methods 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 for evaluating functions by calculation
    • 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
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Input From Keyboards Or The Like (AREA)

Abstract

Una instrucción para realizar una operación de signo de una pluralidad de operaciones de signo configuradas para la instrucción. La instrucción se ejecuta, y la ejecución incluye seleccionar al menos una parte de un operando de entrada como resultado para colocarlo en una ubicación seleccionada. La selección se basa en un control de la instrucción, en la que el control indica un tamaño definido por el usuario del operando de entrada que se seleccionará como resultado. Un signo del resultado se determina basándose en una pluralidad de criterios, incluyendo un valor del resultado, obtenido basándose en el control de la instrucción, que tiene una primera relación particular o una segunda relación particular con respecto a un valor seleccionado. El resultado y el signo se almacenan en la ubicación seleccionada para proporcionar una salida firmada que se utilizará en el procesamiento dentro del entorno informático. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Instrucción decimal para realizar una operación de signos
Campo técnico
Uno o más aspectos se refieren, en general, al procesamiento dentro de un entorno informático y, en particular, a mejorar dicho procesamiento.
Antecedentes
Las aplicaciones que se ejecutan dentro de un procesador de un entorno informático controlan el comportamiento del procesador. Las aplicaciones se crean utilizando lenguajes de programación que están diseñados para comunicar instrucciones al procesador. Existen varios tipos de lenguajes de programación y cada lenguaje puede utilizar uno o más tipos de codificaciones para representar datos.
Por ejemplo, el decimal codificado en binario (BCD por Binary Coded Decimal) es una codificación de tipo de datos nativa en los lenguajes de programación COBOL y PL/I, y también es un tipo de datos compatible con el sistema de gestión de base de datos DB2. A través de extensiones de lenguaje y biblioteca de clases, otros lenguajes, como C y Java®, también admiten algunas formas de tipos de datos BCD. Java y todas las marcas comerciales y logotipos basados en Java son marcas comerciales o marcas comerciales registradas de Oracle y/o sus afiliados.
Un tipo de BCD computacional, decimal empaquetado, tiene una codificación que especifica un dígito decimal codificado en cada 4 bits de almacenamiento, excepto para los 4 bits menos significativos del byte menos significativo donde se codifica un código de signo de 4 dígitos. El código de signo puede ser cualquier valor no numérico de 4 bits que cubra los valores hexadecimales de 0xA a 0xF. Por ejemplo, el valor 123 se puede codificar en dos bytes de almacenamiento como hexadecimales 123C.
Una pantalla tipo BCD, decimal zonificado, también comparte este tipo de codificación de signo. El valor 123 en decimal zonificado se codifica en tres bytes de almacenamiento como hexadecimales F1 F2 C3. El código de signo se superpone a los 4 bits más significativos del byte menos significativo.
El mapeo de códigos de signo a un valor de signo es el siguiente:
0xA :
0xB : -0xC : (codificación positiva seleccionada)
0xD : - (codificación negativa seleccionada)
0xE :
0xF : (codificación sin signo seleccionada)
Como se señaló anteriormente, ciertos códigos de signo se designan como las codificaciones canónicas o seleccionadas. Esto significa que, aunque se acepta cualquiera de estos signos en la entrada, el código producido por el compilador solo debe producir las codificaciones seleccionadas en la salida (es decir, de acuerdo con cómo se declaró el tipo de datos: las variables con signo utilizan 0xC o 0xD y las variables sin signo utilizan 0xF).
Las variables sin signo no son “sin signo”, sino que pueden tener cualquiera (incluso una codificación negativa) en la entrada, pero para adherirse a las reglas del lenguaje, el código producido por el compilador debe generar un código de signo 0xF en la salida para una expresión (incluyendo movimientos simples y comparaciones previas, además de expresiones aritméticas).
Para realizar una operación de signo para un dato de salida, se utilizan múltiples instrucciones. El desafío para el compilador es cómo generar código de manera eficiente para cubrir la infinidad de codificaciones posibles para las muchas combinaciones de tipos de variables y operaciones con y sin signo (por ejemplo, movimientos, complemento, negación, valor absoluto).
Un desafío relacionado con el diseño de hardware es cómo codificar de forma compacta todas estas diversas posibilidades para que se ajusten dentro de los límites de codificación de instrucciones y también para no contaminar un conjunto fijo de posibles codificaciones de operación en una arquitectura con muchas instrucciones existentes y futuras.
Como las variables de BCD tradicionalmente son operadas por instrucciones de almacenamiento a almacenamiento (SS), el ajuste del código de signo a menudo implica operaciones adicionales en la memoria que pueden ralentizar los procesadores modernos fuera de servicio (OOO).
Un desafío adicional es cómo ser sensibles a la generación de resultados compatibles en casos excepcionales. Por ejemplo, un lenguaje o entorno puede dictar que siempre se requiera una excepción de hardware si un código de signo de entrada no es legal (por ejemplo, un dígito numérico en una posición de código de signo para una variable sin signo), pero para una compatibilidad estricta en otros casos, la codificación ilegal debe ignorarse y tratarse simplemente como sin signo (ya que el valor frente a - no está realmente en cuestión para las variables sin signo). Por lo tanto, existe una necesidad en la técnica de abordar el problema mencionado anteriormente.
La publicación IBM z/Architecture Principles of Operation - SA22-7832-10, de fecha 1 de marzo de 2015 (XP055446689), describe en las páginas 24-1 a 24-32 el “Chapter 24, Vector Floating-Point Instructions” (“Capítulo 24, Instrucciones vectoriales de punto flotante”).
Sumario
De acuerdo con la presente invención, se proporcionan un método implementado por ordenador, un sistema, un medio de almacenamiento legible por ordenador y un programa informático según las reivindicaciones independientes. Visto desde un aspecto adicional, la presente invención proporciona un programa informático almacenado en un medio legible por ordenador y cargado en la memoria interna del sistema de la invención, que comprende partes de código de software, cuando dicho programa se ejecuta en el sistema, para realizar las etapas de la invención.
Se superan los inconvenientes de la técnica anterior y se proporcionan ventajas adicionales mediante la provisión de un producto de programa informático para facilitar el procesamiento en un entorno informático. El producto de programa informático comprende un medio de almacenamiento legible por un circuito de procesamiento e instrucciones de almacenamiento para su ejecución por el circuito de procesamiento para realizar un método. El método incluye, por ejemplo, obtener una instrucción para su ejecución, la instrucción para realizar una operación de signo de una pluralidad de operaciones de signo configuradas para la instrucción. La instrucción se ejecuta, y la ejecución incluye seleccionar al menos una parte de un operando de entrada como un resultado para colocarlo en una ubicación seleccionada. La selección se basa en un control de la instrucción, indicando el control de la instrucción un tamaño definido por el usuario del operando de entrada que se va a seleccionar como el resultado. Un signo del resultado se determina en base a una pluralidad de criterios, incluyendo un valor del resultado, obtenido en base al control de la instrucción, que tiene una primera relación particular o una segunda relación particular con respecto a un valor seleccionado. El resultado y el signo se almacenan en la ubicación seleccionada para proporcionar una salida con signo que se utilizará en el procesamiento dentro del entorno informático.
El uso de una sola instrucción (por ejemplo, una instrucción de máquina de arquitectura) para realizar una operación de signo, en lugar de múltiples instrucciones, reduce el número de instrucciones que deben recuperarse, decodificarse y ejecutarse, y mejora el procesamiento y el rendimiento del sistema.
Como ejemplos, la primera relación particular es igual, la segunda relación particular no es igual y el valor seleccionado es cero.
En una realización, la al menos una parte del operando de entrada incluye un número de dígitos de selección del operando de entrada, el número de dígitos de selección especificado por el control de la instrucción. Por ejemplo, el número de dígitos de selección incluye un número de dígitos más a la derecha del operando de entrada.
Como un ejemplo, el control se proporciona en un campo inmediato de la instrucción.
Además, en una realización, la pluralidad de criterios incluye además la operación de signo que se va a realizar. Más aún, en una realización adicional, la pluralidad de criterios incluye además al menos un criterio seleccionado de un grupo de criterios que incluye: una operación de signo a realizar, un signo del operando de entrada y un control de código de signo positivo de la instrucción.
Como ejemplos, la pluralidad de operaciones de signo incluye mantener, complementar, el positivo forzado y el negativo forzado.
Adicionalmente, en una realización, la ejecución incluye además verificar la validez de un signo del operando de entrada, en base a otro control de la instrucción que indica que la validez se va a verificar.
En un ejemplo, la ubicación seleccionada es un registro, especificándose el registro utilizando al menos un campo de la instrucción. El al menos un campo incluye, por ejemplo, un campo de registro que especifica un número de registro y un campo de extensión que especifica un valor de extensión que se adjuntará al número de registro.
También se describen y se reivindican en el presente documento métodos y sistemas relacionados con uno o más aspectos. Además, también se describen y pueden reivindicarse en el presente documento servicios relacionados con uno o más aspectos.
Se obtienen características y ventajas adicionales a través de las técnicas descritas en el presente documento. Se describen en detalle en el presente documento otras realizaciones y aspectos, y se consideran parte de los aspectos reivindicados.
Breve descripción de los dibujos
Uno o más aspectos se señalan particularmente y se reivindican claramente como ejemplos en las reivindicaciones al final de la memoria descriptiva. Lo anterior y los objetos, características y ventajas de uno o más aspectos son evidentes a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos, en los que:
la FIG.1A representa un ejemplo de un entorno informático para incorporar y utilizar uno o más aspectos de la presente invención;
la FIG.1B representa detalles adicionales de un procesador de la FIG.1A, de acuerdo con un aspecto de la presente invención;
la FIG. 2A representa otro ejemplo de un entorno informático para incorporar y utilizar uno o más aspectos de la presente invención;
La FIG.2B representa detalles adicionales de la memoria de la FIG.2A;
la FIG. 3A representa un ejemplo de una instrucción de Vector Decimal para realizar una Operación de Signo, de acuerdo con un aspecto de la presente invención;
La FIG. 3B representa una realización de controles de un campo inmediato de la instrucción de Vector Decimal para realizar una Operación de Signo de la FIG.3A, de acuerdo con un aspecto de la presente invención;
La FIG.3C representa una realización de un campo de máscara de la instrucción de Vector Decimal para realizar una Operación de Signo de la FIG.3A, de acuerdo con un aspecto de la presente invención;
La FIG.3D representa una realización de un control de otro campo inmediato de la instrucción de Vector Decimal para realizar una Operación de Signo de la FIG.3A, de acuerdo con un aspecto de la presente invención;
La FIG.4 representa un ejemplo de una tabla de códigos de signo de resultado para diferentes operaciones de signo y resultados, de acuerdo con un aspecto de la presente invención;
la FIG. 5 representa un ejemplo de procesamiento asociado con la instrucción de Vector Decimal para realizar una Operación de Signo, de acuerdo con un aspecto de la presente invención;
Las FIGS. 6A-6B representan un ejemplo para facilitar el procesamiento en un entorno informático, que incluye la ejecución de la instrucción de Vector Decimal para realizar una Operación de Signo, de acuerdo con un aspecto de la presente invención;
La FIG.7 representa una realización de un entorno informático en la nube; y
La FIG.8 representa un ejemplo de capas de modelo de abstracción.
Descripción detallada
Uno o más aspectos se refieren a mejorar el procesamiento dentro de un entorno informático al proporcionar una capacidad de reemplazar múltiples instrucciones que se utilizarán para realizar una operación de signo con una sola instrucción (por ejemplo, una instrucción de máquina de arquitectura única en la interfaz de hardware/software). En un ejemplo, la instrucción, denominada en el presente documento como una instrucción de Vector Decimal para realizar una Operación de Signo, maneja de manera flexible y compacta varios comportamientos de ajuste de signo y mantenimiento/supresión de excepciones.
Una realización de un entorno informático para incorporar y utilizar uno o más aspectos de la presente invención se describe con referencia a la FIG. 1A. En un ejemplo, el entorno informático se basa en z/Architecture®, ofrecida por International Business Machines Corporation, Amonk, Nueva York. Una realización de z/Architecture se describe en “z/Architecture Principles of Operation”, publicación de IBM n.º SA22-7832-10, marzo de 2015.
En otro ejemplo, el entorno informático se basa Power Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Una realización de Power Architecture® se describe en “Power ISA™ version 2.07B”, International Business Machines Corporation, 9 de abril de 2015.
El entorno informático también puede basarse en otras arquitecturas, incluyendo, pero sin limitarse a, las arquitecturas de Intel x86. Intel e Itanium son marcas comerciales o marcas comerciales registradas de Intel Corporation o sus subsidiarias en los Estados Unidos y otros países. También existen otros ejemplos.
Como se muestra en la FIG.1A, un entorno informático 100 incluye, por ejemplo, un nodo 10 que tiene, por ejemplo, un sistema informático/servidor 12, que es operativo con muchos otros entornos o configuraciones de sistema informático de propósito general o de propósito especial. Ejemplos de sistemas, entornos y/o configuraciones informáticos bien conocidos que pueden ser adecuados para su uso con el sistema informático/servidor 12 incluyen, pero no se limitan a, sistemas de ordenadores personales (PC - Personal Computer), sistemas informáticos de servidor, clientes ligeros, clientes pesados, dispositivos de mano o portátiles, sistemas de multiprocesador, sistemas basados en microprocesador, decodificadores, electrónica de consumo programable, PC de red, sistemas de miniordenadores, sistemas informáticos de ordenador central y entornos informáticos en la nube distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares.
El sistema informático/servidor 12 puede describirse en el contexto general de instrucciones ejecutables por un sistema informático, tales como módulos de programa, que se ejecutan por un sistema informático. Generalmente, los módulos de programa pueden incluir rutinas, programas, objetos, componentes, lógica, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. El sistema informático/servidor 12 se puede poner en práctica en muchos entornos informáticos, incluyendo, pero sin limitarse a, entornos informáticos en la nube distribuidos donde las tareas se realizan mediante dispositivos de procesamiento remotos que están enlazados a través de una red de comunicaciones. En un entorno informático en la nube distribuido, los módulos de programa pueden estar ubicados en medios de almacenamiento de sistemas informáticos tanto locales como remotos, que incluyen dispositivos de almacenamiento de memoria.
Como se muestra en la FIG.1A, el sistema informático/servidor 12 se muestra en la forma de un dispositivo informático de propósito general. Los componentes del sistema informático/servidor 12 pueden incluir, pero no se limitan a, uno o más procesadores o unidades de procesamiento 16, una memoria de sistema 28 y un bus 18 que acopla varios componentes del sistema, incluyendo la memoria de sistema 28 al procesador 16.
El bus 18 representa uno o más de cualquiera de varios tipos de estructuras de bus, incluyendo un bus de memoria o controlador de memoria, un bus periférico, un puerto de gráficos acelerado y un procesador o bus local que utiliza cualquiera de una variedad de arquitecturas de bus. A modo de ejemplo, y no de limitación, tales arquitecturas incluyen el bus de la Arquitectura Estándar de la Industria (ISA - Industry Standard Architecture), el bus de Arquitectura Micro Canal (MCA - Micro Channel Architecture), el bus de ISA mejorado (EISA - Enhanced ISA), el bus local de la Asociación de Estándares de Electrónica y Vídeo (VESA - Video Electronics Standards Association) y el bus de Interconexión de Componentes Periféricos (PCI - Peripheral Component Interconnect).
El sistema informático/servidor 12 normalmente incluye una variedad de medios legibles por el sistema informático. Dichos medios pueden ser cualquier medio disponible que sea accesible por el sistema informático/servidor 12, e incluyen tanto medios volátiles como no volátiles, medios extraíbles y no extraíbles.
La memoria del sistema 28 puede incluir medios legibles por el sistema informático en forma de memoria volátil, tal como la memoria de acceso aleatorio (RAM) 30 y/o la memoria caché 32. El sistema informático/servidor 12 puede incluir además otros medios de almacenamiento de sistema informático volátiles/no volátiles, extraíbles/no extraíbles. A modo de ejemplo solamente, el sistema de almacenamiento 34 se puede proporcionar para leer desde y escribir en un medio magnético no volátil y no extraíble (no mostrado y normalmente denominado “disco duro”). Aunque no se muestra, se pueden proporcionar una unidad de disco magnético para leer desde y escribir en un disco magnético extraíble, no volátil (por ejemplo, un “disco flexible”) y una unidad de disco óptico para leer desde o escribir en un disco óptico extraíble, no volátil, tal como un CD-ROM, DVD-ROM u otros medios ópticos. En tales casos, cada uno puede conectarse al bus 18 mediante una o más interfaces de medios de datos. Como se representará y describirá adicionalmente a continuación, la memoria 28 puede incluir al menos un producto de programa que tiene un conjunto (por ejemplo, al menos uno) de módulos de programa que están configurados para llevar a cabo las funciones de las realizaciones de la invención.
El programa/utilidad 40, que tiene un conjunto (al menos uno) de módulos de programa 42, puede almacenarse en la memoria 28 a modo de ejemplo, y no de limitación, así como un sistema operativo, uno o más programas de aplicaciones, otros módulos de programa y datos de programa. Cada uno del sistema operativo, uno o más programas de aplicaciones, otros módulos de programa y datos de programa o alguna combinación de los mismos, pueden incluir una implementación de un entorno de interconexión de redes. Los módulos de programa 42 generalmente llevan a cabo las funciones y/o metodologías de las realizaciones de la invención como se describe en el presente documento. El sistema informático/servidor 12 también puede comunicarse con uno o más dispositivos externos 14, tales como un teclado, un dispositivo señalador, una pantalla 24, etc.; uno o más dispositivos que permiten a un usuario interactuar con el sistema informático/servidor 12; y/o cualquier dispositivo (por ejemplo, tarjeta de red, módem, etc.) que permita al sistema informático/servidor 12 comunicarse con uno o más de otros dispositivos informáticos. Tal comunicación puede ocurrir a través de las interfaces 22 de Entrada/Salida (E/S). Más aún, el sistema informático/servidor 12 puede comunicarse con una o más redes, tales como una red de área local (LAN), una red de área amplia general (WAN) y/o una red pública (por ejemplo, Internet) a través del adaptador de red 20. Como se representa, el adaptador de red 20 se comunica con los otros componentes del sistema informático/servidor 12 a través del bus 18. Se debería entender que, aunque no se muestran, se podrían utilizar otros componentes de hardware y/o software junto con el sistema informático/servidor 12. Los ejemplos incluyen, pero no se limitan a: microcódigo, controladores de dispositivo, unidades de procesamiento redundantes, agrupaciones de unidades de disco externo, sistemas RAID, unidades de cinta y sistemas de almacenamiento de archivos de datos, etc.
Por ejemplo, el procesador 16 incluye una pluralidad de componentes funcionales utilizados para ejecutar instrucciones. Como se representa en la FIG. 1B, estos componentes funcionales incluyen, por ejemplo, un componente 120 de recuperación de instrucciones para recuperar instrucciones que han de ser ejecutadas; una unidad de decodificación de instrucciones 122 para decodificar las instrucciones recuperadas y obtener operandos de las instrucciones decodificadas; componentes de ejecución de instrucciones 124 para ejecutar las instrucciones decodificadas; un componente de acceso de memoria 126 para acceder a la memoria para la ejecución de instrucciones, si es necesario; y un componente de reescritura 130 para proporcionar los resultados de las instrucciones ejecutadas. Uno o más de estos componentes pueden utilizarse, de acuerdo con un aspecto de la presente invención, para realizar una operación de signo 136, como se describe más adelante.
El procesador 16 también incluye, en una realización, uno o más registros 140 para ser utilizados por uno o más de los componentes funcionales.
Otra realización de un entorno informático para incorporar y utilizar uno o más aspectos se describe con referencia a la FIG. 2A. En este ejemplo, un entorno informático 200 incluye, por ejemplo, una unidad central de procesamiento (CPU) nativa 202, una memoria 204, y uno o más dispositivos de entrada/salida y/o interfaces 206 acoplados entre sí a través de, por ejemplo, uno o más buses 208 y/u otras conexiones. Como ejemplos, el entorno informático 200 puede incluir un procesador PowerPC o un servidor pSeries ofrecido por International Business Machines Corporation, Armonk, Nueva York; un HP Superdome con procesadores Intel Itanium II ofrecido por Hewlett Packard Co., Palo Alto, California; y/u otras máquinas basadas en arquitecturas ofrecidas por International Business Machines Corporation, Hewlett Packard, Intel, Oracle u otras. IBM, PowerPC, pSeries, Power Architecture, z Systems, z/Architecture son marcas comerciales de International Business Machines Corporation, registradas en muchas jurisdicciones de todo el mundo.
La unidad central de procesamiento 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 utilizados durante el procesamiento dentro del entorno. Estos registros incluyen información que representa el estado del entorno en cualquier punto particular en el tiempo.
Además, la unidad central de procesamiento nativa 202 ejecuta instrucciones y código que se almacenan en la memoria 204. En un ejemplo particular, la unidad central de procesamiento ejecuta el código de emulador 212 almacenado en la memoria 204. Este código permite que el entorno informático configurado en una arquitectura emule otra arquitectura. Por ejemplo, el código de emulador 212 permite a las máquinas basadas en arquitecturas distintas de la z/Architecture, tales como los procesadores PowerPC, los servidores PSeries®, los servidores HP Superdome u otros, emular la z/Architecture y ejecutar el software y las instrucciones desarrollados en base a la z/Architecture. Con referencia a la FIG. 2B se describen detalles adicionales relacionados con el código de emulador 212. Las instrucciones de invitado 250 almacenadas en la memoria 204 comprenden instrucciones de software (por ejemplo, que se correlacionan con las instrucciones de máquina) que se desarrollaron para ser ejecutadas en una arquitectura distinta a la 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, pero en su lugar, se están emulando en la CPU nativa 202, que puede ser, por ejemplo, un procesador Intel Itanium II. En un ejemplo, el código de emulador 212 incluye una rutina de recuperación de instrucciones 252 para obtener una o más instrucciones de invitado 250 de la memoria 204 y, opcionalmente, proporcionar almacenamiento en memoria intermedia local para las instrucciones obtenidas. También incluye una rutina de traducción de instrucciones 254 para determinar el tipo de instrucción de invitado que se ha obtenido y para traducir la instrucción de invitado en una o más instrucciones nativas 256 correspondientes. Esta traducción incluye, por ejemplo, identificar la función a realizar por la instrucción de invitado y elegir la instrucción o instrucciones nativas para realizar esa función.
Además, el emulador 212 incluye una rutina de control de emulación 260 para hacer que se ejecuten las instrucciones nativas. La rutina de control de emulación 260 puede hacer que la CPU nativa 202 ejecute una rutina de instrucciones nativas que emulen una o más instrucciones de invitado obtenidas previamente y, a la conclusión de tal ejecución, devuelva el control a la rutina de recuperación 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 256 puede incluir cargar datos en un registro desde la memoria 204; almacenar datos de vuelta en la memoria desde un registro; o realizar algún tipo de operación aritmética o lógica, como se determine por la rutina de traducción.
Cada rutina se implementa, por ejemplo, en software, que se almacena en la memoria y se ejecuta mediante la unidad central de procesamiento nativa 202. En otros ejemplos, una o más de las rutinas u operaciones se implementan en firmware, hardware, software o alguna combinación de los mismos. Los registros del procesador emulado pueden emularse utilizando los registros 210 de la CPU nativa o usando ubicaciones en la memoria 204. En realizaciones, las instrucciones de invitado 250, las instrucciones nativas 256 y el código de emulador 212 pueden residir en la misma memoria o pueden dispersarse entre diferentes dispositivos de memoria.
Como se utiliza en el presente documento, el firmware incluye, por ejemplo, el microcódigo, milicódigo y/o macrocódigo del procesador. Incluye, por ejemplo, las instrucciones a nivel de hardware y/o estructuras de datos utilizadas en la implementación del código máquina de nivel superior. En una realización, incluye, por ejemplo, código propietario que normalmente se entrega como microcódigo que incluye software confiable o microcódigo específico para el hardware subyacente y controla el acceso del sistema operativo al hardware del sistema.
Una instrucción de invitado 250 que se obtiene, traduce y ejecuta es, por ejemplo, una instrucción de Vector Decimal para realizar una Operación de Signo descrita en el presente documento. La instrucción, que es de una arquitectura (por ejemplo, la z/Architecture), se recupera de la memoria, se traduce y representa como una secuencia de instrucciones nativas 256 de otra arquitectura (por ejemplo, PowerPC, pSeries, Intel, etc.). A continuación, se ejecutan estas instrucciones nativas.
Como se indica en el presente documento, hay muchas codificaciones posibles para las diversas combinaciones de tipos y operaciones de variables con y sin signo (por ejemplo, movimientos, complemento, negación, valor absoluto, etc.). Un desafío para un compilador es cómo generar código de manera eficiente para cubrir las muchas codificaciones posibles. Un desafío relacionado para un diseño de hardware es cómo codificar de forma compacta todas estas diversas posibilidades para que se ajusten dentro de los límites de codificación de instrucciones y también para no contaminar un conjunto fijo de posibles codificaciones de operación en una arquitectura con muchas instrucciones existentes y futuras.
Como las variables de BCD tradicionalmente son operadas por instrucciones de almacenamiento a almacenamiento (SS), el ajuste del código de signo a menudo implica operaciones adicionales en la memoria que pueden ralentizar los procesadores modernos fuera de servicio (OOO).
Un desafío adicional es cómo ser sensibles a la generación de resultados compatibles en casos excepcionales. Por ejemplo, un lenguaje o entorno puede dictar que se proporcione una excepción de hardware si un código de signo de entrada no es legal (por ejemplo, un dígito numérico en una posición de código de signo para una variable sin signo), pero para una compatibilidad estricta en otros casos, la codificación ilegal debe ignorarse y tratarse simplemente como sin signo (ya que el valor frente a - no está en realidad en cuestión para las variables sin signo).
Muchas operaciones de ajuste de signo, incluso para movimientos simples de una variable a otra, utilizan al menos dos instrucciones de máquina: una para mover los datos y una o más instrucciones posteriores para ajustar el signo. Dado que el signo no se puede ajustar hasta que se hayan movido los datos, se establece una dependencia de datos que puede ralentizar más los procesadores OOO.
Como ejemplo, cuando se va a ampliar una variable sin signo, una secuencia es utilizar una instrucción ZAP para la ampliación seguida de una OI (OR inmediata) o MVN (Mover Numéricos - Move Numerics) para ajustar el signo en 0xF (ya que ZAP ajustará solo 0xC o 0xD). Estas ya son dos instrucciones. Además, dado que ZAP valida los códigos de signo de entrada, ni siquiera esta secuencia se puede utilizar, ya que puede ocurrir una excepción de hardware no deseada si el código de signo de entrada no es legal. En su lugar, se utiliza una secuencia aún más larga y costosa para lograr la compatibilidad para este tipo de comportamiento de ampliación de variables sin signo.
Por lo tanto, de acuerdo con uno o más aspectos de la presente invención, se proporciona una instrucción (por ejemplo, una instrucción de máquina de arquitectura única en la interfaz de hardware/software) para manejar de manera flexible y compacta los diversos comportamientos de ajuste de signo y mantenimiento/supresión de excepciones. Esta instrucción, referida en el presente documento como instrucción de Vector Decimal para realizar Operación de Signo, tiene un operando de entrada y uno de salida, más la capacidad de realizar muchas manipulaciones y ajustes de signo como parte del movimiento de los datos de la entrada a la salida (en lugar de como una operación posterior).
En realizaciones, la instrucción tiene un control de signo flexible y un control de validación de signo para permitir el ajuste fino del comportamiento para realizar la operación de signo en casos de excepción de, por ejemplo, códigos de signo no válidos. En una realización adicional, la instrucción puede también incluir o tener acceso a un control para verificar selectivamente la validez de los dígitos numéricos. También son posibles otras variaciones.
La codificación de instrucción de Vector Decimal para realizar Operación de Signo tiene varias partes que se combinan para lograr de manera compacta el control de ajuste de signo flexible y detallado para un amplio rango de operaciones y tipos de entrada/salida.
Estas partes incluyen, por ejemplo:
1) Especificación de los operandos de entrada y salida. Como ejemplos, los operandos se especifican en registros; sin embargo, una codificación en memoria (por ejemplo, que especifique una base desplazamiento) también es una realización posible, así como otras realizaciones.
2) Recuento de Dígitos de resultado (RDC): Un número (por ejemplo, del 1 al 31 o del 1 al 64, dependiendo de los tamaños máximos permitidos) para especificar cuántos de los dígitos más a la derecha del operando de entrada se deben colocar en la ubicación del operando de salida. Son posibles tanto las operaciones de truncamiento como las de ampliación. Puede surgir un indicador de desbordamiento si se pierden dígitos significativos, dependiendo de los ajustes del sistema.
3) Operación de signo (SO): Esta parte de la codificación de instrucciones determina la operación de signo particular que se está realizando. Por ejemplo, SO puede indicar:
- que está ocurriendo un movimiento simple, por lo que el código de signo debe mantenerse desde la entrada hasta la salida;
- que el código de signo debe complementarse (cambiar de positivo a negativo o de negativo a positivo) de la entrada a la salida;
- el código del signo de entrada debe forzarse a positivo en la salida, independientemente del valor de signo de entrada (es decir, una operación de tipo valor absoluto);
- el código de signo de entrada debe forzarse a negativo en la salida, independientemente del valor de signo de entrada.
4) Código de Signo Positivo (PC): Esta parte de la codificación de instrucciones controla si el código de signo de salida, para valores de resultado que son positivos, debe codificarse como 0xF (1111 en binario) o 0xC (1100 en binario).
5) Validación de Signo (SV) del Operando de Entrada: Esta parte de la codificación de instrucciones controla si una validación de signo (y una excepción de hardware correspondiente para códigos de signo ilegales) debe ocurrir para operaciones de signo de forzar positivo y forzar negativo. Este control permite a los usuarios de la realización de la operación decimal de signo mantener estricta compatibilidad de excepción en presencia de posibles codificaciones de signo ilegales. Este tipo de control puede utilizarse, por ejemplo, cuando se realiza una traducción binaria (llamada a veces optimización binaria) donde se debe mantener una estricta compatibilidad con el comportamiento original, incluso en presencia de código/datos ilegales. En una realización, el ajuste SV=0 para las operaciones de signo de forzar positivo y negativo indica omitir la verificación de validez, y SV=1 indica verificar signos no válidos (y en esta realización, la verificación de validez ocurre para operaciones de signo que utilizan inherentemente, frente a la sobrescritura, el código de signo de entrada de alguna manera).
6) Ajuste de Código (CS) de Condición. La instrucción de Vector Decimal para realizar Operación de Signo también permite al usuario solicitar que los códigos de condición se ajusten en base al valor del resultado final. Se proporcionan ajustes para indicar un valor de resultado de cero, menor que cero y mayor que cero, así como una indicación de si hubo desbordamiento (truncamiento de dígitos significativos) como parte de la operación.
En una realización, todos los ajustes anteriores se pueden codificar en solo 6 bytes (que también incluyen el código de operación y el RXB, descritos a continuación) de texto de codificación con varios bits restantes para futuras mejoras. El código de signo de resultado se determina, en un ejemplo, por la combinación de, por ejemplo, los ajustes de operación de signo (SO), el signo del segundo operando, el recuento de dígitos de resultado (RDC) y el código de signo positivo (PC).
Los ajustes y detalles adicionales de la instrucción de Vector Decimal para realizar Operación de Signo se describen a continuación. En una realización, la instrucción de Vector Decimal para realizar Operación de Signo es parte de una instalación vectorial, que proporciona, por ejemplo, vectores de tamaño fijo que oscilan de uno a dieciséis elementos. Cada vector incluye datos que son operados por instrucciones de vector definidas en la instalación. En una realización, si un vector está formado por múltiples elementos, entonces cada elemento se procesa en paralelo con los otros elementos. La finalización de la instrucción no ocurre hasta que se complete el procesamiento de todos los elementos. En otras realizaciones, los elementos se procesan parcialmente en paralelo y/o secuencialmente.
Las instrucciones de vector se pueden implementar como parte de varias arquitecturas, incluyendo, pero sin limitarse a, la z/Architecture, la Power Architecture, x86, IA-32, IA-64, etc. Aunque las realizaciones descritas en el presente documento son para z/Architecture, la instrucción de vector descrita en el presente documento y uno o más aspectos pueden basarse en muchas otras arquitecturas. LazlArchitecture es solo un ejemplo.
En una realización en la que la instalación de vector se implementa como parte de la z/Architecture, para usar los registros e instrucciones de vector, un control de habilitación de vector y un control de registro en un registro de control específico (por ejemplo, el registro de control 0) se ajusta a, por ejemplo, uno. Si la instalación de vector se instala y se ejecuta una instrucción de vector sin el conjunto de controles de habilitación, se reconoce una excepción de datos. Si la instalación de vector no se instala y se ejecuta una instrucción de vector, se reconoce una excepción de operación. En una realización, hay 32 registros de vector y se pueden mapear otros tipos de registros a un cuadrante de los registros de vector. Por ejemplo, un archivo de registro puede incluir 32 registros de vector y cada registro es de 128 bits de longitud. Dieciséis registros de punto flotante, que son de 64 bits de longitud, pueden solapar los registros de vector. Por lo tanto, como ejemplo, cuando se modifica un registro de punto flotante 2, entonces también se modifica el registro de vector 2. También son posibles otros mapeos para otros tipos de registros.
Los datos de vector aparecen en el almacenamiento, por ejemplo, en la misma secuencia de izquierda a derecha que otros formatos de datos. Los bits de un formato de datos que se numeran del 0 al 7 constituyen el byte en la ubicación de bytes más a la izquierda (numerado más bajo) en el almacenamiento, los bits 8 a 15 forman el byte en la siguiente ubicación secuencial, y así sucesivamente. En un ejemplo adicional, los datos de vector pueden aparecer en el almacenamiento en otra secuencia, tal como de derecha a izquierda.
Un ejemplo de una instrucción de Vector Decimal para realizar Operación de Signo se describe
con referencia a las FIGS.3A-3D. Como se muestra, la instrucción tiene una pluralidad de campos, y un campo puede tener un número de subíndice asociado al mismo. El número de subíndice asociado a un campo de la instrucción denota el operando al que se aplica el campo. Por ejemplo, el número de subíndice 1 asociado al registro de vector V1denota que el registro en V1incluye el primer operando, y así sucesivamente. Un operando de registro es un registro de longitud, que es, por ejemplo, de 128 bits.
Haciendo referencia a la FIG. 3A, en una realización, una instrucción de Vector Decimal para realizar Operación de Signo 300 incluye campos de código de operación 302a, 302b que indican una operación de vector decimal para realizar operación de signo; un primer campo de registro de vector 304 utilizado para designar un primer registro de vector (V1); un segundo campo de registro de vector 306 utilizado para designar un segundo registro de vector (V2); un primer campo inmediato (I4) 308; un campo de máscara (M5) 310; un segundo campo inmediato (I3) 312; y un campo de bit de extensión de registro (RXB) 314, cada uno de los cuales se describe a continuación. En una realización, los campos están separados y son independientes entre sí; sin embargo, en otras realizaciones se puede combinar más de un campo. A continuación se describe información adicional sobre estos campos.
El campo de registro de vector 304 se utiliza para indicar un registro de vector que es para almacenar el primer operando, incluyendo el primer operando un signo modificado generado por la instrucción y un número especificado de dígitos del segundo operando. El operando y el resultado están, por ejemplo, en formato decimal empaquetado con signo. En un ejemplo, en el formato decimal empaquetado con signo, cada byte contiene dos dígitos (D) decimales, excepto para el byte más a la derecha, que contiene un signo (S) a la derecha de un dígito decimal.
El segundo operando (es decir, el operando de entrada) está contenido en el registro de vector especificado utilizando el campo de registro de vector 306. En un ejemplo, cada uno de los campos de registro de vector 304, 306 se utiliza con el campo RXB 314 para designar el registro de vector.
Por ejemplo, el campo RXB 314 incluye el bit más significativo para un operando designado de registro de vector. Los bits para designaciones de registro no especificados por la instrucción deben reservarse y ajustarse a cero. El bit más significativo se concatena, por ejemplo, a la izquierda de la designación de registro de cuatro bits del campo de registro de vector para crear una designación de registro de vector de cinco bits.
En un ejemplo, el campo RXB incluye cuatro bits (por ejemplo, los bits 0-3), y los bits se definen como sigue:
0 - bit más significativo para la primera designación de registro de vector (por ejemplo, en los bits 8-11) de la instrucción.
1 - bit más significativo para la segunda designación de registro de vector (por ejemplo, en los bits 12-15) de la instrucción, si lo hubiera.
2 - bit más significativo para la tercera designación de registro de vector (por ejemplo, en los bits 16-19) de la instrucción, si lo hubiera.
3 - bit más significativo para la cuarte designación de registro de vector (por ejemplo, en los bits 32-35) de la instrucción, si lo hubiera.
Cada bit se ajusta a cero o uno, por ejemplo, mediante el ensamblador dependiendo del número de registro. Por ejemplo, para los registros 0-15, el bit se ajusta a 0; para los registros 16-31, el bit se ajusta a 1, etc.
En una realización, cada bit RXB es un bit de extensión para una ubicación particular en una instrucción que incluye uno o más registros de vector. Por ejemplo, el bit 0 de RXB es un bit de extensión para la ubicación 8-11, que se asigna, por ejemplo, a V1y así sucesivamente. En particular, para los registros de vector, el registro que contiene el operando se especifica utilizando, por ejemplo, un campo de cuatro bits del campo de registro con la adición de su bit de extensión de registro (RXB) correspondiente como el bit más significativo. Por ejemplo, si el campo de cuatro bits es 0110 y el bit de extensión es 0, entonces el campo de cinco bits 00110 indica el número de registro 6. En una realización adicional, el campo RXB incluye bits adicionales, y se utiliza más de un bit como una extensión para cada vector o ubicación.
El campo inmediato (I4) 308 especifica un cuarto operando que incluye un número de controles. Por ejemplo, el campo I4 308 incluye lo siguiente, como se representa en la FIG.3B:
•<Reservado: Los bits 0-3 se ignoran, pero deben contener ceros; de otra manera, el programa puede no operar de>manera compatible en el futuro.
•<Operación de Signo (SO) 342: Los bits 4-5 especifican la operación de signo utilizada en la determinación del>código de signo de resultado. El código de signo de resultado es una función de, por ejemplo, el control de SO, el signo del segundo operando, los dígitos del segundo operando, el control de RDC y el bit de PC, como se especifica en la FIG.4.
• Código de Signo Positivo (PC) 344: Cuando el bit 6 es uno, se utiliza el código de signo 1111 cuando el resultado es positivo. Cuando el bit 6 es cero, se utiliza el código de signo 1100 cuando el resultado es positivo.
• Validación de Signo (SV) de Operando 2346: Si el bit 7 es uno y el control de SO especifica forzar positivo o forzar negativo, se verifica entonces la validez del código de signo del segundo operando. Si el bit 7 es cero y el control de SO especifica forzar positivo o forzar negativo, no se verifica entonces la validez del código de signo del segundo operando. Cuando el control de SO especifica mantener o complementar el signo, se verifica la validez del código de signo del segundo operando, independientemente del valor del bit de SV.
El campo M5310 incluye, en un ejemplo, el siguiente control, como se representa en la FIG.3C:
• Reservado: Los bits 0-2 se ignoran, y deben contener ceros; de otra manera, el programa puede no operar de manera compatible en el futuro.
• Ajuste de Código (CS) de Condición 348: Cuando el bit 3 es cero, no se ajusta el código de condición y permanece sin cambios. Cuando el bit 3 es uno, se ajusta el código de condición como se especifica en la sección de código de condición resultante siguiente.
Código de Condición Resultante:
Cuando el bit CS es uno, el código de condición se ajusta como sigue, en un ejemplo:
0 Resultado cero; sin desbordamiento
1 Resultado menor que cero; sin desbordamiento
2 Resultado mayor que cero; sin desbordamiento
3 Desbordamiento
Cuando el bit CS es cero, el código de condición permanece sin cambios.
El campo I3312 incluye, en un ejemplo, el siguiente control, como se representa en la FIG.3D:
• Reservado: Los bits 0-2 son reservados y deben contener ceros. De lo contrario, se reconoce una excepción de especificación.
• Recuento de Dígitos de Resultado (RDC) 350: Los bits 3-7 contienen un número binario sin signo que especifica el número de dígitos más a la derecha del segundo operando que se colocarán en el primer operando. Si la magnitud del segundo operando es mayor que el número decimal más grande que se puede representar con el número especificado de dígitos, ocurre desbordamiento decimal y, si una máscara de desbordamiento decimal es uno, ocurre una interrupción del programa para desbordamiento decimal, en un ejemplo. Si el campo de RDC es cero, en una realización se reconoce una excepción de especificación.
Aunque se describen varios campos y registros, uno o más aspectos de la presente invención pueden utilizar otros campos o registros, adicionales o menos, u otros tamaños de campos y registros, etc. Son posibles muchas variaciones. Por ejemplo, se pueden utilizar registros implicados en lugar de registros o campos de la instrucción especificados explícitamente. Además, se pueden utilizar registros distintos de los registros de vector. Además, en otras realizaciones, se pueden seleccionar otros dígitos, tales como los dígitos más a la izquierda u otro subconjunto. De nuevo, también son posibles otras variaciones.
En operación de una realización de la instrucción de Vector Decimal para realizar Operación de Signo, el signo modificado y el número especificado de dígitos más a la derecha del segundo operando se colocan en la ubicación del primer operando con los otros dígitos ajustados a cero. En un ejemplo, el operando y el resultado están en formato decimal empaquetado con signo.
Si el control de RDC no especifica suficientes dígitos para contener todos los dígitos más a la izquierda distintos de cero
del segundo operando, ocurre desbordamiento decimal. La operación está completa. El resultado se obtiene ignorando los dígitos de desbordamiento y, si el marcador del ajuste de código (CS) de condición es uno, se ajusta el código de condición 3. Si una máscara de desbordamiento decimal, en, por ejemplo, una palabra de estado de programa, es uno, ocurre una interrupción de programa por desbordamiento decimal.
Si el control de RDC especifica menos de, por ejemplo, treinta y un dígitos, los ceros se colocan en los dígitos más a la izquierda restantes del primer operando.
En un ejemplo, se verifica la validez de todos los códigos de dígito del segundo operando. Se verifica la validez del código de signo del segundo operando, a menos que el control de operación de signo (SO) especifique que el signo de resultado es positivo o negativo forzado, y el control de validación de signo (SV) del operando 2 sea cero.
El código de signo de resultado es una función de, por ejemplo, el control de SO, el signo del segundo operando, los dígitos del segundo operando, el control de recuento de dígitos de resultado (RDC) y el control de código de signo positivo (PC), como se especifica en la FIG. 4. Por ejemplo, si SO (400) = 00, el valor de los dígitos del segundo operando después de aplicar el RDC (402) es distinto de cero, el signo del segundo operando (V2) (404) es positivo y PC (406) es uno, el código de signo resultante (408) es hexadecimal F (positivo) 410. Adicionalmente, muestra que en este ejemplo, se realiza una verificación de validez 412 para el código de signo del operando de entrada.
Aunque se proporcionan varios ejemplos, son posibles variaciones sin apartarse del alcance de los aspectos reivindicados. Por ejemplo, los valores que se incluyen en los registros y/o campos utilizados por la instrucción pueden estar, en otras realizaciones, en otras ubicaciones, tales como ubicaciones de memoria, etc. Son posibles muchas otras variaciones.
Con referencia a la FIG. 5, se describen detalles adicionales con respecto al procesamiento asociado a la ejecución de una instrucción de Vector Decimal para realizar Operación de Signo. El procesamiento se realiza por al menos un procesador.
Haciendo referencia a la FIG.5, inicialmente se obtiene el valor del segundo operando, PASO 500. En un ejemplo, el valor del segundo operando incluye una pluralidad de dígitos, y se toma una determinación en cuanto a si esos dígitos son válidos, CONSULTA 502. Si los dígitos no son válidos, entonces el procesamiento de la instrucción de Vector Decimal para realizar Operación de Signo está completo. Sin embargo, si los dígitos son válidos, entonces el procesamiento continúa con la obtención del recuento de dígitos de resultado del campo I3, PASO 504. Además, se selecciona al menos una parte del segundo operando, PASO 506. Por ejemplo, se selecciona el número de dígitos más a la derecha indicados en el recuento de dígitos de resultado. La parte seleccionada del segundo operando se coloca en una ubicación seleccionada, PASO 508. En un ejemplo, la ubicación seleccionada es un registro designado utilizando el campo V1. En otro ejemplo, la ubicación seleccionada está en la memoria o en otra ubicación más. Además, se determina un signo para la parte seleccionada del segundo operando, PASO 510. En un ejemplo, el signo se determina utilizando una pluralidad de criterios que incluyen, por ejemplo, la operación de signo, como se especifica en el campo I4; la magnitud del resultado se aplica después de RDC; el signo del segundo operando; y el valor del código de signo positivo especificado en I4. En base a estos criterios, se obtiene un código de signo resultante, como se indica en la FIG. 4. Este código de signo resultante se coloca entonces en la ubicación seleccionada junto con el número especificado de dígitos más a la derecha, PASO 512. En un ejemplo, el número especificado de dígitos más a la derecha y el código de signo se colocan en el formato decimal empaquetado con signo.
En el presente documento se describe una instalación para utilizar una instrucción de arquitectura única para realizar una operación de signo. Esta instrucción reemplaza una o más secuencias de instrucciones y mejora el procesamiento y el rendimiento del ordenador. En un ejemplo, se proporciona una capacidad que ajusta códigos de signo para números decimales empaquetados de forma compacta y eficiente.
Una sola instrucción (por ejemplo, una instrucción de arquitectura única) puede manejar, por ejemplo, los siguientes casos: movimiento de datos mas ajuste de signo a 0xC, 0xD o 0xF; truncamiento de datos mientras opcionalmente se ajusta o conserva el signo; capacidad de suprimir la validación para datos de entrada no confiables (esto es una opción de compatibilidad en el caso de uso de optimización binaria, como un ejemplo); complementación de signo; y ajuste de código de condición opcional. Algunos lenguajes proporcionan una excepción de máquina en desbordamiento, pero otros (por ejemplo, COBOL) utilizan un código de condición para una acción definida por el usuario.
Ahora se revisa el ejemplo descrito anteriormente que utilizó la secuencia de ZAP/OI para una ampliación de variable sin signo. Este comportamiento ahora se puede lograr con la instrucción de Vector Decimal para realizar Operación de Signo al ajustar RDC al tamaño de resultado más amplio deseado, ajustando SO para forzar positivo y ajustar SV en 0 para omitir la verificación de validez de signo. El comportamiento deseado y totalmente compatible ahora se logra en una sola instrucción.
Con referencia a las FIGS. 6A-6B, se describen detalles adicionales con respecto a facilitar del procesamiento en un entorno informático, que incluye la ejecución de una instrucción para realizar una operación de signo.
Haciendo referencia a la FIG. 6A, en una realización, al menos un procesador obtiene una instrucción para realizar una operación de signo de una pluralidad de operaciones de signo configuradas para la instrucción, PASO 600, y la ejecuta, PASO 602. La ejecución incluye, por ejemplo, seleccionar al menos una porción de un operando de entrada como un resultado para colocarlo en una ubicación seleccionada, PASO 604. La selección se basa en un control de la instrucción (606), indicando el control de la instrucción un tamaño definido por el usuario del operando de entrada que se va a seleccionar como el resultado (608). Se toma una determinación de un signo del resultado en base a una pluralidad de criterios, PASO 610. La pluralidad de criterios incluye, por ejemplo, un valor del resultado, obtenido en base al control de la instrucción, que tiene una primera relación particular o una segunda relación particular con respecto a un valor seleccionado (612). El resultado y el signo se almacenan en la ubicación seleccionada para proporcionar una salida con signo que se utilizará en el procesamiento dentro del entorno informático, PASO 614. Como ejemplos, la primera relación particular es igual, la segunda relación particular no es igual y el valor seleccionado es cero (616).
Además, en un ejemplo, la al menos una porción del operando de entrada incluye un número de dígitos seleccionados (por ejemplo, un número de dígitos más a la derecha) del operando de entrada, el número de dígitos seleccionados especificado por el control de la instrucción (618). Además, haciendo referencia a la FIG. 6B, en una realización, el control se proporciona en un campo inmediato de la instrucción (620).
Aún más, en un ejemplo, la pluralidad de criterios incluye además la operación de signo a realizar (622). Además, en otro ejemplo, la pluralidad de criterios incluye al menos un criterio seleccionado de un grupo de criterios que incluye una operación de signo a realizar, un signo del operando de entrada y un control de código de signo positivo de la instrucción (624).
Como un ejemplo, la pluralidad de operaciones de signo incluye mantener, complementar, positivo forzado y negativo forzado (626).
En una realización adicional, la ejecución incluye además verificar la validez de un signo del operando de entrada, en base a otro control de la instrucción que indica que la validez se va a verificar, PASO 628.
Además, en un ejemplo, la ubicación seleccionada es un registro, especificándose el registro utilizando al menos un campo de la instrucción (630). El al menos un campo incluye un campo de registro que especifica un número de registro y un campo de extensión que especifica un valor de extensión que se añadirá al número de registro (632). Uno o más aspectos pueden estar relacionados con la informática en la nube.
Se entiende de antemano que, aunque esta divulgación incluye una descripción detallada de la informática en la nube, la implementación de las enseñanzas recitadas en el presente documento no se limita a un entorno de informática en la nube. Más bien, las realizaciones de la presente invención son capaces de implementarse junto con cualquier otro tipo de entorno informático conocido ahora o desarrollado posteriormente.
La informática en la nube es un modelo de prestación de servicios para permitir un acceso de red cómodo y bajo demanda a un conjunto compartido de recursos informáticos configurables (por ejemplo, redes, ancho de banda de red, servidores, procesamiento, memoria, almacenamiento, aplicaciones, máquinas virtuales y servicios) que se pueden aprovisionar y lanzar rápidamente con un mínimo esfuerzo de gestión o interacción con un proveedor del servicio. Este modelo en la nube puede incluir al menos cinco características, al menos tres modelos de servicio y al menos cuatro modelos de implementación.
Las características son como sigue:
Autoservicio bajo demanda: un consumidor en la nube puede aprovisionar capacidades informáticas de forma unilateral, tales como la hora del servidor y el almacenamiento de red, según sea necesario de forma automática, sin requerir interacción humana con el proveedor del servicio.
Amplio acceso a la red: las capacidades están disponibles sobre una red y se accede a ellas a través de mecanismos estándar que promueven el uso por plataformas heterogéneas de clientes ligeros o pesados (por ejemplo, teléfonos móviles, ordenadores portátiles y PDA).
Agrupación de recursos: los recursos informáticos del proveedor se agrupan para servir a múltiples consumidores usando un modelo de múltiples inquilinos, con diferentes recursos físicos y virtuales asignados dinámicamente y reasignados según la demanda. Hay un sentido de independencia de ubicación en el sentido de que el consumidor generalmente no tiene control ni conocimiento sobre la ubicación exacta de los recursos proporcionados, pero puede ser capaz de especificar la ubicación en un nivel de abstracción superior (por ejemplo, país, estado o centro de datos). Elasticidad rápida: las capacidades se pueden aprovisionar rápida y elásticamente, en algunos casos de manera automática, para poner a escala rápidamente y liberarlas rápidamente para escalarlas rápidamente. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ilimitadas y pueden adquirirse en cualquier cantidad en cualquier momento.
Servicio medido: los sistemas en la nube controlan y optimizan automáticamente el uso de recursos aprovechando una capacidad de medición en algún nivel de abstracción apropiado al tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de los recursos se puede monitorizar, controlar e informar, proporcionando transparencia tanto para el proveedor como para el consumidor del servicio utilizado. Los modelos de servicio son como sigue:
Software como Servicio (SaaS): la capacidad que se proporciona al consumidor es para utilizar las aplicaciones del proveedor que se ejecutan en una infraestructura en la nube. Las aplicaciones son accesibles desde varios dispositivos cliente a través de una interfaz de cliente ligero, tal como un navegador web (por ejemplo, correo electrónico basado en web). El consumidor no gestiona ni controla la infraestructura de la nube subyacente, que incluye la red, los servidores, los sistemas operativos, el almacenamiento o incluso las capacidades de aplicaciones individuales, con la posible excepción de ajustes limitados de configuración de aplicaciones específicas del usuario.
Plataforma como Servicio (PaaS): la capacidad proporcionada al consumidor es para implementar en la infraestructura en la nube aplicaciones creadas o adquiridas por el consumidor, creadas usando lenguajes de programación y herramientas soportadas por el proveedor. El consumidor no gestiona ni controla la infraestructura de la nube subyacente, incluidas las redes, los servidores, los sistemas operativos o el almacenamiento, pero tiene control sobre las aplicaciones implementadas y, posiblemente, las configuraciones del entorno del alojamiento de aplicaciones. Infraestructura como Servicio (IaaS): la capacidad proporcionada al consumidor es para aprovisionar procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales donde el consumidor es capaz de implementar y ejecutar software arbitrario, que puede incluir sistemas operativos y aplicaciones. El consumidor no gestiona ni controla la infraestructura en la nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones implementadas y, posiblemente, un control limitado de los componentes de interconexión de redes seleccionados (por ejemplo, los firewalls de anfitrión).
Los modelos de implementación son como sigue:
Nube privada: la infraestructura en la nube se opera únicamente para una organización. Se puede gestionar por la organización o por un tercero y puede existir en las instalaciones o fuera de las instalaciones. Nube comunitaria: la infraestructura en la nube es compartida por varias organizaciones y soporta una comunidad específica que tiene intereses compartidos (por ejemplo, misión, requisitos de seguridad, políticas y consideraciones de cumplimiento). Se puede gestionar por las organizaciones o por un tercero y puede existir en las instalaciones o fuera de las instalaciones. Nube pública: la infraestructura en la nube se pone a disposición del público en general o de un gran grupo industrial y es propiedad de una organización que vende servicios en la nube.
Nube híbrida: la infraestructura en la nube es una composición de dos o más nubes (privada, comunitaria o pública) que siguen siendo entidades únicas pero están unidas entre sí por una tecnología estandarizada o propietaria que permite la portabilidad de datos y aplicaciones (por ejemplo, el estallido en la nube para equilibrar la carga entre nubes).
Un entorno informático en la nube está orientado a servicio con un enfoque en ausencia de estado, bajo acoplamiento, modularidad e interoperabilidad semántica. En el corazón de la informática en la nube está una infraestructura que comprende una red de nodos interconectados. Un nodo de este tipo es el nodo 10 representado en la FIG.1A. El nodo informático 10 es solo un ejemplo de un nodo informático en la nube adecuado y no pretende sugerir ninguna limitación en cuanto al alcance de uso o funcionalidad de las realizaciones de la invención descritas en el presente documento. No obstante, el nodo informático en la nube 10 es capaz de implementarse y/o realizar cualquiera de las funcionalidades establecidas anteriormente.
Haciendo referencia ahora a la FIG.7, se representa el entorno informático en la nube 50 ilustrativo. Como se muestra, el entorno informático en la nube 50 comprende uno o más nodos informáticos 10 con los que pueden comunicarse los dispositivos informáticos locales utilizados por los consumidores de la nube, tales como, por ejemplo, un asistente digital personal (PDA) o un teléfono móvil 54A, un ordenador de sobremesa 54B, un ordenador portátil 54C y/o un sistema informático de automóvil 54N. Los nodos 10 pueden comunicarse unos con otros. Se pueden agrupar (no mostrado) física o virtualmente, en una o más redes, tales como nubes Privadas, Comunitarias, Públicas o Híbridas, como se ha descrito anteriormente, o una combinación de las mismas. Esto permite que el entorno informático en la nube 50 ofrezca infraestructura, plataformas y/o software como servicios para los que un consumidor de la nube no necesita mantener recursos en un dispositivo informático local. Se entiende que los tipos de dispositivos informáticos 54A-N mostrados en la FIG. 7 se pretende que sean únicamente ilustrativos y que los nodos informáticos 10 y el entorno informático en la nube 50 pueden comunicarse con cualquier tipo de dispositivo informatizado a través de cualquier tipo de red y/o conexión direccionable de red (por ejemplo, utilizando un navegador web).
Haciendo referencia ahora a la FIG.8, se muestra un conjunto de capas de abstracción funcional proporcionadas por el entorno informático en la nube 50 (FIG.7). Se debería entender de antemano que los componentes, las capas y las funciones mostrados en la FIG.8 se pretende que sean únicamente ilustrativos y las realizaciones de la invención no están limitadas a los mismos. Como se representa, se proporcionan las siguientes capas y funciones correspondientes: La capa de hardware y software 60 incluye componentes de hardware y software. Ejemplos de componentes de hardware incluyen ordenadores centrales 61; servidores basados en la arquitectura RISC (Ordenador de Conjunto de Instrucciones Reducido - Reduced Instruction Set Computer) 62; servidores 63; servidores blade 64; dispositivos de almacenamiento 65; y redes y componentes de interconexión de redes 66. En algunas realizaciones, los componentes de software incluyen software de servidor de aplicaciones de red 67 y el software de base de datos 68.
La capa de virtualización 70 proporciona una capa de abstracción a partir de la que se pueden proporcionar los siguientes ejemplos de entidades virtuales: servidores virtuales 71; almacenamiento virtual 72; redes virtuales 73, incluyendo redes privadas virtuales; aplicaciones virtuales y sistemas operativos 74; y clientes virtuales 75.
En un ejemplo, la capa de gestión 80 puede proporcionar las funciones descritas a continuación. El aprovisionamiento de recursos 81 proporciona una adquisición dinámica de recursos informáticos y otros recursos que se utilizan para realizar tareas dentro del entorno informático en la nube. La Medición y Fijación de precios 82 proporcionan un seguimiento de los costes a medida que se utilizan los recursos dentro del entorno informático en la nube, y el cobro o facturación por el consumo de estos recursos. En un ejemplo, estos recursos pueden comprender licencias de software de aplicaciones. La seguridad proporciona verificación de identidad para los consumidores y tareas en la nube, así como protección para los datos y otros recursos. El portal de usuario 83 proporciona acceso al entorno informático en la nube para consumidores y administradores de sistemas. La gestión de nivel de servicio 84 proporciona la asignación y gestión de recursos informáticos en la nube de manera que se cumplan los niveles de servicio requeridos. La planificación y el cumplimiento del Acuerdo de Nivel de Servicio (SLA) 85 proporcionan un acuerdo previo para, y la adquisición de, recursos informáticos en la nube para los que se anticipa un requisito futuro de acuerdo con un SLA.
La capa de cargas de trabajo 90 proporciona ejemplos de funcionalidad para lo cual se puede utilizar el entorno informático en la nube. Ejemplos de cargas de trabajo y funciones que se pueden proporcionar desde esta capa incluyen: mapeo y navegación 91; desarrollo de software y gestión del ciclo de vida 92; distribución de educación en el aula virtual 93; procesamiento de analíticas de datos 94; procesamiento de transacciones 95; y procesamiento de instrucciones 96.
La presente invención puede ser un sistema, un método y/o un producto de programa informático en cualquier posible nivel de integración de detalle técnico. El producto de programa informático puede incluir un medio (o medios) de almacenamiento legible(s) por ordenador que tiene(n) instrucciones de programa legibles por ordenador en el(los) mismo(s) para hacer que un procesador lleve a cabo aspectos de la presente invención.
El medio de almacenamiento legible por ordenador puede ser un dispositivo tangible que puede retener y almacenar instrucciones para su uso por un dispositivo de ejecución de instrucciones. El medio de almacenamiento legible por ordenador puede ser, por ejemplo, pero no se limita a, un dispositivo de almacenamiento electrónico, un dispositivo de almacenamiento magnético, un dispositivo de almacenamiento óptico, un dispositivo de almacenamiento electromagnético, un dispositivo de almacenamiento de semiconductor o cualquier combinación adecuada de los anteriores. Una lista no exhaustiva de ejemplos más específicos del medio de almacenamiento legible por ordenador incluye lo siguiente: un disquete de ordenador portátil, un disco duro, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable y borrable (EPROM o memoria Flash), una memoria estática de acceso aleatorio (SRAM), un disco compacto de memoria de solo lectura portátil (CD-ROM), un disco versátil digital (DVD), una memoria USB, un disco flexible, un dispositivo codificado mecánicamente, tal como tarjetas perforadas o estructuras elevadas en una ranura que tiene instrucciones grabadas en las mismas, y cualquier combinación adecuada de los anteriores. Un medio de almacenamiento legible por ordenador, como se usa en el presente documento, no debe interpretarse como señales transitorias en sí, tales como ondas de radio u otras ondas electromagnéticas que se propagan libremente, ondas electromagnéticas que se propagan a través de una guía de ondas u otros medios de transmisión (por ejemplo, pulsos de luz que pasan a través de un cable de fibra óptica) o señales eléctricas transmitidas a través de un cable.
Las instrucciones de programa legibles por ordenador descritas en el presente documento pueden descargarse a los respectivos dispositivos informáticos/de procesamiento desde un medio de almacenamiento legible por ordenador o a un ordenador externo o dispositivo de almacenamiento externo a través de una red, por ejemplo, Internet, una red de área local, una red de área amplia y/o una red inalámbrica. La red puede comprender cables de transmisión de cobre, fibras de transmisión óptica, transmisión inalámbrica, enrutadores, firewalls, conmutadores, ordenadores de puerta de enlace y/o servidores periféricos. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo informático/de procesamiento recibe instrucciones de programa legibles por ordenador desde la red y envía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo informático/de procesamiento respectivo.
Las instrucciones de programa legibles por ordenador para llevar a cabo las operaciones de la presente invención pueden ser instrucciones de ensamblador, instrucciones de arquitectura de conjunto de instrucciones (ISA), instrucciones de máquina, instrucciones dependientes de la máquina, microcódigo, instrucciones de firmware, datos de ajuste de estado, datos de configuración para circuitería integrada o código fuente o código objeto escritos en cualquier combinación de uno o más lenguajes de programación, incluido un lenguaje de programación orientado a objetos tales como Smalltalk, C++ o similares, y lenguajes de programación procedimentales, tal como el lenguaje de programación “C” o lenguajes de programación similares. Las instrucciones de programa legibles por ordenador pueden ejecutarse completamente en el ordenador del usuario, parcialmente en el ordenador del usuario, como un paquete de software independiente, parcialmente en el ordenador del usuario y parcialmente en un ordenador remoto o completamente en el ordenador o servidor remoto. En este último escenario, el ordenador remoto puede conectarse al ordenador del usuario a través de cualquier tipo de red, incluyendo una red de área local (LAN) o una red de área amplia (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet utilizando un Proveedor de Servicios de Internet). En algunas realizaciones, la circuitería electrónica que incluye, por ejemplo, circuitería lógica programable, matrices de puertas programables en campo (FPGA) o matrices lógicas programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador mediante el uso de la información de estado de las instrucciones de programa legibles por ordenador para personalizar la circuitería electrónica, con el fin de realizar aspectos de la presente invención.
Aspectos de la presente invención se describen en el presente documento con referencia a ilustraciones de diagrama de flujo y/o diagramas de bloques de métodos, aparatos (sistemas) y productos de programas informáticos de acuerdo con las realizaciones de la invención. Se entenderá que cada bloque de las ilustraciones del diagrama de flujo y/o los diagramas de bloques, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o los diagramas de bloques, pueden implementarse mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador pueden proporcionarse a un procesador de un ordenador de propósito general, ordenador de propósito especial u otro aparato de procesamiento de datos programable para producir una máquina, de modo que las instrucciones, que se ejecutan a través del procesador del ordenador u otro aparato de procesamiento de datos programable, creen medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques. Estas instrucciones de programa legibles por ordenador también pueden almacenarse en un medio de almacenamiento legible por ordenador que puede dirigir un ordenador, un aparato de procesamiento de datos programable y/u otros dispositivos para que funcionen de una manera particular, de modo que el medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo comprende un artículo de fabricación que incluye instrucciones que implementan aspectos de la función/acto especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques.
Las instrucciones del programa legibles por ordenador también pueden cargarse en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para provocar que se realicen una serie de etapas operativas en el ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, de modo que las instrucciones que se ejecutan en el ordenador, otro aparato programable u otro dispositivo implementan las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques del diagrama de bloques. El diagrama de flujo y los diagramas de bloques de las Figuras ilustran la arquitectura, la funcionalidad y la operación de posibles implementaciones de sistemas, métodos y productos de programas informáticos de acuerdo con diversas realizaciones de la presente invención. A este respecto, cada bloque en el diagrama de flujo o los diagramas de bloques puede representar un módulo, segmento o porción de instrucciones, que comprende una o más instrucciones ejecutables para implementar la función o funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en los bloques pueden ocurrir fuera del orden indicado en las Figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse sustancialmente de manera simultánea, o los bloques pueden ejecutarse en ocasiones en el orden inverso, dependiendo de la funcionalidad implicada. También se señalará que cada bloque de los diagramas de bloques y/o la ilustración del diagrama de flujo, y las combinaciones de bloques en los diagramas de bloques y/o la ilustración del diagrama de flujo, pueden implementarse mediante sistemas basados en hardware de propósito especial que realizan las funciones o actos especificados o llevan a cabo combinaciones de hardware de propósito especial e instrucciones de ordenador.
Además de lo anterior, un proveedor de servicios que ofrezca la gestión de entornos de cliente puede proporcionar, ofrecer, implementar, gestionar, atender, etc., uno o más aspectos. Por ejemplo, el proveedor de servicios puede crear, mantener, soportar, etc. un código informático y/o una infraestructura informática que realice uno o más aspectos para uno o más clientes. A cambio, el proveedor de servicios puede recibir el pago del cliente bajo una suscripción y/o un acuerdo de tarifa, como ejemplos. Adicional o alternativamente, el proveedor de servicios puede recibir el pago de la venta de contenido publicitario a uno o más terceros.
En un aspecto, se puede implementar una aplicación para realizar una o más realizaciones. Como ejemplo, la implementación de una aplicación comprende proporcionar una infraestructura informática operable para realizar una o más realizaciones.
Como aspecto adicional, se puede implementar una infraestructura informática que comprenda integrar un código legible por ordenador en un sistema informático, en el que el código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Como un aspecto adicional más, se puede proporcionar un proceso para integrar una infraestructura informática que comprende integrar un código legible por ordenador en un sistema informático. El sistema informático comprende un medio legible por ordenador, en el que el medio informático comprende una o más realizaciones. El código en combinación con el sistema informático es capaz de realizar una o más realizaciones.
Aunque anteriormente se han descrito varias realizaciones, estas son solamente ejemplos. Por ejemplo, se pueden usar entornos informáticos de otras arquitecturas para incorporar y usar una o más realizaciones. Además, se pueden usar diferentes instrucciones, formatos de instrucción, campos de instrucción y/o valores de instrucción. Son posibles muchas variaciones.
Además, otros tipos de entornos informáticos pueden beneficiarse y utilizarse. Como ejemplo, se puede utilizar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluya al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus de sistema. Los elementos de memoria incluyen, por ejemplo, la memoria local empleada durante la ejecución real del código del programa, un almacenamiento masivo y una memoria caché que proporciona almacenamiento temporal de al menos parte del código del programa con el fin de reducir el número de veces que el código debe recuperarse del almacenamiento masivo durante la ejecución.
Los dispositivos de Entrada/Salida o E/S (incluyendo, pero sin limitarse a, teclados, pantallas, dispositivos señaladores, DASD, cintas, CD, DVD, memorias USB y otros medios de memoria, etc.) se pueden acoplar al sistema o bien directamente o a través de controladores de E/S intervinientes. Los adaptadores de red también pueden se pueden acoplar al sistema para permitir que el sistema de procesamiento de datos llegue a acoplarse a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes privadas o públicas intervinientes. Los módems, módems de cable y tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
La terminología utilizada en el presente documento tiene el propósito de describir las realizaciones particulares solamente y no se pretende que sea limitante. Como se usa en el presente documento, las formas singulares “un”, “una” y “el”, “la” se pretende que incluyan también las formas plurales, a menos que el contexto lo indique claramente de otro modo. Se entenderá además que los términos “comprende” y/o “que comprende”, cuando se usan en esta memoria descriptiva, especifican la presencia de características, números enteros, etapas, operaciones, elementos y/o componentes indicados, pero no excluyen la presencia o adición de una o más características, números enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las correspondientes estructuras, materiales, actos y equivalentes de todos los medios o etapas más elementos de función en las reivindicaciones siguientes, si los hay, se pretende que incluyan cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados, como se reivindica específicamente. La descripción de una o más realizaciones se ha presentado con fines de ilustración y descripción, pero no se pretende que sea exhaustiva ni esté limitada a la forma divulgada. Muchas modificaciones y variaciones resultarán evidentes para los expertos en la técnica. La realización se eligió y describió con el fin de explicar mejor diversos aspectos y la aplicación práctica, y para permitir que otros expertos en la técnica entiendan diversas realizaciones con diversas modificaciones que sean adecuadas para el uso particular contemplado.

Claims (15)

REIVINDICACIONES
1. Un método implementado por ordenador, que comprende:
obtener una instrucción de vector para su ejecución, la instrucción de vector para realizar una operación de signo de una pluralidad de operaciones de signo configuradas por la instrucción de vector (600); y
ejecutar la instrucción de vector (602), la ejecución se caracteriza por incluir:
seleccionar al menos una porción de un operando de entrada como un resultado para colocarlo en una ubicación seleccionada (604), basándose la selección en un control (350) de la instrucción de vector, indicando el control de la instrucción de vector un tamaño definido por el usuario de la porción del operando de entrada que se va a seleccionar como el resultado (608);
determinar un código de signo del resultado en base a una pluralidad de criterios (610), incluyendo la pluralidad de criterios una operación de signo (342, 400) seleccionada para realizarse (622); un signo (404) del operando de entrada (624); un valor del resultado (402) obtenido en base al control (350) de la instrucción de vector (612, 616) que tiene una primera relación particular o una segunda relación particular con respecto a cero,
en donde la primera relación particular es igual y la segunda relación particular no es igual; y un control de código de signo positivo (344, 406) que controla cómo se va a codificar (624) un código de signo positivo; y almacenar el resultado y el código de signo en la ubicación seleccionada para proporcionar una salida con signo que se utilizará en el procesamiento dentro del entorno informático (614).
2. El método implementado por ordenador de la reivindicación 1, en donde el valor del resultado es cero, distinto de cero o no aplicable (402).
3. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde al menos una porción del operando de entrada comprende un número de dígitos seleccionados del operando de entrada, el número de dígitos seleccionados especificado por el control de la instrucción de vector (618).
4. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde el control se proporciona en un campo inmediato (312) de la instrucción de vector (620).
5. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde la operación de signo se especifica mediante la instrucción de vector (342).
6. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde el control de código de signo positivo se especifica mediante la instrucción de vector (344).
7. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde la pluralidad de operaciones de signo comprende mantener, complementar, positivo forzado y negativo forzado (400, 626).
8. El método implementado por ordenador de cualquiera de las reivindicaciones anteriores, en donde la ejecución incluye además verificar la validez de un signo del operando de entrada, en base a otro control (346) de la instrucción de vector que indica que la validez se va a verificar (628).
9. Un sistema informático que comprende:
una memoria; y
un procesador en comunicación con la memoria, en donde el sistema informático está configurado para realizar el método de acuerdo con la reivindicación 1.
10. El sistema informático de la reivindicación 9, en donde el valor del resultado es cero, distinto de cero o no aplicable (402).
11. El sistema informático de cualquiera de las reivindicaciones 9 o 10, en donde al menos una porción del operando de entrada comprende un número de dígitos seleccionados del operando de entrada, el número de dígitos seleccionados especificado por el control de la instrucción de vector (618).
12. El sistema informático de cualquiera de las reivindicaciones 9 a 11, en donde el control del código de signo positivo se especifica mediante la instrucción de vector (344).
13. El sistema informático de cualquiera de las reivindicaciones 9 a 12, en donde la ejecución incluye además verificar la validez de un signo del operando de entrada, en base a otro control (346) de la instrucción de vector que indica que la validez se va a verificar (628).
14. Un medio de almacenamiento legible por ordenador legible por un circuito de procesamiento y que almacena instrucciones de vector para su ejecución por el circuito de procesamiento para realizar un método de acuerdo con cualquiera de las reivindicaciones a 1 a 8.
15. Un programa informático almacenado en un medio legible por ordenador y cargado en la memoria interna del sistema de cualquiera de las reivindicaciones 9 a 13, que comprende porciones de código de software, cuando dicho programa se ejecuta en el sistema, para realizar el método de cualquiera de las reivindicaciones 1 a 8.
ES17791582T 2016-09-30 2017-09-22 Instrucción decimal para realizar una operación de signos Active ES2965065T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/281,173 US10175946B2 (en) 2016-09-30 2016-09-30 Perform sign operation decimal instruction
PCT/EP2017/074091 WO2018060102A1 (en) 2016-09-30 2017-09-22 Perform sign operation decimal instruction

Publications (1)

Publication Number Publication Date
ES2965065T3 true ES2965065T3 (es) 2024-04-10

Family

ID=60191332

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17791582T Active ES2965065T3 (es) 2016-09-30 2017-09-22 Instrucción decimal para realizar una operación de signos

Country Status (17)

Country Link
US (2) US10175946B2 (es)
EP (1) EP3519942B1 (es)
JP (1) JP7021408B2 (es)
KR (1) KR102238189B1 (es)
CN (1) CN109791489B (es)
AU (1) AU2017333837B2 (es)
BR (1) BR112019006626A2 (es)
CA (1) CA3036125A1 (es)
ES (1) ES2965065T3 (es)
HU (1) HUE064386T2 (es)
IL (1) IL265549B (es)
MX (1) MX2019003606A (es)
PL (1) PL3519942T3 (es)
RU (1) RU2718968C1 (es)
TW (1) TWI651649B (es)
WO (1) WO2018060102A1 (es)
ZA (1) ZA201902529B (es)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
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
US11836459B2 (en) * 2021-03-30 2023-12-05 Apple Inc. Floating-point division circuitry with subnormal support

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1405049A1 (ru) * 1985-10-31 1988-06-23 Предприятие П/Я Р-6886 Устройство дл суммировани двух чисел с плавающей зап той
JP2826927B2 (ja) * 1992-09-19 1998-11-18 株式会社ピーエフユー 演算処理装置および処理方法
RU2143726C1 (ru) * 1997-07-15 1999-12-27 Козлов Михаил Кириллович Формульный процессор с командоподобными логическими управляющими элементами
JP3886870B2 (ja) * 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7424501B2 (en) * 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7797366B2 (en) * 2006-02-15 2010-09-14 Qualcomm Incorporated Power-efficient sign extension for booth multiplication methods and systems
US8560591B2 (en) 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
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
JP2009110353A (ja) 2007-10-31 2009-05-21 Hitachi Ltd マイクロコントローラ及び制御システム
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
US8495125B2 (en) * 2009-05-27 2013-07-23 Microchip Technology Incorporated DSP engine with implicit mixed sign operands
TWI419481B (zh) * 2009-12-31 2013-12-11 Nat Univ Tsing Hua 低密度奇偶檢查碼編解碼器及其方法
US9335993B2 (en) 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US9329861B2 (en) * 2011-12-29 2016-05-03 International Business Machines Corporation Convert to zoned format from decimal floating point format
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9916185B2 (en) * 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9858058B2 (en) * 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US20160092162A1 (en) * 2014-09-30 2016-03-31 International Business Machines Corporation Machine instructions for converting to decimal floating point format from packed decimal 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
US10175946B2 (en) * 2016-09-30 2019-01-08 International Business Machines Corporation Perform sign operation decimal instruction
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction

Also Published As

Publication number Publication date
PL3519942T3 (pl) 2024-02-26
IL265549B (en) 2022-08-01
US10346134B2 (en) 2019-07-09
JP2019532415A (ja) 2019-11-07
US20180095727A1 (en) 2018-04-05
TWI651649B (zh) 2019-02-21
CN109791489B (zh) 2023-08-11
IL265549A (en) 2019-05-30
AU2017333837A1 (en) 2019-04-04
RU2718968C1 (ru) 2020-04-15
JP7021408B2 (ja) 2022-02-17
HUE064386T2 (hu) 2024-03-28
TW201816601A (zh) 2018-05-01
CN109791489A (zh) 2019-05-21
BR112019006626A2 (pt) 2019-07-02
ZA201902529B (en) 2022-04-28
MX2019003606A (es) 2019-06-17
KR102238189B1 (ko) 2021-04-09
US10175946B2 (en) 2019-01-08
KR20190058502A (ko) 2019-05-29
AU2017333837B2 (en) 2020-07-16
EP3519942B1 (en) 2023-11-08
EP3519942A1 (en) 2019-08-07
US20180095726A1 (en) 2018-04-05
EP3519942C0 (en) 2023-11-08
WO2018060102A1 (en) 2018-04-05
CA3036125A1 (en) 2018-04-05

Similar Documents

Publication Publication Date Title
ES2965065T3 (es) Instrucción decimal para realizar una operación de signos
US11099853B2 (en) Digit validation check control in instruction execution
TWI758679B (zh) 用於指令執行中之負零控制之電腦程式產品、電腦系統及電腦實作方法
ES2811033T3 (es) Instrucción de multiplicación y desplazamiento de decimales
RU2726147C1 (ru) Команда сдвига и деления десятичного числа
AU2022227809B2 (en) Vector pack and unpack instructions
US10990390B2 (en) Decimal load immediate instruction
US10831479B2 (en) Instruction to move data in a right-to-left direction