MXPA03011899A - Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica. - Google Patents

Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica.

Info

Publication number
MXPA03011899A
MXPA03011899A MXPA03011899A MXPA03011899A MXPA03011899A MX PA03011899 A MXPA03011899 A MX PA03011899A MX PA03011899 A MXPA03011899 A MX PA03011899A MX PA03011899 A MXPA03011899 A MX PA03011899A MX PA03011899 A MXPA03011899 A MX PA03011899A
Authority
MX
Mexico
Prior art keywords
operand
sign
instruction
data
value
Prior art date
Application number
MXPA03011899A
Other languages
English (en)
Inventor
W Macy William Jr
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of MXPA03011899A publication Critical patent/MXPA03011899A/es

Links

Classifications

    • 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/52Multiplying; Dividing
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

Un metodo, un aparato y medios de programa para efectuar una operacion de signo y multiplicacion. En una modalidad, el aparato incluye recursos de ejecucion para ejecutar una primera ejecucion. En respuesta a la primera instruccion, los recursos de ejecucion almacenan en un lugar de almacenamiento un valor resultante igual a un primer operando de origen multiplicado por un valor de signos de un segundo operando de origen. En algunas modalidades, el primer operando de origen puede ser sobreescrito por el resultado.

Description

UN METODO, APARATO, E INSTRUCCIONES PARA EFECTUAR UNA OPERACION DE SIGNO QUE MULTIPLICA CAMPO DE LA INVENCION La presente descripción pertenece al campo de los aparatos de procesamiento y programas y sistemas de programación y secuencias de programas y sistemas de programación asociadas que efectúan operaciones matemáticas.
DESCRIPCION DE LA TECNICA RELACIONADA Los sistemas de computadora se han vuelto cada vez más penetrantes en nuestra sociedad. Las capacidades de procesamiento de las computadoras han incrementando la eficiencia y productividad de los trabajadores en un amplio espectro de profesiones. A medida que los costos de compra y posesión de una computadora continúan cayendo, más y más consumidores han sido capaces de tomar ventaja de máquinas más nuevas y más rápidas. Además, muchas personas disfrutan del uso de computadoras portátiles de cuaderno debido a la libertad. Las computadoras móviles permiten a los usuarios transportar fácilmente sus datos y trabajo con ellos cuando abandonan la oficina o viajan. Este escenario es muy familiar con el personal de comercialización, ejecutivos corporativos y aún los estudiantes.
A medida que avanza la tecnología de los procesadores, también están siendo generados códigos de programas y sistemas de programación más novedosos para ser ejecutados en máquinas con esos procesadores. Los usuarios generalmente esperan y demandan mayor desempeño de sus computadoras sin importar el tipo de programas y sistemas de programación que estén siendo usados . Uno de esos problemas puede surgir de los tipos de instrucciones y operaciones que son efectuadas realmente dentro del procesador. Ciertos tipos de operaciones requieren más tiempo para efectuarse sobre la base de la complejidad de las operaciones y/o el tipo de circuitos necesarios. Esto proporciona la oportunidad de optimizar la forma en que son ejecutadas ciertas operaciones complejas dentro del procesador. Las aplicaciones de medios han dirigido el desarrollo de los microprocesadores durante más de una década. En efecto, la mayoría de las actualizaciones de computo en años recientes han sido dirigidas por aplicaciones a medios. Esas actualizaciones han ocurrido predominantemente dentro de segmentos de consumidores, aunque también han sido observados avances significativos en segmentos empresariales para propósitos de entretenimiento, educación avanzada y comunicación. No obstante, las aplicaciones a medios futuras requerirán requerimientos computacionales aún mayores . Como resultado, la experiencia computacional personal del mañana será aún más rica en efectos audiovisuales, así como más fácil de usar, y de manera más importante, la computación se fusionará con las comunicaciones . En consecuencia, la presentación de imágenes, asi como la reproducción de datos de audio y video, los cuales son referidos colectivamente como contenido, se han vuelto aplicaciones cada vez más populares en los dispositivos de computo actuales. Las operaciones de filtración y convolución son algunas de las operaciones más comunes efectuada sobre datos de contenido, como datos de imágenes, audio y video. Esas operaciones son computacionalmente intensivas, pero ofrecen un alto nivel de paralelismo de datos que puede ser explotado a través de una implementación eficiente usando varios dispositivos de almacenamiento de datos, como por ejemplo, registros de datos múltiples de una sola instrucción (DMSI, por sus siglas en inglés) . También un número de arquitecturas actuales requieren cambios de tipos de datos innecesarios que maximicen el resultado de las instrucciones e incrementen significativamente el número de ciclos de reloj requeridos para ordenar datos para operaciones aritméticas. Varias instrucciones relacionadas con signos de la técnica anterior, como una instrucción de signo, como determinar el signo de un número binario. Sin embargo, las capacidades de esas instrucciones de signo de la técnica anterior están limitadas en utilidad, especialmente en aplicaciones donde el procesamiento adicional del resultado del signo es necesario debido a que esos resultados son resultados intermedios de algoritmos más grandes . Requerir instrucciones adicionales para lograr los resultados deseados, incurre en costos adicionales en términos de los recursos de procesamiento e intervalos de ejecución en cascada o simultánea.
BREVE DESCRIPCION DE LAS FIGURAS La presente invención es ilustrada a manera de ejemplo y sin limitación en las figuras de los dibujos acompañantes : la Figura 1A es un diagrama de bloques de un sistema de computadora formado con un procesador que incluye unidades de ejecución para ejecutar úna instrucción para una operación de signo que multiplica de acuerdo a una modalidad de la presente invención; la Figura IB es un diagrama de bloques de otro sistema de computadora ejemplar de acuerdo con una modalidad alternativa de la presente invención; la Figura 1C es un diagrama de bloques de otro sistema de computadora ejemplar de acuerdo con otra modalidad alternativa de la presente invención; la Figura 2 es un diagrama de bloques de la microarquitectura para un procesador de una modalidad que incluyen circuitos -lógicos para efectuar una operación de signo que multiplica de acuerdo con la presente invención; la Figura 3A ilustra varias representación del tipo de datos empaquetados en registros de medios múltiples de acuerdo a una modalidad de la presente invención,- la' Figura 3B ilustra tipos de datos empaquetados de acuerdo con una modalidad alternativa; la Figura 3C ilustra varias representación del tipo de datos empaquetados con signo y sin signo en registros de medios múltiples de acuerdo a una modalidad de la presente invención,- la Figura 3D ilustra una modalidad de un formato de codificación de operación (codeop) ; la Figura 3E ilustra un formato de codificación de operación (codeop) alternativo; la Figura 3F ilustra otro formato de codificación de operación alternativo; la Figura 4 es un diagrama de bloques de una modalidad de la lógica para efectuar una operación de signo sobre operandos de datos empaquetados de acuerdo con la presente invención; la Figura 5 ilustra la operación de una operación de signos que multiplica sobre elementos de datos de acuerdo con una modalidad de la presente invención; la Figura 6A es un diagrama de bloques de una modalidad de un circuito para efectuar una operación de signo de acuerdo con la presente invención; la Figura 6B es un diagrama de bloques de otra modalidad de un circuito para efectuar una operación de signo de acuerdo con la presente invención; la Figura 7 ilustra la operación de una instrucción de signo empaquetados sobre una pluralidad de elementos de datos de acuerdo con una modalidad de la presente invención; la Figura 8A es un diagrama de flujo que ilustra una modalidad del método para efectuar una operación de signo ; la Figura 8B es un diagrama de flujo que ilustra otra modalidad de un método para efectuar una operación de signo ; la Figura 9 es un diagrama de bloques de una modalidad de la lógica para efectuar una operación de valor absoluto sobre un operando de datos empaquetados; la Figura 10 ilustra la operación de un algoritmo de desbloqueo usando instrucciones de DMSI de acuerdo con la presente invención; y la Figura 11 es un diagrama de flujo que ilustra una modalidad de un método para efectuar un algoritmo de desbloqueo usando instrucciones de DMSI .
DESCRIPCION DETALLADA La siguiente descripción describe modalidades de un método, un aparato, e instrucciones para efectuar una operación de signo y multiplicación. En la siguiente descripción, se expone en numerosos detalles específicos como los tipos de procesadores, condiciones microarquitectónicas , eventos, mecanismos habilitadores y similares para proporcionar una mejor comprensión de la presente invención. Será apreciado, sin embargo, por un experto en la técnica que la invención puede ser practicada sin esos detalles específicos. Adicionalmente, algunas estructura, circuitos y similares bien conocidas no han sido mostradas con detalle para evitar oscurecer de manera innecesaria la presente invención . Aunque las siguientes modalidades son descritas con referencia a un procesador, otras modalidades son aplicables a otros tipos de circuitos integrados o dispositivos lógicos. Las mismas técnicas y enseñanzas de la presente invención pueden ser aplicadas fácilmente a otros tipos de circuidos o dispositivos semiconductores que puedan beneficiarse del -rendimiento de la ejecución en cascada o simultánea superior y el funcionamiento mejorado. Las enseñanzas de la presente invención son aplicables a cualquier procesador o máquina que efectúe multiplicaciones de datos. Sin embargo, la presente invención no se limita a procesadores o máquinas que efectúan operaciones de datos de 256 bits, 128 bits, 64 bits, .32 bits o 16 bits y pueden aplicarse a cualquier procesador y máquina en los cuales sea necesaria la manipulación de datos empaquetados . En la siguiente descripción, para propósitos de explicación, se exponen numerosos detalles específicos para proporcionar una mejor comprensión de la presente invención. Un experto en la técnica, sin embargo, apreciará que esos detalles específicos no son necesariamente para practicar la invención. En otros casos, no han sido expuestas las estructuras y circuitos eléctricos bien conocidas con detalles particulares para no obscurecer innecesariamente la presente invención. Adem s, la siguiente descripción proporciona ejemplos, y los dibujos acompañantes muestran varios ejemplos para propósitos de ilustración. Sin embargo, esos ejemplos no deberán constituirse en un sentido limitante puesto que únicamente pretenden proporcionar ejemplos de la presente invención más que proporcionar una lista exhaustiva de todas las posibles implementaciones de la presente invención. Aunque los ejemplos siguientes describen la manipulación y distribución de instrucciones en el contexto de unidades de ejecución y circuitos lógicos, otras modalidades de la presente invención pueden ser logradas por medio de programas y sistemas de programación. · En una modalidad, los métodos de la presente invención son incorporados en instrucciones ejecutables en una máquina. Las instrucciones pueden ser usadas para hacer que un procesador para propósitos generales o propósitos especiales que sea programado con las instrucciones efectúe los pasos de la presente invención. La presente invención puede ser proporcionada como un producto de programa de computadora o programas y sistemas de programación que pueden incluir un medio legible en máquina o computadora que tenga instrucciones almacenadas en el, que puedan ser usadas para programar una computadora (u otros dispositivos electrónicos) para efectuar un proceso de acuerdo a la presente invención. De manera alternativa, los pasos de la presente invención pueden ser efectuados por componentes físicos de computación específicos que contengan lógicas alámbricas para, efectuar los pasos, o por cualquier combinación de componentes de computadora programada y componentes físicos de computación personalizados. Los programas y sistemas de programación pueden ser almacenados dentro de una memoria en el sistema. De manera similar, el código. uede ser distribuido vía un red o por medio de otro medio legible en computadora. De este modo, un medio legible en máquina puede incluir cualquier mecanismo para almacenar o transmitir información en una forma legible por una máquina (por ejemplo, una computadora) , pero no se limita a discos flexibles, discos ópticos, discos compactos, discos de Memoria de Solo Lectura (CD-ROM), y discos magneto ópticos, Memorias de Solo Lectura (ROM) , Memorias de Acceso Aleatorio (RAM) , Memoria de Solo Lectura Programable, Borrable (EPROM) , Memoria de Solo Lectura Programable, Borrable Eléctricamente (EEPROM) , tarjetas magnéticas u ópticas, memorias instantáneas, una transmisión sobre la Internet, formas eléctricas, ópticas, acústicas o de otro tipo de señales propagadas (por ejemplo, ondas portadoras, señales infrarrojas, señales digitales, etc) o similares. En consecuencia, el medio legible en computadora incluye cualquier tipo de medios/medio legible por una máquina adecuado para almacenare o transmitir instrucciones o información electrónica en una forma legible por una máquina (por ejemplo, una computadora) . Además, la presente invención también puede ser descargada como un producto de programa de computadora. Por lo tanto, el programa puede ser transferido de una computadora remota (por ejemplo, un servidor) a una computadora solicitante (por ejemplo, un cliente) . La transferencia del programa puede ser por medi'O de formas eléctricas, ópticas, acústicas o de otro tipo de señales de datos incorporadas en una onda portadora u otro medio de propagación vía un enlace de comunicación (por ejemplo, un módem, conexión de red o similar) . - Un . diseño puede pasar a través de varias etapas, desde la creación a la simulación hasta la fabricación. Los datos que representan un diseño pueden representar el diseño en un número de formas. Primero, como es útil en las simulaciones, los componentes físicos de computación pueden ser representados usando un lenguaje de descripción de componentes físicos de computación u otro lenguaje de descripción funcional. Adicionalmente, puede ser producido un modelo del nivel de circuito con compuertas lógicas y/o transistores en algunas etapas de proceso de diseño. Además, la mayoría de los diseños, en algunas etapas alcanzan un nivel de datos que representa la ubicación física de los diferentes dispositivos en el modelo de componentes físicos de computación. En el caso donde son usadas técnicas de fabricación de semiconductores convencionales, los datos que representan al modelo de componentes físicos de computación pueden ser los datos que especifican la presencia o ausencia de varias características en diferentes capas de máscara para las máscaras usada para producir el circuito integrado. En cualquier representación del diseño, los datos pueden ser almacenados en cualquier forma de medio legible por una máquina. Una onda óptica o eléctrica modulada o generada de otro modo para transmitir esa información, una memoria, o un almacén magnético u óptico como un disco puede ser el medio legible por una máquina. Cualquiera de esos medios puede "contener" o "indicar" el diseño o información de los programas y sistemas de programación. Cuando es transmitida una onda portadora eléctrica que indica o contiene el código o diseño, hasta el grado en el que sea efectuada la reproducción, almacenamiento temporal, o retransmisión de la señal eléctrica, se produce una nueva copia. De este modo, un proveedor de comunicación o proveedor de red puede hacer copias de un artículo (una onda portadora) incluyendo las técnicas de la presente invención. En los procesadores modernos, se usa un número de unidades de ejecución diferentes para procesar y ejecutar una variedad de códigos e instrucciones. No todas las instrucciones son creadas iguales puesto que algunas son más rápidas de completar, mientras que otras pueden tomar un enorme numero de ciclos de reloj . A más rápido el resultado de las instrucciones, mejor el desempeño total del procesador. De este modo, sería ventajoso hacer que se ejecuten muchas instrucciones tan rápido como sea posible. Sin embargo, existen ciertas instrucciones que tienen mayor complejidad y requieren más en términos del tiempo de ejecución y recursos del procesador. Por ejemplo, existen instrucciones de punto flotante, operaciones de cargar/almacenar, mover datos, etc. A medida que son usadas más y más computadoras en la Internet y aplicaciones de medios múltiples, se ha introducido soporte de procesadores adicional con el tiempo.
Por ejemplo, las instrucciones de entero/punto flotante de datos múltiples de una sola instrucción (DMSI) y Extensiones de DMSI Corrientes (SSE) son instrucciones que reducen el número total de instrucciones requeridas parta ejecutar una tarea de programa particular, lo cual a su vez puede reducir el consumo de energía. Esas instrucciones pueden acelerar, el funcionamiento de los programas y sistemas de programación operando sobre elementos de datos múltiples en paralelo. Como resultado, pueden ser logradas ganancias de desempeño o funcionamiento en una amplia gama de aplicaciones incluyendo el procesamiento de video, frecuencia vocal, e imágenes/fotos. La implementación de las instrucciones de DMSI en microprocesadores y tipos similares de circuitos lógicos usualmente implica un número de problemas. Además, la complejidad de las operaciones de DMSI con frecuencia conduce a una necesidad de circuitos adicionales para procesar y manipular correctamente los datos . Actualmente una instrucción del signo de DMSI que multiplica no está disponible. Ni existe una instrucción de DMSI para operaciones de valor absoluto. Con la presencia de una operación de signo que multiplica, es necesario un gran número de instrucciones y registro de datos para lograr los mismos resultados en aplicaciones como la compresión, procesamiento y manipulación de' audio/video. De este modo, las instrucciones de signo de acuerdo con la presente invención pueden reducir la sobrecarga de código y requerimientos de recursos. Las modalidades de la presente invención proporcionan una forma de implementar una operación de signo como un algoritmo que hace uso de componentes físicos de computación relacionados con DMSI . Algunas modalidades también proporcionan formas . de implementar una operación de valor absoluto. Actualmente, es un tanto difícil y tedioso operar sobre datos en un registro de DMSI. Algunos algoritmos requieren mas instrucciones para arreglar datos en operaciones aritméticas que el número real de instrucciones para ejecutar aquellas operaciones. Implementando las modalidades una operación de signo que multiplique de acuerdo con la presente invención, el número de instrucciones necesarias para lograr el procesamiento de signo puede ser reducido drásticamente . Las modalidades de la presente invención implican una instrucción para implementar una variación de una operación de signó. Una operación de signo determinan si un número dado es positivo, negativo o cero. Durante una operación de signo, la función evalúa un número como: para x > 0, signo (x) = 1; para x = 0, signo (x) = 0; y para x < 0, signo (x) = -1. Sin embargo, una aplicación de multimedios, la multiplicación de un valor de datos por el signo de otro valor es con frecuencia necesaria durante varios algoritmos . Una operación de signo que multiplica puede evitar tener que hacer muchas operaciones separadas. Las modalidades de la operación de signo de la presente proporcionan más funcionalidad que el signo y también incluyen la multiplicación . Una instrucción de signo de acuerdo a la presente invención calcula la operación: DEST = ORG1 x SIGNO (ORG2). Si ORG2 es positivo, el signo de ORG2 proporcionará un valor de w+l" . Si ORG2 es igual a cero, el resultado del signo de ORG2 es cero. Si 0RG2 es negativo, entonces el signo de ORG2 es 1" . La operación de signo que multiplica como en la modalidad de la presente invención toma el signo de un segundo elemento de datos y multiplica el resultado del signo con el valor de un primer elemento de datos para obtener un producto resultante. La operación de signo de una modalidad como se aplica a un elemento de datos individual puede ser representada como: si 0RIGEN2 < 0, entonces DEST = ORIGENI x además si 0RIGEN2 = 0, entonces DEST = 0; además si ORIGEN2 > 0, entonces DEST = ORIGEMI x Para un operando de datos empaquetados, este flujo puede ser aplicado a cada posición del elemento de datos . Además, una modalidad de una operación de signo que multiplica también puede imitar la operación de signo usando el valor de "1" como el primer elemento de origen y el valor de interés con el segundo elemento de origen una operación de signo. Debido a que la operación de signo de esta modalidad produce una multiplicación del primer elemento de origen con uno de "+1" , "0" ó sobre la base del valor del signo del segundo elemento, el signo puede ser replicado aquí. De manera similar, las modalidades la operación de signo de esta invención también pueden efectuar operaciones de valor absoluto fijando el primer elemento de origen a la operación de signo igual al segundo elemento de origen. Esto puede lograrse debido a que el valor de origen será esencialmente multiplicado por su propio signo, produciendo de este modo el valor resultante de "0" o positivo. La Figura 1A es un diagrama de bloque de un sistema de computadora ejemplar formado con un procesador que incluye unidades de ejecución para efectuar una instrucción para una operación de signo que multiplica de acuerdo con una modalidad de la presente invención. El sistema 100 incluye un componente, como un procesador 102 para emplear unidades de ejecución que incluyen lógicas para efectuar algoritmos para datos de proceso, de acuerdo con la presente invención, como en la modalidad descrita aquí. El sistema 100 es representativo de sistemas de procesamiento basados en los microprocesadores PENTIUM® III, PENTIUM® 4, XeonMR, Itanium®, XScaleMR, y/o StrongARMMR disponibles de Intel Corporation de Santa Clara, California, aunque también pueden ser usados otros sistemas (incluyendo PC que tengan otros microprocesadores, estaciones de trabajo de diseño, cajas colocadas en la parte superior y similares) . En una modalidad, el sistema muestra 100 puede ejecutar una versión del sistema operativo WIND0WSMR disponible de Microsoft Corporation de Redmond, Washington, aunque también pueden ser usados otros sistemas operativos (UNIX y Linux, por ejemplo), programas y sistemas de programación incluidos y/o interfaces gráficas de usuario. De este modo, la presente invención no se limita a ninguna combinación específica de circuitos de componentes físicos de computación y programas y sistemas de programación . La presente mejora no se limita a sistemas de computadora. Pueden ser usadas modalidades alternativas de la presente invención en otros dispositivos como dispositivos manuales y aplicaciones incluidas. Algunos ejemplos de dispositivos manuales incluyen teléfonos celulares, dispositivos de protocolo de Internet, cámaras digitales, asistentes digitales personales (PDA), y PC manuales. Las aplicaciones incluidas pueden incluir el microcontrolador, un procesador de señales digitales (DSP) , un sistema en un microcircuito integrado, computadoras de red (NetPC) , cajas colocadas en la parte superior por descodificadores , centros de conexión de red, conmutadores de red de área amplia (WA ) , o cualquier otro sistema que efectúe operaciones de signo y/o valor absoluto sobre operandos . Además, han sido implementadas algunas arquitecturas para permitir que las instrucciones operen sobre varios datos simultáneamente para mejorar la eficiencia de aplicaciones a multimedios. A medida que se incrementa el tipo y volumen de datos, las computadoras y sus procesadores tienen que ser mejorados para manipular datos en métodos más eficientes . La Figura 1A es un diagrama, de bloques de un sistema de computadora 100 formado con un procesador 102 que incluye una o más unidades de ejecución 108 para efectuar un algoritmo para extraer el signo de un elemento de datos de un operando y multiplicar ese signo con otro elemento de datos de acuerdo con la presente invención. La presente modalidad es descrita en el contexto de una computadora de escritorio de un solo procesador o sistema servidor, pero pueden ser incluidas modalidades alternativas en un sistema multiprocesador . El sistema 100 es un ejemplo de una arquitectura del centro de conexión. El sistema de computadora 100 incluye un procesador 102 para procesar señales de datos . El procesador 102 puede ser un microprocesador de computadora de conjuntos de instrucciones complejas (CISC) , un microprocesador de computo de conjunto de instrucciones reducidas (RISC) , un microprocesador de palabras de instrucciones muy largas (VLIW) , un procesador que implementa una combinación de conjuntos de instrucciones, o cualquier otro dispositivo procesador, como un procesador de señales digitales, por ejemplo. El procesador 102 está acoplado a un canal de procesador 110 que puede transmitir señales de datos entre el procesador 102 y otros componentes en el sistema 100. Los elementos del sistema 100 efectúan sus funciones convencionales que son bien conocidas por aquellos familiarizados con la técnica. En una modalidad, el procesador 102 incluye una memoria intermedia de alta velocidad interna del Nivel 1 (Ll) 104. Dependido de la arquitectura, el procesador 102 puede tener una sola memoria intermedia de alta velocidad interna o niveles múltiples de memoria intermedia de alta velocidad interna. De manera alternativa, en otra modalidad, la memoria intermedia de alta velocidad puede residir externa al procesador 102. Otras modalidades también pueden incluir una combinación de amabas memorias intermedias de alta velocidad interna y externa dependiendo de la implementación y necesidades particulares. El archivo de registro 106 puede almacenar diferentes tipos de datos en diferentes registros incluyendo registros de números enteros, registros de punto flotante, registros de estado, y registros de indicadores de instrucciones . La unidad de ejecución 108, que incluye la lógica para efectuar operaciones de. números enteros y punto flotante, también reside en el procesador 102. El procesado 102 también incluye un ROM de microcodigo (µ???) que almacena el microcodigo para ciertas macroinstrucciones . Para esta modalidad, la unidad de ejecución 108 incluye la lógica para manejar un conjunto de instrucciones empaquetadas 109. En una modalidad, el conjunto de instrucciones empaquetadas 109 incluye una instrucción de signo empaquetada para modificar el valor del signo de los datos . Incluyendo el conjunto de instrucciones empaquetadas 109 en el conjunto de instrucciones de un procesador para propósitos generales 102, junto con los circuitos asociados para ejecutar las instrucciones, las operaciones usadas por muchas aplicaciones multimedios pueden ser efectuadas usando datos empaquetados en un procesador para propósitos generales 102. De este modo, muchas aplicaciones multimedios pueden ser aceleradas y ejecutadas más eficientemente usando todo el ancho de un canal de datos del procesador para efectuar operaciones sobre datos empaquetados. Esto puede eliminar la necesidad de transferir unidades de datos más pequeñas a través del canal de datos del procesador para efectuar una o más operaciones de elementos de datos a la vez. También pueden ser usadas modalidades alternativas de una unidad de ejecución 108 en microcontroladores , procesadores incluidos, dispositivos gráficos, DSP, y otros tipos de circuito lógicos. El sistema 100 incluye una memoria 120. La memoria 120 puede ser un dispositivo de memoria de acceso aleatoria dinámica (DRAM) , un dispositivo de memoria de acceso aleatorio estática (SRAM) , un dispositivo de memoria instantánea, u otro dispositivo de memoria. La memoria 120 puede almacenar instrucciones y/o datos representados por señales de datos que pueden ser ejecutadas por el procesador 102.
El microcircuito integrado lógico del sistema 116 está acoplado al canal del procesador 110 y la memoria 120. El microcircuito integrado lógico del sistema 116 en la modalidad ilustrada es un centro de conexión controlador de la memoria (MCH) . El procesador 102 puede comunicarse con el MCH 116 vía un canal de procesador 110. El MCH 116 proporciona una trayectoria de memoria de banda ancha superior 118 a la memoria 120 para dar instrucciones y almacenar datos y para almacenar ordenes gráficas, datos y texturas. El MCH 116 sirve para dirigir señales de datos entre el procesador 102, la memoria 120 y otros componentes en el sistema 100 y para formar un puente con las señales de datos entre el canal del procesador 110, la memoria 120 y el sistema I/O 122. En algunas modalidades, el microcircuito integrado lógico del sistema 116 puede proporcionar un puerto de gráficos para acoplarse a un controlador de gráficos 112. El MCH 116 está acoplado a la memoria 120 a través de una interconexión de memoria 118. La tarjeta de gráficos 112 está acoplada al MCH 116 a través de una interconexión de puerto de gráficos acelerado (AGP) 114. El sistema 100 usa un canal de interconexión del centro de conexiones apropiado 122 para acoplar el MCH 116 al centro de conexión del controlador de i/O (ICH) 130. El ICH 130 proporciona conexiones directas a algunos dispositivos de I/O vía un canal de I/O local. El canal de I/O local es un canal de I/O de alta velocidad para conectar dispositivos periféricos a la memoria 120, el conjunto de microcircuitos integrados, y el procesador 102. Algunos ejemplos son el controlador de audio, el centro de conexión de instrucciones fijas (BIOS instantánea) 128, el transceptor inalámbrico 126, el almacén de datados 124, el controlador de I/O legal que contiene interconexiones de entrada y teclado, un puerto de expansión en serie como el Canal en Serie Universal (USB) , y un controlador de red 134. El dispositivo para almacenar datos 124 puede comprender una unidad de disco duro, una unidad de disco flexible, un dispositivo de CD-ROM, un dispositivo de memoria instantánea, u otro dispositivo de almacenamiento en masa. Para otra modalidad del sistema, puede ser usada una unidad de ejecución para ejecutar un algoritmo con una instrucción de signo con un sistema en un microcircuito integrado. En una modalidad de un sistema en un microcircuito integrado comprende un procesador y una memoria. La memoria para ese sistema es una memoria instantánea. La memoria instantánea puede ubicarse en la misma matriz que el procesador y otros componentes del sistema. Adicionalmente, otros bloques lógicos como un controlador de memoria o controlador de gráficos también pueden ubicarse en un sistema en un microcircuito integrado. La Figura IB ilustra una modalidad alternativa de un sistema de procesamiento de datos 140, el cual implementa los principios de la presente invención. Una modalidad del sistema de procesamiento de datos 140 es un procesador de aplicaciones de Arquitectura del Cliente de Internet Personal Intel® (PCA Intel®) con la tecnología XScaleME (como se describe en. la red mundial en developer.intel.com) . Será fácilmente apreciable por un experto en la técnica que las modalidades descritas aquí pueden ser usadas con sistemas de procesamiento alternativo sin apartarse del alcance de la invención . El sistema de computadora 140 comprende un núcleo de procesamiento 15S capaz de efectuar operaciones de DMSI, incluyendo un signo y un valor absoluto. Para una modalidad, el núcleo de procesamiento 159 representa una unidad de procesamiento de cualquier tipo de arquitectura, incluyendo, pero sin limitarse a una arquitectura del tipo CISC, RISC, o VLIW. El núcleo de procesamiento 159 también puede ser adecuado para manufacturarse en una o más tecnologías de proceso y siendo representado en medios legibles por una máquina con suficiente detalle, puede ser adecuado para facilitar la manufactura.
El núcleo de procesamiento 159 comprende una unidad de ejecución 142, un conjunto de archivos de registro 145, un descodificador 144. El núcleo de procesamiento 159 también incluye circuitos adicionales (no mostrados) , los cuales no son necesarios para comprender la presente invención. La unidad de ejecución 142 es usada para ejecutar instrucciones recibidas por el núcleo de procesamiento 159. Además de reconocer las instrucciones de procesador típicas, la unidad de ejecución 142 puede reconocer instrucciones en conjunto de instrucciones empaquetadas 143 para efectuar operaciones en formato de datos empaquetados. El conjunto de instrucciones empaquetadas 143 incluye instrucciones para soportar operaciones de signo y valor absoluto, y también puede incluir otras instrucciones empaquetadas . La unidad de ejecución 142 está acoplada al archivo de registro 145 por medio de un canal interno. El archivo de registro 145 representa un área de' almacenamiento en el núcleo de procesamiento 159 para almacenar información, incluyendo datos. Como se mencionó anteriormente, debe comprenderse que el área de almacenamiento usada para almacenar los datos empaquetados no es crítica. La unidad de ejecución 142 está acoplada al descodificador 144. El descodificador 144 es usado para descodificar instrucciones recibidas por el núcleo de procesamiento 159 en señales de control y/o puntos de entrada del tnicrocódigo . En respuesta a esas señales de control y/o puntos de entrada de microcódigo , la unidad de ejecución 142 efectúa las operaciones apropiadas. El núcleo de procesamiento 159 está acoplado al canal 141 para comunicarse con varios otros dispositivos del sistema, los cuales pueden incluir pero no se limitan a, por ejemplo, control de memoria de acceso aleatoria dinámica sincrónica (SDRAM) 146, control de memoria de acceso aleatorio estática (SRAM) 147, interconexión de memoria instantánea ráfaga 148, control de asociación internación de tarjeta de memoria de computadora personal (PCMCIA) /instantánea "compacta (CF) 149, control de dispositivo de representación visual de cristal líquido (LCD) 150, controlador de acceso de memoria directa (DMA) 151, e interconexión maestra de canal alternativa 152. En una modalidad, el sistema de procesamiento de datos 140 también puede comprender un puente de I/O 154 para comunicarse con varios dispositivos de l/O vía un canal de I/O 153. Esos dispositivos de l/O pueden incluir, pero no se limitan a, por ejemplo, receptores/transmisores asincrónicos universales (UART) 155, canal en serie universal (USB) 156, UART inalámbrico Bluetooth 157 e interconexión de expansión de l/O 158. Una modalidad del sistema de procesamiento de datos 140 proporciona comunicaciones móviles, de red y/o inalámbricas y un núcleo de procesamiento 159 capaz de efectuar operaciones de SAIMD, incluyendo una operación de signo o valor absoluto. El núcleo de procesamiento 159 puede ser programado con varios algoritmos de audio, video, formación de imágenes y comunicaciones, incluyendo transformaciones discretas como la transformación de Walsh-Hadamard, una transformación de Fourier rápida (FFT) , una transformación cosinusoidal discreta (DCT) , y sus transformaciones inversas respectivas; técnicas de compresión/descompresión como la transformación del espacio de color, estimación del movimiento de codificación de video o compensación de movimiento de descodificación de video; y funciones de modulación/desmodulación (MODEM) como modulación codificada por impulsos (PCM) . La Figura 1C ilustra modalidades alternativas más de un sistema de procesamiento de datos capaz de efectuar operaciones de signo o valor absoluto de D SI . De acuerdo con una modalidad alternativa, el sistema de procesamiento de datos 160 puede incluir un procesador principal 166, un coprocesador de DMSI 161, una memoria intermedia de alta velocidad 167, y un sistema de entrada/salida 168. El sistema de entrada/salida 168 puede ser acoplado opcionalmente a una interconexión inalámbrica 169. El coprocesador de DMSI 161 es capaz de efectuar operaciones de DMSI incluyendo de signo o valor absoluto. El núcleo de procesamiento 170 puede ser adecuado para manufacturarse en una o más tecnologías de proceso y siendo representado en medios legibles por una máquina con suficiente detalle, puede ser adecuado para facilitar la manufactura de todo o parte del sistema de procesamiento de datos 160, incluyendo el núcleo de procesamiento 170. Para una modalidad, el coprocesador de DMSI 161 comprende una unidad de ejecución 162 y un conjunto de archivos de registro 164. Una modalidad del procesador principal 165 comprende un descodificador 165 para reconocer instrucciones de conjuntos de instrucciones 163 incluyendo instrucciones de signo y valor absoluto de DMSI para su ejecución por la unidad de ejecución 162. Para modalidades alternativas, el coprocesador de DMSI 161 también comprende al menos parte del descodificador 165B para descodificar instrucciones de conjuntos de instrucciones 163. El núcleo de procesamiento 170 también incluye circuitos adicionales (no mostrados) los cuales no son necesarios para comprender la presente invención.
En operación, el procesador principal 166 ejecuta un flujo de instrucciones de procesamiento de datos que controlan las operaciones de procesamiento de datos de un tipo general, incluyendo interacciones con la memoria intermedia de alta velocidad 167, y el sistema de entrada/salida 168. Incluidas dentro del flujo de instrucciones del procesamiento de datos se encuentran instrucciones para el coprocesador de DMSI. El descodificador 165 del procesador principal 166 reconoce esas instrucciones para el coprocesador de DMSI como si fueran de un tipo que debe ser ejecutado por un coprocesador de DMSI unido 161. En consecuencia, el procesador principal 166 expide esas instrucciones para el coprocesador de DMSI (o señales de control que representan instrucciones para el coprocesador de DMSI) sobre el canal del coprocesador 166, de donde ellas son recibidas por cualesquier coprocesadores de DMSI unidos o conectados. En este caso, el coprocesador de DMSI 161 aceptará y ejecutará cualesquier instrucciones para el coprocesador DMSI recibidas que se pretende sean para este. Los datos pueden ser recibidos vía la interconexión inalámbrica 169 para el procesamiento por las instrucciones del coprocesador DMSI. Como un ejemplo, puede ser recibida una comunicación de voz en forma de una señal digital, la cual puede ser procesada por las. instrucciones del coprocesador de DMSI para regenerar muestras de audio digital representativas de las comunicaciones de voz. Como otro ejemplo, puede ser recibido audio y/o video comprimido en forma de un flujo de bits digitales, el cual puede ser procesado por las instrucciones del coprocesador de DMSI para regenerar las muestras de audio digital y/o cuadros de video en movimiento. Para una modalidad el núcleo de procesamiento 170, el procesador principal 166, y un coprocesador de DMSI 161 están integrados en un solo núcleo de procesamiento 170 que comprende una unidad de ejecución 162, un conjunto de archivos de registro 164, y un descodificado 165 para reconocer instrucciones de conjuntos de instrucciones 163 que incluyen instrucciones de signo y valor absoluto de DMSI. La Figura 2 es un diagrama de bloque de la microarquitectura para un procesador 200 de una modalidad que incluye circuitos lógicos para efectuar una operación de signo que multiplica de acuerdo con la presente invención. La operación de signo también puede ser requerirá como una ope'ración de signo empaquetado e instrucción de signo empaquetado como en la discusión anterior. Para una modalidad de la instrucción de signo, la instrucción puede multiplicar un primer elemento de datos con el valor del signo de un segundo elemento de datos . Esa instrucción también puede ser referida como PSIGN o signo empaquetado. En esta modalidad, la instrucción de signo también puede ser implementada para operar elementos de datos que tengan tamaños de bites, palabras, doble palabra, palabra cuádruple, etc. El extremo de entrada en orden 201 es la parte del procesador 200 que busca las macroinstrucciones a ser ejecutadas y las prepara para ser usadas posteriormente en la ejecución en cascada o simultánea del procesador. La sección de entrada 201 de esta modalidad incluye varias unidades . La instrucción de prebúsqueda 226 busca macroinstrucciones de una memoria y las alimenta a un descodificador de instrucciones 228 el cual a su vez las descodifica en primitivo llamados microinstrucciones o microoperaciones (también llamadas micro op o µ??ß) que la máquina sabe como ejecutar. La memoria intermedia de alta velocidad 230 toma las µ??ß descodificadas y las monta en secuencias o retrasos ordenas de programa en la fila de espera de µ??ß 234 para su ejecución. Cuando la memoria intermedia de alta velocidad de trazo 230 encuentra una macroinstrucción compleja, la ROM de microcódigo 232 proporciona las µ??e necesarias para completar la operación. Muchas microinstrucciones son convertidas a una sola micro-ops, y otras necesitan varias micro-ops para completar la operación completa. En esta modalidad, si son necesarias más de cuatro micro-ops para completar una macroinstrucción, el descodificador 228 tiene acceso a la ROM de microcódigo 232 para efectuar la macroinstrucción. Para una modalidad, una instrucción de signo empaquetado puede ser descodificada en un pequeño número de micro ops para el procesamiento en el descodificador de instrucción de 228. En otra modalidad, una instrucción para un algoritmo de signo empaquetado puede ser almacenada dentro de la ROM de microcódigo 232 si es necesario un número de micro-ops para lograr efectuar la operación. La memoria intermedia de alta velocidad de trazo 230 se refiere a un arreglo lógico programable de punto de entrada (PLA) para determinar un indicador de microinstrucciones correcto para leer la secuencia de microcódigo para los algoritmos de signo y valor absoluto en la ROM de microcódigo 232. Después de que la ROM de microcódigo 232 termina el secuenciamiento de micro-ops para la macroinstrucción actual, la sección de entrada 201 de la máquina reasume la búsqueda de micro-ops desde la memoria intermedia de alta velocidad de trazo 230. Algunos DMSI y otros tipos de multimedios de instrucciones son considerados instrucciones complejas. La mayoría de las instrucciones relacionadas con el punto flotante son también instrucciones complejas. Por lo tanto, cuando el descodificador de instrucciones 228 encuentra una macroinstrucción compleja, la ROM de microcódigo 232 es accedida en la ubicación apropiada para recuperar la secuencia del microcódigo para esa macroinstrucció . Las diferentes micro-ops necesarias para efectuar esa macroinstrucción son comunicadas a la máquina de ejecución fuera de servicio 203 para la ejecución de las unidades de ejecución de enteros y punto flotante apropiadas. La máquina de ejecución fuera de servicio 203 es donde las microinstrucciones son preparadas para su ejecución. La lógica de ejecución fuera de servicio tiene un número de memorias intermedias para uniformar y reordenar el flujo de microinstrucciones para optimizar el desempeño cuando hacen a la ejecución en cascada o simultánea y sean programas para su ejecución. La lógica de asignación asigna las memorias intermedias y recursos de la máquina que cada µ?? necesita ejecutar. La lógica para renombrar el registro renombra registros lógicos en entradas en un archivo de registro. El asignador también asigna una entrada a cada µ?? en una de las dos filas de espera de µ??, una para operaciones de memoria y una para operaciones que no implican a la memoria, en la parte frontal de los programas de instrucciones: el programador de memoria, programador rápido 202, programador de punto flotante, lento/general 204, y programador de punto flotante simple 206. Los programadores de µ?? 202, 204, 206, determinan cuando una µ?? es ejecutada fácilmente sobre la base de la disponibilidad de sus fuentes de operando de registro de entrada dependiente y la disponibilidad de los recursos de ejecución que las µ??ß necesitan para completar su operación. El programador rápido 202 de esta modalidad puede programar cada mitad del ciclo de reloj principal mientras que los otros programadores pueden únicamente programar una vez por ciclo de reloj de procesador principal . Los programadores arbitran para despachar cuerpos para programar µ? ? para su ejecución. Los archivos de registro 208, 210, se encuentran entre los programadores 202, 204, 206, y las unidades de ejecución 212, 212, 216, 218, 220, 222, 224 en el bloque de ejecución 211. Existe un archivo de registro separado 208, 210, para operaciones de entero y punto flotante, respectivamente. Cada archivo de registro 208, 210 de esta modalidad también incluye una red de bifurcación que puede desviar o enviar solo resultados completos que no hayan sido escritos en el archivo de registro para nuevas µ??ß dependientes. El archivo de registro de enteros 208 y el archivo de registro de punto flotante 210 también son capaces de comunicar datos entre si. Para una modalidad, el archivo de registro de enteros 208 es dividido en dos archivos de registro separados, un archivo de registro para los 32 bits de datos de orden de inferior y un segundo archivo de registro para los 32 bits de datos de orden superior. El archivo de registro de punto flotante 210 de una modalidad tiene entradas con un ancho de 128 bits debido a que las instrucciones de punto flotante típicamente tienen operandos de 64 a 128 bits de ancho. El bloque de ejecución 211 contiene las unidades de ejecución 212, 214, 216, 218, 220, 222, 224, donde las instrucciones son ejecutadas realmente. Esta sección incluye los archivos de registro 208, 210, que almacenan valores de operando de datos enteros y de punto flotante que necesitan ejecutar las microinstrucciones . El procesador 200 de esta modalidad está comprendido de un número de unidades de ejecución: la unidad de generación de direcciones (AGU) 212, AGU 214, ALU rápida 216, ALU rápida 218, ALU lenta 220, ALU de punto flotante 222, unidad móvil de punto flotante 224. Para esta modalidad, los bloques de ejecución de punto flotante 222, 224, ejecutan operaciones de punto flotante, MMX, DMSI, y SSE . La ALU de punto flotante 222 de esta modalidad incluye un divisor de puntos flotante de 64 bits por 64 bits para ejecutar micro ops de división, raíz cuadrada y resta. Para modalidades de la presente invención, cualquier acto que implique un valor de punto flotante ocurre con los componentes físicos de computación de punto flotante. Por ejemplo, conversiones entre el formato entero y el formato de punto flotante implican un archivo de registro de punto flotante. De manera similar, una operación de división de punto flotante ocurre en un divisor de punto flotante. Por otro lado, los números de punto no flotante y tipo enteros manejados con los recursos de los componentes físicos de computación de números enteros . Las operaciones ALU muy frecuentes, simples pasan a las unidades de ejecución ALU de alta velocidad 216, 218. Las ALU rápidas 216, 218 de esta modalidad pueden ejecutar operaciones rápidas con una latencia efectiva de la mitad de un ciclo de reloj . Para una modalidad, las operaciones de enteros más complejas pasan a la ALU lenta 220 puesto que la ALU lenta 220 incluye componentes físicos de computación de ejecución para números enteros para el tipo de operaciones de latencia grande, como un multiplicador, desviaciones, lógicas de indicación, y procesamiento de bifurcación. Las operaciones de carga/almacenamiento de la memoria son ejecutadas por las AGU 212, 214. Para esta modalidad, las ALU de enteros 216, 218, 220, son descritas en el contexto de la ejecución de operaciones con enteros sobre operandos de datos de 64 bits. En modalidades alternativas, las ALU 216, 218, 220 pueden ser implementadas para soportar una variedad de bits de datos incluyendo 16, 32, 128, 256, etc. Igualmente, las unidades de punto flotante 222 , 224 , pueden ser implementadas para soportar un intervalo de operandos que tienen bits de varios anchos. Para una modalidad, las unidades punto flotante 222 , 224 , pueden operar sobre operandos de datos empaquetados con un ancho de 128 bits en conjunto con instrucciones de DMSI y multimedios . En esta modalidad, los programadores de uops 202 , 204 , 206 , despachan operaciones dependientes antes de que la carga original haya sido terminada de ejecutar.- Puesto que los uops son programados especulativamente y ejecutadas en el procesador 200 , el procesador 200 también incluye la lógica para manejar errores de memoria. Si una carga de datos se pierde en la memoria intermedia de alta velocidad de datos, pueden existir operaciones dependientes al vuelo en la ejecución en cascada o simultánea que hayan dejado al programador con datos incorrectos temporalmente. Un mecanismo de respuesta sigue y ree ecuta las instrucciones que usan datos incorrectos. Unicamente necesitan ser ejecutadas nuevamente las operaciones dependientes y las independientes se dejan completas. Los programadores y el mecanismo de representación en una modalidad de un procesador también están diseñados para almacenar en la memoria intermedia de alta velocidad secuencias de instrucciones para operaciones de signo y valor absoluto. El término "registros" es usado aquí para referirse a lugares de almacenamiento del procesador a bordo que son usadas como parte de macroinstrucciones para identificar operandos . En otras palabras, los registros referidos aquí son aquellos que son visibles desde afuera del procesador (desde la perspectiva de un programador) . Sin embargo, los registros de una modalidad no deberán ser limitados en significado en un tipo particular de circuito. Más bien, un registro de una modalidad solo necesita ser capaz de almacenar y proporcionar datos, y efectuar las funciones descritas aquí. Los registros descritos aquí pueden ser implementados por circuitos dentro de un procesador usando cualquier número de técnicas diferentes, como registros físicos dedicados, registros físicos asignados dinámicamente usando renombramiento del registro, combinaciones de registros físicos dedicados y asignados dinámicamente, etc. En una modalidad, los registros de enteros almacenan datos enteros de treinta y dos bits . Un archivo de registro de una modalidad también contiene ocho registros de DMSI de multimedios para datos empaquetados . Para la siguiente discusión, debe comprenderse que los registros son registros de datos diseñados para contener datos empaquetados, como registros de MMXMR de 64 bits de ancho (también referidos como registros "rara" en algunos casos) en microprocesadores habitados como la tecnología MMX de Intel Corporation de Santa Clara, California. Esos registros MMX, disponibles en formas entera y de punto flotante pueden ser operados con elementos de datos empaquetados que acompañan a las instrucciones de DMSI y SSE. De 'manera similar, pueden ser usados registros XMM de 128 bits de ancho relacionados con la tecnología SSE2 para contener esos operandos de datos empaquetados. En esta modalidad, en el almacenamiento de datos empaquetados y datos enteros, los registros no necesitan diferenciar entre los dos tipos de datos. En los ejemplos de las siguientes figuras, se describe un número de operando de datos. La Figura 3A ilustra varias representaciones de tipos de datos empaquetados en registros de multimedios de acuerdo a una modalidad de la presente invención. La Figura 3A ilustra tipos de datos para un byte empaquetado 310, una palabra empaquetada 320, y una palabra doble (palabra d) empaquetada 330 para operandos de 128 bits de ancho. El formato de bytes empaquetado 310 de este ejemplo de es de 128 bits de longitud y contiene 16 elementos de datos de byte empaquetado. Un byte se define aquí como 8 bits de datos, la información de cada elemento de datos de byte es almacenada en el bit 7 hasta el bit 0 para el byte 0, el bit 15 hasta el bit 8 para el byte 1, el bit 23 hasta el bit 16 para el byte 2, y finalmente el bit 120 hasta el bit 127 para el byte 15. De este modo, todos los bits disponibles son usados en el registro. Este arreglo de almacenamiento incrementa la eficiencia de almacenamiento del procesador. También, el acceso con dieciséis elementos de datos, una operación puede ahora ser efectuada sobre dieciséis elementos de datos en paralelo. Generalmente, un elemento de datos es una pieza individual de datos que es almacenada en un solo registro o lugar de la memoria con otros elementos de datos de la misma longitud. En secuencias de datos empaquetadas relacionadas con la tecnología SSE2, el número de elementos de datos almacenados en un registro XMM es de 128 bits divididos por la longitud en bits de un elemento de datos individual. De manera similar, en secuencias de datos empaquetadas relacionadas con la tecnología MMX y SSE, el número de elementos de datos almacenados en un registro MMX es 64 bits divididos por la · longitud en bits de un elemento de datos individual. Aunque los tipos de datos ilustrados en la Figura 3A son de 128 bits de largo, modalidades de la presente invención también pueden operar con operandos de 64 bits de ancho u otro tamaño. El formato de palabra empaquetada 320 de este ejemplo es de 128 bits de longitud y consiste de ocho elementos de datos de palabra empaquetada . Cada palabra empaquetada contiene dieciséis bits de información. El formado de palabra doble empaquetada 330 de la Figura 3A es de 128 bits de largo y contiene cuatro elementos de datos de palabra doble empaquetada. Cada elemento de datos de palabra doble empaquetada contiene treinta y dos bits de información. Una palabra cuádruple empaquetada es de 128 bits de longitud y contiene dos elementos de datos de palabra cuádruple empaquetada . La Figura 3B ilustra formatos de almacenamiento de datos en registro alternativos. Cada dato empaquetado puede incluir más de un elemento de datos independiente. Se ilustran tres formatos de datos empaquetados; semiempaquetados 341, simple empaquetado 342, y doble empaquetado 343. Una modalidad del semiempaquetado 341, simple empaquetado 342, y doble empaquetado 343 contiene elementos de datos de punto fijo. Para una modalidad alternativa uno o más del semiempaquetado 341, simple empaquetado 342, y doble empaquetado 343 puede contener elementos de datos de punto flotante. Una modalidad alternativa del semiempaquetado 341 es uno de 128 bits de longitud que contiene elementos de datos de dieciséis bits. Una modalidad del simple empaquetado 342 es uno de 128 bits de longitud y contiene cuatro elementos de datos de 32 bits. Una modalidad del doble empaquetado 343 es uno de 128 bits de longitud y contiene, dos elementos de datos de 64 bits. Se apreciará que esos formatos de datos empaquetados pueden extenderse aún más a otras longitudes de registro, por ejemplo, a 96 bits, 160 bits, 192 bits, 224 bits, 256 o más. La Figura 3C ilustra varias representaciones de tipos de datos empaquetados con signo y sin signo en registro de multimedios de acuerdo a una modalidad de la presente invención. La representación de byte empaquetado, sin signo 344 ilustra el almacenamiento de un byte empaquetado sin signo en un registro de DMSI . La información para cada elemento de datos de byte es almacenada en el bit 7 hasta el bit 0 para el byte 0 , el bit 15 hasta el bit 8 para el byte 1, el bit 23 hasta el bit 16 para el byte 2, y finalmente el bit 120 hasta el bit 127 para el byte 15. De este modo, todos los bits disponibles son usados en el registro. Este arreglo de almacenamiento puede incrementar la eficiencia de almacenamiento del procesador. También, cuando se tiene acceso a dieciséis elementos de datos, la operación puede ahora ser efectuada sobre dieciséis elementos de datos en forma paralela. La representación de byte empaquetado con signo 345 ilustra el almacenamiento de un byte empaquetado con- signo. Nótese que el octavo bit de cada elemento de datos de byte es el indicador del signo. La representación de palabra empaquetada sin signo -346 ilustra como son almacenadas de la palabra siete hasta la palabra cero en un registro de DMSI . La representación de palabra empaquetada con signo 347 es similar a la representación en el registro de la palabra empaquetada sin signo 346. Nótese que el dieciseisavo bit de cada elemento de datos de palabra es el indicador del signo. La representación de palabra doble empaquetada sin signo 348 muestra como son almacenados elementos de datos de palabra doble. La representación de palabra doble empaquetada sin signo 349 es similar a la representación en el registro de la palabra doble sin signo 348. Nótese que el bit de signo necesario es el trigésimo segundo bit en cada elemento de datos de palabra doble. La Figura 3D es una descripción de una modalidad de un formato de codificación de operación (codeop) 360, que tiene treinta y dos bits o más, y modos de dirección de operando de registro/memoria correspondientes a un tipo de formato de codeop descrito en el "Volumen 2 del Manual del Desarrollador de Programas y Sistemas de Programación de Arquitectura Intel IA-32: Referencia del Conjunto de Instrucciones", el cual está disponible de Intel Corporation, Santa Clara, CA en la Red Mundial (www) en intel.com/design/litcentr. El tipo de operación de signo que multiplica, puede ser codificado por uno o más de los campos 361 y 362. Pueden ser identificadas hasta dos ubicaciones de operando por instrucción, incluyendo hasta dos identificadores de operando de origen 364 y 365. Para una modalidad de la instrucción de signo el identificador del operando de destino 366 es el mismo que el identificador del operando de origen 364. Para una modalidad alternativa, el identificador del operando de destino 366 es el mismo que el identificador del operando de origen 365. Por lo tanto, para modalidades de una operación de signo que multiplica, uno de los operandos de origen es identificado por los identificadores del operando de origen 364 y 365 es sobreescrito por los resultados de la operación de signo. Para una modalidad de instrucción de signo, pueden ser usados los identificadores de operando 364 y 365 para identificar operandos de origen y destino de 64 bits. La Figura 3E es una descripción de un formato de codificación de operación (codiop) alternativo 370, que tiene 40 o más bits.' El formado de codiop 370 corresponde a un formato de codiop 360 y comprende un byte de prefijo opcional 378. El tipo de operación de signo que multiplica, puede ser codificado por uno o más campos 378, 371 y 372. Pueden ser identificadas hasta dos operaciones de operando por instrucción por medio de los identificadores de operando de origen 374 y 375 y por medio del byte de prefijo 378. Para una modalidad de la instrucción de signo, el byte del prefijo 378 puede ser usado para identificar operandos de origen y destino de 128 bits. Para una modalidad de la instrucción de signo, el identificador de operando de destino 376 es el mismo que el identificador del operando de origen 374. Para una modalidad alternativa, el identificador del operando de destino 376 es el mismo que el identificador del operando de origen 375. Por lo tanto, para modalidades de las operaciones de signo que multiplican, uno de los operandos de origen identificado por los identificadores del operando de origen 374 y 375 es sobreescrito por los resultados de las operaciones de signo. Los formatos de codiop 360 y 370 permiten registro a registro, memoria a registro, registro por memoria, registro por registro, registro por inmediato, registro a dirección de memoria especificada en parte por los campos MOD 363 y 373 y por base de índice de escala opcional y bytes de desplazamiento . Pasando a continuación a la Figura 3F, en algunas modalidades alternativas, pueden ser efectuadas operaciones aritméticas múltiples de una sola instrucción de 64 bits (DMSI) a través de una instrucción de procesamiento de datos de coprocesador (PDC) . El formato de - codificación de operación (codiop) 380 describe una de esas instrucciones PDC que tiene campos de codiop de PDC 382 y 389. El tipo de instrucción PDC, para modalidades alternativas de operaciones de signo o valor absoluto, puede ser codificada por uno o más campos 383, 384, 387 y 388. Pueden ser identificadas hasta tres ubicaciones de operando por instrucción, incluyendo hasta dos identificadores de operando de origen 385 y 390 y un identificador de operando de destino 386. Una modalidad del coprocesador puede operar sobre valores de 8, 16, 32 y 64 bits. Para una modalidad, la operación de signo o valor absoluto es efectuada sobre elementos de datos enteros. En algunas modalidades, una instrucción de signo o valor absoluto puede ser ejecutada condicionalmente, usando el campo de condición 381. Para algunas instrucciones de signo o valor absoluto los tamaños de datos de origen pueden ser codificados por el campo 383. En algunas modalidades de una instrucción de signo o valor absoluto, detección de Cero (C) Negativo (M) , acarrear (C) , y desbordar (D) puede ser efectuada sobre campos de DMSI . Para algunas instrucciones, el tipo de saturación puede ser codificada por el campo 384. La Figura 4 es un diagrama de bloques de una modalidad de la lógica para efectuar una operación de signo sobre operandos de datos empaquetados de acuerdo con la presente invención. Las modalidades de la presente invención pueden ser implementadas para funcionar con varios tipos de operandos como aquéllos descritos anteriormente. Las operaciones de signo de acuerdo con la presente invención son implementadas con un conjunto de instrucciones para operar sobre tipos de datos específicos. Por ejemplo, se proporciona una instrucción de bytes de signo empaquetado (BSIGNE) para determinar el signo de los tipos de datos de byte . Una instrucción de palabras de signo empaquetado (PSIGME) es para producir operaciones de signo sobre tipos de datos de palabra. Una instrucción de palabras dobles de signo empaquetado (PDSIGNE) es para efectuar operaciones de signo que multiplican sobre tipos de datos de palabra doble. Aunque esas instrucciones tienen diferentes nombres, la operación de signo general que multiplica se efectúa en una forma similar. Con el propósito de simplificar, las siguientes discusiones y ejemplos siguientes están en el contexto de una instrucción de signo empaquetado (SIGNE) para procesar elementos de datos . La instrucción SIGNE para una operación de signo que multiplica de esta modalidad comienza con dos piezas de información: un primer operando de datos DATOS A 410 y un segundo operando de datos DATOS B 420. Para las siguientes discusiones, los DATOS A y DATOS B, y RESULTANTE se refieren generalmente a operandos o bloques de datos, pero no se restringen como tales, y también incluyen registros, archivo de registro, y ubicaciones de memoria. En una modalidad, cada instrucción ¾e signo (BSIGME, PSIGNE, BPSIGME) es descodificada en una microoperación . En una modalidad alternativa, cada instrucción puede ser descodificada en varios números de microops para efectuar la operación de signo sobre los operandos de datos, para este ejemplo, los operandos 410, 420 son piezas de información de 128 bits de ancho almacenados en un registro/memorias de origen que tiene elementos de datos de ancho de palabra. En una modalidad, los operandos 410, 420, son mantenidos registros de DMSI de 128 bits de longitud, como los registros XMM de SSE2 de 128 bits.
Para una modalidad, la RESULTANTE 440 también es un registro de datos XMM. Además, la RESULTANTE 440 también puede ser el mismo registro o ubicación de memoria como uno de los operandos de origen. Dependiendo de la implementación particular, los operandos y registros pueden ser de otras longitudes como de 32, 64 y 256 bits, y tener elementos de datos dimensionados por byte, palabra doble, palabra cuádruple. Aunque los elementos de datos de este ejemplo son de tamaño de palabra, el mismo concepto puede extenderse a elementos dimensionados por bytes y palabra doble. Donde los operandos de datos son de 64 bits de ancho, son usados registros MMX en lugar de registros XMM. El primer operando 410 en este ejemplo está comprendido de un conjunto de ocho elementos de datos: A7, A6, A5, A4, A3, A2 , Al, y ?? . Cada elemento de datos individual corresponde a una posición del elementos de datos en la RESULTANTE 440. El segundo operando 420 está comprendido de otro conjunto de ocho segmentos de datos: B7, B6, B5, B4, B3 , B2, Bl y B0. Los segmentos aguí son de longitud igual y cada uno comprende una sola palabra (16 bits) de datos. Sin embargo, los elementos de datos y las posiciones de los elementos de datos pueden poseer otras granularidades además de palabras . Si cada elemento de datos era de un byte (8 bits) , palabra doble (32 bits) , o palabra cuádruple (64 bits) , los operandos de 128 bits tendrían dieciséis bits de ancho, para un ancho de doble palabra, o dos elementos de datos de ancho de palabra cuádruple, respectivamente. Las modalidades de la presente invención no se restringen a operandos de datos o segmentos de datos de longitud particular, y pueden ser dimensionados apropiadamente para cada implementació . Los operandos 410, 420, pueden residir en un registro o un lugar de la memoria o un archivo de registro o una mezcla. Los operandos de datos 410, 420, son enviados a la lógica de cálculo de signo 430 de una unidad de ejecución en el procesador junto con una instrucción de signo. Al momento en el que la instrucción de signo alcanza la unidad de ejecución, la instrucción debió haber sido descodificada primero en la ejecución en cascada o simultánea del procesador. De este modo la instrucción de signo puede estar en forma de una microoperación (µ??) o algún otro formato descodificado. Para esta modalidad, los dos operandos de datos 410, 420, son recibidos en una lógica de cálculo de signo 430. La lógica de cálculo de signo 430 selecciona el valor del signo o signo para cada elemento de datos del primer operando 410, multiplica el valor del signo con el valor de elemento de datos en la posición del elemento de datos correspondiente del segundo operando 420, y coloca el producto de esa multiplicación en la posición apropiada en el resultante 440. Aunque el concepto general de una operación de multiplicación es discutido aqui, son posibles otros métodos y medios para lograr los mismos resultados deseados como multiplicar con una multiplicación. Por ejemplo, en una modalidad, la multiplicación puede ser efectuada con una unidad de multiplicación. En otra modalidad, pueden obtenerse los mismos resultados por lógica para procesar un algoritmo para dejar un valor sin cambio, fijo en cero, o cambiar un signo de a o viceversa. Este procesamiento de la extracción y multiplicación de signo se repite para todo el conjunto de posiciones de elementos de datos del operando 410. Aunque el procesamiento de datos de esta modalidad está comprendido de la extracción y multiplicación de signo, los términos "operación de signo" u "operación de signo que multiplica" también pueden ser usados, de manera general, aquí para hacer referencia a este procesamiento de datos. Para una modalidad, los elementos de datos para todas las posiciones de datos son procesadas en paralelo. En otra modalidad, puede ser procesada una cierta porción de las posiciones de elementos de datos juntos a la vez. Aquí, la resultante 440 está comprendido de ocho productos: B7 X SIGN0A7, B6 X SIGNOAS, B5 X SIGNOA5, B4 X SIGNOA4, B3 X SIGKTOA3, B2 X SIGKTOA2, Bl X SIGNOAI, y B0 X SIGNOA0. Para esta modalidad, el signo o valor del signo (SIGNOX) para un elemento de datos es para un número diferente de cero positivo, un "-i" para un número diferente de cero negativo, y un "0" para cero. En una modalidad alternativa donde la arquitectura permite un "+0" y un "-0", ambos tipos de ceros son tratados como cero, donde el signo o valor del signo del elemento de datos es un "0" . La Figura 5 ilustra la operación de una operación de signo que multiplica sobre elementos de datos de acuerdo con una modalidad de la presente invención. La operación de signo de este ejemplo puede ocurrir dentro de la lógica de cálculo del signo 430 de la Figura 4. En este ' ej emplo, la operación de signo 530 es descrita con los elementos de datos para una sola posición del elemento de datos . Un primer elemento de datos, ELEMENTO DE DATOS A 510, para un primer operando de datos y un segundo elemento de datos, ELEMENTO DE DATOS B 520, de un segundo operando de datos son puestos juntos. Cada elemento de datos está comprendido de un valor que tiene una porción de signo y una porción basada en el valor numérico. Por ejemplo, el ELEMENTO DE DATOS A 510 es interpretado como un número 512 comprendido de SIGNOA y BASEA. de manera similar, el ELEMENTO DE DATOS B 520 es interpretado como un número 522 comprendido de SIGNOB Y BASEB. Durante la operación de signo 530, la lógica del cálculo del signo toma el valor del signo del primer operando, SIGNOA para el ELEMENTO DE DATOS A 510, y multiplica ese valor del signo con el número en el ELEMENTO DE DATOS B 520. En un caso, la lógica es efectuar la operación de multiplicación apropiada en respuesta al valor del SIGNOA. La porción de signo para un número puede ser negativa o positiva "+" . La porción del valor de un número puede ser un cero "0" o un valor diferente de cero. Para la operación de signo de una modalidad, la lógica coloca el primer elemento de datos en una de tres categorías: positivo , cero "0", o negativo Si el primer elemento de datos 510 es positivo, esto significa que el signo es positivo, entonces el resultado 540 para esa posición de datos es esencialmente el segundo elemento de datos 520 en sí, puesto que un signo positivo es tratado como la multiplicación del segundo elemento de datos 520 por el SIGNOA igual a . Si el primer elemento de datos 510 es cero, el valor del signo del primer elemento de datos 510 es pasado por alto puesto que el cero esencialmente clama una multiplicación del segundo elemento de datos 520 por un SIGNOA igual a cero, lo cual produce un resultado 540 de cero. Si el primer elemento de datos 510 es negativo, significando que su signo es negativo, entonces el resultado 540 para esa posición de datos va a ser el producto de la multiplicación del segundo elemento de datos 520 por un SIGNOA igual a w-l". El resultado 540 de la operación de signo que multiplica para una posición de elemento de datos dada que implicas al ELEMENTO DE DATOS A 510 y el ELEMENTO DE DATOS B 520 es "SIGNOA X ELEMENTOS DE DATOSB" - En otra modalidad, la lógica puede ser capaz dé multiplicar los valores de signo, SIGNOA y SIGNOB juntos y aplicar el valor del signo resultante a la BASEB para formar el resultado final para esa posición del elemento de datos. La Figura 6A es un diagrama de bloques de una modalidad de un circuito 600 para efectuar una operación de signo que multiplica de acuerdo con la presente invención. El circuito 600 de esta modalidad comprende una estructura de multiplexión y lógica para evaluar el valor del signo de un elemento a partir del primer operando de origen y para calcular efectivamente el producto de ese valor de signo con un elemento correspondiente del segundo operando de origen. El circuito 600 en la Figura 6A es mostrado para una posición del elemento de datos o parte del bloque de datos empaquetados resultante simplificando la discusión. Además, la lógica 600 como se muestra para esta posición del elemento de datos puede existir en muchos instantes sobre la misma unidad de ejecución. Dependiendo de la implementación particular, se extrapoló un número de elementos del circuito según fue necesario para el número deseado de elementos de datos. Por ejemplo, con ocho elementos de datos, pueden estar físicamente presentes suficientes multiplexores y direcciones para manejar todos los bits de los ocho elementos de datos. De. manera similar, pueden existir dieciséis instantes del circuito para manejar dos operandos que tengan dieciséis elementos de datos cada uno. En otra modalidad, algo de la lógica, como la sumadora 614, por ejemplo, puede ser compartida entre todas las posiciones de los elementos de datos. En otra modalidad más, el circuito es capaz de procesar datos empaquetados y ¦ los datos para elementos de posiciones de datos múltiples pueden ser procesados a través de la lógica juntos.
Para esta modalidad, una porción de la lógica para la operación de signo también es compartida con otras operaciones empaquetadas para reducir el conteo y redundancia del dispositivo. El circuito 600 de esta modalidad recibe elementos de datos de entrada de operandos de origen y produce un elemento de datos resultante para una posición de elemento de datos particular en un operando de datos empaquetado resultante. Aunque los elementos de origen, ORI X 602 y ORI Y 604 , son referidos como un solo elemento de datos aquí, debe comprenderse que esos elementos son parte de operandos de datos empaquetados más grande que acompañan a una instrucción de signo empaquetado. En esta modalidad, el primer elemento de datos de origen, ORI X 602 , es acoplado a un multiplexor (mux) de dos entradas (2:1) 606 . Una señal de SIGNO 622 controla la operación de ese mux 2:1. Para esta modalidad, si se está dando servicio a una operación de signo, el SIGNO 622 hace que el mux 606 produzca el "0" que es acoplado como la segunda entrada de mux 606 . Si está siendo efectuada otro tipo de operación, el SIGNO 622 hace que el mux 606 produzca el ORI X 602 . El segundo elemento de datos de origen, ORI Y 604 , de esta modalidad, es acoplado a otro mux 2:1 608 como versiones invertidas 605 y no invertidas 604 . Si está siendo efectuada una operación de signo, el SIGNO 622 hace que el multiplexor 608 produzca la entrada invertida 605. En este ejemplo, la versión invertida 605 del ORI 604 puede ser usada para lograr una sustracción. Los dos multiplexores 606, 608, son acoplados a una sumadora 614. Las salidas del mux 610, 612, son la primera y segunda entradas, respectivamente, a la sumadora 614. La sumadora 614 es para sumar juntas sus entradas para generar una suma en su salida 616. Durante una operación de signo, la sumadora recibe "0" como su primera entrada 610 y el ORI Y 605 invertida como su segunda entrada 612. La sumadora 614 parece sumar el ORI Y invertido 605 "0" 603. Pero la inversión de ORI Y 604 de esta modalidad básicamente hace que el ORI Y 604 cambie el signo de positivo a negativo o de negativo a positivo. De este modo el ORI Y invertido 605 hace que esencialmente la sumadora 614 sustraiga matemáticamente el ORI Y 604 de "0" 603. La salida 616 de la sumadora 614 puede ser representada como la suma de "0-ORI Y" . Los bits de datos de ORI X 602 son también acoplados a un circuito de detección de cero 624, el cual va a detectar si el ORI X 602 es igual a un valor de cero. La salida del detector de cero 626 que indica si un valor de cero total es detectado es acoplada a una señal de control a un mux de tres entradas (3:1) 618 y como una entrada a una compuerta ÑOR lógica 628. La detección de cero de una modalidad es efectuada en paralelo en la adición y no crea ninguna trayectoria de temporización crítica nueva. Los N bits de signo 620 del ORI X 602, siendo N un número de uno o mayor, también son acoplados a la compuerta OR lógica 628 y como control al mux 3:1 618. Esta compuerta ÑOR 628 es para producir una señal alta activa de si ambas de sus entradas son bajas activas. En este ejemplo, la salida de la compuerta ÑOR 632 será alta si ambas entradas de los bits de signo 620 son bajas, indicando que el ORI X 602 es positivo, y la entrada del resultado de los detectores de cero es baja, indicando que el ORI X 602 es un valor distinto de cero. El grupo de señales de control 634 acopladas al mux 3:1 618 opera para seleccionar el valor de datos apropiado a producir como resultante 630. Los valores de datos de ORI X 602, ORI Y 604, y la suma de "0-ORI Y" 616 son acopladas como entradas al mux 3:1 618. Para esta modalidad, las señales 634 hacen que una de las entradas sea seleccionada de acuerdo con una de tres situaciones. El primer caso surge si el primer elemento de origen ORI X 602 es un cero. En otras palabras, el segundo elemento de datos 604 va a ser multiplicado por cero. Esta condición es indicada con una salida de detector de cero. 626. En esta situación, la entrada del ORI X 602, el cual es un valor de cero aquí, es seleccionada y enviada como resultante 630. En esta modalidad, esta condición de cero de las otras señales de control 620, 632 son truncadas y se produce cero sin importar el valor del signo del ORI X 602 y el contenido de ORI Y 604. El segundo caso surge si el primer elemento de origen ORI X 602 es positivo y un valor es diferente de cero. Esta condición es indicada con la salida de la compuerta OR 632. Esencialmente, el segundo elemento de datos 604 va a ser multiplicado por "+1" , el cual producirá el ORI Y 604 en sí. En este caso, la entrada del ORI Y 604 es seleccionada y enviada como resultante 630. El tercer caso surge si el primer elemento de origen ORI X 602 es negativo y un valor diferente de cero. Esta situación es indicada con los N bits de signo 620 del ORI X 602, los cuales producen un valor alto activo si el ORI X 602 es negativo y un valor bajo activo si el ORI X 602 es positivo. En este caso, la entrada de la suma para "0-ORI Y" 616 es seleccionada y enviada como resultante 630. Esencialmente, el signo negativo del ORI X 602 es tratado como y el cálculo de "0-ORI Y" es matemáticamente equivalente a una multiplicación del ORI Y 604 del segundo elemento de datos por un factor de "-1" . Para esta modalidad, las resultantes para esta y las otras posiciones de elementos de datos son empaquetadas juntas en un bloque de datos resultante que tiene el mismo tamaño que los operandos de datos de origen. Por ejemplo, si los operandos de datos empaquetados de origen son de 64 o 128 bits de ancho, el bloque de datos empaquetados resultantes también es de 64 o 128 bits de ancho, respectivamente. Además, los operandos de datos de origen para una operación de signo pueden venir de un registro o un lugar de la memoria. Para esta modalidad, el bloque de datos empaquetados resultantes sobreescribe los datos en el registro de D SI para uno de los operandos de datos de origen. La Figura 6B es un diagrama de bloques de otra modalidad de un circuito 650 para efectuar una operación de signo de acuerdo con la presente invención. Aunque el arreglo y las conexiones del circuito son diferentes, el esquema y funcionalidad generales de esta modalidad es similar a la del circuito 600 en la Figura 6A. El circuito 650 de esta modalidad también incluye una estructura de multiplexión y lógica para evaluar el signo de un primer elemento de datos y para multiplicar ese signo con un segundo elemento de datos.
Este circuito 650 es mostrado y descrito en el contexto de una sola posición o porción de elemento de datos del operando empaquetado resultante, pero el aparato y la metodología pueden extenderse según sea necesario y aplicados a operandos de varias longitudes sobre la base de la implementación particular. De este modo, ciertos elementos del circuito de la Figura 6B pueden ser reproducidos para servir más elementos de datos. Por ejemplo, si los operandos son capaces de incluir dieciséis posiciones de elementos de datos, el circuito de la Figura 6B puede ser expandido para soportar las dieciséis posiciones de elementos de datos. El circuito 650 de esta modalidad recibe datos de entrada como un primer elemento de datos ORI X 602 de un primer operando empaquetado y un segundo elemento de datos ORI Y 604 de un segundo operando empaquetado. El ORI X 602 es acoplado como una entrada de mux 3:1 618 y a la lógica detectora de cero 624. El detector de cero 624 es para determinar si el ORI X 602 es un cero. El ORI Y 604 es acoplado al ORI Y 618 3:1 y una versión invertida 613 (-ORI Y) es acoplada a una sumadora 614. La sumadora 614 es para sumar el ORI Y invertido 613 a otra entrada de la sumadora, ""0" 603 en este caso, para obtener una suma en su salida 616. Sumando una versión invertida del ORI Y 604, la sumadora suma cero con el ORI Y negativo, o sustrae matemáticamente el ORI Y de "0". La salida 616 para la sumadora 614 es "0-ORI Y" y es acoplada como una entrada al mux 3:1 618. El valor "0-ORI Y" también es equivalente a multiplicar ORI Y 604 por "-1" . La señal de salida 626 del circuito detector de cero 624 es acoplada con una señal de control al mux 3:1 618 y también como una entrada a una compuerta OR lógica de dos entradas 628. De manera similar, los N bits de signos 620 del ORI X 602 son acoplados al 3:1 618 como un control y como la otra entrada a la compuerta OR 628. La salida 632 de la compuerta ÑOR 628 para esta modalidad es altamente activa si los bits de signo 620 y la salida del detector de cero 626 son ambos bajos en actividad. La salida de la compuerta OR 632 también es acoplada al mux 3:1 618 como una señal de control. Este conjunto de señales de control 634 es para seleccionar una de las tres entradas del mux 602, 604, 616, producir como resultante 630 dependiendo de cuales condiciones existan. Las tres situaciones, como se describió anteriormente para la Figura 6A son: (1) el ORI X 602 es cero; (2) el ORI X 602 es positivo y un valor diferente de cero; y (3) el ORI X 602 es negativo y un valor distinto de cero. Para el primer caso, el ORI X 602, el cual será un cero, es seleccionado. En el segundo caso, ORI Y 604, el cual es igual a "ORI Y x +1", es seleccionado. Para el tercer caso, "0-ORI Y" 616, el cual es igual a "ORI Y x-1" es seleccionado. La resultante para cada posición del elemento de datos es empaquetada junto con otras en un operando de datos resultante . La Figura 7 ilustra la operación de una instrucción de signo empaquetado en una pluralidad de elementos de datos de acuerdo con una modalidad de la presente invención. Este es un ejemplo de la instrucción " PSIGNE DATOS B, DATOS A". La instrucción PSIGNE es para producir una operación de signo que multiplica para operar sobre elementos de datos de tamaño de palabra en el primer operando empaquetado de datos DATOS B 711 y el segundo operando empaquetado de origen DATOS A 701. La descripción aquí también es aplicable a otras instrucciones de signo empaquetado como de BSIGNE y DPSIGNE . En este ejemplo, los signos de unos datos de origen 701 son aplicados a los valores de otros datos de origen 711 vía multiplicación para obtener uñ producto que es organizado en un dispositivo de almacenamiento de datos de destino 721. Los dos operandos de origen, DATOS A 701 y DATOS B 711, están cada uno comprendidos de ocho elementos de datos empaquetados en este ejemplo, como lo es la resultante 721. En esta modalidad, cada uno de los elementos de datos implicados es de ocho bits o un byte de ancho. De este modo, los bloques de datos DATOS A 701, DATOS B 711 y RESULTANTE 721 son cada uno de 128 bits de longitud. Además, esos bloques de datos pueden residir en la memoria y/o registros.
Como se muestra en la Figura 7, los DATOS A 702 incluyen elementos de datos con valores numéricos de base 10 de : "-4270" 702, "240" 703, "-3573" 704, "7033" 705, "-2027" 706, "-9703" 707, "0" 708, "2605" 709. De manera similar, los DATOS B 711 incluyen elementos de datos de origen con valores de base 10 de: "-1120" 712, "6401" 713, "36" 714, "0" 715, "691" 716, "-6780" 717, "-855" 718, "5177" 719. Los números de base 10 son anotados además más adelante con un subíndiceio sufijo. En consecuencia, el signo para cada elemento de datos en el segundo operando de datos 701 es extraído y multiplicado con el número por cada elemento de datos en la posición de elemento de datos correspondiente en el primer operando de datos 711. Si un número es "0" para un elemento de datos en el segundo operando 701, también es introducido un "0" en la posición de elemento de datos resultante correspondiente. Para una modalidad, el procesamiento de una operación de signo que multiplica por una o más posiciones de elementos de datos en los datos de origen 701, 711, puede ser efectuada en paralelo. Cuando el valor del signo para cada uno de los elementos de datos en el segundo operando 701 son evaluados, el número en la posición del elemento de datos correspondiente en el primer operando 711 es multiplicado por un factor apropiado. Para esta modalidad, el multiplicando es "-1", "O", o "1", dependiendo del valor del signo del segundo ¦ elemento de datos del operando. Aunque la operación de signos de datos descrita aquí con multiplicación, una operación de multiplicación real puede no ser físicamente necesaria para arribar al mismo resultado matemático. Por ejemplo, no es necesario efectuar una multiplicación con "0" para arribar un producto de "0" . Tampoco es físicamente necesario multiplicar un número' por puesto que el producto será el número en sí. De manera similar, el resultado de una multiplicación de un número por "-1" también puede ser logrado sustrayendo el número "0" . Por ejemplo, el elemento de datos más a la izquierda 702 del segundo operando 701 tiene un valor de 42701Q", el cual es un número negativo. En tanto que, el elemento de datos más a la izquierda 712 del primer operando 711 contiene un valor de "-1120i0" ·' Debido a que el valor del signo del segundo elemento de datos del operando 712 es negativo, el valor "-1120i0" del primer elemento de datos del operando correspondiente 712 es multiplicado conceptualmente por "-1" para producir un producto de "-1120i0" durante la operación de signo empaquetado . El producto es almacenado en la posición del elemento de datos apropiado 712 de la resultante 721. De manera similar, el elemento de datos más a la derecha 709 del segundo operando 701 tiene un valor de w260510", el cual es un número positivo. En tanto que, el elemento de datos más a la derecha 719 del primer operando 711 contiene un valor ?,5177?0" . Debido a que el valor del signo del segundo elemento de datos del operando 709 es positivo, el valor ?,517710" del primer elemento de datos del operando correspondiente 719 es multiplicado conceptualmente por para producir un producto de ?1517710" durante la operación de signo empaquetado.' El producto es almacenado en la posición del elemento de datos más a la derecha 729 de la resultante 721. Dado que el valor del signo del segundo elemento de datos del operando 709 es positivo aquí, no sería necesaria una multiplicación real puesto que el producto 729 es simplemente el valor del primer elemento de datos del operando 719. Al segundo elemento de datos 708 de la derecha en el segundo operando 701, el valor es "0i0" . En tanto que, el segundo elemento de datos 718 de la derecha del primer operando 711 comprende un valor de "~85510". Debido a que el número del segundo elemento de datos del operando 708 es cero, el valor u-85510" del elemento de datos correspondiente 718 es básicamente multiplicado por "0" para producir un producto de "0" durante la operación del signo empaquetado.
De este modo, se almacena un "0" en la segunda posición del elemento de datos 728 de la derecha en la resultante 721. Debido a que el segundo elemento de datos del operando 708 tiene un valor de cero, es innecesaria una multiplicación para comprender que el producto será "0" . De maneara similar, un valor de cero en un segundo elemento de datos del operando es definido en esta modalidad para producir un 0" en la posición resultante sin importar cualquier valor de signo que pueda existir para el segundo elemento de datos del operando. La Figura 8A es un diagrama de flujo 800 que ilustra una modalidad de un método parta efectuar una operación de signo . El valor de longitud de L es usado aquí para representar el ancho de los operandos y bloques de datos. Dependiendo de la modalidad particular, L puede ser usado para designar el ancho en términos del número de bits, bytes, palabras, etc. .De manera similar el término M es usado para designar el número de elementos o segmentos de datos empaquetados dentro de un operando. En el bloque 810, es recibido un primer operando de datos de longitud L que tiene M elementos. Un segundo operando A de datos de longitud L que también tiene M elementos es recibido en el bloque 820. Para esta modalidad, los operandos de origen y resultantes son de igual longitud y tienen M número de elementos de datos. En el bloque 830, es procesada una instrucción para efectuar una operación de signo que multiplique. Los detalles de la operación de signo al bloque 830 de esta modalidad son descritos además en términos de lo que ocurre por cada posición de elemento de datos. Para una modalidad, la operación de signo para todas las posiciones de elementos de datos empaquetados son procesadas en paralelo . En otra modalidad, cierta porción de los elementos de datos puede ser procesada a la vez. En el bloque 831, se hace una verificación para determinar si el valor para el elemento del operando de datos es negativo (menor de 0) . Si se determina que el valor es negativo, el valor resultante de esa posición de elementos de datos particular es calculado en el bloque 832 como el producto del valor para el elemento del operando de datos B multiplicado por . Si el valor para elementos del operando A no es negativo en el bloque 831, se hace una determinación en el bloque 833 para ver si el valor del elemento del operando A es igual a cero. Si se determina que el valor es cero, el valor resultante de esta posición del elemento de datos se fija, como "0" en el bloque 834. Pero si el valor del elemento del operando A encontrado no es igual a cero en el bloque 833 , se hace otra determinación más en el bloque 835 para ver si el valor para este elemento del operando A es positivo (mayor de cero) . Si el valor para este elemento del operando A es positivo, el valor resultante para esta posición del elemento de datos particular es calculado en el bloque 836 como un producto del valor del elemento de datos del operando B multiplicado por . Si el valor del elemento del operando A no es positivo en el bloque 835 para elemento del operando A no es positivo en el bloque 835 para esta modalidad, el valor es tratado como indefinido en el bloque 837, puesto que no se aplica ninguna de las tres condiciones (positivo, "0", negativo) . Esos valores resultantes para esos elementos de datos diferentes son arreglados en. las posiciones de datos apropiados correspondientes a los pares de elementos de origen en el operando empaquetado resultante. La Figura 8B es un diagrama de flujo 850 que ilustra otra modalidad de un método para efectuar una operación de signo. Los flujos del método en el bloque 810 y 820 para esta modalidad son similares a los de la Figura 8A. En este ejemplo, la metodología para el bloque 830 para efectuar una operación de signo que multiplique es un tanto diferente. Los detalles de la operación de signo en el bloque 830 para esta modalidad también son descritos en términos de lo que ocurre por cada posición de elemento de datos. En el bloque 840, se hace una determinación para ver si el valor en el elemento del operando de datos A es igual a cero . Si la determinación es cierta y el valor es cero, es alimentado "0" como el valor resultante para esta posición del elemento de datos en el bloque 841. Pero si la determinación es que el elemento de datos de datos del operando A para esta posición es un valor distinto de cero, el valor resultante para esta posición del elemento de datos es calculado en el bloque 842 como el producto del valor para el elemento de datos del operando 33 multiplicado por el signo del elemento de datos del operando A. Como en la Figura 8A, el valor resultante para cada una de las posiciones del elemento de datos es arreglado en el lugar apropiado en el bloque de datos empaquetados resultante . La Figura 9 es un diagrama de bloques de una modalidad de la lógica para efectuar una operación de valor absoluto sobre un operando de datos empaquetados . Para una modalidad, las operaciones de valor absoluto de acuerdo con la presente invención son implementadas como una instrucción absoluta empaquetada (ABSE) para operar sobre tipos de datos de diferentes tamaños. Para simplificar, esta instrucción ABSE es descrita aquí en términos generales con un operando empaquetado que tiene ocho elementos de datos. Esos elementos de datos pueden ser bytes, palabras, palabras dobles, etc., dependiendo de la implementación particular. En este ejemplo, la operación absoluta empaquetada es invocada con una línea de código como "0RG1 de ABSE" , donde 0RG1 señala un registro de DMSI o una ubicación en la memoria. En este caso, ORG1 es el origen de datos y el destino resultante. Para una modalidad, el formato de instrucción requiere dos operandos y la línea C leería como 0RG1, 0RG2 de ABSE" . En ese caso> la instrucción ABSE hace que el valor absoluto en los elementos de datos de 0RG2 sea colocada en 0RG1. Además, en una modalidad, se proporciona una instrucción de bytes absoluta empaquetada (BASBE) era generar valores absolutos de tipos de datos de bytes; se proporciona una instrucción de palabras absoluta empaquetada (PABSD) para generar valores absolutos de tipos de datos de palabra, y se proporciona una instrucción de palabras dobles absoluta empaquetada (BPADSP) para generar valores absolutos de tipos de datos de doble palabra . La instrucción ABSE para una operación de valor absoluto de esta modalidad comienza con un primer operando DATOS DE ORIGEN 910 que tiene ocho elementos de datos: A7, A6 , A5 , A , A3 , A2 , Al y A0. Cada elemento de datos individual que responde a una posición del elemento de datos en la resultante 930. El operando de datos 910 es enviado a una lógica de cálculo de valor absoluto 920 junto con una instrucción de valor absoluto. La lógica de calculo de valor absoluto 920 modifica el valor en cada elemento de datos de origen, de modo que el valor numérico en la posición del elemento correspondiente en la resultante 930 tendrá el valor ' absoluto sin signo de ese número de elementos de datos de origen. Por ejemplo, la posición del elemento resultante más a la izquierda tiene el valor absoluto sin signo del número del elemento de origen A7. Este procesamiento del valor absoluto se repite para todo el conjunto de posiciones de elementos de datos en el operando de origen 910. Para esta modalidad, la ubicación de la resultante puede ser la misma que la ubicación del operando de origen. En una modalidad alternativa, donde son especificados dos operandos con la instrucción de ABSE, un operando puede especificar el origen y el otro puede especificar el destino. La compresión es con frecuencia implementada en el procesamiento de imágenes . Los cuadros de video son generalmente comprimidos en bloques de pixeles. El video altamente comprimido puede exhibir artefactos bloqueadores debido a la operación de cuantización . En muchos algoritmos de codificación, un tipo de deterioro de la imagen que ocurre a velocidades de bits más bajas es el llamado efecto de bloqueo. Este efecto es causado por la forma antinatural de dividir las imágenes en bloques rectangulares con una rejilla fija durante el procesamiento de la imagen. Debido a que la codificación de cada bloque es independiente, nada asegura la continuidad de los valores de la imagen codificada en los límites entre los bloques. La cuantización del coeficiente de CD de la transformación cosinusoidal discreta puede sumar o sustraer una desviación a un bloque haciendo que este se vuelva más brillante o más oscuro que los bloques adyacentes y crear la apariencia de líneas a lo largo de los límites de los bloques . Esto algunas veces da lugar a . bordes artificiales prominentes y artefactos bloqueadores en la imagen codificada. En secuencias de imágenes, una rejilla de fondo de bordes no móviles vista contra una escena en movimiento puede dar como resultado un tipo de degradación antinatural y desagradable . Para evitar que ocurran esos efectos bloqueadores, un esquema desbloqueador puede ser el uso de filtros para alisar los bordes artificiales . Esos artefactos pueden hacerse menos notables con un algoritmo de desbloqueo que alisen los límites entre los bloques. Sin embargo, el algoritmo no alisará un paso entre los bloques si existe un borde verdadero a lo largo de los límites de los bloques . Generalmente el paso entre bloques adyacentes es considerado un borde verdadero si el tamaño del paso del borde es mayor que el tamaño del paso que podría ser creado por cuantización. De manera similar, pueden ser usados esos algoritmos para colocar superficies sobre un bloque. Algunos de los algoritmos desbloqueadores para los métodos de compresión de video H.263 y MPG4 usan un signo u operación de signo y una operación de valor absoluto. En esos algoritmos de desbloqueo de video, la función de signo calcula el signo del factor de corrección. La operación del valor absoluto es usada para determinar la magnitud del factor de corrección y comparar variaciones en el video con umbrales predeterminados. Las modalidades de instrucciones de DMSI como SIGN y ABSE como se definió al principio pueden ser usadas en conjunto en algoritmos de desbloqueo para H.263 y MPEG4. La operación de signo implica el valor del signo de uno datos y proporcionar una indicación dé cual es el valor del signo. Por ejemplo, una operación de signo sobre un elemento de datos producirá "0" si el elemento de datos es cero, un "-i" si el elemento de datos es negativo, y un u+l" si el elemento de datos es positivo. Para una modalidad, la instrucción PSIGNO de acuerdo con la presente invención puede ser usada para proporciona la funcionalidad de signo. Un método para el desbloqueo de filtro no lineal emplea un método de filtración no lineal de tres pasos . Primero, caracteriza el límite del bloque. Segundo, usa los resultados del primer paso para calcular factores para corregir valores de pixeles a lo largo del límite de bloque. En tercer lugar, corrige valores de pixeles a lo largo del límite sumando o sustrayendo factores calculados en el segundo paso. El siguiente ejemplo describe el algoritmo de desbloqueo de H.263 de una implementación. A y B son pixeles sobre un lado de un límite de un bloque. A 1012 es un arreglo de pixeles de un pixel de distancia lejos del límite del bloque. B 1014 es un arreglo de pixeles a lo largo del límite del bloque. C y D son pixeles sobre el otro lado del límite. C 1022 es un arreglo a lo largo del límite de bloques sobre el otro lado del límite del arreglo B. D 1024 es un arreglo de pixeles a una distancia de un pixel del límite de bloque en el mismo bloque 1020 que el arreglo C 1022. Para reducir un artefacto de continuidad debido a la cuantización entre el bloque X 1010 y el bloque Y 1020, pero preservar un borde real, se efectúa el desbloqueo. Los resultados del desbloqueo son marcados como A' , B' , C y D' . La Figura 10 ilustra la operación de un algoritmo de desbloqueo usando instrucciones de DMSI de acuerdo con la presente invención. Dos bloques de datos 1010, 1020, son mostrados en la Figura 10. En este ejemplo, los bloques contienen datos para un flujo de imágenes o video. Cada bloque está comprendido de una pluralidad de renglones y columnas de elementos de datos. Por ejemplo, un bloque en algunos algoritmos de procesamiento de imágenes es un bloque de datos de ocho por ocho. Aquí, la ilustración se enfoca sobre el límite del bloque entre el BLOQUE X 1010 y el BLOQUE Y 1020. Se muestran los dos renglones de datos del fondo 1012, 1014 para el BLOQUE X 1010. El BLOQUE Y 1020 es mostrado con los dos renglones de datos superiores 1022, 1024. Cada renglón o hilera de datos está comprendido de elementos de datos numerados 7 hasta 0. Los registros de DMSI son cargados con los datos de pixel de los arreglos A 1012, B 1014, C 1022 y D 1024. Primero, es caracterizado el límite del bloque. Se determina el tamaño y dirección del paso a través del límite del bloque. Esto puede ser representado por la ecuación: d = (A - -4B + 4C - D)/8. Entonces, se calculan los factores de corrección para los arreglos B 1014 y C 1022 con una rampa de descenso: d!=SIGNO(d)x(]iAX(0,ABS (d) - MAX (0,2 x (ABS (d) - fuerza)))). Se calculan los factores de corrección para los arreglos A 1012 y D 1024: d2 = cortedl((A - D)/4,da-2). Aquí, operaciones de valor absoluto y máximo de corte son usadas para calcular la magnitud de los factores de corrección de pixel da y d2. La operación de signo también usa el factor d desde el primer paso para calcular el signo del factor de corrección di. Los factores de corrección dx y d2 son sumados o sustraídos de los valores de pixel . Los pixeles de límite para los arreglos B 1014 y C 1022 son corregidos: B'=corte(B + di); y C =corte (C-dx) .
Los pixeles para los arreglos A 1012 y D 1024 son corregidos entonces : A'=A-d2; D'=D+d2. El calculo de di es una función llamada rampa ascendente. El valor pico es cuando d es igual a la "fuerza" y el valor llega a cero cuando d es igual a una "fuerza de 2 x" . El valor de la "fuerza" es determinado por el tamaño del paso de cuantización . De manera general, la "fuerza" es a aproximadamen e la mitad del tamaño del paso . La función "cortelO" corte el resultado de " (A-D) /4" a + o - el valor absoluto de Mi/2". La función "corte ()" corta el resultado evaluado a un valor de "0" o "255" . Las modalidades de este algoritmo pueden ser implementadas con instrucciones de DMSI . Para esta modalidad, la operación de signo puede ser implementada con una instrucción de BSIGNE o PSIGNE. De manera similar, la operación de valor absoluto puede ser incrementada con BSIGNE o PSIGNE. En esta modalidad, los valores de pixeles múltiples para los arreglos A, B, C y D son cargados en registros de DMSI separados. Para una modalidad, las operaciones de desbloqueo son aplicadas a más de una columna de pixeles a la vez o en paralelo. Se calculan valores múltiples de valores intermedios di y d2 en registros de DMSI separados usando instrucciones de signo, valor absoluto y máximo. Los resultados de A' , B' , C y D ' son calculados en registros de DMSI separados . Las operaciones de corte pueden ser calculadas con instrucciones máximas y mínimas de DMSI. La funcionalidad de una instrucción de signo como se describió anteriormente es usada en el algoritmo de desbloqueo de filtración no lineal de esta modalidad. Las modalidades dé este algoritmo de desbloqueo pueden ser implementadas con técnicas de codificación como aquellas del H.263 o MPEG4 para remover artefactos de bloqueo causados por la operación de cuantización de esos dos métodos de comprensión de video comunes . Usando una instrucción de signo que multiplica en un algoritmo de desbloqueo, las modalidades del presente esquema pueden acelerar cálculos para esos algoritmos de codificación y reducir el tamaño del código. Por ejemplo, una instrucción de SIGNOE puede reemplazar las instrucciones aritméticas múltiples que han sido necesarias para efectuar manipulaciones o instrucciones de datos similares que no pueden operar sobre datos empaquetados. De este modo, el rendimiento total puede ser mejorado y liberados recursos de procesamiento. Para una modalidad de algoritmo de desbloqueo, la instrucción de signo y la instrucción de valor absoluto no tienen un comportamiento de saturación. Esto significa que para una instrucción de valor absoluto empaquetada, se evaluaran datos de M bits con un valor de -2n-1 a 2n~1. En el caso de una instrucción de signo empaquetada, se evaluaran los datos de N bits con un primer elemento de origen igual a -2a'1 y un segundo elemento de origen negativo 2n_1. En algunos casos, son necesarios resultados con signo, de este modo no es permitido en un valor positivo mayor de 2n~1~l. Una solución es forzar los valores negativo y positivo máximos para que tengan la misma magnitud antes de que sean ejecutadas las instrucciones ABSE o SIGNE. En las operaciones de signo y valor absoluto de una modalidad también pueden ser aplicadas a un algoritmo de desbloqueo MPEG4 como se describe más adelante. Diez pixeles, cinco en cualquier lado de un limite de bloque, son representados como: V0 VI V2 V3 V41 V5 V6 V7 V8 V9. El símbolo "|" representa el límite del bloque. El primer límite del bloque es caracterizado como: conteo = f (V0-V1)+ (p(Vl-V2)+ (p(V2-V3)+ (p(V3-V4) + cp(V4-V5)+ (p(V5-V6)+ cp(V6~V7)+ cp(V7-V8)+ (p(V8-V9), donde = f (?) = 1 si el ABS (?) < = UMBRAL1 , además f(?)=0. Si el conteo es mayor o igual a UMBRAL2 , usar un modo CD, además usar el modo predeterminado. El límite del bloque es también caracterizado por CD : valor máximo = MAX (VI, V2, V3 , V3 , V4, V5, V6, V7, V8) ; valor mínimo = MIN(V1, V2 , V3 , Vé, V5 , V6 , V7 , V8) . Si (ABS (valor máximo - valor mínimo) < 2 x a un factor de cuantización) entonces se efectúan los pasos de corrección 2 y 3 relacionados con CD, de otro modo no se efectúa la corrección. Para el modo predeterminado, el factor de corrección es calculado como: a3,0=(2 x V3 - 5 x V4 + 5 x V5 - 2 x V6)/8; a3,l=(2 x VI - 5 X V2 + 5 x V3 - 2 x V4)/8; a3,2=(2 x V5 - 5 x V6 + 5 x V7 - 2 x V8)/8; a3 , 0' =SIGMO (-a3 , 0 ) xMIN (ABS (a3 , 0) ,ABS (a3 , 1) ,ABS (a3 , 2) ) ¦ d=CORTE(5 x (a3, 0' -a3, 0) ¡Q, 0, ( (V4-V5) /2)x 5(ABS(a3,0)< un factor de cuantización) ) , donde d() evalúa a 1 si es cierto o 0 si es falso. Los pixeles del límite son entonces corregidos. La función CORTE (r, p, q) corta r entre p y q. Para el modo CD, el factor de corrección es calculado como: si m<l, entonces si ABS (V1-V0) <QP, entonces pm=V0 ; además pra=VI ; si 1<= m <= 8, entonces pm=Vm; si m> 8, entonces si ABS(V8-V9)< un factor de cuantización, entonces pra=V9, además pm=V8. La Figura 11 es un diagrama de flujo 1100 que ilustra una modalidad de un método para efectuar un algoritmo de desbloqueo usando instrucciones de DMSI. Por ejemplo, ese algoritmo de desbloqueo puede ser implementado con el código para métodos de compresión H.263 y PEG4. En el bloque 1102, los datos de pixel para un primer bloque y un segundo bloque son recibidos . Los límites de bloque entre los bloques son caracterizados en el bloque 1140. Se calculan uno o más factores de corrección sobre los datos de pixeles empaquetados en el bloque 1106 a través del uso de instrucciones para operaciones de signo de multiplicación empaquetadas y operación de valor absoluto empaquetadas. El uso de una instrucción SIGNE y/o ABSE cuando se calculan factores de corrección para un algoritmo de desbloqueo puede reducir el número de instrucciones no DMSI necesarias e incrementa la eficiencia de los recursos de procesamiento. Por ejemplo, una modalidad de una secuencia de desbloqueo para algoritmos de procesamiento de imágenes de acuerdo con la presente invención emplea una operación SIGNE para determinar el signo del factor de corrección que causa ABSE para calcular la magnitud del factor de corrección. En el bloque 1108, los pixeles de límite para el primer bloque y el segundo bloque son corregidos con uno o más factores de corrección que fueron calculados con una operación de signo que multiplica a una operación de valor absoluto. De este modo, se describieron técnicas para un método, aparato, e instrucciones para efectuar una operación de signo y multiplicación. Aunque han sido descritas y mostradas ciertas modalidades ejemplares en los dibujos acompañantes, debe comprenderse que esas modalidades son simplemente ilustrativas y no restrictivas sobre el alcance de la invención, y que esta invención no se limitará a las construcciones y arreglos específicos mostrados y descritos, puesto que a los expertos en la técnica se les pueden ocurrir varias otras modificaciones para estudiar la descripción. En un área de tecnología como este, donde el crecimiento es rápido y los avances adicionales no son fácilmente vislumbrados, las modalidades descritas pueden ser fácilmente modificables en arreglos de detalles de acuerdo a lo facilitado por la habilitación de los avances tecnológicos sin apartarse de los principios de la presente descripción o el alcance de las reivindicaciones acompañantes. Se hace constar que con relación a esta fecha, el mejor método conocido por la solicitante para llevar a la práctica la citada invención, es el que resulta claro de la presente descripción de la invención.

