Procesador hiper escalar dinámico
Descripción general
 La presente invención, la instrucción se refiere a procesador de hipertexto escalar dinámico, el registro de instrucción cuando la instrucción de ramificación almacenada en el registro de instrucción con decodifica las instrucciones dentro del procesador ejecuta para generar dinámicamente instrucciones para cada unidad funcional Para eliminar la necesidad de instrucciones especiales de control y control de software y eliminar la necesidad de descifrar cuando se ejecutan las instrucciones de bifurcación para lograr alta velocidad. ] Decodifica la instrucciones extraídas de la caché de instrucciones, almacena secuencialmente el generado y la instrucción registro de instrucciones para cada unidad funcional, la parte que se convierte en el bucle si una instrucción instrucciones rama descargue de la registro de instrucción de las respectivas unidades funcionales Y un decodificador configurado para ejecutar la instrucción almacenada en el registro de instrucciones o almacenada en paralelo en cada unidad funcional.
Campo técnico
La presente invención se refiere a un procesador dinámico hiperescalar que decodifica una instrucción, la almacena en una pluralidad de registros de instrucciones para cada unidad funcional, y la ejecuta a alta velocidad.
Antecedentes de la técnica
El procesador hiper-escalar convencional es un procesador que tiene las siguientes características.
(1) El largo de la instrucción y el ancho de lectura de la instrucción son casi iguales a los superescalares.
(2) Proporcione un registro de instrucciones visibles para el usuario para cada unidad funcional.
(3) Al cargar una instrucción decodificada por control de software en el registro de instrucciones, se forma una instrucción VLIW (Palabra de instrucción muy larga) dentro del procesador.
(4) Envíe la instrucción VLIW formada dentro del procesador por control de software y haga que funcione como un procesador VLIW.
(5) El procesamiento de pseudo vector o el procesamiento de la línea de trabajo del software se realiza mediante un bucle de instrucción VLIW auto formado.
(6) Proporcione un registro vectorial.
El procesador hiperescalar que tiene la configuración anterior puede obtener un alto rendimiento con un costo de hardware relativamente pequeño, pero requiere instrucciones de control especiales, no puede mantener la compatibilidad del conjunto de instrucciones, Además, el programa fue preparado para hiper escalar y ejecutado.
Tarea de solución
Como se describió anteriormente, el procesador hiper-escalar convencional puede obtener un alto rendimiento con un costo de hardware comparativamente pequeño, pero dado que requiere instrucciones especiales de control, no se puede mantener la compatibilidad del conjunto de instrucciones y el procesador hiper-escalar Hubo un problema que se requería uno para escalar.
Para resolver estos problemas, la presente invención resuelve estos problemas generando y ejecutando dinámicamente instrucciones para cada unidad funcional descifrando una instrucción dentro del procesador, guardándola en un registro de instrucciones y almacenándola en un registro de instrucciones. Está dirigido a extraer y ejecutar instrucciones, eliminando la necesidad de instrucciones especiales de control y control de software, y acelerando al no requerir el descifrado en el momento de la ejecución de la instrucción de bifurcación.
Solución
La figura 1 muestra un diagrama de configuración conceptual de la presente invención. En la figura 1, el caché 2 de instrucciones almacena las instrucciones que se ejecutarán.
El decodificador 3 decodifica la instrucción. El registro de instrucciones 4 se proporciona para cada unidad funcional 5 y es un registro para almacenar una pluralidad de instrucciones.
La unidad funcional 5 es una unidad para ejecutar instrucciones.
Como se muestra en la figura 1, la presente invención extrae instrucciones de la caché de instrucciones 2, las decodifica mediante el decodificador 3, genera dinámicamente instrucciones, las almacena secuencialmente en los registros de instrucciones correspondientes 4, y las unidades de función 5 las ejecutan en paralelo Cuando la instrucción es una instrucción de bifurcación, la instrucción obtenida del registro de instrucciones 4 de todas las unidades funcionales 5 en la parte de bucle de las instrucciones almacenadas secuencialmente en el registro de instrucciones 4 se transfiere al registro de instrucciones 4 de cada unidad funcional 5 Y se ejecutan en paralelo.
En este momento, decodifica el decodificador de instrucciones 3 se saca de la memoria caché de instrucciones 2, cuando se almacenan secuencialmente en el registro de instrucción 4 que generan dinámicamente instrucciones para cada unidad funcional 5 hasta que el orden de aplicación, la ejecución no a Asistente Ha de datos Está empaquetado y almacenado, y está hecho para ejecutarse a alta velocidad.
Por lo tanto, es necesario generar y ejecutar dinámicamente instrucciones para cada unidad funcional 5 descifrando la instrucción dentro del procesador, guardarla en el registro de instrucciones 4, extraer la instrucción del registro de instrucciones 4 al ejecutar una instrucción de bifurcación y ejecutarla por consiguiente, las instrucciones de control especiales y software de control convencional es innecesario, y en un momento desde el registro de instrucciones 4 para decodificar cuando se ejecuta una instrucción de ramificación como es requerido por secuencialmente sacando las instrucciones de la parte de bucle fue almacenado en el registro de instrucción 4 para cada unidad funcional 5 Es posible lograr alta velocidad mediante ejecución paralela.
A continuación, la configuración y el funcionamiento de la realización de la presente invención se describirán secuencialmente en detalle con referencia a las figuras 1 a 5.
La figura 1 muestra un diagrama explicativo conceptual de la presente invención. En la figura 1, la memoria 1 almacena instrucciones. La memoria caché de instrucciones 2 es una memoria a la que se puede acceder a alta velocidad al recuperar y ejecutar una instrucción que se ejecutará desde la memoria 1.
El descodificador 3 decodifica instrucciones extraídas de la memoria caché de instrucciones 2 y genera dinámicamente instrucciones para cada unidad funcional 5 o similar. El registro de instrucciones 4 es una pluralidad de registros proporcionados para cada unidad funcional 5, y es para almacenar y guardar secuencialmente instrucciones generadas dinámicamente por el decodificador 3.
Unidad funcional 5 es una unidad para la ejecución de la instrucción almacenada en el registro de instrucción 4, por ejemplo, la unidad de carga / almacenamiento, la unidad lógica aritmética, y la unidad de punto flotante similares. IRbta es un registro para almacenar la dirección de destino de la sucursal.
El archivo de registro 6 almacena el resultado ejecutado por la unidad funcional 5 y similares. La memoria caché de datos 7 almacena datos.
La memoria 8 almacena varios datos. La figura 2 muestra un diagrama esquemático de una realización de la presente invención. Este es un diagrama de configuración de una parte del registro de instrucciones 4 que tiene la configuración de la FIG. En este caso, se proporcionan 0, 1 r 1 número de registros de instrucciones 4 para cada unidad funcional 5.
La entrada IRXR es un registro para mantener la dirección principal de la instrucción almacenada en el registro de instrucciones 4. La salida IRXR es un registro para mantener la dirección final de la instrucción almacenada en el registro de instrucciones 4.
IRXR tiene una dirección para acceder al registro de instrucciones actual 4. Rama dirección de destino de la instrucción de salto de código objeto más a la derecha compara el contenido del registro de instrucción 4 de la dirección de destino de la bifurcación entre la entrada y la salida IRXR IRXR, si hay una coincidencia, ya decodificar la instrucción Se descubre que está almacenado en el registro de instrucciones 4, por lo que se saca del registro de instrucciones 4 de la línea coincidente sin ejecutar la decodificación y se ejecuta. Si nada búsqueda de la instrucción de una instrucción extraída de la memoria caché 2 para descifrar el descodificador 3, y ejecuta el almacenado de una manera que secuencialmente circula desde el registro de instrucciones 4 filas indicadas por el IRXR de entrada. Esto significa que se ha realizado el llamado envío.
En el caso de que la pérdida de producción IRXR establece la distinción entre válido / inválido, se proporciona una bandera que indica si la instrucción es válida o no en la fila para cada fila en el registro de instrucción 4. A continuación, de acuerdo con la secuencia mostrada en el diagrama de flujo de la figura 3, el funcionamiento de la configuración de la figura 1 se describirá concretamente con referencia a la figura 4 (b) y la figura 5 (b) con el programa de Explicar Aquí, el LD (registro de instrucción de carga), ST (registro de instrucción de tienda), ALU (registro de instrucción de operación lógica), BU (registro de instrucción de rama), BTA (registro de instrucción de rama) en B (b) Registro de instrucciones de dirección de destino) corresponde a 0, 1, 2, 3, bta del registro de instrucciones 4 de la figura 2, respectivamente.
En (a) de la figura 3, se determina si S1 es una instrucción de bifurcación. Esto se determina, por ejemplo, a partir de la instrucción de bifurcación de la (9) ª línea en el programa de la figura 4 (a). Si es SÍ, proceda con S2. En el caso de NO, en S5, la operación en modo normal (S51 a S54 en la figura 3 (c)) continúa y el proceso vuelve a S1.
En S51, S52 a S54 se ejecutan como el modo normal. En el paso S52, se toma una instrucción del caché de instrucciones. En S53, las instrucciones se ejecutan en cada FU (unidad funcional 5).
S 54 registra la instrucción en el registro de instrucciones 4. En el paso S55, IRXR y entrada IRXR se incrementan. Luego, el proceso vuelve a S1 y se repite.
Como se describió anteriormente, con respecto a instrucciones distintas de la instrucción de bifurcación, se extrae una instrucción del caché de instrucciones 2 para generar instrucciones dinámicamente para cada unidad funcional 5, cada unidad funcional 5 ejecuta instrucciones en paralelo y circula secuencialmente al registro de instrucciones 4 Registrarse con. Por ejemplo, las filas (1), (2) y (8) en la figura 4 (b) de la figura 4 se describirán más adelante.
Como S2 se encuentra como una instrucción de bifurcación en SÍ de S1, se determina si está registrada en bta. Esto juzga si la dirección de destino de la sucursal está registrada en el registro de instrucciones bta (registro de direcciones de destino de sucursal) en la FIG. En el caso de SÍ, dado que se determina que la dirección de destino de bifurcación se registra y la instrucción subsiguiente a la dirección de bifurcación se almacena en el registro de instrucciones 4, en S3 en modo Turbo (de S31 en la figura 3 (b) Un modo para leer y ejecutar una instrucción del registro de instrucciones de S 35). Por otro lado, si no, el registro de una dirección de salto a BTA (dirección de destino registro rama) en S35, y opera en el modo normal (nodo normal de S51 en el c) Figura (3 S54), regresa a S1, Repita
S 31 ejecuta S 32 a S 35 como modo Tubo. S32 obtiene una instrucción del registro de instrucciones 4 indicado por el registro IRXR. Esto recupera las instrucciones de todos los registros de instrucciones 4 en la fila señalada por el registro IRXR en la FIG.
S 33 ejecuta instrucciones en cada FU (unidad funcional 5). S 34 incrementa IRXR y lo establece como la siguiente dirección. En S35, se determina si la condición de rama está satisfecha. Si es SÍ, regrese a S1. Por otro lado, si NO, el proceso vuelve a S 31 para repetir.
Con lo anterior, cuando una instrucción de ramificación, y la dirección objetivo de ramal está registrado en el Registro BTA, y el modo Turbo, recupera las instrucciones del registro de instrucciones 4 filas de direcciones registradas a la unidad funcional 5 se ejecuta cada repetir hasta que se tome parte acerca de la condición de ramificación del bucle por la rama, e innecesaria para decodificar sacando las instrucciones de la caché de instrucción 2, es posible leer y ejecutar las instrucciones en la velocidad en paralelo desde el registro de instrucciones 4. Cuando se cumple la condición de bifurcación, vuelve al modo normal desde el modo Turbo, extrae la instrucción de la memoria caché de instrucciones 2, la decodifica, opera en cada unidad funcional y la almacena en el registro de instrucciones 4, y opera en el modo normal.
Por lo anterior, descifra elimina una instrucción de la memoria caché de instrucciones 2, almacenado en el almacenamiento y cada unidad funcional en el registro de instrucción 4 se ejecutan en paralelo, la porción de bucle de la instrucción de ramificación si la instrucción de ramificación aparece en el registro de instrucción 4 No es necesario extraer la instrucción que se toma y repetir hasta que se cumpla la condición de bifurcación para que se ejecute cada unidad funcional y extraer la instrucción del caché de instrucciones 2 y decodificarla, y es posible aumentar la velocidad.
4 y 5 muestran el diagrama explicativo de la operación de la presente invención. La figura 4 (a) muestra un ejemplo de programa. Este programa consta de (1) a (12) líneas descritas en el extremo derecho.
4 (b) y 5 (b) muestran el orden de ejecución. Aquí, (1) a (9) en el lado izquierdo indican el número de líneas de la instrucción del programa de la figura 4 (a). 1, IR 0, IR 1 e IR 2 en la figura 1 representan LD (Registro de instrucciones de carga), ST (Registro de instrucciones de almacenamiento), ALU (Registro de instrucciones de funcionamiento lógico), BU (Registro de instrucciones de derivación) IR3 e IRAbta, respectivamente.
(B 1) Muestra cómo la instrucción en la (1) ª línea del programa en la figura 4 (a) se decodifica y se almacena en el registro de instrucciones. Instrucciones en línea (1)
L 0: 0 → sr 1 (1)
Es una instrucción para almacenar 0 en el registro sr 1, se almacena en la ALU como se muestra en la FIG. Además, dado que la etiqueta es L 0 y se convierte en la dirección de destino de la sucursal, se almacena en el BTA.
(B 2) La instrucción en la (2) ª línea del programa en la figura 4 (a) se decodifica y se almacena en el registro de instrucciones. Instrucciones en línea (2)
0 → sr 2 (2)
Es una instrucción para almacenar 0 en el registro sr 2, se almacena en la ALU como se muestra en la FIG.
(B3) La instrucción en la (3) línea del programa en la figura 4 (a) se decodifica y se almacena en el registro de instrucciones. Instrucción en línea (3)
cargar A (sr 1) → sr 11 (3)
Es una instrucción para extraer su contenido de la memoria cuya dirección es el contenido del registro sr 1 y para almacenarlo en el registro sr 11, de modo que se almacena en el LD como se muestra. Aquí, siempre que la carga de instrucciones a (sr 1) → sr 11 no obstaculice los datos, se reduce al orden de ejecución anterior, por lo que se rellena hasta la posición ilustrada (la segunda posición desde el principio) y se almacena.
(B 4) Las instrucciones de la línea (4) a la (8) del programa de la figura 4 (a) se decodifican y se almacenan secuencialmente en el registro de instrucciones. Por ejemplo, la instrucción de línea (8)
tienda sr 11 → A (sr 1) (8)
Es una instrucción para almacenar el contenido del registro sr 11 en la memoria que tiene el contenido del registro sr 1 como una dirección, de modo que se almacena en el ST como se muestra en la FIG.
(B 5) La instrucción en la línea (9) del programa en la figura 4 (a) se decodifica y se almacena en el registro de instrucciones. Instrucciones en línea (9)
si sr1 <31, entonces goto L1 (9)
Es una instrucción de que el contenido de las ramas registro SR1 para etiquetar L1 cuando menos de 31, embalado ya que en orden de ejecución antes menos que los datos asistente duro, antes de que uno de la instrucción ilustrado ((8) ésima fila Instrucción), como se muestra en el dibujo, y almacena la etiqueta L1 del destino de la sucursal en el BTA en la posición del próximo orden de ejecución como se muestra en el dibujo.
La figura (b 6) de la (b) 5, (b 7) para (4) la porción de bucle por una fila (9) -ésima fila de la instrucción de ramificación en el programa de la Fig. 4 (a), decodificada por el registro de instrucciones 4 , Y muestra cómo se copió la instrucción como se muestra en ,, desde la secuencia de ejecución 7 a 10. Como resultado, una vez que la instrucción se extrae de la memoria caché de instrucciones y se decodifica y almacena en el registro de instrucciones para la parte de bucle de la instrucción de bifurcación, se saca del registro de instrucciones y se almacena (copia) sin duplicar el descifrado, . Incidentalmente, hasta que se cumpla la condición de bifurcación, la instrucción se saca repetidamente del registro de instrucciones de la parte copiada por. Cuando se cumple la condición de bifurcación, el proceso continúa con el siguiente orden de ejecución 11.
La figura 5 (b 8) muestra un estado cuando se cumple la condición de ramificación de la orden de ejecución 10. Si se cumple esta condición rama, a continuación, hasta la etiqueta L2, tomados secuencialmente a esto desde la posición de la orden de ejecución de 4 programa (a) (10) a través de (12) líneas de mismo modo caché de instrucciones 2, decodifica Y guárdelos en el registro de instrucciones de la siguiente manera.
Orden de ejecución LD STALUBUBTA
sr 1 + 1 → sr 1 L 2 12
sr 11 + sr 12 → sr 11 13
tienda sr 11 → A (sr 1) 14
Efecto de la invención
Como se ha descrito anteriormente, de acuerdo con la presente invención, ser descifrados cuando se ejecuta una instrucción de bifurcación y se almacena en el registro de instrucción 4 juntos decodifica las instrucciones dentro del procesador ejecuta para generar dinámicamente instrucciones para cada unidad funcional cada 5 , La instrucción se saca del registro de instrucciones 4 y se ejecuta por cada unidad funcional 4, de modo que no es necesario realizar una instrucción de control especial especial y un control de software, y no es necesario decodificar la instrucción de bifurcación cuando se ejecuta la instrucción de bifurcación. Es posible obtener la instrucción de la parte de bucle a la vez desde el registro 4 y almacenarla en el registro de instrucciones 4 de cada unidad funcional 5, ejecutar en paralelo y aumentar la velocidad.
La figura 1 es un diagrama de configuración conceptual de la presente invención.
La figura 2 es un diagrama estructural de una realización de la presente invención.
La figura 3 es un diagrama de flujo para explicar el funcionamiento de la presente invención.
La figura 4 es un diagrama explicativo de la operación (parte 1) de la presente invención.
La figura 5 es un diagrama explicativo de la operación (parte 1) de la presente invención.
1: memoria
2: caché de instrucciones
3: decodificador
4: registro de instrucciones
5: unidad funcional
6: archivo de registro
7: caché de datos
8: Memoria
IR: registro de instrucciones
FU: unidad funcional
Reclamo
Una pluralidad de registros de instrucciones para almacenar las instrucciones que se ejecutarán para cada una de las unidades funcionales: una pluralidad de registros de instrucciones para decodificar las instrucciones extraídas de la memoria caché de instrucciones y generar instrucciones para cada unidad funcional Y las almacena secuencialmente en los registros de instrucciones correspondientes. Cuando la instrucción en este momento es una instrucción de bifurcación, una parte de las instrucciones almacenadas secuencialmente en el registro de instrucciones se saca de los registros de instrucciones de todas las unidades funcionales. Y un decodificador para almacenar la instrucción en un registro de instrucciones de cada unidad funcional, en el que cada unidad funcional ejecuta la instrucción almacenada o almacenada en el registro de instrucciones respectivamente en paralelo.
2. El decodificador decodifica una instrucción extraída de la memoria caché de instrucciones, genera instrucciones para cada unidad funcional, las almacena secuencialmente en el registro de instrucciones correspondiente y las almacena en un orden de ejecución que no se convierte en un arnés de datos. 2. Un procesador hiperveloz dinámico según la reivindicación 1,
Dibujo :
Application number :1997-006613
Inventors :富士通株式会社
Original Assignee :川崎弘太