BRPI0715163A2 - circuito de depuraÇço comparando modo de operaÇço de conjunto de instruÇÕes de processador - Google Patents

circuito de depuraÇço comparando modo de operaÇço de conjunto de instruÇÕes de processador Download PDF

Info

Publication number
BRPI0715163A2
BRPI0715163A2 BRPI0715163-2A BRPI0715163A BRPI0715163A2 BR PI0715163 A2 BRPI0715163 A2 BR PI0715163A2 BR PI0715163 A BRPI0715163 A BR PI0715163A BR PI0715163 A2 BRPI0715163 A2 BR PI0715163A2
Authority
BR
Brazil
Prior art keywords
instruction set
mode
processor
address
instruction
Prior art date
Application number
BRPI0715163-2A
Other languages
English (en)
Inventor
Kevin Charles Burke
Daren Eugene Streett
Kevin Allen Sapp
Leslie Mark Debruyne
Nabil Amir Rizk
Thomas Andrew Sartorius
Rodney Wayne Smith
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
Publication of BRPI0715163A2 publication Critical patent/BRPI0715163A2/pt
Publication of BRPI0715163B1 publication Critical patent/BRPI0715163B1/pt

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

CIRCUITO DE DEPURAÇçO COMPARANDO MODO DE OPERAÇçO DE CONJUNTO DE INSTRUÇÕES DE PROCESSADOR. Um processador é operativo para executar dois ou mais conjuntos de instruções, cada um deles em um modo de operação de conjunto de instruções diferente. Quando cada instrução é executada, o circuito de depuração compara o modo de operação de conjunto de instruções atual com um modo de operação de conjunto de instruções alvo enviadas por um programador, e emite um alerta ou indicação se eles se correspondem. O alerta ou indicação pode ser adicionalmente dependente do endereço de instrução estar dentro de uma faixa predeterminada de endereços alvo. O alerta ou indicação pode compreender um sinal de ponto de interrupção que suspende a execução e/ou é emitido como um sinal externo do processador. O endereço de instrução no qual o processador detecta uma correspondência nos modos de operação de conjunto de instruções pode adicionalmente ser emitido. Adicionalmente ou alternativamente, o alerta ou indicação pode compreender iniciar ou parar uma operação de rastro, causar uma exceção, ou qualquer outra função de depuração conhecida.

Description