Claims (1)

  1. REIVINDICACIONES Habiéndose descrito la invención como antecede, se reclama como propiedad lo contenido en las siguientes reivindicaciones . 1. Un aparato, caracterizado porque comprende: un lugar de almacenamiento; y recursos de ejecución para ejecutar una primera instrucción sobre un primer operando y un segundo operando, y en respuesta a la primera instrucción almacenar en el lugar de almacenamiento un resultado que tiene un valor de: el primer operando si el segundo operando es un valor positivo,- cero si el segundo operando es un valor de cero; y una versión negativa del primer operando si el segundo operando es un valor negativo. 2. El aparato de conformidad con la reivindicación 1, caracterizado porque el primer operando es un primer operando empaquetado que comprende una primera pluralidad de elementos de datos empaquetados y donde el segundo operando es un segundo operando de datos empaquetado que comprende una segunda pluralidad de elementos de datos empaquetados, y donde además el resultado comprende una tercera pluralidad de elementos de datos empaquetados, cada una de la tercera pluralidad de elementos de datos empaquetados establece un producto de un valor numérico con signo de un primer elemento de datos de ¦ la primera pluralidad de elementos de datos empaquetados ' multiplicados por un signo de un elemento de datos correspondiente de la segunda pluralidad de elementos de datos empaquetados . 3. El aparato de conformidad con la reivindicación 1, caracterizado porque el primer operando es un operando de origen/destino, donde el operando de origen, destino, es tomado del lugar de almacenamiento para calcular el resultado y es sobreescrito por el resultado. 4. El aparato de conformidad con la reivindicación 2, caracterizado porque el lugar de almacenamiento comprende un registro y donde el segundo operando es un operando de registro o memoria. 5. El aparato de conformidad con la reivindicación 4, caracterizado porque el primer operando es un operando de registro . 6. El aparato de conformidad con la reivindicación 5, caracterizado porque la primera instrucción tiene un formato de instrucción que incluye un campo de MOD R/M, un campo de codiop . 7. El aparato de conformidad con la reivindicación 5, caracterizado porque la primera instrucción tiene un formato de instrucción en la cual los bits 5 hasta 3 de un operando de un byte que especifica el operando especifican el primer operando y los bits 2 hasta 0 del byte especifica el operando especifican el segundo operando. 8. El aparato de conformidad con la reivindicación 1, caracterizado porque la primera instrucción tiene un formato de instrucción el cual los bits 5 hasta 3 de un byte que especifica el operando especifican al primer operando y los bytes 2 hasta 0 del byte que especifica el operando especifican el segundo operando. 9. El aparato de conformidad con la reivindicación 1, caracterizado porque la primera instrucción es una instrucción de signo empaquetada y donde el aparato comprende además : un circuito sumador; un primer multiplexor de entrada acoplado para proporcionar una primera entrada a un circuito sumador, el primer multiplexor sirve para seleccionar entre el primer operando y un primer operando complementado; y un detector de cero para producir o enviar una señal seleccionada en respuesta al segundo operando,- y un segundo multiplexor de entrada acoplado para proporcionar una segunda entrada al circuito sumador, el segundo multiplexor sirve para seleccionar entre el segundo operando de origen y un valor de cero en respuesta a una señal de control para la instrucción. 10. El aparato de conformidad con la reivindicación 9, caracterizado porque comprende además: un tercer multiplexor acoplado para recibir el primer operando de origen, el segundo operando de origen, y una salida de sumadora que comprende un valor complementado del primer operando; la lógica de selección para seleccionar uno de un primer operando de origen, un segundo operando, o la salida de la sumadora, sobre la base de la magnitud de un valor de signo del segundo operando, donde: si la magnitud del segundo operando es un cero, la lógica de selección hace que el segundo operando sea seleccionado ,- si la magnitud del segundo operando es un valor diferente de cero y el valor del signo del segundo operando es positivo, la lógica de selección hace que sea seleccionado el primer operando; y si la magnitud del segundo operando es un valor diferente de cero y el valor' del signo del segundo operando es negativo, la lógica de selección hace que sea seleccionada la salida de la sumadora. 11. El aparato de conformidad con la reivindicación 6, caracterizado porque los recursos de ejecución comprenden: un descodificador para descodificar la primera instrucción; un primer archivo de registro físico para operaciones con enteros ,- un segundo archivo de registro físico, donde el operando de origen/destino especifica un registro en el segundo archivo de registro físico, donde el valor del resultado es un valor entero. 12. El aparato de conformidad con la reivindicación 11, caracterizado porque la primera instrucción es una instrucción de signo y donde el descodificador descodifica la instrucción del signo en una microoperacion de signo para la ejecución por una primera unidad de ejecución, la cual es una unidad separada de una unidad de ejecución de enteros que efectúa una pluralidad de operaciones con enteros escalares que almacenan los resultados en el primer archivo de registro físico . 13. El aparato de conformidad con la reivindicación 1, caracterizado porque la primera instrucción es una primera instrucción de datos empaquetados y donde el resultado comprende una primera pluralidad de elementos de datos empaquetados resultante, cada uno de los primeros elementos de datos empaquetados resultantes tiene un valor igual al correspondiente a uno de una pluralidad de primeros elementos de datos de origen multiplicados por un valor de signo correspondiente para uno correspondiente a una pluralidad de segundos elementos de datos de operando de origen. 1 . El aparato de conformidad con la reivindicación 13, caracterizado porque los recursos de' ejecución, en respuesta a una segunda instrucción, almacenan en el lugar de almacenamiento un segundo resultado que comprende una segunda pluralidad de elementos de datos empaquetados resultantes, cada uno de la segunda pluralidad de elementos de datos empaquetados resultantes es un valor absoluto de uno correspondiente de la pluralidad de elementos de datos empaquetados de origen. 15. El aparato de conformidad con la reivindicación 1, caracterizado porque el aparato está en forma de datos legibles en una máquina en un medio legible en una máquina, un medio legible en una máquina, los datos legibles en una máquina son manufacturables o simulables para proporcionar el aparato . 16. Un proceso, caracterizado porque comprende: un archivo de registro que es capaz de almacenar elementos de datos empaquetados; y una unidad de ejecución acoplada al archivo de registro ' y que responde a una pluralidad de datos empaquetados para almacenar valores en el archivo de registro, la unidad de ejecución responde a una de la pluralidad de instrucciones de datos empaquetados almacenando en el archivo de registro un resultado que comprende una pluralidad de elementos de datos resultantes, donde cada uno de la pluralidad de elementos de datos resultantes es igual a una correspondiente de una primera pluralidad de elementos de datos de origen multiplicados por un valor de signo por uno correspondiente de una segunda pluralidad de elementos de datos de origen por cualquier valor de cada uno de la primera pluralidad de elementos de datos de origen en la segunda pluralidad de elementos de datos de origen. 17. El proceso de conformidad con la reivindicación 16, caracterizado porque la unidad de ejecución responde a una segunda de la pluralidad de instrucciones de datos empaquetados almacenando en el archivo de registro un segundo resultado que comprende una segunda pluralidad de elementos de datos resultantes, donde cada uno de la segunda pluralidad de elementos de datos resultantes es igual a un valor absoluto de uno correspondiente a una tercera pluralidad de elementos de datos de origen. 18. El proceso de conformidad con la reivindicación 17, caracterizado porque la primera de la pluralidad de instrucciones de datos empaquetados es una instrucción de signo y la segunda de la pluralidad de datos empaquetados es una instrucción de valor absoluto, y donde el procesador comprende además un descodificador para descodificar la instrucción de signo en una primera microoperación y para descodificar la instrucción de valor absoluto en una segunda microoperación. 19. El procesador de conformidad con la reivindicación 16, caracterizado porque comprende además: un multiplexor para recibir entradas que comprenden un primer valor para un primer elemento de datos de la primera pluralidad de elementos de datos de origen, un segundo valor para un segundo elemento de datos de la segunda pluralidad de elementos de datos de origen correspondiente al primer elemento de datos, y un tercer valor para una versión negativa del primer valor para el primer elemento de datos de la primera pluralidad de elementos de datos de origen; y la lógica de selección de salida capaz de seleccionar una de las entradas del multiplexor para la salida como una operación de signo resultante para una posición de elemento de datos correspondiente al primer y segundo elementos de datos. 20. Un método, caracterizado porque comprende: buscar una instrucción que especifica un primer operando que tiene un primer signo de operando y una primera magnitud de operando y un segundo operando que tiene un segundo signo de operando y una segunda magnitud de operando; determinar si el segundo operando es cero, entonces almacenar cero como resultado final de la instrucción; y determinar si el segundo operando no es cero, entonces almacenar el resultado final que tiene una magnitud resultante final igual a la primera magnitud y un signo de resultado final que es función del signo del primer operando y el signo del segundo operando para ambos valores unitario y no unitario de la segunda magnitud del operando . 21. El método de conformidad con la reivindicación 20, caracterizado porque el primer operando es primeros datos empaquetados que comprende una pluralidad de elementos de datos de origen, y donde el segundo operando es segundos datos empaquetados que comprenden una segunda pluralidad de elementos de datos de origen, donde si un valor del elemento de datos para una posición del elemento particular en el segundo operando es positivo, entonces almacena un valor de un elemento de datos correspondiente del primer operando como resultado de la posición del elemento particular en respuesta a la instrucción; si el valor del elemento de datos para la posición del elemento particular en el segundo operando es negativo, entonces almacenar un valor igual al negativo una vez que el valor del elemento de datos correspondiente del primer operando como resultado para la posición del elemento particular; si el valor del elemento de datos para la posición del elemento particular en el segundo operando es cero, entonces almacenar cero como el resultado para la posición del elemento particular. 22. Un método, caracterizado porque comprende: buscar una instrucción que especifique un primer operando y un segundo operando; determinar si el segundo operando es positivo, entonces almacenar el primer operando como resultado en respuesta a la instrucción; determinar si el ' segundo operando es negativo, entonces almacenar un valor igual a un negativo una vez que el primer operando como resultado de la instrucción; y determinar si el segundo operando es cero, entonces almacenar cero como resultado de la instrucción. 23. El método de conformidad con la reivindicación 22, caracterizado porque la instrucción es una instrucción de signo empaquetada. 24. El método de conformidad con la reivindicación 23, caracterizado porque el primer operando y el segundo operando son cada uno operandos empaquetados que comprenden una primera y una segunda pluralidad de elementos de datos, respectivamente. 25. El método de conformidad con la reivindicación 24, caracterizado porque comprende además descodificar la instrucción del signo empaquetada en una primera microinstrucción . 26. El método de conformidad con la reivindicación 25, caracterizado porque, la determinación del segundo operando comprende evaluar cada elemento de datos individual del segundo operando. 27. Un sistema, caracterizado porque comprende: una memoria para almacenar una primera instrucción de datos empaquetados y primeros datos empaquetados, que comprende una primera pluralidad de datos empaquetados de origen y segundos datos empaquetados que comprenden una segunda pluralidad de elementos de datos de origen; un procesador para ejecutar la primera instrucción de datos empaquetados y para almacenar en respuesta en un lugar de almacenamiento en el procesador datos empaquetados resultantes que comprenden una pluralidad de elementos de datos empaquetados resultantes, cada uno de la pluralidad de elementos de datos empaquetados resultantes siendo, para los diferentes de cero de la segunda pluralidad de los elementos de datos de origen, una función tanto del signo de los correspondientes de la pluralidad de elementos de datos de origen y la segunda pluralidad de elementos de datos de origen y siendo una función de una magnitud solo de los correspondientes de la primera pluralidad de elementos de datos empaquetados para valores unitarios y no unitarios de los correspondientes a la segunda pluralidad de elementos de datos de orige . 28. El sistema de conformidad con la reivindicación 27, caracterizado porque la primera instrucción de datos empaquetados es una instrucción de signo empaquetado para hacer las operaciones de signo para posiciones de elementos de datos correspondan a la primera pluralidad de elementos de datos de origen. 29. El sistema de conformidad con la reivindicación 28, caracterizado porque la pluralidad de elementos de datos empaquetados resultante se sobreescribe en un lugar de almacenamiento del procesador que almacena los primeros datos empaquetados . 30. Un artículo que comprende un medio legible en una máquina el cual puede ser fabricado o simulado para incorporar un aparato, caracterizado porque comprende .- un lugar de almacenamiento; y recursos de ejecución para ejecutar una primera instrucción sobre un primer operando y un segundo operando, y en respuesta a la primera instrucción almacenada en el lugar de almacenamiento un resultado que tiene un valor de: el primer operando si el segundo operando es un valor positivo ,- cero si el segundo operando es un valor de cero; y una versión negativa del primer operando si el segundo operando es un valor negativo. 31. El artículo de conformidad con la reivindicación 30, caracterizado porque el primer operando es un primer operando empaquetado que comprende una primera pluralidad de elementos de datos empaquetados y donde el segundo operando es un segundo operando de datos empaquetado que comprende una segunda pluralidad de elementos de datos empaquetados, y donde además el resultado comprende una tercera pluralidad de elementos de datos empaquetados, cada una de la tercera pluralidad de elementos de datos empaquetados establece un producto de un valor numérico con signo de un primer elemento de datos de la primera pluralidad de elementos de datos empaquetados multiplicados por un signo de un elemento de datos correspondiente de la segunda pluralidad de elementos de datos empaquetados . 32. El artículo de conformidad con la reivindicación 30, caracterizado porque el primer operando es un operando de origen/destino, donde el operando de origen, destino, es tomado del lugar de almacenamiento para calcular el resultado y sobreescrito por el resultado. 33. El artículo de conformidad con la reivindicación 31, caracterizado porque el lugar de almacenamiento comprende un registro y donde el segundo operando es un operando de registro o memoria. 34. El artículo de conformidad con la reivindicación 31, caracterizado porque la primera instrucción tiene un formato de instrucción que incluye un campo de MOD R/M, un campo de codio . 35. El artículo de conformidad con la reivindicación ' 30, caracterizado porque la primera instrucción es una instrucción de signo empaquetada y donde el aparato comprende además : un primer multiplexor de entrada acoplado para proporcionar una primera entrada a un circuito sumador, el primer multiplexor sirve para seleccionar entre el primer operando y un primer operando complementado; un detector de cero para producir o enviar una señal seleccionada en respuesta al segundo operando; un segundo multiplexor de entrada acoplado para proporcionar una segunda entrada al circuito sumador, el segundo multiplexor sirve para seleccionar entre el segundo operando de origen y un valor de cero en respuesta a una señal de control para la instrucción; un tercer multiplexor acoplado para recibir el primer operando de origen, el segundo operando de origen, y una salida de sumadora que comprende un valor complementado del primer operando,- la lógica de selección para seleccionar uno de un primer operando de origen, un segundo operando, o la salida de la sumadora, sobre la base de la magnitud de un valor de signo del segundo operando, donde: si la magnitud del segundo operando es un cero, la lógica de selección hace que el segundo operando sea seleccionado ,- si la magnitud del segundo operando es un valor diferente de cero y el valor del signo del segundo operando es positivo, la lógica de selección hace que sea seleccionado el primer operando; y si la magnitud del segundo operando es un valor diferente de cero y el valor del signo del segundo operando es negativo, la lógica de selección hace que sea seleccionada la salida de la sumadora . 36. El artículo de conformidad con la reivindicación 30, caracterizado porque la primera instrucción es una primera instrucción de datos empaquetados y donde el resultado comprende una primera pluralidad de elementos de datos empaquetados resultante, cada uno de los primeros elementos de datos empaquetados resultantes tiene un valor igual al correspondiente a uno de una pluralidad de primeros elementos de datos de origen multiplicados por un valor de signo correspondiente para uno correspondiente a una pluralidad de segundos elementos de datos de operando de origen . 37. Un aparato, caracterizado porque comprende: un lugar de almacenamiento; y recursos de ejecución para ejecutar una primera instrucción sobre un primer operando y un segundo operando, el primer operando tiene una primera magnitud y un primer signo inicial de operando, el segundo operando tiene un segundo signo de operando, los recursos de ejecución, en respuesta a la primera instrucción, almacenan y dan lugar de almacenamiento a un resultado el cual tiene la primera magnitud y el primer signo inicial del operando si el segundo operando es un operando positivo, el cual es cero si el segundo operando es un operando cero, y el cual tiene una primera magnitud y un signo resultante que es un producto del primer signo inicial del operando multiplicado por el signo del segundo operando si el segundo operando es un operando negativo . 38. El aparato de conformidad con la reivindicación 37, caracterizado porque el primer operando es un primer operando empaquetado que comprende una primera pluralidad de elementos de datos empaquetados y donde el segundo operando es un segundo operando de datos empaquetados que comprende una segunda pluralidad de datos empaquetados, y donde además el resultado comprende una tercera pluralidad de elementos de datos empaquetados, cada una de la tercera pluralidad de elementos de datos empaquetados establece un producto de un valor numérico con signo a partir de un primer elemento de datos de una primera modalidad de elementos de datos empaquetados multiplicados por un signo de un elemento de datos correspondiente de la segunda pluralidad de elemento de datos empaquetados . 39. El aparato de conformidad con la reivindicación 38, caracterizado porque el lugar de almacenamiento comprende un registro y donde el segundo operando es un operando de registro o memoria. 40. El aparato de conformidad con la reivindicación 39, caracterizado porque la primera instrucción tiene un formato de instrucción que incluye un campo de MOD /M, un campo de codiop. 41. El aparato de conformidad con la reivindicación 40, caracterizado porque la primer instrucción tiene un formato de instrucción en la cual los bits cinco hasta tres de un byte que especifique el operando especifican al primer operando y los bits dos hasta cero del byte que específica al operando especifican al segundo operando. 42. Un aparato, caracterizado porque comprende: un lugar de almacenamiento; y recursos de ejecución para ejecutar una primera instrucción empaqueta de un primer operando empaquetado que tiene una primera pluralidad de elementos de datos y un segundo operando empaquetado que tiene una segunda pluralidad de elementos de datos, cada elemento de datos de la primera pluralidad de elementos de datos para el primer operando tiene una primera magnitud y un primer signo de operando, cada elemento de datos de la segunda pluralidad de elementos de datos del segundo operando tiene una segunda magnitud y un segundo signo de operando, los recursos de ejecución, en respuesta a la primera instrucción, almacenan en el lugar de almacenamiento, por cada posición del elemento de datos de un operando resultante un resultado el cual tiene la primera magnitud y un signo resultante el cual es función tanto del signo del primer operando como el signo del segundo operando es el segundo operando es un operando diferente de cero, y que es cero si el segundo operando es un operando cero . 43. El aparato de conformidad . con la reivindicación 42, caracterizado porque el operando resultante está comprendido de una tercera pluralidad de elementos de datos, cada uno de la tercera pluralidad de elementos de datos empaquetados establece un producto de un valor numérico con signo a partir de un primer elemento de datos de la primera pluralidad de elementos de datos empaquetados multiplicados por un signo de un elemento de datos correspondiente de la segunda pluralidad de elementos de datos empaquetados. 44. El aparato de conformidad con la reivindicación 43, caracterizado porque el lugar de almacenamiento comprende un registro y donde el segundo operando es un registro o un operando de memoria. 45. El aparato de conformidad con la reivindicación 44, caracterizado porque el primer operando es un registro. 46. El aparato de conformidad con la reivindicación 45, caracterizado porque el registro del primer operando también es un lugar de almacenamiento.
