ES2697548B2 - Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza - Google Patents

Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza Download PDF

Info

Publication number
ES2697548B2
ES2697548B2 ES201830266A ES201830266A ES2697548B2 ES 2697548 B2 ES2697548 B2 ES 2697548B2 ES 201830266 A ES201830266 A ES 201830266A ES 201830266 A ES201830266 A ES 201830266A ES 2697548 B2 ES2697548 B2 ES 2697548B2
Authority
ES
Spain
Prior art keywords
trace
instruction
instructions
stage
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES201830266A
Other languages
English (en)
Other versions
ES2697548A1 (es
Inventor
Silva Antonio Da
Polo Oscar Rodriguez
Hellin Agustin Martinez
Espada Pablo Parra
Prieto Sebastian Sanchez
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universidad Politecnica de Madrid
Universidad de Alcala de Henares UAH
Original Assignee
Universidad Politecnica de Madrid
Universidad de Alcala de Henares UAH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidad Politecnica de Madrid, Universidad de Alcala de Henares UAH filed Critical Universidad Politecnica de Madrid
Priority to ES201830266A priority Critical patent/ES2697548B2/es
Publication of ES2697548A1 publication Critical patent/ES2697548A1/es
Priority to PCT/ES2019/070176 priority patent/WO2019180288A1/es
Application granted granted Critical
Publication of ES2697548B2 publication Critical patent/ES2697548B2/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Description

DESCRIPCIÓN
UN MÉTODO Y UN DISPOSITIVO DE PROCESAMIENTO EN PARALELO DE
INSTRUCCIONES DE PROGRAMA E INSTRUCCIONES DE TRAZA
SECTOR DE LA TÉCNICA
La invención se encuadra, de forma general, en el sector Electrónica, Informática y Telecomunicaciones (TIC), si bien tiene aplicación específica en sistemas críticos propios de los sectores Aeroespacial, Defensa y de alta fiabilidad.
ANTECEDENTES DE LA INVENCIÓN
Se han identificado diferentes invenciones que proponen soluciones para facilitar el trazado de instrucciones pero que difieren de la presente invención.
La solicitud de patente US 5996092 A, "System and method for tracing program execution within a processor before and after a triggering event”, permite iniciar e interrumpir la traza de instrucciones, empleando un procesador de traza que trabaja en paralelo al procesador que ejecuta las propias instrucciones. El procesador de traza, tras detectar el momento de inicio de la traza, mediante una instrucción específica, almacena en una memoria compartida información relativa a toda la secuencia de ejecución de instrucciones hasta el momento en el que detecta la instrucción de parada de la traza. En el presente dispositivo, no hay memoria compartida ni un procesador de traza en paralelo, y la traza está basada en una instrumentación del código que añade, en puntos concretos del código en los que se desea obtener una traza puntual, instrucciones de traza que identifican unívocamente el punto que deseamos trazar, sin recurrir al contador de programa. La instrucción de traza es ejecutada en paralelo con la instrucción previa que se pretende trazar, introduciendo redundancia de las partes necesarias del pipeline del procesador, y el resultado de la ejecución es la escritura en un registro de salida donde un hardware de análisis lo captura, de forma que queda registrado el instante específico en el que se ejecutó la instrucción trazada. La presente invención presenta un enfoque diferente, donde es posible, mediante la instrumentación selectiva de instrucciones ubicadas en cualquier parte del código, obtener el peor tiempo de ejecución de cada una de las funciones de sistema. Este tipo de instrumentación está siendo utilizada por herramientas comerciales como RapiTime en sistemas críticos de aviónica (G. Bernat et al., "Identifying Opportunities for Worst-case Execution Time Reduction in an Avionics System,” Ada User Journal, Volume 28, Number 3, 2007, pp.
189-194). Sin embargo, su aplicación utilizando los procesadores disponibles en el mercado tiene como principal desventaja la sobrecarga introducida en el tiempo de ejecución, que se elimina con la invención presentada.
Con respecto a la solicitud de patente US 2017147472 (A1), "Systems and methods for a real time embedded trace”, la diferencia principal es que el sistema traza las instrucciones de salto, de forma autónoma. En la invención que aquí se presenta, las instrucciones que se trazan son definidas mediante técnicas de instrumentación selectivas, que insertan, a continuación de cada instrucción que deseamos trazar, una instrucción de traza. Lo que hace esta invención es ejecutarlas en paralelo de forma sincronizada con la instrucción que se pretende trazar. Como ya se ha descrito, esta técnica de instrumentación está siendo utilizada en sistemas críticos y permite trazar bloques de código para evaluar su tiempo de ejecución en el peor caso, teniendo en cuenta que la transición entre algunos de estos bloques, como el correspondiente a un bloque else, y el bloque posterior, no implican un salto en la ejecución, por lo que no serían detectados por la solución que presenta la patente US 2017147472 (A1).
En cuanto a la patente US 6513134 (B1), "System and method for tracing program execution within a superscalar processor”, presenta una mejora respecto a la US 5996092 A , permitiendo trabajar con procesadores superescalares que trabajan a altas frecuencias, por encima de los 400MHz. Para ello utiliza una codificación de la información que se desea trazar que permite reducir el espacio que es necesario utilizar para almacenarla en el buffer de traza que se proporciona como salida. Al igual que en esta patente, se trazan bloques de instrucciones para analizar su ejecución, pero definiendo una forma más flexible para el disparo de la traza, y usando una codificación de la traza que permite un ahorro en cuanto a la información almacenada y al número de pines utilizados. Esta patente, por tanto, no evita la sobrecarga del uso de técnicas de instrumentación de código que afectan a todo el sistema, como ocurre con la invención reivindicada, sino que pretende optimizar un mecanismo de trazado, no basado en la instrumentación, sino en la detección de eventos que se ajustan a unas condiciones predefinidas.
Por lo tanto, se concluye que los sistemas existentes para la traza de instrucciones permiten programar eventos específicos de disparo de traza, para recopilar información de traza limitada a un determinado intervalo anterior y/o posterior a dicho evento. Estos métodos adolecen de cierta rigidez en cuanto a que el número de bloques que se puede trazar en cada ejecución es siempre limitado, y no se adaptan bien a las técnicas de instrumentación de código que se utilizan en la caracterización del tiempo de ejecución en el peor caso en sistemas críticos, como la que emplea la citada herramienta RapiTime. Dado que la aplicación de la instrumentación de código empleando los procesadores actuales introduce sobrecarga en el tiempo de ejecución, la invención presentada, destinada a eliminar estas sobrecargas, aporta una mejora con un objetivo concreto enmarcado en este ámbito.
DESCRIPCIÓN DE LA INVENCIÓN
En un primer aspecto de la invención, se divulga un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza. El dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza comprende:
• una etapa de búsqueda de instrucciones, que a su vez comprende:
o un módulo de cálculo de la dirección de la instrucción; y,
o módulo de búsqueda de las instrucciones con doble puerto de lectura; • una etapa de decodificación duplicada;
• un pipeline-traza (pipeline de traza) para el procesado únicamente de instrucciones de traza;
• un registro de salida para la traza;
• una ruta de datos que a su vez comprende un conjunto de multiplexores; • un controlador de la ruta de datos, que a su vez comprende unas entradas y unas salidas que controlan los multiplexores, la carga en unos registros asociados las distintas etapas y el registro de salida para la traza;
donde el controlador de la ruta de datos está configurado para determinar, en función del estado de dicho controlador y del valor de las entradas en dicho controlador, el valor de las salidas que son enviadas a los multiplexores de la ruta de datos de tal forma que una instrucción de traza se ejecuta de forma sincronizada con la instrucción que la precede, haciéndose efectiva dicha ejecución durante la última etapa del pipeline de traza.
En una realización de la invención, el controlador comprende las siguientes secuencias de instrucciones S1, S2 y S3:
S1: corresponde a pares Instrucción-Traza en los que las instrucciones a ser trazadas siempre se cargan en el elemento “INSTRUCCIÓN N”, mientras las instrucciones correspondientes de traza se cargan en el elemento “INSTRUCCIÓN N+1”;
S2: corresponde a una secuencia de instrucciones que no son trazadas, de forma en los elementos “INSTRUCCIÓN N” e “INSTRUCCIÓN N+1” siempre se cargan instrucciones (y no trazas);
S3: corresponde a dos pares Instrucción-Traza en los que las instrucciones de traza se cargan en ciclos sucesivos en el elemento “INSTRUCCIÓN N 1”, mientras las instrucciones a trazar se cargan en esos mismos ciclos en el elemento “INSTRUCCIÓN N+1”.
El dispositivo de procesamiento ejecuta la secuencia S1 durante dos ciclos de reloj, T y T+1; de tal forma que las instrucciones almacenadas en unas direcciones X+1, X+3 y X+5, son las instrucciones de traza de las instrucciones que las preceden, ubicadas, respectivamente, en unas direcciones X, X+2 y X+4.
El dispositivo de procesamiento ejecuta la secuencia S2 en la que durante dos ciclos no se cargan instrucciones de traza; de tal forma que durante el primer ciclo T se detecta que las dos instrucciones que están cargadas en la etapa de decodificación no son de traza, y por tanto las señales “N_ES_TRAZA” “N_1_ES_TRAZA” valen ambas “0”; y, en el ciclo T 1 el controlador se encuentra en el estado denominado “INSTR PENDIENTE”, en el que la instrucción pendiente ubicada en la segunda unidad de decodificación se dirige hacia la "etapa 3” del pipeline de instrucciones del procesador.
El dispositivo de procesamiento ejecuta la secuencia S3: en el ciclo T el valor de la señal "N_ES_TRAZA” es "1”, mientras que "N_1_ES_TRAZA” vale "0”, y el valor de la señal de multiplexación "SEL_TR_P4” es "2”, de tal forma que se habilita una ruta donde la instrucción de traza se sincroniza con la ejecución de la instrucción a trazar; en el ciclo T+1, se ubica la instrucción de traza en la etapa 4 del pipeline de traza. En el ciclo T, además, la señal de multiplexación "SEL_PIPE_TRAZA” toma el valor 0, con el fin de que en el ciclo T+1 se encuentre un cero en la etapa 3 del pipeline de traza.
En una forma de realización de la invención, el dispositivo de procesamiento durante un ciclo "T”, detecta una burbuja en la etapa 3 del pipeline de instrucciones, de tal forma que el controlador fija la ruta que carga un "0” en las etapas 3 y 4 del pipeline- traza y una dirección de salto "Z” se enruta hacía el registro de entrada de la etapa de búsqueda, de tal forma que la detección de la burbuja en la etapa 3 se corresponde con la puesta a "1” de la señal "BURBUJA_P3" y de la señal "BURBUJA". El controlador controla: la ruta hacia la etapa 3 asignando "0” a la señal "SEL_PIPE_TRAZA"; la ruta hacia la etapa 4 asignando un "0” a la señal "SEL_TR_P4"; y la carga del registro de entrada de la etapa de búsqueda activando la señal "LD_DIR" y enrutando la dirección "Z" hacía dicho registro asignando un "0” a la señal "SEL_DIR".
En una forma de realización de la invención, el dispositivo el dispositivo de procesamiento durante un ciclo "T”, detecta una burbuja en la etapa 4 del pipeline de instrucciones, de tal forma el controlador fija la ruta que carga un "0” en las etapas 3, 4 y 5 del pipeline-traza y la dirección de salto "Z” se enruta hacia el registro de entrada de la etapa de búsqueda, de tal forma que la detección de la burbuja en la etapa 4 se corresponde con la puesta a "1” de la señal "BURBUJA_P4" y de la señal "BURBUJA". El controlador controla: la ruta hacia la etapa 3 del pipeline-traza asignando "0” a la señal "SEL_PIPE_TRAZA" ; la ruta hacia la etapa 4 asignando un "0” a la señal "SEL_TR_P4"; la ruta hacia la etapa 5 se controla asignando un "0” a la señal "SEL_TR_P5"; y, la carga del registro de entrada de la etapa de búsqueda activando la señal "LD_DIR" y enrutando la dirección "Z" hacía dicho registro asignando un 0 a la señal "SEL_DIR".
En un segundo aspecto de la invención se divulga un procesador RISC, “Computador con Conjunto de Instrucciones Reducidas”, que comprende un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza según una cualquiera de las formas de realización anteriores para el primer aspecto de la invención.
En un tercer aspecto de la invención se divulga un método de procesamiento en paralelo de instrucciones de programa e instrucciones de traza que, ejecutado sobre un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza definido en cualquiera de las realizaciones del primer aspecto de la invención, procesa de forma paralela una instrucción y una instrucción de traza.
BREVE DESCRIPCIÓN DE LAS FIGURAS
Para complementar la descripción de la invención y con objeto de ayudar a una mejor comprensión de sus características, se acompaña como parte integrante de dicha descripción, un juego de dibujos en donde con carácter ilustrativo y no limitativo, se ha representado lo siguiente:
Figura 1. Estructura del dispositivo para la sincronización y ejecución paralela propuesta en la invención.
Figura 2. Máquina de Mealy del controlador de la ruta de datos.
Figura 3. Evolución de la Ruta de datos ante la secuencia de instrucciones S1.
Figura 4. Evolución de la Ruta de datos ante la secuencia de instrucciones S2.
Figura 5. Evolución de la Ruta de datos ante la secuencia de instrucciones S3.
Figura 6. Evolución de la Ruta de datos ante una burbuja en la etapa 3 del pipeline.
Figura 7. Evolución de la Ruta de datos ante una burbuja en la etapa 4 del pipeline.
Figura 8. Evolución de la Ruta de datos tras una burbuja en el ciclo anterior.
Figura 9 Tabla de transición de estados del controlador de la ruta de datos.
Figura 10 Tabla de las salidas del controlador de la ruta de datos relativas a la etapa de búsqueda.
Figura 11 Tabla de las salidas del controlador de la ruta de datos relativas a la etapa de decodificación.
Figura 12 Tabla de las salidas del controlador de la ruta de datos relativas a la etapas 3, 4 y 5 del pipeline de las instrucciones de traza.
En la figura 1 se referencian los elementos del dispositivo de sincronización y ejecución paralela propuesta en la invención. Estos elementos son los siguientes:
100 Etapa 1 de búsqueda de instrucciones
101 Módulo de selección de la dirección de la siguiente instrucción 102 Módulo de búsqueda de instrucciones con doble puerto de lectura 103 Etapa 2 de decodificación duplicada
104 Controlador de la ruta de datos del dispositivo
105 Entradas al controlador de la ruta de datos
106 Salidas del controlador de la ruta de datos
107 Módulo de decodificación "INSTRUCCIÓN N" de la etapa 2 108 Módulo de decodificación " INSTRUCCIÓN N 1" de la etapa 2 109 Multiplexor de selección de la entrada de la etapa 3 del pipeline de instrucciones del procesador RISC
110 Multiplexor de selección de la entrada de la etapa 3 del pipeline de las instrucciones de traza
112 Pipeline de las instrucciones del procesador RISC
113 Pipeline de las instrucciones de traza
114 Etapa 3 del pipeline de las instrucciones del procesador RISC 115 Etapa 3 del pipeline de las instrucciones de traza
116 Multiplexor de selección de la entrada de la etapa 4 del pipeline de instrucciones de traza
117 Etapa 4 del pipeline de las instrucciones del procesador RISC 118 Etapa 4 del pipeline de las instrucciones de traza
119 Multiplexor de selección de la entrada de la etapa 5 del pipeline de instrucciones de traza
120 Etapa 5 del pipeline de las instrucciones del procesador RISC Etapa 5 del pipeline de las instrucciones de traza
Entrada al controlador de la ruta de datos que monitoriza la detección de burbujas
Registro de salida de la información de traza
ESPERA: Entrada al controlador de la ruta de datos que monitoriza la espera en la búsqueda de instrucciones
BURBUJA_P3: Señal de entrada al controlador que monitoriza la detección de una burbuja en la etapa 3 de pipeline de instrucciones del procesador RISC
BURBUJA_P4: Señal de entrada al controlador que monitoriza la detección de una burbuja en la etapa 4 de pipeline de instrucciones del procesador RISC
LD_N: Salida del controlador de la ruta de datos que controla la carga del módulo de decodificación "INSTRUCCIÓN N" de la etapa 2
LD_N_1:Salida del controlador de la ruta de datos que controla la carga del módulo de decodificación "INSTRUCCIÓN N 1" de la etapa 2
N_ES_TRAZA: Señal de entrada al controlador que monitoriza si la instrucción que se ha decodificado en el elemento "Instrucción N" es de tipo traza
N_1_ES_TRAZA: Señal de entrada al controlador que monitoriza si la instrucción que se ha decodificado en el elemento "Instrucción N+1" es de tipo traza
SEL_PIPE_INSTR: Salida del controlador de la ruta de datos que controla el multiplexor de entrada a la etapa 3 del pipeline de instrucciones del procesador RISC
SEL_PIPE_TRAZA: Salida del controlador de la ruta de datos que controla el multiplexor de entrada a la etapa 3 del pipeline de instrucciones de traza
SEL_TR_P4: Salida del controlador de la ruta de datos que controla el multiplexor de entrada a la etapa 4 del pipeline de instrucciones de traza
134 SEL_TR_P5: Salida del controlador de la ruta de datos que controla el multiplexor de entrada a la etapa 5 del pipeline de instrucciones de traza
135 TR_P5_ES_CERO: Señal que monitoriza si la etapa 5 de pipeline de instrucciones de traza almacena un valor cero
136 LD_TR_OUT: Señal que controla el almacenamiento en el registro de salida de la información de traza. Toma el valor complementario a la señal TR_P5_ES_CERO, por lo que el registro sólo se carga cuando la información de traza es distinta de cero.
137 LD_DIR: Señal que controla el almacenamiento en el registro de entrada a la etapa de búsqueda de la dirección de la siguiente instrucción a buscar.
138 SEL_DIR: Salida del controlador de la ruta de datos que controla el multiplexor de entrada al registro de entrada a la etapa de búsqueda que almacena la dirección de la siguiente instrucción a buscar.
139 Registro de entrada a la etapa de búsqueda que almacena la dirección de la siguiente instrucción a buscar.
140 Multiplexor de entrada al registro de entrada a la etapa de búsqueda que almacena la dirección de la siguiente instrucción a buscar.
DESCRIPCIÓN DE UNA FORMA DE REALIZACIÓN DE LA INVENCIÓN
La invención consiste en un dispositivo dotado de una estructura interna de procesamiento que permite eliminar la sobrecarga de tiempo de ejecución que introduce la instrumentación de código utilizada para medir el tiempo de "ejecución en caso peor” empleando análisis híbrido. Este análisis combina el análisis estático del código con medidas del tiempo de ejecución sobre la plataforma de despliegue. El análisis estático determina qué instrucciones es necesario trazar y, mediante técnicas de instrumentación, añade código de trazado tras cada instrucción que se desea trazar, de forma que el instante de ejecución de dicha instrucción puede capturarse mediante un hardware de soporte y un analizador lógico. El código añadido tras la instrucción que deseamos trazar permite identificar unívocamente el momento de ejecución de dicha instrucción, pero introduce una sobrecarga que con esta invención se puede eliminar. El dispositivo es capaz de detectar las instrucciones de traza y ejecutarlas en paralelo, de forma sincronizada, y condicionada a la ejecución completa de la instrucción que le precede. De esa forma permite que el proceso de trazado sea no intrusivo en lo que respecta al tiempo de ejecución, ya que la secuencia y el instante de ejecución del programa bajo análisis, no se ven modificados por la introducción de las trazas, al ser éstas ejecutadas en paralelo.
El dispositivo propuesto en la invención utiliza un código de instrucción específico, que será empleado para la instrumentación, y cuya estructura interna interpreta como la habilitación de traza de la instrucción que le precede. Los elementos principales de este dispositivo, que se muestran en la figura 1, son: 1) una etapa de búsqueda de instrucciones (100), que cuenta con un módulo de cálculo de la dirección de la instrucción (101) y módulo de búsqueda de las instrucciones con doble puerto de lectura (102); 2) una etapa de decodificación duplicada (103); 3) un pipeline específico para las instrucciones de traza (113); 4) un registro de salida para la traza (123); 5) la ruta de datos, formada por un conjunto de multiplexores (109, 110, 116 y 119); 6) el controlador de la ruta de datos del dispositivo (104), que determina, en función de su estado, y del valor de sus entradas (105), el valor de las salidas (106) que controlan tanto los multiplexores (109, 110, 116 y 119), como la carga en registros asociados las distintas etapas (107, 108, 114, 115, 117, 118, 120 y 121), así como el registro de salida (123). Tanto las entradas (105) como las salidas (106) están representadas gráficamente en la figura 1 junto a la etiqueta asignada para cada señal.
El dispositivo, gracias a la etapa de búsqueda con doble puerto (100), permite cargar dos instrucciones simultáneamente a la etapa de decodificación (103) para que sean decodificadas en paralelo. La señal "ESPERA” (124) de esta etapa se utiliza para modelar posibles estados de espera en dicha búsqueda, y puede activarse tras un reset del procesador, o como consecuencia de hacerse efectivo un salto, lo que provoca la inyección de burbujas en el pipeline de instrucciones del procesador (112), monitorizadas por las señales "BURBUJA_P3” (inyección de burbuja en la etapa 3, 125), ''BURBUJA_P4” (inyección de burbuja en la etapa 4, 126), y la función OR de éstas, etiquetada como "BURBUJA” (122). La señal "ESPERA” (124) se desactivará para notificar a la etapa de decodificación (103) que las instrucciones están disponibles para ser cargadas.
Las dos instrucciones que se encuentran en la etapa de decodificación corresponden siempre a instrucciones almacenadas en palabras consecutivas de memoria. En la figura 1, el elemento etiquetado como "INSTRUCCIÓN N” (107) será el que recibirá la primera de las dos instrucciones, mientras que el etiquetado como "INSTRUCCIÓN N+1” (108) recibirá la siguiente. Los valores N y N+1 no corresponden a direcciones físicas de memoria que sean consecutivas, sino que representan dos instrucciones almacenadas en palabras de memoria consecutivas, sin considerar el tamaño de palabra en bytes del procesador, que en el caso más general de un procesador RISC de 32 bits, sería de 4.
En la etapa de decodificación (103), y como consecuencia de decodificar cada una de las instrucciones, se determina si las instrucciones son de tipo traza o pertenecen al resto del conjunto de instrucciones, calculando para ello las señales etiquetadas en la figura 1 como "N_ES_TRAZA” (127) y "N_1_ES_TRAZA” (128).
El controlador de la ruta (104) utiliza los valores de esas señales, y el de las señales "ESPERA” (124) y "BURBUJA” (122), junto con el estado del propio controlador, para determinar la ruta que seguirán las instrucciones hacia las siguientes etapas. El controlador configura los multiplexores (109, 110, 116 y 119) de la ruta para asegurar que una instrucción de traza se ejecuta de forma sincronizada con la instrucción que la precede, haciéndose efectiva dicha ejecución durante la última etapa (121) del pipeline de traza (113), en el que se comprueba que la señal "TR_P5_ES_CERO” (135) está desactivada, en cuyo caso la señal "LD_TR_OUT” se activa (136) y el valor de traza es dirigido hacia el registro de salida (123).
La figura 2 representa la máquina de Mealy del controlador de la ruta de datos de este dispositivo (200), que es especificada formalmente en las tablas de las figuras 9, 10, 11 y 12.
Las figuras 3, 4 y 5 son, respectivamente, ejemplos de cómo el controlador, para hacer efectiva la sincronización, fija la ruta en las siguientes secuencias de instrucciones posibles S1, S2, y S3:
• La secuencia S1 corresponde a pares Instrucción-Traza (301- 302, 303-304 y 305-306) en los que las instrucciones que se desean trazar (301, 303 y 305) siempre se cargan en el elemento “INSTRUCCIÓN N” (107), mientras las instrucciones correspondientes de traza (302, 304 y 306) se cargan en el elemento “INSTRUCCIÓN N+1” (115).
• S2 corresponde a una secuencia de instrucciones (401, 402, 403 y 404) que no son trazadas, de forma en los elementos “INSTRUCCIÓN N” (114) e “INSTRUCCIÓN N+1” (115) siempre se cargan instrucciones y no trazas.
• La secuencia S3 corresponde a dos pares Instrucción-Traza (502- 503 y 504­ 505) en los que las instrucciones de traza (503 y 505) se cargan en ciclos sucesivos ( 500 y 510) en el elemento “INSTRUCCIÓN N 1” (107), mientras las instrucciones a trazar (502 y 504) se cargan en esos mismos ciclos en el elemento “INSTRUCCIÓN N+1” (108).
La figura 3 muestra el funcionamiento del dispositivo durante dos ciclos de reloj, T (300) y T+1 (307), en el que el procesador ejecuta la secuencia de instrucciones S1. En la secuencia S1 las instrucciones almacenadas en las direcciones X+1 (302), X+3 (304) y X+5 (306), son las instrucciones de traza de las instrucciones que las preceden, ubicadas, respectivamente, en las direcciones X (301), X+2 (303) y X+4 (305). El esquema muestra en los dos ciclos, T (300) y T+1 (307), cómo las instrucciones de traza (302, 304, 306), añadidas como fruto de la instrumentación, se dirigen hacia las etapas (115 y 118) que pertenecen al pipeline de las instrucciones de tipo traza, mientras que las instrucciones a trazar (301, 303, y 305), se dirigen hacia las etapas (114 y 117) que pertenecen al pipeline de las instrucciones del procesador. De esta forma se produce una ejecución sincronizada de la instrucción trazada y su instrucción de traza, y se evita la sobrecarga en tiempo de ejecución de insertar instrucciones de traza en un programa, ya que estas se ejecutan en paralelo.
La figura 4 muestra el funcionamiento del dispositivo en la secuencia S2, en la que durante dos ciclos no se cargan instrucciones de traza. En ese caso durante el primer ciclo T (400) se detecta que las dos instrucciones que están cargadas en la etapa de decodificación (403 y 404) no son de traza, y por tanto las señales “N_ES_TRAZA” (129) y “N_1_ES_TRAZA” (130) valen ambas 0. Esta situación conduce a que la etapa de decodificación (103) no cargue dos nuevas instrucciones al inicio del ciclo T 1 (408), ya que en el ciclo T (400) los valores de "LD_N" (127) y "LD_N_1" (128) que controlan dicha carga son ambos 0. En el ciclo T 1 (408) el controlador se encuentra en el estado denominado “INSTR PENDIENTE” (202), en el que la instrucción pendiente (404) ubicada en la segunda unidad de decodificación ( 108) se dirige hacia la etapa 3 del pipeline de instrucciones del procesador (114). En los dos ciclos, T (400) y T 1 (408), el controlador carga la etapa 3 del pipeline de las instrucciones de traza (115) con valores 0, por lo que las instrucciones no serán trazadas.
En la figura 5 se muestra el funcionamiento del dispositivo para la secuencia S3, que cubre el caso en el que en el ciclo T (500) la instrucción a trazar (502) se encuentra en la etapa 3 del pipeline de instrucciones (114), mientras que la instrucción de traza (503) está cargada en el elemento “INSTRUCCIÓN N” (107) de la etapa de decodificación (103). La secuencia incluye, además, que en ese mismo ciclo el elemento “INSTRUCCIÓN N 1” (108) de la etapa de decodificación (103) contenga la siguiente instrucción (504) a ejecutar. De acuerdo a esta secuencia, en el ciclo T (500) el valor de la señal “N_ES_TRAZA” (129) es 1, mientras que “N_1_ES_TRAZA” (130) vale 0, y el valor de la señal de multiplexación “SEL_TR_P4” (133) es 2, lo que habilita una ruta donde la instrucción de traza (503) se sincroniza con la ejecución de la instrucción a trazar (502). La sincronización se hace efectiva en el ciclo T+1 (510), ubicándose la instrucción de traza ( 503) en la etapa 4 del pipeline de traza (118). En el ciclo T (500), además, la señal de multiplexación “SEL_PIPE_TRAZA” (132) toma el valor 0, con el fin de que en el ciclo T+1 (510) se encuentre un cero (507) en la etapa 3 del pipeline de traza (115).
La secuencia S3 provoca, además, que durante el ciclo T( 500), la siguiente instrucción (504), que se encuentra almacenada en el elemento “INSTRUCCIÓN N 1” (108), tenga habilitada la ruta hacia la etapa 3 del pipeline de instrucciones (114). Para habilitar esta ruta la señal “SEL_PIPE_INSTR” (131) toma el valor 1 durante el ciclo T ( 500).
En el ciclo T+1 (510), el dispositivo repite la misma configuración de la ruta de datos que había en el ciclo T (500), ya que la secuencia ubica de nuevo una instrucción de tipo traza (505) en el elemento “INSTRUCCIÓN N” (107) de la etapa de decodificación (103) y la siguiente instrucción a ejecutar (506) en el elemento “INSTRUCCIÓN N 1” (108).
Finalmente, las figuras 6, 7 y 8 describen el funcionamiento del dispositivo ante la detección de burbujas. Las burbujas se insertan en el pipeline de instrucciones de un procesador RISC en todas aquellas situaciones en las que se interrumpe la ejecución secuencial de instrucciones, como ocurre con las instrucciones de salto, tanto condicional como incondicional, o en las llamadas y retornos de funciones. Cuando una instrucción provoca que se interrumpa el orden secuencial de ejecución, el procesador debe descartar la ejecución de las instrucciones posteriores a dicha instrucción, e iniciar la búsqueda de la instrucción cuya dirección ha sido determinada tras la ejecución de la instrucción que ha provocado la ruptura de secuencia. En las figuras 6 y 7 esta dirección está etiquetada como dirección “Z” ( 600). La figura 6 explica la ruta de datos ante una burbuja en la etapa 3 del pipeline de instrucciones ( 114), mientras que la figura 7 corresponde a una burbuja detectada en la etapa 4 ( 117), y que provoca además una burbuja en la etapa 3 ( 114). La figura 8 explica la evolución de la ruta en los ciclos siguientes a la detección de una burbuja hasta que la instrucción de la dirección de salto ( 600) es suministrada por la etapa de búsqueda ( 100) .
En la figura 6, se muestra cómo durante el ciclo T se detecta una burbuja sólo en la etapa 3 del pipeline de instrucciones (114), y cómo el controlador fija la ruta que carga un 0 en las etapas 3 (115) y 4 (118) del pipeline de traza (113), mientras la dirección de salto “Z” ( 600) se enruta hacía el registro de entrada de la etapa de búsqueda (139). La detección de la burbuja en la etapa 3 se corresponde con la puesta a 1 de la señal "BURBUJA_P3" (125) y consecuentemente de la señal "BURBUJA" (122). La ruta hacia la etapa 3 (115) se controla asignando 0 a la señal "SEL_PIPE_TRAZA" (132), y la ruta hacia la etapa 4 (118) se controla asignando un 0 a la señal "SEL_TR_P4" (133). La carga del registro de entrada de la etapa de búsqueda (139) se controla activando la señal "LD_DIR" (137) y enrutando la dirección "Z" (600) hacía dicho registro (139) asignando un 0 a la señal "SEL_DIR" (138).
En la figura 7, se muestra cómo durante el ciclo T se detecta una burbuja en la etapa 4 del pipeline de instrucciones (117), y cómo el controlador fija la ruta que carga un 0 en las etapas 3 (115), 4 (118) y 5 (121) del pipeline de traza (113), mientras la dirección de salto “Z” (600) se enruta hacia el registro de entrada de la etapa de búsqueda (139). La detección de la burbuja en la etapa 4 corresponde con la puesta a 1 de la señal "BURBUJA_P4" ( 126) y consecuentemente de la señal "BURBUJA" (122). La ruta hacia la etapa 3 del pipeline de traza (115) se controla asignando 0 a la señal "SEL_PIPE_TRAZA" ( 132), la ruta hacia la etapa 4 (118) se controla asignando un 0 a la señal "SEL_TR_P4" (133), y la ruta hacia la etapa 5 (121) se controla asignando un 0 a la señal "SEL_TR_P5" (134). La carga del registro de entrada de la etapa de búsqueda (139) se controla activando la señal "LD_DIR" (137) y enrutando la dirección "Z" (600) hacía dicho registro (139) asignando un 0 a la señal "SEL_DIR" (138).
La figura 8 representa la espera de dos ciclos (801 y 802) tras cualquiera de las dos burbujas descritas en las figuras 6 y 7, de forma que en el ciclo T+2 (802) la etapa de búsqueda (100) desactiva la señal “ESPERA” (124) indicando que las instrucciones están disponibles para cargarse en la etapa de decodificación (103) en el siguiente ciclo, activándose las señales “LD_N” ( 127) y “LD_N_1” (128).
En el conjunto de casos presentados en las figuras 3, 4, 5, 6, 7 y 8 se describe cómo se comporta el dispositivo propuesto en la invención ante las distintas secuencias de instrucciones, y la aparición de posibles burbujas. En todos los casos se comprueba que el dispositivo hace efectiva la sincronización de la ejecución de las instrucciones de traza con las instrucciones trazadas, evitándose además la sobrecarga en tiempo de ejecución, ya que las instrucciones de traza siempre se ejecutan en paralelo con las instrucciones a trazar.
La realización de la invención estará basada en la especificación estructural de la figura 1 y de funcionamiento según el diagrama de transición de estados de la figura 2, y las tablas definidas en las figuras 9, 10, 11 y 12. Las figuras 3, 4, 5 y 6 completan los detalles que facilitan la implementación.
La realización física preferida consistirá en la implementación “Hardware/Firmware” de la funcionalidad descrita, partiendo de un modelo de descripción de una arquitectura estándar de procesador sobre el que se realizarán las mencionadas modificaciones y que afectan, básicamente, al diseño del pipeline. Dichos modelos de descripción de arquitecturas, van a permitir generar los detalles de fabricación del dispositivo, que podrá ser materializado sobre un dispositivo programable como una FPGA (Matriz de Puertas Programables, Field Programmable Gate Array) o bien sobre un Circuito Integrado de Aplicación Específica (ASIC, Application Specific Integrated Circuit).
Hay diferentes opciones de realización. Todas ellas parten del modelo VHDL de un “IP Core” de un procesador RISC segmentado, como ARM o LEON, sobre el que se modificará la implementación de la estructura del pipeline del dispositivo para incluir la funcionalidad descrita en esta patente. El objetivo es generar un nuevo “IP Core”, que podrá ser fabricado sobre FPGA o ASIC.

