ES2811033T3 - Instrucción de multiplicación y desplazamiento de decimales - Google Patents

Instrucción de multiplicación y desplazamiento de decimales Download PDF

Info

Publication number
ES2811033T3
ES2811033T3 ES17772028T ES17772028T ES2811033T3 ES 2811033 T3 ES2811033 T3 ES 2811033T3 ES 17772028 T ES17772028 T ES 17772028T ES 17772028 T ES17772028 T ES 17772028T ES 2811033 T3 ES2811033 T3 ES 2811033T3
Authority
ES
Spain
Prior art keywords
instruction
computer
result
value
sign
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
ES17772028T
Other languages
English (en)
Inventor
Silvia Mueller
Reid Copeland
Jonathan Bradbury
Steven Carlough
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=59955559&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=ES2811033(T3) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of ES2811033T3 publication Critical patent/ES2811033T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/4915Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/52Multiplying; Dividing
    • G06F7/523Multiplying only

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Control Of Transmission Device (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

Un procedimiento implementado por ordenador para facilitar el procesamiento dentro de un entorno informático, comprendiendo el procedimiento: obtener una instrucción para la ejecución, la instrucción para realizar una operación de multiplicación y desplazamiento; y ejecutar la instrucción, comprendiendo la ejecución: multiplicar un primer valor y un segundo valor obtenido por la instrucción para obtener un producto; desplazar el producto en una dirección especificada por una cantidad seleccionada para proporcionar un resultado, la cantidad seleccionada que está definida por el usuario; y colocar el resultado en una ubicación seleccionada, el resultado se utilizará en el procesamiento dentro del entorno informático.

Description

DESCRIPCIÓN
Instrucción de multiplicación y desplazamiento de decimales
Antecedentes
Uno o más aspectos se relacionan, en general, con el procesamiento dentro de un entorno informático y, en particular, con la mejora de dicho procesamiento.
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 diseñados para comunicar instrucciones al procesador. Existen varios tipos de lenguajes de programación, y cada lenguaje puede usar uno o más tipos de codificaciones para representar datos.
Por ejemplo, los enteros decimales escalados (también conocidos como decimales codificados binarios escalados/BCD escalado) son un tipo de datos común en muchos programas COBOL y PL/I, así como en los sistemas de gestión de bases de datos DB2. Un número BCD escalado es un número BCD más un descriptor de formato (nk), donde se interpreta que el número BCD tiene n dígitos antes del punto decimal y k dígitos después del punto decimal (es decir, con k dígitos de fracción), o un entero decimal ser multiplicado por 10-k.
Realizar sumas y restas en datos BCD escalados con el mismo parámetro k es sencillo porque los datos están correctamente alineados y el resultado tiene el mismo número de dígitos de fracción. La multiplicación es más compleja porque el producto intermedio de ancho completo de dos (nk) números tiene (2n.2k) dígitos, pero el resultado deseado generalmente es (2n. k).
Las instrucciones convencionales de multiplicación decimal suministran los dígitos L menos significativos y pueden tener restricciones de longitud severas. El código para realizar la multiplicación BCD escalada puede ser bastante complejo y requiere múltiples operaciones de multiplicación, desplazamiento y adición.
Sumario
Se superan las deficiencias 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 de ordenador comprende un medio de almacenamiento legible por un circuito de procesamiento y almacenando instrucciones para su ejecución por el circuito de procesamiento para realizar un procedimiento. El procedimiento incluye, por ejemplo, obtener una instrucción para la ejecución, la instrucción para realizar una operación de multiplicación y desplazamiento. La instrucción se ejecuta y la ejecución incluye multiplicar un primer valor y un segundo valor obtenido por la instrucción para obtener un producto. El producto se desplaza en una dirección especificada por una cantidad seleccionada para proporcionar un resultado, la cantidad seleccionada está definida por el usuario. El resultado se coloca en una ubicación seleccionada y se debe utilizar en el procesamiento dentro del entorno informático. El uso de una sola instrucción para realizar una operación de multiplicación BCD a escala mejora el rendimiento al eliminar una secuencia de instrucciones prolongada y reducir el número de instrucciones que se deben buscar, decodificar y ejecutar.
Como un ejemplo, el resultado incluye una pluralidad de dígitos del producto seleccionado en función del desplazamiento por la cantidad seleccionada.
Además, en una realización, la ejecución incluye determinar un signo para el resultado; e incluir el signo en la ubicación seleccionada, el resultado y el signo que proporcionan un valor seleccionado para ser usado en el procesamiento dentro del entorno informático.
En una realización, la determinación del signo incluye verificar un control proporcionado por la instrucción. El control se proporciona, por ejemplo, en un campo de máscara de la instrucción.
Además, en una realización, la ejecución incluye obtener el primer valor y el segundo valor de uno o más campos de la instrucción; comprobar la validez del primer valor y el segundo valor; y realizar la multiplicación, basándose en la verificación que indica que el primer valor y el segundo valor son válidos.
En ejemplos, la dirección especificada es correcta; la cantidad seleccionada se obtiene de un campo de la instrucción; y la ubicación seleccionada es un registro, el registro se especifica utilizando al menos un campo de la instrucción. 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 agregará al número de registro.
Los procedimientos y sistemas relacionados con uno o más aspectos también se divulgan y reivindican en la presente memoria. Además, los servicios relacionados con uno o más aspectos también se divulgan y se pueden reclamar en la presente memoria.
Se obtienen características y ventajas adicionales a través de las técnicas descritas en la presente memoria. Otras realizaciones y aspectos se divulgan en detalle en la presente memoria 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 Figura 1A representa un ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La Figura 1B representa detalles adicionales del procesador de la FIG. 1A, de acuerdo con un aspecto de la presente invención;
La Figura 2A representa otro ejemplo de un entorno informático para incorporar y usar uno o más aspectos de la presente invención;
La Figura 2B representa detalles adicionales de la memoria de la FIG. 2A;
La Figura 3A representa un ejemplo de una instrucción de multiplicación vectorial y desplazamiento decimal, de acuerdo con un aspecto de la presente invención;
La Figura 3B representa una realización de controles de un campo inmediato de la instrucción de multiplicación vectorial y desplazamiento decimal de la FIG. 3A, de acuerdo con un aspecto de la presente invención;
La Figura 3C representa una realización de controles de un campo de máscara de la instrucción de multiplicación vectorial y desplazamiento decimal de la FIG. 3A, de acuerdo con un aspecto de la presente invención;
La Figura 4 representa un ejemplo de un diagrama de bloques de ejecución de la instrucción de multiplicación vectorial y desplazamiento decimal, de acuerdo con un aspecto de la presente invención;
La Figura 5A ilustra gráficamente un ejemplo de una operación de multiplicación BCD;
La Figura 5B ilustra gráficamente otro ejemplo de una operación de multiplicación BCD;
La Figura 5C representa gráficamente un ejemplo de una operación de multiplicación y desplazamiento BCD, de acuerdo con un aspecto de la presente invención;
Las Figuras 6A-6B representan un ejemplo de facilitar el procesamiento en un entorno informático, que incluye la ejecución de la instrucción de multiplicación vectorial y desplazamiento decimal, de acuerdo con un aspecto de la presente invención;
La Figura 7 representa una realización de un entorno de computación en la nube; y
La Figura 8 representa un ejemplo de capas de modelo de abstracción.
Descripción detallada
Uno o más aspectos se relacionan con la mejora del procesamiento dentro de un entorno informático al proporcionar una capacidad para reemplazar una secuencia de instrucciones larga con una sola instrucción (por ejemplo, una sola instrucción de máquina con arquitectura en la interfaz de hardware/software) para realizar una operación decimal codificado binario escalado (BCD). En un ejemplo, la instrucción, a la que se hace referencia en la presente memoria como una instrucción de multiplicación vectorial y desplazamiento decimal, multiplica dos entradas BCD de ancho completo (por ejemplo, 31 dígitos cada una), produciendo un producto intermedio de ancho completo (por ejemplo, 62 dígitos), y luego permite la selección como resultado de varios dígitos (por ejemplo, cualquier rango de 31 dígitos) del producto intermedio. Se detecta un desbordamiento cuando cualquier dígito que queda al número especificado de dígitos (por ejemplo, rango de 31 dígitos) no es cero. Esto también puede verse como la aplicación de un desplazamiento a la derecha al producto intermedio: R = (A*B) >> sh, donde sh es desplazamiento.
Esta instrucción permite la selección del resultado como un conjunto de bits arbitrario del producto completo; y para realizar la comprobación de desbordamiento en función de ese conjunto de bits arbitrario.
Una realización de un entorno informático para incorporar y usar uno o más aspectos de la presente invención se divulga con referencia a la FIG. 1A. En un ejemplo, el entorno informático se basa en la z/Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Una realización de la z/Architecture se divulga en "z/Architecture Principles of Operation, "Publicación de IBM No. SA22-7832-10, marzo de 2015. Z/ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
En otro ejemplo, el entorno informático se basa en la Power Architecture, ofrecida por International Business Machines Corporation, Armonk, Nueva York. Una realización de la Power Architecture se divulga en "Power ISA™ Versión 2.07B, "International Business Machines Corporation, 9 de abril de 2015. POWER ARCHITECTURE es una marca registrada de International Business Machines Corporation, Armonk, Nueva York, EE. UU.
El entorno informático también puede basarse en otras arquitecturas, incluidas, entre otras, las arquitecturas Intel x86. También existen otros ejemplos.
Como se muestra en la Figura 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 sistemas informáticos de propósito general o de propósito especial. Los ejemplos de sistemas informáticos conocidos, entornos y/o configuraciones que pueden ser adecuados para su uso con el sistema informático/servidor 12 incluyen, pero no se limitan a, sistemas de ordenador personal (PC), sistemas de ordenador servidor, clientes ligeros, clientes gruesos, dispositivos de mano o portátiles, sistemas multiprocesador, sistemas basados en microprocesadores, decodificadores, electrónica de consumo programable, PC en red, sistemas de miniordenadores, sistemas informáticos de ordenador central y entornos de computación 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 del sistema informático, tales como módulos de programa, ejecutados por un sistema informático. En general, 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 practicar en muchos entornos informáticos, incluidos, entre otros, entornos de computación en la nube distribuidos donde las tareas son realizadas por dispositivos de procesamiento remoto que están vinculados a través de una red de comunicaciones. En un ambiente de computación distribuido, los módulos de programa se pueden localizar tanto en un medio de almacenamiento para ordenador remoto como local incluyendo un medio de almacenamiento de memoria.
Como se muestra en la Figura 1A, el sistema informático/servidor 12 se muestra en forma de un dispositivo informático de uso general. Los componentes del sistema informático/servidor 12 pueden incluir, entre otros, uno o más procesadores o unidades de procesamiento 16, una memoria del sistema 28 y un bus 18 que acopla varios componentes del sistema, incluida la memoria del sistema 28 al procesador 16.
El bus 18 representa uno o más de varios tipos de estructuras del bus, que incluyen 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 usa cualquiera de una variedad de arquitecturas de bus. A manera de ejemplo, y no de limitación, tales arquitecturas incluyen un bus de arquitectura estándar de la industria (ISA), un bus de arquitectura de Micro Canal (MCA), un bus de iSa Mejorado (EISA), un bus local de Asociación de Estándares de Circuitos Electrónicos de Video (VESA), y un bus de Interconexión de Componentes Periféricos (PCI).
El sistema informático/servidor 12 incluye típicamente una variedad de medios legibles por sistemas informáticos. Tales medios pueden ser cualquier medio disponible que sea accesible por el sistema informático/servidor 12, e incluye medios volátiles y no volátiles, medios extraíbles y no extraíbles.
La memoria del sistema 28 puede incluir medios legibles del sistema informático en forma de memoria volátil, 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 sistemas informáticos extraíbles/no extraíbles, volátiles/no volátiles. A manera de ejemplo solamente, el sistema de almacenamiento 34 puede proporcionarse para leer y escribir a un medio magnético no desmontable, no volátil (no se muestra y típicamente denominado un "disco duro"). Aunque no se muestra, puede proporcionarse una unidad de disco magnético para leer y escribir en un disco magnético no volátil y desmontable (por ejemplo, un "disquete"), y una unidad de disco óptico para leer o escribir en un disco óptico no volátil y extraíble 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 describirá más adelante, la memoria 28 puede incluir al menos un producto de programa con un conjunto (por ejemplo, al menos uno) de módulos de programa que se configuran para llevar a cabo las funciones de las modalidades 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 sin limitación, así como un sistema operativo, uno o más programas de aplicación, otros módulos de programa y datos de programa. Cada uno del sistema operativo, uno o más programas de aplicación, otros módulos de programa y datos de programas o alguna de sus combinaciones, pueden incluir una implementación de un entorno de red. Los módulos de programa 42 generalmente llevan a cabo las funciones y/o metodologías de realizaciones de la invención como se describe en la presente memoria.
El sistema informático/servidor 12 también puede comunicarse con uno o más dispositivos externos 14, 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 que el sistema informático/servidor 12 se comunique con uno o más dispositivos informáticos. Dicha comunicación puede ocurrir a través de las interfaces de Entrada/Salida (E/S) 22. Aun así, el sistema informático/servidor 12 puede comunicarse con una o más redes 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 muestra, el adaptador de red 20 se comunica con los otros componentes del sistema informático/servidor 12 a través del bus 18. Debe entenderse que, aunque no se muestra, otros componentes de hardware y/o software podrían usarse junto con el sistema/servidor informático 12. Los ejemplos incluyen, pero no se limitan a: microcódigo, controladores del dispositivo, unidades de procesamiento redundantes, arreglos de unidades de disco externas, sistemas RAID, unidades de cintas, y sistemas de almacenamiento de datos, etc.
Por ejemplo, el procesador 16 incluye una pluralidad de componentes funcionales utilizados para ejecutar instrucciones. Como se representa en la Figura 1B, estos componentes funcionales incluyen, por ejemplo, un componente de captación de instrucciones 120 para captar instrucciones a ejecutar; una unidad 122 de decodificación de instrucciones para decodificar las instrucciones recuperadas y obtener operandos de las instrucciones decodificadas; la instrucción ejecuta componentes 124 para ejecutar las instrucciones decodificadas; un componente de acceso a 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. De acuerdo con un aspecto de la presente invención, uno o más de estos componentes pueden usarse para realizar una operación de multiplicación y desplazamiento decimal 136, como se divulga 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 usar uno o más aspectos se divulga con referencia a la Figura 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 y/o interfaces de entrada/salida 206 acoplados entre sí mediante, por ejemplo, uno o más autobuses 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.
La unidad de procesamiento central nativa 202 incluye uno o más registros nativos 210, tales como uno o más registros de propósito general y/o uno o más registros de propósito especial utilizados durante el procesamiento dentro del entorno. Estos registros incluyen información que representa el estado del medio ambiente en un momento determinado.
Además, la unidad de procesamiento central 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 que las máquinas basadas en arquitecturas distintas de la z/Architecture, como procesadores PowerPC, servidores pSeries, servidores HP Superdome u otros, emulen la z/Architecture y ejecuten software e instrucciones desarrolladas en base a z/Arquitectura.
Se divulgan detalles adicionales relacionados con el código de emulador 212 con referencia a la FIG. 2B. Las instrucciones de invitado 250 almacenadas en la memoria 204 comprenden instrucciones de software (por ejemplo, correlacionadas con las instrucciones de la máquina) que se desarrollaron para ejecutarse en una arquitectura distinta a la de la CPU 202 nativa. Por ejemplo, las instrucciones de invitado 250 pueden haber sido diseñadas para ejecutarse en un procesador 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 obtención de instrucciones 252 para obtener una o más instrucciones de invitado 250 de la memoria 204 y, opcionalmente, proporcionar almacenamiento intermedio 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 correspondientes 256. Esta traducción incluye, por ejemplo, identificar la función a realizar por la instrucción de invitado y elegir la(s) instrucción(es) nativa(s) 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 202 nativa ejecute una rutina de instrucciones nativas que emule una o más instrucciones de invitado obtenidas previamente y, al concluir dicha ejecución, devuelva el control a la rutina de búsqueda de instrucciones para emular la obtención de la siguiente instrucción de invitado o un grupo de instrucciones para invitados. La ejecución de las instrucciones nativas 256 puede incluir cargar datos en un registro desde la memoria 204; almacenar datos en la memoria desde un registro; o realizar algún tipo de operación aritmética o lógica, según lo determine la rutina de traducción.
Cada rutina se implementa, por ejemplo, en un software, que se almacena en la memoria y se ejecuta mediante la unidad central de procesamiento 202 nativa. 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 se pueden emular usando 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 desembolsarse entre diferentes dispositivos de memoria.
Como se usa en la presente memoria, el firmware incluye, por ejemplo, el microcódigo, el milicódigo y/o el macrocódigo del procesador. Incluye, por ejemplo, las instrucciones de nivel de hardware y/o las estructuras de datos utilizadas en la implementación del código de máquina de nivel superior. En una realización, incluye, por ejemplo, código propietario que típicamente 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 multiplicación vectorial y desplazamiento decimal descrita en la presente memoria. La instrucción, que es de una arquitectura (por ejemplo, la z/Architecture), se obtiene de la memoria, se traduce y se representa como una secuencia de instrucciones nativas 256 de otra arquitectura (por ejemplo, PowerPC, pSeries, Intel, etc.). Estas instrucciones nativas se ejecutan a continuación.
En la presente memoria se divulgan detalles relacionados con una realización de una instrucción de multiplicación vectorial y desplazamiento decimal, incluidos los campos de la instrucción y la ejecución por un procesador (ya sea en un sistema nativo o emulado). De acuerdo con un aspecto de la presente invención, la instrucción de multiplicación vectorial y desplazamiento decimal multiplica dos entradas BCD de ancho completo (por ejemplo, 31 dígitos cada una), produciendo un producto intermedio de ancho completo (por ejemplo, 62 dígitos) y luego permite la selección de cualquiera, por ejemplo, un rango de 31 dígitos del producto inmediato como resultado, detectando un desbordamiento cuando cualquier dígito que queda al rango de 31 dígitos especificado no es cero. Esto mejora el rendimiento del ordenador al reemplazar una larga secuencia de instrucciones para realizar una operación de multiplicación BCD con una sola instrucción (por ejemplo, una sola instrucción de máquina con arquitectura). Por lo tanto, los aspectos de la invención están inextricablemente vinculados a la tecnología informática y a la mejora del procesamiento informático.
En una realización, la instrucción de multiplicación vectorial y desplazamiento decimal es parte de una instalación vectorial, que proporciona, por ejemplo, vectores de tamaño fijo que van de uno a dieciséis elementos. Cada vector incluye datos operados por instrucciones de vectores definidas en la instalación. En una realización, si un vector está formado por múltiples elementos, cada elemento se procesa en paralelo con los otros elementos. La finalización de la instrucción no ocurre hasta que se completa el procesamiento de todos los elementos. En otras realizaciones, los elementos se procesan parcialmente en paralelo y/o secuencialmente.
Las instrucciones vectoriales se pueden implementar como parte de varias arquitecturas, que incluyen, entre otras, z/Architecture, Power Architecture, x86, IA-32, IA-64, etc. Aunque las realizaciones descritas en la presente memoria son para la z/Architecture, la instrucción de vector descrita en la presente memoria y uno o más aspectos adicionales pueden basarse en muchas otras arquitecturas. La z/Architecture es solo un ejemplo.
En una realización en la que la facilidad 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 especificado (por ejemplo, el registro de control 0) se establecen en, por ejemplo, uno. Si se instala la función de vector y se ejecuta una instrucción de vector sin los controles de habilitación establecidos, se reconoce una excepción de datos. Si la instalación de vector no está instalada y se ejecuta una instrucción de vector, se reconoce una excepción de operación.
En una realización, hay 32 registros de vectores y otros tipos de registros pueden mapearse a un cuadrante de los registros de vectores. Por ejemplo, un archivo de registro puede incluir 32 registros vectoriales y cada registro tiene una longitud de 128 bits. Dieciséis registros de coma flotante, que tienen una longitud de 64 bits, pueden superponerse a los registros vectoriales. Así, como ejemplo, cuando se modifica el registro de coma flotante 2, entonces el registro vectorial 2 también se modifica. También son posibles otras asignaciones para otros tipos de registros.
Los datos vectoriales 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 numerados del 0 al 7 constituyen el byte en la ubicación del byte más a la izquierda (el más bajo) en el almacenamiento, los bits del 8 al 15 forman el byte en la siguiente ubicación secuencial, y así sucesivamente. En otro ejemplo, los datos del vector pueden aparecer almacenados en otra secuencia, como de derecha a izquierda.
Un ejemplo de una instrucción de multiplicación vectorial y desplazamiento decimal se divulga con referencia a las FIGS. 3A-3C. Como se muestra, la instrucción tiene una pluralidad de campos, y un campo puede tener un número de subíndice asociado con el mismo. El número de subíndice asociado con un campo de la instrucción denota el operando al que se aplica el campo. Por ejemplo, el subíndice número 1 asociado con el registro vectorial V1 denota que el registro en V1 incluye el primer operando, y así sucesivamente. Un operando de registro es un registro de longitud, que es, por ejemplo, 128 bits.
Con referencia a la Figura 3A, en una realización, una instrucción 300 de multiplicación de vectores y desplazamiento decimal incluye campos de código de operación 302a, 302b que indican una operación de multiplicación de vectores y desplazamiento decimal; un primer campo de registro de vectores 304 usado para designar un primer registro de vectores (V1); un segundo campo de registro de vectores 306 usado para designar un segundo registro de vectores (V2); un tercer campo de registro de vectores 308 usado para designar un tercer registro de vectores (V3); un campo de máscara (M5) 310; un campo inmediato (I4) 312; y un campo 314 de bit de extensión de registro (RXB), cada uno de los cuales se divulga a continuación. En una realización, los campos son separados e independientes entre sí; sin embargo, en otras realizaciones, se puede combinar más de un campo. A continuación, se divulga más información sobre estos campos.
El campo 304 de registro de vectores se usa para indicar un registro de vector que debe almacenar el primer operando, siendo el primer operando el resultado de multiplicar dos operandos para obtener un producto y desplazar el producto para obtener el resultado. Los dos operandos y el resultado están, por ejemplo, en el formato decimal empaquetado con signo. Los dos operandos son el segundo operando (el multiplicando) contenido en el registro vectorial especificado usando el campo de registro vectorial 306 y el tercer operando (el multiplicador) contenido en el registro vectorial especificado usando el campo 308 de registro vectorial. En un ejemplo, cada uno de los campos de registro de vectores 304, 306, 308 se usa con el campo RXB 314 para designar el registro de vectores.
Por ejemplo, el campo RXB 314 incluye el bit más significativo para un operando designado de registro vectorial. Los bits para designaciones de registro no especificadas por la instrucción deben reservarse y establecerse en 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 vectores para crear una designación de registro de vector de cinco bits.
En un ejemplo, el campo RXB incluye cuatro bits (por ejemplo, bits 0-3), y los bits se definen de la siguiente manera: 0 - bit más significativo para la primera designación de registro vectorial (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 existe.
2 - El 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 existe.
3 - Bit más significativo para la cuarta designación de registro de vector (por ejemplo, en los bits 32-35) de la instrucción, si existe.
Cada bit se establece en cero o uno por, por ejemplo, el ensamblador en dependencia del número de registro. Por ejemplo, para los registros 0-15, el bit se establece en 0; para los registros 16-31, el bit se establece en 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 vectoriales. Por ejemplo, el bit 0 de RXB es un bit de extensión para la ubicación 8-11, que se asigna a, por ejemplo, V1 Etcétera. En particular, para los registros vectoriales, 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 correspondiente bit de extensión de registro (RXB) 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 usa más de un bit como una extensión para cada vector o ubicación.
Inmediato (I4) campo 312 especifica un cuarto operando que incluye un control de desplazamiento. Por ejemplo, I4 el campo 312 incluye lo siguiente, como se representa en la FIG. 3B:
• Reservado: Los bits 0-2 están reservados y deben contener ceros. De lo contrario, se reconoce una excepción de especificación.
• Cantidad de desplazamiento (SHAMT) 330: Los bits 3-7 contienen un número binario sin signo que especifica el número de dígitos que se desplaza el producto, por ejemplo, justo antes de que los treinta y un dígitos más a la derecha, en un ejemplo, se coloquen en el primer operando. La posición del signo no participa en el desplazamiento.
M5 el campo 310 incluye, en un ejemplo, los siguientes controles, como se representa en la FIG. 3C:
• Fuerza Operando 2 Positiva (P2) 340: Cuando el bit 0 es uno, el segundo signo de operando se trata como un signo positivo y no se verifica su validez. Cuando el bit 0 es cero, el segundo signo de operando se usa en la operación y se verifica su validez.
• Fuerza Operando 3 Positiva (P3) 342: Cuando el bit 1 es uno, el tercer signo de operando se trata como un signo positivo y no se verifica su validez. Cuando el bit 1 es cero, el tercer signo de operando se usa en la operación y se verifica su validez.
• Fuerza Operando 1 Positiva (P1) 344: Cuando el bit 2 es uno, el signo del resultado colocado en el primer operando se fuerza a positivo y se usa un código de signo de 1111. Cuando el bit 2 es cero, el signo del resultado colocado en el primer operando es el código de signo seleccionado para el signo del producto.
• Conjunto de código de condición (CS) 346: Cuando el bit 3 es cero, el código de condición no se establece y permanece sin cambios. Cuando el bit 3 es uno, el código de condición se establece como se especifica en la sección de código de condición resultante a continuación.
Código de condición resultante:
Cuando el bit CS es uno, el código de condición se establece, 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
Aunque se divulgan varios campos y registros, uno o más aspectos de la presente invención pueden usar otros campos o registros adicionales, o menos, u otros tamaños de campos o registros, etc. Son posibles muchas variaciones. Por ejemplo, se pueden usar registros implícitos en lugar de registros o campos especificados explícitamente de la instrucción. Además, se pueden usar registros distintos de los registros vectoriales. Nuevamente, otras variaciones también son posibles.
En la operación de la instrucción, el producto del segundo operando (el multiplicando) y el tercer operando (el multiplicador) se desplaza en una dirección seleccionada, por ejemplo, a la derecha, por el número de dígitos especificados en el cuarto operando y se coloca en la ubicación del primer operando. Los operandos y el resultado están en el formato decimal empaquetado firmado, en un ejemplo.
En un ejemplo, en el formato decimal empaquetado con signo, cada byte contiene dos dígitos decimales (D), excepto el byte más a la derecha, que contiene un signo (S) a la derecha de un dígito decimal. La aritmética decimal se realiza con operandos y genera resultados en el formato decimal empaquetado con signo.
Los códigos de signos del segundo y tercer operandos pueden modificarse para su uso en la operación por el control 340 del operando de fuerza dos positivo (P2) y el control 342 del operando de fuerza tres positivo (P3), respectivamente.
En un ejemplo, se verifica la validez de los códigos de dígitos, incluidos los dígitos sin efecto en el resultado debido a la cantidad de desplazamiento. La validez de los códigos de signos se verifica a menos que los controles de fuerza operando dos positivos (P2) u fuerza operando tres positivos (P3) los anulen.
Cuando el resultado, después de ser desplazado, es distinto de cero y la fuerza operando un control positivo (P1) 344 es cero, las reglas de álgebra del multiplicador y los signos de multiplicando determinan el signo del resultado y se utiliza un código de signo seleccionado. Cuando el resultado, después de ser desplazado, es cero y el control P1 es cero, el signo del resultado se hace positivo con el código de signo seleccionado 1100. Cuando el control P1 es uno, el signo del resultado se hace positivo con el código de signo 1111.
En una realización, si el primer operando no contiene todos los dígitos que no son del extremo izquierdo del producto desplazado, se produce un desbordamiento decimal. La operación se completa y se establece un código de condición, por ejemplo, el código de condición 3, si el bit Conjunto de código de condición (CS) es uno. Si un control de desbordamiento decimal en una máscara de programa incluida, por ejemplo, como parte de la palabra de estado del programa, es uno, se produce una interrupción del programa por desbordamiento decimal.
Se divulgan detalles adicionales con respecto a la operación de la instrucción con referencia a la FIG. 4. En un ejemplo, la lógica de la FIG. 4 es realizado por al menos un procesador basado en la obtención y ejecución de la instrucción de multiplicación vectorial y desplazamiento decimal.
Con referencia a la Figura 4, inicialmente, el segundo operando (el multiplicando) y el tercer operando (el multiplicador) se obtienen de los registros designados usando la V2 y V3 campos de la instrucción, ETAPA 400. En un ejemplo, se verifica la validez de los dígitos del segundo y tercer operando. En particular, en un ejemplo, se verifica la validez de todos los códigos de dígitos, incluidos los dígitos sin efecto en el resultado debido a la cantidad de desplazamiento, como se divulga a continuación. Si uno o más de los dígitos no son válidos, INQUIRY 402, entonces el procesamiento se completa y se puede indicar un error, en un ejemplo. Sin embargo, si los dígitos del segundo y tercer operandos son válidos, el procesamiento continúa con la obtención de la cantidad de desplazamiento, ETAPA 404. En un ejemplo, la cantidad de desplazamiento es definida por el usuario y proporcionada por la instrucción (por ejemplo, en I4312).
Además, el segundo y tercer operandos se multiplican para obtener un producto, el ETAPA 406. El producto se desplaza en una dirección específica (por ejemplo, hacia la derecha) por la cantidad de desplazamiento para obtener un resultado, ETAPA 408. El resultado se coloca en la ubicación del primer operando (por ejemplo, el registro designado con Vi), ETAPA 410.
Además, se determina un signo del resultado, ETAPA 412. Por ejemplo, cuando el resultado, después de ser desplazado, no es cero y el control positivo de fuerza operando uno (P1) es cero, las reglas de álgebra del multiplicador y los signos de multiplicando determinan el signo del resultado y se utiliza un código de signo seleccionado. Cuando el resultado, después de ser desplazado, es cero y el control P1 es cero, el signo del resultado se hace positivo con el código de signo seleccionado 1100. Cuando el control P1 es uno, el signo del resultado se hace positivo con el código de signo 1111. El código de signo del signo determinado se coloca en la ubicación del primer operando (por ejemplo, a la derecha), ETAPA 414. Esto completa el procesamiento de una realización de la instrucción de multiplicar y desplazar.
En una realización adicional, el desplazamiento puede ser hacia la izquierda y/o la dirección del desplazamiento puede seleccionarse mediante un control de la instrucción. Otras variaciones son posibles.
Una instrucción de multiplicación decimal anterior, MP, calcula R = A*SI; donde R se coloca en la ubicación de A. A puede tener una longitud de hasta 31 dígitos, pero B puede tener como máximo 15 dígitos. La limitación de longitud para B es aún más severa; su longitud L2 debe ser menor que la longitud del operando A (LI). El producto intermedio tiene hasta 2*(L1 L2)-2 dígitos, y para el resultado final, el menos significativo 2*Se seleccionan los dígitos L1-1. Si el producto tiene dígitos más significativos, se detecta un desbordamiento y se puede reconocer una excepción general de datos de operandos. Los dígitos seleccionados son fijos y no seleccionables.
Con otra instrucción decimal, VMP, ambos operandos pueden tener hasta 31 dígitos; relajando las limitaciones de longitud de la instrucción MP. Para la instrucción VMP, el producto de ancho completo intermedio tiene hasta 62 dígitos, y para el resultado final se seleccionan los 31 dígitos menos significativos. Se detecta un desbordamiento cuando el producto de ancho completo tiene más de 31 dígitos. Nuevamente, los dígitos seleccionados son fijos y no seleccionables.
Sin embargo, para la multiplicación de números BCD escalados, como se usan en DB2 o en muchas aplicaciones COBOL y PL/I, el resultado a menudo requiere el mismo número de dígitos de fracción que en los operandos. Esto se vuelve complejo debido al formato fijo del resultado.
Lo anterior se divulga adicionalmente con referencia a las Figs. 5A-5C.
Como se muestra en la Figura 5A, cuando se realiza una multiplicación 500 de dos números BCD de ancho completo 502a, 502b (por ejemplo, 31 dígitos), el producto intermedio de ancho completo tiene el doble de dígitos 504 (por ejemplo, 62). Las instrucciones de multiplicación BCD convencionales seleccionan una cantidad fija de dígitos, como los 31 dígitos menos significativos (o menos) 506, y luego verifican el desbordamiento 508 en consecuencia.
Para una operación de multiplicación BCD escalada, los 31 dígitos de la entrada se interpretan como algunos dígitos enteros "n" (antes del punto decimal) y algunos dígitos de fracción "k" (después del punto decimal). El producto deseado generalmente tiene el mismo número de dígitos de fracción que los operandos, que es solo la mitad del número de dígitos de fracción disponibles en el producto de ancho completo.
Considere el ejemplo: R (24,6) = A (12,6) *B (12,6).
La Figura 5B indica que incluso el resultado 520 del VMP multiplicado BCD mejorado no tiene suficientes dígitos para capturar todos los dígitos iniciales del resultado BCD escalado deseado 522.
Para obtener el resultado deseado, se utiliza una secuencia de instrucciones como la siguiente:
B'(12,0) = B(12,6)>>6
T1(24,6) = A(12,6)*B'(12,0)
B" (0,6) = B(12,6) y "0...0FFF"
T2(13,12) = A (12,6)*B"(0,6)
T3(13,6) = T2 (13,12) >> 6
R (24,6) = T1 (24,6) T3 (13,6)
De acuerdo con un aspecto de la presente invención, la secuencia de instrucciones se reemplaza por una instrucción (por ejemplo, una instrucción de arquitectura, tal como una instrucción de hardware de arquitectura) que realiza una operación de multiplicación y desplazamiento decimal. La instrucción combina una multiplicación decimal con una operación de desplazamiento. Como se muestra en la Figura 5C, calcula el producto de ancho completo 552 de múltiples operandos 550a, 550b, y desplaza el producto por dígitos sh 554 a, por ejemplo, a la derecha. Los dígitos desplazados de la derecha se pierden. Luego devuelve, por ejemplo, los 31 dígitos menos significativos del producto desplazado como resultado 556, y verifica si hay una condición de desbordamiento 558 de si hay dígitos distintos de cero a la izquierda de los dígitos del resultado seleccionado en el producto desplazado.
Por lo tanto, se puede seleccionar cualquier rango de 31 dígitos del producto de ancho completo como resultado. Además, la secuencia de instrucciones indicada anteriormente puede ser reemplazada por una sola operación de multiplicación y desplazamiento: R (24,6) = (A (12,6) *B (12,6)) >> 6.
La instrucción proporcionada de acuerdo con un aspecto de la presente invención aumenta significativamente la velocidad a la que se realizan las operaciones de multiplicación BCD escaladas, mejorando el procesamiento dentro de un entorno informático. Dichas operaciones pueden ser utilizadas por muchos tipos de aplicaciones y otros procesos del entorno informático.
Los detalles adicionales relacionados con la facilitación del procesamiento dentro de un entorno informático, incluida la ejecución de una instrucción para realizar una multiplicación decimal con una operación de desplazamiento, se divulgan con referencia a las Figuras 6A-6B.
Con referencia a la Figura 6A, se obtiene una instrucción (por ejemplo, una sola instrucción de máquina con arquitectura) para realizar una operación de multiplicación y desplazamiento, ETAPA 600, y se ejecuta, ETAPA 602. La ejecución incluye, por ejemplo, multiplicar un primer valor y un segundo valor obtenido por la instrucción para obtener un producto, ETAPA 604; desplazar el producto en una dirección especificada por una cantidad seleccionada para proporcionar un resultado, la cantidad seleccionada está definida por el usuario, ETAPA 606; y colocando el resultado en una ubicación seleccionada, el resultado que se utilizará en el procesamiento dentro del entorno informático, ETAPA 608.
Como un ejemplo, el resultado incluye una pluralidad de dígitos del producto seleccionado en función del desplazamiento por la cantidad seleccionada (610).
En una realización adicional, la ejecución incluye además determinar un signo para el resultado, ETAPA 612; e incluir el signo en la ubicación seleccionada, el resultado y el signo que proporcionan un valor seleccionado para ser utilizado en el procesamiento dentro del entorno informático, ETAPA 614.
Además, en un ejemplo, la ejecución incluye obtener el primer valor y el segundo valor de uno o más campos de la instrucción, ETAPA 616; comprobar la validez del primer valor y el segundo valor, ETAPA 618; y realizar la multiplicación, basándose en la comprobación que indica que el primer valor y el segundo valor son válidos, ETAPA 620.
Por ejemplo, y con referencia a la Figura 6B, la dirección especificada es correcta (630); la cantidad seleccionada se obtiene de un campo de la instrucción (632), y la ubicación seleccionada es un registro, el registro se especifica utilizando al menos un campo de la instrucción (634). 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 agregará al número de registro (636).
En una realización, la determinación del signo incluye verificar un control proporcionado por la instrucción, ETAPA 638; y el control que se proporciona, por ejemplo, en un campo de máscara de la instrucción (640).
En la presente memoria se divulga una facilidad para usar una sola instrucción de arquitectura para realizar la multiplicación de BCD. Esta instrucción reemplaza una larga secuencia de instrucciones y mejora el procesamiento y el rendimiento del ordenador.
Aunque se proporcionan varios ejemplos, son posibles variaciones sin apartarse del ámbito de los aspectos reivindicados. Por ejemplo, los valores que se incluyen en registros y/o campos utilizados por la instrucción pueden, en otras realizaciones, estar en otras ubicaciones, como ubicaciones de memoria, etc. Muchas otras variaciones son posibles.
Uno o más aspectos pueden estar relacionados con la computación en la nube.
Se entiende de antemano que, aunque esta divulgación incluye una descripción detallada sobre la computación en la nube, la implementación de las enseñanzas mencionadas en la presente memoria no se limita a un entorno de computación en la nube. Más bien, las realizaciones de la presente invención pueden implementarse junto con cualquier otro tipo de entorno informático ahora conocido o desarrollado posteriormente.
La computación en la nube es un modelo de prestación de servicios para permitir el acceso conveniente a la red a pedido 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 pueden se aprovisionará y liberará rápidamente con un mínimo esfuerzo de gestión o interacción con un proveedor del servicio. Este modelo de 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 las siguientes:
Autoservicio a pedido: un consumidor de la nube puede aprovisionar unilateralmente capacidades informáticas, como la hora del servidor y el almacenamiento en red, según sea necesario automáticamente sin requerir la interacción humana con el proveedor del servicio.
Amplio acceso a la red: las capacidades están disponibles a través de una red y se accede a ellas a través de mecanismos estándar que promueven el uso de plataformas heterogéneas de clientes delgados o gruesos (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 utilizando un modelo de múltiples inquilinos, con diferentes recursos físicos y virtuales asignados y reasignados dinámicamente según la demanda. Existe una sensación de independencia de ubicación en el sentido de que el consumidor generalmente no tiene control o conocimiento sobre la ubicación exacta de los recursos proporcionados, pero puede ser capaz de especificar la ubicación en un nivel superior de abstracción (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 automáticamente, para escalar rápidamente y liberarse rápidamente para escalar rápidamente. Para el consumidor, las capacidades disponibles para el aprovisionamiento a menudo parecen ser ilimitadas y se pueden comprar en cualquier cantidad en cualquier momento.
Servicio medido: los sistemas en la nube controlan y optimizan automáticamente el uso de los recursos al aprovechar una capacidad de medición en algún nivel de abstracción apropiado para el tipo de servicio (por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas). El uso de los recursos se puede monitorear, controlar e informar, proporcionando transparencia tanto para el proveedor como para el consumidor del servicio utilizado.
Los modelos de servicio son los siguientes:
Software como un Servicio (SaaS): la capacidad proporcionada al consumidor es utilizar las aplicaciones del proveedor que se ejecutan en una infraestructura en la nube. Se puede acceder a las aplicaciones desde varios dispositivos cliente a través de una interfaz de cliente ligero, como un navegador web (por ejemplo, correo electrónico basado en la web). El consumidor no gestiona ni controla la infraestructura de nube subyacente, incluida la red, los servidores, los sistemas operativos, el almacenamiento o incluso las capacidades de aplicaciones individuales, con la posible excepción de la configuración de aplicaciones limitadas específicas del usuario.
Plataforma como servicio (PaaS): la capacidad brindada al consumidor es implementar en la infraestructura de la nube aplicaciones creadas o adquiridas por el consumidor creadas utilizando lenguajes de programación y herramientas soportado por el proveedor. El consumidor no administra ni controla la infraestructura de 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 de alojamiento de aplicaciones.
Infraestructura como servicio (IaaS): la capacidad que se brinda al consumidor es el aprovisionamiento de procesamiento, almacenamiento, redes y otros recursos informáticos fundamentales donde el consumidor puede implementar y ejecutar software arbitrario, que puede incluir sistemas operativos y aplicaciones. El consumidor no administra ni controla la infraestructura de nube subyacente, pero tiene control sobre los sistemas operativos, el almacenamiento, las aplicaciones implementadas y posiblemente el control limitado de componentes de red seleccionados (por ejemplo, cortafuego de host).
Los modelos de implementación son los siguientes:
Nube privada: la infraestructura de la nube se opera únicamente para una organización. Puede ser administrado por la organización o por un tercero y puede existir dentro o fuera de las instalaciones.
Nube comunitaria: la infraestructura de la nube es compartida por varias organizaciones y admite una comunidad específica que ha compartido preocupaciones (por ejemplo, misión, requisitos de seguridad, políticas y consideraciones de cumplimiento). Puede ser administrado por las organizaciones o por un tercero y puede existir dentro o fuera de las instalaciones.
Nube pública: la infraestructura de 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 de la nube es una composición de dos o más nubes (privadas, comunitarias o públicas) que siguen siendo entidades únicas, pero están unidas por tecnología estandarizada o patentada que permite la portabilidad de datos y aplicaciones (por ejemplo, la explosión de nubes para el equilibrio de carga entre nubes).
Un entorno de computación en la nube está orientado al servicio con un enfoque en la apatridia, el bajo acoplamiento, la modularidad y la interoperabilidad semántica. En el corazón de la computación en la nube hay una infraestructura que comprende una red de nodos interconectados. Uno de tales nodos es el nodo 10 representado en la FIigura 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 ámbito de uso o funcionalidad de las realizaciones de la invención descritas en la presente memoria. Independientemente, el nodo de computación en la nube 10 es capaz de implementarse y/o realizar cualquiera de las funciones expuestas anteriormente.
Con referencia ahora a la Figura 7, se ilustra el entorno informático en la nube ilustrativo 50. Como se muestra, el entorno informático en la nube 50 comprende uno o más nodos informáticos 10 con los cuales los dispositivos informáticos locales utilizados por los consumidores en la nube, como, por ejemplo, el asistente digital personal (PDA) o el teléfono celular 54A, el ordenador de escritorio 54B, el ordenador portátil 54C y/o el sistema informático del automóvil 54N puede comunicarse. Los nodos 10 pueden comunicarse entre sí. Se pueden agrupar (no se muestran) física o virtualmente, en una o más redes, como nubes privadas, comunitarias, públicas o híbridas como se describió 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 están destinados a ser solo ilustrativos y que los nodos informáticos 10 y el entorno informático en la nube 50 pueden comunicarse con cualquier tipo de dispositivo computarizado a través de cualquier tipo de red y/o conexión direccionable de red (por ejemplo, usando un navegador web).
Con referencia ahora a la Figura 8, se muestra un conjunto de capas de abstracción funcionales proporcionadas por el entorno informático en la nube 50 (FIG. 7). Debe entenderse de antemano que los componentes, capas y funciones mostrados en la FIG. 8 pretenden ser solo ilustrativos y las realizaciones de la invención no están limitadas a los mismos. Como se muestra, 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 con conjunto de instrucciones reducido) 62; servidores 63; servidores Blade 64; dispositivos de almacenamiento 65; y redes y componentes de redes 66. En algunas realizaciones, los componentes de software incluyen software de servidor de aplicaciones de red 67 y software de base de datos 68.
La capa de virtualización 70 proporciona una capa de abstracción a partir de la cual se pueden proporcionar los siguientes ejemplos de entidades virtuales: servidores virtuales 71; almacenamiento virtual 72; redes virtuales 73, incluidas 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 que se divulgan a continuación. El aprovisionamiento de recursos 81 proporciona la 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. Medición y fijación de precios 82 proporcionan seguimiento de costos a medida que los recursos se utilizan dentro del entorno de computación en la nube, y la facturación o facturación por el consumo de estos recursos. En un ejemplo, estos recursos pueden comprender licencias de software de aplicación. La seguridad proporciona verificación de identidad para consumidores y tareas en la nube, así como protección para datos y otros recursos. El portal de usuarios 83 proporciona acceso al entorno de computación 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 de computación en la nube de tal manera que se cumplen los niveles de servicio requeridos. La planificación y el cumplimiento del Acuerdo de Nivel de Servicio (SLA) 85 proporcionan un arreglo previo y la adquisición de recursos de computación en la nube para los cuales se anticipa un requerimiento futuro de acuerdo con un SLA.
La capa de cargas de trabajo 90 proporciona ejemplos de funcionalidad para la cual se puede utilizar el entorno de computación en la nube. Los 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; enseñanza en aula virtual 93; procesamiento de análisis de datos 94; procesamiento de transacciones 95; y procesamiento de instrucciones 96.
La presente invención puede ser un sistema, un procedimiento y/o un producto de programa informático en cualquier posible nivel de detalle técnico de integración. El producto de programa de ordenador puede incluir un medio de almacenamiento legible por ordenador (o medios) que tiene instrucciones de programa legibles por ordenador sobre el mismo 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 semiconductores o cualquier combinación adecuada de lo anterior. 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 lectura programable borrable. solo memoria (EPROM o memoria Flash), una memoria estática de acceso aleatorio (SRAM), una memoria portátil de solo lectura de disco compacto (CD-ROM), un disco digital versátil (DVD), un dispositivo de memoria, un disquete, un dispositivo mecánico dispositivo codificado tal como tarjetas perforadas o estructuras elevadas en una ranura que tiene instrucciones grabadas al respecto, y cualquier combinación adecuada de lo anterior. Un medio de almacenamiento legible por ordenador, como se usa en la presente memoria, no debe interpretarse como señales transitorias per se, 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 ellos). un cable de fibra óptica), o señales eléctricas transmitidas a través de un cable.
Las instrucciones de programa legibles por ordenador que se divulgan en la presente memoria se pueden descargar 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, cortafuegos, conmutadores, ordenadores de puerta de enlace y/o servidores de borde. Una tarjeta adaptadora de red o interfaz de red en cada dispositivo de computación/procesamiento recibe instrucciones de programa legibles por ordenador de la red y reenvía las instrucciones de programa legibles por ordenador para su almacenamiento en un medio de almacenamiento legible por ordenador dentro del dispositivo de computación/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 máquina, microcódigo, instrucciones de firmware, datos de configuración de estado, datos de configuración para circuitos integrados, o bien código fuente o código objeto escrito en cualquier combinación de uno o más lenguajes de programación, incluido un lenguaje de programación orientado a objetos como Smalltalk, C++ o similares, y lenguajes de programación procesal, como el lenguaje de programación "C" o programación similar idiomas. Las instrucciones del programa legible por ordenador pueden ejecutarse completamente en el ordenador del usuario, en parte en el ordenador del usuario, como un paquete de software independiente, en parte en el ordenador del usuario y en parte en un ordenador remoto o completamente en el ordenador o servidor remoto. En este último caso, el ordenador remoto puede conectarse al ordenador del usuario a través de cualquier tipo de red, que incluye una red de área local (LAN) o una red de área extendida (WAN), o la conexión puede realizarse a un ordenador externo (por ejemplo, a través de Internet mediante el uso de un Proveedor de Servicios de Internet). En algunas realizaciones, los circuitos electrónicos que incluyen, por ejemplo, circuitos lógicos programables, arreglos de compuerta programables en campo (FPGA) o arreglos lógicos programables (PLA) pueden ejecutar las instrucciones de programa legibles por ordenador utilizando información de estado de las instrucciones de programa legibles por ordenador para personalizar la circuitería electrónica, para realizar aspectos de la presente invención.
Los aspectos de la presente invención se describen en la presente memoria con referencia a diagramas 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 bloque, y las combinaciones de bloques en las ilustraciones del diagrama de flujo y/o los diagramas de bloque, se pueden implementar mediante instrucciones de programa legibles por ordenador.
Estas instrucciones de programa legibles por ordenador se pueden proporcionar 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 de la ordenador u otro aparato de procesamiento de datos programable, crear medios para implementar las funciones/actos especificados en el diagrama de flujo y/o bloque o bloques de 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 tenga 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 legible por ordenador también se pueden cargar en un ordenador, otro aparato de procesamiento de datos programable u otro dispositivo para hacer que se realicen una serie de etapas operativos en la ordenador, otro aparato programable u otro dispositivo para producir un proceso implementado por ordenador, como que las instrucciones que se ejecutan en la 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 en las Figuras ilustran la arquitectura, la funcionalidad y la operación de posibles implementaciones de sistemas, métodos y productos de programas de computadora de acuerdo con diversas realizaciones de la presente invención. Con respecto a esto, cada bloque en el diagrama de flujo o en 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 las funciones lógicas especificadas. En algunas implementaciones alternativas, las funciones indicadas en el bloque pueden ocurrir fuera del orden indicado en las figuras. Por ejemplo, dos bloques mostrados en sucesión pueden, de hecho, ejecutarse sustancialmente al mismo tiempo, o los bloques pueden algunas veces ejecutarse en el orden inverso, dependiendo de la funcionalidad involucrada. También se observará 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 de hardware de propósito especial que realizan las funciones o actos especificados o llevar a cabo combinaciones de hardware para fines especiales e instrucciones informáticas.
Además de lo anterior, uno o más aspectos pueden ser proporcionados, ofrecidos, desplegados, gestionados, atendidos, etc. por un proveedor de servicios que ofrece gestión de entornos de clientes. Por ejemplo, el proveedor de servicios puede crear, mantener, dar soporte, etc., 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 un acuerdo de suscripción y/o tarifa, como ejemplos. Adicionalmente, 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 un ejemplo, el despliegue de una aplicación comprende proporcionar una infraestructura informática operable para realizar una o más realizaciones.
Como otro aspecto, se puede desplegar una infraestructura informática que comprenda integrar 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 otro aspecto adicional, se puede proporcionar un proceso para integrar la infraestructura informática que comprende integrar 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 se describieron varias realizaciones anteriormente, estos son solo ejemplos. Por ejemplo, los entornos informáticos de otras arquitecturas se pueden usar 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 ser utilizados. Como ejemplo, se puede usar un sistema de procesamiento de datos adecuado para almacenar y/o ejecutar código de programa que incluye al menos dos procesadores acoplados directa o indirectamente a elementos de memoria a través de un bus del sistema. Los elementos de memoria incluyen, por ejemplo, la memoria local empleada durante la ejecución real del código del programa, el almacenamiento masivo y la memoria caché que proporcionan almacenamiento temporal de al menos parte del código del programa para reducir la cantidad de veces que el código debe recuperarse del almacenamiento masivo durante la ejecución.
Los dispositivos de entrada/salida o de E/S (incluidos, entre otros, teclados, pantallas, dispositivos señaladores, DASD, cintas, CD, DVD, unidades de memoria USB y otros medios de memoria, etc.) se pueden acoplar al sistema ya sea directamente o mediante controladores de E/S intervinientes. Los adaptadores de red también se pueden acoplar al sistema para permitir que el sistema de procesamiento de datos se conecte a otros sistemas de procesamiento de datos o impresoras remotas o dispositivos de almacenamiento a través de redes privadas o públicas intervenidas. Los módems, los módems de cable y las tarjetas Ethernet son solo algunos de los tipos de adaptadores de red disponibles.
La terminología usada en la presente memoria es solo para el propósito de describir las realizaciones particulares y no pretende ser limitante. Como se usa en la presente memoria, las formas singulares "un", "uno(a)" y "el(la)" se pretende que incluyan las formas plurales también, a menos que el contexto claramente indique lo contrario de cualquier otra manera. 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 establecidos, pero no excluyen la presencia o la adición de una o más características, números enteros, etapas, operaciones, elementos, componentes y/o grupos de los mismos.
Las estructuras, materiales, actos y equivalentes correspondientes de todos los elementos de medios o etapas más funciones en las reivindicaciones a continuación, si las hay, pretenden incluir cualquier estructura, material o acto para realizar la función en combinación con otros elementos reivindicados como se afirma específicamente. La descripción de una o más realizaciones se ha presentado con fines ilustrativos y descriptivos, pero no pretende ser exhaustiva o limitada en la forma divulgada. Muchas modificaciones y variaciones serán evidentes para los expertos en la técnica. La realización se eligió y describió para explicar mejor varios 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 (12)

REIVINDICACIONES
1. Un procedimiento implementado por ordenador para facilitar el procesamiento dentro de un entorno informático, comprendiendo el procedimiento:
obtener una instrucción para la ejecución, la instrucción para realizar una operación de multiplicación y desplazamiento; y
ejecutar la instrucción, comprendiendo la ejecución:
multiplicar un primer valor y un segundo valor obtenido por la instrucción para obtener un producto;
desplazar el producto en una dirección especificada por una cantidad seleccionada para proporcionar un resultado, la cantidad seleccionada que está definida por el usuario; y
colocar el resultado en una ubicación seleccionada, el resultado se utilizará en el procesamiento dentro del entorno informático.
2. El procedimiento de la reivindicación 1, en el que el resultado incluye una pluralidad de dígitos del producto seleccionado con base en el desplazamiento por la cantidad seleccionada.
3. El procedimiento de la reivindicación 1, en el que la ejecución comprende, además:
determinar un signo para el resultado; y
incluir el signo en la ubicación seleccionada, el resultado y el signo que proporcionan un valor seleccionado para ser usado en el procesamiento dentro del entorno informático.
4. El procedimiento de la reivindicación 3, en el que la determinación del signo comprende verificar un control proporcionado por la instrucción.
5. El procedimiento de la reivindicación 4, en el que el control se proporciona en un campo de máscara de la instrucción.
6. El procedimiento de la reivindicación 1, en el que la ejecución comprende, además:
obtener el primer valor y el segundo valor de uno o más campos de la instrucción;
comprobar la validez del primer valor y el segundo valor; y
realizar la multiplicación, con base en la comprobación que indica que el primer valor y el segundo valor son válidos.
7. El procedimiento de la reivindicación 1, en el que la dirección especificada es correcta.
8. El procedimiento de la reivindicación 1, en el que la ejecución comprende además obtener la cantidad seleccionada de un campo de la instrucción.
9. El procedimiento de la reivindicación 1, en el que la ubicación seleccionada es un registro, el registro que se especifica mediante el uso de al menos un campo de la instrucción.
10. El procedimiento de la reivindicación 9, en el que el al menos un campo comprende 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 agregará al número de registro.
11. Un sistema informático para facilitar el procesamiento dentro de un entorno informático, comprendiendo el sistema informático:
una memoria; y
un procesador en comunicación con la memoria, en el que el sistema informático está configurado para realizar un procedimiento de acuerdo con cualquier reivindicación anterior.
12. Un producto de programa informático para facilitar el procesamiento dentro de un entorno informático, comprendiendo el producto de programa informático:
un medio de almacenamiento legible por ordenador legible por un circuito de procesamiento y que almacena instrucciones para su ejecución por el circuito de procesamiento para realizar un procedimiento de acuerdo con cualquiera de las reivindicaciones 1 a 10.
ES17772028T 2016-09-30 2017-09-21 Instrucción de multiplicación y desplazamiento de decimales Active ES2811033T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/281,223 US10127015B2 (en) 2016-09-30 2016-09-30 Decimal multiply and shift instruction
PCT/EP2017/073877 WO2018060041A1 (en) 2016-09-30 2017-09-21 Decimal multiply and shift instruction

Publications (1)

Publication Number Publication Date
ES2811033T3 true ES2811033T3 (es) 2021-03-10

Family

ID=59955559

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17772028T Active ES2811033T3 (es) 2016-09-30 2017-09-21 Instrucción de multiplicación y desplazamiento de decimales

Country Status (16)

Country Link
US (2) US10127015B2 (es)
EP (1) EP3519940B1 (es)
JP (1) JP7101930B2 (es)
KR (1) KR102178290B1 (es)
CN (1) CN109791479B (es)
AU (1) AU2017333769B2 (es)
BR (1) BR112019006632B1 (es)
CA (1) CA3036123C (es)
ES (1) ES2811033T3 (es)
IL (1) IL264722B (es)
MX (1) MX2019003610A (es)
PL (1) PL3519940T3 (es)
RU (1) RU2717965C1 (es)
TW (1) TWI653576B (es)
WO (1) WO2018060041A1 (es)
ZA (1) ZA201902290B (es)

Families Citing this family (3)

* 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
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction
US11360769B1 (en) * 2021-02-26 2022-06-14 International Business Machines Corporation Decimal scale and convert and split to hexadecimal floating point instruction

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4484300A (en) * 1980-12-24 1984-11-20 Honeywell Information Systems Inc. Data processor having units carry and tens carry apparatus supporting a decimal multiply operation
US4390961A (en) 1980-12-24 1983-06-28 Honeywell Information Systems Inc. Data processor performing a decimal multiply operation using a read only memory
JPH0383127A (ja) 1989-08-28 1991-04-09 Nec Corp 10進除算器
US5426600A (en) 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US6173305B1 (en) * 1993-11-30 2001-01-09 Texas Instruments Incorporated Division by iteration employing subtraction and conditional source selection of a prior difference or a left shifted remainder
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
RU2113010C1 (ru) * 1995-11-16 1998-06-10 Акциоерное общество "Научно-исследовательский институт вычислительных комплексов им.М.А.Карцева" Многопроцессорная векторная эвм
US5969326A (en) 1998-01-14 1999-10-19 Intermec Ip Corp. Method and apparatus of autodiscriminating in symbol reader employing prioritized and updated table of symbologies
JP2001034472A (ja) 1999-07-16 2001-02-09 Mitsubishi Electric Corp データ処理装置および除算、剰余算アルゴリズム
EP1102161A2 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6711602B1 (en) * 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US7330864B2 (en) * 2001-03-01 2008-02-12 Microsoft Corporation System and method for using native floating point microprocessor instructions to manipulate 16-bit floating point data representations
US6813627B2 (en) * 2001-07-31 2004-11-02 Hewlett-Packard Development Company, L.P. Method and apparatus for performing integer multiply operations using primitive multi-media operations that operate on smaller operands
JP3886870B2 (ja) 2002-09-06 2007-02-28 株式会社ルネサステクノロジ データ処理装置
US7167889B2 (en) 2003-05-12 2007-01-23 International Business Machines Corporation Decimal multiplication for superscaler processors
US7689641B2 (en) 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US7383420B2 (en) * 2005-03-24 2008-06-03 Qualcomm Incorporated Processor and method of indirect register read and write operations
US7584237B1 (en) 2005-10-11 2009-09-01 Advanced Micro Devices, Inc. Fast hardware divider
US7912890B2 (en) 2006-05-11 2011-03-22 Intel Corporation Method and apparatus for decimal number multiplication using hardware for binary number operations
US8051117B2 (en) 2007-04-26 2011-11-01 International Business Machines Corporation Shift significand of decimal floating point data
US20090055005A1 (en) * 2007-08-23 2009-02-26 Horizon Semiconductors Ltd. Audio Processor
US20100191788A1 (en) * 2009-01-27 2010-07-29 Laurent Le-Faucheur Multiplier with Shifter
US8725786B2 (en) 2009-04-29 2014-05-13 University Of Massachusetts Approximate SRT division method
US20110314263A1 (en) * 2010-06-22 2011-12-22 International Business Machines Corporation Instructions for performing an operation on two operands and subsequently storing an original value of operand
US9335993B2 (en) * 2011-12-29 2016-05-10 International Business Machines Corporation Convert from zoned format to decimal floating point format
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
JP5966764B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 乗算装置及び乗算方法
JP5966763B2 (ja) 2012-08-22 2016-08-10 富士通株式会社 除算装置及び除算方法
CN103078732B (zh) * 2013-01-08 2015-10-21 武汉大学 一种素域椭圆曲线加密的点乘加速电路
US9524143B2 (en) 2014-06-26 2016-12-20 Arm Limited Apparatus and method for efficient division performance
CN106126189B (zh) 2014-07-02 2019-02-15 上海兆芯集成电路有限公司 微处理器中的方法
US10127015B2 (en) * 2016-09-30 2018-11-13 International Business Machines Corporation Decimal multiply and shift instruction

Also Published As

Publication number Publication date
TWI653576B (zh) 2019-03-11
JP2019535075A (ja) 2019-12-05
AU2017333769B2 (en) 2019-08-15
TW201816593A (zh) 2018-05-01
AU2017333769A1 (en) 2019-04-04
US20180095723A1 (en) 2018-04-05
KR20190075055A (ko) 2019-06-28
CN109791479B (zh) 2023-04-28
CA3036123C (en) 2025-05-27
EP3519940A1 (en) 2019-08-07
EP3519940B1 (en) 2020-07-08
MX2019003610A (es) 2019-06-17
US10127015B2 (en) 2018-11-13
RU2717965C1 (ru) 2020-03-27
IL264722B (en) 2021-02-28
US10331408B2 (en) 2019-06-25
CN109791479A (zh) 2019-05-21
BR112019006632B1 (pt) 2022-06-07
WO2018060041A1 (en) 2018-04-05
ZA201902290B (en) 2019-11-27
JP7101930B2 (ja) 2022-07-19
BR112019006632A2 (pt) 2019-07-02
US20180095721A1 (en) 2018-04-05
CA3036123A1 (en) 2018-04-05
KR102178290B1 (ko) 2020-11-12
PL3519940T3 (pl) 2020-11-02

Similar Documents

Publication Publication Date Title
ES3021260T3 (en) Decimal scale and convert and split to hexadecimal floating point instruction
KR102866276B1 (ko) 벡터 팩 및 언팩 명령들
ES2965065T3 (es) Instrucción decimal para realizar una operación de signos
ES3003788T3 (en) Vector convert hexadecimal floating point to scaled decimal instruction
ES2811033T3 (es) Instrucción de multiplicación y desplazamiento de decimales
EP3519939B1 (en) Decimal shift and divide instruction
US10990390B2 (en) Decimal load immediate instruction
AU2022231845B2 (en) Hexadecimal floating point multiply and add instruction
CA3204622C (en) Vector pack and unpack instructions
CA3036110C (en) Decimal load immediate instruction
BR112019006612B1 (pt) Sistema de computador e método para facilitar o processamento em um ambiente computacional
HK40003950B (zh) 用於促进计算环境内的处理的方法和计算机系统