MXPA03011899A 2003-06-30 2003-12-18 Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica. MXPA03011899A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/610,929 US7539714B2 (en) 2003-06-30 2003-06-30 Method, apparatus, and instruction for performing a sign operation that multiplies

Publications (1)

Publication Number Publication Date
MXPA03011899A true MXPA03011899A (es) 2005-01-13

Family

ID=33452633

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA03011899A MXPA03011899A (es) 2003-06-30 2003-12-18 Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica.

Country Status (10)

Country Link
US (1) US7539714B2 (es)
EP (2) EP2284694B1 (es)
JP (1) JP4869552B2 (es)
KR (1) KR100841131B1 (es)
CN (1) CN1577249B (es)
BR (2) BRPI0306094B1 (es)
MX (1) MXPA03011899A (es)
RU (1) RU2275677C2 (es)
SG (1) SG144700A1 (es)
TW (1) TWI305882B (es)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7424501B2 (en) 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
WO2006034331A2 (en) * 2004-09-20 2006-03-30 Divx, Inc. Video deblocking filter
US7475103B2 (en) 2005-03-17 2009-01-06 Qualcomm Incorporated Efficient check node message transform approximation for LDPC decoder
US7971042B2 (en) * 2005-09-28 2011-06-28 Synopsys, Inc. Microprocessor system and method for instruction-initiated recording and execution of instruction sequences in a dynamically decoupleable extended instruction pipeline
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US20090113174A1 (en) * 2007-10-31 2009-04-30 Texas Instruments Incorporated Sign Operation Instructions and Circuitry
US8515052B2 (en) 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8041927B2 (en) * 2008-04-16 2011-10-18 Nec Corporation Processor apparatus and method of processing multiple data by single instructions
WO2010047344A1 (ja) * 2008-10-24 2010-04-29 シャープ株式会社 表示装置および表示装置の駆動方法
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
ES2729031T3 (es) * 2010-07-14 2019-10-29 Ntt Docomo Inc Intra-predicción de baja complejidad para codificación de vídeo
RU2467377C1 (ru) * 2011-04-19 2012-11-20 ОАО "Концерн "Моринформсистема-Агат" Способ и устройство умножения чисел в коде "1 из 4"
RU2461867C1 (ru) * 2011-06-23 2012-09-20 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" - Госкорпорация "Росатом" Реконфигурируемый вычислительный конвейер
CN104081341B (zh) * 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9710266B2 (en) * 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9207941B2 (en) * 2013-03-15 2015-12-08 Intel Corporation Systems, apparatuses, and methods for reducing the number of short integer multiplications
CN103995475B (zh) * 2014-05-16 2016-05-18 北京航空航天大学 一种柔性嵌入式被测设备模拟器
US20160125263A1 (en) 2014-11-03 2016-05-05 Texas Instruments Incorporated Method to compute sliding window block sum using instruction based selective horizontal addition in vector processor
US10346944B2 (en) 2017-04-09 2019-07-09 Intel Corporation Machine learning sparse computation mechanism
CN108733347B (zh) * 2017-04-20 2021-01-29 杭州海康威视数字技术股份有限公司 一种数据处理方法及装置
RU2653310C1 (ru) * 2017-05-24 2018-05-07 федеральное государственное бюджетное образовательное учреждение высшего образования "Воронежский государственный университет" (ФГБОУ ВО "ВГУ") Устройство для умножения числа по модулю на константу
CN107844322B (zh) * 2017-07-20 2020-08-04 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置和方法
RU2666285C1 (ru) * 2017-10-06 2018-09-06 Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" (ВятГУ) Способ организации выполнения операции умножения двух чисел в модулярно-логарифмическом формате представления с плавающей точкой на гибридных многоядерных процессорах
US11614920B2 (en) * 2020-05-07 2023-03-28 Meta Platforms, Inc. Bypassing zero-value multiplications in a hardware multiplier

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1398092A (fr) * 1964-03-26 1965-05-07 Saint Gobain Nouveau circuit électronique de commutation
FR1509926A (fr) * 1966-03-21 1968-01-19 Saint Gobain Techn Nouvelles Circuit multiplicateur scalaire
JPS63310023A (ja) * 1987-06-11 1988-12-19 Matsushita Electric Ind Co Ltd 符号付固定小数点乗算装置
NL9001608A (nl) * 1990-07-16 1992-02-17 Philips Nv Ontvanger voor meerwaardige digitale signalen.
JPH04155503A (ja) * 1990-10-19 1992-05-28 Matsushita Electric Ind Co Ltd ニューロ制御装置
US5128890A (en) * 1991-05-06 1992-07-07 Motorola, Inc. Apparatus for performing multiplications with reduced power and a method therefor
US5349545A (en) * 1992-11-24 1994-09-20 Intel Corporation Arithmetic logic unit dequantization
US6023489A (en) * 1995-05-24 2000-02-08 Leica Geosystems Inc. Method and apparatus for code synchronization in a global positioning system receiver
US6038583A (en) * 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6490607B1 (en) * 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
US6243803B1 (en) * 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6351293B1 (en) * 1998-05-18 2002-02-26 Sarnoff Corporation Decision directed phase detector
US6292814B1 (en) * 1998-06-26 2001-09-18 Hitachi America, Ltd. Methods and apparatus for implementing a sign function
US6397240B1 (en) * 1999-02-18 2002-05-28 Agere Systems Guardian Corp. Programmable accelerator for a programmable processor system