Claims (2)

REIVINDICACIONES
1. Un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza, caracterizado porque comprende:
• una etapa de búsqueda de instrucciones (100), que a su vez comprende:
o un módulo de cálculo de la dirección de la instrucción (101); y, o módulo de búsqueda de las instrucciones con doble puerto de lectura (102);
• una etapa de decodificación duplicada (103);
• un pipeline-traza (113) para el procesado únicamente de instrucciones de traza;
• un registro de salida (123) para la traza;
• una ruta de datos que a su vez comprende un conjunto de multiplexores (109, 110, 116, 119);
• un controlador de la ruta de datos (104), que a su vez comprende unas entradas (105) y unas salidas (106) que controlan los multiplexores (109, 110, 116, 119), la carga en unos registros asociados las distintas etapas (107, 108, 114, 115, 117, 118, 120, 121) y el registro de salida (123) para la traza;
donde el controlador de la ruta de datos (104) está configurado para determinar, en función del estado de dicho controlador (104) y del valor de las entradas (105) en dicho controlador, el valor de las salidas (106) que son enviadas a los multiplexores (109, 110, 116 y 119) de la ruta de datos de tal forma que una instrucción de traza se ejecuta de forma sincronizada con la instrucción que la precede, haciéndose efectiva dicha ejecución durante la última etapa (121) del pipeline de traza (113);
donde el controlador comprende las siguientes secuencias de instrucciones:
• S1: corresponde a pares Instrucción-Traza (301- 302, 303-304 y 305-306) en los que las instrucciones a ser trazadas (301, 303 y 305) siempre se cargan en el elemento “INSTRUCCIÓN N” (107), mientras las instrucciones correspondientes de traza (302, 304 y 306) se cargan en el elemento “INSTRUCCIÓN N+1” (115); donde el dispositivo de procesamiento ejecuta la secuencia S1 durante dos ciclos de reloj, T (300) y T+1 (307); de tal forma que las instrucciones almacenadas en unas direcciones X+1 (302), X+3 (304) y X+5 (306), son las instrucciones de traza de las instrucciones que las preceden, ubicadas, respectivamente, en unas direcciones X (301), X+2 (303) y X+4 (305)
• S2: corresponde a una secuencia de instrucciones (401, 402, 403 y 404) que no son trazadas, de forma en los elementos “INSTRUCCIÓN N” (114) e “INSTRUCCIÓN N+1” (115) siempre se cargan instrucciones; donde el dispositivo de procesamiento ejecuta la secuencia S2 en la que durante dos ciclos no se cargan instrucciones de traza; de tal forma que durante el primer ciclo T (400) se detecta que las dos instrucciones que están cargadas en la etapa de decodificación (403 y 404) no son de traza, y por tanto las señales “N_ES_TRAZA” (129) y “N_1_ES_TRAZA” (130) valen ambas “0”; y, en el ciclo T 1 (408) el controlador se encuentra en el estado denominado “INSTR PENDIENTE” (202), en el que la instrucción pendiente (404) ubicada en la segunda unidad de decodificación (108) se dirige hacia la “etapa 3” del pipeline de instrucciones del procesador (114);
• S3: corresponde a dos pares Instrucción-Traza (502- 503 y 504-505) en los que las instrucciones de traza (503 y 505) se cargan en ciclos sucesivos (500 y 510) en el elemento “INSTRUCCIÓN N 1” (107), mientras las instrucciones a trazar (502 y 504) se cargan en esos mismos ciclos en el elemento “INSTRUCCIÓN N+1” (108); el dispositivo de procesamiento ejecuta la secuencia S3: en el ciclo T (500) el valor de la señal “N_ES_TRAZA” (129) es “1”, mientras que “N_1_ES_TRAZA” (130) vale “0”, y el valor de la señal de multiplexación “SEL_TR_P4” (133) es “2”, de tal forma que se habilita una ruta donde la instrucción de traza (503) se sincroniza con la ejecución de la instrucción a trazar (502); en el ciclo T+1 (510), se ubica la instrucción de traza (503) en la etapa 4 del pipeline de traza (118). En el ciclo T(500), además, la señal de multiplexación “SEL_PIPE_TRAZA” (132) toma el valor 0, con el fin de que en el ciclo T+1 (510) se encuentre un cero (507) en la etapa 3 del pipeline de traza (115);
donde el dispositivo de procesamiento durante un ciclo “T”, detecta una burbuja en la etapa 3 del pipeline de instrucciones (114), de tal forma que el controlador fija la ruta que carga un “0” en las etapas 3 (115) y 4 (118) del pipeline- traza (113) y una dirección de salto “Z” (600) se enruta hacía el registro de entrada de la etapa de búsqueda (139), de tal forma que la detección de la burbuja en la etapa 3 se corresponde con la puesta a “1” de la señal "BURBUJA_P3" (125) y de la señal "BURBUJA" (122);
donde el controlador controla: la ruta hacia la etapa 3 (115) asignando "0” a la señal "SEL_PIPE_TRAZA" (132); la ruta hacia la etapa 4 (118) asignando un “0” a la señal "SEL_TR_P4" (133); y la carga del registro de entrada de la etapa de búsqueda (139) activando la señal "LD_DIR" (137) y enrutando la dirección "Z" (600) hacía dicho registro (139) asignando un “0” a la señal "SEL_DIR" (138);
donde el dispositivo de procesamiento durante un ciclo “T”, detecta una burbuja en la etapa 4 del pipeline de instrucciones (117), de tal forma el controlador fija la ruta que carga un “0” en las etapas 3 (115), 4 (118) y 5 (121) del pipeline-traza (113) y la dirección de salto “Z” (600) se enruta hacia el registro de entrada de la etapa de búsqueda ( 139), de tal forma que la detección de la burbuja en la etapa 4 se corresponde con la puesta a “1” de la señal "BURBUJA_P4" (126) y de la señal "BURBUJA" (122);
donde el controlador controla: la ruta hacia la etapa 3 del pipeline-traza (115) asignando “0” a la señal "SEL_PIPE_TRAZA" ( 132); la ruta hacia la etapa 4 (118) asignando un “0” a la señal "SEL_TR_P4" (133); la ruta hacia la etapa 5 (121) se controla asignando un “0” a la señal "SEL_TR_P5" (134); y, la carga del registro de entrada de la etapa de búsqueda (139) activando la señal "LD_DIR" (137) y enrutando la dirección "Z" (600) hacía dicho registro (139) asignando un 0 a la señal "SEL_DIR" ( 138).
2. Un procesador RISC, “Computador con Conjunto de Instrucciones Reducidas”, caracterizado porque comprende un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza según la reivindicación 1.
ES201830266A 2018-03-20 2018-03-20 Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza Active ES2697548B2 (es)

