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
Links
- 238000012545 processing Methods 0.000 title claims description 22
- 239000002131 composite material Substances 0.000 title 1
- 238000012986 modification Methods 0.000 claims abstract description 11
- 230000004048 modification Effects 0.000 claims abstract description 11
- 239000004020 conductor Substances 0.000 description 25
- 238000010586 diagram Methods 0.000 description 15
- 238000000034 method Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 241000761456 Nops Species 0.000 description 4
- 230000001143 conditioned effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 108010020615 nociceptin receptor Proteins 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005465 channeling Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction 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.
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.
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.
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.
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.
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 |
(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.
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)
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)
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 |
-
1998
- 1998-10-13 US US09/170,690 patent/US6418527B1/en not_active Expired - Lifetime
-
1999
- 1999-09-24 SG SG9904821A patent/SG95605A1/en unknown
- 1999-09-27 AT AT99118986T patent/ATE266226T1/de not_active IP Right Cessation
- 1999-09-27 DE DE69916962T patent/DE69916962T2/de not_active Expired - Fee Related
- 1999-09-27 EP EP99118986A patent/EP0994413B1/en not_active Expired - Lifetime
- 1999-09-27 ES ES99118986T patent/ES2221282T3/es not_active Expired - Lifetime
- 1999-10-05 TW TW088117156A patent/TW497073B/zh not_active IP Right Cessation
- 1999-10-08 JP JP11288062A patent/JP2000122864A/ja active Pending
- 1999-10-12 KR KR1019990044023A patent/KR100690225B1/ko not_active IP Right Cessation
- 1999-10-12 CN CN99121094A patent/CN1129843C/zh not_active Expired - Fee Related
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) | 指令编码方法和处理器 |