Also Published As

Publication number Publication date
CN1577249A (zh) 2005-02-09
JP2005025719A (ja) 2005-01-27
EP2284694B1 (en) 2013-05-15
BRPI0306094B1 (pt) 2017-06-27
RU2003137709A (ru) 2005-06-10
EP2284694A1 (en) 2011-02-16
BR0306094A (pt) 2005-05-17
US7539714B2 (en) 2009-05-26
SG144700A1 (en) 2008-08-28
KR100841131B1 (ko) 2008-06-24
RU2275677C2 (ru) 2006-04-27
JP4869552B2 (ja) 2012-02-08
TWI305882B (en) 2009-02-01
TW200500878A (en) 2005-01-01
EP1496432A3 (en) 2007-12-12
KR20050005729A (ko) 2005-01-14
CN1577249B (zh) 2010-04-14
US20040267858A1 (en) 2004-12-30
EP1496432A2 (en) 2005-01-12

Similar Documents

Publication Publication Date Title
US10474466B2 (en) SIMD sign operation
MXPA03011899A (es) Un metodo, aparato, e instrucciones para efectuar una operacion de signo que multiplica.
RU2263947C2 (ru) Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных
US20170364476A1 (en) Instruction and logic for performing a dot-product operation
US7624138B2 (en) Method and apparatus for efficient integer transform
US20090265410A1 (en) Packed add-subtract operation in a microprocessor
TW201729076A (zh) 用於合成與排列操作序列之指令及邏輯

Legal Events

Date Code Title Description
FA Abandonment or withdrawal