ES2221282T3 - Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas. - Google Patents

Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas.

Info

Publication number
ES2221282T3
ES2221282T3 ES99118986T ES99118986T ES2221282T3 ES 2221282 T3 ES2221282 T3 ES 2221282T3 ES 99118986 T ES99118986 T ES 99118986T ES 99118986 T ES99118986 T ES 99118986T ES 2221282 T3 ES2221282 T3 ES 2221282T3
Authority
ES
Spain
Prior art keywords
instruction
field
prefix
mentioned
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES99118986T
Other languages
English (en)
Inventor
Zvika Rozenshein
Jacob Tokar
Uri Dayan
Joe Paul Gergen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of ES2221282T3 publication Critical patent/ES2221282T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un sistema para dar órdenes a un procesador de datos, el sistema incluye una raíz de instrucción que tiene un campo de selección de operación para seleccionar una operación que vaya a ser realizada por dicho procesador de datos y un prefijo de instrucción. El prefijo de instrucción tiene un campo seleccionado del grupo de un campo de ejecución condicional para seleccionar una condición bajo la que un procesador de datos realizará una operación seleccionada, un campo de modificación de longitud de operando para modificar la operación seleccionada que se vaya a realizar sobre un operando que tenga una longitud diferente, un campo de grupo de instrucción para seleccionar una longitud de un grupo de instrucción que incluye la raíz de instrucción, y un campo de selección de longitud de prefijo para seleccionar una longitud de dicho prefijo de instrucción. Se describe también un sistema procesador de datos sensible a este sistema de instrucción. Se describe también un sistema de instrucción paraagruparse instrucciones estáticamente sin usar un prefijo de instrucción.

Description

