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 PDF

Info

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
Application number
ES07813770.0T
Other languages
English (en)
Inventor
Kevin Charles Burke
Brian Michael Stempel
Daren Eugene Streett
Kevin Allen Sapp
Leslie Mark Debruyne
Nabil Amir Rizk
Thomas Andrew Sartorius
Rodney Wayne Smith
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2588185T3 publication Critical patent/ES2588185T3/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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software 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)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    65
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6. 7.
  7. 8.
  8. 9.
  9. 10. 11. 12.
    REIVINDICACIONES
    Un 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; 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.
    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; y
    desencadenar (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; y
    un 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 de
    7
    10
    instrucciones objetivo.
  10. 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.
  11. 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.
ES07813770.0T 2006-08-09 2007-08-03 Circuito de depuración de comparación de modo operativo de un conjunto de instrucciones de procesador Active ES2588185T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) データ処理装置