BR112019015271A2 - rastreamento de hardware distribuído - Google Patents

rastreamento de hardware distribuído Download PDF

Info

Publication number
BR112019015271A2
BR112019015271A2 BR112019015271A BR112019015271A BR112019015271A2 BR 112019015271 A2 BR112019015271 A2 BR 112019015271A2 BR 112019015271 A BR112019015271 A BR 112019015271A BR 112019015271 A BR112019015271 A BR 112019015271A BR 112019015271 A2 BR112019015271 A2 BR 112019015271A2
Authority
BR
Brazil
Prior art keywords
hardware
tracking
events
data
processor
Prior art date
Application number
BR112019015271A
Other languages
English (en)
Other versions
BR112019015271B1 (pt
Inventor
Kumar Naveen
Norrie Thomas
Original Assignee
Google Llc
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 Google Llc filed Critical Google Llc
Publication of BR112019015271A2 publication Critical patent/BR112019015271A2/pt
Publication of BR112019015271B1 publication Critical patent/BR112019015271B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • G06F11/3075Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting the data filtering being achieved in order to maintain consistency among the monitored data, e.g. ensuring that the monitored data belong to the same timeframe, to the same system or component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/48Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/489Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using time information
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Abstract

um método implementado em computador executado por um ou mais processadores, o método incluindo o monitoramento da execução de um código de programa executado por um primeiro componente de processador; e o monitoramento da execução de um código de programa executado por um segundo componente de processador. um sistema de computação armazena dados identificando eventos de hardware em um buffer de memória. os eventos armazenados através de unidades de processador que incluem pelo menos os primeiro e segundo componentes de processador. cada um dos eventos de hardware inclui uma marca de tempo de evento e metadados caracterizando o evento. o sistema gera uma estrutura de dados que identifica os eventos de hardware. a estrutura de dados arranja os eventos em uma sequência ordenada no tempo e associa eventos a pelo menos o primeiro ou segundo componente de processador. o sistema armazena a estrutura de dados em um banco de memória de um dispositivo principal e usa a estrutura de dados para análise do desempenho do código de programa executado pelo primeiro ou segundo componente de processador.

Description

RASTREAMENTO DE HARDWARE DISTRIBUÍDO
REFERÊNCIA CRUZADA A PEDIDO RELACIONADO [0001] Este pedido está relacionado ao Pedido de Patente U.S. N° 15/472.932, intitulado Synchronous Hardware Event Collection, depositado em 29 de março de 2017, e Protocolo Legal Número 16113-8129001. A exposição inteira do Pedido de Patente U.S. N° 15/472.932 é expressamente incorporada aqui em sua totalidade.
ANTECEDENTES [0002] Este relatório se refere à análise da execução de um código de programa.
[0003] Uma análise de desempenho efetiva de um software distribuído em execução nos componentes de hardware distribuídos pode ser uma tarefa complexa. Os componentes de hardware distribuídos podem ser respectivos núcleos de processador de duas ou mais unidades de processamento centrais (CPUs) (ou unidades de processamento gráfico (GPUs)) que cooperam e interagem para execução de porções maiores de um programa de software ou código de programa.
[0004] Da perspectiva de hardware (por exemplo, nas CPUs ou GPUs), geralmente há dois tipos de informação ou recursos disponíveis para análise de desempenho: 1) contadores de desempenho de hardware e 2) rastreamentos de evento de hardware.
SUMÁRIO [0005] Em geral, um aspecto do assunto descrito neste relatório descritivo pode ser concretizado em um método implementado em computador executado por um ou mais processadores. O método inclui o monitoramento da execução de um código de programa por um primeiro componente de
Petição 870190070717, de 24/07/2019, pág. 20/99
2/52 processador, o primeiro componente de processador sendo configurado para execução de pelo menos uma primeira porção do código de programa; e o monitoramento da execução do código de programa por um segundo componente de processador, o segundo componente de processador sendo configurado para execução de pelo menos uma segunda porção do código de programa.
[0006] O método ainda inclui o armazenamento, pelo sistema de computação e em pelo menos um buffer de memória, de dados identificando um ou mais eventos de hardware ocorrendo através de unidades de processador que incluem o primeiro componente de processador e o segundo componente de processador. Cada evento de hardware representa pelo menos uma dentre comunicações de dados associadas a uma operação de acesso à memória do código de programa, uma instrução emitida do código de programa ou uma instrução executada do código de programa. Os dados identificando cada um de um ou mais eventos de hardware incluem uma marca de tempo de evento de hardware e metadados caracterizando o evento de hardware. O método inclui a geração, pelo sistema de computação, de uma estrutura de dados que identifica um ou mais eventos de hardware, a estrutura de dados sendo configurada para arranjar um ou mais eventos de hardware em uma sequência ordenada no tempo de eventos que estão associados a pelo menos o primeiro componente de processador e o segundo componente de processador.
[0007] O método inclui o armazenamento, pelo sistema de computação, da estrutura de dados gerada em um banco de memória de um dispositivo principal para uso na análise de desempenho do código de programa sendo executado por pelo
Petição 870190070717, de 24/07/2019, pág. 21/99
3/52 menos o primeiro componente de processador ou o segundo componente de processador.
[0008] Estas e outras implementações opcionalmente podem incluir, cada uma, um ou mais dos recursos a seguir. Por exemplo, em algumas implementações, o método ainda inclui: a detecção, pelo sistema de computação, de uma função de gatilho associada a porções de um código de programa sendo executadas por pelo menos um dentre o primeiro componente de processador ou o segundo componente de processador; e, em resposta à detecção da função de gatilho, a iniciação, pelo sistema de computação, de pelo menos um evento de rastreamento que faz com que dados associados a um ou mais eventos de hardware sejam armazenados em pelo menos um buffer de memória.
[0009] Em algumas implementações, a função de gatilho corresponde a pelo menos um dentre uma etapa de sequência em particular no código de programa ou um parâmetro de tempo em particular indicado por um relógio de tempo global usado pelas unidades de processador; e a iniciação de pelo menos um evento de rastreamento inclui a determinação que um bit de rastreamento é ajustado para um valor em particular, pelo menos um evento de rastreamento sendo associado a uma operação de acesso à memória incluindo múltiplas operações intermediárias que ocorrem através das unidades de processador, e dados associados às múltiplas operações intermediárias são armazenados em um ou mais buffers de memória em resposta a uma determinação que o bit de rastreamento é ajustado para o valor em particular.
[0010] Em algumas implementações, o armazenamento de dados identificando um ou mais eventos de hardware ainda
Petição 870190070717, de 24/07/2019, pág. 22/99
4/52 inclui: o armazenamento, em um primeiro buffer de memória do primeiro componente de processador, de um primeiro subconjunto de dados identificando eventos de hardware de um ou mais eventos de hardware. 0 armazenamento ocorre em resposta ao primeiro componente de processador executar uma instrução de rastreamento de hardware associada a pelo menos a primeira porção do código de programa.
[0011] Em algumas implementações, o armazenamento de dados identificando um ou mais eventos de hardware ainda inclui: o armazenamento em um segundo buffer de memória do segundo componente de processador de um segundo subconjunto de dados identificando eventos de hardware de um ou mais eventos de hardware. O armazenamento ocorre em resposta ao segundo componente de processador executar uma instrução de rastreamento de hardware associada a pelo menos a segunda porção do código de programa.
[0012] Em algumas implementações, a geração da estrutura de dados ainda inclui: a comparação, pelo sistema de computação, de pelo menos marcas de tempo de evento de hardware de respectivos eventos no primeiro conjunto de dados identificando eventos de hardware com pelo menos marcas de tempo de evento de hardware de respectivos eventos no segundo subconjunto de dados identificando eventos de hardware; e a provisão, pelo sistema de computação e para apresentação na estrutura de dados, de um conjunto correlacionado de eventos de hardware com base, em parte, na comparação entre os respectivos eventos no primeiro subconjunto e os respectivos eventos no segundo subconjunto.
[0013] Em algumas implementações, a estrutura de dados gerada identifica pelo menos um parâmetro que indica um
Petição 870190070717, de 24/07/2019, pág. 23/99
5/52 atributo de latência de um evento de hardware em particular, o atributo de latência indicando pelo menos uma duração do evento de hardware em particular. Em algumas implementações, pelo menos um processador do sistema de computação é um processador de nó múltiplo e núcleo múltiplo tendo um ou mais componentes de processador, e um ou mais eventos de hardware correspondem, em parte, a transferências de dados que ocorrem entre pelo menos o primeiro componente de processador de um primeiro nó e o segundo componente de processador de um segundo nó.
[0014] Em algumas implementações, o primeiro componente de processador e o segundo componente de processador são um dentre: um processador, um núcleo de processador, um mecanismo de acesso à memória, ou um recurso de hardware do sistema de computação, e em que um ou mais eventos de hardware correspondem, em parte, a um movimento dos pacotes de dados entre uma fonte e um destino; e metadados caracterizando o evento de hardware correspondem a pelo menos um dentre um endereço de memória de fonte, um endereço de memória de destino, um número de identificação de rastreamento único ou um parâmetro de tamanho associado a um rastreamento de acesso à memória direto (DMA).
[0015] Em algumas implementações, um número de rastreamento (ID) em particular está associado a múltiplos eventos de hardware que ocorrem através das unidades de processador, e em que os múltiplos eventos de hardware correspondem a uma operação de acesso à memória em particular, e o número de ID de rastreamento em particular é usado para correlação de um ou mais eventos de hardware dos múltiplos eventos de hardware e é usado para a
Petição 870190070717, de 24/07/2019, pág. 24/99
6/52 determinação de um atributo de latência da operação de acesso à memória com base na correlação.
[0016] Um outro aspecto do assunto descrito neste relatório descritivo pode ser concretizado em um sistema de rastreamento de hardware distribuído que inclui: um ou mais processadores incluindo um ou mais núcleos de processador; uma ou mais unidades de armazenamento que podem ser lidas em máquina para armazenamento de instruções que são executáveis por um ou mais processadores para execução de operações incluindo: o monitoramento da execução de um código de programa por um primeiro componente de processador, o primeiro componente de processador sendo configurado para executar pelo menos uma primeira porção do código de programa; e o monitoramento da execução do código de programa por um segundo componente de processador, o segundo componente de processador sendo configurado para executar pelo menos uma segunda porção do código de programa.
[0017] O método ainda inclui o armazenamento, pelo sistema de computação, de dados identificando um ou mais eventos de hardware ocorrendo através de unidades de processador que incluem o primeiro componente de processador e o segundo componente de processador. Cada evento de hardware representa pelo menos uma dentre comunicações de dados associadas a uma operação de acesso à memória do código de programa, uma instrução emitida do código de programa ou uma instrução executada do código de programa. O método inclui a geração, pelo sistema de computação, de uma estrutura de dados que identifica um ou mais eventos de hardware, a estrutura de dados sendo configurada para arranjar um ou mais eventos de hardware em uma sequência
Petição 870190070717, de 24/07/2019, pág. 25/99
7/52 ordenada no tempo de eventos que estão associados a pelo menos o primeiro componente de processador e o segundo componente de processador.
[0018] O método ainda inclui o armazenamento, pelo sistema de computação, da estrutura de dados gerada em um banco de memória de um dispositivo principal para uso na análise de desempenho do código de programa sendo executado por pelo menos o primeiro componente de processador ou o segundo componente de processador.
[0019] Outras implementações deste e de outros aspectos incluem sistemas, aparelhos e programas de computador correspondentes configurados para execução das ações dos métodos, codificados em dispositivos de armazenamento em computador. Um sistema de um ou mais computadores pode ser configurado assim em virtude de um hardware, firmware, hardware ou uma combinação deles instalados no sistema que, em operação, fazem com que o sistema execute as ações. Um ou mais programas de computador podem ser configurados assim em virtude de ter instruções que, quando executadas por um aparelho de processamento de dados, faz com que o aparelho execute as ações.
[0020] O assunto descrito neste relatório descritivo pode ser implementado em modalidades em particular de modo a se realizarem um ou mais das vantagens a seguir. Os sistemas de rastreamento de hardware descritos permitem uma correlação eficiente de eventos de hardware que ocorrem durante uma execução de um programa de software distribuído por unidades de processamento distribuídas incluindo processadores de núcleo múltiplo e nó múltiplo. O sistema de rastreamento de hardware descrito ainda inclui mecanismos que permitem uma
Petição 870190070717, de 24/07/2019, pág. 26/99
8/52 coleção e uma correlação de eventos de hardware / dados de rastreamento em múltiplas conFigurações de nó cruzado.
[0021] O sistema de rastreamento de hardware melhora a eficiência computacional pelo uso de gatilhos dinâmicos que se executam através de botões / recursos de hardware. Ainda, eventos de hardware podem ser ordenados no tempo de uma maneira sequenciada com descritores de evento tais como identificadores de rastreamento únicos, marcas de tempo de evento, endereço de fonte de evento e endereço de destino de evento. Esses descritores ajudam programadores de software e engenheiros de projeto de processador com uma resolução de erros efetiva e uma análise de questões de desempenho de software e de hardware que possam surgir durante uma execução de código fonte.
[0022] Os detalhes de uma ou mais implementações do assunto descrito neste relatório descritivo são estabelecidos nos desenhos associados e na descrição abaixo. Outros recursos potenciais, aspectos e vantagens do assunto tornar-se-ão evidentes a partir da descrição, dos desenhos e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS [0023] A Figura 1 é um diagrama de blocos de um sistema de computação de exemplo para rastreamento de hardware distribuído.
[0024] A Figura 2 ilustra um diagrama de blocos de cadeias de rastreamento e respectivos nós de um sistema de computação de exemplo para um rastreamento de hardware distribuído.
[0025] A Figura 3 ilustra um diagrama de blocos de uma arquitetura de projeto de multiplexador de rastreamento de
Petição 870190070717, de 24/07/2019, pág. 27/99
9/52 exemplo e uma estrutura de dados de exemplo.
[0026] A Figura 4 é um diagrama de blocos que indica uma atividade de rastreamento para um evento de rastreamento de acesso à memória direto executada por um sistema de computação de exemplo para um rastreamento de hardware distribuído.
[0027] A Figura 5 é um fluxograma de processo de um processo de exemplo para rastreamento de hardware distribuído.
[0028] Números de referência e designações iguais nos vários desenhos indicam elementos iguais.
DESCRIÇÃO DETALHADA [0029] O assunto descrito neste relatório descritivo geralmente se refere a um rastreamento de hardware distribuído. Em particular, um sistema de computação monitora a execução de um código de programa executado por um ou mais núcleos de processador. Por exemplo, o sistema de computação pode monitorar a execução de um código de programa executado por um primeiro núcleo de processador e execução de um código de programa executado por pelo menos um segundo núcleo de processador. O sistema de computação armazena dados identificando um ou mais eventos de hardware em um buffer de memória. Os dados armazenados identificando os eventos correspondem a eventos que ocorrem através de unidades de processador distribuídas que incluem pelo menos os primeiro e segundo núcleos de processador.
[0030] Para cada evento de hardware, os dados armazenados incluem uma marca de tempo de evento e metadados caracterizando o evento de hardware. O sistema gera uma estrutura de dados que identifica os eventos de hardware. A
Petição 870190070717, de 24/07/2019, pág. 28/99
10/52 estrutura de dados arranja os eventos em uma sequência ordenada no tempo e associa eventos a pelo menos o primeiro ou segundo núcleo de processador. O sistema armazena a estrutura de dados em um banco de memória de um dispositivo principal e usa a estrutura de dados para analisar o desempenho do código de programa executado pelo primeiro ou segundo núcleo de processador.
[0031] A Figura 1 ilustra um diagrama de blocos de um sistema de computação de exemplo 100 para um rastreamento de hardware distribuído. Conforme usado neste relatório descritivo, um rastreamento de sistema de hardware distribuído corresponde a um armazenamento de dados identificando eventos que ocorrem em componentes e subcomponentes de um microchip de processador de exemplo. Ainda, conforme usado aqui, um sistema de hardware distribuído (ou sistema de rastreamento) corresponde a uma coleção de microchips de processador ou unidades de processamento que cooperam para execução de respectivas porções de um software / código de programa configurado para execução distribuída dentre a coleção de microchips de processador ou unidades de processamento distribuídas.
[0032] O sistema 100 pode ser um sistema de processamento distribuído, tendo um ou mais processadores ou unidades de processamento que executam um programa de software de uma maneira distribuída, isto é, pela execução de partes ou porções diferentes do código de programa em diferentes unidades de processamento de sistema 100. As unidades de processamento podem incluir dois ou mais processadores, microchips de processador ou unidades de processamento, por exemplo, pelo menos uma primeira unidade de processamento e
Petição 870190070717, de 24/07/2019, pág. 29/99
11/52 uma segunda unidade de processamento.
[0033] Em algumas implementações, duas ou mais unidades de processamento podem ser unidades de processamento distribuídas quando a primeira unidade de processamento receber ou executar uma primeira porção de código de programa de um programa de software distribuído, e, quando a segunda unidade de processamento receber e executar uma segunda porção de um código de programa do mesmo programa de software distribuído.
[0034] Em algumas implementações, chips de processadores diferentes do sistema 100 podem formar respectivos nós do sistema de hardware distribuído. Em implementações alternativas, um único chip de processador pode incluir um ou mais núcleos de processador e recursos de hardware que podem, cada um, formar respectivos nós do chip de processador.
[0035] Por exemplo, no contexto de uma unidade de processamento central (CPU) , um chip de processador pode incluir pelo menos dois nós, e cada nó pode ser um respectivo núcleo da CPU. Alternativamente, no contexto de uma unidade de processador gráfico (GPU), um chip de processador pode incluir pelo menos dois nós, e cada nó pode ser um respectivo microprocessador de transmissão contínua (streaming) da GPU. Um sistema de computação 100 pode incluir múltiplos componentes de processador. Em algumas implementações, os componentes de processador podem ser pelo menos um dentre um chip de processador, um núcleo de processador, um mecanismo de acesso à memória ou pelo menos um componente de hardware do sistema de computação geral 100.
[0036] Em alguns casos, um componente de processador, tal
Petição 870190070717, de 24/07/2019, pág. 30/99
12/52 como um núcleo de processador, pode ser um componente de função fixa configurado para execução de pelo menos uma operação específica com base em pelo menos uma instrução emitida do código de programa de execução. Em outros casos, um componente de processador, tal como um mecanismo de acesso à memória (MAE), pode ser configurado para execução de um código de programa em um nível mais baixo de detalhe ou granularidade do que um código de programa executado por outros componentes de processador do sistema 100.
[0037] Por exemplo, um código de programa executado por um núcleo de processador pode fazer com que um descritor de MAE seja gerado e transmitido / enviado para o MAE. Após o recebimento do descritor, o MAE pode executar uma operação de transferência de dados com base no descritor de MAE. Em algumas implementações, as transferências de dados executados pelo MAE podem incluir, por exemplo, o movimento de dados para e a partir de certos componentes do sistema 100 através de certos percursos de dados ou componentes de interface do sistema, ou a emissão de requisições de dados em um barramento de configuração de exemplo de sistema 100.
[0038] Em algumas implementações, cada nó de tensor de um chip de processador de exemplo de sistema 100 pode ter pelo menos duas interfaces frontais, as quais podem ser blocos / recursos de hardware que processam instruções de programa. Conforme discutido em maiores detalhes abaixo, uma primeira interface externa pode corresponder a um primeiro núcleo de processador 104, enquanto uma segunda interface externa pode corresponder a um segundo núcleo de processador 106. Dessa forma,, os primeiro e segundo núcleos de processador também podem ser descritos aqui como a primeira
Petição 870190070717, de 24/07/2019, pág. 31/99
13/52 interface externa 104 e a segunda interface externa 106.
[0039] Conforme usado neste relatório descritivo, uma cadeia de rastreamento pode ser um barramento de comunicação de dados fisico especifico cujas entradas de rastreamento podem ser lançadas para transmissão para um gerenciador de chip de exemplo no sistema 100. As entradas de rastreamento recebidas podem ser palavras / estruturas de dados incluindo bytes múltiplos e valores binários múltiplos ou digitos. Assim, o descritor palavra indica um pedaço de tamanho fixo de dado binário que pode ser manipulado como uma unidade por dispositivos de hardware de um núcleo de processador de exemplo.
[0040] Em algumas implementações, os chips de processador do sistema de rastreamento de hardware distribuído são processadores de núcleo múltiplo (isto é, tendo múltiplos núcleos) que executam, cada um, porções de um código de programa em respectivos núcleos do chip. Em algumas implementações, as porções de código de programa podem corresponder a computações vetorizadas para cargas de trabalho de inferência de uma rede neural de camada múltipla de exemplo. Enquanto em implementações alternativas, as porções de código de programa podem corresponder geralmente a módulos de software associados a linguagens de programação convencionais.
[0041] O sistema de computação 100 geralmente inclui um gerenciador de nó 102, um primeiro núcleo de processador (FPC) 104, um segundo núcleo de processador (SPC) 106, uma estrutura de nó (NF) 110, um roteador de dados 112 e um bloco de interface principal (HIB) 114. Em algumas implementações, o sistema 100 pode incluir um multiplexador de memória 108
Petição 870190070717, de 24/07/2019, pág. 32/99
14/52 que é configurado para executar funções de comutação, multiplexação e demultiplexação de sinal. 0 sistema 100 ainda inclui um núcleo de tensor 116 que inclui o FPC 104 disposto no mesmo. O núcleo de tensor 116 pode ser um dispositivo de computação de exemplo configurado para executar computações vetorizadas em arranjos de dados multidimensionais. O núcleo de tensor 116 pode incluir uma unidade de processamento de vetor (VPU) 118, que interage com uma unidade de matriz (MXU) 120, uma unidade de transposição (XU) 122, e uma unidade de redução e permutação (RPU) 124. Em algumas implementações, o sistema de computação 100 pode incluir uma ou mais unidades de execução de uma CPU ou GPU convencional, tais como unidades de carregamento / armazenamento, unidades lógicas aritméticas (ALUs) e unidades de vetor.
[0042] Os componentes do sistema 100 coletivamente incluem um grande conjunto de contadores de desempenho de hardware, bem como um hardware de suporte que facilita a conclusão de uma atividade de rastreamento nos componentes. Conforme descrito em maiores detalhes abaixo, um código de programa executado por respectivos núcleos de processador de sistema 100 pode incluir gatilhos embutidos usados para simultaneamente se habilitarem múltiplos contadores de desempenho durante uma execução de código. Em geral, os gatilhos detectados fazem com que dados de rastreamento sejam gerados para um ou mais eventos de rastreamento. Os dados de rastreamento podem corresponder a contagens de parâmetro em incrementos que são armazenadas nos contadores e que podem ser analisadas para se discernirem características de desempenho do código de programa. Os dados para respectivos eventos de rastreamento podem ser armazenados em um meio de
Petição 870190070717, de 24/07/2019, pág. 33/99
15/52 armazenamento de exemplo (por exemplo, um buffer de hardware) e podem incluir uma marca de tempo que é gerada em resposta a uma detecção do gatilho.
[0043] Ainda, os dados de rastreamento podem ser gerados por uma variedade de eventos ocorrendo em componentes de hardware de sistema 100. Os eventos de exemplo podem incluir operações de comunicação interno e de nó cruzado, tais como operações de acesso à memória direto (DMA) e atualizações de sync flag (cada uma descrita em maiores detalhes abaixo). Em algumas implementações, o sistema 100 pode incluir um contador de marca de tempo globalmente síncrono referido como um contador de tempo global (GTC). Em outras implementações, o sistema 100 pode incluir outros tipos de relógios globais, tal como um Lamport Clock.
[0044] O GTC pode ser usado para uma correlação precisa de execução de código de programa e desempenho de software / código de programa que se executa em um ambiente de processamento distribuído. Adicionalmente, e relacionado em parte ao GTC, em algumas implementações, o sistema 100 pode incluir um ou mais mecanismos de gatilho usados pelos programas de software distribuídos para se começar e parar um rastreamento de dados em um sistema distribuído de uma maneira altamente coordenada.
[0045] Em algumas implementações, um sistema principal 126 compila um código de programa que pode incluir operandos embutidos que disparam, mediante detecção, para causarem a captura e o armazenamento de dados de rastreamento associados a eventos de hardware. Em algumas implementações, o sistema principal 126 provê o código de programa compilado para um ou mais chips de processador de sistema 100. Em
Petição 870190070717, de 24/07/2019, pág. 34/99
16/52 implementações alternativas, um código de programa pode ser compilado (com gatilhos embutidos) por um compilador externo de exemplo e carregado para um ou mais chips de processador de sistema 100. Em alguns casos, o compilador pode ajustar um ou mais bits de rastreamento (discutidos abaixo) associados a certos gatilhos que estão embutidos em porções de instruções de software. O código de programa compilado pode ser um programa de software distribuído que é executado por um ou mais componentes do sistema 100.
[0046] O sistema principal 126 pode incluir um mecanismo de monitoramento 128 configurado para o monitoramento da execução de um código de programa por um ou mais componentes de sistema 100. Em algumas implementações, o mecanismo de monitoramento 128 permite que o sistema principal 126 monitore a execução de um código de programa executado por pelo menos o FPC 104 e o SPC 106. Por exemplo, durante uma execução de código, o sistema principal 126 pode monitorar, através do mecanismo de monitoramento 128, um desempenho do código de execução pelo menos pelo recebimento de linhas de tempo periódicas de eventos de hardware com base em dados de rastreamento gerados. Embora um bloco único seja mostrado para o sistema principal 126, em algumas implementações, o sistema 126 pode incluir múltiplos sistemas principais (ou subsistemas principais) que estão associados a múltiplos chips de processador ou núcleos de chip de sistema 100.
[0047] Em outras implementações, as comunicações de nó cruzado que envolvem pelo menos três núcleos de processamento podem fazer com que o sistema principal 126 monitore o tráfego de dados em um ou mais saltos intermediários conforme o tráfego de dados atravessa um percurso de
Petição 870190070717, de 24/07/2019, pág. 35/99
17/52 comunicação entre o FPC 104 e um terceiro núcleo / nó de processador. Por exemplo, o FPC 104 e o terceiro núcleo de processador podem ser os únicos núcleos executando um código de programa em um dado período de tempo. Dessa forma, uma transferência de dados do FPC 104 para o terceiro núcleo de processador pode gerar dados de rastreamento para um salto intermediário no SPC 10 6, conforme os dados forem transferidos do FPC 104 para o terceiro núcleo de processador. Dito de uma outra forma, durante um roteamento de dados no sistema 100, os dados de um primeiro chip de processador indo para um terceiro chip de processador podem precisar atravessar um segundo chip de processador, e, assim, uma execução da operação de roteamento de dados pode fazer com que entradas de rastreamento sejam geradas para roteamento de atividade no segundo chip.
[0048] Mediante uma execução do código de programa compilado, os componentes do sistema 100 podem interagir para a geração de linhas de tempo de eventos de hardware que ocorrem em um sistema de computador distribuído. Os eventos de hardware podem incluir eventos de comunicação intranó e de nó cruzado. Os nós de exemplo de um sistema de hardware distribuído e suas comunicações associadas são distribuídos em maiores detalhes abaixo com referência à Figura 2. Em algumas implementações, uma estrutura de dados é gerada, que identifica uma coleção de eventos de hardware para pelo menos uma linha de tempo de evento de hardware. A linha de tempo permite uma reconstrução de eventos que ocorrem no sistema distribuído. Em algumas implementações, uma reconstrução de evento pode incluir uma ordenação de evento correta com base em uma análise de marcas de tempo geradas durante uma
Petição 870190070717, de 24/07/2019, pág. 36/99
18/52 ocorrência de um evento em particular.
[0049] Em geral, um sistema de rastreamento de hardware distribuído de exemplo pode incluir os componentes descritos acima de sistema 100, bem como pelo menos um controlador principal associado a um sistema principal 126. Um desempenho ou uma resolução de erros de dados obtidos a partir de um sistema de rastreamento distribuído pode ser útil quando os dados de evento forem correlacionados, por exemplo, de uma maneira ordenada ou sequenciada no tempo. Em algumas implementações, uma correlação de dados pode ocorrer quando múltiplos eventos de hardware armazenados correspondentes a módulos de software conectados forem armazenados e, então, sequenciados para uma análise estruturada pelo sistema principal 126. Para implementações incluindo múltiplos sistemas principais, uma correlação de dados obtidos através dos hosts diferentes pode ser executada, por exemplo, pelo controlador principal.
[0050] Em algumas implementações, o FPC 104 e o SPC 106 são núcleos distintos, cada um, de um chip de processador de núcleo múltiplo, enquanto em outras implementações o FPC 104 e o SPC 106 são respectivos núcleos de chips de processador de núcleo múltiplo. Conforme indicado acima, o sistema 100 pode incluir unidades de processador distribuídos tendo pelo menos um FPC 104 e um SPC 10 6. Em algumas implementações, unidades de processador distribuídas de sistema 100 podem incluir um ou mais componentes de hardware ou de software configurados para execução de pelo menos uma porção de um programa de software ou código de programa distribuído maior.
[0051] O roteador de dados 112 é uma interconexão interchip (ICI) provendo percursos de comunicação de dados
Petição 870190070717, de 24/07/2019, pág. 37/99
19/52 entre os componentes de sistema 100. Em particular, o roteador 112 pode prover um acoplamento de comunicação ou conexões entre o FPC 104 e o SPC 106, e entre respectivos componentes associados aos núcleos 104, 106. A estrutura de nó 110 interage com o roteador de dados 112 para se moverem pacotes de dados nos componentes de hardware distribuídos e subcomponentes de sistema 100.
[0052] O gerenciador de nó 102 é um dispositivo de nível alto que gerencia funções de nó de nível baixo em chips de processador de nó múltiplo. Conforme discutido em maiores detalhes abaixo, um ou mais nós de um chip de processador podem incluir gerenciadores de chip controlados pelo gerenciador de nó 102 para gerenciamento e armazenamento de dados de evento de hardware em registros de entrada locais. O multiplexador de memória 108 é um dispositivo de multiplexação que pode executar operações de comutação, multiplexação e demultiplexação em sinais de dados providos para uma memória de largura de banda alta (HBM) externa ou sinais de dados recebidos a partir da HBM externa.
[0053] Em algumas implementações, uma entrada de rastreamento de exemplo (descrita abaixo) pode ser gerada pelo multiplexador 108, quando o multiplexador 108 comutar entre o FPC 104 e o SPC 106. O multiplexador de memória 108 pode potencialmente impactar o desempenho de um núcleo de processador em particular 104, 106 que não seja capaz de acessar o multiplexador 108. Assim, os dados de entrada de rastreamento gerados pelo multiplexador 108 podem ajudar no entendimento de picos resultantes em latências de certas atividades de sistema associadas aos respectivos núcleos 104, 106. Em algumas implementações, dados de evento de
Petição 870190070717, de 24/07/2019, pág. 38/99
20/52 hardware (por exemplo, pontos de rastreamento discutidos abaixo) se originando no multiplexador 108 podem ser agrupados em uma linha de tempo de evento de hardware de exemplo com dados de evento para a estrutura de nó 110. Um agrupamento de evento pode ocorrer quando certa atividade de rastreamento faz com que dados de evento para múltiplos componentes de hardware sejam armazenados em um buffer de hardware de exemplo (por exemplo, o registro de entrada de rastreamento 218 discutido abaixo).
[0054] No sistema 100, um hardware de análise de desempenho engloba o FPC 104, o SPC 106, o multiplexador 108, a estrutura de nó 110, o roteador de dados 112 e o HIB 114. Cada um destes componentes ou unidades de hardware inclui contadores de desempenho de hardware, bem como instalações e funções de rastreamento de evento de hardware. Em algumas implementações, a VPU 118, a MXU 120, a XU 122 e a RPU 124 não incluem seu próprio hardware de desempenho dedicado. Ao invés disso, nessas implementações, o FPC 104 pode ser configurado para prover os contadores necessários para a VPU 118, a MXU 120, a XU 122 e a RPU 124.
[0055] A VPU 118 pode incluir uma arquitetura de projeto interna que suporta operações de processamento e aritmética de dados de largura de banda alta localizadas associadas a elementos de vetor de um processador de matriz-vetor de exemplo. A MXU 120 é uma unidade de multiplicação de matriz configurada para executar, por exemplo, multiplicações de matrizes de até 128x128 em conjuntos de dados de vetor de multiplicandos.
[0056] A XU 122 é uma unidade de transposição configurada para executar, por exemplo, operações de transposição de
Petição 870190070717, de 24/07/2019, pág. 39/99
21/52 matriz de até 128x128 em dados de vetor associados a operações de multiplicação de matriz. A RPU 124 pode incluir uma unidade de sigma e uma unidade de permutação. A unidade de sigma executa reduções sequenciais em dados de vetor associados às operações de multiplicação de matriz. As reduções podem incluir somas e vários tipos de operações de comparação. A unidade de permutação pode permutar plenamente ou replicar todos os elementos de dados de vetor associados às operações de multiplicação de matriz.
[0057] Em algumas implementações, um código de programa
executado pelos componentes de sistema 100 pode ser
representativo de aprendizado de máquina, computações de
inferência de rede neural e/ou uma ou mais funções de acesso
à memória direto. Os componentes de sistema 100 podem ser
configurados para execução de um ou mais programas de software incluindo instruções que fazem com que uma unidade(s) ou dispositivo(s) de processamento do sistema para execução de uma ou mais funções. O termo componente é destinado a incluir qualquer dispositivo de processamento de dados ou dispositivo de armazenamento, tais como registradores de status de controle ou qualquer outro dispositivo capaz de processar e armazenar dados.
[0058] O sistema 100 geralmente pode incluir múltiplas unidades de processamento ou dispositivos que podem incluir um ou mais processadores (por exemplo, microprocessadores ou unidades de processamento central (CPUs)), unidades de processamento gráfico (GPUs), circuitos integrados específicos de aplicação (ASICs), ou uma combinação de processadores diferentes. Em modalidades alternativas, o sistema 100 pode cada um incluir outro recurso / dispositivo
Petição 870190070717, de 24/07/2019, pág. 40/99
22/52 de computação (por exemplo, servidores baseados em nuvem) que proveja opções de processamento adicionais para execução de computações relacionadas a funções de rastreamento de hardware descritas neste relatório descritivo.
[0059] As unidades ou os dispositivos de processamento ainda podem incluir uma ou mais unidades de memória ou bancos de memória (por exemplo, registradores / contadores). Em algumas implementações, as unidades de processamento executam instruções programadas armazenadas em memória para dispositivos de sistema 100 para execução de uma ou mais funções descritas neste relatório descritivo. As unidades / os bancos de memória podem incluir um ou mais meios de armazenamento que podem ser lidos em máquina não transitórios. O meio de armazenamento legível por máquina não transitório pode incluir uma memória de estado sólido, um disco magnético e um disco ótico, uma memória de acesso aleatório (RAM), uma memória apenas de leitura (ROM), uma memória apenas de leitura programável apagável (por exemplo, uma EPROM, uma EEPROM ou uma memória flash), ou qualquer outro meio tangível capaz de armazenar uma informação.
[0060] A Figura 2 ilustra um diagrama de blocos de cadeias de rastreamento e respectivos nós de exemplo 200, 201 usados para um rastreamento de hardware distribuído executado pelo sistema 100. Em algumas implementações, os nós 200, 201 do sistema 100 podem ser nós diferentes em um único processador de núcleo múltiplo. Em outras implementações, o nó 200 pode ser um primeiro nó em um primeiro chip de processador de núcleo múltiplo e o nó 201 pode ser um segundo nó em um segundo chip de processador de núcleo múltiplo.
Petição 870190070717, de 24/07/2019, pág. 41/99
23/52 [0061] Embora dois nós sejam descritos na implementação da Figura 2, em implementações alternativas, o sistema 100 pode incluir múltiplos nós. Para implementações envolvendo múltiplos nós, transferências de dados de nó cruzado podem gerar dados de rastreamento em saltos intermediários ao longo de um percurso de dados de exemplo que atravessam múltiplos nós. Por exemplo, saltos intermediários podem corresponder a transferências de dados que passam através de nós distintos em um percurso de transferência de dados em particular. Em alguns casos, os dados de rastreamento associados a rastreamentos de ICI / eventos de hardware podem ser gerados para um ou mais saltos intermediários que ocorrem durante transferências de dados de nó cruzado que passam através de um ou mais nós.
[0062] Em algumas implementações, o nó 0 e o nó 1 são nós de tensores usados para computações vetorizadas associadas a porções de código de programa para inferência de cargas de trabalho. Conforme usado neste relatório descritivo, um tensor é um objeto geométrico multidimensional e objetos geométricos multidimensionais de exemplo incluem matrizes e arranjos de dados.
[0063] Conforme mostrado na implementação da Figura 2, o nó 200 inclui uma cadeia de rastreamento 203 que interage com pelo menos um subconjunto dos componentes do sistema 100. Da mesma forma, o nó 201 inclui uma cadeia de rastreamento 205 que interage com pelo menos um subconjunto dos componentes de sistema 100. Em algumas implementações, os nós 200, 201 são nós de exemplo do mesmo subconjunto de componentes, enquanto, em outras implementações, os nós 200, 201 são respectivos nós de subconjuntos de componente
Petição 870190070717, de 24/07/2019, pág. 42/99
24/52 distintos. Um roteador de dados / ICI 112 inclui uma cadeia de rastreamento 207 que geralmente converge com as cadeias de rastreamento 203 e 205 para a provisão de dados de rastreamento para um gerenciador de chip 216.
[0064] Na implementação da Figura 2, os nós 200, 201 podem incluir, cada um, respectivos subconjuntos de componente tendo pelo menos o FPC 104, o SPC 106, a estrutura de nó 110 e o HIB 114. Cada componente dos nós 200, 201 inclui um ou mais multiplexadores de rastreamento configurados para agrupamento de pontos de rastreamento (descritos abaixo) gerados por um componente em particular do nó. O FPC 104 inclui um multiplexador de rastreamento 204, a estrutura de nó 110 inclui os multiplexadores de rastreamento 210a/b, o SPC 106 inclui multiplexadores de rastreamento 206a/b/c/d, o HIB 214 inclui o multiplexador de rastreamento 214, e a ICI 112 inclui o multiplexador de rastreamento 212. Em algumas implementações, um registrador de controle de rastreamento para cada multiplexador de rastreamento permite que múltiplos pontos de rastreamento sejam habilitados e desabilitados. Em alguns casos, para um ou mais multiplexadores de rastreamento, seus registradores de controle de rastreamento podem incluir bits de habilitação individuais, bem como controles de multiplexador de rastreamento mais amplos.
[0065] Em geral, os registradores de controle de rastreamento podem ser registradores de controle de status convencionais (CSR) que recebem e armazenam dados e instrução de rastreamento. Com referência a controles de multiplexador de rastreamento mais amplos em algumas implementações, um rastreamento pode ser habilitado e desabilitado com base em
Petição 870190070717, de 24/07/2019, pág. 43/99
25/52 escritas de CSR executadas pelo sistema 100. Em algumas implementações, um rastreamento pode ser dinamicamente começado e parado pelo sistema 100, com base no valor de um contador de tempo global (GTC), o valor de um registrador de marca de rastreamento de exemplo no FPC 104 (ou no núcleo 116), ou com base no valor de uma marca de intervalo no SPC 106.
[0066] Os detalhes e descrições relativos a sistemas de computação e métodos implementados em computador para se começar e parar dinamicamente uma atividade de rastreamento, bem como para uma coleção de evento de hardware sincronizada são descritos no Pedido de Patente U.S. N° 15/472.932 relacionado, intitulado Synchronous Hardware Event Collection, depositado em 29 de março de 2017, e Protocolo Legal Número 16113-8129001. A revelação inteira do Pedido de Patente U.S. N° 15/472.932 é expressamente incorporada aqui em sua totalidade.
[0067] Em algumas implementações, para o núcleo 116, o FPC 104 pode usar um parâmetro de controle de rastreamento para a definição de uma janela de rastreamento associada a uma atividade de evento ocorrendo no núcleo 116. O parâmetro de controle de rastreamento permite que a janela de rastreamento seja definida em termos de limites inferiores e superiores para o GTC, bem como limites inferiores e superiores para o registrador de marca de rastreamento.
[0068] Em algumas implementações, o sistema 100 pode incluir funções que permitam uma redução do número de entradas de rastreamento que são geradas, tais como recursos de filtração de evento de rastreamento. Por exemplo, o FPC
104 e o SPC 106 podem incluir, cada um, recursos de filtração
Petição 870190070717, de 24/07/2019, pág. 44/99
26/52 que limitam a taxa na qual cada núcleo ajusta um bit de rastreamento em um descritor de rastreamento gerado de exemplo (descrito abaixo). 0 HIB 114 pode incluir recursos de filtração similares, tal como um limitador de taxa de DMA de exemplo que limita os bits de rastreamento associados a uma captura de certos eventos de rastreamento de DMA. Adicionalmente, o HIB 114 pode incluir controles (por exemplo, através de um bit de habilitação) para limitação de quais enfileiram entradas de rastreamento de DMA de fonte.
[0069] Em algumas implementações, um descritor para uma operação de DMA pode ter um bit de rastreamento que é ajustado por um compilador de exemplo de sistema principal 126. Quando o bit de rastreamento é ajustado, recursos de hardware / botões que determinam e geram dados de rastreamento são usados para se completar um evento de rastreamento de exemplo. Em alguns casos, um bit de rastreamento final no DMA pode ser uma operação lógica de OU entre um bit de rastreamento que é estaticamente inserido pelo compilador e um bit de rastreamento que é determinado dinamicamente por um componente de hardware em particular. Dessa forma, em alguns casos, o bit de rastreamento gerado em compilador pode prover um mecanismo, à parte da filtração, para redução de uma quantidade geral de dados de rastreamento que são gerados.
[0070] Por exemplo, um compilador de sistema principal 126 pode decidir para apenas ajustar bits de rastreamento para uma ou mais operações de DMA remotas (por exemplo, um DMA através de pelo menos dois nós) e liberar bits de rastreamento para uma ou mais operações de DMA locais (por exemplo, um DMA em um nó de tensor em particular, tal como
Petição 870190070717, de 24/07/2019, pág. 45/99
27/52 o nó 200). Desta maneira, uma quantidade de dados de rastreamento que são gerados pode ser reduzida com base na atividade de rastreamento sendo limitada para operações de DMA de nó cruzado (isto é, remotas), ao invés de uma atividade de rastreamento que inclui ambas as operações de DMA de nó cruzado e locais.
[0071] Em algumas implementações, pelo menos um evento de rastreamento iniciado pelo sistema 100 pode ser associado a uma operação de acesso à memória que inclui múltiplas operações intermediárias ocorrendo através do sistema 100. Um descritor (por exemplo, um descritor de MAE) para a operação de acesso à memória pode incluir um bit de rastreamento que faz com que dados associados às múltiplas operações intermediárias sejam armazenados em um ou mais buffers de memória. Assim, o bit de rastreamento pode ser usado para se etiquetarem operações de memória intermediárias e gerar múltiplos eventos de rastreamento em saltos intermediários da operação de DMA conforme os pacotes de dados atravessarem o sistema 100.
[0072] Em algumas implementações, a ICI 112 pode incluir um conjunto de bits de habilitação e um conjunto de filtros de pacote que proveem uma funcionalidade de controle para cada porta de ingresso e egresso de um componente em particular de nó 200, 201. Estes bits de habilitação e filtros de pacote permitem que a ICI 112 habilite e desabilite pontos de rastreamento associados a componentes em particular de nós 200, 201. Além de habilitar e desabilitar pontos de rastreamento, a ICI 112 pode ser configurada para filtrar dados de rastreamento com base em uma fonte de evento, um destino de evento e um tipo de pacote
Petição 870190070717, de 24/07/2019, pág. 46/99
28/52 de evento de rastreamento.
[0073] Em algumas implementações, além de se usarem marcadores de passo, GTC ou marcadores de rastreamento, cada registrador de controle de rastreamento para núcleos de processador 104, 106 e HIB 114 também pode incluir um modo de rastreamento de todo mundo. Este modo de rastreamento de todo mundo pode habilitar um rastreamento através de um chip de processador inteiro a ser controlado por um multiplexador de rastreamento 204 ou um multiplexador de rastreamento 206a. Enquanto no modo de rastreamento de todos os multiplexadores de rastreamento 204 e 206a podem enviar um sinal de controle de rastreamento em janela, que especifica se aquele multiplexador de rastreamento em particular, o multiplexador 204 ou o multiplexador 206a, é uma janela de rastreamento.
[0074] O sinal de controle de rastreamento em janela pode ser emitido ou transmitido universalmente para todos os outros multiplexadores de rastreamento, por exemplo, em um chip de processador ou através de múltiplos chips de processador. A emissão para outros multiplexadores de rastreamento pode fazer com que todo o rastreamento seja habilitado quando o multiplexador 204 ou o multiplexador 206a estiver executando uma atividade de rastreamento. Em algumas implementações, os multiplexadores de rastreamento associados aos núcleos de processador 104, 106 e ao HIB 114, cada um, incluem um registrador de controle de janela de rastreamento que especifica quando e/ou como o sinal de controle de rastreamento de todo mundo é gerado.
[0075] Em algumas implementações, uma atividade de rastreamento em multiplexadores de rastreamento 201a/b e no
Petição 870190070717, de 24/07/2019, pág. 47/99
29/52 multiplexador de rastreamento 212 é geralmente habilitada com base se um bit de rastreamento está ajustado em palavras de dados para operações de DMA ou mensagens de controle que atravessam o roteador de dados / ICI 112. As operações de DMA ou as mensagens de controle podem ser estruturas de dados binários de tamanho fixo que podem ter um bit de rastreamento no conjunto de pacotes de dados binários com base em certas circunstâncias ou condições de software.
[0076] Por exemplo, quando uma operação de DMA é iniciada em FPC 104 (ou SPC 106) com uma instrução de DMA de tipo de rastreamento e o iniciador (núcleos de processador 104 ou 106) está em uma janela de rastreamento, o bit de rastreamento será ajustado naquele DMA em particular. Em um outro exemplo, para o FPC 104, as mensagens de controle para escritas de dados para um outro componente no sistema 100 terão o bit de rastreamento ajustado, se o FPC 104 estiver em uma janela de rastreamento, e um ponto de rastreamento que faz com que dados de rastreamento sejam armazenados é habilitado.
[0077] Em algumas implementações, operações de DMA de comprimento zero proveem um exemplo de uma implementação de DMA mais ampla no sistema 100. Por exemplo, algumas operações de DMA podem produzir uma atividade de não DMA no sistema 100. A execução da atividade de não DMA também pode ser rastreada (por exemplo, gerar dados de rastreamento), como se a atividade de não DMA fosse uma operação de DMA (por exemplo, uma atividade de DMA incluindo operações de comprimento não nulo). Por exemplo, uma operação de DMA iniciada em uma localização de fonte, mas sem quaisquer dados (por exemplo, de comprimento zero) a serem enviados ou
Petição 870190070717, de 24/07/2019, pág. 48/99
30/52 transferidos poderia enviar, ao invés disso, uma mensagem de controle para a localização de destino. A mensagem de controle indicará que não haverá dados a serem recebidos, ou com que trabalhar, no destino, e a mensagem de controle em si seria rastreada pelo sistema 100 como uma operação de não DMA de comprimento nulo seria rastreada.
[0078] Em alguns casos, para o SPC 106, operações de DMA de comprimento zero podem gerar uma mensagem de controle, e um bit de rastreamento associado à mensagem é ajustado apenas se o DMA tivesse tido o bit de rastreamento ajustado, isto é, caso a mensagem de controle não tivesse um comprimento nulo. Em geral, operações de DMA iniciadas a partir do sistema principal 126 terão o bit de rastreamento ajustado se HIB 114 estiver em uma janela de rastreamento.
[0079] Na implementação da Figura 2, a cadeia de rastreamento 203 recebe dados de entrada de rastreamento para o subconjunto de componente que se alinha com o nó 0, enquanto a cadeia de rastreamento 205 recebe dados de entrada de rastreamento para o subconjunto de componente que se alinha com o nó 1. Cada cadeia de rastreamento 203, 205, 207 é de percursos de comunicação de dados distintos usados pelos respectivos nós 200, 201 e ICI 112 para a provisão de dados de entrada de rastreamento para um registro de dados de entrada de rastreamento de exemplo 218 de um gerenciador de chip 216. Assim, o ponto de fim de cadeias de rastreamento 203, 205, 207 é um gerenciador de chip 216, em que os eventos de rastreamento podem ser armazenados em unidades de memória de exemplo.
[0080] Em algumas implementações, pelo menos uma unidade de memória de gerenciador de chip 216 pode ser de 128 bits
Petição 870190070717, de 24/07/2019, pág. 49/99
31/52 de largura e pode ter uma profundidade de memória de pelo menos 20.000 entradas de rastreamento. Em implementações alternativas, pelo menos uma unidade de memória pode ter uma largura em bit maior ou menor e pode ter uma profundidade de memória capaz de armazenar mais ou menos entradas.
[0081] Em algumas modalidades, o gerenciador de chip 216 pode incluir pelo menos um dispositivo de processamento executando instruções para o gerenciamento de dados de entrada de rastreamento. Por exemplo, o gerenciador de chip 216 pode executar instruções para varredura / análise de dados de marca de tempo para respectivos eventos de hardware de dados de rastreamento recebidos através das cadeias de rastreamento 203, 205, 207. Com base na análise, o gerenciador de chip 216 pode preencher o registro de entrada de rastreamento 218 para incluir dados que podem ser usados para identificação (ou geração) de uma sequência ordenada no tempo de eventos de rastreamento de hardware. Os eventos de rastreamento hardware podem corresponder a um movimento de pacotes de dados ocorrendo no nível de componente e subcomponente, quando unidades de processamento de sistema 100 executarem um programa de software distribuído de exemplo.
[0082] Em algumas implementações, as unidades de hardware de sistema 100 podem gerar entradas de rastreamento (e marcas de tempo correspondentes) que preenchem um buffer de rastreamento de hardware de exemplo de uma maneira não ordenada no tempo (isto é, fora de ordem) . Por exemplo, o gerenciador de chip 216 pode fazer com que múltiplas entradas de rastreamento, tendo marcas de tempo geradas, sejam inseridas no registro de entrada de rastreamento 218. As
Petição 870190070717, de 24/07/2019, pág. 50/99
32/52 respectivas entradas de rastreamento das múltiplas entradas de rastreamento inseridas podem não ser ordenadas no tempo umas em relação às outras. Nesta implementação, as entradas de rastreamento não ordenadas no tempo podem ser recebidas por um buffer principal de exemplo de sistema principal 126. Mediante o recebimento pelo buffer principal, o sistema principal 126 pode executar instruções relativas ao software de análise / monitoramento de desempenho para escanear / analisar dados de marca de tempo para as respectivas entradas de rastreamento. As instruções executadas podem ser usadas para se classificarem as entradas de rastreamento e para a construção / geração de uma linha de tempo de eventos de rastreamento de hardware.
[0083] Em algumas implementações, as entradas de rastreamento podem ser removidas do registro de entrada 218 durante uma sessão de rastreamento através de uma operação de DMA principal. Em alguns casos, o sistema principal 126 pode não tirar as entradas de DMA do registro de entrada de rastreamento 218 tão rapidamente quanto elas são adicionadas ao registro. Em outras implementações, um registro de entrada 218 pode incluir uma profundidade de memória pré-definida. Se o limite de profundidade de memória de registro de entrada 218 for atingido, entradas de rastreamento adicionais poderão ser perdidas. De modo a se controlar quais entradas de rastreamento são perdidas, o registro de entrada 218 pode operar em um modo de primeiro-a-entrar-primeiro-a-sair (FIFO), ou, alternativamente, em um modo de gravação de sobrescrita.
[0084] Em algumas implementações, o modo de gravação de sobrescrita pode ser usado pelo sistema 100 para suporte de
Petição 870190070717, de 24/07/2019, pág. 51/99
33/52 uma análise de desempenho associada a uma resolução de recursos post-mortem. Por exemplo, um código de programa pode ser executado por um certo procedimento com atividade de rastreamento habilitada e modo de gravação de sobrescrita habilitado. Em resposta a um evento de software post-mortem (por exemplo, uma falha fatal de programa) no sistema 100, um software de monitoramento executado pelo sistema principal 126 pode analisar o conteúdo de dados de um buffer de rastreamento de hardware de exemplo para se ganhar um insight nos eventos de hardware que ocorreram antes da falha catastrófica do programa. Conforme usado neste relatório descritivo, uma resolução de erros post-mortem se refere a uma análise ou resolução de erros de código de programa após o código ter tido falha fatal ou ter geralmente falhado em executar / operar como pretendido.
[0085] Em modo FIFO, se o registro de entrada 218 estiver cheio, e se o sistema principal 126 de fato remover entradas de registro salvas em um certo quadro de tempo, para conservação de recursos de memória, novas entradas de rastreamento podem não ser salvas em uma unidade de memória de gerenciador de chip 216. Enquanto no modo de gravação de sobrescrita, se o registro de entrada 218 estiver cheio porque o sistema principal 126 não remove entradas de registro salvas em um certo quadro de tempo, para conservação de recursos de memória, novas entradas de rastreamento podem se sobrescrever na entrada de rastreamento mais antiga armazenada no registro de entrada 218. Em algumas implementações, as entradas de rastreamento são movidas para uma memória de sistema principal 126 em resposta a uma operação de DMA usando recursos de processamento de HIB 114.
Petição 870190070717, de 24/07/2019, pág. 52/99
34/52 [0086] Conforme usado neste relatório descritivo, um ponto de rastreamento é o gerador de uma entrada de rastreamento e dados associados à entrada de rastreamento recebida pelo gerenciador de chip 216 e armazenados no registro de entrada de rastreamento 218. Em algumas implementações, um microchip de processador de nó múltiplo e núcleo múltiplo pode incluir três cadeias de rastreamento no chip, de modo que uma primeira cadeia de rastreamento receba entradas de rastreamento a partir de um nó de chip 0, uma segunda cadeia de rastreamento recebe entradas de rastreamento a partir de um nó de chip 1, e uma terceira cadeia de rastreamento receba entradas de rastreamento a partir de um roteador de ICI do chip.
[0087] Cada ponto de rastreamento tem um número de
identificação de rastreamento único em sua cadeia de
rastreamento, que ele insere no cabeçalho da entrada de
rastreamento. Em algumas implementações, cada entrada de
rastreamento identifica a cadeia de rastreamento que originou a partir de um cabeçalho indicado por um ou mais bytes/bits de palavra de dados. Por exemplo, cada entrada de rastreamento pode incluir uma estrutura de dados que tem formatos de campos definidos (por exemplo, cabeçalho, carga útil, etc.) que transmitem informação a respeito de um evento de rastreamento particular. Cada campo em uma entrada de rastreamento corresponde a dados úteis aplicáveis para o ponto de rastreamento que gerou uma entrada de rastreamento.
[0088] Conforme indicado acima, cada entrada de rastreamento pode ser escrita em, ou armazenadas em, uma unidade de memória do gerenciador de chip 216 associada ao registro de entrada de rastreamento 218. Em algumas
Petição 870190070717, de 24/07/2019, pág. 53/99
35/52 implementações, pontos de rastreamento podem ser habilitados ou desabilitados individualmente e pontos múltiplos de rastreamento podem gerar um mesmo tipo de rastreamento embora com diferentes identificadores de ponto de rastreamento.
[0089] Em algumas implementações, cada entrada de rastreamento pode incluir um nome de rastreamento, uma descrição de rastreamento e um cabeçalho que identifica codificações para campos em particular e/ou uma coleção de campos na entrada de rastreamento. O nome, a descrição e o cabeçalho coletivamente proveem uma descrição do que a entrada de rastreamento representa. Da perspectiva do gerenciador de chip 216, esta descrição também pode identificar a cadeia de rastreamento 203, 205, 207 em particular em que uma entrada de rastreamento específica veio em um chip de processador em particular. Assim, os campos em uma entrada de rastreamento representam pedaços de dados (por exemplo, em bytes/bits) relevantes para a descrição e podem ser um identificador de entrada de rastreamento usado para se determinar qual ponto de rastreamento gerou uma entrada de rastreamento em particular.
[0090] Em algumas implementações, os dados de entrada de rastreamento associados a um ou mais dos eventos de hardware armazenados podem corresponder, em parte, a comunicações de dados que ocorrem: a) entre pelo menos um nó 0 e um nó 1; b) entre pelo menos componentes no nó 0; e c) entre pelo menos componentes no nó 1. Por exemplo, eventos de hardware armazenados podem corresponder, em parte, a comunicações de dados que ocorrem entre pelo menos um dentre: 1) o FPC 104 de nó 0 e o FPC 104 de nó 1; o FPC 104 de nó 0 e o SPC 106
Petição 870190070717, de 24/07/2019, pág. 54/99
36/52 de nó 0; 2) o SPC 106 de nó 1 e o SPC 106 de nó 1.
[0091] A Figura 3 ilustra um diagrama de blocos de uma arquitetura de projeto de multiplexador de rastreamento de exemplo 300 e uma estrutura de dados de exemplo 320. O projeto de multiplexador de rastreamento 300 geralmente inclui uma entrada de barramento de rastreamento 302, um árbitro de barramento 304 e um árbitro de ponto de rastreamento local 306, um barramento FIFO 308 e pelo menos uma fila de evento de rastreamento local 310, um evento de rastreamento compartilhado FIFO 312 e uma saída de barramento de rastreamento 314.
[0092] O projeto de multiplexador 300 corresponde a um multiplexador de rastreamento de exemplo disposto em um componente de sistema 100. O projeto de multiplexador 300 pode incluir a funcionalidade a seguir. A entrada de barramento 302 pode se relacionar a dados de ponto de rastreamento que são temporariamente armazenados no barramento FIFO 308 até que uma lógica de arbitragem de tempo (por exemplo, o árbitro 304) possa fazer com que os dados de rastreamento sejam postos em uma cadeia de rastreamento de exemplo. Um ou mais pontos de rastreamento para um componente podem inserir dados de evento de rastreamento em pelo menos uma fila de evento de rastreamento local 310. O árbitro 306 provê uma arbitragem de primeiro nível e habilita uma seleção de eventos dentre os eventos de rastreamento locais na fila 310. Os eventos selecionados são postos em um evento de rastreamento compartilhado FIFO 312, o que funciona como uma fila de armazenamento.
[0093] O árbitro 304 provê uma arbitragem de segundo nível que recebe eventos de rastreamento locais a partir da
Petição 870190070717, de 24/07/2019, pág. 55/99
37/52 fila FIFO 312 e mescla os eventos de rastreamento locais em uma operação de acesso à memória 203, 205, 207 em particular através da saída de barramento de rastreamento 314. Em algumas implementações, as entradas de rastreamento podem ser empurradas para filas locais 310 mais rapidamente do que elas podem ser mescladas para a FIFO compartilhada 312, ou, alternativamente, entradas de rastreamento podem ser empurradas na FIFO compartilhada 312 mais rapidamente do que pode ser mesclada no barramento de rastreamento 314. Quando estes cenários ocorrem, as respectivas filas 310 e 312 tornar-se-ão cheias com dados de rastreamento.
[0094] Em algumas implementações, quando a fila 310 ou 312 se torna cheia com dados de rastreamento, o sistema 100 pode ser configurado de modo que as novas entradas de rastreamento sejam abandonadas e não armazenadas em ou mescladas a uma fila em particular. Em outras implementações, ao invés de abandonar entradas de rastreamento quando certas filas se completam (por exemplo, filas 310, 312), o sistema 100 pode ser configurado para adiar um encadeamento de processamento exemplo até as filas que estiverem cheias mais uma vez tenham espaço de fila disponível para receberem entradas.
[0095] Por exemplo, um encadeamento de processamento que usa filas 310, 312 pode ser parado até um número suficiente ou de limite de entradas de rastreamento ser mesclado no barramento de rastreamento 314. O número suficiente ou limite pode corresponder a um número em particular de entradas de rastreamento mescladas que resultam em um espaço de fila disponível para uma ou mais entradas de rastreamento a serem recebidas pelas filas 310, 312. As implementações nas quais
Petição 870190070717, de 24/07/2019, pág. 56/99
38/52 os encadeamentos de processamento são parados, até um espaço de fila a jusante se tornar disponível, podem prover dados de rastreamento de fidelidade mais alta com base em certas entradas de rastreamento sendo retidas ao invés de abandonadas.
[0096] Em algumas implementações, as filas de rastreamento locais são tão amplas quanto requerido pela entrada de rastreamento, de modo que cada entrada de rastreamento tome apenas um lugar na fila local 310. Contudo, uma fila FIFO de rastreamento compartilhada 312 pode usar uma única codificação de linha de entrada de rastreamento de modo que algumas entradas de rastreamento possam ocupar duas localizações na fila compartilhada 312. Em algumas implementações, quando quaisquer dados de um pacote de rastreamento são abandonados, o pacote inteiro é abandonado, de modo que nenhum pacote parcial apareça no registro de entrada de rastreamento 218.
[0097] Em geral, um rastreamento é uma linha de tempo de atividades ou eventos de hardware associados a um componente em particular de sistema 100. Diferentemente de contadores de desempenho (descritos abaixo), os quais são dados agregados, os rastreamentos contêm dados de evento detalhados que proveem um insight em uma atividade de hardware ocorrendo durante uma janela de rastreamento especificada. O sistema de hardware descrito permite um suporte extensivo para um rastreamento de hardware distribuído, incluindo a geração de entradas de rastreamento, armazenamento temporário de entradas de rastreamento em um buffer gerenciado de hardware, uma habilitação estática e dinâmica de um ou mais tipos de
Petição 870190070717, de 24/07/2019, pág. 57/99
39/52 rastreamento e uma transmissão continua de dados de entrada de rastreamento para o sistema principal 126.
[0098] Em algumas implementações, os rastreamentos podem ser gerados para eventos de hardware executados por componentes de sistema 100, tais como geração de uma operação de DMA, execução de uma operação de DMA, emissão / execução de certas instruções, ou atualização de sync flags. Em alguns casos, uma atividade de rastreamento pode ser usada para o rastreamento de DMAs através do sistema, ou para o acompanhamento de instruções em execução em um núcleo de processador em particular.
[0099] O sistema 100 pode ser configurado para a geração de pelo menos uma estrutura de dados 320 que identifica um ou mais eventos de hardware 322, 324 a partir de uma linha de tempo de eventos de hardware. Em algumas implementações, a estrutura de dados 320 arranja um ou mais eventos de hardware 322, 324 em uma sequência ordenada no tempo de eventos que são associados a pelo menos um FPC 104 e um SPC 106. Em alguns casos, o sistema 100 pode armazenar uma estrutura de dados 320 em um banco de memória de um dispositivo de controle principal de sistema principal 126. A estrutura de dados 320 pode ser usada para avaliação do desempenho de um código de programa executado por pelo menos os núcleos de processador 104 e 106.
[0100] Conforme mostrado pelos eventos de hardware 324, em algumas implementações, um número de identificação (ID) de rastreamento em particular (por exemplo, ID de rastreamento Ό03) pode ser associado a múltiplos eventos de hardware que ocorrem através das unidades de processador distribuidas. Os múltiplos eventos de hardware podem
Petição 870190070717, de 24/07/2019, pág. 58/99
40/52 corresponder a uma operação de acesso à memória em particular (por exemplo, uma DMA), e o número de ID de rastreamento em particular é usado para correlação de um ou mais eventos de hardware.
[0101] Por exemplo, conforme indicado pelo evento 324, um ID de rastreamento único para uma operação de DMA pode incluir múltiplos intervalos de tempo correspondentes a múltiplos pontos diferentes no DMA. Em alguns casos, ID de rastreamento '003 pode ter um evento emitido, um evento executado e um evento completado que são identificados como sendo algum tempo espaçados em relação a cada outro. Dessa forma, neste sentido, o ID de rastreamento pode ser adicionalmente usado para a determinação de um atributo de latência da operação de acesso à memória com base na correlação e com referência aos intervalos de tempo.
[0102] Em algumas implementações, a geração da estrutura de dados 320 pode incluir, por exemplo, o sistema 100 comparando marcas de tempo de evento de respectivos eventos em um primeiro subconjunto de eventos de hardware com marcas de tempo de evento de respectivos eventos em um segundo subconjunto de eventos de hardware. A geração da estrutura de dados 320 ainda pode incluir o sistema 100 provendo, para apresentação na estrutura de dados, um conjunto correlacionado de eventos de hardware com base, em parte, na comparação entre o primeiro subconjunto de eventos e o segundo subconjunto de eventos.
[0103] Conforme mostrado na Figura 3, a estrutura de dados 320 pode identificar pelo menos um parâmetro que indica um atributo de latência de um evento de hardware em particular 322, 324. O atributo de latência pode indicar
Petição 870190070717, de 24/07/2019, pág. 59/99
41/52 pelo menos uma duração do evento de hardware em particular. Em algumas implementações, a estrutura de dados 320 é gerada por instruções de software executadas por um dispositivo de controle de sistema principal 126. Em alguns casos, a estrutura 320 pode ser gerada em resposta ao dispositivo de controle armazenando dados de entrada de rastreamento para um disco / uma unidade de memória de sistema principal 126.
[0104] A Figura 4 é um diagrama de blocos 400 que indica uma atividade de rastreamento de exemplo para um evento de rastreamento de acesso à memória direto (DMA) executado pelo sistema 100. Para um rastreamento de DMA, os dados para uma operação de DMA de exemplo se originando a partir de um primeiro nó de processador para um segundo nó de processador podem se deslocar através da ICI 112 e podem gerar saltos de ICI / roteador intermediários ao longo do percurso de dados. A operação de DMA gerará entradas de rastreamento em cada nó em um chip de processador, e ao longo de cada salto, conforme a operação de DMA atravessar a ICI 112. Uma informação é capturada por cada uma destas entradas de rastreamento geradas para a reconstrução de uma progressão temporal das operações de DMA ao longo dos nós e saltos.
[0105] Uma operação de DMA de exemplo pode ser associada às etapas de processo descritas na implementação da Figura 4. Para esta operação, um DMA local transfere dados de uma memória virtual 402 (vmem 402) associada a pelo menos um dos núcleos de processador 104, 106 à HBM 108. A numeração descrita no diagrama 400 corresponde às etapas da tabela 404 e geralmente representa atividades na estrutura de nó 110 ou atividades iniciadas pela estrutura de nó 110.
[0106] As etapas da tabela 404 geralmente descrevem
Petição 870190070717, de 24/07/2019, pág. 60/99
42/52 pontos de rastreamento associados. A operação de exemplo gerará seis entradas de rastreamento para este DMA. A etapa um inclui a requisição de DMA inicial a partir do núcleo de processador para a estrutura de nó 110, o que gera um ponto de rastreamento na estrutura de nó. A etapa dois inclui um comando de leitura em que a estrutura de nó 110 pede ao núcleo de processador para transferir dados que geram um outro ponto de rastreamento na estrutura de nó 110. A operação de exemplo não tem uma entrada de rastreamento para a etapa três quando vmem 402 completar uma leitura de estrutura de nó 110.
[0107] A etapa quatro inclui a estrutura de nó 110 executando uma atualização de recurso de leitura para fazer uma atualização de sync flag no núcleo de processador que gera um ponto de rastreamento no núcleo de processador. A etapa cinco inclui um comando de escrita no qual a estrutura de nó 110 notifica o multiplexador de memória 108 de dados por virem para serem escritos na HBM. A notificação através do comando de escrita gera um ponto de rastreamento na estrutura de nó 110, enquanto, na etapa seis, a conclusão da escrita na HBM também gera um ponto de rastreamento na estrutura de nó 110. Na etapa sete, a estrutura de nó 110 executa uma atualização de recurso de escrita para causar uma atualização de sync flag no núcleo de processador, o que gera um ponto de rastreamento no núcleo de processador (por exemplo, no FPC 104) . Além da atualização de recurso de escrita, a estrutura de nó 110 pode executar uma atualização de reconhecimento (atualização ACK), em que uma conclusão de dados para a operação de DMA é sinalizada de volta para o núcleo de processador. A atualização ACK pode gerar
Petição 870190070717, de 24/07/2019, pág. 61/99
43/52 entradas de rastreamento que são similares às entradas de rastreamento geradas pela atualização de recurso de escrita.
[0108] Em uma outra operação de DMA de exemplo, uma primeira entrada de rastreamento é gerada quando uma instrução de DMA é emitida em uma estrutura de nó 110 do nó de origem. Entradas de rastreamento adicionais podem ser geradas na estrutura de nó 110 para a captura do tempo usado para leitura de dados para o DMA e escrita dos dados em filas saindo. Em algumas implementações, a estrutura de nó 110 pode empacotar dados de DMA em fragmentos menores de dados. Para dados empacotados em fragmentos menores, as entradas de rastreamento de leitura e escrita podem ser produzidas para um primeiro fragmento de dados e um último fragmento de dados. Opcionalmente, além dos primeiro e último fragmentos de dados, todos os fragmentos de dados podem ser ajustados para a geração de entradas de rastreamento.
[0109] Para operações de DMA remotas / não locais que podem requerer saltos de ICI, o primeiro fragmento de dados e o último fragmento de dados podem gerar entradas de rastreamento adicionais em pontos de ingresso e egresso em cada salto intermediário ao longo de uma ICI / um roteador 112. Quando dados de DMA chegam em um nó de destino, entradas de rastreamento similares às entradas prévias de estrutura de nó 110 são geradas (por exemplo, leitura / escrita de primeiro e último fragmentos de dados) no nó de destino. Em algumas implementações, uma etapa final da operação de DMA pode incluir instruções executadas associadas ao DMA causando uma atualização para um flag de sync no nó de destino. Quando o flag de sync é atualizado, uma entrada de rastreamento pode ser gerada indicando a conclusão da
Petição 870190070717, de 24/07/2019, pág. 62/99
44/52 operação de DMA.
[0110] Em algumas implementações, um rastreamento de DMA é iniciado por FPC 104, SPC 106 ou HIB 114, quando em cada componente estiver em um modo de rastreamento, de modo que os pontos de rastreamento possam ser executados. Os componentes do sistema 100 podem entrar no modo de rastreamento com base em controles globais no FPC 104 ou no SPC 10 6 através de um mecanismo de gatilho. Os pontos de rastreamento disparam em resposta à ocorrência de uma ação especifica ou condição associada a uma execução de código de programa pelos componentes do sistema 100. Por exemplo, as porções do código de programa podem incluir funções de gatilho embutidas que são detectáveis por pelo menos um componente de hardware do sistema 100.
[0111] Os componentes do sistema 100 podem ser configurados para a detecção de uma função de gatilho associada a porções de código de programa executadas por pelo menos um dentre o FPC 104 ou o SPC 106. Em alguns casos, a função de gatilho pode corresponder a pelo menos um dentre: 1) uma etapa de sequência em particular em uma porção ou um módulo do código de programa executado; ou 2) um parâmetro de tempo em particular indicado pelo GTC usado pelas unidades de processador distribuídas do sistema 100.
[0112] Em resposta à detecção da função de gatilho, um componente em particular de sistema 100 pode iniciar, disparar ou executar pelo menos um ponto de rastreamento (por exemplo, um evento de rastreamento) que faz com que dados de entrada de rastreamento associados a um ou mais eventos de hardware sejam armazenados em pelo menos um buffer de memória do componente de hardware. Conforme citado acima,
Petição 870190070717, de 24/07/2019, pág. 63/99
45/52 os dados de rastreamento armazenados podem ser providos, então, para o gerenciador de chip 216 por meio de pelo menos uma cadeia de rastreamento 203, 205, 207.
[0113] A Figura 5 é um fluxograma de processo de um processo de exemplo 500 para um rastreamento de hardware distribuído usando-se recursos de componentes de sistema 100 e um ou mais nós 200, 201 de sistema 100. Assim, o processo 500 pode ser implementado usando-se um ou mais dos recursos de computação mencionados acima de sistemas 100 incluindo os nós 200, 201.
[0114] O processo 500 começa no bloco 502 e inclui o sistema de computação 100 monitorando a execução de um código de programa executado por um ou mais componentes de processador (incluindo pelo menos o FPC 104 e o SPC 106). Em algumas implementações, a execução de um código de programa que gera atividades de rastreamento pode ser monitorada, pelo menos em parte, por múltiplos sistemas principais ou subsistemas de um único sistema principal. Dessa forma, nestas implementações, o sistema 100 pode executar múltiplos processos 500 com relação a uma análise de atividades de rastreamento para eventos de hardware ocorrendo através de unidades de processamento distribuídos.
[0115] Em algumas implementações, um primeiro componente de processador é configurado para execução de pelo menos uma primeira porção do código de programa que é monitorado. No bloco 504, o processo 500 inclui o sistema de computação 100 monitorando a execução de um código de programa executado por um segundo componente de processador. Em algumas implementações, o segundo componente de processador é configurado para executar pelo menos uma segunda porção do
Petição 870190070717, de 24/07/2019, pág. 64/99
46/52 código de programa que é monitorado.
[0116] Os componentes de sistema de computação 100 podem incluir, cada um, pelo menos um buffer de memória. O bloco 506 de processo 500 inclui o sistema 100 armazenando dados identificando um ou mais eventos de hardware em pelo menos um buffer de memória de um componente em particular. Em algumas implementações, os eventos de hardware ocorrem através de unidades de processador distribuídas que incluem pelo menos um primeiro componente de processador e o segundo componente de processador. Os dados armazenados identificando os eventos de hardware podem incluir, cada um, uma marca de tempo de evento de hardware e metadados caracterizando o evento de hardware. Em algumas implementações, uma coleção de eventos de hardware corresponde a eventos de linha de tempo.
[0117] Por exemplo, o sistema 100 pode armazenar dados identificando um ou mais eventos de hardware que correspondem, em parte, a um movimento de pacotes de dados entre um componente de hardware de fonte no sistema 100 e um componente de hardware de destino no sistema 100. Em algumas implementações, os metadados armazenados caracterizando o evento de hardware podem corresponder a pelo menos um dentre: 1) um endereço de memória de fonte, 2) um endereço de memória de destino, 3) um número de identificação de rastreamento único com relação à entrada de rastreamento que faz com que o evento de hardware seja armazenado, ou 4) um parâmetro de tamanho associado a uma entrada de rastreamento de acesso à memória direto (DMA).
[0118] Em algumas implementações, o armazenamento de dados que identificam uma coleção de eventos de hardware
Petição 870190070717, de 24/07/2019, pág. 65/99
47/52 inclui o armazenamento de dados de evento em um buffer de memória de FPC 104 e/ou SPC 106 que corresponde, por exemplo, a pelo menos uma fila de evento de rastreamento local 310. Os dados de evento armazenados podem indicar subconjuntos de dados de evento de hardware que podem ser usados para a geração de uma linha de tempo maior de eventos de hardware. Em algumas implementações, o armazenamento de dados de evento ocorre em resposta a pelo menos um dentre o FPC 104 ou o SPC 106 executando instruções de rastreamento de hardware associadas a porções de um código de programa executado por componentes do sistema 100.
[0119] No bloco 508 do processo 500, o sistema 100 gera uma estrutura de dados, tal como a estrutura 320, que identifica um ou mais eventos de hardware a partir da coleção de eventos de hardware. A estrutura de dados pode arranjar um ou mais eventos de hardware em uma sequência ordenada no tempo de eventos que são associados a pelo menos um dentre o primeiro componente de processador e o segundo componente de processador. Em algumas implementações, a estrutura de dados identifica uma marca de tempo de evento de hardware para um evento de rastreamento em particular, um endereço de fonte associado ao evento de rastreamento, ou um endereço de memória associado ao evento de rastreamento.
[0120] No bloco 510 do processo 500, o sistema 100 armazena a estrutura de dados gerada em um banco de memória de um dispositivo principal associado ao sistema principal 126. Em algumas implementações, a estrutura de dados armazenada pode ser usada pelo sistema principal 126 para análise de um desempenho do código de programa executado por pelo menos um dentre o primeiro componente de processador ou
Petição 870190070717, de 24/07/2019, pág. 66/99
48/52 o segundo componente de processador. Da mesma forma, a estrutura de dados armazenada pode ser usada pelo sistema principal 126 para análise de desempenho de pelo menos um componente de sistema 100.
[0121] Por exemplo, o usuário ou o sistema principal 126 pode analisar a estrutura de dados para detectar ou determinar se há um problema de recurso associado a uma execução de um módulo de software em particular no código de programa. Um problema de exemplo pode incluir o módulo de software não completando a execução em uma janela de tempo de execução alocada.
[0122] Ainda, o usuário ou o sistema principal 126 pode detectar ou determinar se um componente em particular de sistema 100 está operando acima ou abaixo de um nivel de desempenho de limite. Um problema de exemplo relativo a desempenho de componente pode incluir um componente de hardware em particular executando certos eventos, mas gerando dados de resultado que estão fora de faixas de parâmetro aceitáveis para dados de resultado. Em algumas implementações, os dados de resultado podem não ser consistentes com os dados de resultado gerados por outros componentes relacionados de sistema 100 que executam operações substancialmente similares.
[0123] Por exemplo, durante a execução do código de programa, um primeiro componente de sistema 100 pode ser requerido para se completar uma operação e gerar um resultado. Da mesma forma, um segundo componente de sistema 100 pode ser requerido para se completar uma operação substancialmente similar e gerar um resultado substancialmente similar. Uma análise da estrutura de dados
Petição 870190070717, de 24/07/2019, pág. 67/99
49/52 gerada pode indicar que o segundo componente gerou um resultado que é drasticamente diferente do resultado gerado pelo primeiro componente. Da mesma forma, a estrutura de dados pode indicar um valor de parâmetro de resultado do segundo componente que é notadamente fora de uma faixa de parâmetros de resultado aceitáveis. Estes resultados provavelmente podem indicar um problema de desempenho potencial com o segundo componente de sistema 100.
[0124] As modalidades do assunto e as operações funcionais descritas neste relatório descritivo podem ser implementadas em um circuito eletrônico digital, em um software ou firmware de computador concretizado de forma tangível, em um hardware de computador, incluindo as estruturas expostas neste relatório descritivo e seus equivalentes estruturais, ou em combinações de um ou mais deles. As modalidades do assunto descrito neste relatório descritivo podem ser implementadas como um ou mais programas de computador, isto é, um ou mais módulos de instruções de programa de computador codificadas em um portador de programa não transitório tangível para execução por, ou para controle da operação de, um aparelho de processamento de dados. De forma alternativa ou adicional, as instruções de programa podem ser codificadas em um sinal propagado gerado artificialmente, por exemplo, um sinal elétrico, ótico ou eletromagnético gerado em máquina, o qual é gerado para codificação de uma informação para transmissão para um aparelho receptor adequado para execução por um aparelho de processamento de dados. O meio de armazenamento em computador pode ser um dispositivo de armazenamento legível por máquina, um substrato de armazenamento que legível por máquina, um
Petição 870190070717, de 24/07/2019, pág. 68/99
50/52 dispositivo de memória de acesso aleatório ou em série, ou uma combinação de um ou mais deles.
[0125] Os processos e fluxos lógicos descritos neste relatório descritivo podem ser executados por um ou mais computadores programáveis executando um ou mais programas de computador para execução de funções pela operação em dados de entrada e geração de saída(s). Os processos e fluxos lógicos também podem ser executados por, e um aparelho também pode ser implementado como, um circuito lógico de finalidade especial, por exemplo, um FPGA (arranjo de porta programável no campo), um ASIC (circuito integrado específico de aplicação) ou uma GPGPU (unidade de processamento de gráficos de finalidade geral).
[0126] Os computadores adequados para a execução de um programa de computador incluem, a título de exemplo, podem ser baseados em microprocessadores de finalidade geral ou especial, ou ambos, ou qualquer outro tipo de unidade de processamento central. Geralmente, uma unidade de processamento central receberá instruções e dados a partir de uma memória apenas de leitura ou de uma memória de acesso aleatório ou ambas. Os elementos essenciais de um computador são uma unidade de processamento central para realização ou execução de instruções e um ou mais dispositivos de memória para armazenamento de instruções e dados. Geralmente, um computador também incluirá ou será operativamente acoplado para receber dados a partir de, ou transferir dados para, ou ambos, um ou mais dispositivos de armazenamento de massa para armazenamento de dados, por exemplo, discos magnéticos, magnéticos-óticos ou discos óticos. Contudo, um computador não precisa ter esses dispositivos.
Petição 870190070717, de 24/07/2019, pág. 69/99
51/52 [0127] Os meios que podem ser lidos em computador adequados para armazenamento de instruções de programa de computador e dados incluem todas as formas de memória não volátil, mídia e dispositivos de memória, incluindo, a título de exemplo, dispositivos de memória de semicondutor, por exemplo, uma EPROM, uma EEPROM e dispositivos de memória flash; discos magnéticos, por exemplo, discos rígidos internos ou discos removíveis. O processador e a memória podem ser suplementados por ou incorporados em um circuito lógico de finalidade especial.
[0128] Embora este relatório descritivo contenha muitos detalhes específicos de implementação, estes não devem ser construídos como limitações no escopo de qualquer invenção ou do que pode ser reivindicado, mas, ao invés disso, como descrições de recursos que podem ser específicos para modalidades particulares de invenções em particular. Certos recursos que são descritos neste relatório descritivo no contexto de modalidades separadas também podem ser implementados em combinação em uma única modalidade. Inversamente, vários recursos que são descritos no contexto de uma modalidade única também podem ser implementados em múltiplas modalidades separadamente ou em qualquer subcombinação adequada. Além disso, embora recursos possam ser descritos acima como atuando em certas combinações e mesmo inicialmente reivindicados como tal, um ou mais recursos de uma combinação reivindicada podem ser removidos em alguns casos da combinação, e a combinação reivindicada pode ser dirigida para uma subcombinação ou variação de uma subcombinação.
[0129] De modo similar, embora as operações sejam
Petição 870190070717, de 24/07/2019, pág. 70/99
52/52 descritas nos desenhos em uma ordem em particular, isto não deve ser entendido como requerendo que essas operações sejam realizadas na ordem em particular mostrada ou em ordem sequencial, ou que todas as operações ilustradas sejam executadas, para a obtenção dos resultados desejáveis. Em certas circunstâncias, uma execução de multitarefa ou um processamento em paralelo pode ser vantajoso. Além disso, a separação de vários módulos de sistema e componentes nas modalidades descritas acima não deve ser entendida como requerendo essa separação em todas as modalidades, e deve ser entendido que os componentes de programa descritos e sistemas podem geralmente ser integrados em conjunto em um único produto de software ou empacotados em múltiplos produtos de software.
[0130] As modalidades em particular do assunto foram descritas. Outras modalidades estão no escopo das reivindicações a seguir. Por exemplo, as ações recitadas nas reivindicações podem ser executadas em uma ordem diferente e ainda obterem resultados desejáveis. Como um exemplo, os processos descritos nas Figuras associadas não necessariamente requerem a ordem em particular mostrada, ou ordem sequencial, para se obterem resultados desejáveis. Em certas implementações, processamento multitarefa ou em paralelo pode ser vantajoso.