Priority Applications (2)

Application Number Priority Date Filing Date Title
ES201830266A ES2697548B2 (es) 2018-03-20 2018-03-20 Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza
PCT/ES2019/070176 WO2019180288A1 (es) 2018-03-20 2019-03-18 Un método y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ES201830266A ES2697548B2 (es) 2018-03-20 2018-03-20 Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza

Publications (2)

Publication Number Publication Date
ES2697548A1 ES2697548A1 (es) 2019-01-24
ES2697548B2 true ES2697548B2 (es) 2020-07-22

Family

ID=65024202

Family Applications (1)

Application Number Title Priority Date Filing Date
ES201830266A Active ES2697548B2 (es) 2018-03-20 2018-03-20 Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza

Country Status (2)

Country Link
ES (1) ES2697548B2 (es)
WO (1) WO2019180288A1 (es)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2802723B2 (es) * 2019-07-12 2021-07-27 Univ Alcala Henares Un metodo para el trazado selectivo de la ejecucion de instrucciones, dispositivo de procesamiento relacionado y procesador

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
US5996092A (en) * 1996-12-05 1999-11-30 International Business Machines Corporation System and method for tracing program execution within a processor before and after a triggering event
US5933626A (en) * 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
US9652243B2 (en) * 2011-06-29 2017-05-16 International Business Machines Corporation Predicting out-of-order instruction level parallelism of threads in a multi-threaded processor
US9552032B2 (en) * 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction

