ES2588185T3 - Circuito de depuración de comparación de modo operativo de un conjunto de instrucciones de procesador - Google Patents
Circuito de depuración de comparación de modo operativo de un conjunto de instrucciones de procesador Download PDFInfo
- Publication number
- ES2588185T3 ES2588185T3 ES07813770.0T ES07813770T ES2588185T3 ES 2588185 T3 ES2588185 T3 ES 2588185T3 ES 07813770 T ES07813770 T ES 07813770T ES 2588185 T3 ES2588185 T3 ES 2588185T3
- Authority
- ES
- Spain
- Prior art keywords
- operating mode
- instruction set
- instruction
- processor
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Un procedimiento para la depuración de código de software que comprende una pluralidad de instrucciones en un procesador (10) que tiene al menos dos modos operativos de conjuntos de instrucciones diferentes, caracterizado por que comprende: recibir (80) un modo operativo de conjunto de instrucciones objetivo antes de ejecutar cualquier instrucción de código; ejecutar (82, 84) instrucciones de código y, para cada instrucción ejecutada, comparar (86) el modo operativo del conjunto de instrucciones del procesador actual (10) con el modo operativo del conjunto de instrucciones objetivo; y desencadenar (92, 94, 96, 98, 100) una alerta si el modo operativo del conjunto de instrucciones del procesador actual (10) coincide con el modo operativo del conjunto de instrucciones objetivo.
Description
5
10
15
20
25
30
35
40
45
50
55
60
DESCRIPCION
Circuito de depuracion de comparacion de modo operativo de un conjunto de instrucciones de procesador CAMPO
La presente invencion se refiere en general al campo de los procesadores y, en particular, a un sistema y procedimiento de depuracion de codigo en un procesador a traves de un circuito de depuracion que incluye la consideracion del modo operativo de un conjunto de instrucciones de procesador.
ANTECEDENTES
Los procesadores modernos son sistemas muy complicados. La mayorfa de los procesadores modernos emplean una arquitectura segmentada, donde las instrucciones secuenciales, cada una con multiples etapas de ejecucion, se solapan en ejecucion. Muchos procesadores, conocidos como "procesadores superescalares", incluyen dos o mas segmentos separados para la ejecucion de instrucciones en paralelo. Para evitar paradas en el segmento debido a las instrucciones de bifurcacion, la mayorfa de los procesadores emplean diversas formas de prediccion de ramificacion, con la carga y la ejecucion especulativa de las instrucciones cuando se toman las ramificaciones predichas. Para mejorar el rendimiento, muchos procesadores modernos separan las direcciones de registros logicos de los registros de almacenamiento de memoria ffsica correspondientes, conocido como cambio de nombre de registro. Para proporcionar programas con la ilusion de una memoria ilimitada y rapida, muchos procesadores ejecutan codigo en un espacio de direcciones virtuales, traduciendo las direcciones a uno o mas espacios de direcciones ffsicas como datos que atraviesan una jerarqufa de memoria (por ejemplo, registro, memoria cache, memoria principal). Con esta complejidad, la ejecucion de codigo dentro de un procesador moderno es muy diffcil de seguir y validar con precision. En particular, las anomalfas pueden ser muy diffciles de depurar.
Ademas, el software que se ejecuta en los procesadores modernos es por si mismo extremadamente complejo. Con el advenimiento de las arquitecturas de procesador de calculo de conjunto de instrucciones reducidas (RISC), gran parte de la complejidad computacional y logica de la computacion emigraron de las instrucciones del procesador a los compiladores de optimizacion. Es decir, los compiladores crean operaciones complejas a partir de un conjunto relativamente pequeno de instrucciones del procesador, cada una de las cuales esta optimizada para una funcion particular y especffica. Esto se traduce en una secuencia mas larga y compleja de instrucciones, incluyendo, por ejemplo, logica, aritmetica, carga/almacenamiento y operacion de ramificacion, para una tarea computacional dada. Dicho codigo complejo puede ser diffcil de depurar cuando los errores provocan un comportamiento anomalo del programa.
Para ayudar en la diffcil tarea de depuracion del codigo complejo que se ejecuta en un procesador complejo, las herramientas de depuracion estan integradas en muchos procesadores. Estas pueden comprender comparadores de direcciones y de datos para la identificacion de instrucciones especfficas y/o patrones de datos. Las herramientas de depuracion pueden incluir adicionalmente comparadores de rango de direcciones, de modo que la depuracion o el rastreo puede estar limitado a segmentos de codigo predeterminados. Otras herramientas de depuracion pueden incluir contadores, secuenciadores, y similares, para proporcionar flexibilidad en la especificacion de las condiciones que especifican los puntos de interrupcion y/o trazan los factores desencadenantes. La informacion de rastreo puede proporcionarse fuera del chip, tal como a traves de un bus dedicado, o se puede almacenar en una memoria intermedia en el chip dedicado. Los puntos de interrupcion pueden desencadenar una o mas senales externas, tales como armar y/o desencadenar un analizador logico o iluminar un LED; pueden causar una excepcion, ramificando la ejecucion de codigo a una rutina de depuracion; o pueden simplemente detener la ejecucion, permitiendo inspeccionar el contenido de varios registros y de la memoria cache. Estas herramientas de depuracion, que no se utilizan durante la ejecucion normal del procesador, se han disenado en los circuitos de procesador, de tal manera que se minimice el impacto sobre el rendimiento del procesador y el consumo de energfa.
Los programadores pueden establecer explfcitamente el modo operativo del conjunto de instrucciones adecuado en software, antes de la ejecucion de instrucciones de acuerdo con la codificacion del conjunto de instrucciones correspondiente. Sin embargo, el software errante puede ramificarse a veces a una direccion de instruccion particular que estaba destinada a ser ejecutada mientras estaba en un modo operativo del conjunto de instrucciones, pero mientras el procesador esta en realidad en algun otro modo operativo del conjunto de instrucciones. En tal caso, el procesador puede intentar ejecutar la instruccion en esa direccion mediante la decodificacion inadecuada del conjunto de instrucciones, dando lugar a resultados incorrectos.
Por ejemplo, algunas versiones de la arquitectura de procesador ARM incluyen al menos dos modos operativos del conjunto de instrucciones: un modo ARM de 32 bits y un modo Thumb de 16 bits. La Tabla 1 enumera un fragmento de codigo de instrucciones ARM:
5
10
15
20
25
30
35
40
45
50
Tabla 1: Codificacion de instrucciones de modo ARM
- 000096F0
- cpy r4, r0
- 000096F4
- b1 0xA8A0
- 000096FC
- cpy r1, r4
- 00009700
- ldr r0, o o X 00
La Tabla 2 enumera el mismo codigo traducido en modo Thumb:
Tabla 2: Codificacion de instrucciones de modo Thumb
- 000096F0
- y r0, r0
- 000096F2
- b 0x9A36
- 000096F4
- lsl r1, r5, #0x11
- 000096F6
- add.w r0, r0, r4, lsl #0X4
- 000096FA
- b 0x9A3E
- 000096FC
- lsl r0, r1, #0x0
- 000096FE
- b 0x9222
- 00009700
- y r0, r2
Deben tenerse en cuenta, en particular, las instrucciones de ramificacion en 96F2, 96FA y 96FE. Debido a la ramificacion irregular, puede ser diffcil determinar el punto en el cual se provoco un error en el codigo ARM de la Tabla 1 para ser interpretado en modo Thumb como en la Tabla 2 y, por lo tanto, para depurar el error. Esta dificultad surge porque los circuitos de depuracion de la tecnica anterior no incluyen el modo operativo del conjunto de instrucciones del procesador como una entrada a la logica que desencadena los puntos de interrupcion, inicia los rastros, y similares. El documento GB 2374694 A describe un codificador que codifica un conjunto de instrucciones con la direccion de instruccion.
La mayorfa de los procesadores que soportan dos o mas "modos" operativos, tales como modos de supervisor y de usuario, o modos reales y protegidos, cambian entre los modos provocando una excepcion y ramificando a una rutina de cambio de modo. Esta operacion se detecta facilmente utilizando herramientas de depuracion de la tecnica anterior y software mediante el establecimiento de un punto de interrupcion o de inicio de un rastro en la direccion de la instruccion de la rutina de cambio de modo. Un procesador que conmuta los modos operativos del conjunto de instrucciones sin provocar una excepcion es un ejemplo de comportamiento de codigo que es diffcil de diagnosticar con herramientas de depuracion de la tecnica anterior, que no incluyen el modo operativo del conjunto de instrucciones del procesador como una consideracion en el desencadenamiento de los puntos de interrupcion, el inicio de los rastros, y similares.
El documento GB2374694 describe un procedimiento para almacenar informacion del conjunto de instrucciones que comprende un circuito de procesamiento para ejecutar instrucciones de procesamiento de cualquiera de una pluralidad de conjuntos de instrucciones de las instrucciones de procesamiento, especificandose cada instruccion de procesamiento mediante una direccion de instruccion que identifica esa ubicacion de la instruccion de procesamiento en la memoria.
El documento US2006/149927 describe un procesador capaz de recibir una pluralidad de conjuntos de instrucciones desde al menos una memoria, y capaz de la ejecucion de multiples subprocesos de la pluralidad de conjuntos de instrucciones.
El documento US6308323 describe un procedimiento para la compilacion de un programa fuente para un procesador que tiene una pluralidad de diferentes conjuntos de instrucciones a alta velocidad mediante la seleccion de un conjunto de instrucciones optimas.
RESUMEN
La invencion se refiere a un procedimiento de depuracion de codigo de software como se establece en las reivindicaciones 1 a 7, y se refiere ademas a un procesador tal como se establece en las reivindicaciones 8 a 14.
BREVE DESCRIPCION DE LOS DIBUJOS
La figura 1 es un diagrama de bloques funcional de un procesador.
La figura 2 es un diagrama de bloques funcional de un segmento de procesador, incluyendo un circuito de depuracion.
La figura 3 es un diagrama de flujo de un proceso de diagnostico/depuracion.
3
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION DETALLADA
La figura 1 representa un diagrama de bloques funcional de un procesador 10. El procesador 10 ejecuta instrucciones en un segmento de ejecucion de instrucciones 12 de acuerdo con una logica de control 14. La logica de control 14 mantiene un contador de programa (PC) 15, y establece y borra bits en uno o mas registros de estado 16 para indicar, por ejemplo, el modo operativo del conjunto de instrucciones actual, informacion sobre los resultados de las operaciones aritmeticas y las comparaciones logicas (cero, llevar, igual, no igual), y similares. En algunos modos de realizacion, el segmento 12 puede ser un diseno superescalar, con multiples segmentos paralelos. El segmento 12 tambien puede denominarse como una unidad de ejecucion. Un registro de proposito general (GPR) 20 proporciona registros accesibles por el segmento 12, y que comprende la parte superior de la jerarqufa de memoria.
El procesador 10, que ejecuta las instrucciones de al menos dos conjuntos de instrucciones en diferentes modos operativos del conjunto de instrucciones, ademas, incluye un circuito de depuracion 18, operativo para comparar, tras la ejecucion de cada instruccion, al menos un modo operativo de un conjunto de instrucciones objetivo predeterminadas con el actual modo operativo del conjunto de instrucciones, y para proporcionar una indicacion de una coincidencia entre los dos. El circuito de depuracion 18 se describe con mayor detalle a continuacion.
El segmento 12 extrae instrucciones desde una memoria cache de instrucciones (cache I) 26, con la traduccion de las direcciones de memoria y los permisos administrados por una memoria intermedia de consulta de traduccion secundaria de instrucciones (ITLB) 28. A los datos se accede desde una memoria cache de datos (cache D) 30, con traduccion de las direcciones de memoria y permisos gestionados por una memoria intermedia de consulta de direcciones de traduccion principal (TLB) 32. En diversos modos de realizacion, la ITLB 28 puede comprender una copia de parte de la TLB 32. Como alternativa, la ITLB 28 y la TLB 32 pueden estar integradas. Del mismo modo, en diversos modos de realizacion del procesador 10, la memoria cache I 26 y la memoria cache D 30 pueden estar integradas, o unificadas. La falta en la memoria cache I 26 y/o la memoria cache D 30 provoca un acceso a la memoria principal (fuera de chip) 38, 40 mediante una interfaz de memoria 34. La interfaz de memoria 34 puede ser una entrada principal a una interconexion de bus 42 que implementa un bus compartido a uno o mas dispositivos de memoria 38, 40. Pueden conectarse adicionalmente dispositivos principales adicionales (no mostrados) a la interconexion de bus 42.
El procesador 10 puede incluir una interfaz de entrada/salida (E/S) 44, que puede ser un dispositivo principal en un bus periferico, a traves de la que la interfaz E/S 44 puede acceder a diversos dispositivos perifericos 48, 50. Los expertos en la tecnica reconoceran que son posibles numerosas variaciones del procesador 10. Por ejemplo, el procesador 10 puede incluir una memoria cache de segundo nivel (L2) para una o ambas de las memorias cache I y D 26, 30. Ademas, uno o mas de los bloques funcionales representados en el procesador 10 pueden omitirse de un modo de realizacion particular. Otros bloques funcionales que pueden residir en el procesador 10, tales como un controlador JTAG, un predecodificador de instrucciones, una memoria cache de direccion de destino de ramificacion, y similares, no son pertinentes para una descripcion de la presente invencion, y se omiten para mayor claridad.
La figura 2 representa un diagrama de bloques funcional de un modo de realizacion del circuito de depuracion 18. El circuito de depuracion 18 incluye un registro del modo operativo del conjunto de instrucciones objetivo 52, un registro de direcciones del inicio del intervalo de direcciones 54, y un registro de direcciones del final del intervalo de direcciones 56. Los registros 52, 54, 56 se cargan mediante programadores a traves de software de diagnostico antes de una operacion de diagnostico/depuracion. El valor escrito en el registro del modo operativo del conjunto de instrucciones objetivo 52 se compara con el modo operativo del conjunto de instrucciones del procesador actual durante la ejecucion de cada instruccion, para desencadenar un punto de interrupcion, una funcion de rastreo, u otro aviso. Los valores de los registros de direcciones de inicio y final 52, 56, son el principio y el final, respectivamente, del intervalo de direcciones objetivo sobre el que el circuito de depuracion 18 monitoriza una coincidencia entre los modos operativos del conjunto de instrucciones actual y objetivo.
Como los expertos en la tecnica reconoceran facilmente, el circuito de depuracion 18 puede incluir parametros adicionales personalizables, y bloques funcionales adicionales, permitiendo puntos de interrupcion, rastros, y similares que desencadenen en una amplia diversidad de condiciones. Estos se han omitido de la figura 2 para mayor claridad, pero en general pueden incluir todos los parametros del circuito de depuracion y la funcionalidad conocidos en la tecnica.
Antes de una ejecucion de diagnostico/depuracion, un programador carga los registros de direccion inicial y final 54, 56 para definir una region de direccion de destino, que puede ir desde una sola direccion a la totalidad del intervalo de direcciones del codigo que esta siendo probado. En otros modos de realizacion, pueden proporcionarse multiples registros de direccion inicial y final para definir una pluralidad de intervalos de direcciones objetivo. El programador, ademas, carga el registro del modo operativo del conjunto de instrucciones objetivo 52. Por ejemplo, en el caso de un procesador ARM que ejecuta el codigo en su totalidad en el modo ARM, un programador puede cargar el registro 52 con un valor que indica el modo Thumb, para establecer un punto de interrupcion que hace que el circuito de depuracion 18 detenga la ejecucion, por ejemplo, si el procesador 10 ejecuta la instruccion dentro del intervalo de
4
5
10
15
20
25
30
35
40
45
50
55
60
65
direcciones definido por los registros 54, 56 en el modo Thumb.
Durante la operacion de diagnostico/depuracion, el valor almacenado en el registro del modo operativo del conjunto de instrucciones objetivo 52 se compara con un bit de registro de estado que indica el conjunto de instrucciones del modo operativo actual del procesador 10 en la logica de comparacion, tal como la puerta AND 58. Por ejemplo, en un procesador ARM 10, el bit 5 del registro del estado del programa actual (CPSR) 16 puede monitorizarse. La salida 60 de la logica de comparacion 58 se determinara solamente cuando el modo operativo del conjunto de instrucciones actual del procesador 10 coincida con el modo operativo del conjunto de instrucciones indicado por el registro del modo operativo del conjunto de instrucciones objetivo 52.
En modos de realizacion en los que el procesador 10 ejecuta instrucciones de mas de dos conjuntos de instrucciones en diferentes modos operativos del conjunto de instrucciones, el registro del modo operativo del conjunto de instrucciones objetivo 52 y los bits indicadores de modo del CPSR (u otro registro de estado) 16 comprenderan los valores de multiples bits, y la logica de comparacion 58 puede incluir circuitos adicionales, tales como decodificadores. En diversos modos de realizacion, se pueden utilizar otras indicaciones del modo operativo actual del conjunto de instrucciones en lugar del CPSR 16, tal como la salida de la logica de decodificacion de instrucciones.
Al mismo tiempo, el valor actual del PC 15 se compara con los registros del intervalo de direcciones 54, 56 en la logica de comparacion de direcciones 68. La salida 70 de la logica de comparacion de direcciones 68 se determina cada vez que el valor actual del PC 15 esta dentro del intervalo de direcciones objetivo. En diversos modos de realizacion, las indicaciones de la direccion de la instruccion "actual" pueden variar del PC 15, segun se requiera o se desee. Por ejemplo, el circuito de comparacion de direcciones 68 puede comparar la direccion de instrucciones en una etapa de decodificacion del segmento 12, una etapa de ejecucion, o cualquier otra etapa del segmento. Ademas, se puede utilizar una direccion mas dinamica, tal como la direccion de la ultima instruccion en el segmento 12 para comprometerse con la ejecucion.
La salida 70 de la logica de comparacion de direcciones 68 esta en AND con la salida 60 de la logica de comparacion del indicador de modo operativo del conjunto de instrucciones 58 en la puerta AND 72, para generar una salida 20 que indica una coincidencia diaria entre los modos operativos del conjunto de instrucciones actual y objetivo que se produce dentro del intervalo de direcciones objetivo. En un modo de realizacion, la salida 20 se proporciona como una salida para el procesador (vease la figura 1). Esta salida 20 puede armar y/o desencadenar un analizador logico, iluminar un LED, o desencadenar alguna otra accion o alarma. En un modo de realizacion, como se representa en la figura 1, la salida del indicador de coincidencias del modo operativo del conjunto de instrucciones 20 puede comprender una entrada al controlador 14, para detener la ejecucion del procesador 10.
En un modo de realizacion, la salida del indicador de coincidencias del modo operativo del conjunto de instrucciones 20 puede inicializar o terminar una operacion de trazado de instrucciones, estando la informacion de trazado dirigida a las clavijas de salida del procesador 10 o almacenada en una memoria intermedia de seguimiento en el chip (no mostrada). En un modo de realizacion, como se representa en la figura 2, la salida del indicador de coincidencias del modo operativo del conjunto de instrucciones 20 puede desencadenar un registro de direcciones de correspondencia con el modo operativo del conjunto de instrucciones 74, capturando el valor del PC 15 y, por lo tanto, la direccion de la instruccion en la que se puede detectar la coincidencia entre los modos operativos del conjunto de instrucciones actual y objetivo. Esto puede ser de particular valor en la deteccion de un cambio de un modo operativo del conjunto de instrucciones a otro. La salida 76 de este registro 74 puede encaminarse a unas clavijas del procesador 10 para una inspeccion externa.
En un modo de realizacion, la salida del indicador de correspondencia del modo operativo del conjunto de instrucciones 20 puede provocar una excepcion, ramificando la ejecucion del codigo a una rutina predefinida. Esta rutina de correspondencia del modo operativo del conjunto de instrucciones puede, por ejemplo, leer el registro de direcciones de correspondencia del modo operativo del conjunto de instrucciones 74. En general, la salida del indicador de correspondencia del modo operativo del conjunto de instrucciones 20 puede desencadenar cualquier operacion de depuracion conocida, segun se requiera o se desee.
La figura 3 representa un procedimiento de depuracion de codigo de acuerdo con uno o mas modos de realizacion de la presente invencion. Comenzando en el bloque 78, un programador inicia los registros del circuito de depuracion (bloque 80). Esto puede comprender, por ejemplo, cargar el registro del modo operativo del conjunto de instrucciones objetivo 52, y ajustar el intervalo de direcciones objetivo mediante la carga del registro de la direccion de inicio 54 y el registro de la direccion final 56. Pueden iniciarse los registros del circuito de depuracion adicionales (no mostrados), segun sea necesario o se desee.
Despues, el programador comienza la ejecucion del codigo que se va a depurar (bloque 82), cargando y ejecutando sucesivamente la siguiente instruccion (bloque 84) en la secuencia de codigo. Independientemente de la direccion, si el modo operativo del conjunto de instrucciones actual del procesador 10 no coincide con el establecido por el programador en el registro del modo operativo del conjunto de instrucciones objetivo 52 (bloque 86), entonces se carga la siguiente la instruccion y se ejecuta (bloque 84) hasta el final del codigo a depurar (bloque 88), en cuyo
5
5
10
15
20
25
30
35
caso el procedimiento se detiene en el bloque 90.
Si, tras la ejecucion de una instruccion (bloque 84), la direccion de la instruccion se encuentra dentro del intervalo de direcciones predeterminado, y el modo operativo del conjunto de instrucciones actual coincide con el establecido por el programador en el registro del modo operativo del conjunto de instrucciones objetivo 52 (bloque 86), entonces el circuito de depuracion determina la salida 20 y puede tomar cualquier numero de acciones, segun lo especificado por el programador.
Por ejemplo, la salida del circuito de depuracion 20 puede provocar que el procesador 10 tome una excepcion, ramificando la ejecucion de codigo a una rutina de coincidencia del modo operativo del conjunto de instrucciones (bloque 92). La salida del circuito de depuracion 20 puede hacer que el controlador del segmento 14 detenga la ejecucion (bloque 94), lo que permite al programador inspeccionar el contenido de varios registros, lfneas de cache, y similares. El circuito de depuracion 18 puede determinar la salida 20 externamente (bloque 96), que puede utilizarse para armar o desencadenar un analizador logico, iluminar un LED, o similares. El circuito de depuracion 18 puede, ademas, enviar a la direccion de correspondencia del modo operativo del conjunto de instrucciones para la inspeccion externa (bloque 98). El circuito de depuracion 18 puede iniciar o detener una operacion de trazado (bloque 100). Aunque se representa como alternativas, el circuito de depuracion 18 puede, en un modo de realizacion dado, ejecutar dos o mas de los bloques 92-96. En general, el circuito de depuracion 18 puede tomar cualquier accion conocida en la tecnica que sea beneficiosa para la depuracion del codigo en el procesador 10, despues de haber detectado una coincidencia entre el modo operativo del conjunto de instrucciones actual y el modo operativo del conjunto de instrucciones objetivo.
Como se utiliza en el presente documento, la expresion "conjunto de instrucciones" se refiere a un conjunto de codificaciones mediante las cuales los datos de instrucciones (por ejemplo, el contenido de una lfnea de memoria cache I) se interpretan por un procesador 10 como instrucciones ejecutables. La expresion "modo operativo del conjunto de instrucciones" se refiere a un modo operativo que se puede identificar del procesador 10 en el que los datos de instruccion se interpretan de acuerdo con una codificacion del conjunto de instrucciones particular. En particular, "modo operativo del conjunto de instrucciones" se distingue de los "modos" operativos del procesador conocidos respecto a los permisos (por ejemplo, modo de supervisor frente a modo de usuario), direccionamiento de memoria (por ejemplo, modo real frente a modo protegido), y similares.
Aunque la presente invencion se ha ha descrito en el presente documento con respecto a caracterfsticas, aspectos y modos de realizacion particulares de la misma, sera evidente que numerosas variaciones, modificaciones y otros modos de realizacion son posibles dentro del alcance de las reivindicaciones adjuntas. Por lo tanto, los presentes modos de realizacion deben interpretarse en todos los aspectos como ilustrativos y no restrictivos, y todos los cambios que entran dentro del significado y el rango de equivalencia de las reivindicaciones adjuntas estan destinados a incluirse en los mismos.
Claims (11)
- 5101520253035404550556065
- 2.
- 3.
- 4.
- 5.
- 6. 7.
- 8.
- 9.
- 10. 11. 12.REIVINDICACIONESUn procedimiento para la depuracion de codigo de software que comprende una pluralidad de instrucciones en un procesador (10) que tiene al menos dos modos operativos de conjuntos de instrucciones diferentes, caracterizado por que comprende:recibir (80) un modo operativo de conjunto de instrucciones objetivo antes de ejecutar cualquier instruccion de codigo; ejecutar (82, 84) instrucciones de codigo y, para cada instruccion ejecutada, comparar (86) el modo operativo del conjunto de instrucciones del procesador actual (10) con el modo operativo del conjunto de instrucciones objetivo; ydesencadenar (92, 94, 96, 98, 100) una alerta si el modo operativo del conjunto de instrucciones del procesador actual (10) coincide con el modo operativo del conjunto de instrucciones objetivo.El procedimiento de la reivindicacion 1, en el que la alerta comprende detener la ejecucion de instrucciones.El procedimiento de la reivindicacion 1, en el que la alerta comprende controlar una operacion de trazado.El procedimiento de la reivindicacion 1, en el que la alerta comprende causar una excepcion.El procedimiento de la reivindicacion 1, en el que la alerta comprende emitir una serial indicativa de una coincidencia entre el modo operativo del conjunto de instrucciones del procesador actual y el modo operativo del conjunto de instrucciones objetivo.El procedimiento de la reivindicacion 1, en el que la alerta comprende emitir la direccion de la instruccion para la que el modo operativo del conjunto de instrucciones del procesador actual coincida con el modo operativo del conjunto de instrucciones objetivo.El procedimiento de la reivindicacion 1, que comprende ademas:recibir (80) un intervalo de direcciones objetivo antes de ejecutar (82, 84) cualquier instruccion de codigo;para cada instruccion ejecutada, comparar (86) la direccion de la instruccion actual en el intervalo de direcciones objetivo; ydesencadenar (92, 94, 98, 100) la alerta solo si el modo operativo del conjunto de instrucciones del procesador actual (10) coincide con el modo operativo del conjunto de instrucciones objetivo y la direccion de la instruccion actual esta dentro del intervalo de direcciones objetivo.Un procesador (10) operativo para ejecutar instrucciones de acuerdo con dos o mas codificaciones de conjuntos de instrucciones, cada una en un modo operativo del conjunto de instrucciones diferente, caracterizado por que comprende:un indicador del modo operativo del conjunto de instrucciones actual;una ubicacion del almacenamiento de datos (52) operativa para almacenar un indicador del modo operativo del conjunto de instrucciones objetivo; una unidad de ejecucion operativa para ejecutar instrucciones de acuerdo con un modo operativo del conjunto de instrucciones actual; yun circuito de comparacion (58, 68, 72) operativo para comparar el modo operativo del conjunto de instrucciones actual con el modo operativo del conjunto de instrucciones objetivo al ejecutar cada instruccion, y para emitir una indicacion (20) si el modo operativo del conjunto de instrucciones actual coincide con el modo operativo del conjunto de instrucciones objetivo para activar una alerta.El procedimiento de la reivindicacion 8, en el que la indicacion comprende una senal operativa para detener la ejecucion de instrucciones.El procedimiento de la reivindicacion 8, en el que la indicacion comprende una senal operativa para controlar una operacion de trazado.El procedimiento de la reivindicacion 8, en el que la indicacion comprende una senal operativa para causar una excepcion.El procesador (10) de la reivindicacion 8, en el que la indicacion (20) comprende una senal que indica que el modo operativo del conjunto de instrucciones actual coincide con el modo operativo del conjunto de710instrucciones objetivo.
- 13. El procesador (10) de la reivindicacion 8, en el que la indicacion (20) comprende la direccion de la instruccion que se ejecuta cuando se detecta una coincidencia entre el modo operativo del conjunto de instrucciones actual y el modo operativo del conjunto de instrucciones objetivo.
- 14. El procesador (10) de la reivindicacion 8, que comprende ademas una ubicacion de almacenamiento de datos (52, 54) operativa para almacenar un intervalo de direcciones de destino, y en el que el circuito de comparacion (58, 68, 72) es operativo para emitir una indicacion solo si el modo operativo del conjunto de instrucciones actual coincide con el modo operativo del conjunto de instrucciones objetivo y la direccion de la instruccion que se esta ejecutando actualmente esta dentro del intervalo de direcciones objetivo.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US463379 | 2003-06-17 | ||
US11/463,379 US8352713B2 (en) | 2006-08-09 | 2006-08-09 | Debug circuit comparing processor instruction set operating mode |
PCT/US2007/075194 WO2008021763A1 (en) | 2006-08-09 | 2007-08-03 | Debug circuit comparing processor instruction set operating mode |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2588185T3 true ES2588185T3 (es) | 2016-10-31 |
Family
ID=38891045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES07813770.0T Active ES2588185T3 (es) | 2006-08-09 | 2007-08-03 | Circuito de depuración de comparación de modo operativo de un conjunto de instrucciones de procesador |
Country Status (13)
Country | Link |
---|---|
US (1) | US8352713B2 (es) |
EP (2) | EP3009936A1 (es) |
JP (2) | JP5546859B2 (es) |
KR (1) | KR101019278B1 (es) |
CN (2) | CN106909501B (es) |
BR (1) | BRPI0715163B1 (es) |
CA (1) | CA2658829C (es) |
ES (1) | ES2588185T3 (es) |
HU (1) | HUE029441T2 (es) |
IN (1) | IN2014MN01895A (es) |
MX (1) | MX2009001458A (es) |
RU (1) | RU2429525C2 (es) |
WO (1) | WO2008021763A1 (es) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2864655B1 (fr) * | 2003-12-31 | 2006-03-24 | Trusted Logic | Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution |
US7555605B2 (en) * | 2006-09-28 | 2009-06-30 | Freescale Semiconductor, Inc. | Data processing system having cache memory debugging support and method therefor |
US20080162900A1 (en) * | 2006-12-29 | 2008-07-03 | Andre Rolfsmeier | System, Method and Apparatus for Observing a Control Device |
CN101777021B (zh) * | 2010-01-21 | 2012-07-04 | 龙芯中科技术有限公司 | 微处理器中精确数据断点的实现装置及其方法 |
US9639451B2 (en) | 2010-01-25 | 2017-05-02 | Nxp Usa, Inc. | Debugger system, method and computer program product for utilizing hardware breakpoints for debugging instructions |
GB2482701C (en) * | 2010-08-11 | 2018-12-26 | Advanced Risc Mach Ltd | Illegal mode change handling |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
WO2013142948A1 (en) * | 2012-03-30 | 2013-10-03 | Irdeto Canada Corporation | Method and system for preventing and detecting security threats |
KR102013582B1 (ko) | 2012-09-07 | 2019-08-23 | 삼성전자 주식회사 | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 |
JP2014085859A (ja) * | 2012-10-24 | 2014-05-12 | Renesas Electronics Corp | 半導体集積回路装置 |
US9268563B2 (en) * | 2012-11-12 | 2016-02-23 | International Business Machines Corporation | Verification of a vector execution unit design |
RU2635044C2 (ru) * | 2013-06-27 | 2017-11-08 | Интел Корпорейшн | Режим слежения в устройстве обработки в системах трассировки команд |
GB2527088B (en) * | 2014-06-11 | 2021-07-14 | Advanced Risc Mach Ltd | Executing debug program instructions on a target apparatus processing pipeline |
US9626267B2 (en) * | 2015-01-30 | 2017-04-18 | International Business Machines Corporation | Test generation using expected mode of the target hardware device |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US11269640B2 (en) * | 2017-02-13 | 2022-03-08 | Qualcomm Incorporated | Speculative transitions among modes with different privilege levels in a block-based microarchitecture |
US10169196B2 (en) * | 2017-03-20 | 2019-01-01 | Microsoft Technology Licensing, Llc | Enabling breakpoints on entire data structures |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US10740220B2 (en) * | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
US11468199B2 (en) | 2020-07-22 | 2022-10-11 | Apple Inc. | Authenticated debug for computing systems |
US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11436187B2 (en) * | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
CN113127285B (zh) * | 2021-06-17 | 2021-10-08 | 北京燧原智能科技有限公司 | 一种错误数据调试方法、装置、芯片及计算机设备 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202907A (ja) | 1993-01-06 | 1994-07-22 | Hitachi Ltd | デバッグ支援装置 |
US5781750A (en) * | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US6408386B1 (en) * | 1995-06-07 | 2002-06-18 | Intel Corporation | Method and apparatus for providing event handling functionality in a computer system |
US5774686A (en) * | 1995-06-07 | 1998-06-30 | Intel Corporation | Method and apparatus for providing two system architectures in a processor |
US5680620A (en) * | 1995-06-30 | 1997-10-21 | Dell Usa, L.P. | System and method for detecting access to a peripheral device using a debug register |
JP3623840B2 (ja) * | 1996-01-31 | 2005-02-23 | 株式会社ルネサステクノロジ | データ処理装置及びマイクロプロセッサ |
US5963737A (en) * | 1996-04-18 | 1999-10-05 | International Business Machines Corporation | Interupt vectoring for trace exception facility in computer systems |
DE19701166A1 (de) * | 1997-01-15 | 1998-07-23 | Siemens Ag | Verfahren zur Überwachung der bestimmungsgemäßen Ausführung von Softwareprogrammen |
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
JPH11338710A (ja) * | 1998-05-28 | 1999-12-10 | Toshiba Corp | 複数種の命令セットを持つプロセッサのためのコンパイル方法ならびに装置および同方法がプログラムされ記録される記録媒体 |
US6480818B1 (en) * | 1998-11-13 | 2002-11-12 | Cray Inc. | Debugging techniques in a multithreaded environment |
US6430674B1 (en) * | 1998-12-30 | 2002-08-06 | Intel Corporation | Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time |
US7013456B1 (en) * | 1999-01-28 | 2006-03-14 | Ati International Srl | Profiling execution of computer programs |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6826748B1 (en) * | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
US7275246B1 (en) * | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6449712B1 (en) * | 1999-10-01 | 2002-09-10 | Hitachi, Ltd. | Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions |
US7793261B1 (en) * | 1999-10-01 | 2010-09-07 | Stmicroelectronics Limited | Interface for transferring debug information |
US6609247B1 (en) * | 2000-02-18 | 2003-08-19 | Hewlett-Packard Development Company | Method and apparatus for re-creating the trace of an emulated instruction set when executed on hardware native to a different instruction set field |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US7093108B2 (en) | 2001-02-01 | 2006-08-15 | Arm Limited | Apparatus and method for efficiently incorporating instruction set information with instruction addresses |
US6760864B2 (en) * | 2001-02-21 | 2004-07-06 | Freescale Semiconductor, Inc. | Data processing system with on-chip FIFO for storing debug information and method therefor |
US6901583B1 (en) * | 2001-07-19 | 2005-05-31 | Hewlett-Packard Development Company, L.P. | Method for testing of a software emulator while executing the software emulator on a target machine architecture |
US7865948B1 (en) * | 2001-12-03 | 2011-01-04 | Advanced Micro Devices, Inc. | Method and apparatus for restricted execution of security sensitive instructions |
US7017030B2 (en) * | 2002-02-20 | 2006-03-21 | Arm Limited | Prediction of instructions in a data processing apparatus |
JP2003256237A (ja) | 2002-02-27 | 2003-09-10 | Toshiba Corp | 割り込み発生装置、割り込み発生方法および割り込み発生プログラム |
GB0225649D0 (en) * | 2002-11-04 | 2002-12-11 | Transitive Technologies Ltd | Incremental validation |
US20060149927A1 (en) * | 2002-11-26 | 2006-07-06 | Eran Dagan | Processor capable of multi-threaded execution of a plurality of instruction-sets |
CN1216327C (zh) * | 2003-05-15 | 2005-08-24 | 复旦大学 | 采用双指令集的32位嵌入式微处理器 |
EP1628235A1 (en) * | 2004-07-01 | 2006-02-22 | Texas Instruments Incorporated | Method and system of ensuring integrity of a secure mode entry sequence |
US7958335B2 (en) * | 2005-08-05 | 2011-06-07 | Arm Limited | Multiple instruction set decoding |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
-
2006
- 2006-08-09 US US11/463,379 patent/US8352713B2/en active Active
-
2007
- 2007-08-03 EP EP15194129.1A patent/EP3009936A1/en not_active Ceased
- 2007-08-03 WO PCT/US2007/075194 patent/WO2008021763A1/en active Application Filing
- 2007-08-03 CN CN201611183722.0A patent/CN106909501B/zh active Active
- 2007-08-03 RU RU2009108321/08A patent/RU2429525C2/ru active
- 2007-08-03 HU HUE07813770A patent/HUE029441T2/en unknown
- 2007-08-03 EP EP07813770.0A patent/EP2054808B1/en active Active
- 2007-08-03 ES ES07813770.0T patent/ES2588185T3/es active Active
- 2007-08-03 JP JP2009523924A patent/JP5546859B2/ja active Active
- 2007-08-03 CN CN200780029330.1A patent/CN101501650B/zh active Active
- 2007-08-03 BR BRPI0715163-2A patent/BRPI0715163B1/pt active IP Right Grant
- 2007-08-03 MX MX2009001458A patent/MX2009001458A/es active IP Right Grant
- 2007-08-03 KR KR1020097004853A patent/KR101019278B1/ko active IP Right Grant
- 2007-08-03 IN IN1895MUN2014 patent/IN2014MN01895A/en unknown
- 2007-08-03 CA CA2658829A patent/CA2658829C/en active Active
-
2012
- 2012-10-12 JP JP2012227313A patent/JP5788370B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
CN101501650A (zh) | 2009-08-05 |
CN101501650B (zh) | 2016-12-07 |
CN106909501B (zh) | 2021-02-05 |
EP2054808A1 (en) | 2009-05-06 |
US20080040587A1 (en) | 2008-02-14 |
CA2658829C (en) | 2016-01-05 |
WO2008021763A1 (en) | 2008-02-21 |
HUE029441T2 (en) | 2017-02-28 |
JP5546859B2 (ja) | 2014-07-09 |
KR101019278B1 (ko) | 2011-03-07 |
RU2009108321A (ru) | 2010-09-20 |
MX2009001458A (es) | 2009-02-19 |
EP2054808B1 (en) | 2016-05-25 |
BRPI0715163A2 (pt) | 2013-06-11 |
BRPI0715163B1 (pt) | 2023-05-09 |
KR20090051205A (ko) | 2009-05-21 |
CN106909501A (zh) | 2017-06-30 |
JP5788370B2 (ja) | 2015-09-30 |
IN2014MN01895A (es) | 2015-07-10 |
JP2010500661A (ja) | 2010-01-07 |
CA2658829A1 (en) | 2008-02-21 |
EP3009936A1 (en) | 2016-04-20 |
US8352713B2 (en) | 2013-01-08 |
JP2013058217A (ja) | 2013-03-28 |
RU2429525C2 (ru) | 2011-09-20 |
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 | |
US8261130B2 (en) | Program code trace signature | |
US8261047B2 (en) | Qualification of conditional debug instructions based on address | |
US6205560B1 (en) | Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG | |
US6754856B2 (en) | Memory access debug facility | |
US7043416B1 (en) | System and method for state restoration in a diagnostic module for a high-speed microprocessor | |
US5838897A (en) | Debugging a processor using data output during idle bus cycles | |
JPH09218803A (ja) | データプロセッサ | |
JPH09218802A (ja) | データプロセッサ | |
JPH09114697A (ja) | データプロセッサ | |
US5987585A (en) | One-chip microprocessor with error detection on the chip | |
TWI437488B (zh) | 微處理器及適用於微處理器之操作方法 | |
KR940003318B1 (ko) | 캐시 메모리를 구비한 프로세서 | |
KR20200088760A (ko) | 체크섬 생성 | |
JP2646957B2 (ja) | キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム | |
Vranken | Debug facilities in the TriMedia CPU64 architecture | |
EP0229253A2 (en) | Data processor with virtual memory management | |
JPH0528002A (ja) | マイクロプロセツサ | |
JPS6358552A (ja) | マイクロプロセサ | |
JPH02188840A (ja) | データ処理装置 | |
JPH01296341A (ja) | データ処理装置 |