Claims (20)

  1. REIVINDICAÇÕES
    1. Método implementado em computador executado por um sistema de computação que tem um ou mais processadores, o método caracterizado pelo fato de compreender:
    o monitoramento da execução de um código de programa por um primeiro componente de processador, o primeiro componente de processador sendo configurado para executar pelo menos uma primeira porção do código de programa;
    o monitoramento da execução do código de programa por um segundo componente de processador, o segundo componente de processador sendo configurado para executar pelo menos uma segunda porção do código de programa;
    o armazenamento, pelo sistema de computação, de dados identificando um ou mais eventos de hardware ocorrendo através de unidades de processador que incluem o primeiro componente de processador e o segundo componente de processador, cada evento de hardware representando pelo menos uma dentre comunicações de dados associadas a uma operação de acesso à memória do código de programa, uma instrução emitida do código de programa ou uma instrução executada do código de programa, em que os dados identificando cada um de um ou mais eventos de hardware compreendem uma marca de tempo de evento de hardware e metadados caracterizando o evento de hardware;
    a geração, pelo sistema de computação, de uma estrutura de dados que identifica o um ou mais eventos de hardware, a estrutura de dados sendo configurada para arranjar um ou mais eventos de hardware em uma sequência ordenada no tempo de eventos que estão associados com pelo menos o primeiro componente de processador e o segundo componente de
    Petição 870190070717, de 24/07/2019, pág. 72/99
  2. 2/11 processador; e o armazenamento, pelo sistema de computação, da estrutura de dados gerada em um banco de memória de um dispositivo principal.
    2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de ainda compreender:
    a detecção, pelo sistema de computação, de uma função de gatilho associada a porções de um código de programa sendo executadas por pelo menos um dentre o primeiro componente de processador ou o segundo componente de processador; e em resposta à detecção da função de gatilho, a iniciação, pelo sistema de computação, de pelo menos um evento de rastreamento que faz com que dados associados a um ou mais eventos de hardware sejam armazenados em pelo menos um buffer de memória.
  3. 3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de a função de gatilho corresponder a pelo menos um dentre uma etapa de sequência em particular no código de programa ou um parâmetro de tempo em particular indicado por um relógio de tempo global usado pelas unidades de processador; e em que a iniciação de pelo menos um evento de rastreamento compreende a determinação de que um bit de rastreamento é ajustado para um valor em particular, o pelo menos um evento de rastreamento sendo associado a uma operação de acesso à memória incluindo múltiplas operações intermediárias que ocorrem através das unidades de processador, e em que dados associados às múltiplas operações intermediárias são armazenados em um ou mais buffers de memória em resposta a uma determinação que o bit de
    Petição 870190070717, de 24/07/2019, pág. 73/99
    3/11 rastreamento é ajustado para o valor em particular.
  4. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o armazenamento de dados identificando um ou mais eventos de hardware ainda compreende:
    o armazenamento, em um primeiro buffer de memória do primeiro componente de processador, de um primeiro subconjunto de dados identificando eventos de hardware do um ou mais eventos de hardware, em que o armazenamento ocorre em resposta ao primeiro componente de processador que executa uma instrução de rastreamento de hardware associada a pelo menos a primeira porção do código de programa.
  5. 5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de o armazenamento de dados identificando um ou mais eventos de hardware ainda compreender:
    o armazenamento em um segundo buffer de memória do segundo componente de processador, um segundo subconjunto de dados identificando eventos de hardware de um ou mais eventos de hardware, em que o armazenamento ocorre em resposta ao segundo componente de processador que executa uma instrução de rastreamento de hardware associada a pelo menos a segunda porção do código de programa.
  6. 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de a geração da estrutura de dados ainda compreender:
    a comparação, pelo sistema de computação, de pelo menos marcas de tempo de evento de hardware de respectivos eventos no primeiro conjunto de dados identificando eventos de hardware com pelo menos marcas de tempo de evento de hardware de respectivos eventos no segundo subconjunto de dados identificando eventos de hardware; e
    Petição 870190070717, de 24/07/2019, pág. 74/99
    4/11 a provisão, pelo sistema de computação e para apresentação na estrutura de dados, de um conjunto correlacionado de eventos de hardware com base, em parte, na comparação entre os respectivos eventos no primeiro subconjunto e os respectivos eventos no segundo subconjunto.
  7. 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de a estrutura de dados gerada identificar pelo menos um parâmetro que indica um atributo de latência de um evento de hardware em particular, o atributo de latência indicando pelo menos uma duração do evento de hardware em particular.
  8. 8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de pelo menos um processador do sistema de computação ser um processador de nó múltiplo e núcleo múltiplo tendo um ou mais componentes de processador, e um ou mais eventos de hardware corresponderem, em parte, a transferências de dados que ocorrem entre pelo menos o primeiro componente de processador de um primeiro nó e o segundo componente de processador de um segundo nó.
  9. 9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de o primeiro componente de processador e o segundo componente de processador serem um dentre: um processador, um núcleo de processador, um mecanismo de acesso à memória, ou um recurso de hardware do sistema de computação, e em que um ou mais eventos de hardware correspondem, em parte, a um movimento dos pacotes de dados entre uma fonte e um destino; e em que metadados caracterizando o evento de hardware correspondem a pelo menos um dentre um endereço de memória de fonte, um endereço de memória de destino, um número de
    Petição 870190070717, de 24/07/2019, pág. 75/99
    5/11 identificação de rastreamento único ou um parâmetro de tamanho associado a um rastreamento de acesso à memória direto (DMA).
  10. 10. Sistema de rastreamento de hardware distribuído, caracterizado pelo fato de compreender:
    um ou mais processadores incluindo um ou mais núcleos de processador;
    uma ou mais unidades de armazenamento legiveis por máquina para armazenamento de instruções que são executáveis por um ou mais processadores para execução de operações compreendendo:
    o monitoramento da execução de um código de programa por um primeiro componente de processador, o primeiro componente de processador sendo configurado para executar pelo menos uma primeira porção do código de programa;
    o monitoramento da execução do código de programa por um segundo componente de processador, o segundo componente de processador sendo configurado para executar pelo menos uma segunda porção do código de programa;
    o armazenamento, pelo sistema de computação, de dados identificando um ou mais eventos de hardware ocorrendo através de unidades de processador que incluem o primeiro componente de processador e o segundo componente de processador, cada evento de hardware representando pelo menos uma dentre comunicações de dados associadas a uma operação de acesso à memória do código de programa, uma instrução emitida do código de programa ou uma instrução executada do código de programa, em que os dados identificando cada um de um ou mais eventos de hardware compreendem uma marca de tempo de evento de hardware e
    Petição 870190070717, de 24/07/2019, pág. 76/99
    6/11 metadados caracterizando o evento de hardware;
    a geração, pelo sistema de computação, de uma estrutura de dados que identifica um ou mais eventos de hardware, a estrutura de dados sendo configurada para arranjar um ou mais eventos de hardware em uma sequência ordenada no tempo de eventos que estão associados a pelo menos o primeiro componente de processador e o segundo componente de processador; e o armazenamento, pelo sistema de computação, da estrutura de dados gerada em um banco de memória de um dispositivo principal.
  11. 11. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 10, caracterizado pelo fato de as operações ainda compreenderem:
    a detecção, pelo sistema de computação, de uma função de gatilho associada a porções de um código de programa sendo executadas por pelo menos um dentre o primeiro componente de processador ou o segundo componente de processador; e em resposta à detecção da função de gatilho, a iniciação, pelo sistema de computação, de pelo menos um evento de rastreamento que faz com que dados associados a um ou mais eventos de hardware sejam armazenados em pelo menos um buffer de memória.
  12. 12. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 11, caracterizado pelo fato de a função de gatilho corresponder a pelo menos um dentre uma etapa de sequência em particular no código de programa ou um parâmetro de tempo em particular indicado por um relógio de tempo global usado pelas unidades de processador; e em que a iniciação de pelo menos um evento de
    Petição 870190070717, de 24/07/2019, pág. 77/99
    7/11 rastreamento compreende a determinação que um bit de rastreamento é ajustado para um valor em particular, o pelo menos um evento de rastreamento sendo associado a uma operação de acesso à memória incluindo múltiplas operações intermediárias que ocorrem através das unidades de processador, e em que dados associados às múltiplas operações intermediárias são armazenados em um ou mais buffers de memória em resposta a uma determinação que o bit de rastreamento é ajustado para o valor em particular.
  13. 13. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 10, caracterizado pelo fato de o armazenamento de dados identificando um ou mais eventos de hardware ainda compreender:
    o armazenamento, em um primeiro buffer de memória do primeiro componente de processador, de um primeiro subconjunto de dados identificando eventos de hardware de um ou mais eventos de hardware, em que o armazenamento ocorre em resposta ao primeiro componente de processador executar uma instrução de rastreamento de hardware associada a pelo menos a primeira porção do código de programa.
  14. 14. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 13, caracterizado pelo fato de o armazenamento de dados identificando um ou mais eventos de hardware ainda compreender:
    o armazenamento em um segundo buffer de memória do segundo componente de processador de um segundo subconjunto de dados identificando eventos de hardware de um ou mais eventos de hardware, em que o armazenamento ocorre em resposta ao segundo componente de processador executar uma instrução de rastreamento de hardware associada a pelo menos
    Petição 870190070717, de 24/07/2019, pág. 78/99
    8/11 a segunda porção do código de programa.
  15. 15. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 14, caracterizado pelo fato de a geração da estrutura de dados ainda compreender:
    a comparação, pelo sistema de computação, de pelo menos marcas de tempo de evento de hardware de respectivos eventos no primeiro conjunto de dados identificando eventos de hardware com pelo menos marcas de tempo de evento de hardware de respectivos eventos no segundo subconjunto de dados identificando eventos de hardware; e a provisão, pelo sistema de computação e para apresentação na estrutura de dados, de um conjunto correlacionado de eventos de hardware com base, em parte, na comparação entre os respectivos eventos no primeiro subconjunto e os respectivos eventos no segundo subconjunto.
  16. 16. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 10, caracterizado pelo fato de a estrutura de dados gerada identificar pelo menos um parâmetro que indica um atributo de latência de um evento de hardware em particular, o atributo de latência indicando pelo menos uma duração do evento de hardware em particular.
  17. 17. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 10, caracterizado pelo fato de pelo menos um processador do sistema de computação ser um processador de nó múltiplo e núcleo múltiplo tendo um ou mais componentes de processador, e o um ou mais eventos de hardware corresponderem, em parte, a comunicações de dados que ocorrem entre pelo menos o primeiro componente de processador de um primeiro nó e o segundo componente de processador de um segundo nó.
    Petição 870190070717, de 24/07/2019, pág. 79/99
    9/11
  18. 18. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 10, caracterizado pelo fato de o primeiro componente de processador e o segundo componente de processador serem um dentre: um processador, um núcleo de processador, um mecanismo de acesso à memória, ou um recurso de hardware do sistema de computação;
    em que um ou mais eventos de hardware correspondem, em parte, a um movimento dos pacotes de dados entre uma fonte e um destino; e em que metadados caracterizando o evento de hardware correspondem a pelo menos um dentre um endereço de memória de fonte, um endereço de memória de destino, um número de identificação (ID) de rastreamento distintiva, ou um parâmetro de tamanho associado a uma requisição de rastreamento de acesso à memória direto.
  19. 19. Sistema de rastreamento de hardware distribuído, de acordo com a reivindicação 18, caracterizado pelo fato de um número (ID) de rastreamento em particular ser associado a múltiplos eventos de hardware que ocorrem através das unidades de processador, e em que os múltiplos eventos de hardware correspondem a uma operação de acesso à memória em particular, e o número de ID de rastreamento em particular é usado para a correlação de um ou mais eventos de hardware dos múltiplos eventos de hardware e é usado para a determinação de um atributo de latência da operação de acesso à memória com base na correlação.
  20. 20. Unidade de armazenamento em computador não transitória, caracterizada pelo fato de ser disposta em um dispositivo de processamento de dados e codificada com um programa de computador, o programa compreendendo instruções
    Petição 870190070717, de 24/07/2019, pág. 80/99
    10/11 que, quando executadas por um ou mais processadores, fazem com que um ou mais processadores executem as operações compreendendo:
    o monitoramento da execução de um código de programa por um primeiro componente de processador, o primeiro componente de processador sendo configurado para executar pelo menos uma primeira porção do código de programa;
    o monitoramento da execução do código de programa por um segundo componente de processador, o segundo componente de processador sendo configurado para executar pelo menos uma segunda porção do código de programa;
    o armazenamento, pelo sistema de computação, de dados identificando um ou mais eventos de hardware ocorrendo através de unidades de processador que incluem o primeiro componente de processador e o segundo componente de processador, cada evento de hardware representando pelo menos uma dentre comunicações de dados associadas a uma operação de acesso à memória do código de programa, uma instrução emitida do código de programa ou uma instrução executada do código de programa, em que os dados identificando cada um de um ou mais eventos de hardware compreendem uma marca de tempo de evento de hardware e metadados caracterizando o evento de hardware;
    a geração, pelo sistema de computação, de uma estrutura de dados que identifica um ou mais eventos de hardware, a estrutura de dados sendo configurada para arranjar um ou mais eventos de hardware em uma sequência ordenada no tempo de eventos que estão associados a pelo menos o primeiro componente de processador e o segundo componente de processador; e
    Petição 870190070717, de 24/07/2019, pág. 81/99
    11/11 o armazenamento, pelo sistema de computação, da estrutura de dados gerada em um banco de memória de um dispositivo principal.
