BR112015029860B1 - Dispositivo de processamento, método e mídia legível por máquina - Google Patents

Dispositivo de processamento, método e mídia legível por máquina Download PDF

Info

Publication number
BR112015029860B1
BR112015029860B1 BR112015029860-5A BR112015029860A BR112015029860B1 BR 112015029860 B1 BR112015029860 B1 BR 112015029860B1 BR 112015029860 A BR112015029860 A BR 112015029860A BR 112015029860 B1 BR112015029860 B1 BR 112015029860B1
Authority
BR
Brazil
Prior art keywords
packet
tmx
instruction
execution mode
transaction
Prior art date
Application number
BR112015029860-5A
Other languages
English (en)
Other versions
BR112015029860A2 (pt
Inventor
Ravi Rajwar
Beeman Strong
Konrad Lai
Matthew Merten
Ofer Levy
Peter Lachner
Thilo Schmitt
Thomas Toll
Tong Li
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Publication of BR112015029860A2 publication Critical patent/BR112015029860A2/pt
Publication of BR112015029860B1 publication Critical patent/BR112015029860B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)

Abstract

modo de acompanhamento de um dispositivo de processamento em sistemas de rastreamento de instruções. trata-se de sistemas e métodos para acompanhar o modo de dispositivos de processamento em um sistema de rastreamento de instruções de acordo com as modalidades reveladas no presente documento. o método também pode incluir receber uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento. o método também pode incluir determinar que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (em) gerado previamente pelo módulo de it. o método também pode incluir gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo em que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de it. o método pode adicionalmente incluir gerar pacotes de memória de transação (tmx) que têm padrão de modo de n bits no registro de pacotes. o n é pelo menos dois e o modo de n bits indica a situação de transação da operação de tmx.

Description