"CIRCUITO DE DEPURAÇÃO COMPARANDO MODO DE OPERAÇÃO DE CONJUNTO DE INSTRUÇÕES DE PROCESSADOR"
Campo da Invenção
A presente invenção refere-se, de maneira geral, ao campo de processadores e especificamente a um sistema e método de depuração de código em um processador via um circuito de depuração que inclui consideração do modo de operação do conjunto de instruções de processador. Descrição da Técnica Anterior
Os processadores modernos são sistemas extremamente complicados. A maioria dos processadores modernos emprega uma arquitetura encadeada (pipelined), onde instruções seqüenciais, cada uma delas possuindo múltiplas etapas de execução, são sobrepostas em execução. Muitos processadores, conhecidos como processadores "superescalares", incluem dois ou mais encadeamentos separados para execução de instrução em paralelo. Para evitar paralisações nos encadeamentos devido às instruções de ramificação, a maioria dos processadores emprega diversas formas de predição de ramificação, com busca especulativa e execução de instruções quando ramificações são previstas. Para aperfeiçoar o desempenho, muitos processadores modernos separam endereços de registradores lógicos a partir dos registradores de armazenamento de memória física, correspondentes, conhecidos como renomeação de registrador. Para prover aos programas a ilusão de memória rápida, ilimitada, muitos processadores executam código em um espaço de endereço virtual, traduzindo endereços para um ou mais espaços de endereço físicos à medida que os dados percorrem uma hierarquia de memória (por exemplo, registrador, cache, memória principal). Com tal complexidade, a execução de código dentro de um processador moderno é muito difícil de rastrear e validar de forma exata. Especificamente, as anomalias podem ser de depuração muito difícil.
Além disso, o software que executa em processadores modernos é ele próprio, extremamente complexo. Com o advento das arquiteturas de processador de Computação de Conjunto de Instruções Reduzidas (RISC, Reduced .Instructions Set Computing), grande parte da complexidade lógica e computacional da computação migrou a partir das instruções de processador para compiladores de otimização. Isto é, os compiladores construíram operações complexas a partir de um conjunto relativamente pequeno de instruções de processador, cada uma dentre as quais é otimizada para uma função particular, específica. Isso resulta em uma seqüência mais prolongada e complexa de instruções, incluindo, por exemplo, operações lógicas, aritméticas, de carga/armazenamento, e de ramificação, para uma determinada tarefa computacional. Tal código complexo pode ser difícil de depurar quando erros causam 2 0 comportamento anômalo de programa.
Para auxiliar na tarefa intimidante de depurar código complexo executando em um processador complexo, ferramentas de depuração são construídas em muitos processadores. Elas podem compreender comparadores de endereço e dados para identificar instruções específicas e/ou padrões de dados. As ferramentas de depuração podem incluir adicionalmente comparadores de faixas de endereços, de modo que a depuração ou rastreamento pode ser limitada aos segmentos de códigos predeterminados. Outras ferramentas de depuração podem incluir contadores, sequenciadores, e semelhantes, para prover flexibilidade em especificar as condições que especificam pontos de interrupção e/ou acionadores de rastro. Informação de rastro pode ser provida externa ao chip (off-chip), tal como por meio de um barramento dedicado, ou pode ser armazenada em um armazenador (buffer) no chip (on-chip) dedicado. Pontos de interrupção podem acionar um ou mais sinais externos, tal como para armar e/ou acionar um analisador lógico ou iluminar um LED; pode causar uma exceção, ramificando execução de código para uma rotina de depuração; ou pode simplesmente suspender a execução permitindo que o conteúdo de diversos registradores e caches seja inspecionado. Essas ferramentas de depuração, as quais não são utilizadas durante execução normal do processador, são projetadas nos circuitos de processador de tal modo a minimizar impacto no desempenho do processador e consumo de potência. Os programadores podem definir explicitamente o
modo de operação de conjunto de instruções, adequado em software, antes de executar as instruções de acordo com a codificação relevante do conjunto de instruções. Contudo, software errôneo pode algumas vezes se ramificar para um endereço de instrução especifico que pretendia ser executado enquanto em um modo de operação de conjunto de instruções, mas enquanto o processador está atualmente em algum outro modo de operação de conjunto de instruções. Em tal caso, o processador pode tentar executar a instrução naquele endereço utilizando a decodificação de conjunto de instruções, inadequada, causando resultados incorretos.
Por exemplo, algumas versões da arquitetura de processador ARM incluem pelo menos dois modos de operação de conjunto de instruções: um modo ARM de 32 bits e um modo em Thumb de 16 bits. A Tabela 1 lista um fragmento de código de instruções ARM: Tabela 1: codificação de instrução no modo AEM
000096F0 cpy r4, rO
000096F4 bl 0xA8A0
000096FC cpy rl, r4
00009700 Idr rO, [r0,#0x8]
A Tabela 2 lista o mesmo código interpretado no modo Thumb:
Tabela 2: codificação de instrução no modo Thumb
000096F0 and rO, rO 000096F2 b 0x9A36 000096F4 Isl rl, r5, #0x11 000096F6 add. w rO, rO, r4,Isl #0x4 0 0 0 0 9 6 FA b 0x9A3E 000096FC Isl rO, rl, #0x0 000096FE b 0x9222 00009700 and rO, r2
Observar, especificamente, as instruções de
ramificação em 96F2, 96FA e 96FE. Devido à ramificação errática, pode ser difícil averiguar o ponto no qual um erro fez com que o código ARM da tabela 1 fosse interpretado no modo Thumb como na tabela 2 e, portanto, depurasse o erro. Essa dificuldade surge porque os circuitos de depuração da técnica anterior não incluem o modo de operação do conjunto de instruções do processador como uma entrada para a lógica que aciona os pontos de interrupção, inicia os rastros, e semelhante. A maioria dos processadores que suporta dois ou
mais "modos" de operação, tais como modos supervisor e de usuário, ou modos reais e protegidos, comutam entre os modos ao causar uma exceção e ramificação para uma rotina de comutação de modo. Essa operação é facilmente detectada utilizando as ferramentas de depuração da técnica anterior e software ao estabelecer um ponto de interrupção ou início de um rastro no endereço de instrução da rotina de comutação de modo. Um processador comutando os modos de operação de conjunto de instruções sem causar uma exceção é um exemplo de comportamento de código que é difícil de diagnosticar com as ferramentas de depuração da técnica anterior, que não incluem o modo de operação de conjunto de instruções de processador como uma consideração no acionamento de pontos de interrupção, iniciação de rastros, e semelhante. Resumo da Invenção
De acordo com uma ou mais modalidades, um circuito de depuração em um processador operativo para executar dois ou mais conjuntos de instruções identifica o endereço no qual o processador comuta de um modo de operação de conjunto de instruções para um modo de operação de conjunto de instruções diferente, e emite um alerta ou indicação da comutação de modo. O alerta ou indicação pode compreender um sinal de ponto de interrupção que suspende a execução e/ou é emitido como um sinal externo do processador. O endereço de instrução no qual o processador comuta os modos de operação de conjunto de instruções pode ser adicionalmente emitido. Alternativamente, o alerta ou indicação pode compreender iniciar ou parar uma operação de rastro, causando uma exceção, ou qualquer outra função de depuração conhecida.
Uma modalidade refere-se a um método de depurar código de software compreendendo uma pluralidade de instruções em um processador possuindo pelo menos dois modos diferentes de operação de conjunto de instruções. Um modo de operação de conjunto de instruções alvo é recebido antes de executar quaisquer instruções de código. As instruções de código são executadas e, para cada instrução executada, o modo de operação do conjunto de instruções de processador atual é comparado com o modo de operação do conjunto de instruções alvo. Um alerta é acionado se o modo de operação do conjunto de instruções de processador atual coincidir com o modo de operação do conjunto de instruções alvo.
Outra modalidade refere-se a um método de executar software em um processador possuindo pelo menos primeiro e segundo modo de operação de conjunto de instruções. 0 endereço no qual o processador comuta a partir do primeiro modo de operação de conjunto de instruções para o segundo modo de operação de conjunto de instruções é identificado, e um alerta é acionado em resposta à identificação.
Ainda outra modalidade refere-se a um processador operativo para executar instruções de acordo com duas ou mais codificações de conjunto de instruções, cada uma delas em um diferente modo de operação de conjunto de instruções. O processador inclui um indicador de modo de operação de conjunto de instruções atual e um local de armazenamento de dados operativo para armazenar um indicador de modo de operação de conjunto de instruções alvo. O processador inclui também uma unidade de execução operativa para executar instruções de acordo com um modo de operação do conjunto de instruções atual e um circuito de comparação operativo para comparar o modo de operação do conjunto de instruções atual com o modo de operação do conjunto de instruções alvo a partir da execução de cada instrução, e emitir uma indicação se o modo de operação do conjunto de instruções atual corresponder com o modo de operação do conjunto de instruções alvo.
Ainda outra modalidade refere-se a um processador operativo para executar duas ou mais codificações de conjunto de instruções, cada uma delas em um diferente modo de operação de conjunto de instruções. 0 processador inclui um circuito de comparação operativo para detectar uma alteração no modo de operação do conjunto de instruções e para emitir uma indicação da alteração do modo de operação do conjunto de instruções, e o endereço de instrução na qual ocorre a alteração, em resposta à detecção.
Breve Descrição das Figuras
Figura 1 é um diagrama funcional de blocos de um processador.
Figura 2 é um diagrama funcional de blocos de um
encadeamento de processador, incluindo um circuito de depuração.
Figura 3 é um fluxograma de um processo de diagnóstico/depuração. Descrição Detalhada da Invenção
A Figura 1 retrata um diagrama funcional de blocos de um processador 10. O processador 10 executa instruções em um encadeamento de execução de instruções 12 de acordo com a lógica de controle 14. Δ lógica de controle 14 mantém um Contador de Programa (PC, Program Counter) 15, e estabelece e apaga bits em um ou mais registradores de status 16 para indicar, por exemplo, o modo de operação do conjunto de instruções atual, informações relacionadas aos resultados das operações aritméticas e comparações lógicas (zero, carregar, igual, não igual); e semelhante. Em algumas modalidades, o encadeamento 12 pode ser um modelo superescalar, com múltiplos encadeamentos em paralelo. O encadeamento 12 também pode ser referido como uma unidade de execução. Um arquivo Registrador de Uso Geral (GPR, General Purpose Register) 20 provê registradores acessíveis por encadeamento 12, e compreendendo o topo da hierarquia de memória. O processador 10, o qual executa instruções a partir de pelo menos dois conjuntos de instruções em diferentes modos de operação de conjunto de instruções, adicionalmente inclui um circuito de depuração 18, operativo para comparar, a partir da execução de cada instrução, pelo menos um modo de operação de conjunto de instruções alvo predeterminado para o modo de operação do conjunto de instruções atual, e para prover uma indicação de uma equiparação entre os dois. O circuito de depuração 18 é descrito em mais detalhe abaixo.
O encadeamento 12 busca instruções a partir de um cache de instruções (cache-I) 26, com tradução de endereço de memória e permissões gerenciadas por um Armazenador de Antecipação de Tradução de lado de Instrução (ITLB, Instruction-side Translation Lookaside Buffer) 28. Os dados são acessados a partir de um cache de dados (cache-D) 30, com tradução de endereço de memória e permissões gerenciadas por um Armazenador de Antecipação de Tradução (TLB, Translation Lookaside Buffer) principal 32. Em diversas modalidades, o ITLB 28 pode compreender uma cópia de parte do TLB 32. Alternativamente, o ITLB 28 e TLB 32 podem ser integrados. Similarmente, em diversas modalidades do processador 10, o cache-I 26 e cache-D 30 podem ser integrados, ou unificados. Ausências no cache-I 26 e/ou no cache-D 30 causam um acesso à memória principal (externa ao chip) 38, 40 por uma interface de memória 34. A interface de memória 34 pode ser uma entrada mestre para uma interconexão de barramento 42 implementando um barramento compartilhado para um ou mais dispositivos de memória 38, 40. Dispositivos mestres adicionais (não mostrados) podem se conectar adicionalmente à interconexão de barramento 42.
0 processador 10 pode incluir uma interface de entrada/saida (1/0, Input/Output) 44, a qual pode ser um dispositivo mestre em um barramento periférico, através do qual a interface 1/0 44 pode acessar diversos dispositivos periféricos 48, 50. Aqueles versados na técnica reconhecerão que inúmeras variações do processador 10 são possíveis. Por exemplo, o processador 10 pode incluir um cache de segundo nível (L2) para qualquer um ou para ambos os caches IeD 26, 30. Além disso, um ou mais dos blocos funcionais ilustrados no processador 10 pode ser omitido de uma modalidade específica. Outros blocos funcionais que podem residir no processador 10, tal como um controlador JTAG, pré-decodificador de instrução, cache de endereço alvo de ramificação, e semelhante, não são pertinentes a uma descrição da presente invenção, e são omitidos para clareza.
A Figura 2 retrata um diagrama funcional de
blocos de uma modalidade do circuito de depuração 18. 0 circuito de depuração 18 inclui um registrador de modo de operação de conjunto de instruções alvo 52, um registrador de endereço de início de faixa de endereços 54, e um registrador de endereço de fim de faixa de endereços 56. Os registradores 52, 54, 56 são carregados pelos programadores via software de diagnóstico antes de uma operação de diagnóstico/depuração. 0 valor gravado para o registrador de modo de operação de conjunto de instruções alvo 52 é comparado com o modo de operação do conjunto de instruções de processador atual durante a execução de cada instrução, para acionar um ponto de interrupção, função de rastro, ou outro alerta. Os valores dos registradores de endereço de início e fim 54, 56 estão no início e fim, respectivamente, da faixa de endereços alvo através da qual o circuito de depuração 18 deve monitorar uma correspondência entre os modos de operação de conjunto de instruções atual e alvo. Como aqueles versados na técnica prontamente reconhecerão, o circuito de depuração 18 pode incluir parâmetros adicionais customizáveis, e blocos funcionais adicionais, habilitando que pontos de interrupção, rastros, e semelhantes acionem uma ampla variedade de condições. Essas foram omitidas na Figura 2 para clareza, mas em geral podem incluir todos os parâmetros de circuito de depuração e funcionalidade conhecida na técnica.
Antes da execução de um diagnóstico/depuração, um programador carrega os registradores de endereço de inicio e fim 54, 56 para definir uma região alvo de endereços, a qual pode variar de um único endereço até a faixa completa de endereços do código sendo testado. Em outras modalidades, múltiplos registradores de endereço de inicio e fim podem ser providos para definir uma pluralidade de faixas de endereços alvo. O programador adicionalmente carrega o registrador de modo de operação de conjunto de instruções alvo 52. Por exemplo, no caso de um processador ARM executando código inteiramente no modo ARM, um programador pode carregar o registrador 52 com um valor indicando o modo Thumb, para estabelecer um ponto de interrupção fazendo com que o circuito de depuração 18 suspenda a execução, por exemplo, se o processador 10 executa na instrução dentro da faixa de endereços definidos pelos registradores 54, 56 no modo Thumb.
Durante a operação de diagnóstico/depuração, o valor armazenado no registrador de modo de operação de conjunto de instruções alvo 52 é comparado com um bit de registrador de status indicando o modo de operação do conjunto de instruções atual do processador 10 na lógica de comparação tal como a porta E (AND) 58, Por exemplo, em um processador ARM 10, o bit 5 do Registrador de Status de Programa Atual (CPSR, Current Program Status Register) 16 pode ser monitorado. A saída 60 da lógica de comparação 58 será declarada apenas quando o modo de operação do conjunto de instruções atual do processador 10 corresponder com o modo de operação de conjunto de instruções indicado pelo registrador de modo de operação do conjunto de instruções alvo 52.
Nas modalidades onde o processador 10 executa instruções a partir de mais de dois conjuntos de instrução em diferentes modos de operação de conjunto de instruções, o registrador de modo de operação de conjunto de instruções alvo 52 e bits indicadores de modo do CPSR (ou outro registrador de status) 16 compreenderão valores de múltiplos bits, e a lógica de comparação 58 pode incluir circuitos adicionais tais como decodificadores. Em diversas modalidades, outras indicações do modo de operação de conjunto de instruções atual podem ser utilizadas em vez do CPSR 16, tal como a saída da lógica de decodificação de instrução.
Simultaneamente, o valor atual do PC 15 é comparado com os registradores de faixa de endereços 54, 56 na lógica de comparação de endereço 68. A saída 70 da lógica de comparação de endereço 68 é declarada sempre que o valor atual do PC 15 ficar compreendido dentro da faixa de endereços alvo. Em diversos modalidades, indicações do endereço de instrução "atual" podem variar do PC 15, conforme exigido ou desejado. Por exemplo, o circuito de comparação de endereço 68 pode comparar o endereço das instruções em um estágio de decodificação do encadeamento 12, um estágio de execução, ou qualquer outro estágio de encadeamento. Adicionalmente, um endereço mais dinâmico pode ser usado, tal como o endereço da última instrução no encadeamento 12 para se confirmar na execução. A salda 70 da lógica de comparação de endereço 68 realiza operação E com a saída 60 da lógica de comparação de indicador de modo de operação de conjunto de instruções 58 e porta E 72, para gerar uma saída 20 indicando uma correspondência diária entre os modos de operação de conjunto de instruções atual e alvo ocorrendo dentro da faixa alvo de endereços. Em uma modalidade, a saída 20 é provida como uma saída para o processador (vide Figura 1). Essa saída 20 pode armar e/ou acionar um analisador lógico, iluminar um LED, ou acionar alguma outra ação ou alarme. Em uma modalidade, conforme retratado na Figura 1, a saída do indicador de correspondência de modo de operação de conjunto de instruções 20 pode compreender uma entrada para o controlador 14, para suspender a execução do processador 10.
Em uma modalidade, a saída do indicador de correspondência de modo de operação de conjunto de instruções 20 pode inicializar ou finalizar uma operação de rastro de instrução, com a informação de rastro sendo direcionada para pinos de saída do processador 10 ou armazenada em um armazenador de rastro no chip (não mostrado). Em uma modalidade, conforme retratado na Figura 2, a saída de indicador de correspondência de modo de operação de conjunto de instruções 20 pode acionar um registrador de endereço de correspondência de modo de operação de conjunto de instruções 74, capturando o valor do PC 15 e, portanto, o endereço da instrução na qual uma correspondência é detectada entre os modos de operação de conjunto de instruções atual e alvo. Isso pode ser de valor específico na detecção de uma alteração a partir de um modo de operação de conjunto de instruções para outro. A saída 76 desse registrador 74 pode ser encaminhada para pinos do processador 10 para inspeção externa. Em uma modalidade, a saída do indicador de correspondência do modo de operação de conjunto de instruções 20 pode causar uma exceção, ramificando a execução do código para uma rotina predefinida. Essa rotina de correspondência de modo de conjunto de instruções pode, por exemplo, ler o registrador de endereço de correspondência de modo de operação de conjunto de instruções 74. Em geral, a saída de indicador de correspondência de modo de operação de conjunto de instruções 20 pode acionar qualquer operação de depuração conhecida, conforme exigido ou desejado.
A Figura 3 retrata um método de depurar código de acordo com uma ou mais modalidades da presente invenção. Começando no bloco 78, um programador inicializa os registradores de circuito de depuração (bloco 80) . Isso pode compreender, por exemplo, carregar o registrador de modo de operação de conjunto de instruções alvo 52, e estabelecer uma faixa de endereços alvo mediante carregamento do registrador de endereço inicial 54 e registrador de endereço final 56. Depuração adicional dos registradores de circuito (não mostrados) pode ser inicializada, conforme exigido ou desejado.
O programador então começa a execução do código a ser depurado (bloco 82), sucessivamente buscando e executando a próxima instrução (bloco 84) na seqüência de códigos. Independente do endereço, se o modo de operação do conjunto de instruções atual do processador 10 não corresponder com aquele estabelecido pelo programador no registrador de modo de operação alvo de conjunto de instruções 52 (bloco 86) , então a próxima instrução é buscada e executada (bloco 84) até o fim do código a ser depurado (bloco 88), em cujo caso o método para no bloco 90. Se, a partir da execução de uma instrução (bloco 84), o endereço de instrução estiver dentro da faixa de endereços predeterminados, e o modo de operação do conjunto de instruções atual corresponder com aquele estabelecido pelo programador no registrador de modo de operação de conjunto de instruções alvo 52 (bloco 86), então o circuito de depuração declara a saida 20 e pode realizar qualquer número de ações, conforme especificado pelo programador.
Por exemplo, a saida do circuito de depuração 20 pode fazer com que o processador 10 realize uma exceção, ramificando a execução de código para uma rotina de correspondência de modo de operação de conjunto de instruções (bloco 92) . A saida do circuito de depuração 20 pode fazer com que o controlador de encadeamento 14 suspende a execução (bloco 94), permitindo que o programador inspecione o conteúdo dos diversos registradores, linhas de cache, e semelhante. O circuito de depuração 18 pode declarar a saida 20 externamente (bloco 96) , a qual pode ser usada para armar ou acionar um analisador lógico, iluminar um LED, ou semelhante. O circuito de depuração 18 adicionalmente pode emitir o endereço de correspondência de modo de operação de conjunto de instruções para inspeção externa (bloco 98) . O circuito de depuração 18 pode iniciar ou parar uma operação de rastro (bloco 100). Embora retratado como alternativas, o circuito de depuração 18 pode, em uma determinada modalidade, executar dois ou mais dos blocos 92-96. Em geral, o circuito de depuração 18 pode realizar qualquer ação conhecida na técnica que seja vantajosa para depurar códigos no processador 10, tendo detectado uma correspondência entre o modo de operação do conjunto de instruções atual e o modo de operação do conjunto de instruções alvo. Como usado aqui, o termo "conjunto de instruções" refere-se a um conjunto de codificações através do qual os dados de instrução (por exemplo, o conteúdo de uma linha de cache-I) são interpretados por um processador 10 como instruções executáveis. O termo "modo de operação de conjunto de instruções" refere-se a um modo de operação identificável do processador 10 no qual os dados de instrução são interpretados de acordo com uma codificação especifica de conjuntos de instruções. Especificamente, "modo de operação de conjunto de instruções" é distinguido de "modos" de operação de processador conhecido relacionado a permissões (por exemplo, modo de supervisor versus modo de usuário), endereçamento de memória (por exemplo, modo real versus modo protegido), e semelhante. Embora a presente invenção tenha sido descrita
aqui com relação a características, aspectos e modalidades específicas da mesma, será evidente que diversas variações, modificações e outras modalidades são possíveis dentro de um amplo escopo da presente invenção, e consequentemente, todas as variações, modificações e modalidades devem ser consideradas como dentro do escopo da invenção. As modalidades presentes, portanto devem ser consideradas em todos os aspetos como ilustrativas e não restritivas e todas as alterações compreendidas dentro da faixa de equivalência e significado das reivindicações anexas devem ser abrangidas pelas mesmas.

Claims (15)

1. Método de depurar código de software compreendendo uma pluralidade de instruções em um processador possuindo pelo menos dois modos diferentes de operação de conjunto de instruções, caracterizado pelo fato de que: receber (78, 80) um modo de operação de conjunto de instruções alvo (52) antes de executar quaisquer instruções de código; executar instruções de código, e, para cada instrução executada, comparar (58, 68, 72) o modo de operação de conjunto de instruções de processador atual com o modo de operação de conjunto de instruções alvo (82 a 100) ; e acionar (20) um alerta se o modo de operação de conjunto de instruções de processador atual corresponder com o modo de operação de conjunto de instruções alvo (92, 94, 96, 98, 100) .
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o alerta compreende: emitir (20) um sinal indicativo de uma correspondência entre o modo de operação de conjunto de instruções de processador atual e o modo de operação de conjunto de instruções alvo. emitir (76) o endereço das instruções para o qual o modo de operação de conjunto de instruções atual corresponde o modo de operação de conjunto de instruções alvo.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: receber (54, 56) uma faixa de endereços alvo antes de executar quaisquer instruções de código; para cada instrução executada, comparar (68) o endereço de instrução atual com a faixa de endereços alvo; e acionar o alerta (72) apenas se o modo de operação de conjunto de instruções de processador atual corresponder com o modo de operação de conjunto de instruções alvo e o endereço de instrução atual estiver dentro da faixa de endereços alvo.
4. Método de executar software em um processador possuindo pelo menos primeiro e segundo modos de operação de conjunto de instruções, caracterizado pelo fato de que: identificar (74) o endereço no qual o processador comuta a partir do primeiro modo de operação de conjunto de instruções para o segundo modo de operação de conjunto de instruções; e acionar (76) um alerta em resposta à identificação.
5. Método, de acordo com a reivindicação 1 ou 4, caracteriζado pelo fato de que o alerta compreende suspender execução de instrução.
6. Método, de acordo com a reivindicação 1 ou 4, caracterizado pelo fato de que o alerta compreende controlar uma operação de rastro.
7. Método, de acordo com a reivindicação 1 ou 4, caracterizado pelo fato de que o alerta compreende causar uma exceção.
8. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o alerta compreende: emitir um sinal indicativo de uma alteração no modo de operação de conjunto de instruções; emitir o endereço da instrução identificada.
9. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que identificar o endereço no qual o processador comuta a partir do primeiro modo de operação de conjunto de instruções para o segundo modo de operação de conjunto de instruções compreende identificar o endereço apenas se ele estiver dentro de uma faixa de endereços predeterminada.
10. Processador (10) operativo para executar instruções de acordo com duas ou mais codificações de conjunto de instruções, cada uma em um modo de operação de conjunto de instruções diferente, caracterizado por: um indicador de modo de operação de conjunto de instruções atual; uma localização de armazenamento de dados operativa para armazenar um indicador de modo de operação de conjunto de instruções alvo (52); uma unidade de execução operativa para executar instruções de acordo com um modo de operação do conjunto de instruções atual; e um circuito de comparação (68) operativo para comparar o modo de operação de conjunto de instruções atual com o modo de operação de conjunto de instruções alvo ao executar cada instrução, e emitir uma indicação se o modo de operação de conjunto de instruções atual corresponder com o modo de operação de conjunto de instruções alvo.
11. Processador, de acordo com a reivindicação 10, caracterizado pelo fato de que a indicação compreende: um sinal (20) indicando que o modo de operação de conjunto de instruções atual corresponde com o modo de operação de conjunto de instruções alvo. o endereço (76) da instrução sendo executada quando uma correspondência é detectada entre o modo de operação de conjunto de instruções atual e o modo de operação de conjunto de instruções alvo.
12. Processador, de acordo com a reivindicação 10, caracterizado pelo fato de que compreende adicionalmente uma localização de armazenamento de dados (52) operativa para armazenar uma faixa de endereços alvo, e em que o circuito de comparação é operativo para emitir uma indicação apenas se o modo de operação de conjunto de instruções atual corresponde com o modo de operação de conjunto de instruções alvo e o endereço da instrução estiver atualmente sendo executada dentro da faixa de endereços alvo.
13. Processador operativo para executar duas ou mais codificações de conjunto de instruções, cada uma delas em um modo de operação de conjunto de instruções diferente, caracterizado pelo fato de que: um circuito de comparação (68) operativo para detectar uma alteração no modo de operação de conjunto de instruções e emitir uma indicação da alteração de modo de operação de conjunto de instruções, e o endereço de instrução no qual ocorre a alteração, em resposta à detecção.
14. Processador, de acordo com a reivindicação 13, caracterizado pelo fato de que a indicação compreende: um sinal (20) indicativo de uma alteração em modo de operação de conjunto de instruções. o endereço de alteração de modo de operação de conjunto de instruções (76).
15. Processador, de acordo com a reivindicação 13, caracterizado pelo fato de que o circuito de comparação detecta uma alteração no modo de operação de conjunto de instruções apenas quando o endereço de instrução, no qual ocorre a alteração, estiver dentro de uma faixa predeterminada de endereços.
BRPI0715163-2A 2006-08-09 2007-08-03 Circuito de depuração comparando modo de operação de conjunto de instruções de processador BRPI0715163B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/463,379 2006-08-09
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 (2)

Publication Number Publication Date
BRPI0715163A2 true BRPI0715163A2 (pt) 2013-06-11
BRPI0715163B1 BRPI0715163B1 (pt) 2023-05-09

Family

ID=38891045

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0715163-2A BRPI0715163B1 (pt) 2006-08-09 2007-08-03 Circuito de depuração comparando modo de operação de conjunto de instruções de processador

Country Status (13)

Country Link
US (1) US8352713B2 (pt)
EP (2) EP3009936A1 (pt)
JP (2) JP5546859B2 (pt)
KR (1) KR101019278B1 (pt)
CN (2) CN101501650B (pt)
BR (1) BRPI0715163B1 (pt)
CA (1) CA2658829C (pt)
ES (1) ES2588185T3 (pt)
HU (1) HUE029441T2 (pt)
IN (1) IN2014MN01895A (pt)
MX (1) MX2009001458A (pt)
RU (1) RU2429525C2 (pt)
WO (1) WO2008021763A1 (pt)

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
CN105229616B (zh) 2013-06-27 2018-06-29 英特尔公司 在指令追踪系统中跟踪处理装置的模式
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 デバッグ支援装置
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
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
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
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US6408386B1 (en) * 1995-06-07 2002-06-18 Intel Corporation Method and apparatus for providing event handling functionality in a computer system
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
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
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
US7793261B1 (en) * 1999-10-01 2010-09-07 Stmicroelectronics Limited Interface for transferring debug information
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
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
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
WO2008021763A1 (en) 2008-02-21
CA2658829C (en) 2016-01-05
RU2009108321A (ru) 2010-09-20
KR101019278B1 (ko) 2011-03-07
EP2054808B1 (en) 2016-05-25
HUE029441T2 (en) 2017-02-28
CN106909501A (zh) 2017-06-30
RU2429525C2 (ru) 2011-09-20
IN2014MN01895A (pt) 2015-07-10
JP2010500661A (ja) 2010-01-07
US8352713B2 (en) 2013-01-08
US20080040587A1 (en) 2008-02-14
CN101501650A (zh) 2009-08-05
CN101501650B (zh) 2016-12-07
JP2013058217A (ja) 2013-03-28
MX2009001458A (es) 2009-02-19
CN106909501B (zh) 2021-02-05
ES2588185T3 (es) 2016-10-31
CA2658829A1 (en) 2008-02-21
JP5788370B2 (ja) 2015-09-30
BRPI0715163B1 (pt) 2023-05-09
EP2054808A1 (en) 2009-05-06
EP3009936A1 (en) 2016-04-20
KR20090051205A (ko) 2009-05-21
JP5546859B2 (ja) 2014-07-09

Similar Documents

Publication Publication Date Title
BRPI0715163A2 (pt) circuito de depuraÇço comparando modo de operaÇço de conjunto de instruÇÕes de processador
US8261047B2 (en) Qualification of conditional debug instructions based on address
US8261130B2 (en) Program code trace signature
US7043416B1 (en) System and method for state restoration in a diagnostic module for a high-speed microprocessor
US6205560B1 (en) Debug system allowing programmable selection of alternate debug mechanisms such as debug handler, SMI, or JTAG
EP2686772B1 (en) Diagnosing code using single step execution
US11625316B2 (en) Checksum generation
KR940003318B1 (ko) 캐시 메모리를 구비한 프로세서
US6990569B2 (en) Handling problematic events in a data processing apparatus
JP3746367B2 (ja) プロセッサ命令実行パイプラインにおける非侵入ソフトウェアブレークポイント
JP2646957B2 (ja) キャッシュ内蔵マイクロプロセッサ及びそのトレースシステム
Bruening et al. Building Dynamic Tools with DynamoRIO on x86 and ARM
JPH0528002A (ja) マイクロプロセツサ
WO2023057733A1 (en) Enabling branch recording when branch recording configuration values satisfy a predetermined condition
Hunt et al. System Introspection with Hardware Watchmachines
Zhou et al. A. Summary of the Work

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal against refusal [chapter 12.2 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 03/08/2007, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.