BR112019015271-7A 2017-03-29 2017-10-20 Método implementado em computador, sistema de rastreamento de hardware distribuído e unidade de armazenamento. BR112019015271B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/473,101 2017-03-29
US15/473,101 US9875167B1 (en) 2017-03-29 2017-03-29 Distributed hardware tracing
PCT/US2017/057619 WO2018182782A1 (en) 2017-03-29 2017-10-20 Distributed hardware tracing

Publications (2)

Publication Number Publication Date
BR112019015271A2 true BR112019015271A2 (pt) 2020-04-14
BR112019015271B1 BR112019015271B1 (pt) 2021-06-15

Family

ID=60269931

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019015271-7A BR112019015271B1 (pt) 2017-03-29 2017-10-20 Método implementado em computador, sistema de rastreamento de hardware distribuído e unidade de armazenamento.

Country Status (13)

Country Link
US (5) US9875167B1 (pt)
EP (2) EP3382551B1 (pt)
JP (3) JP6845338B2 (pt)
KR (4) KR102464845B1 (pt)
CN (3) CN108694112B (pt)
BR (1) BR112019015271B1 (pt)
DE (2) DE102017125481A1 (pt)
DK (1) DK3382551T3 (pt)
FI (1) FI3382551T3 (pt)
GB (1) GB2561042B (pt)
SG (1) SG10202104613UA (pt)
TW (4) TWI741287B (pt)
WO (1) WO2018182782A1 (pt)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9111072B1 (en) * 2011-08-23 2015-08-18 Tectonic Labs, LLC Anti-reverse engineering unified process
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10255109B2 (en) 2017-04-17 2019-04-09 Intel Corporation High bandwidth connection between processor dies
US10466986B2 (en) 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
CN109446024A (zh) * 2018-10-16 2019-03-08 杭州绿湾网络科技有限公司 应用监控方法及装置
US11082493B2 (en) * 2018-11-16 2021-08-03 Arm Limited Distributed memory system, device and process
CN111291240B (zh) * 2018-12-06 2023-12-08 华为技术有限公司 处理数据的方法和数据处理装置
CN109981349B (zh) * 2019-02-27 2022-02-25 华为云计算技术有限公司 调用链信息查询方法以及设备
US11068378B2 (en) * 2019-04-11 2021-07-20 Microsoft Technology Licensing, Llc Memory value exposure in time-travel debugging traces
CN110046116B (zh) * 2019-04-23 2020-08-21 上海燧原智能科技有限公司 一种张量填充方法、装置、设备及存储介质
US11860897B2 (en) 2019-06-07 2024-01-02 Samsung Electronics Co., Ltd. Method for using catch-up logging to time-synchronize object stores during maintenance or recovery operations
US11231987B1 (en) * 2019-06-28 2022-01-25 Amazon Technologies, Inc. Debugging of memory operations
CN110351131B (zh) * 2019-06-28 2022-04-05 北京奇才天下科技有限公司 一种用于分布式链路的监控方法、装置和电子设备
US11513939B2 (en) * 2019-08-02 2022-11-29 EMC IP Holding Company LLC Multi-core I/O trace analysis
US11409634B2 (en) * 2019-11-14 2022-08-09 Cisco Technology, Inc. Retroactive tracing in a distributed system
US11145389B2 (en) * 2019-12-03 2021-10-12 Intel Corporation Detection and error-handling of high error rate blocks during copyback
KR102267920B1 (ko) * 2020-03-13 2021-06-21 성재모 매트릭스 연산 방법 및 그 장치
US11875247B1 (en) * 2020-06-18 2024-01-16 Amazon Technologies, Inc. Input batching with serial dynamic memory access
WO2023084748A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
WO2023084749A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
WO2023084750A1 (ja) * 2021-11-12 2023-05-19 日本電信電話株式会社 コンピュータシステムおよびその制御方法
US11798654B1 (en) * 2022-07-28 2023-10-24 The Florida International University Board Of Trustees Systems and methods for matching mass spectrometry data with a peptide database