CAMPO DA INVENÇÃO
[0001] As modalidades da revelação referem-se, em geral, a dispositivos de processamento e, mais especificamente, se referem o modo de acompanhamento de dispositivos de processamento em um sistema de rastreamento de instruções.
HISTÓRICO
[0002] Um sistema de rastreamento de instruções (ITS) é uma capacidade de rastreamento, que fornece um rastreamento de fluxo de controle de execução de software. A saída de rastreamento é na forma de pacotes de tamanhos variáveis. Um decodificador pode usar os pacotes, juntamente com os bytes de instrução associados, para reconstruir o fluxo de execução do software que foi rastreado.
BREVE DESCRIÇÃO DOS DESENHOS
[0003] A revelação será compreendida maiscompletamente a partir da descrição detalhada dada abaixo e a partir dos desenhos anexos de várias modalidades da revelação. Os desenhos, entretanto, não deveriam ser usados para limitar a revelação às modalidades específicas, mas apenas para explicação e compreensão.
[0004] A Figura 1A ilustra uma arquitetura de sistema de rastreamento de instruções (ITS) exemplificativa de um dispositivo de processamento de acordo com a qual as modalidades podem operar.
[0005] A Figura 1B ilustra uma tabela dos Exemplos de sequência de instruções executadas pelo ITS e pacotes de rastreamento de instruções (IT) gerados pelo ITS para acompanhar modo de execução no rastreamento de instrução.
[0006] A Figura 1C ilustra uma tabela dos Exemplos de sequência de instruções executadas pelo ITS e pacotes de IT gerados pelo ITS para acompanhar execução de memória de transação no rastreamento de instrução.
[0007] A Figura 2A é um diagrama de blocos que ilustra tanto pipeline ordenado exemplificativo como um pipeline de emissão/execução fora de ordem de renomeação de registradores exemplificativo de acordo com modalidades descritas.
[0008] A Figura 2B é um diagrama de blocos que ilustra tanto uma modalidade exemplificativa de um núcleo de arquitetura ordenada e um exemplificativo, núcleo de arquitetura de emissão/execução fora de ordem de renomeação de registradores a serem incluídos em um processador de acordo com modalidades descritas.
[0009] A Figura 3 é um fluxograma que ilustra um exemplo de um método para acompanhar modo de execução no rastreamento de instrução no ITS.
[0010] A Figura 4 é um fluxograma que ilustra um exemplo de um método para acompanhar execução de memória de transação no rastreamento de instrução no ITS.
[0011] A Figura 5 é um diagrama de blocos que ilustra um processador de acordo com uma modalidade.
[0012] A Figura 5A ilustra uma arquitetura exemplificativa alternativa de acordo com a qual as modalidades podem operar.
[0013] A Figura 6B mostra uma representação diagramática de um sistema de acordo com o qual as modalidades podem operar, ser instaladas, integradas, ou configuradas.
[0014] A Figura 7 ilustra um diagrama de blocos de um sistema de computador de acordo com uma modalidade.
[0015] A Figura 8 é um diagrama de blocos de um sistema em chip (SoC) de acordo com uma modalidade da presente revelação.
[0016] A Figura 9 é um diagrama de blocos de uma modalidade de um projeto de sistema em chip (SOC).
[0017] A Figura 10 ilustra um diagrama de blocos de um sistema de computador de acordo com uma modalidade.
[0018] A Figura 11 ilustra um diagrama de blocos de um sistema de computador de acordo com uma modalidade.
[0019] A Figura 12 ilustra um diagrama de blocos de uma modalidade de dispositivo de computação do tipo tablet, um telefone inteligente, ou outro dispositivo móvel no qual conectores de interface de tela sensível ao toque são usados.
[0020] A Figura 13 ilustra uma representação diagramática de uma máquina na forma de exemplo de um sistema de computador dentro da qual um conjunto de instruções, para fazer com que a máquina realize qualquer uma ou mais das metodologias discutidas no presente documento, possa ser executado.
DESCRIÇÃO DETALHADA
[0021] No presente documento são reveladas modalidades para modo de acompanhamento de dispositivos de processamento em um sistema de rastreamento de instruções (IT). O modo de acompanhamento fornece informações, as quais ajudam a depurar execução de software durante rastreamento de instrução. Em uma modalidade, as informações incluem uma indicação de um evento no software que mudou o modo de execução do dispositivo de processamento, que incluem indicação do modo mudado. Em outra modalidade, as informações incluem mudança na situação da operação de memória de transação do dispositivo de processamento.
[0022] Os pacotes de IT do sistema de IT indicam um fluxo de controle de software executado pelo dispositivo de processamento. Como tal, os pacotes de IT podem revelar informações de resolução para todas as ramificações e eventos rastreados, de modo que, quando combinadas com as informações de instrução de fonte, o fluxo de controle de software pode ser reproduzido. A fim de acompanhar o modo de execução dos pacotes de IT, o decodificador deveria conhecer uma situação de modo de execução para cada instrução no rastreamento. O modo de execução determina como os bytes de instrução são interpretados pelo processador, e pode ser mudado por software a qualquer momento. Portanto, um conhecimento do modo de execução permite que o decodificador interprete apropriadamente os bytes de instrução dos binários de software. Mantendo-se acompanhamento do modo de execução do processador para cada instrução, o decodificador pode com precisão separar os bytes de instrução para produzir as mesmas instruções que foram executadas pelo processador, a fim de reproduzir o fluxo de controle preciso.
[0023] Em uma modalidade, um módulo de IT é fornecido para gerar um pacote de modo de execução (EM) representado por um padrão de dois bits em um pacote no registro de saída gerado pelo módulo de IT. O pacote de EM fornece uma indicação do modo de execução atual do dispositivo de processamento, e pode ser gerado em qualquer momento que o modo de execução muda. O pacote de EM então indicaria o novo valor de modo de execução de processador.
[0024] Com respeito aos pacotes de EM, o módulo de IT pode alavancar um componente de contador de ponto de sincronismo periódico do processador para determinar quando emitir pacotes de EM, que fornecem o modo de execução atual do processador. Em uma modalidade, os pacotes de EM indicam um evento no software, o qual muda o modo de execução do processador, e adicionalmente fornecem uma indicação do modo mudado. Em uma modalidade, o módulo de IT pode incluir um componente de geração de modo de execução que gera pacotes de EM que têm o padrão de dois bits. O pacote de EM pode fornecer uma indicação de uma mudança no modo de execução do processador para uma instrução acompanhada pelo módulo de IT. Por exemplo, combinações diferentes dos bits no padrão de dois bits representam os modos de execução diferentes do processador. Em uma modalidade, o componente de geração de modo de execução também gera um pacote de ponteiro de instrução de modo de execução (EMIP) juntamente com o pacote de EM. O pacote de EMIP inclui o ponteiro de instrução (IP) de uma primeira instrução que executa no modo de execução mudado associado ao pacote de EM. Em uma modalidade, o IP fornece um endereço de execução no começo do rastreamento de instrução.
[0025] A fim de decodificar com precisão um rastreamento, um decodificador de IT que recebe o registro de saída de IT deveria conhecer o modo de execução para cada instrução no rastreamento. Assim, a fim de decodificar com precisão as instruções do binário estático, o decodificador de IT precisa conhecer o modo inicial e ponteiro de instrução (IP) inicial que correspondem ao começo do registro de rastreamento. O decodificador então avança para “andar” a imagem binária, decodificar instruções, e determinar seus resultados a partir do registro de IT. Quando o software executa uma operação de mudança de modo, o modo mudado deveria ser comunicado para o decodificador de IT. Após a mudança de modo, o processador começa a aplicar as informações de modo mudado ao processo de decodificar instruções no binário armazenado no processador, e da mesma forma, o decodificador também precisa aplicar as informações de modo para a decodificação de instruções armazenadas no binário estático. Se o processador e decodificador ficarem fora de sincronia entre si com respeito às informações de modo, o processador e decodificador, podem interpretar bytes de instrução de forma diferente, e portanto executar e andar instruções diferentes, respectivamente. Nesse caso, é improvável que o registro de IT gerado pelo processador seja coerente com interpretação de bytes de instrução realizada pelo decodificador, o que provavelmente leva a erro e falha do processo de decodificação. Finalmente, devido ao fato de que algumas vezes é desejável começar a decodificar no meio de um registro de saída, o módulo de IT pode periodicamente inserir uma indicação de situação do modo e o IP dentro do registro de saída para criar pontos de início de decodificação viáveis adicionais.
[0026] Como discutido acima, os pacotes de IT indicam o fluxo de controle de software. Esses pacotes de IT são usados pelo decodificador para reconstruir o fluxo de execução do software que foi rastreado. A fim de evitar confundir o decodificador enviando-se pacotes para instruções que não efetivam realmente seu estado, a geração de pacotes ocorre no tempo de “retirada”. Isso evita a geração de pacotes para operações especulativas que podem ser descartadas pelo dispositivo de processamento, tais como instruções executadas sob um percurso especulado erroneamente. Com a introdução de operação de memória de transação (TMX), as instruções podem agora retirar especulativamente de modo que seus resultados (estado de registrador, gravações em memória, etc.) sejam efetivados apenas em um ponto posterior. Quando em uma transação, as instruções se retiram quando normal, mas o estado é efetivado apenas quando a transação termina em uma efetivação. Se a transação for interrompida, todas as mudanças de estado feitas pelas instruções especulativas, incluindo aquelas que tiverem se retirado, são revertidas. Como tal, é benéfico fornecer informações para o decodificador de IT sobre quais instruções efetivam estado e quais não efetivam estado e sobre as instruções de TMX associadas aos estados.
[0027] Em uma modalidade, o módulo de IT também pode gerar pacotes de memória de transação (TMX) representados por um padrão de modo de dois bits em um pacote em um registro de saída gerado pelo módulo de IT. Um bit pode indicar se uma transação de TMX está em progresso, e consequentemente as instruções que se retiram (e os pacotes associados àquelas instruções) são especulativas. Em uma modalidade, esse bit seria ajustado quando a transação começa, e limpo quando a mesma termina ou é efetivada. Outro bit pode indicar que uma interrupção ocorreu, e consequentemente todo o estado modificado pelas instruções de TMX especulativas na transação deve ser revertido.
[0028] Em uma modalidade da invenção, o módulo de IT também pode incluir um componente de geração de memória de transação que gera pacotes de memória de transação (TMX) com base no padrão de modo de dois bits, o qual indica o ponto de começo de TMX e quaisquer pontos de mudança de situação dentro do registro de saída de IT. Em uma modalidade, o ponto de mudança de situação indica que um estado de interrupção ocorreu na operação de TMX. O estado de interrupção indica que as instruções entre o ponto de começo de TMX e o ponto de interrupção não efetivam seu estado. Previamente, o decodificador não conheceria aquelas instruções executadas especulativamente, dentro de uma transação, e, se a transação foi interrompida, que os resultados devem ser revertidos. Como tal, sem saber da mudança na situação da operação de TMX, o decodificador representaria erradamente o fluxo de execução do processador e atualizações de estado do processador. Além disso, o estado de interrupção na operação de TMX pode provocar a transferência de fluxo de controle. Como tal, sem qualquer indicação da interrupção da operação de TMX, incluindo os ponteiros de instrução de fonte e destino (IPs) do evento de interrupção, o decodificador ficaria fora de sincronia com o fluxo real de execução de controle, e, portanto os pacotes de registro de IT gerados não seriam coerentes com onde o decodificador está acompanhando a execução.
[0029] Em outra modalidade, o processador pode eliminar os pacotes gerados pelas instruções executadas especulativamente interrompidas e, portanto não efetivadas. Entretanto, pode ser difícil para o processador armazenar temporariamente os pacotes de saída até que o processador interrompa ou efetive a região de TMX das instruções. Alternativamente, o processador pode tentar efetuar cópia de segurança do ponteiro de gravação no registro de saída de rastreamento, para, desse modo, remover aqueles pacotes do registro de rastreamento. Mas isso poderia ser difícil em casos de regiões de TMX grandes com muitos pacotes, em que um componente de sistema está arquivando periodicamente o registro de pacotes de saída em um meio de armazenamento não volátil, e o ponto de começo da região interrompida já foi arquivado. Finalmente, pode ser válido para um agente de depuração explorar o fluxo de execução em uma região interrompida para ajudar a identificar as razões para a interrupção.
[0030] Tal como com os pacotes de EM, o decodificador deve precisar determinar o estado de TMX do processador no começo do rastreamento. No caso do decodificador encontrar um estado de interrupção de TMX, o decodificador poderia ser confundido, se o mesmo não tivesse previamente visto um estado de começo de TMX. Nesse caso, o decodificador pode não saber qual execução e resultados empacotados processados descartar devido à interrupção. Também tal como o EM, os pacotes de TMX podem ser inseridos no registro de saída quando os eventos de TMX ocorrem durante a execução no processador. E finalmente, tal como o EM, o módulo de IT pode inserir informações de situação de TMX como parte dos pontos de sincronismo periódicos, para criar pontos de início de decodificador adicionais, os quais incluem todo o estado do processador, necessário para decodificar o registro de saída.
[0031] Deve ser observado que outros tipos de informações de modo de processador podem ser manipulados de maneira similar, em que pacotes de situação são fornecidos no começo do rastreamento e em pontos de sincronização periódicos dentro do registro de saída, bem como em pacotes de evento que indicam mudanças no modo inserido no tempo do evento no registro de saída. As informações de modo podem incluir informações exigidas para decodificação apropriada do código binário, e pode incluir informações úteis para caracterizar o comportamento de vários componentes. Essas informações de modo incluem, porém sem limitações, regras de ordenação de memória, aderência rigorosa VS vaga às regras de arredondamento de ponto flutuante do IEEE, ponteiro para a base da tabela de páginas, frequência do processador, frequência do sistema, endereço de base do segmento de código, endereço de base do segmento de dados, ponteiro para a base da estrutura de controle de máquina virtual, tensão do processador, estado de energia do processador, estado de energia do sistema, desligamento de componente, etc.
[0032] Na descrição a seguir, vários detalhes específicos são apresentados (por exemplo, implantações de lógica de IT específicas, formatos de pacote de IT, detalhes de partição de hardware/firmware, detalhes de partição/integração lógica, configurações de processador, detalhes microarquitetônicos, sequências de operações, tipos e inter-relacionamentos de componentes de sistema, e similares). Entretanto, é compreendido que as modalidades da invenção podem ser praticadas sem esses detalhes específicos. Em outros casos, circuitos, estruturas e técnicas bem conhecidos não foram mostrados em detalhes a fim de não obscurecer a compreensão dessa descrição.
[0033] A Figura 1A ilustra uma arquitetura exemplificativa 100 de um dispositivo de processamento de acordo com a qual as modalidades podem operar incluindo Arquitetura de IT que gera pacotes de rastreamento de instrução (IT) 115. Em uma modalidade, o dispositivo de processamento é uma unidade de processamento central (CPU).
[0034] Mais particularmente, uma unidade de retirada 101 inclui um módulo de IT 103, o qual recebe informações a partir de uma unidade de agendador e executa 102 e empacota as informações (por exemplo, o valor de modo de execução atual associado às instruções no rastreamento) para emitir nos pacotes de IT 115, os quais são enviados para a unidade de agendador e de execução 102. O módulo de IT 103 pode incluir um componente de geração de modo de execução (EMGC) 105, o qual recebe valores de modo de execução atual a partir da unidade de agendador e de execução 102. Como discutido acima, os valores de modo de execução podem incluir, porém sem limitações, modo de 8 bits, modo de 16 bits, modo de 32 bits, modo de 48 bits e modo de 64 bits. Em uma modalidade, o EMGC 105 extrai os valores de modo de execução atual a partir da unidade de agendador e de execução102. Em outras modalidades, o EMGC 105 recebe os valores de modo de execução atual a partir do mecanismo agendador e de execução 102 mediante solicitação. Em modalidades adicionais, o EMGC 105 recebe automaticamente os valores de modo de execução atual a partir da unidade de agendador e de execução 102.
[0035] O módulo de IT 103 também pode incluir um componente de contador de ponto de sincronismo periódico 107 acoplado ao EMGC 105. O componente de contador de ponto de sincronismo periódico 107 envia um sinal de comando para o EMGC 105 para gravar um pacote de EM, como um atualização de situação de modo periódica, para a corrente de pacotes de saída de IT 115. Como discutido acima, o pacote de EM fornece o modo de execução atual do processador que inclui indicação de qualquer mudança no modo de execução do processador. Em uma modalidade, o EMGC é implantado como uma sequência de instruções ou micro-operações executadas (também chamadas uops) que a máquina executa para gerar pacotes de EM.
[0036] Em uma modalidade, o pacote de EM inclui um padrão de dois bits em um registro de pacotes, o qual indica o modo de execução atual do processador para os pacotes de IT 115. As modalidades da presente invenção não são limitadas a um padrão de dois bits e o pacote de EM pode incluir padrões que tenham mais do que dois bits ou menos do que dois bits dependendo da implantação de arquitetura. Em uma modalidade, esse padrão de dois bits pode refletir os valores de bits arquitetônicos. Por exemplo, quando os valores de ambos os bits no padrão de dois bits são zero, isso pode indicar o valor do modo de execução como um modo de 16 bits. Em outro exemplo, quando o valor de um dos bits no padrão de dois bits é zero e o outro bit é um, isso pode indicar o valor do modo de execução como um dentre um modo de 32 bits ou um modo de 64 bits, dependendo da arquitetura do dispositivo de processamento.
[0037] Por exemplo, o EMGC 105 pode receber uma indicação do modo de 16 bits como o valor de modo de execução atual a partir da unidade de agendador e de execução 102, e então posteriormente recebe uma indicação do modo de 32 bits como o valor de modo de execução atual a partir da unidade de agendador e de execução 102. Em consequência da recepção do modo de 23 bits, o EMGC 105 reconhece a mudança no valor de modo de execução atual e gera um pacote de EM, o qual fornece o ponto de mudança de valor de modo de execução para o pacote de IT associado 115.
[0038] O módulo de IT 103 também pode incluir um componente de configuração 109 acoplado ao EMGC 105. O componente de configuração 109 permite que o software configure a frequência de pontos de sincronismo periódicos como controlada pelo Componente de Contador de Ponteiro de Sincronismo Periódico 107, e pode adicionalmente permitir que o software configure a inclusão/exclusão de pacotes de EM específicos nos pacotes de IT 115.
[0039] O EMGC 105 também gera um pacote de ponteiro de instrução de modo de execução (EMIP) que é associado ao pacote de EM nos pacotes de IT 115. Em uma modalidade, o pacote de EMIP segue o pacote de EM associado. O pacote de EMIP inclui o IP de uma primeira instrução que executa na modo executado mudado.
[0040] Utilizando os pacotes de EM e EMIP recebidos, o decodificador pode saber quando o modo de execução muda para uma instrução no rastreamento. Também, o decodificador pode conhecer precisamente onde no código binário que o modo muda, a fim de separar com precisão os bytes de instrução. Como resultado, o fluxo de instrução do rastreamento corresponde ao fluxo de execução do processador.
[0041] Em uma modalidade, o decodificador pode buscar para conhecer o modo de execução no começo do rastreamento, tal como antes da primeira mudança no modo execução. O EMGC 105 envia o pacote de EM em uma série de pacotes de estado. Os pacotes de estado fornecem informações de situação atual do dispositivo de processamento. Como tal, o modo de execução atual no pacote de EM é fornecido nos pacotes de estado. Devido ao fato de que o decodificador começa a decodificar no pacote de estado, o mesmo decodifica com precisão os pacotes de estado no começo do rastreamento. A inclusão da série de pacotes de estado em pontos periódicos no registro de saída cria pontos adicionais nos quais o decodificador pode começar a decodificar.
[0042] Em uma modalidade, a sequência de pacotes de IT 115 em um registro de pacotes da corrente de saída pode incluir, porém sem limitações, um pacote de delimitação seguido por uma pluralidade de pacotes de estado, os quais podem incluir um pacote de EM e pacote de EMIP, seguido por um pacote de fim de estado. Essa sequência pode se repetir em outro ponto no registro de pacotes na corrente de saída. O pacote de delimitação no registro de pacotes é seguido por um primeiro byte de um pacote, para, desse modo, servir como o ponto inicial para decodificar pacote. Em uma modalidade, o pacote de fim de estado fornece uma indicação do fim dos pacotes de estado. Pacotes fora de uma região de pacotes encerrados por um pacote de delimitação e um pacote de fim de estado são pacotes de evento que foram inseridos no registro de saída no ponto da mudança de modo.
[0043] A Figura 1B ilustra uma tabela dos Exemplos de pacotes de IT 115 gerada pelo módulo de IT 103 quando o rastreamento é habilitado, durante o fluxo de execução 116, por exemplo. Como mostrado, enquanto o processador está executando a sequência de software um registro de pacotes que inclui os pacotes de IT 115 é gerado pelo módulo de IT 103. Como um exemplo, os pacotes de IT 115 incluem o pacote de delimitação 120, o qual é seguido por pacotes de estado 121, os quais são seguidos por um pacote de EM 122 que tem um modo de execução de 32 bits. Como tal, o rastreamento é habilitado em modo de 32 bits. O pacote de EM 122 é seguido por um pacote de EMIP 123, o qual fornece o IP do modo de 32 bits de execução no registro de saída. O pacote de EMIP 123 é seguido por outro conjunto de pacotes de estado 124, os quais são seguidos por um pacote de fim de estado 125.
[0044] No exemplo, no meio de mudanças de fluxo de controle, uma mudança em um modo de execução pode ocorrer no fluxo de execução 116. Essa mudança no modo de execução é representada em um conjunto de pacotes de evento 126 no registro de pacotes de saída 115, os quais provoca a geração de outro pacote de EM 127 com um modo de execução mudado no registro de pacotes de saída 115. No exemplo mostrado, no fluxo de execução, o modo de execução muda de um modo de 32 bits para um modo de 64 bits. Também, o IP da mudança de modo de execução é representado no registro de saída como o pacote de EMIP 128, o qual segue imediatamente o pacote de EM 127. O pacote de EMIP 128 é seguido por outro conjunto de pacotes de evento 129.
[0045] No exemplo, o ponto de sincronismo periódico é criado no fluxo de execução 116, o que gera outro pacote de delimitação 130, o qual é seguido por um conjunto de pacotes de estado 131, os quais são seguidos por um pacote de EM 132 que tem um modo de execução de 64 bits. Como tal, o rastreamento é habilitado em modo de 64 bits. O pacote de EM 132 é seguido por um pacote de EMIP 133, o qual fornece o IP do modo de 64 bits de execução no registro de saída. O pacote de EMIP é seguido por outro conjunto de pacotes de estado 134, o qual é seguido por um pacote de fim de estado 135.
[0046] Novamente com referência à Figura 1A, como discutido acima, o módulo de IT 103 recebe informações a partir de um mecanismo agendador e de execução 102 e empacota as informações para emitir os pacotes de IT 115. Em uma modalidade, as informações incluem a situação de transação do processador. Essa situação de TMX inclui, porém sem limitações, Começo de Transação, Efetivação de Transação e Interrupção de Transação. O módulo de IT 103 pode incluir um componente de geração de memória de transação (TMXGC) 111, o qual recebe a situação de TMX a partir do mecanismo agendador e deexecução 102. Em uma modalidade, o TMXGC 111 extrai a situação de TMX a partir do mecanismo agendador e deexecução 102. Em outra modalidade, o TMXGC 111 recebe asituação de TMX a partir do mecanismo agendador e deexecução 102 mediante solicitação. Em modalidades adicionais, o TMXGC 111 recebe automaticamente a situação de TMX a partir do mecanismo agendador e de execução 102.
[0047] O componente de contador de ponto de sincronismo periódico 107 no módulo de IT 103 também é acoplado ao TMGC 111, o qual por sua vez gera pacotes de memória de transação (TMX) para incluir nos pacotes de estado gerados em pontos de sincronismo periódicos em pacotes de IT 115. O componente de contador de ponto de sincronismo periódico 107 envia um sinal de comando para o TMXGC 111 para gerar pacotes de TMX como parte dos pacotes de estado periódicos gravados na corrente de pacotes de saída de IT. Em uma modalidade, o TMXGC é implantado como uma sequência de instruções ou micro- operações executadas (também chamadas uops) que a máquina executa para gerar pacotes de TMX. Como discutido acima, o pacote de TMX é um padrão de modo de dois bits em um registro de pacotes. O padrão de modo de dois bits pode indicar o ponto de mudança de situação de TMX para o pacote de IT 115. As modalidades da presente invenção não são limitadas a um padrão de modo de dois bits e o pacote de TMX pode incluir padrões que tenham mais do que modos de dois bits ou menos do que modos de dois bits dependendo da implantação de arquitetura.
[0048] O componente de configuração 109 no módulo de IT também é acoplado ao TMXGC 111. O componente de configuração 109 permite que o software configure a frequência de pontos de sincronismo periódicos como controlado pelo Componente de Contador de Ponteiro de Sincronismo Periódico 107, e pode adicionalmente permitir que o software configure a inclusão/exclusão de pacotes de TMX específicos nos pacotes de IT 115.
[0049] Em uma modalidade, o padrão de modo de dois bits do pacote de TMX inclui bit de modo InTX e um bit de modo TXAbort. O bit de modo InTX indica quando o processador está executando dentro de uma transação, e consequentemente mudanças nesse bit indicam o começo ou fim de uma operação de TMX. Em um exemplo, o bit de modo InTX pode ser ajustado (por exemplo, para 1) quando a operação de TMX começa e limpo (por exemplo, para 0)quando a operação de TMX é efetivada ou interrompa. O bit de modo TXAbort fornece notificação para odecodificador de IT de que a operação de TMX foiinterrompida. Essa notificação de interrupção informa o decodificador de IT que todos os pacotes entre aasserção do bit de modo InTX e a asserção do bit de modo TXAbort representam instruções que não efetivam seu estado. Em uma modalidade, o decodificador de IT descarta todas as instruções associadas a esses pacotes. Em uma modalidade, o decodificador marca esses pacotes para posteriormente usar as instruções associadas a esses pacotes. Em um exemplo, o bit de modo TXAbort pode ser ajustado (por exemplo, para 1) quando o bit de modo InTX muda de 1 para 0 em uma interrupção.
[0050] Em um exemplo, quando o processador executa uma instrução de TMX de Começo de Transação, o TMXGC 111 gera um pacote de TMX com o bit de modo InTX ajustado para 1 e o bit de modo TXAbort ajustado para 0, o que indica o começo de uma transação, ou seja, TMXB. Em outro exemplo, quando o processador executa uma instrução de TMX de Efetivação de Transação, o TMXGC 111 gera um pacote de TMX com o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0, o que indica a efetivação da transação, ou seja, TMXC. Em um exemplo adicional, quando o TMXGC 111 recebe indicação de uma interrupção de transação, o TMXGC 111 gera um pacote de TMX com o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 1, o que indica a interrupção da transação, ou seja, TMXA.
[0051] Em algumas modalidades, o TMGC 111 também gera um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) e/ou um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado a cada pacote de TMX nos pacotes de IT 115. O pacote de STMXIP fornece o IP de instrução associado à mudança no estado de TMX. Em uma modalidade, o pacote de STMXIP é gerado juntamente com o pacote de TMXB para fornecer o IP da instrução associada no começo da operação de TMX. Em outra modalidade, o pacote de STMXIP é gerado juntamente com o pacote de TMXA para fornecer o IP da instrução associada na interrupção da operação de TMX. Em uma modalidade adicional, o pacote de STMXIP é gerado juntamente com o pacote TMXC para fornecer o IP da instrução associada na efetivação da operação de TMX.
[0052] O pacote de TTMXIP fornece o IP da próxima instrução a ser executada na interrupção da operação de TMX, o que é necessário se a operação de interrupção provocar uma transferência de fluxo de controle. Como tal, o decodificador pode saber onde o TMX começou, onde o mesmo interrompeu, onde o mesmo efetivou, e onde a execução continuou após qualquer interrupção. Em uma modalidade, o decodificador pode descartar os bytes de instrução para todos os pacotes entre o começo da operação de TMX e a interrupção da operação de TMX. Em outra modalidade, o decodificador pode marcar bytes de instrução para todos os pacotes entre o começo da operação de TMX e a interrupção da operação de TMX.
[0053] Como discutido acima, o decodificador começa a decodificação nos pacotes de estado, e os pacotes de estado fornecem informações de situação atual do dispositivo de processamento. O TMXGC 111 envia o pacote de TMX em um\ série de pacotes de estado. O pacote de delimitação no registro de pacotes é sempre seguido por um primeiro byte de um pacote, para, desse modo, servir como o ponto inicial para decodificar o pacote. Como tal, o decodificador de IT pode procurar o pacote de delimitação e decodificar com precisão os pacotes de estado após o pacote de delimitação. Incluindo-se um pacote de TMX entre os pacotes de estado que seguem imediatamente o pacote de delimitação, é assegurado que o decodificador conheça a situação de transação a partir do ponto de início de decodificação.
[0054] A Figura 1C ilustra uma tabela dos Exemplos de pacotes de IT 115 gerado pelo módulo de IT 103 quando o rastreamento é habilitado durante o fluxo de execução 118, por exemplo. Como mostrado, quando o rastreamento é habilitado durante a execução da sequência de instruções 118, um registro de pacotes dos pacotes de IT 115 é gerado pelo TMGC 111. Os pacotes de IT 115 incluem um pacote de delimitação 140, o qual é seguido por um conjunto de pacotes de estado 141, os quais são seguidos por um pacote de TMX 142. O pacote de TMX 142 pode ser o padrão de modo de dois bits descrito acima, o qual inclui um bit de modo InTX e um bit de TXAbort. O bit de modo InTX fornece notificação para o decodificador de um começo de uma operação de TMX e o bit de modo TXAbort fornece notificação de que a operação de TMX foi interrompida. Nesse exemplo, o padrão de modo de dois bits do pacote de TMX 142 inclui o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0. Como tal, o fluxo de execução 118 não está em transação. Um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) 143 é gerado após o pacote de TMX 142. O pacote de STMXIP 143 fornece o IP da instrução associada da operação de TMX. Em uma modalidade, o pacote de STMXIP 143 pode ser gerado antes do pacote de TMX 142. O pacote de STMXIP 143 é seguido por um conjunto de pacotes de estado 144 e um pacote de fim de estado 145.
[0055] Em um exemplo, no meio de fluxo de controle, uma operação de TMX começa no fluxo de execução 118. Essa operação de Começo de TMX é representada em um conjunto de pacotes de evento 146 no registro de pacotes de saída 115, o que faz com que a geração de um TMX comece (TMXB) 147 como um pacote de TMX em um começo da operação de TMX. O pacote de TMXB 147 pode ser o padrão de modo de dois bits descrito acima, o qual inclui um bit de modo InTX e um bit TXAbort. O bit de modo InTX fornece notificação para o decodificador de um começo de uma operação de TMX e o bit de modo TXAbort fornece notificação de que a operação de TMX foi interrompida. Por exemplo, quando o pacote de TMXB 147 indica a ocorrência de uma instrução de TMX de Começo de Transação, o padrão de modo de dois bits do pacote de TMXB 147 pode incluir o bit de modo InTX ajustado para 1 e o bit de modo TXAbort ajustado para 0. Um primeiro pacote de ponteiro de instrução de memória de transação fonte (STMXIP) 148 é gerado após o pacote de TMXB 147. O primeiro pacote de STMXIP 148 fornece o IP da instrução associada no começo da operação de TMX. Em uma modalidade, o primeiro pacote de STMXIP 148 pode ser gerado antes do pacote de TMXB 147.
[0056] Em um exemplo, uma operação de TMX interrompe no fluxo de execução, o que é representado por um pacote de interrupção de TMX (TMXA) 150 como o pacote de TMX. O pacote de TMXA 150 também pode seguir o padrão de modo de dois bits descrito acima. Por exemplo, quando o pacote de TMXA 150 indica a ocorrência de uma interrupção de transação, o padrão de modo de dois bits do pacote de TMXA 150 pode incluir o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 1. Um segundo pacote de STMXIP 151 é gerado após o pacote de TMXA 150. O segundo pacote de STMXIP 151 fornece o IP da instrução associada a ser executada na interrupção da operação de TMX. Em uma modalidade, o segundo pacote de STMXIP 151 pode ser gerado antes do pacote de TMXA 150. O segundo pacote de STMXIP 151 é seguido por um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) 152, o qual fornece o IP da próxima instrução a ser executada após a interrupção da operação de TMX. Em uma modalidade, o pacote de TTMXIP 152 é gerado antes do pacote de TMXA 150. O pacote de TTMXIP 152 pode ser seguido por outro conjunto de pacotes de evento 153.
[0057] No exemplo, o ponto de sincronismo periódico é criado no fluxo de execução 118, o que gera outro pacote de delimitação 154, o qual é seguido por um conjunto de pacotes de estado 155, o qual é seguido por outro pacote de TMX 156. Similar ao exposto acima, o padrão de modo de dois bits do pacote de TMX 156 inclui o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0. Outro pacote de STMXIP 157 é gerado após o pacote de TMX 156. Em uma modalidade, o pacote de STMXIP 157 pode ser gerado antes do pacote de TMX 156. O pacote de STMXIP 157 é seguido por outro conjunto de pacotes de estado 158 e um pacote de fim de estado 159.
[0058] Embora, não mostrado, as instruções de TMX também podem resultar em efetivação da operação de TMX, o que inclui gerar um pacote de efetivação de TMX (TMXC). Quando usando o padrão de modo de dois bits, o pacote de TMXC pode incluir o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0.
[0059] Novamente com referência à Figura 1A, em uma modalidade, um usuário pode querer rastrear instruções executadas dentro de uma faixa de IP específica. Nesse cenário, o TMXGC 111 pode gerar e emitir pacotes de TMX a partir de instruções que se encontram tanto dentro da faixa de IP específica com fora da faixa de IP específica. Entretanto, o TMXGC 111 não precisa gerar e emitir o pacote de STMXIP e o pacote de TTMXIP associado ao pacote de TMX quando o IP está fora da faixa de IP específica. Como resultado, é permitido que o decodificador manipule apropriadamente os pacotes gerados por operações de TMX que começam ao região de IP mas terminam fora da região de IP, ou por operações de TMX que começam fora da região de IP mas terminam dentro da região de IP.
[0060] A Figura 2A é um diagrama de blocos que ilustra um pipeline ordenado e um pipeline de emissão/execução fora de ordem de estágio de renomeação de registradores de um modo de acompanhamento de execução de processador e execução de memória de transação em um sistema de rastreamento de instrução de acordo com pelo menos uma modalidade da invenção. A Figura 2B é um diagrama de blocos que ilustra um núcleo de arquitetura ordenada, uma lógica de renomeação de registradores e uma lógica de emissão/execução fora de ordem a ser incluída em um processador de acordo com pelo menos uma modalidade da invenção. As caixas de linhas sólidas na Figura 2A ilustram o pipeline ordenado, enquanto que as caixas em linhas tracejadas ilustram o pipeline de emissão/execução fora de ordem de renomeação de registradores. De maneira similar, as caixas de linhas sólidas na Figura 2B ilustram a lógica de arquitetura ordenada, enquanto que as caixas em linhas tracejadas ilustram a lógica de renomeação de registradores e lógica de emissão/execução fora de ordem.
[0061] Na Figura 2A, um pipeline de processador 200 inclui um estágio de busca 202, um estágio de decodificação de tamanho 204, um estágio de decodificação 206, um estágio de alocação 208, um estágio de renomeação 210, um estágio de agendamento (também conhecido como um despacho ou emissão) 212, um estágio de leitura de registrador/leitura de memória 214, um estágio de execução 216, um estágio de gravação em cache/gravação em memória 218, um estágio de manipulação de exceção 222, e um estágio de efetivação 224. Em algumas modalidades, os estágios são fornecidos em uma ordem diferente e estágios diferentes podem ser considerados ordenados e fora de ordem.
[0062] Na Figura 2B, as setas denotam um acoplamento entre duas ou mais unidades e a direção da seta indica uma direção de fluxo de dados entre aquelas unidades. A Figura 2B mostra o núcleo de processador 290 que inclui uma unidade de entrada 230 acoplada a um unidade de ferramenta de execução 250, e ambas são acopladas a uma unidade de memória 70.
[0063] O núcleo 290 pode ser um núcleo de computação de conjunto de instruções reduzido (RISC), um núcleo de computação de conjunto de instruções complexas (CISC), um núcleo de palavra de instrução muito longa (VLIW), ou um tipo de núcleo híbrido ou alternativo. Como ainda outra opção, o núcleo 290 pode ser um núcleo de propósito especial, tal como, por exemplo, um núcleo de rede ou de comunicação, ferramenta de compressão, núcleo gráfico, ou similares.
[0064] A unidade de entrada 230 inclui uma unidade de previsão de ramificação 232 acoplada a uma unidade de cache de instrução 234, a qual é acoplada a uma memória temporária de amortecimento à parte de tradução de instrução (TLB) 236, a qual é acoplada a uma unidade de busca de instrução 238, a qual é acoplada a uma unidade de decodificação 240. A unidade de decodificação ou decodificador pode decodificar instruções, e gerar como uma saída uma ou mais micro-operações, pontos de entrada de microcódigo, microinstruções, outras instruções, ou outros sinais de controle, os quais são decodificados de, ou os quais refletem de outra forma, ou são derivados de, as instruções originais. O decodificador pode ser implantado com o uso de vários mecanismos diferentes. Exemplos de mecanismos adequados incluem, porém sem limitações, tabelas de pesquisa, implantações de hardware, matrizes de lógica programável (PLAs), memórias somente de leitura de microcódigo (ROMs), etc. A unidade de cache de instrução 234 é acoplada adicionalmente a uma unidade de cache de nível 2 (L2) 276 na unidade de memória 270. A unidade de decodificação 240 é acoplada a uma unidade de renomeação/alocação 252 na unidade de ferramenta de execução 250.
[0065] A unidade de ferramenta de execução 250 inclui a unidade de renomeação/alocação 252 acoplada a uma unidade de retirada 254 e um conjunto de uma ou mais unidade(s) de agendador 256. A unidade de retirada 254 pode incluir componente de rastreamento de instrução em tempo real 203 para gerar pacotes de ITS. A(s) unidade(s) de agendador 256 representa(m) qualquer número de agendadores diferentes, incluindo estações de reserva, janela de instrução central, etc. A(s) unidade(s) de agendador 256 é(são) acoplada(s) à(s) unidade(s) de arquivo(s) de registrador físico 258. Cada uma da(s) unidade(s) de arquivo(s) de registrador físico 258 representa um ou mais arquivos de registrador físico, os quais armazenam um ou mais tipos de dados diferentes, tais como inteiro escalar, ponto flutuante escalar, inteiro compactado, ponto flutuante compactado, vetor inteiro, vetor de ponto flutuante, etc., situação (por exemplo, um ponteiro de instrução que é o endereço da próxima instrução a ser executada), etc. A(s) unidade(s) de arquivo(s) de registrador físico 258 é(são) sobreposta(s) pela unidade de retirada 254 para ilustrar várias formas nas quais a execução de renomeação de registradores e fora de ordem podem ser implantadas (por exemplo, com o uso de memória(s) temporária(s) de amortecimento de reordenação e arquivo(s) de registrador de retirada, com o uso de arquivo(s) futuro(s), memória(s) temporária(s) de amortecimento de histórico, e arquivo(s) de registrador de retirada; com o uso de um mapa de registrador e um agrupamento de registradores; etc.).
[0066] Em geral, os registradores arquitetônicos são visíveis de fora do processador ou de uma perspectiva do programador. Os registradores não são limitados a qualquer tipo de circuito particular conhecido. Vários tipos de registradores diferentes são adequados desde que os mesmos sejam capazes de armazenar e fornecer dados como descrito no presente documento. Exemplos de registradores adequados incluem, porém sem limitações, registradores físicos dedicados, registradores físicos alocados dinamicamente com o uso de renomeação de registradores, combinações de registradores físicos dedicados e alocados dinamicamente, etc. A unidade de retirada 254 e a(s) unidade(s) de arquivo(s) de registrador físico 258 são acopladas a o(s) grupo(s) de execução 460. O(s) grupo(s) de execução 260 inclui(em) um conjunto de uma ou mais unidades de execução 262 e um conjunto de uma ou mais unidades de acesso de memória 264. As unidades de execução 262 podem realizar várias operações (por exemplo, alterações, adição, subtração, multiplicação) e em vários tipos de dados (por exemplo, ponto flutuante escalar, inteiro compactado, ponto flutuante compactado, vetor inteiro, vetor de ponto flutuante).
[0067] Embora algumas modalidades possam incluir um número de unidades de execução dedicadas a funções ou conjuntos de funções específicos, outras modalidades podem incluir uma unidade de execução ou múltiplas unidades de execução em que todas realizam todas as funções. A(s) unidade(s) de agendador 256, unidade(s) de arquivo(s) de registrador físico 258, e grupo(s) de ececução260 são mostrados como sendo possivelmente plurais devido a certas modalidades criarem pipelines separados para certos tipos de dados/operações (por exemplo, um pipeline de inteiro escalar, um pipeline de ponto flutuante escalar/inteiro compactado/ponto flutuante compactado/vetor inteiro/vetor de ponto flutuante, e/ou um pipeline de acesso de memória em que cada um tem sua própria unidade de agendador, unidade de arquivo(s) físico(s) de registrador, e/ou grupo de execução- e no caso de um pipeline de acesso de memória separado, certas modalidades são implantadas nas quais o grupo de execução desse pipeline tem a unidade(s) de acesso de memória 264). Também deve ser compreendido que onde são usados pipelines separados, um ou mais desses pipelines podem ser de emissão/execução fora de ordem e o resto ordenado.
[0068] O conjunto de unidades de acesso de memória 264 é acoplado à unidade de memória 270, a qual inclui uma unidade de TLB de dados 272 acoplada a uma unidade de cache de dados 274 acoplada a uma unidade de cache de nível 2 (L2) 276. Em uma modalidade exemplificativa, as unidades de acesso de memória 264 podem incluir uma unidade de carregamento, uma unidade de endereço de armazenamento, e um unidade de dados de armazenamento, cada uma das quais é acoplada à unidade de TLB de dados 272 na unidade de memória 270. A unidade de cache de L2 276 é acoplada a um ou mais outros níveis de cache e eventualmente a uma memória principal.
[0069] A título de exemplo, a arquitetura de núcleo de emissão/execução fora de ordem de renomeação de registradores exemplificativa pode implantar o pipeline 200 como segue: 1) a busca de instrução 38 realiza os estágios de busca e decodificação de tamanho 202 e 204; 2) a unidade de decodificação 240 realiza o estágio de decodificação 206; 3) a unidade de renomeação/alocação 252 realiza o estágio de alocação 208 e estágio de renomeação 210; 4) a(s) unidade(s) de agendador 256 realiza(m) o estágio de agendamento 212; 5) a(s) unidade(s) de arquivo(s) de registrador físico 258 e a unidade de memória 270 realizam o estágio de leitura de registrador/leitura de memória 214; o grupo de execução 260 realizar o estágio de execução 216; 6) a unidade de memória 270 e a(s) unidade(s) de arquivo(s) de registrador físico 258 realizam o estágio de gravação em cache/gravação em memória 218; 7) várias unidades podem ser envolvidas no estágio de manipulação de exceção 222; e 8) a unidade de retirada 254 e a(s) unidade(s) de arquivo(s) de registrador físico 258 realizam o estágio de efetivação 224.
[0070] O núcleo 290 pode suportar um ou mais conjuntos de instruções (por exemplo, o conjunto de instruções x86 (com algumas extensões que tiverem sido adicionadas com versões mais novas); o conjunto de instruções MIPS da MIPS Technologies de Sunnyvale, CA; o conjunto de instruções ARM (com extensões adicionais tais como NEON) da ARM Holdings de Sunnyvale, CA).
[0071] Deve ser compreendido que o núcleo pode suportar multitransacional (execução de dois ou mais conjuntos de operações ou transações em paralelo), e pode fazê-lo em uma variedade de formas incluindo multitransacional segmentado no tempo, multitransacional simultâneo (em que um único núcleo físico fornece um núcleo lógico para cada uma das transações que o núcleo físico está multitransacionando simultaneamente), ou uma combinação das mesmas (por exemplo, busca e decodificação segmentadas no tempo e depois disso multitransacional simultâneo tal como na tecnologia Intel® Hyperthreading).
[0072] Embora a renomeação de registradores seja descrita no contexto de execução fora de ordem, deve ser compreendido que a renomeação de registradores pode ser usado em arquitetura ordenada. Embora a modalidade ilustrada do processador também inclua unidades de cache de instrução e dados separadas 234/274e uma unidade de cache de L2 compartilhada 276, modalidades alternativas podem ter uma única cache interna tanto para instruções como dados, tal como, por exemplo, uma cache interna de Nível 1 (L1), ou múltiplos níveis de cache interna. Em algumas modalidades, o sistema pode incluir uma combinação de uma cache interna e uma cache externa que é externa ao núcleo e/ou ao processador. Alternativamente, todas as caches podem ser externas ao núcleo e/ou ao processador.
[0073] A Figura 3 é um fluxograma que ilustra um exemplo de um método 300 para modo de acompanhamento de execução por um sistema de rastreamento de instrução. O método 300 pode ser realizado por lógica de processamento que pode incluir hardware (por exemplo, circuitos, lógica dedicada, lógica programável, microcódigo, etc.). A numeração dos blocos apresentados é por uma questão de clareza e não é destinada a prescrever uma ordem de operações na qual os vários blocos podem ocorrer. Em uma modalidade, o método 300 é realizado pelo módulo de IT 103 descrito com respeito à Figura 1A.
[0074] Começando com o bloco 301, o módulo de IT acompanha o modo de execução para cada uma das instruções no rastreamento. Por exemplo, o EMGC 105 acompanha o modo de execução fornecido pela unidade de agendador e de execução 102. O modo de execução fornece um valor de modo de execução atual do dispositivo de processamento. O modo de execução pode incluir, porém sem limitações, modo de 8 bits, modo de 16 bits, modo de 32 bits, modo de 48 bits e modo de 64 bits. No bloco 303, for determinado se há uma mudança no modo de execução para a instrução no rastreamento. Se for determinado no bloco 303 que não há nenhuma mudança no modo de execução, o método avança para o bloco 305 onde é determinado se um pacote de estado periódico deve ser gerado. Se for determinado no bloco 305 que um pacote de estado periódico não deve ser gerado, o bloco 301 é repetido. Em uma modalidade, o componente de contador de ponto de sincronismo periódico 107 determina quando gerar o pacote de estado periódico. Se for determinado no bloco 305 que um pacote de estado periódico deve ser gerado então o método avança para o bloco 307, onde o EMGC 105 gera e emite um pacote de modo de execução (EM). Como discutido acima, o pacote de EM fornece o modo de execução atual do dispositivo de processamento.
[0075] Entretanto, se for determinado no bloco 303 que há uma mudança no modo de execução, então o método avança para 307 onde o EMGC 105 gera e emite um pacote de modo de execução (EM) nos pacotes de IT. Como discutido acima, o pacote de EM também fornece uma indicação de um evento no software, o qual mudou o modo de execução, e uma indicação do modo de execução mudado. Em uma modalidade, o pacote de EM é um padrão de dois bits em um registro de pacotes do módulo de IT, o qual serve como o ponto de mudança de modo de execução para o pacote de IT 115. No bloco 309, o EMGC 105 gera e emite um pacote de EMIP associado ao pacote de EM nos pacotes de IT. Em uma modalidade, o pacote de EMIP segue o pacote de EM. Como discutido acima, o pacote de EMIP inclui o IP de uma primeira instrução que executa no estado de modo de execução mudado.
[0076] A Figura 4 é um fluxograma que ilustra um exemplo de um método 400 para acompanhar a execução de memória de transação por um sistema de rastreamento de instrução. O método 400 pode ser realizado por lógica de processamento que pode incluir hardware (por exemplo, circuitos, lógica dedicada, lógica programável, microcódigo, etc.). A numeração dos blocos apresentados é por uma questão de clareza e não é destinada a prescrever uma ordem de operações na qual os vários blocos podem ocorrer. Em uma modalidade, o método 400 é realizado pelo módulo de IT 103 descrito com respeito à Figura 1A.
[0077] Começando com o bloco 401, o módulo de IT 103 acompanha a situação de memória de transação (TMX) para cada uma das instruções no rastreamento. Por exemplo, o TMXGC 111 acompanha a situação da operação de TMX fornecida pela unidade de agendador e de execução 102. No bloco 403, é determinado se a situação da operação de TMX para a instrução no rastreamento é interrupção. Se no bloco 403, for determinado que a situação da operação de TMX não é interrupção, então no bloco 405, é determinado se a situação da operação de TMX é efetivação. Se no bloco 405, for determinado que a situação da operação de TMX é efetivação, então no bloco 406, uma efetivação de TMX (TMXC) é gerada como o pacote TMXC e emitida como os pacotes de IT 115 na corrente de saída. O TMXGC 111 gera o pacote TMXC, o qual indica a efetivação da operação de TMX. Por exemplo, o pacote TMXC é a Efetivação de Transação como a instrução de TMX com o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0. No bloco 407, um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote TMXC é gerado. O pacote de STMXIP fornece o IP da fonte associada às instruções de TMX. Como um exemplo, o pacote de STMXIP fornece o IP da instrução associada na efetivação da operação de TMX. Em uma modalidade, o pacote de STMXIP pode ser gerado antes do pacote TMXC.
[0078] Se no bloco 405, for determinado que a situação da operação de TMX não é efetivação, então o método avança para o bloco 408 onde é determinado se a situação da operação de TMX é começo. Se no bloco 408, for determinado que a situação da operação de TMX é começo, então no bloco 409, um Começo de TMX (TMXB) é gerado como um pacote de TMX. O TMXGC 111 gera o pacote de TMXB, o qual indica o começo da operação de TMX. O pacote de TMX inclui o padrão de modo de dois bits, o qual inclui o bit de modo InTX e o bit TXAbort. O bit de modo InTX fornece notificação para o decodificador de um começo da operação de TMX e o bit de modo TXAbort fornece notificação de que a operação de TMX foi interrompida. Por exemplo, o pacote de TMXB é o Começo de Transação como a instrução de TMX com o bit de modo InTX ajustado para 1 e o bit de modo TXAbort ajustado para 0. No bloco 411, um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMXB é gerado. O pacote de STMXIP fornece o IP da fonte associada às instruções de TMX. Como um exemplo, o pacote de STMXIP fornece o IP da instrução associada no começo da operação de TMX. Em uma modalidade, o pacote de STMXIP pode ser gerado antes do pacote de TMXB.
[0079] Se no bloco 408, a situação da operação de TMX não for começo, então não há nenhuma mudança na situação da operação de TMX e no bloco 413, é determinado se um pacote de estado periódico deve ser gerado. Como afirmado acima, o pacote de estado fornece informações de situação atual do processador. Se for determinado no bloco 413 que um pacote de estado periódico não deve ser gerado, o bloco 401 é repetido. Em uma modalidade, o componente de contador de ponto de sincronismo periódico 107 determina quando gerar o pacote de estado periódico. Se for determinado no bloco 413 que um pacote de estado periódico deve ser gerado então o método avança para o bloco 415, onde o TMXGC 111 gera e emite um pacote de TMX Como discutido acima, o pacote de TMX inclui o padrão de modo de dois bits, o qual inclui o bit de modo InTX e o bit TXAbort. Nesse exemplo, o pacote de TMX com bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 0 indica que o fluxo de execução não está em transação. No bloco 416, o pacote de STMXIP associado ao pacote de TMX é gerado. Como discutido acima, o pacote de STMXIP fornece o IP da fonte associada às instruções de TMX. Em uma modalidade, o pacote de STMXIP pode ser gerado antes do pacote de TMX.
[0080] Voltando para o bloco 403, se for determinado que a situação da operação de TMX é interrupção, então o método avança para 417, onde um pacote de Interrupção de TMX (TMXA) é gerado como o pacote de TMX pelo TMXGC 111. Como discutido acima, o pacote de TMXA fornece uma indicação de interrupção na situação da operação de TMX. Por exemplo, o pacote de TMXA é a Interrupção de Transação como a instrução de TMX com o bit de modo InTX ajustado para 0 e o bit de modo TXAbort ajustado para 1. No bloco 419, um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMXA é gerado pelo TMXGC 111. O pacote de STMXIP fornece o IP no qual a interrupção da operação de TMX ocorreu. Em uma modalidade, o pacote de STMXIP é gerado antes o pacote de TMXA. No bloco 421, o EMGC 105 gera um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMXA. O pacote de TTMXIP fornece o IP da próxima instrução a ser executada após a interrupção da operação de TMX. Em uma modalidade, o pacote de TTMXIP é gerado antes do pacote de TMXA. No bloco 423, o EMGC 105 emite o pacote de TMXA, o pacote de STMXIP associado e o pacote de TTMXIP associado como os pacotes de IT 115 na corrente de saída.
[0081] A Figura 5 é um diagrama de blocos que ilustra uma microarquitetura para um processador 500 que inclui circuitos lógicos para realizar instruções de acordo com uma modalidade da invenção. Em uma modalidade, o processador 500 acompanha o modo de execução e a execução de memória de transação em um sistema de rastreamento de instrução. Em algumas modalidades, uma instrução de acordo com uma modalidade pode ser implantada para operar sobre elementos de dados que têm tamanhos de byte, palavra, palavra dupla, palavra quádrupla, etc., bem como tipos de dados, tais como inteiro de precisão simples e dupla e tipos de dados de ponto flutuante. Em uma modalidade a entrada ordenada 501 é a parte do processador 500 que busca instruções a serem executadas e prepara as mesmas para serem usadas posteriormente no pipeline de processador. A entrada 501 pode incluir diversas unidades. Em uma modalidade, a pré-buscador de instruções 526 busca instruções a partir da memória e alimenta as mesmas para um decodificador de instruções 528, o qual, por sua vez, decodifica ou interpreta as mesmas. Por exemplo, em uma modalidade, o decodificador decodifica uma instrução recebida em uma ou mais operações chamadas “microinstruções” ou “micro- operações” (também chamadas micro op ou uops) que a máquina pode executar.
[0082] Em outras modalidades, o decodificador analisa a instrução em um código operacional e dados correspondentes e campos de controle que são usados pela microarquitetura realizam operações de acordo com uma modalidade. Em uma modalidade, a cache de rastreamento 530 recebe uops decodificados e monta os mesmos em sequências ordenadas de programa ou rastreamentos na fila de uop 534 para execução. Quando a cache de rastreamento 530 encontra uma instrução complexa, o microcódigo ROM 532 fornece os uops necessários para completar a operação.
[0083] Algumas instruções são convertidas em uma única micro-operação, enquanto que outras usam diversas micro- operações para completar a operação. Em uma modalidade, se mais do que quatro micro-operações forem necessárias para completar uma instrução, o decodificador 528 acessa o microcódigo ROM 532 para fazer a instrução. Para uma modalidade, uma instrução pode ser decodificada em um pequeno número de micro-operações para processamento no decodificador de instruções 528. Em outra modalidade, uma instrução pode ser armazenada dentro o microcódigo ROM 532 no caso de um número de micro-operações ser necessário para concluir a operação. A cache de rastreamento 530 se refere a um ponto de entrada de matriz de lógica programável (PLA) para determinar um ponteiro de microinstrução correto para ler as sequências de microcódigo para completar uma ou mais instruções de acordo com uma modalidade do microcódigo ROM 532. Após o microcódigo ROM 532 terminar o sequenciamento de micro-operações para uma instrução, a entrada 501 da máquina recomeça a busca de micro- operações a partir da cache de rastreamento 530.
[0084] A ferramenta de execução fora de ordem 503 é onde as instruções são preparadas para execução. Alógica de execução fora de ordem tem um número dememórias temporárias de amortecimento para regularizar e reordenar o fluxo de instruções para otimizar odesempenho conforme o mesmo passa pelo pipeline e é agendado para execução. A lógicaalocadora aloca as memórias temporárias de amortecimento e recursos de máquina que cada uop precisa para executar. A lógica de renomeação de registradores renomeia registradores lógicos para entradas em um arquivo de registrador. A alocadora também aloca uma entrada para cada uop em uma das duas filas de uop, uma para operações de memória e uma para operações não de memória, na frente dos agendadores de instrução: agendador de memória, agendador rápido 502, agendador de ponto flutuante lento/geral 504, e agendador de ponto flutuante simples 506. Os agendadores de uop 502, 504, 506 determinam quando um uop está pronto para executar com base na prontidão de suas fontes de operando de registrador de entrada dependentes e na disponibilidade dos recursos de execução que os uops usam para completar sua operação. O agendador rápido 502 de uma modalidade pode agendar em cada metade do ciclo de sincronismo principal enquanto que os outros agendadores podem agendar uma vez por ciclo de sincronismo de processador principal. Os agendadores arbitram para que as portas de despacho agendem uops para execução.
[0085] Arquivos de registrador 508, 510 situam-seentre os agendadores 502, 504, 506, e as unidades de execução 512, 514, 516, 518, 520, 522, 524 no bloco de execução 511. Há um arquivo de registrador separado 208, 510 para operações de inteiro e de ponto flutuante, respectivamente. Cada arquivo de registrador 508, 510, de uma modalidade também inclui uma rede de desvio que pode desviar ou encaminhar apenas resultados completos que ainda não tiverem sido gravados no arquivo de registrador para novos uops dependentes. O arquivo de registrador de inteiro 508 e o arquivo de registrador de ponto flutuante 510 também são capazes de comunicar dados entre si. Para uma modalidade, o arquivo de registrador de inteiro 508 é dividido em dois arquivos de registrador separados, um arquivo de registrador para os bits de dados ordem baixa 32 e um segundo arquivo de registrador para os bits de dados de ordem alta 32. O arquivo de registrador de ponto flutuante 510 de uma modalidade tem entradas de 128 bits de comprimento devido às instruções de ponto flutuante tipicamente terem operandos de 64 a 128 bits de extensão.
[0086] O bloco de execução 511 contém as unidades de execução 512, 514, 516, 518, 520, 522, 524, em que as instruções são realmente executadas. Essa seção inclui os arquivos de registrador 508, 510, que armazenam os valores de operandos de dados inteiros e de ponto flutuante que as microinstruções usam para executar. O bloco de execução 511 pode incluir componente de rastreamento de instrução em tempo real para gerar pacotes de IT. O processador 500 de uma modalidade é compreendido em um número de unidades de execução: unidade de geração de endereço (AGU) 512, AGU 514, ALU rápida 516, ALU rápida 518, ALU lenta 520, ALU de ponto flutuante 522, unidade de movimentação de ponto flutuante 524. Para uma modalidade, os blocos de execução de ponto flutuante 522, 524, executam operações de ponto flutuante, MMX, SIMD, e SSE, ou outras. A ALU de ponto flutuante 522 de uma modalidade inclui um divisor de ponto flutuante de 64 bit por 64 bit para executar divisão, raiz quadrada, e micro-operações restantes. Para modalidades da invenção, as instruções que envolvem um valor de ponto flutuante podem ser manipuladas com o hardware de ponto flutuante.
[0087] Em uma modalidade, as operações de vão para as unidades de execução de ALU de alta velocidade 516, 518. As ALUs rápidas 516, 518, de uma modalidade podem executar operações rápidas com uma latência efetiva de metade um ciclo de sincronismo. Para uma modalidade, operações de inteiro mais complexas vão para a ALU lenta 520 uma vez que a ALU lenta 520 inclui hardware de execução de inteiro para tipo de operações de latência longa, tais como um multiplicador, alterações, lógica de sinalizador, e processamento de ramificação. As operações de carregamento/armazenamento de memória são executadas pelas AGUs 512, 514. Para uma modalidade, as ALUs de inteiro 516, 518, 520 são descritas no contexto de realizar operações de inteiros em operandos de dados de 64 bits. Em modalidades alternativas, as ALUs 516, 518, 520 podem ser implantadas para suportar uma variedade de bits de dados que incluem 16, 32, 128, 256, etc. De maneira similar, as unidades de ponto flutuante 522, 524 podem ser implantadas para suportar uma faixa de operandos que tem bits de várias extensões. Para uma modalidade, as unidades de ponto flutuante 522, 524 podem operar em operandos de dados empacotados em 128 bits de extensão em conjunto com instruções SIMD e multimídia.
[0088] Em uma modalidade, os agendadores de uops 502, 504, 506 despacham operações dependentes antes de a carga pai ter terminado a execução. Como os uops são agendados e executados especulativamente no processador 500, o processador 500 também inclui lógica para manipular faltas em memória. Se uma carga de dados faltar na cache de dados, pode haver operações dependentes em curso no pipeline que tenham deixado o agendador com dados temporariamente incorretos. Um mecanismo de repetição acompanha e reexecuta as instruções que usam dados incorretos. As operações dependentes devem ser repetidas e as independentes são autorizadas a completar. Os agendadores e mecanismo de repetição de uma modalidade de um processador também são projetados para pegar sequências de instruções para operações comparação cadeia de texto.
[0089] O termo “registradores” pode se referir às localizações de armazenamento de processador integradas na placa que são usadas como parte de instruções para identificar operandos. Em outras palavras, registradores podem ser aqueles que são utilizáveis do exterior do processador (de uma perspectiva do programador). Entretanto, os registradores de uma modalidade não devem ser limitados em significado a um tipo de circuito particular. Em vez disso, um registrador de uma modalidade é capaz de armazenar e fornecer dados, e realizar as funções descritas no presente documento. Os registradores descritos no presente documento podem ser implantados por circuitos dentro de um processador com o uso de qualquer número de técnicas diferentes, tais como registradores físicos dedicados, registradores físicos alocados dinamicamente com o uso de renomeação de registradores, combinações de registradores físicos dedicados e alocados dinamicamente, etc. Em uma modalidade, registradores inteiros armazenam dados de inteiros de trinta e dois bits.
[0090] Um arquivo de registrador de uma modalidade também contém oito registradores SIMD multimídia para dados empacotados. Para as discussões abaixo, entende-se que os registradores são registradores de dados projetados para manter dados empacotados, tais como registradores MMX de 64 bits de extensão (também referenciados como registradores "mm" em alguns casos) em microprocessadores habilitados com a tecnologia MMX™ da Intel Corporation de Santa Clara, Califórnia. Esses registradores MMX, disponíveis tanto na forma inteira como ponto flutuante, podem operar com elementos de dados empacotados que acompanham instruções SIMD e SSE. De maneira similar, registradores XMM de 128 bits de extensão relacionados à tecnologia SSE2, SSE3, SSE4, ou além (referenciados genericamente como “SSEx”) também podem ser usados para manter esses operandos de dados empacotados. Em uma modalidade, no armazenamento de dados empacotados e dados inteiros, os registradores não diferenciam entre os dois tipos de dados. Em uma modalidade, inteiro e ponto flutuante são contidos no mesmo arquivo de registrador ou diferentes arquivos de registrador. Além disso, em uma modalidade, dados de ponto flutuante e inteiros podem ser armazenados em registradores diferentes ou nos mesmos registradores.
[0091] A Figura 6A ilustra uma arquitetura exemplificativa alternativa de acordo com a qual as modalidades podem operar. Em uma modalidade, o circuito integrado 601 inclui lógica de rastreamento de instruções 603 para rastrear instruções de um aplicativo, modo, ou região de código rastreados conforme as instruções são executadas pelo circuito integrado 601; uma unidade de retirada 606 para acompanhar o modo de execução de acompanhamento e execução de memória de transação em fluxo de rastreamento de informações em tempo real. A unidade de retirada pode incluir um componente de geração de modo de execução 605 para gerar uma pluralidade de pacotes de modo de execução que descrevem a mudança no modo de execução para uma instrução no rastreamento. A unidade de retirada 606 também inclui um componente de contador de ponto de sincronismo periódico 607 para gerar uma pluralidade de pacotes que descrevem um começo das instruções de rastreamento. A unidade de retirada 606 também inclui um componente de configuração 609, o qual permite que o software configure a frequência desses pontos de sincronismo periódicos. A unidade de retirada 606 também pode incluir um componente de geração de memória de transação (TMXGC) 111 para gerar uma pluralidade de pacotes de TMX que descrevem as mudanças na situação de instruções de TMX do rastreamento. Em uma modalidade, a unidade de retirada 606 implanta a lógica de rastreamento de instruções 603.
[0092] Em uma modalidade, a unidade de retirada 606 inclui lógica de ITS para implantar o módulo de rastreamento de instruções 603. Em uma modalidade a lógica de IT que implanta o componente de rastreamento de instruções 603 inclui um componente de geração de modo de execução 605, um componente de contador de ponto de sincronismo periódico 607, um componente de configuração 609 e um componente de geração de memória de transação 611. Em uma modalidade, o componente de geração de modo de execução 605 emite pacotes, tais como os pacotes de IT 602 retratados no barramento de dados 604. Em uma modalidade, componente de geração de memória de transação também saídas pacotes tal como os pacotes de IT 602 retratados no barramento de dados 604. Em uma modalidade, a lógica que implanta o componente de rastreamento de instruções 603 pode ser implantada em hardware. Em uma modalidade, a lógica que implanta o componente de rastreamento de instruções 603 pode ser implantada em microcódigo. Em uma modalidade, a lógica que implanta o componente de rastreamento de instruções 603 pode ser implantada em uma combinação de hardware e microcódigo.
[0093] Em uma modalidade, o circuito integrado é uma Unidade de Processamento Central (CPU). Em uma modalidade, a unidade de processamento central é utilizada para um dentre um dispositivo de computação do tipo tablet ou um telefone inteligente.
[0094] De acordo com uma modalidade, esse circuito integrado 601, portanto inicia o rastreamento de instruções (por exemplo, por meio do módulo de rastreamento de instruções 603) para instruções de um aplicativo, modo, ou região de código rastreados, conforme as instruções são executada pelo circuito integrado 601; gera uma pluralidade de pacotes de modo de execução (EM) que descrevem a mudança no modo de execução durante o rastreamento de instruções no ponto de mudança (por exemplo, por meio de componente de geração de modo de execução 605 como controlado pelo componente de rastreamento de instruções 603); a pluralidade de pacotes de EM inclui padrão de dois bits em um registro de pacotes, seguido pelo pacote de ponteiro de instrução de modo de execução (EMIP) gerado para indicar a primeira instrução a ser executada no modo de execução mudado; a pluralidade de pacotes gerada para indicar o estado do circuito integrado 601 em um ponto de sincronismo periódico controlado pelo Contador de ponteiro de Sincronização Periódica 607 que inclui uma pluralidade de pacotes de modo de execução (EM) que descrevem o estado dos modos e o estado do ponteiro de instrução no tempo em que os pacotes de situação foram gerados. Em uma modalidade, o circuito integrado 601 gera e emite o padrão de dois bits, o qual é utilizado para gerar o pacote de EM como o ponto de mudança de valor de modo de execução para decodificar pacote. Em uma modalidade, o circuito integrado 601 gera uma pluralidade de pacotes de memória de transação (TMX) que descreve o começo de uma operação de TMX e mudança na situação da operação de TMX durante o rastreamento de instruções no ponto de mudança (por exemplo, por meio de componente de geração de memória de transação 611 como controlado pelo componente de rastreamento de instruções 603); a pluralidade de pacotes de TMX inclui um padrão de modo de dois bits em um registro de pacotes, seguido por um ou tanto o pacote de ponteiro de instrução de memória de transação fonte (STMXIP) como o pacote de ponteiro de instrução de memória de transação alvo (TTMXIP); a pluralidade de pacotes gerada para indicar o estado do circuito integrado 601 em um ponto de sincronismo periódico controlado pelo Contador de ponteiro de Sincronização Periódica 607 que inclui uma pluralidade de pacotes de modo de execução (EM) e pelo ponteiro de instrução de modo de execução (EMIP) que descrevem o estado dos modos e o estado do ponteiro de instrução respectivamente no tempo em que os pacotes de situação foram gerados.
[0095] Em uma modalidade, o pacote de STMXIP fornece o IP da instrução associada em um começo da operação de TMX. Em outra modalidade, o pacote de STMXIP fornece o IP da instrução associada na mudança em situação da operação de TMX. Em uma modalidade, o pacote de TTMXIP fornece o IP da próxima instrução a ser executada após a operação de TMX quando a mudança na situação é interrupção da operação de TMX. Em uma modalidade, o circuito integrado 601 gera e emite o padrão de modo de dois bits, o qual é utilizado para gerar o pacote de TMX como o ponto de começo da operação de TMX e o ponto de mudança na situação da operação de TMX para execução de pacote. A Figura 6B mostra uma representação diagramática de um sistema 699 de acordo com o qual as modalidades podem operar, ser instaladas, integradas, ou configuradas.
[0096] Em uma modalidade, o sistema 699 inclui uma memória 695 e um processador ou processadores 696. Por exemplo, a memória 695 pode armazenar instruções a serem executadas e o(s) processador(es) 696 pode(m) executar essas instruções. O sistema 699 inclui comunicação barramento(s) 665 para transferir transações, instruções, solicitações, e dados dentro do sistema 699 entre uma pluralidade de dispositivo(s) periférico(s) 670 que fazem interface comunicativamente com um ou mais barramentos 665 e/ou interface(s) 675 de comunicação. A unidade de exibição 680 é adicionalmente retratada dentro do sistema 699.
[0097] O circuito integrado 601 é distinto dentro sistema 699, e pode ser instalado e configurado em um sistema compatível 699, ou fabricado e fornecido separadamente de modo a operar em conjunto com componentes apropriados do sistema 699.
[0098] De acordo com uma modalidade, o sistema 699 inclui pelo menos uma unidade de exibição 680 e um circuito integrado 601. O circuito integrado 601 pode operar como, por exemplo, um processador ou como outro componente computacional do sistema 699. Nessa modalidade, o circuito integrado 601 do sistema 699 inclui pelo menos: um barramento de dados 604, e um sinal de rastreamento de instruções 603 que inclui um componente de geração de pacote de estado (não mostrado) e pacote de evento componente de geração (não mostrado) para gerar uma pluralidade de pacotes de IT que descreve as instruções rastreadas. Em uma modalidade, os pacotes de IT incluem informações que descrevem uma situação do processador e um ponto de sincronização nas instruções rastreadas.
[0099] De acordo com uma modalidade, esse sistema 699 corporifica uma computador do tipo tablet ou um telefone inteligente, no qual a unidade de exibição 680 é uma interface de tela sensível ao toque do computador do tipo tablet ou do telefone inteligente; e adicionalmente no qual o circuito integrado 601 é incorporado no computador do tipo tablet ou telefone inteligente.
[00100] Agora com referência à Figura 7, é mostrado um diagrama de blocos de um sistema 700 de acordo com uma modalidade da invenção. O sistema 700 pode incluir um ou mais processadores 710, 715, os quais são acoplados a um concentrador de controladores de memória gráfica (GMCH) 720. A natureza opcional de processadores adicionais 715 é denotada na Figura 7 com linhas quebradas. Em uma modalidade, os processadores 710, 715 acompanham o modo de execução e a execução de memória de transação em um sistema de rastreamento de instrução.
[00101] Cada processador 710, 715 pode ser alguma versão do circuito, circuito integrado, processador, e/ou circuito integrado de silício como descrito acima. Entretanto, deve ser observado que é improvável que unidades de lógica gráfica integrada e controle memória integrado existam nos processadores 710, 715. A Figura 7 ilustra que o GMCH 720 pode ser acoplado a uma memória 740 que pode ser, por exemplo, uma memória de acesso randômico dinâmica (DRAM). A DRAM pode, para pelo menos uma modalidade, ser associado a uma cache não volátil.
[00102] O GMCH 720 pode ser um chipset, ou uma porção de um chipset. O GMCH 720 pode se comunicar com o(s) processador(es) 710, 715 e controlar a interação entre o(s) processador(es) 710, 715 e memória 740. O GMCH 720 também pode atuar como uma interface de barramento acelerada entre o(s) processador(es) 710, 715 e outros elementos do sistema 700. Para pelo menos uma modalidade, o GMCH 720 se comunica com o(s) processador(es) 710, 715 por meio de um barramentomultiponto, tal como um barramento frontal (FSB) 795.
[00103] Além disso, GMCH 720 é acoplado a um visor 745 (tal como um visor de tela plana ou tela sensível ao toque). O GMCH 720 pode incluir um acelerador gráfico integrado. O GMCH 720 é acoplado adicionalmente a um controlador concentrador (ICH) de entrada/saída (I/O)750, o qual pode ser usado para acoplar vários dispositivos periféricos ao sistema 700. Na modalidade da Figura 7 é mostrado, por exemplo, um dispositivo gráfico externo 760, o qual pode ser um dispositivo gráfico distinto acoplado ao ICH 750, juntamente com outro dispositivo periférico 770.
[00104] Alternativamente, processadores adicionais ou diferentes também podem estar presentes no sistema 700. Por exemplo, processador(es) adicional(is) 715 pode(m) incluir processador(es) adicional(is) que são o mesmo que o processador 710, processador(es) adicional(is) que são heterogêneos ou assimétricos ao processador 710, aceleradores (tais como, por exemplo, aceleradores gráficos ou unidades de processamento de sinal digital (DSP)), conjunto de portas programáveis no campo, ou qualquer outro processador. Pode haver uma variedade de diferenças entre o(s) processador(es) 710, 715 em termos de um espectro de métricas de mérito que incluem arquitetônicas, térmicas microarquitetônicas,características de consumo de energia, e similares. Essas diferenças podem efetivamente manifestar a si próprias como assimetria e heterogeneidade entre os processadores 710, 715. Para pelo menos uma modalidade, os vários processadores 710, 715 podem residir no mesmo pacote de circuitos integrados.
[00105] As modalidades podem ser implantadas em muitos tipos diferentes de sistema. A Figura 8 é um diagrama de blocos de um SoC 800 de acordo com uma modalidade da presente revelação. As caixas de linhas tracejadas são recursos opcionais em SoCs mais avançados. na Figura 8, uma unidade(s) de interconexão 812 é(são) acoplada(s) a: um processador de aplicativo 820 o qual inclui um conjunto de um ou mais núcleos 802A a N e unidade(s) de cache compartilhada(s) 806; uma unidade de agente de sistema 810; uma unidade(s) de controlador de barramento 816; uma unidade(s) de controlador de memória integrada 814; um conjunto ou um ou mais processadores de meios 818 os quais podem incluir lógica gráfica integrada 808, um processador de imagem 824 para fornecer funcionalidade de câmera fotográfica e/ou de vídeo, um processador de áudio 826 para fornecer aceleração de áudio por hardware, e um processador de vídeo 828 para fornecer aceleração de codificação/decodificação de vídeo; uma unidade de memória de acesso randômico estática (SRAM) 830; uma unidade de acesso de memória direto (DMA) 832; e uma unidade de exibição 840 para acoplamento a um ou mais visores externos. Em uma modalidade, um módulo de memória pode ser incluído em a(s) unidade(s) de controlador de memória integrada 814. Em outra modalidade, o módulo de memória pode ser incluído em um ou mais outros componentes do SoC 800 que podem ser usados para acessar e/ou controlar uma memória. O processador de aplicativo 820 pode incluir uma lógica de modo de execução e de execução de memória de transação como descrito nas modalidades no presente documento.
[00106] A hierarquia de memória inclui um ou mais níveis de cache dentro dos núcleos, um conjunto ou uma ou mais unidades de cache compartilhadas 806, e memória externa (não mostrada) acoplada ao conjunto de unidades de controlador de memória integrada 814. O conjunto de unidades de cache compartilhadas 806 pode incluir uma ou mais caches de nível médio, tal como cache nível 2 (L2), nível 3 (L3), nível 4 (L4), ou de outros níveis, uma cache de último nível (LLC), e/ou combinações das mesmas.
[00107] Em algumas modalidades, um ou mais dos núcleos 802A a N são capazes de multitransacionar.
[00108] O agente de sistema 810 inclui aqueles componentes que coordenam e operam os núcleos 802A a N. A unidade de agente de sistema 810 pode incluir, por exemplo, uma unidade de controle de energia (PCU) e uma unidade de exibição. A PCU pode ser ou incluir lógica e componentes necessários para regular o estado de energia dos núcleos 802A a N e a lógica gráfica integrada 808. A unidade de exibição é para acionar um ou mais visores conectados externamente.
[00109] Os núcleos 802A a N podem ser homogêneos ou heterogêneos em termos de arquitetura e/ou conjunto de instruções. Por exemplo, alguns dos núcleos 802A a N podem ser ordenados enquanto outros são fora de ordem. Como outro exemplo, dois ou mais dos núcleos 802A a N podem ser capazes de executar o mesmo conjunto de instruções, enquanto que outros podem ser capazes de executar apenas um subconjunto daquele conjunto de instruções ou um conjunto de instruções diferente.
[00110] O processador de aplicativo 820 pode ser um processador de propósito geral, tal como um processador Core™ i3, i5, i7, 2 Duo e Quad, Xeon™, Itanium™, XScale™ ou StrongARM™, os quais são disponíveis pela Intel™ Corporation, de Santa Clara, Califórnia. Alternativamente, o processador de aplicativo 820 pode ser de outra companhia, tal como ARM Holdings™, Ltd, MIPS™, etc. O processador de aplicativo 820 pode ser um processador de propósito especial, tal como, por exemplo, um processador de rede ou comunicação, ferramenta de compressão, processador gráfico, coprocessador, processador embutido, ou similares. O processador de aplicativo 820 pode ser implantado em um ou mais chips. O processador de aplicativo 820 pode ser uma parte de e/ou pode ser implantado em um ou mais substratos com o uso de qualquer de um número de tecnologias de processo, tais como, por exemplo, BiCMOS, CMOS, ou NMOS.
[00111] A Figura 9 é um diagrama de blocos de uma modalidade de um projeto de sistema em chip (SOC) de acordo com a presente revelação. Como um exemplo ilustrativo específico, o SoC 900 é incluído no equipamento de usuário (UE). Em uma modalidade, o UE se refere a qualquer dispositivo a ser usado por um usuário final para se comunicar, tal como um telefone portátil, telefone inteligente, computador do tipo tablet, notebook ultrafino, notebook com adaptador de banda larga, ou qualquer outro dispositivo de comunicação similar. Frequentemente um UE se conecta a uma estação ou nó base, o qual potencialmente corresponde em natureza a uma estação móvel (MS) em uma rede GSM.
[00112] Aqui, o SOC 1300 inclui 2 núcleos, 906 e 907. Os núcleos 906 e 907 podem se conformar a uma Arquitetura de Conjunto de instruções, tal como um processador baseado em Arquitetura Core™ da Intel®, um processador da Advanced Micro Devices, Inc. (AMD), um processador baseado em MIPS, um projeto de processador baseado em ARM, ou um cliente dos mesmos, bem como seus licenciados ou adotantes. Os núcleos 906 e 907 são acoplados ao controle de cache 908 que é associado à unidade de interface de barramento 909 e cache de L2 910 para se comunicar com outras partes do sistema 900. A interconexão 910 inclui uma interconexão em chip, tal como um IOSF, AMBA, ou outra interconexão discutida acima, a qual potencialmente implanta um ou mais aspectos da revelação descrita. Em uma modalidade, um modo de execução e execução de memória de transação lógica pode ser incluído nos núcleos 906, 907.
[00113] A interconexão 910 fornece canais de comunicação para os outros componentes, tal como um Módulo de Identidade de Assinante (SIM) 930 para interfacear com um cartão SIM, uma ROM de carregamento 935 para manter código de carregamento para execução pelos núcleos 906 e 907 para inicializar e carregar o SoC 900, um controlador de SDRAM 940 para interfacear com memória externa (por exemplo DRAM 960), um controlador flash 945 para interfacear com memória não volátil (por exemplo Flash 965), um controle de periférico 950 (por exemplo Interface de Periférico Serial) para interfacear com periféricos, codecs de vídeo 920 e interface de Vídeo 925 para exibir e receber entrada (por exemplo entrada sensível ao toque), GPU 915 para realizar computações relacionadas a gráfico, etc. Qualquer dessas interfaces pode incorporar aspectos da revelação descrita no presente documento. Adicionalmente, o sistema 900 ilustra periféricos para comunicação, tais como um módulo de Bluetooth 970, modem 3G 975, GPS 980, e Wi-Fi 985.
[00114] Agora com referência à Figura 10, é mostrado um diagrama de blocos de um sistema 1000 de acordo com uma modalidade da invenção. Como mostrado na Figura 10, o sistema multiprocessador 1000 é um sistema de interponto de conexão a ponto, e inclui um primeiro processador 1070 e um segundo processador 1080 acoplados por meio de uma interponto de conexão a ponto 1050. Cada um dos processadores 1070 e 1080 pode ser alguma versão dos processadores dos sistemas de computação conforme descritos no presente documento. Em uma modalidade, os processadores 1070, 1080 acompanham o modo de execução e a execução de memória de transação em um sistema de rastreamento de instrução.
[00115] Embora mostrado com dois processadores 1070, 1080, deve ser compreendido que o escopo da revelação não é tão limitado. Em outras modalidades, um ou mais processadores adicionais podem estar presentes em um dado processador.
[00116] Os processadores 1070 e 1080 são mostrados incluindo as unidades de controlador de memória integrada 1072 e 1082, respectivamente. O processador 1070 também inclui como parte de suas unidades de controlador de barramento as interfaces ponto a ponto (P-P) 1076 e 1078; de maneira similar, o segundo processador 1080 inclui interfaces P-P 1086 e 1088. Os processadores 1070, 1080 podem trocar informações por meio de uma interface ponto a ponto (P-P) 1050 com o uso dos circuitos de interface P-P 1078, 1088. Como mostrado na Figura 10, os IMCs 1072 e 1082 acoplam os processadores às respectivas memórias, a saber, uma memória 1032 e uma memória 1034, as quais podem ser porções de memória principal ligadas localmente aos respectivos processadores.
[00117] Os processadores 1070 e 1080 podem, cada um, trocar informações com um chipset 1090 por meio de interfaces P- individuais P 1052, 1054 com o uso de circuitos dos interface ponto a ponto 1076, 1094, 1086, 1098. O chipset 1090 também pode trocar informações com um circuito gráfico de alto desempenho 1038 por meio de uma interface gráfica de alto desempenho 1039.
[00118] Uma cache compartilhada (não mostrada) pode ser incluída em qualquer processador ou fora de ambos os processadores, ainda conectada com os processadores por meio de interconexão P-P, de modo que as informações de cache local de qualquer ou ambos os processadores possam ser armazenadas na cache compartilhada se um processador for colocada em um modo de baixa energia.
[00119] O chipset 1090 pode ser acoplado a um primeiro barramento 1016 por meio de uma interface 1096. Em uma modalidade, o primeiro barramento 1016 pode ser um barramento de Interconexão de Componente Periférico (PCI), ou um barramento tal como um barramento PCI Express ou outro barramento de interconexão de I/O de terceira geração, embora o escopo da revelação não seja tão limitado.
[00120] Como mostrado na Figura 10, vários dispositivos de I/O 1014 podem ser acoplados ao primeiro barramento 1016, juntamente com um ponte de barramento 1018, a qual acopla o primeiro barramento 1016 a um segundo barramento 1020. Em uma modalidade, o segundo barramento 1020 pode ser um barramento de pinagem reduzida (LPC). Vários dispositivos podem ser acoplados ao segundo barramento 1020 incluindo, por exemplo, um teclado e/ou mouse 1022, dispositivos de comunicação 1027 e uma unidade de armazenamento 1028 tal como um controlador de disco ou outro dispositivo de armazenamento em massa o qual pode incluir instruções/código e dados 1030, em uma modalidade. Adicionalmente, um I/O de áudio 1024 pode ser acoplado a segundo barramento 1020. Note-se que outras arquiteturas são possíveis. Por exemplo, em vez de arquitetura a ponto a ponto da Figura 10, um sistema pode implantar um barramento multiponto ou outro arquitetura SEMELHANTE.
[00121] Agora com referência à Figura 11, é mostrado um diagrama de blocos de um sistema 1100 de acordo com uma modalidade da invenção. A Figura 11 ilustra OS processadores 1170, 1180. Em uma modalidade, OS processadores 1170, 1180 acompanham o modo de execução e a execução de memória de transação em um sistema de rastreamento de instrução. Além disso, os processadores 1170, 1180 podem incluir a memória integrada e a lógica de controle de I/O (“CL”) 1172 e 1182, respectivamente e se intercomunicar por meio de interponto de conexão a ponto 1150 entre as interfaces ponto a ponto (P-P) 1178 e 1188 respectivamente. Cada um dos processadores 1170, 1180 se comunica com o chipset 1190 por meio das interconexões ponto a ponto 1152 e 1154 através das respectivas interfaces P-P 1176 a 1194 e 1186 a 1198 como mostrado. Para pelo menos uma modalidade, a CL 1172, 1182 pode incluir unidades controladoras dememória integrada. As CLs 1172, 1182 podem incluirlógica de controle de I/O. Como retratado, as memórias 1132, 1134 acopladas às CLs 1172, 1182 e aosdispositivos de I/O 1114 também são acopladas à lógica de controle 1172, 1182. Os dispositivos de I/O legados 1115 são acoplados ao chipset 1190 por meio da interface 1196.
[00122] A Figura 12 ilustra um diagrama de blocos 1200 de uma modalidade de dispositivo de computação do tipo tablet, um telefone inteligente, ou outro dispositivo móvel no qual os conectores de interface de tela sensível ao toque podem ser usados. O processador 1210 pode acompanhar o modo de execução e a execução de memória de transação em um sistema de rastreamento de instrução. Adicionalmente, o processador 1210 realiza as operações de processamento primárias. O subsistema de áudio 1220 representa componentes de hardware (por exemplo, hardware de áudio e circuitos de áudio) e software (por exemplo, controladores, codecs) associados a fornecer funções de áudio para o dispositivo computacional. Em uma modalidade, um usuário interage com o dispositivo de computação do tipo tablet ou telefone inteligente fornecendo comandos de áudio que são recebidos e processados pelo processador 1210.
[00123] O subsistema de exibição 1230 representa os componentes de hardware (por exemplo, dispositivos de exibição) e de software (por exemplo, controladores) que fornecem uma exibição visual e/ou táctil para um usuário para interagir com o dispositivo de computação do tipo tablet ou telefone inteligente. O subsistema de exibição 1230 inclui a interface de exibição1232, a qual inclui a tela ou dispositivo de hardware particular usado para fornecer uma exibição para um usuário. Em uma modalidade, o subsistema de exibição 1230 inclui um dispositivo de tela sensível ao toque que fornece tanto saída como entrada para um usuário.
[00124] O controlador de I/O 1240 representa dispositivos de hardware e componentes de software relacionados à interação com um usuário. O controlador de I/O 1240 pode operar para gerenciar hardware que é parte do subsistema de áudio 1220 e/ou do subsistema de exibição 1230. Adicionalmente, o controlador de I/O 1240 ilustra um ponto de conexão para dispositivos adicionais que conectam ao dispositivo de computação do tipo tablet ou telefone inteligente através dos quais um usuário pode interagir. Em uma modalidade, o controlador de I/O 1240 gerencia dispositivos tais como acelerômetros, câmeras, sensores de luz ou outros sensores ambientais, ou outro hardware que possa ser incluído no dispositivo de computação do tipo tablet ou telefone inteligente. A entrada pode ser parte de interação direta de usuário, bem como fornecer entrada ambiental para o dispositivo de computação do tipo tablet ou telefone inteligente.
[00125] Em uma modalidade, o dispositivo de computação do tipo tablet ou telefone inteligente inclui gerenciamento de energia 1250 que gerencia a utilização de energia de bateria, carga da bateria, e recursos relacionados à operação de economia de energia. O subsistema de memória 1260 inclui dispositivos de memória para armazenar informações no dispositivo de computação do tipo tablet ou telefone inteligente. A conectividade 1270 inclui dispositivos de hardware (por exemplo, conectores e hardware de comunicação sem fio e/ou por fio) e componentes de software (por exemplo, controladores, pilhas de protocolo) para o que dispositivo de computação do tipo tablet ou telefone inteligente se comunique com dispositivos externos. A conectividade celular 1272 pode incluir, por exemplo, portadoras sem fio tais como GSM (sistema global para comunicações móveis), CDMA (acesso múltiplo por divisão de código), TDM (multiplexação por divisão de tempo), ou outros padrões de serviço celular. A conectividade sem fio 1274 pode incluir, por exemplo, atividade que não é celular, tal como redes de área pessoal (por exemplo, Bluetooth), redes de área local (por exemplo, WiFi), e/ou redes de área ampla (por exemplo, WiMax), ou outra comunicação sem fio.
[00126] As conexões de periférico 1280 incluem interfaces e conectores de hardware, bem como componentes de software (por exemplo, controladores, pilhas de protocolo) para fazer conexões de periféricos como um dispositivo periférico ("para" 1282) a outros dispositivos computacionais, bem como ter dispositivos periférico ("de" 1284) conectados ao dispositivo decomputação do tipo tablet ou telefone inteligente, incluindo, por exemplo, um conector "de acoplamento" para conectar a outros dispositivos computacionais. As conexões de periférico 1280 incluem conectores comuns ou baseados em padrões, tais como um conector Barramento Serial Universal (USB), DisplayPort incluindo MiniDisplayPort (MDP), Interface Multimídia de Alta Definição(HDMI), Firewire, etc.
[00127] A Figura 13 ilustra uma representação diagramática de uma máquina na forma de exemplo de um sistema computacional 1300 dentro do qual um conjunto de instruções, para fazer com que a máquina realize qualquer uma ou mais das metodologias discutidas no presente documento, pode ser executado. Em modalidades alternativas, a máquina pode ser conectada (por exemplo, ligada em rede) a outras máquinas em uma LAN, uma intranet, uma extranet, ou a Internet. A máquina pode operar na capacidade de um servidor ou um dispositivo cliente em um ambiente de rede cliente-servidor, ou como uma máquina par em um ambiente de rede par a par (ou distribuído). A máquina pode ser um computador pessoal (PC), um PC do tipo tablet, um decodificador (STB), um Assistente Digital Pessoal (PDA), um telefone celular, um aparelho de web, um servidor, um roteador, switch ou ponte de rede, ou qualquer máquina capaz de executar um conjunto de instruções (sequencial ou de outra forma) que especifique ações a serem tomadas por aquela máquina. Adicionalmente, embora apenas uma única máquina seja ilustrada, o termo “máquina” também poderia ser usado para incluir qualquer coleção de máquinas que individual ou conjuntamente executem um conjunto (ou múltiplo conjuntos) de instruções para realizar qualquer uma ou mais das metodologias discutidas no presente documento.
[00128] O sistema computacional 1300 inclui um dispositivo de processamento 1302, uma memória principal 1304 (por exemplo, memória somente de leitura (ROM), memória flash, memória de acesso randômico dinâmica (DRAM) tal como DRAM síncrona (SDRAM) ou DRAM (RDRAM), etc.), uma memória estática 1306 (por exemplo, memória flash, memória de acesso randômico estática (SRAM), etc.), e um dispositivo de armazenamento de dados 1318, os quais se comunicam entre si por meio de um barramento 1330.
[00129] O dispositivo de processamento 1302 representa um ou mais dispositivos de processamento de propósito geral tais como um microprocessador, unidade de processamento central, ou similares. Mais particularmente, o dispositivo de processamento pode ser um microprocessador de computação de conjunto de instruções complexas (CISC), microprocessador de computador de conjunto de instruções reduzido (RISC), microprocessador de palavra de instrução muito longa (VLIW), ou processador que implanta outros conjuntos de instruções, ou processadores que implantam uma combinação de conjuntos de instruções. O dispositivo de processamento 1302 também pode ser um ou mais dispositivos de processamento de propósito especial tais como um circuito integrado de aplicação específica (ASIC), um conjunto de portas programável no campo (FPGA), um processador de sinal digital (DSP), processador de rede, ou similares. Em uma modalidade, o dispositivo de processamento 1302 pode incluir um ou mais núcleos de processamento. O dispositivo de processamento 1302 é configurado para executar a lógica de processamento 1326 para realizar as operações discutidas no presente documento. Em uma modalidade, o dispositivo de processamento 1302 é o mesmo que o dispositivo de processamento 100 descrito com respeito à Figura 1A que implanta o módulo de rastreamento de instrução 103 e a unidade de agendador e de execução 102. Alternativamente, o sistema computacional 1300 pode incluir outros componentes como descrito no presente documento.
[00130] O sistema computacional 1300 pode incluir adicionalmente um dispositivo de interface de rede 1308 acoplado comunicativamente a uma rede 1320. O sistema computacional 1300 também pode incluir uma unidade de exibição de vídeo 1310 (por exemplo, um visor de cristal líquido (LCD) ou um tubo de raios catódicos (CRT)), um dispositivo de entrada alfanumérico 1312 (por exemplo, um teclado), um dispositivo de controle de cursor 1314 (por exemplo, um mouse), um dispositivo de geração de sinal 1316 (por exemplo, um alto-falante), ou outros dispositivos periféricos. Além disso, o sistema computacional 1300 pode incluir uma unidade de processamento gráfico 1322, uma unidade de processamento de vídeo 1328 e uma unidade de processamento de áudio 1332. Em outra modalidade, o sistema computacional 1300 pode incluir um chipset (não ilustrado), o qual se refere a um grupo de circuitos integrados, ou chips, que são projetados para trabalhar com o dispositivo de processamento 1302 e controlar comunicações entre o dispositivo de processamento 1302 e dispositivos externos. Por exemplo, o chipset pode ser um conjunto de chips em uma placa mãe que ligam o dispositivo de processamento 1302 a dispositivos de velocidade muito alta, tal como a memória principal 1304 e controladores gráficos, bem como ligar o dispositivo de processamento 1302 aos barramentos periféricos de periféricos de velocidade mais baixa, tais como barramentos USB, PCI ou ISA.
[00131] O dispositivo de armazenamento de dados 1318 pode incluir um meio de armazenamento legível por computador 1324 no qual é armazenado o software 1326 que incorpora qualquer uma ou mais das metodologias de funções descritas no presente documento. O software 1326 também pode residir, completa ou pelo menos parcialmente, dentro da memória principal 1304 como as instruções 1326 e/ou dentro do dispositivo de processamento 1302 como a lógica de processamento 1326 durante a execução da mesma pelo sistema computacional 1300; em que a memória principal 1304 e o dispositivo de processamento 1302 também constituem meio de armazenamento legível por computador.
[00132] O meio de armazenamento legível por computador 1324 também pode ser usado para armazenar instruções 1326 que utilizam o componente de rastreamento de instrução em tempo real 103 e a unidade de agendador e de execução 102, tal como descrito com respeito à Figura 1, e/ou uma biblioteca de software que contém os métodos que chamam os aplicativos acima. Embora o meio de armazenamento legível por computador 1324 seja mostrado em uma modalidade exemplificativa como sendo um meio único, o termo “meio de armazenamento legível por computador” deve ser tomado como incluindo um meio único ou múltiplos meios (por exemplo, um banco de dados centralizado ou distribuído, e/ou caches e servidores associados) que armazenam o um ou mais conjuntos de instruções. O termo “meio de armazenamento legível por computador” também pode ser tomado como incluindo qualquer meio que seja capaz de armazenar, codificar ou transportar um conjunto de instruções para execução pela máquina e que fazem com que a máquina realize qualquer uma ou mais de s metodologias das modalidades. O termo “meio de armazenamento legível por computador” consequentemente pode ser tomado como incluindo, porém sem limitações, memórias de estado sólido, e meios ópticos e magnéticos. Embora a invenção tenha sido descrita com respeito a um número limitado de modalidades, as pessoas versadas na técnica avaliarão vários modificações e variações às mesmas. É entendido que as reivindicações anexas cobrem todas essas modificações e variações como estando dentro do verdadeiro espírito e escopo desse invenção.
[00133] Os exemplos a seguir pertencem a modalidades adicionais. O Exemplo 1 é um modo de acompanhamento de dispositivo de processamento de um dispositivo de processamento em um sistema de rastreamento de instruções que compreende um módulo de rastreamento de instruções (IT) para receber uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento, determinar que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT e gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT.
[00134] No Exemplo 2, a matéria do Exemplo 1 pode incluir opcionalmente o módulo de IT para gerar um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do processador.
[00135] No Exemplo 3, a matéria de qualquer dos Exemplos 1 e 2 pode incluir opcionalmente que o módulo de IT para gerar os pacotes de memória de transação (TMX) compreende um padrão de modo de n bits no registro de pacotes, em que o n é pelo menos dois e em que o modo de n bits indica a situação de transação da operação de TMX. No Exemplo 4, a matéria de qualquer dos Exemplos 1 a 3 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreende uma interrupção da operação de TMX. No Exemplo 5, a matéria de qualquer dos Exemplos 1 a 4 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreende a efetivação da operação de TMX.
[00136] No Exemplo 6, a matéria de qualquer dos Exemplos 1 a 5 pode incluir opcionalmente o módulo de IT para gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00137] No Exemplo 7, a matéria de qualquer dos Exemplos 1 a 6 pode incluir opcionalmente o módulo de IT para gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de próxima instrução a ser executada na situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00138] No Exemplo 8, a matéria de qualquer dos Exemplos 1 a 7 pode incluir opcionalmente o módulo de IT para gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada.
[00139] No Exemplo 9, a matéria de qualquer dos Exemplos 1 a 8 pode incluir opcionalmente o módulo de IT gerar um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após a interrupção da operação de TMX.
[00140] O Exemplo 10 é um modo de acompanhamento de sistema de um dispositivo de processamento em um sistema de rastreamento de instruções. No Exemplo 10, o sistema inclui uma memória e um dispositivo de processamento acoplado comunicativamente à memória, em que o dispositivo de processamento compreende uma unidade de agendador e de execução e uma unidade de retirada acoplada comunicativamente à unidade de agendador e de execução. Adicionalmente para o exemplo 10, a unidade de retirada compreende um módulo de rastreamento de instruções para gerar pacotes de memória de transação (TMX) que compreendem um padrão de modo de n bits no registro de pacotes, em que o n é pelo menos dois e em que o modo de n bits indica a situação de transação da operação de TMX.
[00141] No Exemplo 11, a matéria do Exemplo 10 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreenda uma interrupção da operação de TMX. No Exemplo 12, a matéria de qualquer dos Exemplos 10 e 11 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreenda uma efetivação da operação de TMX.
[00142] No Exemplo 13, a matéria de qualquer dos Exemplos 10 a 12 pode incluir opcionalmente que o módulo de IT gere um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00143] No Exemplo 14, a matéria de qualquer dos Exemplos 10 a 13 pode incluir opcionalmente que o módulo de IT gere um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança em situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de próxima instrução a ser executada na situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00144] No Exemplo 15, a matéria de qualquer dos Exemplos 10 a 14 pode incluir opcionalmente que o módulo de IT gere um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança em situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada. No Exemplo 16, a matéria de qualquer dos Exemplos 10 a 15 pode incluir opcionalmente que o módulo de IT gere um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após a interrupção da operação de TMX.
[00145] No Exemplo 17, a matéria de qualquer dos Exemplos 10 a 16 pode incluir opcionalmente que o módulo de IT receba uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento, que determina que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT e gere, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT.
[00146] No Exemplo 18, a matéria de qualquer dos Exemplos 10 a 17 pode incluir opcionalmente que o módulo de IT gere um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do processador.
[00147] O Exemplo 19 é um método para modo de acompanhamento de um dispositivo de processamento em um sistema de rastreamento de instruções que compreende receber, por um dispositivo de processamento, uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento, determinar, pelo dispositivo de processamento, que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT e gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT.
[00148] No Exemplo 20, a matéria do Exemplo 19 pode incluir, de maneira opcional, adicionalmente gerar um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do processador.
[00149] No Exemplo 21, a matéria de qualquer dos Exemplos 19 e 20 pode incluir opcionalmente gerar pacotes de memória de transação (TMX) que compreendem um padrão de modo de n bits no registro dos pacotes, em que o n é pelo menos dois e em que o modo de n bits indica a situação de transação da operação de TMX.
[00150] No Exemplo 22, a matéria de qualquer dos Exemplos 19 a 21 pode incluir opcionalmente que a situação de transação da operação de TMX associado a um bit do padrão de modo de n bits compreenda uma interrupção da operação de TMX. No Exemplo 23, a matéria de qualquer dos Exemplos 19 a 22 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreenda uma efetivação da operação de TMX.
[00151] No Exemplo 24, a matéria de qualquer dos Exemplos 19 a 23 pode incluir opcionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação da transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00152] No Exemplo 25, a matéria de qualquer dos Exemplos 19 a 24 pode incluir opcionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de próxima instrução a ser executada na situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00153] No Exemplo 26, a matéria de qualquer dos Exemplos 19 a 25 pode incluir opcionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada.
[00154] No Exemplo 27, a matéria de qualquer dos Exemplos 19 a 26 pode incluir opcionalmente gerar um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após a interrupção da operação de TMX.
[00155] O Exemplo 28 é meio não transitório legível por computador para modo de acompanhamento de um dispositivo de processamento em um sistema de rastreamento de instruções. No Exemplo 28, o meio não transitório legível por computador inclui dados que, quando acessados por um dispositivo de processamento, fazem com que o dispositivo de processamento realize operações que compreendem gerar pacotes de memória de transação (TMX) que compreendem um padrão de modo de n bits no registro de pacotes, em que o n é pelo menos dois e em que o modo de n bits indica a situação de transação da operação de TMX.
[00156] No Exemplo 29, a matéria do Exemplo 28 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreenda uma interrupção da operação de TMX. No Exemplo 30, a matéria dos Exemplos 28 e 29 pode incluir opcionalmente que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreenda uma efetivação da operação de TMX.
[00157] No Exemplo 31, a matéria de qualquer dos Exemplos 28 a 30 pode incluir de forma opcional que as operações compreendam adicionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00158] No Exemplo 32, a matéria de qualquer dos Exemplos 28 a 31 pode incluir de forma opcional que a operações compreendam adicionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança em situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de próxima instrução a ser executada na situação de transação prévia, em que a situação de transação prévia é anterior à situação de transação mudada.
[00159] No Exemplo 33, a matéria de qualquer dos Exemplos 28 a 32 pode incluir de forma opcionalmente que as operações compreendam adicionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança em situação de transação, o pacote de STMXIP identifica um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada.
[00160] No Exemplo 34, a matéria de qualquer dos Exemplos 28 a 33 pode incluir de forma opcional que as operações compreendam adicionalmente gerar um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após a interrupção da operação de TMX.
[00161] No Exemplo 35, a matéria de qualquer dos Exemplos 28 a 34 pode incluir de forma opcional que as operações compreendam adicionalmente receber uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento, determinar que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT e gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT.
[00162] No Exemplo 36, a matéria de qualquer dos Exemplos 28 a 35 pode incluir de forma opcional que as operações compreendam adicionalmente gerar um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do processador.
[00163] Exemplo 37 é um aparelho para modo de acompanhamento de um dispositivo de processamento em um sistema de rastreamento de instruções que compreende meio para receber uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento, determinar que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT e gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT.
[00164] No Exemplo 38, a matéria do Exemplo 37 pode incluir opcionalmente o aparelho configurado adicionalmente para realizar o método de qualquer um dos exemplos 20 a 27.
[00165] O Exemplo 39 é pelo menos um meio legível por máquina que compreende uma pluralidade de instruções que em resposta a serem executadas em um dispositivo computacional, fazem com que o dispositivo computacional execute um método de acordo com qualquer um dos Exemplos 19 a 27. O Exemplo 40 é um aparelho para modo de acompanhamento de um dispositivo de processamento em um sistema de rastreamento de instruções para realizar o método de qualquer um dos Exemplos 19 a 27. O Exemplo 41 é um aparelho para modo de acompanhamento de um dispositivo de processamento em um sistema de rastreamento de instruções que compreende meio para realizar o método de qualquer um dos Exemplos 19 a 27. As especificidades nos exemplos podem ser usadas em qualquer lugar em uma ou mais modalidades.
[00166] Várias modalidades podem ter diferentes combinações dos recursos estruturais descritos acima. Por exemplo, todos os recursos opcionais do SOC descrito acima também podem ser implantados com respeito a um processador descrito no presente documento e as especificidades nos exemplos podem ser usadas em qualquer lugar em uma ou mais modalidades.
[00167] Um projeto pode passar através de várias estágios, da criação a simulação a fabricação. Os dados que representam um projeto podem representar o projeto de várias maneiras. Primeiramente, como é útil em simulações, o hardware pode ser representado com o uso de uma linguagem de descrição de hardware ou outra linguagem de descrição funcional. Adicionalmente, um modelo de nível de circuito com lógica e/ou portas de transistor pode ser produzido em alguns estágios do processo do projeto. Além disso, a maior parte dos projetos, em algum estágio, alcança um nível de dados que representam o posicionamento físico de vários dispositivos no modelo de hardware. No caso em que técnicas convencionais de fabricação de semicondutor são usadas, os dados que representam o modelo de hardware podem ser os dados que especificam a presença ou ausência de vários recursos em diferentes camadas de máscara para máscaras usadas para produzir o circuito integrado. Em qualquer representação do projeto, os dados podem ser armazenados em qualquer forma de um meio legível por máquina. Uma memória ou um armazenamento magnético ou óptico tal como um disco podem ser o meio legível por máquina para armazenar informações transmitidas por meio de ondas ópticas ou elétricas moduladas ou geradas de outra forma para transmitir essas informações. Quando uma onda portadora elétrica que indica ou transporta o código ou projeto é transmitida, na medida em que cópia, armazenamento temporário em memória de amortecimento, ou retransmissão do sinal elétrico é realizado, uma nova cópia é feita. Assim, um provedor de comunicação ou um provedor de rede pode armazenar em um meio tangível legível por máquina, pelo menos temporariamente, um artigo, tal como informações codificadas em uma onda portadora, que incorporam técnicas de modalidades da invenção.
[00168] Um módulo como usado no presente documento se refere a qualquer combinação de hardware, software, e/ou firmware. Como um exemplo, um módulo inclui hardware, tal como um microcontrolador, associado a um meio não transitório para armazenar código adaptado para ser executado pelo microcontrolador. Portanto, referência a um módulo, em uma modalidade, se refere ao hardware, o qual é especificamente configurado para reconhecer e/ou executar o código a ser mantido em um meio não transitório. Além disso, em outra modalidade, o uso de um módulo se refere ao meio não transitório que inclui o código, o qual é especificamente adaptado para ser executada pelo microcontrolador para realizar operações predeterminadas. E como pode ser inferido, em ainda outra modalidade, o termo módulo (nesse exemplo) pode se referir à combinação do microcontrolador e do meio não transitório. Frequentemente as delimitações do módulo que são ilustradas como separadas comumente variam e potencialmente se sobrepõem. Por exemplo, um primeiro e um segundo módulo podem compartilhar hardware, software, firmware, ou uma combinação dos mesmos, ao mesmo tempo em que potencialmente conservam algum hardware, software, ou firmware independente. Em uma modalidade, o uso do termo lógica inclui hardware, tal como transistores, registradores, ou outro hardware, tal como dispositivos lógicos programáveis.
[00169] O uso da expressão "configurado para”, em uma modalidade, se refere a dispor, colocar junto, fabricar, oferecer para venda, importar e/ou projetar um aparelho, hardware, lógica, ou elemento para realizar uma tarefa projetada ou determinada. Nesse exemplo, um aparelho ou elemento do mesmo que não está operando ainda é “configurado para” realizar uma tarefa projetada se o mesmo for projetado, acoplado, e/ou interconectado para realizar a dita tarefa projetada. Como um exemplo puramente ilustrativo, uma porta lógica pode fornecer um 0 ou um 1 durante a operação. Mas uma porta lógica ”configurada para” fornecer um sinal que habilita um sincronismo não inclui cada porta lógica potencial que pode fornecer um 1 ou 0. Em vez disso, a porta lógica é uma acoplada de alguma maneira que durante a operação o 1 ou 0 emitido é para habilitar o sincronismo. Deve-se observar mais uma vez que o uso do termo ”configurado para” não exige operação, mas em vez disso se concentra no estado latente de um aparelho, hardware, e/ou elemento, em que no estado latente o aparelho, hardware, e/ou elemento é projetado para realizar uma tarefa particular quando o aparelho, hardware, e/ou elemento estiver operando.
[00170] Além disso, o uso das expressões ”para”, ”capaz de/para”, e ou ”operável para” em uma modalidade, se refere a algum aparelho, lógica, hardware, e/ou elemento projetado de uma forma a habilitar o uso do aparelho, lógica, hardware, e/ou elemento de uma maneira especificada. Deve ser observado como acima que o uso de para, capaz para, ou operável para, em uma modalidade, se refere ao estado latente de um aparelho, lógica, hardware, e/ou elemento, em que o aparelho, lógica, hardware, e/ou elemento não está operando, mas é projetado de uma forma a habilitar o uso de um aparelho de uma maneira especificada.
[00171] Um valor, como usado no presente documento, inclui qualquer representação conhecida de um número, um estado, um estado lógico, ou um estado lógico binário. Frequentemente, o uso de níveis de lógica, valores de lógica, ou valores lógicos também é referenciado como 1's e 0's, o que representa de uma forma simples estados de lógica binária. Por exemplo, um 1 se refere a um nível de lógica alto e 0 se refere a um nível de lógica baixo. Em uma modalidade, uma célula de armazenamento, tal como um transistor ou célula flash, pode ser capaz de manter um único valor lógico ou múltiplos valores lógicos. Entretanto, outras representações de valores em sistemas de computador têm sido usadas. Por exemplo o número decimal dez também pode ser representado como um valor binário de 1110 e uma letra hexadecimal A. Portanto, um valor inclui qualquer representação de informações capaz de ser mantida em um sistema de computador.
[00172] Além disso, estados podem ser representados por valores ou porções de valores. Como um exemplo, um primeiro valor, tal como um, um lógico, pode representar um estado default ou inicial, enquanto que um segundo valor, tal como um, zero lógico, pode representar um estado não default. Adicionalmente, os termos reajustado e ajustado, em uma modalidade, se referem um valor ou estado default e um atualizado, respectivamente. Por exemplo, um valor default potencialmente inclui um valor lógico alto, ou seja, reajustado, enquanto que um valor potencialmente atualizado inclui um valor lógico baixo, ou seja, ajustado. Deve ser observado que qualquer combinação de valores pode ser utilizada para representar qualquer número de estados.
[00173] As modalidades de métodos, hardware, software, firmware ou código apresentadas acima podem ser implantadas por meio de instruções ou código armazenado em um meio acessível por máquina, legível por máquina, acessível por computador, ou legível por computador as quais são executáveis por um elemento de processamento. Um meio não transitório acessível/legível por máquina inclui qualquer mecanismo que forneça (ou seja, armazene e/ou transmita) informações em uma forma legível por uma máquina, tal como um computador ou sistema eletrônico. Por exemplo, um meio não transitório acessível por máquina inclui memória de acesso randômico (RAM), tal como RAM estática (SRAM) ou RAM dinâmica (DRAM); ROM; meio de armazenamento magnético ou óptico; dispositivos de memória flash; dispositivos de armazenamento elétrico; dispositivos de armazenamento óptico; dispositivos de armazenamento acústico; outras formas de dispositivos de armazenamento para manter informações recebidas a partir de sinais (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais) transitórios (propagados); etc., as quais devem ser distintas dos meios não transitórios que podem receber informações a partir das mesmas.
[00174] As instruções usadas para lógica de programa para realizar modalidades da invenção podem ser armazenadas dentro de uma memória no sistema, tal como DRAM, cache, memória flash, ou outro armazenamento. Além disso, as instruções podem ser distribuídas por meio de uma rede ou por meio de outros meios legíveis por computador. Assim um meio legível por máquina pode incluir qualquer mecanismo para armazenar ou transmitir informações em uma forma legível por uma máquina (por exemplo, um computador), porém sem limitações, disquetes flexíveis, discos ópticos, Disco Compacto de Memória Somente de Leitura (CD-ROMs), e discos magneto-ópticos, Memória Somente de Leitura (ROMs), Memória de Acesso Randômico (RAM), Memória Somente de Leitura Programável Apagável (EPROM), Memória Somente de Leitura Programável Apagável Eletricamente (EEPROM), cartões magnéticos ou ópticos, memória flash, ou um, armazenamento legível por máquina tangível usado na transmissão de informações pela Internet por meio de sinais elétricos, ópticos, acústicos ou propagados de outras formas (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais, etc.). Consequentemente, o meio legível por computador inclui qualquer tipo de meio legível por máquina tangível adequado para armazenar ou transmitir instruções ou informações eletrônicas em uma forma legível por uma máquina (por exemplo, um computador). [00175] Referência em todo esse relatório descritivo a “uma modalidade” significa que um recurso, estrutura, ou característica particular descrita em conexão com a modalidade é incluída em pelo menos uma modalidade da invenção. Assim, as aparições da expressão “em uma modalidade” em vários locais por todo esse relatório descritivo não estão todas necessariamente se referindo à mesma modalidade. Além disso, os recursos, estruturas, ou características particulares podem ser combinados de qualquer maneira adequada em uma ou mais modalidades. [00176] No relatório descritivo exposto acima, foi apresentada uma descrição detalhada com referência a modalidades exemplificativas específicas. Entretanto, ficará evidente que várias modificações e mudanças podem ser feitas às mesmas sem se afastar do espírito e escopo mais amplo da invenção como apresentada nas reivindicações anexas. O relatório descritivo e desenhos devem, consequentemente, ser considerados em um sentido ilustrativo em vez de em um sentido restritivo. Além disso, o uso exposto acima de modalidade e outra linguagem exemplificativa não se refere necessariamente à mesma modalidade ou ao mesmo exemplo, mas pode se referir a modalidades diferentes e distintas, bem como potencialmente à mesma modalidade.