Also Published As

Publication number Publication date
ES2697548A1 (es) 2019-01-24
WO2019180288A1 (es) 2019-09-26

Similar Documents

Publication Publication Date Title
ES2588185T3 (es) Circuito de depuración de comparación de modo operativo de un conjunto de instrucciones de procesador
KR101183651B1 (ko) 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법
US7043416B1 (en) System and method for state restoration in a diagnostic module for a high-speed microprocessor
US7870437B2 (en) Trace data timestamping
US7332929B1 (en) Wide-scan on-chip logic analyzer with global trigger and interleaved SRAM capture buffers
ES2351894T3 (es) Procedimiento y aparato para reconocer una llamada a una subrutina.
BR102013015049B1 (pt) aparelho e método
US11698883B2 (en) Assigning identifiers to processing units in a column to repair a defective processing unit in the column
WO2007113346A1 (es) Deteccion de errores transitorios mediante nueva ejecucion selectiva
JP4076946B2 (ja) 先入れ先出しメモリ・システム及びその方法
US20140033181A1 (en) Reverse debugging
US10795685B2 (en) Operating a pipeline flattener in order to track instructions for complex
ES2697548B2 (es) Un metodo y un dispositivo de procesamiento en paralelo de instrucciones de programa e instrucciones de traza
US9361104B2 (en) Systems and methods for determining instruction execution error by comparing an operand of a reference instruction to a result of a subsequent cross-check instruction
KR20200088760A (ko) 체크섬 생성
JP2011048681A (ja) プロセッサ
US9395992B2 (en) Instruction swap for patching problematic instructions in a microprocessor
US6934828B2 (en) Decoupling floating point linear address
US20140351556A1 (en) Methods for operating and configuring a reconfigurable processor
US11119873B2 (en) Processor repair
ES2802723B2 (es) Un metodo para el trazado selectivo de la ejecucion de instrucciones, dispositivo de procesamiento relacionado y procesador
US10719325B2 (en) System and method of VLIW instruction processing using reduced-width VLIW processor
US9582286B2 (en) Register file management for operations using a single physical register for both source and result
TWI802951B (zh) 儲存有限狀態機之狀態資料的方法、電腦系統、及電腦程式產品
Lu et al. RaceFree: An efficient multi-threading model for determinism

Legal Events

Date Code Title Description
BA2A Patent application published

Ref document number: 2697548

Country of ref document: ES

Kind code of ref document: A1

Effective date: 20190124

FG2A Definitive protection

Ref document number: 2697548

Country of ref document: ES

Kind code of ref document: B2

Effective date: 20200722