Family Cites Families (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1040970A (en) 1912-06-05 1912-10-08 Henry G Voight Door controlling and locking means.
US4598364A (en) * 1983-06-29 1986-07-01 International Business Machines Corporation Efficient trace method adaptable to multiprocessors
JPH0283749A (ja) * 1988-09-21 1990-03-23 Hitachi Ltd マイクロプロセッサの内部割込み制御方式
JPH04148439A (ja) * 1990-10-12 1992-05-21 Nec Corp 情報処理装置のトレース方式
JPH04242455A (ja) * 1991-01-16 1992-08-31 Nec Ibaraki Ltd プロセッサ間通信トレース回路
JPH05128079A (ja) * 1991-10-31 1993-05-25 Nec Corp マルチプロセツサシステムにおけるトレース方式
JPH07200352A (ja) * 1993-12-28 1995-08-04 Hitachi Ltd データプロセッサ、プログラム翻訳方法、及びデバッグツール
US6128415A (en) 1996-09-06 2000-10-03 Polaroid Corporation Device profiles for use in a digital image processing system
US5682328A (en) * 1996-09-11 1997-10-28 Bbn Corporation Centralized computer event data logging system
US5796939A (en) 1997-03-10 1998-08-18 Digital Equipment Corporation High frequency sampling of processor performance counters
US6189140B1 (en) * 1997-04-08 2001-02-13 Advanced Micro Devices, Inc. Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6233531B1 (en) * 1997-12-19 2001-05-15 Advanced Micro Devices, Inc. Apparatus and method for monitoring the performance of a microprocessor
US6098169A (en) * 1997-12-23 2000-08-01 Intel Corporation Thread performance analysis by monitoring processor performance event registers at thread switch
US6134676A (en) * 1998-04-30 2000-10-17 International Business Machines Corporation Programmable hardware event monitoring method
US6353924B1 (en) * 1999-02-08 2002-03-05 Incert Software Corporation Method for back tracing program execution
JP2000348007A (ja) 1999-06-03 2000-12-15 Nec Corp マルチプロセッサシステムのための動作トレース時刻同期方式およびその方法
US6530076B1 (en) * 1999-12-23 2003-03-04 Bull Hn Information Systems Inc. Data processing system processor dynamic selection of internal signal tracing
US6789182B1 (en) * 2000-11-13 2004-09-07 Kevin Jay Brothers System and method for logging computer event data and physical components of a complex distributed system
US6813731B2 (en) * 2001-02-26 2004-11-02 Emc Corporation Methods and apparatus for accessing trace data
US6769054B1 (en) * 2001-02-26 2004-07-27 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
US6988155B2 (en) * 2001-10-01 2006-01-17 International Business Machines Corporation Aggregation of hardware events in multi-node systems
US7080283B1 (en) * 2002-10-15 2006-07-18 Tensilica, Inc. Simultaneous real-time trace and debug for multiple processing core systems on a chip
JP2005165825A (ja) * 2003-12-04 2005-06-23 Canon Inc トレース情報記録装置
US7529979B2 (en) * 2003-12-12 2009-05-05 International Business Machines Corporation Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control
US20060005083A1 (en) 2004-06-30 2006-01-05 International Business Machines Corporation Performance count tracing
GB0420442D0 (en) 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US7543161B2 (en) * 2004-09-30 2009-06-02 International Business Machines Corporation Method and apparatus for tracking variable speed microprocessor performance caused by power management in a logically partitioned data processing system
US7673050B2 (en) * 2004-12-17 2010-03-02 Microsoft Corporation System and method for optimizing server resources while providing interaction with documents accessible through the server
JP2006318412A (ja) * 2005-05-16 2006-11-24 Toshiba Corp 半導体装置
JP2008234191A (ja) 2007-03-19 2008-10-02 Toshiba Corp ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
US8762951B1 (en) 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US20110246521A1 (en) 2007-08-06 2011-10-06 Hui Luo System and method for discovering image quality information related to diagnostic imaging performance
JP4658182B2 (ja) * 2007-11-28 2011-03-23 株式会社荏原製作所 研磨パッドのプロファイル測定方法
US20100083237A1 (en) 2008-09-26 2010-04-01 Arm Limited Reducing trace overheads by modifying trace operations
US8301759B2 (en) * 2008-10-24 2012-10-30 Microsoft Corporation Monitoring agent programs in a distributed computing platform
JPWO2010097875A1 (ja) * 2009-02-24 2012-08-30 パナソニック株式会社 データ処理装置、方法
JP5326708B2 (ja) 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8572581B2 (en) * 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
JP5266385B2 (ja) 2009-06-10 2013-08-21 パナソニック株式会社 トレース処理装置およびトレース処理システム
US8554892B2 (en) * 2009-06-22 2013-10-08 Citrix Systems, Inc. Systems and methods for n-core statistics aggregation
US8407528B2 (en) * 2009-06-30 2013-03-26 Texas Instruments Incorporated Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems
JP2011013867A (ja) 2009-06-30 2011-01-20 Panasonic Corp データ処理装置、性能評価解析システム
US20110047358A1 (en) 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US8495604B2 (en) 2009-12-30 2013-07-23 International Business Machines Corporation Dynamically distribute a multi-dimensional work set across a multi-core system
GB2478328B (en) 2010-03-03 2015-07-01 Advanced Risc Mach Ltd Method, apparatus and trace module for generating timestamps
JP2011243110A (ja) * 2010-05-20 2011-12-01 Renesas Electronics Corp 情報処理装置
US8607202B2 (en) * 2010-06-04 2013-12-10 Lsi Corporation Real-time profiling in a multi-core architecture
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
US20120179898A1 (en) 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
US8943248B2 (en) 2011-03-02 2015-01-27 Texas Instruments Incorporated Method and system for handling discarded and merged events when monitoring a system bus
US8706937B2 (en) * 2011-03-02 2014-04-22 Texas Instruments Incorporated Method and system of debugging multicore bus transaction problems
US20120226839A1 (en) * 2011-03-02 2012-09-06 Texas Instruments Incorporated Method and System for Monitoring and Debugging Access to a Bus Slave Using One or More Throughput Counters
US10642709B2 (en) 2011-04-19 2020-05-05 Microsoft Technology Licensing, Llc Processor cache tracing
US8683268B2 (en) * 2011-06-20 2014-03-25 International Business Machines Corporation Key based cluster log coalescing
US8713370B2 (en) 2011-08-11 2014-04-29 Apple Inc. Non-intrusive processor tracing
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US9237082B2 (en) * 2012-03-26 2016-01-12 Hewlett Packard Enterprise Development Lp Packet descriptor trace indicators
US9021311B2 (en) 2012-08-28 2015-04-28 Freescale Semiconductor, Inc. Method and apparatus for filtering trace information
US9645870B2 (en) * 2013-06-27 2017-05-09 Atmel Corporation System for debugging DMA system data transfer
EP3028175A1 (en) * 2013-07-31 2016-06-08 Hewlett Packard Enterprise Development LP Log analysis
JP6122749B2 (ja) 2013-09-30 2017-04-26 ルネサスエレクトロニクス株式会社 コンピュータシステム
TWI514145B (zh) * 2013-10-21 2015-12-21 Univ Nat Sun Yat Sen 可儲存除錯資料的處理器、其快取及控制方法
US9684583B2 (en) 2013-11-05 2017-06-20 Texas Instruments Incorporated Trace data export to remote memory using memory mapped write transactions
JP6258159B2 (ja) 2014-08-26 2018-01-10 株式会社東芝 プログラム情報生成システム、方法、及びプログラム
US20160070636A1 (en) * 2014-09-04 2016-03-10 Home Box Office, Inc. Conditional wrapper for program object
EP3035249B1 (en) * 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
CN106033385A (zh) * 2015-03-19 2016-10-19 启碁科技股份有限公司 用于追踪程序执行状态的方法与多核心处理系统
WO2016175852A1 (en) 2015-04-30 2016-11-03 Hewlett Packard Enterprise Development Lp Memory module error tracking
US20160378636A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Software-Initiated Trace Integrated with Hardware Trace
CN105354136B (zh) 2015-09-25 2018-06-15 华为技术有限公司 一种调试方法、多核处理器和调试设备
US9858167B2 (en) * 2015-12-17 2018-01-02 Intel Corporation Monitoring the operation of a processor
US20170371761A1 (en) * 2016-06-24 2017-12-28 Advanced Micro Devices, Inc. Real-time performance tracking using dynamic compilation
US9965375B2 (en) * 2016-06-28 2018-05-08 Intel Corporation Virtualizing precise event based sampling
US10175980B2 (en) 2016-10-27 2019-01-08 Google Llc Neural network compute tile
US9959498B1 (en) 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10127283B2 (en) * 2016-10-31 2018-11-13 International Business Machines Corporation Projecting effect of in-flight streamed data on a relational database
US9875167B1 (en) 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
KR101988558B1 (ko) 2017-06-07 2019-06-12 현대오트론 주식회사 멀티 코어를 갖는 마이크로콘트롤러 유닛을 감시하는 감시장치 및 그것의 동작 방법

Also Published As

Publication number Publication date
JP2020512612A (ja) 2020-04-23
US10324817B2 (en) 2019-06-18
FI3382551T3 (fi) 2023-12-07
KR20210089791A (ko) 2021-07-16
CN108694112B (zh) 2021-08-20
JP6845338B2 (ja) 2021-03-17
KR20220153112A (ko) 2022-11-17
TWI741287B (zh) 2021-10-01
KR102521959B1 (ko) 2023-04-13
KR102277867B1 (ko) 2021-07-14
US10990494B2 (en) 2021-04-27
TW201935254A (zh) 2019-09-01
TW202203041A (zh) 2022-01-16
US20210248052A1 (en) 2021-08-12
EP4287026A3 (en) 2024-03-20
JP2021108129A (ja) 2021-07-29
JP2023082040A (ja) 2023-06-13
KR102365640B1 (ko) 2022-02-18
CN113778785A (zh) 2021-12-10
US10896110B2 (en) 2021-01-19
US11650895B2 (en) 2023-05-16
KR20220025262A (ko) 2022-03-03
US20200065206A1 (en) 2020-02-27
TWI661306B (zh) 2019-06-01
TW201837719A (zh) 2018-10-16
US9875167B1 (en) 2018-01-23
CN108694112A (zh) 2018-10-23
TW202336599A (zh) 2023-09-16
GB2561042A (en) 2018-10-03
DE102017125481A1 (de) 2018-10-04
KR20190095458A (ko) 2019-08-14
KR102464845B1 (ko) 2022-11-07
SG10202104613UA (en) 2021-06-29
DK3382551T3 (da) 2023-12-04
EP3382551A1 (en) 2018-10-03
EP4287026A2 (en) 2023-12-06
US20180285226A1 (en) 2018-10-04
EP3382551B1 (en) 2023-09-06
TWI805000B (zh) 2023-06-11
CN208766643U (zh) 2019-04-19
WO2018182782A1 (en) 2018-10-04
DE202017106613U1 (de) 2018-02-15
GB201717923D0 (en) 2017-12-13
GB2561042B (en) 2019-06-26
BR112019015271B1 (pt) 2021-06-15
TWI817920B (zh) 2023-10-01
JP7250832B2 (ja) 2023-04-03
US20190332509A1 (en) 2019-10-31

Similar Documents

Publication Publication Date Title
BR112019015271A2 (pt) rastreamento de hardware distribuído
JP7427759B2 (ja) 同期するハードウェアイベント収集

Legal Events

Date Code Title Description
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 20/10/2017, OBSERVADAS AS CONDICOES LEGAIS.