Sistema de procesamiento de datos con ejecución condicional de instrucciones compuestas extendidas.
Campo de la invención
La presente invención se refiere, en general, a procesadores de datos y, más en particular, a métodos y aparatos para el agrupamiento de instrucciones de procesador de datos, y un sistema de instrucciones para usarse con estos.
Antecedentes de la invención
Hay disponibles muchos tipos distintos de procesadores de datos. Algunos procesadores de datos tienen múltiples unidades de ejecución, que pueden ser empleadas al mismo tiempo. La programación de instrucciones para tales procesadores de datos, puede ser bien dinámica, o estática. Ambos tipos de sistemas funcionan sobre un flujo de instrucciones secuencial, que ha sido preparado para ser ejecutado empleando dispositivos convencionales de soporte lógico de preparación del programa, incluyendo ensambladores y compiladores que optimizan. En general, los sistemas dinámicos requieren significativamente más equipo físico en el procesador de datos, mientras que los sistemas estáticos requieren técnicas de soporte lógico de preparación del programa más sofisticadas. El objetivo común, no obstante, es identificar y explotar el paralelismo en el nivel de instrucciones, inherente al flujo de instrucciones, mientras se mantiene la apariencia del carácter secuencial de la ejecución.
En un sistema de programación de instrucciones dinámico, equipamiento físico especial, dentro del procesador de datos, mantiene una ventana deslizante de visibilidad, dentro del flujo de instrucciones secuencial. Cada ciclo de entrega de instrucciones, el equipo físico de programación selecciona tantas instrucciones visibles como pueda acomodar mediante las unidades de ejecución y otros recursos del sistema, sujeto a restricciones de la serie de instrucciones. Equipamiento físico adicional, mantiene un registro de cada instrucción mientras está en marcha y, dependiendo de las condiciones del sistema, bien aborta, o retira, la instrucción de forma apropiada. Un ejemplo de un procesador de datos programado de forma dinámica, es el microprocesador MPC604 de Motorola.
En un sistema de programación de instrucciones estático, el dispositivo de soporte lógico de preparación del programa, después de que ha generado y, quizás, optimizado el flujo de instrucciones en serie, reexamina el flujo y, en base a la información que describe la configuración del equipo físico, y las características de funcionamiento del procesador de datos de destino, agrupa juntas aquellas instrucciones que pueden ser ejecutadas en paralelo de forma segura. Debido a la dificultad de predecir las acciones de ciertas construcciones de programa, tal como referencias de memoria indirectas o computadas, no es posible garantizar una programación óptima por adelantado. Para acomodar tales construcciones no predecibles, usualmente se proporciona algunos dispositivos de bloqueo de equipo físico. Un ejemplo de procesador de datos programado estáticamente, fue el Multiflow Trace 7/14/28. El compilador para la máquina Trace, fue aludido por lo general como el compilador Bulldog, el nombre dado por sus autores originales cuando estaban en la Universidad de Yale.
Agrupando instrucciones para el Trace, que era una máquina de Palabras de Instrucción Muy Largas (VLIW, Very Long Instruction Word), el compilador Bulldog estaba limitado a una VLIW que tuviera bien 7, 14 o 28 ranuras de instrucciones de función fijas, dependiendo del modelo de la máquina. Cualquier ranura de instrucciones para la que el compilador no pudiera encontrar un uso adecuado, era simplemente llenada con una instrucción de no operación (NOP, no-operation) (por ejemplo, todo ceros). Mejor que almacenar estos NOPs inútiles en la memoria, el compilador comprimía las NOPs y precedía el establecimiento de palabras de instrucción útiles abarcadas en cada VLIW, con un mapa que indicaba la localización de los NOPs comprimidos (o, visto a la inversa, las palabras de instrucción útiles). En el momento de la extracción previa, el controlador de memoria intermedia / memoria, Trace, usaba la información en la palabra de mapa de bits, para regenerar las NOPs de forma que la memoria intermedia se rellenaba con VLIWs completamente poblados. El mapa de bits se tiraba, una vez que las VLIWs eran regeneradas durante la extracción previa, y ninguna parte de la entrega de instrucciones ni del equipo físico de ejecución estaba al tanto de su existencia. Este mecanismo, incluso aunque aumentaba en una palabra la longitud lógica de cada VLIW en la memoria, en general tendía a reducir la longitud física de las VLIWs, debido a la incapacidad del compilador para rellenar todas las ranuras de instrucciones en cada VLIW con palabras de instrucción útiles. Por otra parte, para un código bien diseñado, este mecanismo podría incrementar significativamente el tamaño real del código en la memoria.
Un ejemplo más reciente de un procesador de datos programado estáticamente, es la familia de microprocesadores TMS320C62xx de Texas Instruments ('C62). En el 'C62, cada palabra de instrucción incluye un bit "P" dedicado que, si se configura mediante el dispositivo de soporte lógico de preparación del programa, indica al equipo físico de entrega que la palabra de instrucción puede ser entregada en paralelo con la siguiente palabra de instrucción. Así, un "paquete de ejecución" que puede ser entregado simultáneamente, está compuesto de una palabra de instrucción que tiene un bit P puesto a cero, y hasta un número máximo de palabras de instrucción precedentes, teniendo cada una un bit P puesto a uno. La Patente U.S. No. 5.560.028, revela una variación sobre este mecanismo en la que el sentido del bit de control de entrega paralela, es alternado entre cada conjunto de palabras de instrucción susceptibles de ser entregadas en paralelo. En los anteriores sistemas programados estáticamente, dedicando un bit de cada instrucción a la función de agrupamiento, una parte significativa de la instrucción no es utilizable para otras funciones, tales como la codificación de operaciones de procesamiento de datos.
Las publicaciones U.S. 4.907.192 y U.S. 5.475.853, también revelan el uso de bits de pegado de etiqueta, incorporados dentro de una instrucción para proporcionar información de procesamiento adicional a un procesador, sin embargo, como ocurre para la publicación U.S. 5.560.028, esto puede tener como resultado que partes significativas de las instrucciones no son utilizables para otras funciones.
Está muy demandada la velocidad de ejecución, para el procesamiento de datos e instrucciones empleando un tal procesador de datos de ejecución múltiple. Sin embargo, como la complejidad de la arquitectura del procesador de datos se incrementa empleando unidades de ejecución múltiple, el tamaño del código de instrucciones del ordenador tiende a incrementarse. En muchas aplicaciones, un tamaño de código incrementado no es deseable, debido a que se incrementan el coste y el espacio necesario para memoria adicional. Una de tales aplicaciones, es una clase de procesadores de datos conocidos como procesadores de señal digital (DSP). Los DSP son empleados en muchas aplicaciones, tales como teléfonos móviles, donde están muy buscados tamaño pequeño y potencia baja. Sería deseable, para un procesador de datos para unidad de ejecución múltiple, proporcionar un procesamiento de instrucciones más rápido, sin expandir de forma significativa el tamaño del código de instrucciones.
Correspondientemente, existe la necesidad de métodos, y aparatos, mejorados para agrupar instrucciones de ordenador, y para un sistema de instrucciones mejorado.
Breve descripción de los dibujos
Si bien la realización se muestra en particular en las reivindicaciones anexas, otras características de la invención son reveladas mediante la siguiente descripción detallada, tomada en conjunto con los dibujos que la acompañan, en los cuales:
la figura 1 es un diagrama de bloques, de una realización de un sistema de procesamiento de datos;
la figura 2 es un diagrama que ilustra registros dentro del núcleo del sistema de la figura 1;
la figura 3 es un diagrama que ilustra una realización concreta de una parte del núcleo del sistema de la figura 1, con una sola unidad de multiplicar y acumular;
la figura 4 es un diagrama que ilustra otra realización de una parte del núcleo del sistema de la figura 1, con dos unidades de multiplicar y acumular
la figura 5 es un diagrama que ilustra otra realización de una parte del núcleo del sistema de la figura 1, con cuatro unidades de multiplicar y acumular;
la figura 6 es un diagrama que ilustra una realización concreta de la unidad de multiplicar y acumular de las figuras 3-5;
la figura 7 es un diagrama que ilustra una realización concreta de la unidad de campo de bits y lógica de la figura 1;
la figura 8 es un diagrama que ilustra una realización concreta de la unidad de generación de direcciones, dentro del núcleo del sistema de la figura 1;
la figura 9 es un diagrama que ilustra una realización concreta de un método de encauzamiento de instrucciones, a ser ejecutadas mediante el sistema de la figura 1;
la figura 10 es un diagrama que ilustra un conjunto de instrucciones informáticas extraídas, y una ejecución de instrucciones informáticas agrupadas, para ser ejecutadas por el sistema de la figura 1;
la figura 11 es un diagrama que ilustra una operación de entrega de prefijo, y entrega de instrucción, para el núcleo del sistema de la figura 1;
las figuras 12-17 ilustran diversas realizaciones de un sistema de instrucciones, que puede ser empleado con el sistema de la figura 1;
la figura 18 es un diagrama que ilustra un sistema de instrucciones que emplea agrupamiento estático; y
la figura 19 es un diagrama que ilustra distintos valores para un campo secundario de tipo, dentro del sistema de instrucciones de la figura 18.
Descripción detallada de la realización preferida
De acuerdo con un aspecto de la presente invención se proporciona un sistema de procesamiento de datos que tiene un núcleo de procesamiento y un sistema de instrucciones, teniendo el sistema de instrucciones una raíz de instrucción, que tiene un campo de selección de operación para seleccionar una operación a ser llevada a cabo por el mencionado núcleo del procesador de datos; y un prefijo de instrucción, que tiene una longitud que puede seleccionarse a partir de una pluralidad de campos.
Preferentemente, uno de los campos que pueden ser seleccionados es un campo de ejecución condicional, y donde la raíz de instrucción y el prefijo de instrucción comprenden una instrucción, la realización de la cual, por parte del mencionado núcleo del procesador de datos, está condicionada al mencionado campo de ejecución condicional, del mencionado prefijo de instrucción.
Preferentemente, la mencionada instrucción incluye más de una raíz de instrucción.
Preferentemente, el sistema de procesamiento de datos comprende además 2^{n} bloques de 2^{m} registros, donde el prefijo de instrucción tiene un campo de selección de bloque de registro de anchura n, para seleccionar uno de los 2^{n} bloques de los mencionados registros; y teniendo la raíz de instrucción un campo de selección de registro de anchura m, para seleccionar uno de los 2^{m} registros en el mencionado uno, seleccionado, de los mencionados bloques.
Preferentemente, el campo de selección de operación está dispuesto para seleccionar una operación a ser llevada a cabo en un operando que tiene una primera longitud; y el prefijo de instrucción tiene un campo de modificación de anchura de operando, para modificar la mencionada operación seleccionada, para que sea llevada a cabo en un operando que tiene una segunda anchura.
Preferentemente, el prefijo de instrucción tiene un campo de grupo de instrucciones para seleccionar una pluralidad de las mencionadas raíces de instrucción, para abarcar un grupo, iniciando simultáneamente, el núcleo del procesador de datos, el desempeño de las operaciones seleccionadas por el mencionado grupo.
Preferentemente, el núcleo del procesador de datos está dispuesto para ejecutar los tipos primero y segundo de operaciones de forma secuencial, y una pluralidad de las mencionadas operaciones del primer tipo en paralelo, donde el campo de selección de operación, está dispuesto para seleccionar uno de los mencionados primero y segundo tipos de operación a ser ejecutada por el mencionado núcleo del procesador de datos, teniendo el campo de selección de operación, un campo secundario de tipo, de anchura n, los valores del cual son asignados como sigue: un primer valor si el mencionado primer tipo de operación va a ser ejecutado de forma secuencial; un segundo valor si el mencionado primer tipo de operación va a ser ejecutado en paralelo; y un tercer valor seleccionado a partir de los restantes (2^{n}-2) valores, si el mencionado segundo tipo de operación va a ser ejecutado.
Preferentemente, el núcleo del procesador de datos está adaptado para ejecutar los tipos primero y segundo de operaciones de modo secuencial, y una pluralidad del mencionado primer tipo de operaciones en paralelo, el campo de selección de operación está dispuesto para seleccionar un tipo, de los mencionados primero y segundo, de operaciones a ser ejecutadas por el mencionado núcleo del procesador de datos, teniendo el campo de selección de operación un campo secundario de tipo, teniendo el campo secundario de tipo un primer valor para que sean ejecutadas operaciones del mencionado primer tipo de forma secuencial; un segundo valor para que sean ejecutadas operaciones del mencionado primer tipo en paralelo, y para que al menos una operación seleccionada del mencionado segundo tipo sea ejecutada de modo secuencial.
Debería notarse que los términos concretos y expresiones empleadas, y la estructura concreta y detalles de funcionamiento reflejados, en la descripción de tallada y dibujos anexos tienen propósitos solo ilustrativos, y no están concebidos en modo alguno para limitar el alcance de la invención como se describe en las reivindicaciones anexas.
En relación con la figura 1, es ilustrada una realización de un sistema de procesamiento 10. El sistema de procesamiento 10 incluye un núcleo de procesador 12, una unidad de interfaz de sistema (SIU, system interface unit) 14, una unidad de acceso a memoria directa 16, un periférico 18, tal como un temporizador o puerto de comunicación en serie, módulos de memoria interna 20, 22, y un módulo de interfaz de memoria externa 19. El sistema de procesamiento 10, puede también ser aludido como procesador de datos.
El núcleo del procesador 12 incluye un fichero de registro de direcciones 26, un dispositivo de secuencia de programas 24, ficheros de registro de datos 28, 29, unidades de lógica aritmética de direcciones 30 (también nombradas como unidades de generación de dirección (AGU, address generation units)), unidades de acumular y multiplicar (MAC, multiply and accumulate) (32) (también referidas como unidades de lógica aritmética de datos (DALU, data arithmetic logic units)), una unidad de lógica y de campo de bits 34, y un acelerador de expansión de instrucciones opcional 36. Las ALUs de direcciones 30, están acopladas al fichero de registro de direcciones 26, por vía del conductor común interno 60. Las unidades de acumular y multiplicar 32, están acopladas a los ficheros de registro de datos 28, 29, por vía del conductor común interno 62, y la unidad de campo de bits 34, está acoplada a los ficheros de registro de datos 28, 29, por vía del conductor común interno 64. El dispositivo de secuencia de programas 24 está acoplado, por vía del conductor común de instrucciones 44, a las ALUs de direcciones 30, las DALUs 32, la unidad de campo de bits 23, y el acelerador de expansión de instrucciones 36.
El sistema 10 incluye, además, un conductor común de programa 38, un primer conductor común de datos 40, un segundo conductor común de datos 42, un conductor común periférico 88, un conductor común de acceso a memoria directa (DMA, direct memory access) 84, y un conductor común de interfaz de memoria externa 102. El conductor común de programa 38, está acoplado al dispositivo de secuencia de programas 24 por vía del conductor común 46, a la SIU 14 por vía del conductor común 66, y a la memoria interna 20, 22 por vía de los conductores comunes 72 y 82, respectivamente. Los conductores comunes de datos 40, 42, están acoplados al fichero de registro de direcciones 26 por vía de los conductores comunes 48, 50, a los ficheros de registro de datos 28, 29 por vía de los conductores comunes 52, 54, y al acelerador de expansión de instrucciones 36 por vía de los conductores comunes 56, 58. Los conductores comunes de datos 40, 42, están acoplados a la memoria 20, 22 por vía de los conductores comunes 74-80.
El conductor común de DMA 84, está acoplado la SIU 14 por vía del conductor común 90, al DMA 16 por vía del conductor común 92, a la unidad periférica 18 por vía del conductor común 94, y a las unidades de memoria 20, 22 por vía de los conductores comunes 95 y 97, respectivamente. El conductor común periférico 88, está acoplado a la SIU 14 por vía del conductor común 96, al DMA 16 por vía del conductor común 98, y a la unidad periférica 18 por vía del conductor común 100. El conductor común de memoria externa 102, está acoplado al módulo de interfaz de memoria externa 19, y está acoplado a la memoria externa (no mostrado) en comunicación con el sistema 10. En la realización ilustrada, el conductor común de programa 38 es de una anchura de 138 bits, y los otros conductores comunes 40, 42, 84, y 88 son de una anchura de 32 bits.
En referencia a la figura 2, se revela una realización concreta de registros, dentro del núcleo 12 del sistema 10. Según está ilustrado, el fichero de registro de direcciones 26 incluye los registros R0-R7, el puntero de pila (SP, stack pointer), N0-N3, M0-M2, MCTL, SA0-SA3, LC0-LC3. El dispositivo de secuencia de programa 24 incluye el contador de programa, el registro de estado, y los registros de estado y modo de operación. El fichero de registro de datos 28 incluye los registros D0-D7, y el fichero de registro de datos 29 incluye los registros D8-D15. En una realización alternativa, puede ser usado solo un fichero de registro de datos para ahorrar costes, así como con las configuraciones de uno o dos MAC. En otras aplicaciones de alto rendimiento, más de dos ficheros de registros pueden ser empleados.
En referencia a la figura 3, una realización concreta que tiene un multiplicador acumulador 32 dentro del núcleo 12 es ilustrada. En esta realización, el MAC 32 único está acoplado a los ficheros de registro 28, 29 por vía del conductor común 62. La unidad de campo de bit 34, está acoplada a los ficheros de registro de datos 28, 29 por vía del conductor común 64. Los ficheros de registro de datos 28, 29, están acoplados a los conductores comunes de datos 40, 42, por vía de un módulo cambiador / limitador intermedio 104, y por vía de los conductores comunes 52, 54, 106. El módulo cambiador / limitador 104 es empleado para convertir los datos, en un formato de 40 bits sobre los conductores comunes 106, a un formato de 16 bits sobre los conductores comunes 52, 54.
En referencia a la figura 4, se ilustra una realización concreta que tiene dos acumuladores multiplicadores 32 dentro del núcleo 12. Esta realización es similar a la realización de la figura 3, excepto que hay dos unidades MAC 32, en lugar de un MAC 32. Es necesario un conductor común adicional 62, para acoplar los ficheros de registro de datos 28, 29 a la segunda unidad de MAC 32. Además, los conductores comunes 52, 54 son de 32 bits, en lugar de 16 bits, para portar los datos extra desde los dos MACs. De forma similar, la figura 5 ilustra una realización que tiene cuatro unidades MAC 32. Debe entenderse que la presente invención no está limitada por las configuraciones ejemplares anteriores, y no está limitada al número concreto de unidades MAC 32 de las disposiciones concretas de estas.
En referencia a la figura 6, se ilustra una realización particular de una unidad MAC 32. La unidad MAC 32 incluye un multiplicador 110 y un sumador 112. El multiplicador 110 recibe entrada de datos desde los ficheros de registro de datos 28, 29, y multiplica los elementos de datos 111, 114, para producir una salida multiplicada 116 que se introduce al sumador 112. El sumador suma una segunda entrada de datos 120 y el resultado 116 del multiplicador, para producir un resultado acumulado 122 que sale de vuelta al fichero de registro de datos 28, 29.
En referencia a la figura 7, se revela una realización concreta de la unidad lógica de campo de bits 34. La unidad lógica de capo de bits 34 incluye un cambiador 124, un generador de bit de máscara 126, una unidad lógica 128, y un dispositivo de transmisión simultanea 129. La unidad lógica y de campo de bit, recibe entrada por vía del conductor común 64, y produce una salida que es el resultado de operaciones bien de cambio, de enmascaramiento, por ejemplo retirar ciertos bits desde los datos de entrada, y/o una operación lógica, tal como una operación de operador lógico y, operador lógico o, operador lógico o exclusiva, o inversión. El resultado de la operación seleccionada se suministra como un resultado de cuarenta bits sobre el conductor común de dos sentidos 64, de vuelta al registro seleccionado dentro del fichero de registros 28, 29.
En referencia a la figura 8, se ilustra una realización concreta de la unidad de generación de dirección (AGU). La AGU incluye registros M0-M2, N0-N3, R0-R7, SP desde el fichero de registro de direcciones, y el registro de control modificado (MCTL, modified control registrer). La AGU también incluye unidades de lógica aritmética, de direcciones, 30. La AGU está acoplada a los conductores de dirección común primero y segundo 140, 142 y al conductor de dirección común del programa 138, por vía de los registros 26. Como se ha ilustrado en la figura 8, las ALUs 30 reciben datos desde los diversos registros, llevan a cabo operaciones aritméticas seleccionadas en los datos de entrada, y proporcionan un resultado aritmético a registros de salida seleccionados. Por ejemplo, una dirección almacenada en el registro R0 puede sacada por vía del conductor común 140. Después de esto, el registro R0 puede ser añadido a una salida desde un registro seleccionado N0, y la adición resultante de salida, almacenada en el registro R0.
La figura 9 ilustra un método de ejecución de conducto, que es empleado con el sistema 10 de la figura 1. El método de conducto incluye los pasos de ejecución de extracción previa de programa 200, extracción de programa 202, entrega y descodificación 204, generación de dirección 206, y ejecución 208.
La figura 10 ilustra un conjunto de extracción de instrucciones, y conjuntos de ejecución de instrucciones agrupados. El conjunto de extracción de instrucciones 210, comprende una secuencia de instrucciones a ser ejecutadas. En la realización ilustrada, la secuencia de instrucciones incluye ocho instrucciones, numeradas desde N hasta N+7. En una implementación de equipo físico, esta secuencia de instrucciones puede ser implementada como una, o más, memorias intermedias de instrucciones. Las instrucciones comprendidas en el conjunto de extracción 210, han sido agrupadas estáticamente en el momento de preparación del programa en, por ejemplo, los conjuntos de ejecución 216, 218, y 220. En el ejemplo ilustrado, un primer límite 212 separa las dos últimas instrucciones #N y #N+1 del primer conjunto de ejecución 216, respecto de las cuatro instrucciones #N+2 - #N+5 que abarcan el segundo conjunto de ejecución 218, y un segundo límite 214 separa el segundo conjunto de ejecución 218, respecto de las primeras dos instrucciones #N+6 y #N+7 del tercer conjunto de ejecución 220. Cada una de las instrucciones en el mismo conjunto de ejecución, son entregadas por el sistema al mismo tiempo. Todas las instrucciones en un conjunto de ejecución concreto, pueden ser entregadas o repartidas sustancialmente al mismo tiempo, y en ciertos casos en los que cada una de las instrucciones, en un conjunto de ejecución, tienen la misma cuenta de ciclos, cada una de las instrucciones pueden ser retiradas al final de último ciclo de ejecución.
En referencia a la figura 11, se ilustra una realización concreta de una parte del sistema 10. La realización ilustra una unidad de entrega de prefijo 222, las instrucciones 210, un módulo de entrega de instrucciones 224, diversas unidades de lógica aritmética (DALUs) 32, y unidades de generación de dirección (AGUs) 30. La unidad de entrega de prefijo 222, las instrucciones 210, y el módulo de entrega de instrucciones 224, pueden formar el dispositivo de secuencia de programas 24. En la realización ilustrada, puesto que hay seis unidades de ejecución, el número máximo de instrucciones que pueden ser agrupadas en un conjunto de ejecución sería seis. En el ejemplo ilustrado, las dos primeras instrucciones N, N+1, son instrucciones de prefijo. La instrucción de prefijo es pasada a la unidad de entrega de prefijo 222. La instrucción de prefijo puede incluir una o, como está ilustrado, más de una palabra de prefijo. La unidad de entrega de prefijo 222, convierte las instrucciones de prefijo en señales de control, tal como las señales de extensión de agrupamiento, ejecución condicional, y control de bifurcación de bucle, que son suministradas a la unidad de entrega de instrucciones 224. La unidad de entrega de instrucciones 224 agrupa, después, las instrucciones en conjuntos de ejecución, y lleva a cabo ciertas operaciones, mientras está dirigida mediante señales de control, desde la unidad de entrega de prefijo 222. Después, las instrucciones agrupadas son entregadas de forma simultánea, por vía de un mecanismo de encaminamiento, a las unidades de ejecución apropiadas 30, 32, 34, para decodificación en paralelo y ejecución. Entrega simultánea, significa que la ejecución de cada una de las instrucciones agrupadas es iniciada durante un ciclo de reloj común. En la realización ilustrada del sistema 10, la ejecución de cada una de las instrucciones agrupadas es iniciada durante un ciclo de reloj común, pero una, o más, de las instrucciones agrupadas, pueden completar su ejecución en distintos ciclos de reloj.
En referencia a la figura 12, se ilustra una realización concreta de un sistema de instrucciones 300 que puede ser empleado con el sistema 10. El sistema de instrucciones 300, incluye una palabra de prefijo de instrucción 302, y un palabra de raíz de instrucción 316. El prefijo de instrucción 302 incluye un campo de ejecución condicional 304, y otros campos 312. La raíz de instrucción 316, incluye un campo de selección de operación 306, un campo operando opcional 308, y un campo opcional 310 para otras operaciones, tal como agrupar múltiples instrucciones sin un prefijo. El campo de ejecución condicional 304, contiene información sobre si la raíz de instrucción 316 ha de ser ejecutada de forma condicional. Por ejemplo, si el campo de ejecución condicional tiene un primer valor, entonces la raíz de instrucción será ejecutada de forma incondicional; si tiene un segundo valor, entonces la raíz de instrucción será ejecutada de modo condicional, dependiendo del valor de un bit predeterminado dentro de un registro de estado, o de datos. Cuando hay más de una raíz de instrucción que está agrupada en un conjunto de ejecución, el campo de ejecución condicional 304 se emplea para determinar si se ejecuta, o no, el grupo completo de raíces de instrucción 316. Sin embargo, en una realización alternativa, no mostrada, el campo de ejecución condicional 304 puede controlar la ejecución, selectiva o no, de una o más raíces de instrucción, o subconjuntos de estas, que siguen al prefijo. En otra realización cada uno, de una pluralidad de campos de ejecución condicionales, corresponde a cada una, de una pluralidad de raíces de instrucción, para controlar de forma individual la ejecución de cada raíz de instrucción, en un grupo de instrucciones. En una realización preferida, el prefijo 302 y la raíz de instrucción (o raíces) 316, forman una sola instrucción global 314. En un sistema semejante, si la instrucción 314 ha de ser ejecutada incondicionalmente y el prefijo 302 no se necesita para ninguno de sus otros usos, que se describen aquí más adelante, este puede ser borrado de la instrucción 314.
En referencia a la figura 13, se muestra una realización de un sistema de instrucciones 320. El sistema de instrucciones 320 incluye un prefijo 322, una primera raíz de instrucción 326, y hasta 2^{N} raíces de instrucción 330. El prefijo 322 incluye un campo de grupo 324, que tiene una anchura de N bits. Cada una de la raíces de instrucción 326-330 incluye un campo de selección de operación 331, 332 y otros campos opcionales. El campo de grupo 324 indica cuantas raíces de instrucción 326-330, inmediatamente a continuación del prefijo 322, han de ser ejecutadas en paralelo. Así, el campo de grupo 324 en el prefijo 322, agrupa de forma explícita las raíces de instrucción en conjuntos de ejecución. En la realización preferida, raíces de instrucción que tienen una diversidad de valores de campo de selección de operación, pueden ser agrupadas con otras raíces de instrucción, mientras que otros valores no pueden ser agrupados debido a limitaciones del equipo físico, o a la sincronización. Como se ilustra en la figura 14, las palabras de instrucción 346, 348 están combinadas con el prefijo 342 para constituir un grupo de instrucciones 358, mientras que la raíz de instrucción 350 no está agrupada, y forma un grupo de instrucciones de una sola palabra 360.
En referencia a la figura 15, se ilustra otra realización de un sistema de instrucciones. El sistema de instrucciones incluye un prefijo 380, y una raíz de instrucción 384. El sistema de instrucciones trabaja en un operando de datos de anchura variable 388, tal como un elemento de datos de 32 bit o 64 bit transferido a, o procedente de, la memoria. El prefijo 380 incluye un campo de modificación de longitud de operando 382, y la raíz de instrucción 384 incluye un campo de selección de operación 386. El prefijo 380, la raíz de instrucción 384, y el operando 388, forman juntos una instrucción 390. El campo de modificación de longitud de operando 382, indica si el operando 388 tiene una primera longitud predeterminada, o una segunda longitud modificada. Por ejemplo, donde el campo de selección de operación 386 indique que la raíz de instrucción 384 es una operación de desplazamiento para una palabra de 16 bit, y donde el campo de modificación de longitud 382 de operando esté vacío, el operando tiene una longitud de 16 bits. Sin embargo, si el campo de modificación de longitud de operando 382 está activado, entonces la operación es una operación de desplazamiento para una palabra de 32 bits, y el operando tiene una longitud de 32 bits. Codificando el campo de modificación de longitud en la palabra de prefijo 380, el número de operaciones que puede ser seleccionado para ejecución se incrementa, pero sin tener que añadir ninguna longitud extra al campo de selección de operación 386, dentro de la raíz de instrucción 384, mediante lo que se reduce el tamaño de código en ciertas circunstancias.
En referencia a la figura 16, se muestra una realización de un sistema de instrucciones 400. El sistema de instrucciones 400 incluye un prefijo 402, y una raíz de instrucción 408. El prefijo 402 incluye uno, o más, campos de selección de bloque de registro, tal como un campo de selección de bloque de registro 404, y un segundo campo de selección de bloque de registro 406. Los campos de selección de bloque de registro 404, 406 son de N bits de longitud. La palabra de instrucción 408 incluye campos de selección de registro de M bits 410, 412. El primer campo de selección de bloque de registro 404, puede ser empleado para indicar un bloque concreto de registro, que ha de ser usado para una primera unidad de ejecución, tal como una primera unidad DALU 32. El segundo campo de selección de bloque de registro 406 puede ser empleado para indicar un bloque concreto de registros, que va a ser usado para una segunda unidad de ejecución, tal como una segunda unidad DALU 32. En una realización concreta, N es 1 y M es 3. En esta realización, hay dos distintos bloques de registro, tal como los ficheros de registro 28 y 29 del sistema 10, y cada uno de los bloques de registro tiene ocho registros. De este modo, los registros del bloque superior, tal como los registros R8-R15 del fichero 29, pueden ser accedidos selectivamente, empleando los campos de selección de bloque de registro 404-406 de la palabra prefijo 402, en lugar de usar el espacio extra dentro de la palabra de instrucción 408, ahorrando de ese modo espacio de memoria de palabra de instrucción bajo ciertas circunstancias.
En referencia a la figura 17, se muestra una realización de un sistema de instrucciones 420 con palabras de prefijo de longitud variable. El sistema de instrucciones 420 incluye una primera palabra de prefijo 422, una segunda palabra de prefijo 424, y una palabra de prefijo número N, 426. Cada palabra de prefijo 422-426 incluye un campo de longitud de prefijo 428-432 respectivo. Los campos de longitud de prefijo 428-432 constituyen una cadena, indicando cada uno si la cadena de palabra de prefijo está completa, o si hay palabras de prefijo adicionales. De este modo, pueden ser unidas muchas palabras de prefijo juntas en una cadena de longitud variable. Sin embargo, en la realización preferida la primera palabra de prefijo 422 no incluye el campo longitud, puesto que las palabras de prefijo primera y segunda tienen otros campos, que indican de forma indirecta si el prefijo es de una de longitud, o de dos.
Una realización concreta de un sistema de instrucciones, que usa una instrucción de prefijo codificado que combina muchos de los campos de prefijo ilustrados, se muestra a continuación. En esta realización, hay un formato de codificación de prefijo de una palabra, y un formato de codificación de prefijo de dos palabras.
En el formato de codificación de prefijo de una palabra, el prefijo de una palabra tiene el siguiente esquema binario:
1001 aaaa 11|0- pjcc
donde:
aaaa: número de palabras de instrucción a ser agrupadas incluida la palabra de prefijo, menos 1
si aaaa= =0: \begin{minipage}[t]{115mm} esto es una instrucción NOP, que no es entregada para una característica 4 DALU, valores válidos son de 0 a 6 para un sistema 4 DALU\end{minipage}
cc: ejecución condicional del conjunto de ejecución completo
00 ejecutado incondicionalmente
01 reservado
10 ejecutado condicionalmente, si el registro de estado T está activado
11 ejecutado condicionalmente, si el registro de estado T está desactivado
pj: dos bits empleados en un mecanismo de bucle
"-": reservado para uso ulterior, tal como información de bucle adicional.
En la forma de dos palabras, el prefijo tiene el siguiente formato:
\newpage
\hskip4.3cm src0 \hskip1mm src1 \hskip0.5mm dest
codificando: 0011 aaaa TTHH pjcc 101M bBeE bBeE bBeE
donde:
aaaa, cc, pj: igual que para prefijo de una palabra
Por ejemplo:
\hskip2cm aaaa==3 -> prefijo de dos palabras + 2 palabras de instrucción agrupadas
M: reservado para expansión ulterior para palabras de prefijo más largas.
0: el prefijo es de dos palabras
1: el prefijo es de al menos 3 palabras de longitud (al menos una palabra adicional)
EEE: \begin{minipage}[t]{135mm} Expansión de registro de datos para UNIDAD DALU 0; cada uno de los bits E sirve como un cuarto bit de codificación de campo de registro, pasando efectivamente FFF -> FFFF, etc.\end{minipage}
- -1: reg de datos superior usado para el campo FFF
-1-: reg de datos superior usado para el campo J2
1- -: reg de datos superior usado para el campo J1
\hskip2cm Nota: FFF, J2, J1 son campos de operando.
\hskip2cm Por ejemplo
\hskip5cm DALU DJ1, DJ2, DF
En el caso de instrucciones de unidad DALU de dos operandos, solo se usa -EE.
En el caso de instrucciones de unidad DALU de un operando, solo se usa - -E.
eee: lo mismo que EEE, para la UNIDAD DALU 1
BBB: lo mismo que EEE, para la UNIDAD DALU 2.
bbb: lo mismo que EEE, para la UNIDAD DALU 3
HH: Expansión de registro de datos para instrucciones AGU.
-1 \hskip0.5cm reg de datos superior usado para la operación MOVE en AGU 0
1- \hskip0.5cm reg de datos superior usado para la operación MOVE en AGU 1
\begin{minipage}[t]{135mm} Por ejemplo, en el sistema 10, los registradores en el fichero de registro 29, son empleados en lugar del fichero de registro 28 cuando el bit H está puesto a 1.\end{minipage}
TT: \begin{minipage}[t]{135mm} instrucciones MOVE de incremento de escala para transferencias más extensas; cada bit activa una unidad AGU. Para cada unidad, el bit aplica si la unidad también decodifica una de las instrucciones: \end{minipage}
\hskip2cm MOVE.2W, MOVE.2F, MOVE.L
Si el bit T es 0: dejar estas instrucciones como se definieron originalmente
Si el bit T es 1:
\hskip1.2cm MOVE.2W -> MOVE.4W
\hskip1.2cm MOVE.2F -> MOVE.4F
\hskip1.2cm MOVE.2F -> MOVE.4F
\hskip1.2cm MOVE.L -> MOVE.2L
-1 \hskip0.8cm hacer que la instrucción en AGU0 sea interpretada como un move de mayor anchura
1- \hskip0.8cm hacer que la instrucción en AGU1 sea interpretada como un move de mayor anchura
En principio estas combinaciones están reservadas para lo siguiente, si está definido
\hskip1.2cm MOVE.2L
\hskip1.2cm MOVE.4W
\hskip1.2cm MOVE.4F
De acuerdo con otra realización, ahora se revela una método de agrupar instrucciones sin usar una instrucción de prefijo. En referencia a la figura 18, una instrucción sin palabra de prefijo puede ser empleada para llevar a cabo agrupamiento estático, como se ha ilustrado. La instrucción 450 incluye una, o más, palabras de instrucción, tal como una primera palabra de instrucción 452, y una segunda palabra de instrucción 454. La primera palabra de instrucción 452 contiene un campo de selección de operación 456, también aludido como un opcode, que puede ser empleado para seleccionar una pluralidad de distintas operaciones, que pueden ser llevadas a cabo en un sistema como es el sistema 10. El campo de selección de operación 456, incluye un campo secundario de tipo 458, que tiene una anchura de n bits. En una realización concreta, n es igual a dos. Si bien se ha ilustrado, como ejemplo, una instrucción de dos palabras de instrucción, el campo secundario de tipo dentro del campo de selección de operación, y el uso del campo secundario de tipo como se describe aquí, es aplicable a palabras sueltas, y a instrucciones de múltiples palabras de muchos tipos.
En referencia a la figura 19, se presenta un diagrama que ilustra como se puede, en un mapa, hacer corresponder a los distintos tipos de instrucciones que están codificados mediante el campo de selección de operación dentro de una instrucción, al valor dentro del campo secundario de tipo. El campo secundario de tipo se usa, en general, para proporcionar agrupamiento e información de instrucciones de múltiples palabras, para un conjunto de ejecución con múltiples instrucciones y/o múltiples palabras de instrucción. Las instrucciones que pueden ser ejecutadas están divididas, a un nivel superior, en instrucciones de tipo I e instrucciones de tipo II. Las instrucciones de tipo I pueden ser ejecutadas de un modo bien secuencial o en paralelo, por ejemplo las instrucciones de tipo I pueden ser agrupadas con otras instrucciones, para su ejecución en un conjunto de ejecución. Las instrucciones de tipo II pueden ser ejecutas de forma secuencial, pero tienen un capacidad limitada para ser ejecutadas en paralelo, o pueden no ser agrupables en absoluto. Algunas instrucciones de tipo II 510, no pueden ser agrupadas con ninguna otra instrucción. Un ejemplo de una de tales instrucciones no agrupables, es la instrucción de dormitar, que coloca al procesador de datos 10 en un modo de reserva de potencia.
Como se muestra en la figura 19, para las instrucciones de tipo I que han de ser ejecutadas de forma secuencial, el campo secundario de tipo se fija a un primer valor, como es 01 para el segmento 502 en la realización ilustrada. Para las instrucciones de tipo I que van a ser ejecutadas en paralelo con otras instrucciones de una palabra, el campo secundario de tipo se fija a un segundo valor, como es 00, segmento 504 en el diagrama. Al menos una instrucción de tipo II es asignada a un tercer valor, como es bien 10, segmento 510 u, opcionalmente, un cuarto valor, por ejemplo 11, segmento 512. Empleando el campo secundario de tipo con dos bits, como se muestra, para agrupamiento de instrucciones, conduce a una reducción en el espacio de opcode utilizable para la selección de instrucciones. Por ejemplo, en un sistema de los anteriores, si se dedicaba un solo bit para información de agrupamiento, el espacio de opcode se reduciría, de modo inconveniente, en un cincuenta por ciento (%50). Con un sistema de dos bits, el espacio de opcode se reduciría un veinticinco por ciento (%25).
Sin embargo en la realización ilustrada, para conservar espacio de opcode útil, ciertas instrucciones de múltiples palabras reciclan una parte del espacio de opcode para el segundo valor, es decir 00, del campo secundario de tipo. El segmento 506, para instrucciones de múltiples palabras que van a ser ejecutadas en paralelo con al menos otra instrucción, y el segmento 508, para instrucciones de múltiples palabras que han de ser ejecutadas de modo secuencial, usan una parte del cuadrante de opcode que forma parte de las instrucciones de una palabra de tipo I paralelo. Un método de implementar esta técnica de reciclaje, es usar combinaciones de instrucciones que no serían permitidas de otro modo, tal como combinar una instrucción de tipo I agrupable con una instrucción de tipo II no agrupable. Empleando combinaciones de instrucciones de otro modo contradictorias, pueden ser codificadas secuencias de múltiples palabras. De este modo, se reserva valioso espacio de opcode, lo que supone un sistema de instrucciones mejorado.
A continuación, se presenta un ejemplo de distintos tipos de instrucciones, descritas en general arriba. Las instrucciones de ensamblador reales están entre paréntesis.
Tipo I secuencial 502: incrementar registro D0 (inc d0)
Tipo I paralelo 504: incrementar registro D0 y mover palabra en la dirección del registro r0, al registro d1 (inc d0, move.w (r0), d1) (dos instrucciones de una sola palabra emparejadas)
Múltiples palabras 506: mover dirección en el registro, después de añadir la salida al registro d3 (inc d0, move.b (R3+1000), d3) (una instrucción de una sola palabra y una de múltiples palabras)
Múltiples Palabras Secuencial 508: sumar 1000 a d0 y almacenar en d1 (add #1000, d0, d1)
Tipo II 510 ó 512: hacer una pausa en la ejecución (dormitar).
Mientras que las instrucciones de Tipo II en los segmentos 510, 512 pueden ser del mismo tipo, en una realización concreta las instrucciones podrían estar divididas, de tal forma que las instrucciones sin agrupamiento permitido sean situadas en el segmento 510, y las instrucciones con agrupamiento limitado permitido sena situadas en el segmento 512.
Con instrucciones que tienen el campo secundario de tipo, según ha sido descrito arriba, puede emplearse reglas generales para instrucciones de agrupamiento. Un ejemplo de tales reglas es:
1.- Palabras de instrucción que tienen un campo secundario de tipo de 00, están seguidas por palabras de instrucción adicionales a ser agrupadas.
2.- Palabras de instrucción que tienen un campo secundario de tipo distinto de 00, son la última palabra en la instrucción.
3.- Un 10 en la última palabra de instrucción donde hay al menos dos palabras de instrucción en el conjunto de ejecución, indica que hay al menos una intrusión de múltiple palabra a ser ejecutada.
4.- Un bit después del campo secundario de tipo en la segunda palabra en un grupo de instrucciones, puede ser empleado para distinguir instrucciones de dos palabras emparejadas, frente a instrucciones de tres palabras. En una realización, el bit distintivo es el bit inmediatamente siguiente al campo secundario de tipo, en la segunda palabra de instrucción de un grupo de palabras de instrucción. Emplear bits adicionales, en las mismas u otras palabras de instrucción, puede distinguir otras instrucciones, tal como instrucciones de cuatro palabras frente a instrucciones de tres palabras, e instrucciones de una o dos palabras apareadas.
En una realización ilustrativa concreta, hay 3 formas de llevar información de agrupamiento para instrucciones de agrupamiento, a conjuntos de ejecución:
- usar los 2-3 bits más significativos en las instrucción - - no se usa prefijo.
- usar un prefijo de 1-palabra para un conjunto de ejecución
- usar un prefijo de 2-palabras para un conjunto de ejecución
El siguiente algoritmo de agrupamiento elige que opción emplear (cuando las instrucciones a ser agrupadas están dadas) para reducir el tamaño del código de instrucciones.
El algoritmo es:
- se usa los registros d8-d15 en el conjunto de ejecución?
\text{*} si -> usar prefijo de 2-palabras
\text{*} no -> continuar
- está el conjunto ejecutado de forma condicional (Ifc), o debería llevar información de bucle?
\text{*} si -> usar prefijo de 1-palabra
\text{*} no ->continuar
- tiene el conjunto de ejecución solo una instrucción?
\text{*} si -> no se necesita prefijo
\text{*} no -> continuar
- son las instrucciones en el conjunto, agrupables de acuerdo con su tipo?
\text{*} si -> no se necesita prefijo - codificar agrupamiento usando solo los 2 bits más significativos
\text{*} no -> usar prefijo 1-w
A continuación se revela, en forma tabular, mayor descripción de una realización de agrupamiento estático.
Codificación de tipo, de instrucciones de una palabra
2 bits más significativos de
campo secundario de tipo 458: tipo agrupamiento permitido
00 1 agrupado con la siguiente instrucción
01 1 \begin{minipage}[t]{95mm} fin del conjunto de ejecución - - puede ser agrupado con instrucciones previas tipo 1 (00) \end{minipage}
11 2 \begin{minipage}[t]{95mm} fin del conjunto de ejecución - - puede ser agrupado con instrucciones previas tipo 1 (00) \end{minipage}
(versión no completamente agrupable)
10 4 única instrucción en el conjunto, no puede ser agrupada
Identificación de dos y tres palabras
(L - última instrucción en el conjunto de instrucciones)
palabra L-1 palabra L
00 10 \begin{minipage}[t]{110mm} Esta es una situación ilegal para instrucciones de una o dos palabras, puesto que 10 no puede ser agrupado con 00. Por lo tanto, esta situación se mantiene para instrucciones de 2 \binampersand 3 palabras. \end{minipage}
palabra L-2 palabra L-1 palabra L
no importa 000 10 \begin{minipage}[t]{90mm} (L-1, L) es una instrucción de dos palabras (tipo 3) - - puede ser agrupada con la instrucción previa \end{minipage}
no 00 001 10 \begin{minipage}[t]{90mm} dos palabras, no agrupable (tipo 4). (la palabra L-2 pertenece al conjunto de ejecución previo) \end{minipage}
00 001 10 \begin{minipage}[t]{90mm} (L-2, L-1, L) es una instrucción de grupo de tres palabras (tipo 3) - - puede ser agrupada con la instrucción previa \end{minipage}
A continuación se resume ciertos aspectos adicionales de la presente revelación.
En un procesador de datos adaptado para llevar a cabo operaciones seleccionadas, un sistema de instrucciones incluye una palabra de prefijo, que tiene un campo de ejecución condicional, para seleccionar una condición bajo la que, el procesador de datos, llevará a cabo una operación a ser seleccionada, y una palabra de instrucción que tiene un campo de selección de operación, para seleccionar la operación a ser realizada por el procesador de datos. El campo de ejecución condicional puede seleccionar una condición, bajo la que el procesador de datos no llevará a cabo la operación seleccionada. En una realización, la palabra de prefijo y la palabra de instrucción comprenden una instrucción, o un paso de ejecución, cuya realización por parte del procesador de datos está condicionada al campo de ejecución condicional de la mencionada palabra de prefijo. El instrucción puede incluir más de una palabra de instrucción. En otra realización, el prefijo es opcional en la instrucción.
Un sistema para dirigir un procesador de datos, adaptado para realizar operaciones seleccionadas, donde el sistema incluye una palabra de prefijo que tiene un campo de ejecución condicional, para seleccionar una condición, bajo la cual el procesador de datos llevará a cabo la operación a ser seleccionada; y una palabra de instrucción que tiene un campo de selección de operación, para seleccionar la operación a ser llevada a cabo por el procesador de datos. El campo de ejecución condicional, puede seleccionar una condición bajo la cual el mencionado procesador de datos no llevará a cabo la operación seleccionada. En una realización, la palabra de prefijo y la palabra de instrucción comprenden una instrucción cuya realización, por parte del procesador de datos, está condicionada al campo de ejecución condicional de la palabra de prefijo. La instrucción puede incluir más de una palabra de instrucción. También, el prefijo puede ser opcional en la instrucción.
En otra realización, la actual revelación se refiere a un sistema para dirigir un procesador de datos adaptado para llevar a cabo operaciones seleccionadas, donde el sistema incluye una palabra de prefijo, que tiene un campo de ejecución condicional para seleccionar una condición, bajo la cual el procesador de datos llevará a cabo la operación a ser seleccionada, y una palabra de instrucción, que tiene un campo de selección de operación para seleccionar la mencionada operación a ser llevada a cabo por el procesador de datos. El campo de ejecución condicional, puede seleccionar una condición bajo la cual el procesador de datos no llevará a cabo la mencionada operación seleccionada.
La palabra de prefijo y la palabra de instrucción pueden comprender una instrucción, cuya realización por parte del procesador de datos está condicionada al campo de ejecución condicional de la palabra de prefijo. La instrucción puede incluir más de una palabra de instrucción.
Otra realización se refiere a un sistema de instrucciones en un procesador de datos, adaptado para llevar a cabo operaciones en operandos que tengan longitudes primera y segunda. El sistema de instrucciones incluye una palabra de prefijo, que tiene un campo de modificación de longitud de operando, para modificar una operación a ser seleccionada, para que se realice en un operando que tiene la mencionada segunda longitud, y una palabra de instrucción que tiene un campo de selección de operación, para seleccionar la operación a ser llevada a cabo en un operando que tiene la mencionada primera longitud. En una realización, los operandos tienen una pluralidad de longitudes, el campo de selección de operación selecciona una operación a ser realizada en un operando que tiene una longitud predeterminada, de entre la mencionada pluralidad de longitudes, y el campo de modificación de longitud de operando, modifica la operación para que sea llevada a cabo en un operando que tiene una longitud distinta, de entre la mencionada pluralidad de longitudes.
En un procesador de datos, un sistema de instrucciones incluye una palabra de prefijo que tiene un campo de grupo de instrucciones para seleccionar una longitud de un grupo de instrucciones, y una pluralidad de palabras de instrucción, teniendo cada palabra de instrucción un campo de selección de operación, para seleccionar una operación a ser llevada a cabo por el mencionado procesador de datos. El procesador de datos inicia, simultáneamente, la ejecución de todas las operaciones seleccionadas por las palabras de instrucción comprendidas en el mencionado grupo. La palabra de prefijo y la palabra de instrucción, pueden constituir una instrucción. En una realización, la palabra de prefijo precede cada palabra de instrucción en la mencionada instrucción. En otra realización, el campo de grupo de instrucciones, es de longitud, n y puede agrupar 2n palabras de instrucción, de la mencionada pluralidad de palabras de instrucción. También hay ciertas palabras de instrucción que no pueden ser agrupadas con ninguna de las palabras de instrucción, de la pluralidad de palabras de instrucción.
Se proporciona un sistema para dirigir un procesador de datos. El sistema incluye una raíz de instrucción y un prefijo de instrucción. La raíz de instrucción, tiene un campo de selección de operación para seleccionar una operación a ser realizada mediante el mencionado procesador. El prefijo de instrucción tiene un campo, seleccionado de al menos uno de los siguientes: un campo de ejecución condicional, para seleccionar una condición bajo la cual el procesador de datos llevará a cabo la mencionada operación seleccionada, un campo de modificación de longitud de operando, para modificar la operación seleccionada al objeto de que sea llevada a cabo en un operando que tenga una longitud diferente, un campo de grupo de instrucciones, para seleccionar una longitud de palabra de una grupo de instrucciones que incluye la raíz de instrucción, un campo de sección de longitud de instrucción, para seleccionar un longitud de instrucción del mencionado prefijo de instrucción. La instrucción puede incluir más de una raíz de instrucción. El prefijo precede, típicamente, al menos una de las raíces de instrucción.
Un sistema para dirigir un procesador de datos que tiene una pluralidad de registros. El sistema incluye una raíz de instrucción, que tiene un campo de selección de registro de anchura m, para seleccionar uno de 2^{m} registros en el mencionado procesador de datos; y un prefijo de instrucción que tiene un campo de extensión de selección de registro de anchura n, para extender la anchura del mencionado campo de selección de registro al objeto de seleccionar uno de 2^{m+n} registros, en el mencionado procesador de datos.
Así, ha sido aquí descrita una realización que incluye, al menos, una realización preferida de un método, y aparato, mejorados, para instrucciones de procesador para agrupamiento de datos, y realizaciones de sistemas de instrucciones. Será manifiesto, para aquellos cualificados en el arte, que la materia revelada puede ser modificada de numerosas formas, y puede asumir muchas otras realizaciones, además de las formas preferidas, específicamente expuestas y descritas arriba. Por ejemplo, los elementos específicos, y configuración, del procesador de datos 10, son descritos solo a modo de ejemplo. Pueden ser empleados muchos otros sistemas alternativos. Por ejemplo, el DMA 16, la memoria 20, 22, y ciertas unidades de ejecución en el núcleo 12 son opcionales.

Claims (8)

1. Un sistema de procesamiento de datos (10), que tiene un núcleo de procesamiento de datos (30, 32, 34, 36) y un sistema de instrucciones (24), el sistema de instrucciones (24) comprendiendo:
una raíz de instrucciones, que tiene un campo de selección de operación, para seleccionar una operación a ser llevada a cabo por el mencionado núcleo de procesador de datos (30, 32, 34, 36); caracterizado por un prefijo de instrucción, que tiene una longitud que puede seleccionarse, para permitir al prefijo de instrucción alojar a, al menos, un campo, que puede seleccionarse a partir de una pluralidad de campos.
2. Un sistema de procesamiento (10) de la reivindicación 1, donde uno de los campos seleccionables, es un campo de ejecución condicional, y donde la raíz de instrucción y el prefijo de instrucción comprenden una instrucción cuya realización, mediante el mencionado núcleo de procesador de datos (30, 32, 34, 36), está condicionada al mencionado campo de ejecución condicional del mencionado prefijo de instrucción.
3. Un sistema de procesamiento (10) de la reivindicación 2, donde la mencionada instrucción incluye más de una raíz de instrucción.
4. Un sistema de procesamiento (10), acorde a cualquiera de las reivindicaciones precedentes, que comprende, además, 2^{n} bloques de 2^{m} registros, donde:
el prefijo de instrucción tiene un campo de selección de bloque de registro, de anchura n, para seleccionar uno de los 2^{n} bloques de los mencionados registros; y
la raíz de instrucción tiene un campo de selección de registro de anchura m, para seleccionar uno de los 2^{m} registros, en el mencionado un bloque seleccionado, de los mencionados bloques.
5. Un sistema de procesamiento (10), de acuerdo con cualquiera de las reivindicaciones precedentes, donde:
el campo de selección de operación, está configurado para seleccionar una operación a ser realizada, en un operando que tiene una primera longitud; y
el prefijo de instrucciones tiene un campo de modificación de anchura de operando, para modificar la mencionada operación seleccionada, para que sea realizada en un operando que tiene una segunda anchura.
6. Un sistema de procesamiento (10) acorde a cualquiera de las reivindicaciones precedentes, donde
el prefijo de instrucción, tiene un campo de grupo de instrucciones para seleccionar una pluralidad de las mencionadas raíces de instrucción para abarcar un grupo, iniciando simultáneamente, el núcleo de procesador de datos, la ejecución de todas las operaciones seleccionadas por el mencionado grupo.
7. Un sistema de procesamiento (10) acorde a cualquiera de las reivindicaciones precedentes, donde el núcleo del procesador de datos (30, 32, 34, 36) está dispuesto para ejecutar los tipos primero y segundo de operaciones, de modo secuencial, y una pluralidad de operaciones del mencionado primer tipo, en paralelo, donde el campo de selección de operación está dispuesto para seleccionar uno de los mencionados primero y segundo tipos de operación, para ser ejecutado por el mencionado núcleo de procesador de datos (30, 32, 34, 36), teniendo el campo de selección de operación, un campo secundario de tipo, de anchura n, cuyos valores están asignados como sigue:
un primer valor, si el mencionado primer tipo de operación ha de ser ejecutado de modo secuencial;
un segundo valor, si el mencionado primer tipo de operación ha de ser ejecutado en paralelo; y
un tercer valor seleccionado a partir de los restantes (2^{n}-2) valores, si el mencionado segundo tipo de operación ha de ser ejecutado.
8. Un sistema de procesamiento (10), acorde con cualquiera de las reivindicaciones 1 a 6, donde el núcleo del procesador de datos (30, 32, 34, 36) está adaptado para ejecutar los tipos primero y segundo de operaciones de modo secuencial, y una pluralidad del mencionado primer tipo de operaciones en paralelo, el campo de selección de operación está dispuesto para seleccionar uno de los mencionados primer y segundo tipos de operaciones, para ser ejecutadas por el mencionado núcleo de procesador, teniendo el campo de selección de operación un campo secundario de tipo, campo secundario de tipo que tiene:
un primer valor, para operaciones del mencionado primer tipo a ser ejecutadas de modo secuencial;
un segundo valor, para operaciones del mencionado primer tipo a ser ejecutadas en paralelo, y para, al menos, una operación seleccionada del mencionado segundo tipo a ser ejecutada de modo secuencial.
ES99118986T 1998-10-13 1999-09-27 Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas. Expired - Lifetime ES2221282T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US170690 1998-10-13
US09/170,690 US6418527B1 (en) 1998-10-13 1998-10-13 Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods

Publications (1)

Publication Number Publication Date
ES2221282T3 true ES2221282T3 (es) 2004-12-16

Family

ID=22620876

Family Applications (1)

Application Number Title Priority Date Filing Date
ES99118986T Expired - Lifetime ES2221282T3 (es) 1998-10-13 1999-09-27 Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas.

Country Status (10)

Country Link
US (1) US6418527B1 (es)
EP (1) EP0994413B1 (es)
JP (1) JP2000122864A (es)
KR (1) KR100690225B1 (es)
CN (1) CN1129843C (es)
AT (1) ATE266226T1 (es)
DE (1) DE69916962T2 (es)
ES (1) ES2221282T3 (es)
SG (1) SG95605A1 (es)
TW (1) TW497073B (es)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1039375A1 (en) * 1999-03-19 2000-09-27 Motorola, Inc. Method and apparatus for implementing zero overhead loops
US6606700B1 (en) * 2000-02-26 2003-08-12 Qualcomm, Incorporated DSP with dual-mac processor and dual-mac coprocessor
AU2001245520A1 (en) * 2000-03-08 2001-09-17 Sun Microsystems, Inc. Vliw computer processing architecture having a scalable number of register files
US6725360B1 (en) * 2000-03-31 2004-04-20 Intel Corporation Selectively processing different size data in multiplier and ALU paths in parallel
US7010788B1 (en) * 2000-05-19 2006-03-07 Hewlett-Packard Development Company, L.P. System for computing the optimal static schedule using the stored task execution costs with recent schedule execution costs
GB2366643B (en) 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
US6877084B1 (en) * 2000-08-09 2005-04-05 Advanced Micro Devices, Inc. Central processing unit (CPU) accessing an extended register set in an extended register mode
US7472257B2 (en) * 2001-11-26 2008-12-30 Nxp B.V. Rerouting VLIW instructions to accommodate execution units deactivated upon detection by dispatch units of dedicated instruction alerting multiple successive removed NOPs
US7697946B2 (en) * 2002-06-04 2010-04-13 Forster Ian J Reflective communication using radio-frequency devices
JP3627725B2 (ja) * 2002-06-24 2005-03-09 セイコーエプソン株式会社 情報処理装置及び電子機器
US6944749B2 (en) * 2002-07-29 2005-09-13 Faraday Technology Corp. Method for quickly determining length of an execution package
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
JP2007519052A (ja) * 2003-06-25 2007-07-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 命令制御式データ処理装置
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US7873815B2 (en) 2004-03-04 2011-01-18 Qualcomm Incorporated Digital signal processors with configurable dual-MAC and dual-ALU
US20060149926A1 (en) * 2004-12-23 2006-07-06 Yuval Sapir Control words for instruction packets of processors and methods thereof
US20060149922A1 (en) * 2004-12-28 2006-07-06 Ceva D.S.P. Ltd. Multiple computational clusters in processors and methods thereof
US20060150171A1 (en) * 2004-12-28 2006-07-06 Ceva D.S.P. Ltd. Control words for instruction packets of processors and methods thereof
US7350040B2 (en) * 2005-03-03 2008-03-25 Microsoft Corporation Method and system for securing metadata to detect unauthorized access
US7526633B2 (en) * 2005-03-23 2009-04-28 Qualcomm Incorporated Method and system for encoding variable length packets with variable instruction sizes
US7793078B2 (en) * 2005-04-01 2010-09-07 Arm Limited Multiple instruction set data processing system with conditional branch instructions of a first instruction set and a second instruction set sharing a same instruction encoding
JP5217431B2 (ja) * 2007-12-28 2013-06-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
GB2486737B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
GB2565242B (en) * 2010-12-24 2019-04-03 Qualcomm Technologies Int Ltd Encapsulated instruction set
WO2012131437A1 (en) * 2011-03-30 2012-10-04 Freescale Semiconductor, Inc. Integrated circuit device and method for enabling cross-context access
US8898433B2 (en) * 2012-04-26 2014-11-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Efficient extraction of execution sets from fetch sets
KR102210997B1 (ko) * 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치
US9733940B2 (en) 2014-11-17 2017-08-15 International Business Machines Corporation Techniques for instruction group formation for decode-time instruction optimization based on feedback
US9940242B2 (en) * 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US10402199B2 (en) 2015-10-22 2019-09-03 Texas Instruments Incorporated Conditional execution specification of instructions using conditional extension slots in the same execute packet in a VLIW processor
US20170192788A1 (en) * 2016-01-05 2017-07-06 Intel Corporation Binary translation support using processor instruction prefixes
CN114004349A (zh) * 2016-08-05 2022-02-01 中科寒武纪科技股份有限公司 一种能支持不同位宽运算数据的运算单元、方法及装置
US10761849B2 (en) * 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
CN111813446A (zh) * 2019-04-12 2020-10-23 杭州中天微系统有限公司 一种数据加载和存储指令的处理方法和处理装置
EP4278256A1 (en) * 2022-01-26 2023-11-22 Google LLC Parallel decode instruction set computer architecture with variable-length instructions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0827716B2 (ja) * 1985-10-25 1996-03-21 株式会社日立製作所 データ処理装置及びデータ処理方法
EP0221577B1 (en) * 1985-11-08 1996-01-17 Nec Corporation Microprogram control unit
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
JPH04156613A (ja) * 1990-10-20 1992-05-29 Fujitsu Ltd 命令バッファ装置
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
DE69427265T2 (de) * 1993-10-29 2002-05-02 Advanced Micro Devices Inc Superskalarbefehlsdekoder
DE69428004T2 (de) 1993-11-05 2002-04-25 Intergraph Corp Superskalare Rechnerarchitektur mit Softwarescheduling
EP0974894B1 (en) * 1993-11-05 2002-02-27 Intergraph Corporation Instruction cache associative cross-bar switch
US5630083A (en) * 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
US5822778A (en) * 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
JPH09265397A (ja) * 1996-03-29 1997-10-07 Hitachi Ltd Vliw命令用プロセッサ
US6275927B2 (en) * 1998-09-21 2001-08-14 Advanced Micro Devices. Compressing variable-length instruction prefix bytes

Also Published As

Publication number Publication date
TW497073B (en) 2002-08-01
US20020056035A1 (en) 2002-05-09
DE69916962D1 (de) 2004-06-09
DE69916962T2 (de) 2005-04-07
US6418527B1 (en) 2002-07-09
KR100690225B1 (ko) 2007-03-12
JP2000122864A (ja) 2000-04-28
SG95605A1 (en) 2003-04-23
EP0994413A3 (en) 2002-01-23
KR20000029005A (ko) 2000-05-25
CN1129843C (zh) 2003-12-03
CN1250906A (zh) 2000-04-19
EP0994413A2 (en) 2000-04-19
EP0994413B1 (en) 2004-05-06
ATE266226T1 (de) 2004-05-15

Similar Documents

Publication Publication Date Title
ES2221282T3 (es) Sistema de procesamiento de datos con ejecucion condicional de instrucciones compuestas extendidas.
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
EP2145249B1 (en) Compact instruction set encoding
US20060206690A1 (en) MAXQ microcontroller
JPH11249894A (ja) 処理デバイスに命令ストリームを供給する方法及び装置
EP3314437A1 (en) Verifying branch targets in a block based processor
KR100462951B1 (ko) Risc 구조를 갖는 8 비트 마이크로콘트롤러
CN101438235B (zh) 将硬件结束循环信息编码到指令上
CN107851013B (zh) 数据处理装置和方法
US5805850A (en) Very long instruction word (VLIW) computer having efficient instruction code format
ES2396800T3 (es) Microprocesador o microcontrolador potenciado
US20120017067A1 (en) On-demand predicate registers
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
US9104426B2 (en) Processor architecture for processing variable length instruction words
JP3578267B2 (ja) マイクロ命令をもとにプログラマブル命令を実行するハードウェア装置
CN116893848A (zh) 对指令解码集群的可变长度指令引导
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
US9176738B2 (en) Method and apparatus for fast decoding and enhancing execution speed of an instruction
WO2004012079A1 (ja) 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置
EP1299803B1 (en) Register addressing
WO2007057831A1 (en) Data processing method and apparatus
Lemieux Introduction to ARM thumb
JPH11282674A (ja) プロセッサ
US20100115239A1 (en) Variable instruction width digital signal processor
CN101369223A (zh) 指令编码方法和处理器