Claims (11)

1. Dispositivo de processamento, compreendendo: um módulo de rastreamento de instruções (IT, 103) para: receber uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento; determinar que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT; gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT; e caracterizadopor gerar um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do dispositivo de processamento.
2. Dispositivo de processamento, deacordo com a reivindicação 1, caracterizadopelo fato de que o módulo de IT deve gerar adicionalmente pacotes de memória de transação (TMX) que compreendem um padrão de modo de n bits no registro de pacotes, em que o n é pelo menos dois, e em que o modo de n bits indica uma situação de transação da operação de TMX; eem que a operação de TMX é uma coleção de uma ou mais instruções que são especulativas e são efetivadas apenas quando a transação termina em uma efetivação.
3. Dispositivo de processamento, de acordo com a reivindicação 2, caracterizadopelo fato de que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreende uma dentre uma interrupção da operação de TMX ou uma efetivação da operação de TMX.
4. Dispositivo de processamento, de acordo com a reivindicação 3, caracterizadopelo fato de que o módulo de IT deve gerar adicionalmente um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um dentre um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia ou um ponteiro de instrução (IP) de próxima instrução a ser executada na situação de transação prévia, ou um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada.
5. Dispositivo de processamento, de acordo com a reivindicação 3, caracterizadopelo fato de que o módulo de IT deve gerar adicionalmente um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após uma interrupção da operação de TMX.
6. Método, compreendendo: receber, por um dispositivo de processamento, uma indicação de uma mudança em um modo de execução atual do dispositivo de processamento; determinar, pelo dispositivo de processamento, que o modo de execução atual da indicação recebida é diferente de um valor de um modo de execução de um primeiro pacote de modo de execução (EM) gerado previamente pelo módulo de IT; gerar, com base na determinação de que o modo de execução atual é diferente, um pacote de segundo EM que fornece um valor do modo de execução atual do dispositivo de processamento para indicar a mudança no modo de execução para uma instrução em um rastreamento gerado pelo módulo de IT; e caracterizadopor gerar um pacote de ponteiro de instrução de modo de execução (EMIP) associado ao pacote de segundo EM, em que o pacote de EMIP identifica um ponteiro de instrução (IP) de uma próxima instrução a ser executada no rastreamento no modo de execução atual, em que o pacote de EMIP identifica o IP de uma primeira instrução a ser executada no rastreamento no modo de execução atual quando o pacote de segundo EM fornece a indicação da mudança no modo de execução do dispositivo de processamento.
7. Método, de acordo com a reivindicação 6,caracterizadopelo fato de que compreende adicionalmente gerar pacotes de memória de transação (TMX) que compreendem um padrão de modo de n bits no registro de pacotes, em que o n é pelo menos dois, e em que o modo de n bits indica uma situação de transação da operação de TMX; eem que a operação de TMX é uma coleção de uma ou mais instruções que são especulativas e são efetivadas apenas quando a transação termina em uma efetivação.
8. Método, de acordo com a reivindicação 7, caracterizadopelo fato de que a situação de transação da operação de TMX associada a um bit do padrão de modo de n bits compreende uma dentre uma interrupção da operação de TMX ou uma efetivação da operação de TMX.
9. Método, de acordo com a reivindicação 8, caracterizadopelo fato de que compreende adicionalmente gerar um pacote de ponteiro de instrução de memória de transação fonte (STMXIP) associado ao pacote de TMX, em que quando o pacote de TMX associado indica uma mudança na situação de transação, o pacote de STMXIP identifica um dentre um ponteiro de instrução (IP) de uma última instrução a ser executada em uma situação de transação prévia ou um ponteiro de instrução (IP) de uma próxima instrução a ser executada na situação de transação prévia, ou um ponteiro de instrução (IP) de uma primeira instrução a ser executada na situação de transação mudada, em que a situação de transação prévia é anterior à situação de transação mudada.
10. Método, de acordo com a reivindicação 8,caracterizadopelo fato de que compreende adicionalmente gerar um pacote de ponteiro de instrução de memória de transação alvo (TTMXIP) associado ao pacote de TMX, em que o pacote de TTMXIP fornece um ponteiro de instrução (IP) de uma próxima instrução a ser executada após uma interrupção da operação de TMX.
11. Mídia legível por máquina, pelo menos uma, caracterizadapor compreender uma pluralidade de instruções que em resposta a ser executada em um dispositivo de computação, faz com que o dispositivo de computação realize o método conforme definido na reivindicação 6
BR112015029860-5A 2013-06-27 2013-06-27 Dispositivo de processamento, método e mídia legível por máquina BR112015029860B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/048089 WO2014209312A1 (en) 2013-06-27 2013-06-27 Tracking mode of a processing device in instruction tracing systems

Publications (2)

Publication Number Publication Date
BR112015029860A2 BR112015029860A2 (pt) 2017-07-25
BR112015029860B1 true BR112015029860B1 (pt) 2021-12-07

Family

ID=52116768

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015029860-5A BR112015029860B1 (pt) 2013-06-27 2013-06-27 Dispositivo de processamento, método e mídia legível por máquina

Country Status (6)

Country Link
US (1) US10331452B2 (pt)
EP (1) EP3014452B1 (pt)
CN (1) CN105229616B (pt)
BR (1) BR112015029860B1 (pt)
RU (1) RU2635044C2 (pt)
WO (1) WO2014209312A1 (pt)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612938B2 (en) * 2013-05-16 2017-04-04 Intel Corporation Providing status of a processing device with periodic synchronization point in instruction tracing system
US9778945B2 (en) * 2015-02-10 2017-10-03 Red Hat Israel, Ltd. Providing mode-dependent virtual machine function code
GB2536871A (en) * 2015-03-04 2016-10-05 Advanced Risc Mach Ltd An apparatus and method to generate trace data in response to transactional execution
US10430249B2 (en) * 2016-11-02 2019-10-01 Red Hat Israel, Ltd. Supporting quality-of-service for virtual machines based on operational events
US10180799B2 (en) * 2017-02-02 2019-01-15 Microsoft Technology Licensing, Llc Efficient retrieval of memory values during trace replay
CN109375947B (zh) * 2018-10-30 2021-04-20 杭州炎魂网络科技有限公司 一种对于软件执行改变的方法及其系统
CN111310172B (zh) * 2018-12-12 2022-03-11 北京忆芯科技有限公司 通过反汇编验证处理器执行轨迹的方法及控制部件
CN112579169B (zh) * 2019-09-27 2024-04-09 阿里巴巴集团控股有限公司 处理器追踪流的生成方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7519497B2 (en) 2002-12-17 2009-04-14 Texas Instruments Incorporated Apparatus and method for state selectable trace stream generation
US7287245B2 (en) * 2003-09-17 2007-10-23 Faraday Technology Corp. Method for real-time instruction information tracing
US7493599B2 (en) * 2003-11-26 2009-02-17 Intel Corporation Device, system and method for detection and handling of misaligned data access
US7987393B2 (en) * 2005-05-16 2011-07-26 Texas Instruments Incorporated Determining operating context of an executed instruction
US8352713B2 (en) 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US8140912B2 (en) * 2006-11-02 2012-03-20 Nec Corporation Semiconductor integrated circuits and method of detecting faults of processors
CN100552632C (zh) 2006-11-06 2009-10-21 佳世达科技股份有限公司 操作调度系统及方法
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US8539485B2 (en) * 2007-11-20 2013-09-17 Freescale Semiconductor, Inc. Polling using reservation mechanism
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
JP5376509B2 (ja) 2009-03-16 2013-12-25 スパンション エルエルシー 実行履歴トレース方法
GB2481385B (en) * 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
US20120042212A1 (en) * 2010-08-10 2012-02-16 Gilbert Laurenti Mixed Mode Processor Tracing
US9298632B2 (en) * 2012-06-28 2016-03-29 Intel Corporation Hybrid cache state and filter tracking of memory operations during a transaction

Also Published As

Publication number Publication date
CN105229616B (zh) 2018-06-29
RU2635044C2 (ru) 2017-11-08
EP3014452A1 (en) 2016-05-04
BR112015029860A2 (pt) 2017-07-25
EP3014452B1 (en) 2019-06-05
CN105229616A (zh) 2016-01-06
RU2015151181A (ru) 2017-06-01
US20150006717A1 (en) 2015-01-01
EP3014452A4 (en) 2017-04-26
WO2014209312A1 (en) 2014-12-31
US10331452B2 (en) 2019-06-25

Similar Documents

Publication Publication Date Title
US10521361B2 (en) Memory write protection for memory corruption detection architectures
US10346280B2 (en) Monitoring performance of a processor using reloadable performance counters
BR112015029860B1 (pt) Dispositivo de processamento, método e mídia legível por máquina
US9626316B2 (en) Managing shared resources between multiple processing devices
US10585741B2 (en) Heap management for memory corruption detection
BR102014005801A2 (pt) rastreamento de fluxo de controle de instruções
US10191749B2 (en) Scatter reduction instruction
US11003484B2 (en) Inter-processor interrupt virtualization with pass-through of local interrupt controller
EP3557427A1 (en) Pause communication from i/o devices supporting page faults
US9632907B2 (en) Tracking deferred data packets in a debug trace architecture
EP3394735A1 (en) Aggregate scatter instructions
CN108363668B (zh) 线性存储器地址变换和管理
US10691454B2 (en) Conflict mask generation
US9606847B2 (en) Enabling error detecting and reporting in machine check architecture
US9612938B2 (en) Providing status of a processing device with periodic synchronization point in instruction tracing system
US20150006868A1 (en) Minimizing bandwith to compress output stream in instruction tracing systems
US9875185B2 (en) Memory sequencing with coherent and non-coherent sub-systems
US9823984B2 (en) Remapping of memory in memory control architectures
US9875187B2 (en) Interruption of a page miss handler
US9716646B2 (en) Using thresholds to gate timing packet generation in a tracing system

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B09A Decision: intention to grant [chapter 9.1 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 27/06/2013, OBSERVADAS AS CONDICOES LEGAIS.