BR112014022763B1 - Equipamento, método e suporte físico para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado - Google Patents

Equipamento, método e suporte físico para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado Download PDF

Info

Publication number
BR112014022763B1
BR112014022763B1 BR112014022763-2A BR112014022763A BR112014022763B1 BR 112014022763 B1 BR112014022763 B1 BR 112014022763B1 BR 112014022763 A BR112014022763 A BR 112014022763A BR 112014022763 B1 BR112014022763 B1 BR 112014022763B1
Authority
BR
Brazil
Prior art keywords
instruction
runtime instrumentation
controls
runtime
riccb
Prior art date
Application number
BR112014022763-2A
Other languages
English (en)
Other versions
BR112014022763A2 (pt
Inventor
Mark S. Farrell
Charles W. Gainey Jr.
Chung-Lung Kevin Shum
Timothy J. Slegel
Original Assignee
International Business Machines Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BR112014022763A2 publication Critical patent/BR112014022763A2/pt
Publication of BR112014022763B1 publication Critical patent/BR112014022763B1/pt

Links

Images

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/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

EQUIPAMENTO, MÉTODO E PRODUTO DE PROGRAMA DE COMPUTADOR PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO. Concretizações da invenção referem-se à modificação de controles de instrumentação do tempo de execução (MRIC) a partir de um estado menos privilegiado. A instrução MRIC é buscada. A instrução MRIC inclui o endereço de um bloco de controle de instrumentação do tempo de execução (RICCB). O RICCB é buscado com base no endereço incluído na instrução MRIC. O RICCB inclui valores para a modificação de um subconjunto de controles de instrumentação do tempo de execução do processador. O subconjunto de controles de instrumentação do tempo de execução inclui um endereço atual de buffer (memória intermediária) de programa de instrumentação do tempo de execução (RCA) de um local de buffer de programa de instrumentação do tempo de execução (RIB). O RIB contém informação da instrumentação do tempo de execução dos eventos reconhecidos pelo processador durante a execução do programa. Os valores do RICCB são carregados para os controles de instrumentação do tempo de execução. Informação do evento é fornecida ao RIB com base nos valores que foram carregados para o controle de instrumentação do tempo (...).

Description

01. A presente invenção refere-se de modo amplo ao processamento dentro de um ambiente de computação, e mais especificamente, para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado.
Antecedentes da Técnica
02. Processadores de computador executam programas, ou fluxos de instrução utilizando lógica cache de instrução de e previsão de desvios cada vez mais complexas. Estes processos foram introduzidos para aumentar o rendimento da instrução, e, portanto, o desempenho de processamento. A introdução da lógica para melhorar o desempenho torna difícil prever com certeza como uma determinada aplicação de software será executada no processador do computador. Durante o processo de desenvolvimento do software frequentemente há um equilíbrio entre a funcionalidade e desempenho. O software é executado em um ou mais níveis de abstração a partir do hardware subjacente que está executando o software. Quando o hardware é virtualizado, uma camada adicional de abstração é introduzida. Com a introdução da lógica de melhoramento de desempenho, e as várias camadas de abstração, é difícil se ter uma compreensão completa do que está realmente acontecendo no nível do hardware quando um programa está em execução. Sem essas informações, os desenvolvedores de software usam métodos mais abstratos, como duração da execução, uso de memória, número de linhas de execução, etc., para otimizar a aplicação de software.
Sumário da Invenção Problema técnico
03. Quando a informação específica de hardware está disponível, normalmente é fornecida a um desenvolvedor após o fato e é fornecida de forma agregada, a um nível elevado, e/ou intercalada com a atividade de outros programas, e o sistema operacional, o que torna difícil identificar os problemas que podem estar afetando a eficiência e precisão da aplicação de software.
Solução para o problema
04. As concretizações incluem um método, sistema/equipamento e produto de programa de computador para modificação de controles de instrumentação do tempo de execução (MRIC) a partir de um estado menos privilegiado. A instrução MRIC é buscada. A instrução MRIC inclui o endereço de um bloco de controle de instrumentação do tempo de execução (RICCB). O RICCB é buscado com base no endereço incluído na instrução MRIC. O RICCB inclui valores para a modificação de um subconjunto de controles de instrumentação do tempo de execução do processador. O subconjunto de controles de instrumentação do tempo de execução inclui um endereço atual de buffer de programa de instrumentação do tempo de execução (RCA) de um local de buffer de programa de instrumentação do tempo de execução (RIB). O RIB contém informações de instrumentação do tempo de execução dos eventos reconhecidos pelo processador durante a execução do programa. Os valores do RICCB são carregados para os controles de instrumentação do tempo de execução. Informação do evento é fornecida para o RIB com base nos valores que foram carregados para o controle de instrumentação do tempo de execução.
05. Características e vantagens adicionais são realizadas através das técnicas da presente invenção. Outros aspectos e concretizações da invenção são descritos em detalhe aqui e são considerados como parte da invenção reivindicada. Para uma melhor compreensão da invenção, com vantagens e características, consulte a descrição e os desenhos.
06. O assunto que é considerado como a invenção é particularmente salientado e reivindicado distintamente nas reivindicações. Os previamente mencionados e outros atributos, e vantagens da invenção são evidentes a partir da seguinte descrição detalhada considerada conjuntamente com os desenhos que as acompanham, nos quais:
Breve Descrição dos Desenhos
07. A FIG. 1A é um diagrama que representa um exemplo de sistema ou equipamento de computador hospedeiro em uma concretização;
08. A FIG. 1B é um diagrama que representa um exemplo de sistema de computador hospedeiro de emulação em uma concretização;
09. A FIG. 1C é um diagrama que representa um exemplo de equipamento/sistema de computador em uma concretização;
010. A FIG. 2 é um diagrama que representa um exemplo de rede de computadores, em uma concretização;
011. A FIG. 3 é um diagrama que representa elementos de um sistema de computador em uma concretização;
012. A FIG. 4A representa elementos detalhados de um sistema de computador em uma concretização;
013. A FIG. 4B representa elementos detalhados de um sistema de computador em uma concretização;
014. A FIG. 4C representa elementos detalhados de um sistema de computador em uma concretização;
015. A FIG. 5 representa um diagrama esquemático de um sistema para instrumentação do tempo de execução de um processador em conformidade com uma concretização;
016. A FIG. 6 representa uma instrução de modificação de controles de instrumentação do tempo de execução (MRIC) em uma concretização;
017. A FIG. 7 representa um fluxo de processo para iniciar uma instrução MRIC a partir de um programa de estado menos privilegiado em uma concretização;
018. A FIG. 8 representa um fluxo de processo para iniciar uma instrução MRIC a partir de um programa de estado menos privilegiado em uma concretização adicional;
019. A FIG. 9 representa uma porção de um bloco de controle de controles de instrumentação do tempo de execução (RICCB) incluindo controles que são configuráveis por um estado privilegiado em uma concretização;
020. A FIG. 10 representa uma porção de um bloco de controle RICCB quando o bit semi-privilegiado (K) é configurado como 1 em uma concretização;
021. A FIG. 11 representa uma parte de um bloco de controle RICCB quando o bit semi-privilegiado (K) é configurado como 0 em uma concretização;
022. A FIG. 12 representa um grupo de relatório de acordo com uma concretização; e
023. A FIG. 13 ilustra um produto programa de computador em uma concretização.
Descrição das concretizações
024. Uma concretização da presente invenção é um sistema, método e produto programa de computador para a atualização de um subconjunto de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado. Em uma concretização, um programa de estado menos privilegiado é permitido a modificar a maioria ou todos os controles de instrumentação do tempo de execução com base na validade dos controles de instrumentação do tempo de execução atuais, o estado atual dos controles de instrumentação do tempo de execução, e com base numa bandeira (K), indicando que a configuração a partir de estado menos privilegiado é permitida. O programa de estado menos privilegiado executa uma instrução de modificação de controles de instrumentação do tempo de execução (MRIC) para atualizar os controles de instrumentação do tempo de execução. Embora a instrução MRIC permita a atualização de um grande número de controles de instrumentação do tempo de execução, com base nas configurações de permissão dos controles de instrumentação do tempo de execução, a maioria dos controles de instrumentação do tempo de execução pode ser atualizada pelo programa de estado menos privilegiado utilizando a instrução MRIC.
025. A Fig. 1A, ilustra os componentes representativos de um sistema de computador hospedeiro 50 em uma concretização. Outros arranjos de componentes também podem ser empregados em um sistema de computador. O sistema de computador hospedeiro representativo 50 compreende um ou mais processadores 1 em comunicação com o armazenamento principal (memória do computador) 2 assim como as interfaces de Entrada/Saída (I/O) para dispositivos de armazenamento 11 e redes 10 para comunicação com outros computadores ou SANs (Rede de área de armazenamento) e semelhantes. O processador 1 é compatível com uma arquitetura que tem um conjunto de instrução arquitetada e funcionalidade arquitetada. O processador 1 pode ter a tradução de endereços dinâmica (DAT) 3 para transformar endereços do programa (endereços virtuais) em um endereço real na memória. A DAT 3 tipicamente inclui uma memória associativa (Translation Lookaside Buffer - TLB) 7 para armazenamento em cache de traduções para que os futuros acessos ao bloco de memória de computador 2 não exijam o atraso da tradução de endereços. Normalmente um cache 9 é empregado entre a memória do computador 2 e o processador 1. O cache 9 pode ser hierárquico tendo um grande cache disponível para mais de uma CPU e, caches menores e mais velozes (nível inferior) entre o cache grande e cada CPU. Em algumas concretizações, os caches de nível inferior são divididos para fornecer caches de nível inferior separados para acessos de dados e busca de instruções.
026. Em uma concretização, uma instrução é buscada a partir da memória do computador 2 por uma unidade de busca de instrução 4 através do cache do 9. A instrução é decodificada em uma unidade de decodificação de instrução 6 e despachada (com outras instruções em algumas concretizações) para unidades de execução de instrução 8.
027. Tipicamente várias unidades de execução de instrução 8 são empregadas, por exemplo, uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução da instrução de desvio. A instrução é executada pela unidade de execução de instrução 8, acessando operandos a partir de registradores especificados pela instrução ou da memória do computador 2, conforme necessário.
028. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória do computador 2, a unidade de armazenamento de carregamento 5 tipicamente processa o acesso sob o controle da instrução sendo executada. As instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
029. Na FIG. 1B, é representado um sistema de computador hospedeiro emulado 21 que é fornecido e que emula um sistema de computador hospedeiro de uma arquitetura hospedeira, tal como o sistema de computador hospedeiro 50 da FIG. 1 No sistema de computador hospedeiro emulado 21, um processador hospedeiro (CPU) 1 é um processador hospedeiro emulado (ou processador hospedeiro virtual) 29, e compreende um processador nativo 27 tendo uma arquitetura do conjunto de instruções nativo diferente do que aquele do processador 1 do sistema de computador hospedeiro 50. O sistema de computador hospedeiro emulado 21 tem uma memória 22 acessível ao processador nativo 27. Em uma concretização, a memória 22 está dividida numa porção de memória de computador 2 e numa porção de memória de rotinas de emulação 23. A memória do computador 2 está disponível para programas do sistema de computador hospedeiro emulado 21 de acordo com a arquitetura do computador hospedeiro. O processador nativo 27 executa as instruções nativas de um conjunto de instruções arquitetadas de uma arquitetura diferente daquela do processador emulado 29, as instruções nativas obtidas a partir da memória de rotinas de emulação 23, e podem acessar uma instrução hospedeira para a execução a partir de um programa na memória do computador 2 através do emprego de uma ou mais instruções obtida(s) em uma rotina de sequência &acesso/decodificação que possa decodificar a(s) instrução(ões) hospedeira(s) acessada(s) para determinar uma rotina de execução de instruções nativas para emulação da função da instrução hospedeira acessada.
030. Outras instalações que estão definidas para a arquitetura do sistema de computador hospedeiro 50 podem ser emuladas por rotinas de instalações arquitetadas, incluindo tais instalações como registradores de uso geral, registradores de controle, tradução de endereço dinâmica e subsistema de suporte de entrada/saída (I/O) e cache do processador, por exemplo. As rotinas de emulação também podem usufruir da função disponível no processador nativo 27 (tais como registradores gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Também podem ser fornecidos mecanismos de descarregamento e hardware especial para auxiliar ao processador nativo 27 na emulação da função do sistema de computador hospedeiro 50.
031. Em um mainframe (computador/unidade central de grande porte), instruções de máquina arquitetadas são utilizadas por programadores, comumente hoje programadores de "C", muitas vezes por meio de uma aplicação de compilador. Estas instruções armazenadas no suporte de armazenamento podem ser executadas nativamente em um Servidor de z/Arquitetura IBM, ou, alternativamente, em máquinas que executam outras arquiteturas. Elas podem ser emuladas em servidores mainframe IBM existentes e futuros, e em outras máquinas da IBM (por exemplo, Servidores pSeries(R)e Servidores xSeries(R)). Elas podem ser executadas em máquinas executando Linux em uma ampla variedade de máquinas que utilizam hardware fabricado pela IBM(R), Intel(R), AMD™, Sun Microsystems e outros. Além da execução nesse hardware sob a Z/Arquitetura(R), Linux pode ser utilizado assim como as máquinas que utilizam a emulação por Hercules, UMX, Fundamental Software, Inc. (FSI) ou Platform Solutions, Inc. (PSI), onde geralmente a execução é em um modo de emulação. No modo de emulação, software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
032. Um ou mais dos componentes do sistema de computador hospedeiro emulado 21, encontram-se descritos de forma mais detalhada em "IBM(R) z/Architecture Principles of Operation", Publicação N° SA22-7932-08, 9a Edição, Agosto de 2010, que é nesse momento aqui citada para referência em sua totalidade. IBM é uma marca comercial registrada da International Business Machines Corporation, Armonk, Nova York, EUA. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais ou nomes de produtos da International Business Machines Corporation ou de outras empresas.
033. O processador nativo 27 tipicamente executa software de emulação armazenado na memória de rotinas de emulação 23 que compreende um firmware ou um sistema operacional nativo para realizar a emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura do processador emulado. O software de emulação mantém um contador de programa emulado para manter o controle de limites de instrução. O software de emulação pode buscar uma ou mais instruções de máquina emulada em um momento e converter para uma ou mais instruções de máquina emulada para um grupo correspondente de instruções de máquina nativa para execução pelo processador nativo 27. Essas instruções convertidas podem ser armazenadas em cache de tal forma que uma conversão mais rápida possa ser realizada. O software de emulação mantém as regras da arquitetura da arquitetura do processador emulado de forma a assegurar que os sistemas operacionais e aplicações escritas para o processador emulado operem corretamente. Além disso, o software de emulação fornece recursos identificados pela arquitetura do processador emulado, incluindo, mas não limitado ao registradores de controle, registradores de uso geral, registradores de ponto flutuante, função de tradução de endereço dinâmica incluindo as tabelas de segmento e tabelas de páginas, por exemplo, mecanismos de interrupção, mecanismos de troca de contexto, relógios tempo do dia (TOD) e interfaces arquitetadas para subsistemas de Entrada/Saída de tal forma que um sistema operacional ou um programa de aplicação desenvolvido para executar no processador emulado 29, possa ser executado no processador nativo 27 contendo o software de emulação.
034. Uma instrução específica sendo emulada é decodificada, e uma sub- rotina é chamada para realizar a função da instrução individual. Uma função do software de emulação emulando uma função de um processador emulado 29 é implementada, por exemplo, em um acionador (driver) ou sub-rotina de "C", ou outro método qualquer de fornecimento de um acionador para o hardware específico como estará dentro da habilidade comum na técnica arte dos conhecedores depois de compreender a descrição da concretização preferida.
035. Em uma concretização, a invenção pode ser praticada por software (por vezes referido como código interno licenciado, firmware, micro-código, mili- código, pico-código e semelhantes, qualquer um dos quais seria consistente com a presente invenção). Referindo-se à FIG. 1A, o código do programa de software que concretiza a presente invenção é acessado pelo processador também conhecido como uma CPU (Unidade Central de Processamento) 1 do sistema de computador hospedeiro 50 a partir do dispositivo de armazenamento 11, tal como um meio de armazenamento de longo prazo, um acionador de CD-ROM, unidade de fita ou disco rígido. O código de programa de software pode ser concretizado em qualquer uma de uma variedade de meios conhecidos para utilização com um sistema ou equipamento de processamento de dados, tais como um disquete, disco rígido ou CD-ROM. O código pode ser distribuído em tais meios, ou podem ser distribuídos aos usuários a partir da memória do computador 2 ou armazenamento de um sistema de computador através de uma rede 10 para outros sistemas de computador para utilização por usuários de tais outros sistemas.
036. Alternativamente, o código de programa pode ser concretizado na memória do computador 2, e acessado pelo processador 1 usando um processador de barramento (BUS) (não mostrado). Tal código de programa inclui um sistema operacional que controla a função e interação dos vários componentes do computador e um ou mais programas de aplicação. O código de programa é normalmente paginado de uma mídia densa como o dispositivo de armazenamento 11 para a memória do computador 2 onde ele está disponível para processamento pelo processador 1. As técnicas e métodos para concretizar código de programa de software na memória, em mídia física, e /ou distribuição de código de software através de redes são bem conhecidas e não serão mais discutidas aqui. Código de programa, quando criado e armazenado num suporte tangível (incluindo, mas não limitado a módulos de memória eletrônicos (RAM), memória flash, discos compactos (CDs), DVDs, fitas magnéticas e semelhantes é muitas vezes referido como um "produto de programa de computador". O meio do produto programa de computador é tipicamente legível por um circuito de processamento preferencialmente em um sistema de computador para a execução pelo circuito de processamento.
037. A Fig. 1C ilustra uma estação de trabalho representativa ou sistema de hardware do servidor no qual a presente invenção pode ser praticada. O sistema 100 da FIG. 1C compreende um sistema de computador de base 101 representativo, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador de base 101 inclui um ou mais processadores 106 e um barramento (não mostrado) empregado para conectar e permitir a comunicação entre os um ou mais processadores 106 e os outros componentes do sistema do computador de base 101, de acordo com técnicas conhecidas. O barramento liga o processador 106 a memória 105 e armazenamento de longo prazo 107 que pode incluir uma unidade de disco rígido (incluindo qualquer um dos meios magnéticos, CD, DVD e de memória flash, por exemplo) ou uma unidade de fita, por exemplo. O sistema do computador de base 101 pode também incluir um adaptador da interface com o usuário, que conecta um ou mais processadores 106 através do barramento para um ou mais dispositivos de interface, tais como um teclado 104, um mouse 103, uma impressora/escâner 110 e/ou outros dispositivos de interface, que pode ser qualquer dispositivo de interface com o usuário, como uma tela sensível ao toque, teclado de entrada digitalizada, etc. O barramento também conecta o um ou mais processadores para um dispositivo de exibição 102, tal como uma tela de LCD ou monitor através de um adaptador de exibição.
038. O sistema de computador de base 101 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de comunicar 108 com uma rede 109. Exemplos de adaptadores de rede são canais de comunicação, Token Ring, Ethernet ou modems. Alternativamente, o sistema do computador de base 101 pode comunicar utilizando uma interface sem fios, tal como um cartão de dados de pacotes digitais celular (CDPD). O sistema do computador de base 101 pode ser associado com tais outros computadores numa rede de área local (LAN) ou uma rede de área alargada (WAN), ou o sistema do computador de base 101 pode ser um cliente em um arranjo de cliente/ servidor, com outro computador, etc.
039. A Fig. 2 ilustra uma rede de processamento de dados 200 na qual a presente invenção pode ser praticada. A rede de processamento de dados 200 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fio e uma rede com fios, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 201, 202, 203, 204 e ou o sistema do computador de base 101 da FIG. 1C. Além disso, como aqueles com habilidade comum na técnica apreciarão, podem ser incluídas uma ou mais redes locais, onde uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador hospedeiro.
040. O código de programação 111 pode ser concretizado na memória 105, e acessado pelo processador 106 utilizando o barramento do processador. Tal código de programação inclui um sistema operacional que controla a função e interação dos vários componentes de computador e um ou mais programas de aplicação 112. O código de programa é normalmente paginado a partir do armazenamento de longo prazo 107 para a memória de alta velocidade 105 onde está disponível para processamento pelo processador 106. As técnicas e métodos para concretização do código de programação de software na memória, em meios físicos e/ ou distribuição de código de software através de redes são bem conhecidos e não serão mais discutidos aqui. Código de programa, quando criado e armazenado em um suporte tangível (incluindo, mas não limitado a módulos de memória eletrônicos (RAM), memória flash, discos compactos (CDs), DVDs, fitas magnéticas e semelhantes é frequentemente referido como um "produto de programa de computador". O meio do produto de programa de computador é tipicamente legível por um circuito de processamento, de preferência em um sistema de computador para a execução pelo circuito de processamento.
041. O cache que é o mais prontamente disponível para o processador (normalmente mais rápido e menor do que outros caches de processador) é o cache de nível mais baixo (nível um ou L1) e armazenamento principal (memória principal) é o cache de nível mais alto (L3 se houver 3 níveis). O cache de nível mais baixo é frequentemente dividido em um cache de instruções (I-Cache) contendo instruções de máquina para serem executadas e um cache de dados (D- Cache) contendo operandos de dados.
042. Ainda em referência à FIG. 2, as redes também podem incluir servidores ou computadores mainframes, como um computador porta (gateway) (servidor cliente) 206 ou servidor de aplicação (servidor remoto) 208 que pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 205. Um computador porta 206 serve como um ponto de entrada para cada rede 207. Uma porta de entrada é necessária ao conectar um protocolo de rede em outro. O computador porta 206 pode ser, de preferência acoplado a uma outra rede (a Internet 207, por exemplo) por meio de uma ligação de comunicações. O computador porta 206 também pode ser diretamente acoplado a uma ou mais estações de trabalho 101, 201, 202, 203, e 204 através de uma ligação de comunicações. O computador porta pode ser implementado utilizando um Servidor IBM eServer™ zSeries(R) z9(R) disponível na International Business Machines Corporation.
043. Em uma concretização, o código de programação de software que concretiza a presente invenção é acessado pelo processador 106 do sistema do computador de base 101 a partir do meio de armazenamento a longo prazo, tal como o armazenamento de longo prazo 107 da FIG. 1C. O código de programação de software pode ser concretizado em qualquer um de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tais como um disquete, um disco rígido ou um CD-ROM. O código pode ser distribuído em tais meios, ou pode ser distribuído aos usuários 210 e 211 a partir da memória ou armazenamento de um sistema de computador através de uma rede para outros sistemas de computador para utilização por usuários de tais outros sistemas.
044. Referindo-se à FIG. 3, uma concretização do processador exemplar está representada para o processador 106. Um ou mais níveis de cache 303 são empregados para intermediar os blocos de memória a fim de melhorar o desempenho do processador 106. O cache 303 é um buffer (memória intermediária) de alta velocidade que contém as linhas de cache de dados da memória que provavelmente serão utilizados. Linhas de cache típicas tem 64, 128 ou 256 bytes de dados de memória. Em uma concretização, caches separados são empregados para armazenar instruções em cache do que para armazenar dados em cache. A coerência de cache (sincronização de cópias de linhas na memória e nos caches) muitas vezes é fornecida por vários algoritmos para vasculhar (snoop) bem conhecidos para aqueles com habilidades comuns na técnica. O armazenamento principal, tal como a memória 105 de um sistema de processador é muitas vezes referido como um cache. Em um sistema de processador tendo 4 níveis de cache 303 memória 105 é as vezes referida como cache de nível 5 (L5) uma vez que é tipicamente mais rápido e apenas contém uma porção do armazenamento não- volátil (DASD, Fita etc.) que está disponível para um sistema de computador. A memória 105 "armazena em cache páginas de dados paginados dentro e fora da memória 105 pelo sistema operacional.
045. Um contador de programa (contador de instruções) 311 mantém o controle do endereço da instrução atual a ser executada. Um contador de programa em um processador z/Architecture tem 64 bits e pode ser truncado para 31 ou 24 bits para dar suporte antes dos limites de endereçamento. Um contador de programa geralmente é concretizado em uma palavra de status do programa (PSW) de um computador de tal forma que ele persiste durante a troca de contexto. Deste modo, um programa em curso, tendo um valor de contador do programa, pode ser interrompido pelo, por exemplo, sistema de operacional (isto é, o contexto atual alterna do ambiente do programa para o ambiente do sistema operacional). A PSW do programa mantém o valor do contador do programa enquanto o programa não está ativo, e o contador do programa (no PSW) do sistema operacional é usado enquanto o sistema operacional está em execução.
046. Em uma concretização, o contador de programa é incrementado por um valor igual ao número de bytes de instrução atual. Instruções de Computador com um Conjunto Reduzido de Instruções (RISC) são normalmente de comprimento estabelecido enquanto as instruções de Computador com um Conjunto Complexo de Instruções (CISC) são tipicamente de comprimento variável. Instruções do IBM z/Architecture são instruções CISC com um comprimento de 2, 4 ou 6 bytes. O contador de programa 311 é modificado tanto por uma operação de troca de contexto quanto por uma operação de tomada de desvio de uma instrução de desvio, por exemplo. Em uma operação de troca de contexto, o valor do contador do programa atual é salvo na PSW juntamente com outras informações de estado sobre o programa que está sendo executado (como códigos de condição), e um novo valor do contador de programa é carregado apontando para uma instrução de um novo módulo de programa para ser executado. Uma operação de desvio tomado é realizada de forma a permitir o programa a tomar decisões ou entrar em ciclo (loop) dentro do programa através do carregamento do resultado da instrução de desvio para dentro do contador de programa 311.
047. Em uma concretização, uma unidade de busca de instrução 305 é empregada para buscar instruções em nome do processador 106. A unidade de busca de instrução 305 busca as "próximas instruções sequenciais", as instruções alvo de instruções de desvio tomado, ou as primeiras instruções de um programa seguindo uma troca de contexto. Em uma concretização, a unidade de busca de instrução 305 emprega técnicas de pré-busca para especulativamente pré-buscar instruções com base na probabilidade de que as instruções pré-buscadas possam ser utilizadas. Por exemplo, a unidade de busca de instrução 305 pode buscar 16 bytes de instruções que incluem a próxima instrução sequencial e bytes adicionais de mais instruções sequenciais.
048. As instruções buscadas são então executadas pelo processador 106. Numa concretização, a(s) instrução(ões) buscada(s) são passadas para uma unidade de decodificação/despacho 306 da unidade de busca de instrução 305. A unidade de decodificação/despacho 306 decodifica a(s) instrução(ões) e encaminha informações sobre a(s) instrução(ões) decodificada(s) para unidades de execução adequadas 307, 308 e/ou 310. Uma unidade de execução 307 recebe informação sobre instruções aritméticas decodificadas da unidade de busca de instrução 305 e realizará operações aritméticas sobre operandos de acordo com o código de operação (opcode) da instrução. Os operandos são fornecidos para a unidade de execução 307 tanto a partir da memória 105, registradores arquitetados 309, quanto a partir de um campo imediato da instrução sendo executada. Os resultados da execução, quando armazenados, são armazenados na memória 105, registradores arquitetados 309 ou em outro hardware da máquina (como registradores de controle, registradores PSW e semelhantes).
049. Um processador 106 tem, tipicamente, uma ou mais unidades de execução 307, 308, e 310 para executar a função da instrução. Referindo-se à FIG. 4A, uma unidade de execução 307 pode comunicar com os registradores arquitetados 309, a unidade de decodificação/ despacho 306, a unidade de carga/armazenamento 310 e outras unidades do processador 401 por meio de uma lógica de interface 407. A unidade de execução 307 pode empregar vários circuitos de registradores 403, 404, e 405 para conter informações que a unidade lógica de aritmética (ALU) 402 irá operar sobre. A ALU 402 executa operações aritméticas como somar, subtrair, multiplicar e dividir, assim como função lógica, como "e", ou "e exclusivo-ou" (XOR), rotação e deslocamento. Numa concretização, a ALU 402 suporta operações especializadas que são dependentes do projeto. Outros circuitos podem fornecer outras instalações arquitetadas 408 incluindo códigos de condição e lógica de suporte de recuperação, por exemplo. Tipicamente, o resultado de uma operação ALU é realizada num circuito de registradores de saída 406 que pode encaminhar o resultado para uma variedade de outras funções de processamento. Em outras concretizações, existem muitos arranjos de unidades de processamento, a presente descrição destina-se apenas a proporcionar uma compreensão representativa de uma concretização.
050. Uma instrução ADD, por exemplo, deverá ser executada numa unidade de execução 307 tendo funcionalidade lógica e aritmética enquanto uma instrução de ponto flutuante, por exemplo, seria executada em uma unidade de execução de ponto flutuante (não mostrada) tendo capacidade de ponto flutuante especializada. De preferência, uma unidade de execução opera em operandos identificados por uma instrução através do desempenho de uma função definida por opcode nos operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 307 em operandos encontrados em dois registradores arquitetados 309 identificados pelos campos de registradores de instrução.
051. A unidade de execução 307 executa a adição aritmética em dois operandos e armazena o resultado em um terceiro operando onde o terceiro operando pode ser um terceiro registrador ou um dos dois registradores de origem. A unidade de execução 307 utiliza preferencialmente uma unidade lógica e aritmética (ALU) 402 que é capaz de desempenhar uma variedade de funções lógicas, como deslocamento, rotação, e, ou e XOR, bem como uma variedade de funções algébricas, incluindo qualquer dessas: somar, subtrair, multiplicar, dividir. Algumas ALUs 402 são projetadas para operações escalares e algumas para ponto flutuante. Em concretizações, os dados podem ser big endian (onde o byte menos significativo está no endereço do byte mais alto) ou little endian (onde o byte menos significativo está no endereço do byte mais baixo) dependendo da arquitetura. A IBM z/Architecture é big endian. Campos assinados podem ser sinal e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. O número de complemento 2 é vantajoso já que a ALU 402 não precisa projetar uma capacidade de subtração uma vez que um valor negativo ou um valor positivo em complemento de 2 requer apenas a adição dentro da ALU. Os números são comumente descritos em taquigrafia, onde um campo de 12 bits define um endereço de um bloco de 4.096 bytes e é comumente descrito como um bloco de 4 Kbyte (Kilo bytes), por exemplo.
052. Referindo-se à FIG. 4B, Informação de instrução de desvio para a execução de uma instrução de desvio é tipicamente enviada para uma unidade de desvio 308 que emprega um algoritmo de previsão de desvios, como uma tabela de histórico de desvio 432 para prever o resultado do desvio antes que outras operações condicionais se completarem. O alvo da instrução de desvio atual será buscado e especulativamente executado antes das operações condicionais se completarem. Quando as operações condicionais são completadas as instruções de desvio especulativamente executadas são ou completadas ou descartadas com base nas condições da operação condicional e os resultados especulados. Uma típica instrução de desvio pode testar códigos de condição e desvio para um endereço alvo, se os códigos de condição cumprirem o requerimento de desvio da instrução de desvio, um endereço alvo pode ser calculado com base em vários números, incluindo os encontrados nos campos de registrador ou de um campo imediato da instrução por exemplo. Em uma concretização, a unidade de desvio 308 pode empregar uma ALU 426 que tem uma pluralidade de circuitos registrador de entrada 427, 428, e 429 e um circuito registrador de saída 430. A unidade de desvio 308 pode se comunicar com registradores gerais, a unidade de decodificação/despacho 306 ou outros circuitos 425, por exemplo.
053. A execução de um grupo de instruções pode ser interrompida por uma variedade de razões, incluindo uma troca de contexto iniciada por um sistema operacional, uma exceção de programa ou erro causando uma troca de contexto, um sinal de interrupção de Entrada/Saída que causa uma troca de contexto ou atividade de múltiplas-linhas de uma pluralidade de programas (em um ambiente de múltiplas-linhas), por exemplo. Em uma concretização, uma ação de troca de contexto salva informações do estado sobre um programa em execução atualmente e, em seguida, carrega informações do estado sobre outro programa que está sendo convocado. Informações do estado podem ser salvas em registradores de hardware ou na memória, por exemplo. Informação do estado inclui um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, informação de tradução da memória e conteúdo de registrado arquitetado.
054. A atividade de troca de contexto pode ser exercida por circuitos de hardware, programas aplicação, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC) isoladamente ou em combinação.
055. Um processador acessa operandos de acordo com métodos definido por instrução. A instrução pode fornecer um operando imediato usando o valor de uma porção da instrução, pode fornecer um ou mais campos de registrador explicitamente apontando tanto para registradores de uso geral quanto para registradores de propósito específico (registradores de ponto flutuante, por exemplo). A instrução pode utilizar registradores implícitos identificados por um campo opcode como operandos. A instrução pode utilizar locais de memória para operandos. O local da memória de um operando pode ser fornecido por um registrador, um campo imediato, ou uma combinação de registradores e campo imediato como é exemplificado pela instalação de longo deslocamento da z/Architecture em que a instrução define um registrador de base, um registrador de índice e um campo imediato (campo de deslocamento) que são somados para fornecer o endereço do operando na memória. O local aqui implica um local na memória principal (armazenamento principal), a não ser quando é indicado de modo contrário.
056. Referindo-se à FIG. 4C, um processador acessa o armazenamento usando uma unidade de carregamento/ armazenamento 310. A unidade de carregamento/ armazenamento 310 pode executar uma operação de carregamento através da obtenção do endereço do operando alvo na memória através da interface de memória/ cache e carregamento do operando em um registrador arquitetado 309 ou outro local de memória, ou pode executar uma operação de armazenamento obtendo o endereço do operando alvo na memória e armazenando os dados obtidos a partir do registrador arquitetado 309 ou outro local de memória no local do operando alvo na memória. A unidade de carregamento/ armazenamento 310 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem em relação à sequência de instruções; no entanto, a unidade de carregamento/ armazenamento 310 mantém a aparência para os programas que as instruções foram executadas em ordem. A unidade de carregamento/ armazenamento 310 pode comunicar com registradores arquitetados 309, unidade de decodificação /despacho 306, interface de memória/ cache ou outros elementos 455 e compreende vários circuitos de registrador, ALUs 458 e lógica de controle 463 para calcular endereços de armazenamento e para fornecer sequenciamento em fila (pipeline) para manter operações em ordem. Algumas operações podem estar fora da ordem, mas a unidade de carga / armazenamento oferece funcionalidade para fazer as operações fora da ordem aparecerem para o programa como tendo sido realizadas em ordem como é bem conhecido para aqueles com habilidades na técnica.
057. Preferencialmente, endereços que um programa de aplicação "vê" são muitas vezes referidos como endereços virtuais. Endereços virtuais são muitas vezes referidos como "endereços lógicos"e "endereços eficazes". Esses endereços virtuais são virtuais em que eles são redirecionados ao local da memória física por uma de uma variedade de tecnologias DAT, como o DAT 312 da FIG. 3, incluindo, mas não limitado a, prefixar um endereço virtual com um valor de deslocamento, a tradução do endereço virtual através de uma ou mais tabelas de tradução, as tabelas de tradução incluindo, pelo menos, uma tabela de segmentos e uma tabela de páginas sozinha ou em combinação, de preferência, a tabela de segmento tendo uma entrada apontando para a tabela de páginas. Na z/Architecture, uma hierarquia de traduções é fornecida incluindo uma tabela de primeira região, uma tabela de segunda região, uma tabela de terceira região, uma tabela de segmentos e uma tabela de páginas opcional. O desempenho da tradução de endereço é muitas vezes melhorado através da utilização de uma memória associativa (TLB), que compreende entradas que mapeiam um endereço virtual para um local na memória física associada. As entradas são criadas quando DAT 312 traduz um endereço virtual utilizando as tabelas de tradução. A utilização subsequente do endereço virtual pode, então, utilizar a entrada do TLB rápido em vez dos lentos acessos da tabela de tradução sequencial. O conteúdo TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo o menos usado recentemente (LRU).
058. No caso em que o processador 106 é um processador de um sistema multi-processador, cada processador tem a responsabilidade de manter os recursos compartilhados, tais como Entrada/Saída, caches, TLBs e Memória intertravada para coerência. Numa concretização, as tecnologias de vascular (snoop) serão utilizadas para manter a coerência de cache. Em um ambiente snoop, cada linha de cache pode ser marcada como estando em qualquer um dos seguintes: um estado comum, um estado exclusivo, um estado alterado, um estado inválido e semelhantes, a fim de facilitar o compartilhamento.
059. As unidades de Entrada/Saída 304 da FIG. 3 fornecem o processador 106 com meios para anexar em dispositivos periféricos, incluindo fitas, discos, impressoras, monitores e redes, por exemplo. As unidades de Entrada/Saída 304 são frequentemente apresentadas para o programa de computador por acionadores de software. Em mainframes como o z/Series da IBM, adaptadores de canal e adaptadores de sistema abertos são unidades de Entrada/Saída do mainframe que fornecem as comunicações entre o sistema operacional e os dispositivos periféricos.
060. Dados de instrumentação são dados relacionados com as operações do processador 106. Em uma concretização, o acesso aos dados de instrumentação e outras métricas de nível de sistema podem ser restringidos, ou indisponíveis. Um processador de computador opera sob um estado privilegiado (ou estado supervisor), e um estado menos privilegiado (ou estado de problema). No estado privilegiado, um programa pode ter acesso a todos os recursos do sistema através de operações privilegiadas (por exemplo, acesso a todos os registradores de controle e ao espaço de memória supervisor). O estado privilegiado também é referido como modo privilegiado ou modo supervisor. Um sistema operacional em execução no processador do computador pode estar operando no estado privilegiado. O estado menos privilegiado é um estado não- privilegiado onde o acesso aos recursos do sistema é limitado. Por exemplo, os programas de aplicação em execução no estado menos privilegiado podem ter acesso limitado ou nenhum acesso aos registradores de controle e podem acessar apenas o espaço de memória do usuário atribuído ao programa de aplicação pelo sistema operacional. O estado menos privilegiado é tipicamente atribuído a programas de aplicação executados sob o controle de um sistema operacional, e nenhuma operação privilegiada pode ser realizada no estado menos privilegiado. O estado menos privilegiado também é conhecido como um estado de problema, modo de problema ou modo de usuário.
061. Um desses recursos restritos que não é acessível para escrita a um programa em execução no estado menos privilegiado é a palavra de status do programa (PSW). A PSW pode incluir um contador de programa da próxima instrução a ser executada, um campo de código de condição utilizável por instruções de desvio, um campo de controle de instrumentação para indicar se a instrumentação está ativada ou desativada, e outras informações usadas para controlar o sequenciamento de instrução e para determinar o estado do processador do computador, incluindo o estado privilegiado atribuído ao programa. Em um ambiente de processamento de múltiplas linhas, múltiplos programas compartilham, ou fatiam o tempo, a capacidade do processador do computador disponível. Cada um dos programas tem informações de contexto, incluindo uma PSW associada, um endereço de origem de uma tabela de tradução de endereço para acessar o armazenamento principal atribuído ao programa, um conjunto de valores atuais de registradores de propósito geral, registradores de controle, registradores de ponto flutuante, etc. A PSW atualmente ativa, ou controladora, é chamada de PSW atual. Ela governa o programa sendo executado atualmente. O processador do computador tem uma capacidade de interrupção, o que permite que o processador do computador a trocar de contexto rapidamente para outro programa em resposta às condições de exceção e estímulos externos. Quando uma interrupção ocorre, o processador do computador coloca a PSW atual em um local de armazenamento atribuído, chamado o local do antigo PSW, para a classe particular de interrupção. O processador do computador busca uma nova PSW a partir de um segundo local de armazenamento atribuído. Este novo contexto determina o próximo programa a ser executado.
062. Em uma concretização, estes locais de armazenamento estão localizados num local de memória acessível ao processador do computador. Quando o processador de computador termina de processar a interrupção, o programa que gerencia a interrupção pode recarregar o antigo contexto incluindo a antiga PSW, tornando-a novamente a PSW atual, de modo que o programa interrompido possa continuar.
063. Os campos da PSW podem ser referenciados quer explicitamente (por exemplo, quando a execução da instrução lê parte dos bits da PSW), ou implicitamente (por exemplo, na busca de instruções, busca de operando, cálculos de geração de endereços, fontes de geração de endereço, etc.). A referência explícita é geralmente realizada no tempo de execução, enquanto que a referência implícita é geralmente realizada em diferentes estágios do pipeline durante a execução de instruções (ou seja, busca de instrução, decodificação de instrução, tempo de execução e tempo de conclusão). Os campos individuais na PSW podem ser referenciados ou atualizados independentemente um do outro.
064. Em uma concretização, através da manipulação de contexto, um sistema operacional controla os recursos de processamento do computador, incluindo a ativação da instrumentação do tempo de execução pelo processador do computador. A instrumentação do tempo de execução pode ser ativada ou desativada durante a execução do sistema operacional, assim como por quaisquer aplicações de software executadas pelo sistema operacional. O estado ativado/desativado da instrumentação do tempo de execução é salvo como informação de contexto na PSW associada a um programa.
065. Uma instalação de instrumentação do tempo de execução (RI) pode ser incorporada em modelos de implementação da z/Architecture. Quando a instalação de RI é instalada e ativada, os dados são coletados durante a execução do programa em um ou mais buffers coletores dentro da CPU e, em seguida, informados para um buffer de programa. Cada unidade de informação armazenada é chamada de um grupo de relatório. O conteúdo de um grupo de relatório consiste de múltiplos registros cujos conteúdos representam eventos reconhecidos pela CPU durante a execução do programa.
066. Quando a instalação da instrumentação do tempo de execução está instalada em uma configuração, um campo PSW (bit RI) ativa a instrumentação do tempo de execução. A validade dos controles de instrumentação do tempo de execução determina a capacidade de ligar o bit RI, mas quando RI é um, os controles de CPU são válidos e a instrumentação do tempo de execução é ativada. A instalação da instrumentação do tempo de execução pode incluir as seguintes instruções: carregar controles da instrumentação do tempo de execução, modificar controles de instrumentação do tempo de execução, emitir instrumentação do tempo de execução, próxima instrumentação do tempo de execução, desligar a instrumentação do tempo de execução, ligar a instrumentação do tempo de execução, armazenar controles de instrumentação do tempo de execução, e testar os controles da instrumentação do tempo de execução.
067. A instrução dos controles de instrumentação do tempo de execução (LRIC) inicializa os controles de instrumentação do tempo de execução que governam a instrumentação do tempo de execução. A instrução modificar controles de instrumentação do tempo de execução (MRIC) modifica todos ou um subconjunto dos controles da instrumentação do tempo de execução originalmente estabelecido(s) pelo LRIC. A instrução emite instrumentação do tempo de execução (RIEMIT) recolhe o valor de um registrador geral, armazenando-o em um buffer coletor (memória intermediária coletora). A instrução próxima instrumentação do tempo de execução (RINEXT) realiza amostragem dirigida da próxima, instrução sequencial (NSI) após RINEXT. A instrução desligar instrumentação do tempo de execução (RIOFF) desativa a instrumentação do tempo de execução. A instrução ligar instrumentação do tempo de execução (RION) ativa a instrumentação do tempo de execução. A instrução armazenar controles de instrumentação do tempo de execução (STRIC) coloca os valores atuais dos controles de instrumentação do tempo de execução em um local de armazenamento especificado. A instrução teste de controles de instrumentação do tempo de execução (TRIC) examina os controles da instrumentação do tempo de execução. Se for válido, o estado de um indicador alterado por controles é configurado.
068. A instalação de instrumentação do tempo de execução inclui a capacidade para fazer uma interrupção externa de alerta-de-medição pendente. Algumas das informações coletadas pela instrumentação do tempo de execução e relatadas a um buffer de programa são dependentes do modelo e, portanto, não estão definidas. As amostras e os dados fornecidos pela instalação da instrumentação do tempo de execução são destinados a estimativa estatística de características de desempenho, são substancialmente exatas, e não podem ser repetidas. Por exemplo, independentemente do modo de amostragem, é imprevisível se uma instrução de amostra que causou uma exceção ou está associada com determinadas atividades internas do sistema resultar no armazenamento de um grupo de relatório e, se for armazenado, se os dados dependentes do modelo incluídos nos dados de instrumentação do tempo de execução serem afetados.
069. Um buffer coletor é usado para capturar um conjunto de registros cujo conteúdo relata sobre eventos reconhecidos pelo processador durante a execução do programa. Os exemplos são: execução de um ou mais desvios tomados, eventos de abortar execução-transacional, e um operando da instrução RIEMIT. A execução da instrução RIEMIT recolhe o valor de um registrador geral, armazenando-o em buffer coletor. Os dados adicionais podem ser coletados e/ou armazenados em outros buffers, tal como um buffer de dados de instrução.
070. O fazer relatório está sujeito aos controles de relatório. Quando uma instrução de amostra é identificada, cada controle de relatório ativa a verificação de uma condição correspondente. Se existe uma condição correspondente, um grupo de relatório é formado e armazenado. Um grupo de relatório não é armazenado quando não há controle de relatório ativado ou a condição correspondente não existe para um controle de relatório ativado. Os dados feitos relatórios acerca da instrução da amostra são adquiridos a partir do buffer de dados de instrução e outras fontes dependentes do modelo, e então usados para criar o conteúdo de um ou mais registros do grupo de relatório, um tal registro sendo um registro de instrução.
071. Tipos de registros que podem ser capturados no armazenamento de grupo de relatório incluem: enchimento, extra, começar, estampa temporal, instrução, emitir, abortar TX, chamada, retorno e transferência. Um registro de enchimento é usado em um grupo de relatório quando o número de registros válidos no buffer coletor não é suficiente para encher um grupo de relatório do tamanho do grupo de relatório atual. Um registro extra pode ser utilizado na seção extra de um grupo de relatório. Um registro de começar é o primeiro registro do primeiro grupo de relatório. Um registro de estampa temporal é armazenado como registro 0 de cada grupo de relatório diferente do primeiro grupo de relatório. Um registro de instrução é criado quando um grupo de relatório é armazenado para uma instrução de amostra como o último registro do grupo de relatório. Um registro emitir é criado pela execução bem-sucedida de RIEMIT. Um registro de modo abortar execução transacional (TX) é criado tanto por um abortar implícito quanto pela execução de uma instrução de abortar transação. Um registro de chamada é criado pela execução de uma instrução de desvio, que é categorizada como uma instrução de desvio tipo-chamada. Um registro de retorno é criado pela execução de uma instrução de desvio tipo-retorno que é categorizada como uma instrução de retorno. Um registro de transferência é criado pela execução de uma instrução de desvio, que atende a determinados critérios do código de condição.
072. A Fig. 5 representa um diagrama esquemático de um sistema para instrumentação do tempo de execução de um processador que pode ser implementado numa concretização. Em uma concretização, o sistema 500 inclui uma unidade de processamento central (CPU), tal como o processador 106 da FIG. 1. Em uma concretização, o processador 106 é um processador único. Em uma concretização alternativa, o processador 106 é um núcleo de processamento único de um processador com vários núcleos. Em uma concretização, o processador 106 é capaz de operar a velocidades variáveis.
073. Em uma concretização, o processador 106 inclui ainda um registrador 510. O registrador 510 é um registrador de hardware capaz de armazenar palavras de dados para o uso pelo processador 106. O registrador 510 inclui um ou mais travas para armazenar os bits de dados que são acessíveis pelo processador 106. O registrador 510, pode incluir registradores de uso geral e registradores de controle, por exemplo. O processador 106 inclui adicionalmente um módulo de instrumentação 506 que está em comunicação com o registrador 510. O módulo de instrumentação 506 controla a instrumentação do processador 106. O módulo de instrumentação 506 está configurado para coletar dados de instrumentação, tal como o caminho de execução de um ou mais desvios tomados, eventos de abortar execução-transacional, vários operandos de tempo de execução, informação de estampa de tempo, etc. diretamente do processador 106. O módulo de instrumentação 506 coleta os dados de instrumentação do processador de 106, e armazena os dados de instrumentação em um buffer coletor 508. Numa concretização, o buffer coletor 508 é um buffer circular que recolhe os dados recebidos a partir do módulo de instrumentação 506, e quando o buffer circular é enchido ele sobrescreve os dados mais antigos com novos dados.
074. O processador 106 executa um ou mais sistemas operacionais 516 e uma ou mais aplicações 518. O um ou mais sistemas operacionais 516 e uma ou mais aplicações 518 são armazenados em um armazenamento 520, tal como um disco rígido, a unidade de CD/ROM, memória flash, etc. e são carregados para uma memória principal 514 em uma área memória de tempo de execução 504 reservada para armazenar uma ou mais peças ativas da aplicação e/ou sistema operacional em execução atual, páginas chamadas, que são carregadas a partir do armazenamento 520 para dentro da memória de tempo de execução 504 conforme necessário. Em uma concretização, cada um dos sistemas operacionais executa como uma máquina virtual gerenciada por um hipervisor (não mostrado) e executado pelo processador 106.
075. Em uma concretização, o processador 106 carrega uma PSW no registrador 510 a partir de dados da PSW 512 na memória principal 514 para o sistema operacional ou a aplicação a partir da memória principal 514 atualmente em execução e configura uma ou mais configurações do processador, por exemplo, o registrador 510. Numa concretização, a PSW no registrador 510 inclui um ou mais bits para permitir e controlar o módulo de instrumentação 506.
076. A uma ou mais aplicações 518 incluem aplicações de software compilados para executar em um sistema operacional específico, código interpretado executando em um intérprete (por exemplo, Java™), ou linhas de suporte do sistema operacional [por exemplo, gestão de processos, DAEMONS (Monitor de Execução e de Disco) etc]. Cada um dos um ou mais sistemas operacionais 516 e ou a uma ou mais aplicações 518 podem executar uma instrução para acionar o módulo de instrumentação 506 para começar, ou para parar, a coleta dos dados de instrumentação.
077. Em uma concretização, uma das uma ou mais aplicações 518 executa uma instrução que tenha sido determinada como sendo uma instrução de amostra, criando assim um ponto de amostragem na conclusão da execução da instrução de amostragem e em seguida isso causa o módulo de instrumentação 506 a mover os dados coletados da aplicação a partir do buffer coletor 508, para um buffer de programa 522 na memória principal 514 que é acessível para a aplicação. A memória principal 514 pode ser qualquer memória endereçável conhecida na arte. Em uma concretização, a memória principal 514 pode incluir um buffer de armazenamento de acesso rápido, às vezes chamado de cachê. Cada CPU pode ter um cachê associado. Em uma concretização adicional, a memória principal 514 é uma memória de acesso aleatório dinâmica (DRAM). Ainda em uma outra concretização, a memória principal é um dispositivo de armazenamento, tal como uma unidade de disco rígido do computador, ou memória flash acessível por uma aplicação.
078. A função instrumentação do tempo de execução é uma nova instalação que pode ser utilizada não apenas em um ambiente de laboratório, ou para análise off-line (desconectado), mas também em ambientes de software vivos dentro de programas em tempo de execução, e sob o controle do programa. Um estado privilegiado pode configurar controles de um processador de 106 para gerenciar uma instrumentação do tempo de execução. A flexibilidade da instalação de instrumentação do tempo de execução é melhorada através do fornecimento da capacidade de alterar a maioria dos controles a partir de um estado menos privilegiado. O estado menos privilegiado é o mais provável de receber um benefício a partir da instrumentação do tempo de execução. Um estado menos privilegiado está proibido de mudar certas configurações, a fim de assegurar que (1) o estado privilegiado mantenha sua integridade e controle sobre todos os programas de estados menos privilegiados que ele executa, e (2) um estado menos privilegiado pode ou não pode executar instrumentação do tempo de execução, quando o próprio sistema operacional está executando instrumentação do tempo de execução. Ambos podem executar instrumentação do tempo de execução, se o supervisor desativa momentaneamente a instrumentação do tempo de execução, salva seu contexto de instrumentação do tempo de execução, restaura o contexto de instrumentação do tempo de execução do programa de estado menos privilegiado e então começa o programa de estado menos privilegiado com a instrumentação do tempo de execução reativada. Se a troca de contexto não inclui o salvamento/restauração apropriados dos controles de instrumentação do tempo de execução, uma colisão dos dados coletados em ambos os estados privilegiado e menos privilegiado provavelmente seria uma coleta de dados de instrumentação do tempo de execução inutilizável.
079. Em uma concretização, a fim de melhor apoiar o programa do estado menos privilegiado, uma instrução de modificar instrução de execução de tempo (MRIC) é definida. A instrução MRIC é uma instrução semi-privilegiada que é usada para modificar certos controles de processadores 106 relacionados à instrumentação do tempo de execução, aqueles controles que estão atualmente ativos no registrador 510. Os controles são originalmente carregados pela execução bem-sucedida da instrução do de carregamento do controle da instrução de tempo de execução (LRIC) pelo estado privilegiado.
080. A habilidade da instrução MRIC para interagir com os controles de instrumentação do tempo de execução é descrita em detalhes abaixo. Se a execução da instrução MRIC for bem-sucedida, então todos os controles que são especificados pela instrução MRIC são configurados quando a execução de MRIC é concluída de forma bem-sucedida, caso contrário, se a execução da instrução MRIC não for bem-sucedida, então nenhum dos controles será afetado.
081. A Fig. 6 representa uma instrução MRIC numa concretização. Em uma concretização, a instrução MRIC 600 inclui um código de operação 602 e 604 (também referido como "opcode" ou "opcode dividido" neste caso em particular). O código de operação 602 e 604 identifica a instrução MRIC 600 para o processador, tal como o processador 106 da FIG. 5. A instrução MRIC 600 também inclui um endereço de operando que é determinado a partir de um campo registrador de base 606 (B2), e um conjunto de campos de deslocamento 608 e 610, tomados conjuntamente. A soma dos conteúdos do registrador de base mais o deslocamento indica o local de um bloco de controle de controles de instrumentação do tempo de execução (RICCB) que inclui as configurações de controle de instrumentação do tempo de execução que serão atualizadas pela instrução MRIC. Os campos de deslocamento 608 e 610 indicam um deslocamento a partir do endereço contido no registrador de base indicado pelo campo registrador de base 606 cuja soma se alinha com o RICCB. A Fig. 6 representa uma concretização da instrução MRIC para fins de clareza. Será entendido por aqueles peritos com habilidade comum na técnica que a instrução MRIC pode ser formatada de forma diferente e/ou conter diferentes operandos e códigos de operação, em outras concretizações.
082. A instrução MRIC 600 é usada para atualizar apenas um subconjunto de controles que são atualizáveis por uma instrução LRIC. Os controles configurados por uma instrução MRIC 600 estão limitados a um subconjunto de controles que foram configurados de forma bem-sucedida por uma instrução LRIC. Os controles de instrumentação do tempo de execução incluem um número de bits que controla a operação da instrução MRIC, incluindo a habilidade de atualizar vários controles de instrumentação do tempo de execução. Em uma concretização, estes bits estão localizados no subconjunto de todos os controles de instrumentação do tempo de execução que só podem ser configurados por uma instrução LRIC.
083. A Fig. 7 representa um fluxo de processo para inicializar uma instrução MRIC a partir de um programa de estado menos privilegiado em uma concretização. No bloco 702, uma instrução MRIC é buscada pelo processador. No bloco 704, a instrução MRIC é executada pelo processador. No bloco 706, os valores de controle de instrumentação do tempo de execução no RICCB são carregados para os controles de instrumentação do tempo de execução. No bloco 708, os controles de instrumentação do tempo de execução fornecem informações para o buffer de programa 522 da FIG. 5 com base nas configurações carregadas.
084. A Fig. 8 representa um fluxo de processo para inicializar uma instrução MRIC a partir de um programa de estado menos privilegiado em uma concretização adicional. Em uma concretização, o fluxo do processo da FIG. 8 é executado pelo módulo de instrumentação 506 da FIG. 5. No bloco 802, uma instrução MRIC emitida por um programa de estado menos privilegiado é buscada. A instrução MRIC inclui um código de operação e um operando. O operando da instrução MRIC é o RICCB que inclui valores de controle de instrumentação do tempo de execução que serão utilizados para atualizar os controles de instrumentação do tempo de execução. Estes valores incluem, por exemplo, um valor de controle para gerenciar detalhes de dados de amostragem de instrumentação do tempo de execução; um valor de controle para gerenciar detalhes da coleta de dados de instrumentação do tempo de execução; um valor de controle para gerenciar os detalhes de relatório de dados de instrumentação do tempo de execução para o buffer do programa; um endereço atual dentro de um local de um buffer do programa, etc.
085. No bloco 804 é determinado se a execução de MRIC é permitida. O bit S da instrumentação do tempo de execução (controlado apenas por LRIC) determina se o programa de estado menos privilegiado é permitido executar a instrução MRIC. Se o bit S da instrumentação do tempo de execução é configurado como 1, então o processamento continua no bloco 806.
086. No bloco 806, é determinado se o bit de validade (também referido como a bit V) dos controles de instrumentação do tempo de execução atual é configurado a 1. O bit de validade indica a validade do conjunto de controles de instrumentação do tempo de execução no processador, assim como foram anteriormente configurados por uma instrução LRIC. Se os atuais controles de instrumentação do tempo de execução não são válidos (ou seja, a instrução anterior LRIC era inválida), então no bloco 818, a execução bem-sucedida da instrução MRIC não pode ocorrer. Numa concretização, a execução malsucedida da instrução MRIC não altera as configurações anteriores e os controles de tempo de execução permanecem em seus valores anteriores. O bit de validade não pode ser atualizado pela instrução MRIC. No bloco 808, o RICCB para o qual a instrução MRIC aponta é buscado.
087. Se o bit de validade é configurado como 1 (ou seja, os controles de instrumentação do tempo de execução são válidos), então o processamento continua no bloco 810. No bloco 810, se o bit K é igual a zero (isto é, o programa do estado menos privilegiado não está executando em um estado semi-privilegiado no que diz respeito aos controles de instrumentação do tempo de execução), então, no bloco 814, nem o endereço de origem nem o endereço de limite é atualizado, mas todos os outros controles permitidos a serem atualizados por MRIC são atualizados. Se o bit K é um (ou seja, o programa de estado menos privilegiado está executando em um estado semi-privilegiado no que diz respeito aos controles de instrumentação do tempo de execução) e, então, no bloco 812, todos os controles permitidos a serem atualizados por MRIC são atualizados, incluindo o endereço de origem e endereço de limite.
088. A Fig. 9 representa uma porção de um bloco de controle de controles de instrumentação do tempo de execução (RICCB), incluindo controles que são configuráveis por um estado privilegiado em uma concretização. A porção do bloco de controle 900 pode incluir valores adicionais diferentes dos descritos em referência à FIG. 9. Modificação à porção do bloco de controle 900 pode ser realizada por uma instrução LRIC.
089. A porção do bloco de controle inclui um bit de validade 902 (bit V). O bit de validade 902 indica a validade do conjunto de controles de instrumentação do tempo de execução no processador, como foram anteriormente configurados por uma instrução LRIC.
090. O bloco de controle inclui também um bit S 904, o qual é utilizado para determinar se o programa de estado menos privilegiado é autorizado a executar a instrução MRIC. O bit K 906 indica se o programa de estado menos privilegiado é permitido a executar em um estado semi-privilegiado no que diz respeito aos controles de instrumentação do tempo de execução, tais como o endereço de origem, e o endereço de limite dos controles de instrumentação do tempo de execução. O bit H 908 determina se os controles de endereço (ou seja, o endereço de origem, endereço de limite, e endereço atual) referem-se a um espaço de endereço virtual primário ou um espaço de endereço da memória virtual do sistema. O bit 0 910 é ignorado e tratado como um 0.
091. Um bit de controle de relatório de amostra do estado menos privilegiado 912 (bit Ps) é usado em conjunto com programas de estado menos privilegiado. Quando no estado menos privilegiado e o bit Ps 912 nos controles de instrumentação do tempo de execução é zero, os controles de relatório dos controles de instrumentação do tempo de execução são ignorados quando a instrumentação do tempo de execução é ativada, e, portanto, não causam um grupo de relatório a ser armazenado. Quando no estado menos privilegiado e o bit Ps 912 nos controles de instrumentação do tempo de execução é um, os controles de relatório são verificados e utilizados de acordo com sua função definida.
092. Um bit de controle de relatório de amostra de estado supervisor 914 (bit Qs) é usado em conjunto com os programas de estado supervisor. Quando no estado supervisor e o bit Qs 914 nos controles de instrumentação do tempo de execução é zero, os controles de relatório dos controles de instrumentação do tempo de execução são ignorados quando a instrumentação do tempo de execução é ativada, e, portanto, não causa um grupo de relatório a ser armazenado. Quando no estado supervisor e o bit Qs 914 nos controles de instrumentação do tempo de execução é um, os controles de relatório são verificados e utilizados de acordo com sua função definida.
093. O bit de controle do buffer coletor de estado menos privilegiado 916 (bit Pc) controla as atualizações para o buffer coletor 508 da FIG. 5. Quando em um estado menos privilegiado e o bit PC 916 nos controles de instrumentação do tempo de execução é zero, os controles do buffer coletor dos controles de instrumentação do tempo de execução são ignorados quando a instrumentação do tempo de execução está ativada e atualizações do buffer coletor 508 são evitadas. Quando no estado menos privilegiado e o bit PC 916 nos controles de instrumentação do tempo de execução é um, os controles do buffer coletor são verificados e utilizados de acordo com sua função definida.
094. O bit de controle do buffer coletor de estado supervisor 918 (bit Qc) controla as atualizações para o buffer coletor 508. Quando no estado supervisor e o bit Qc 918 nos controles de instrumentação do tempo de execução é zero, os controles do buffer coletor dos controles de instrumentação do tempo de execução são ignorados quando instrumentação do tempo de execução é ativada e as atualizações para o buffer coletor 508 são evitadas. Quando em um estado supervisor e o bit Qc 918 nos controles de instrumentação do tempo de execução é um, os controles do buffer coletor indicados são verificados e utilizados de acordo com sua função definida.
095. O bit G 920 é o controle pendente de uma interrupção de instrumentação do tempo de execução interrompida, também chamado de interrupção interrompida. Quando o bit G 920 é zero, a interrupção interrompida não é pendente. Quando o bit G 902 é um, uma interrupção interrompida está pendente. Quando o primeiro grupo de relatório em um buffer de programa 522 é escrito, o bit G 920 é configurado como zero. Isto é, quando um endereço de origem do buffer de programa e igual a um endereço de limite do buffer de programa o bit G 920 é configurado como zero. Quando uma tentativa de armazenar outro que o primeiro grupo de relatório em um buffer de programa 522 é feita, o bit G 920 é configurado como zero se a condição da instrumentação do tempo de execução interrompida não existir, e o grupo de relatório é armazenado. Quando uma tentativa de armazenar outro que o primeiro grupo de relatório em buffer de programa 522 é feita, o bit G 920 é configurado como um, se a condição de instrumentação do tempo de execução interrompida existir, e o grupo de relatório não é armazenado.
096. O bit U 922 é o controle de ativação para uma interrupção de buffer cheio e uma interrupção interrompida. Quando o bit U 922 é zero, a geração de um pedido de interrupção é desativado e, se pendente, permanece pendente.
097. O bit L 924 é o controle pendente de uma interrupção de buffer cheio. Quando o bit L 924 é zero, uma interrupção de buffer cheio não está pendente. Quando o bit L 924 é um, uma interrupção de buffer cheio está pendente.
098. O campo de chave 926 é um inteiro não assinado de 4 bits cujo valor é usado como chave de proteção de armazenamento para o armazenamento de um grupo de relatório. Um armazenamento de um grupo de relatório é permitido somente quando a chave de armazenamento corresponde à chave de acesso associada ao pedido de acesso de armazenamento, e uma busca é permitida quando a chave de armazenamento corresponde a chave de acesso ou quando um bit de proteção de busca da chave de armazenamento é zero. As chaves se correspondem quando os quatro bits de controle de acesso da chave de armazenamento são iguais à chave de acesso, ou quando a chave de acesso é zero.
099. A Fig. 10 representa uma porção de um bloco de controle RICCB quando MRIC é permitido a executar no modo semi-privilegiado (isto é, o bit K é um). O bloco de controle 1000 pode incluir valores adicionais diferentes daqueles descritos em referência à FIG. 10. Em uma concretização, quaisquer seções acinzentados do operando de instrução MRIC não são acessíveis por um programa de estado menos privilegiado. Quando é permitido o modo semi-privilegiado, o endereço de origem (ROA) 1002 e o endereço limite 1004 são configurados com a instrução MRIC pelo programa de estado menos privilegiado.
0100. Em uma concretização, um campo de endereço atual (RCA) 1006 pode ser atualizado pela instrução MRIC. O campo de endereço atual 1006 examina o campo do tamanho do grupo de relatório 1044 (campo RGS) e afeta o número de posições de bit significativos usados para formar o endereço do buffer do programa. O endereço atual do buffer do programa de instrução de tempo de execução de 64 bits é a palavra 0, posições de bit de 0 a 26-RGS da palavra 1, e RGS+5 zeros binários anexados à direita. Este é o local de início no buffer de programa 522 da FIG. 5 de um grupo de relatório subsequente que será armazenado no buffer de programa 522. O grupo de relatório é uma unidade de informação que é criado pelo módulo de instrumentação 506 e, subsequentemente armazenado no buffer de programa 522. Em uma concretização, quando o campo RGS 1044 especificado pelo campo de endereço atual 1006 não é igual ao tamanho do grupo do relatório atual do controle de instrumentação do tempo de execução (ou seja, o campo de endereço atual 1006 mudaria o campo RGS 1044), então o campo de endereço atual 1006 é configurado para o endereço de origem 1002.
0101. Um campo de contagem de intervalo de amostra 1042 (campo RSIC) remanescente pode ser atualizado pelo programa menos privilegiado utilizando a instrução MRIC. O campo RSIC 1042 inclui um inteiro não assinado de 64 bits que indica uma contagem de intervalo de amostra remanescente. Quando o valor do campo RSIC 1042 nos controles de instrumentação do tempo de execução é zero ou igual ao valor em um campo de fator de escala (campo SF) 1040, e a instrumentação do tempo de execução é ativada, então o próximo intervalo de amostra é um intervalo completo baseado no campo modo de amostragem 1008 (campo M) e valores do campo SF 1040. Quando o campo RSIC 1042 é não é zero e menor que o campo SF 1040 e instrumentação do tempo de execução é ativada, o próximo intervalo de amostra é um intervalo parcial. Quando o campo RSIC 1042 é diferente de zero e maior que o valor do campo SF 1040 e a instrumentação do tempo de execução é ativada, o próximo intervalo de amostragem é um intervalo prolongado. Quando um intervalo prolongado expira, o próximo intervalo é baseado no valor de campo SF 1040. Quando o campo RSIC 1042 está configurado para um valor diferente de zero, ele é sujeito ao mesmo limite máximo dependente do modelo ao qual o campo SF 1040 também está sujeito. Quando o valor original do campo RSIC 1042 é zero, o modo de amostragem irá ditar se o campo RSIC 1042 está configurado para o valor no campo SF 1040 durante a execução de instruções LRIC e MRIC, ou se continua a mostrar como zero até a instrumentação do tempo de execução estar ativada.
0102. O campo SF 1040 contém um inteiro não assinado de 64 bits cujo valor é uma contagem de fator de escala de unidades. A dimensão das unidades é determinada a partir do campo do modo de amostragem 1008 (campo M). Quando o valor no campo RSIC 1042 é zero, o campo SF 1040 fornece um valor inicial do campo RSIC 1042 que é decrementado até zero, no momento em qual a instrução atual é reconhecida como uma instrução de amostra, e a contagem de intervalo é atualizada a partir do valor do campo SF 1040. Um valor válido do campo SF 1040 é na gama de um a 264 - 1. Se o zero for especificado, um valor de um é assumido. No entanto, cada modelo pode ter tanto um valor mínimo quanto um valor máximo do campo SF 1040. Os valores mínimos e máximos também podem ser diferentes com base no campo de modo de amostragem 1008. Se um valor menor do que o mínimo é especificado, o valor mínimo dependente do modelo é carregado. Se um valor maior do que o valor máximo é especificado, o valor máximo dependente do modelo é carregado.
0103. O campo de controle DC 1036 é um inteiro não assinado de 4 bits cujo valor designa um nível de latência de cache associado a erro de busca de dados ou armazenamento em cache. Ou seja, a instrução de amostra encontrou um erro de cache de dados de acesso. A não ser que seja proibido por outro controle de instrumentação do tempo de execução, é feita uma tentativa para armazenar um grupo de relatório representando a instrução de amostra cujo acesso de dados reconheceu um erro a um nível de latência de cache numericamente maior ou igual ao nível designado pelo valor do campo de controle DC 1036. A estrutura de cache e nível de latência de cache para o acesso de dados é dependente do modelo. Para uma instrução com múltiplos ou longos operandos, é dependente do modelo no qual, se houver, o acesso de operando é utilizado para o controle de relatório. O comportamento dependente do modelo pode ignorar o valor do campo de controle DC 1036 e, portanto, não usá-lo como uma razão para armazenar um grupo de relatório.
0104. O campo de IC 1034 é um inteiro não assinado de 4 bits cujo valor designa um nível de latência de cache associado a erro no cache de busca de instrução. Ou seja, a busca da instrução de amostra encontrou um erro no cache da busca de instrução. Para tanto o campo IC 1034 e o quanto o campo de controle DC 1036, um nível de latência de cache é uma abstração de quão longe um certo acesso de nível de cache está a partir do processador observante. O nível de latência depende da combinação da quantidade de níveis de cache aninhados entre o processador e a memória principal, e como tais níveis de cache são compartilhados entre múltiplos processadores. Um nível de latência maior corresponde geralmente a um acesso mais demorado. Valores no campo IC 1034 e campo de controle DC 1036 podem ser pensados como identificação de origem- zero de um nível de latência de cache. Por exemplo, um valor de zero corresponde a um cache L1 (ou seja, o cache que está mais próximo do processador). Um valor de um é, por conseguinte, a camada seguinte de cache, que pode ser conhecida como um cache L2, ou ainda um cache L1.5 em algumas máquinas. Os valores de 2-15 designam a progressão lógica de camadas de latência de cache adicionais até que a memória principal seja atingida, mas não incluindo a própria memória principal.
0105. Geralmente, as estruturas de cache não chegam a ir tão fundo quanto quinze camadas. Portanto, um valor de 15 no campo IC 1034 e campo de controle DC 1036 é interpretado como um caso especial, o que significa que um erro de cache numa busca de instrução ou de acesso de dados, respectivamente, e independentemente do nível de latência de cache, não é reconhecido para o propósito de gerar o armazenamento de um grupo de relatório. A não ser que seja proibido por outro controle de instrumentação do tempo de execução, é feita uma tentativa para armazenar um grupo de relatório que representa a instrução de amostra cuja busca reconheceu um erro a um nível de latência de cache numericamente maior ou igual ao nível designado pelo valor do campo IC 1034. A estrutura de cache e nível de latência de cache para busca de instrução é dependente do modelo. O comportamento dependente do modelo pode ignorar o valor do campo IC 1034 e, portanto, não usá-lo como uma razão para armazenar um grupo de relatório.
0106. O bit de controle de relatórios que passa por cima do nível de latência de cache 1032 (bit F) é para instruções de não-desvio e para controles de previsão de desvio. Quando o bit F 1032 nos controles de instrumentação do tempo de execução é zero, os controles de relatório de cache (campo IC 1034 e de campo de controle DC 1036) dos controles de instrumentação do tempo de execução são verificados e utilizados de acordo com sua função definida. Os controles de previsão de desvio (bits BPxn 1022, BPxt 1024, BPti 1026, e BPni 1028) dos controles de instrumentação do tempo de execução são verificados e utilizados de acordo com sua função definida. Quando o bit F 1032 é um, esses mesmos controles são ignorados e um grupo de relatório é armazenado a menos que seja proibido por outro controle.
0107. O bit de controle de erro de cache de dados 1030 (bit D) indica se um grupo de relatório deve ser armazenado. Se o bit D 1030 é um, um registro do tipo extra pode ou não pode ser colocado na seção extra do grupo de relatório que contém dados dependentes do modelo acerca da instrução da amostra.
0108. A instrução MRIC inclui controles de relatório (BPxn 1022, BPxt 1024, BPti 1026, e BPni 1028) de previsão de desvio (BP). Se o bit de controle de relatório BP nos controles de instrumentação do tempo de execução é zero, a condição correspondente não é verificada. Se o bit de controle de relatório BP é um e a condição de previsão de desvio correspondente existir, e um grupo de relatório é armazenado.
0109. O bit BPxn 1022, quando um, ativa a verificação da informação de previsão de desvio. Assim, se o desvio de amostra é previsto incorretamente para ser tomado, mas não é tomado, um grupo de relatório é armazenado.
0110. O bit BPxt 1024, quando um, ativa a verificação da informação de previsão de desvio. Assim, se o desvio de amostra é previsto incorretamente para não ser tomado, mas é tomado, um grupo de relatório é armazenado.
0111. O bit BPTI 1026, quando um, ativa a verificação da informação de previsão de desvio. Assim, se o desvio de amostra é previsto corretamente para ser tomado, e é tomado, mas o desvio alvo é incorretamente previsto, um grupo de relatório é armazenado.
0112. O bit BPni 1028, quando um, ativa a verificação da informação de previsão de desvio. Assim, se o desvio de amostra é previsto corretamente para não ser tomado, e não é tomado, e o desvio alvo é incorretamente previsto, um grupo de relatório é armazenado.
0113. O controle de ativação do bit de registros do modo de execução transacional 1020 (bit X) controla a coleta de registros de aborto do modo de execução transacional. Quando o bit X 1020 nos controles de instrumentação do tempo de execução é zero, registros de aborto de modo de execução transacional não são coletados. Quando o bit X 1020 é um, registros de aborto de modo de execução transacional são coletados e colocadas no buffer coletor 508 da FIG. 5. Se um modelo não possuir a instalação de execução transacional instalada, o bit X 1020 é ignorado.
0114. O bit de controle de instrução RIEMIT 1018 (bit E) controla a execução da instrução RIEMIT. Quando o bit E 1018 nos controles de instrumentação do tempo de execução é zero ou ignorado e tratado como zero quando a instrumentação do tempo de execução é ativada, RIEMIT executa uma não- operação. Quando o bit E 1018 é um, e ignorado por outra forma, RIEMIT é ativado para executar sua função definida.
0115. O bit J 1046 quando zero, especifica que o desvio na instrução de condição (BC) está na categoria de desvio outro-tipo, independentemente do valor da máscara. Se o bit J 1046 é um, a instrução BC que especifica uma máscara de 15 está na categoria de desvio tipo de retorno. Quando a instrução BC especifica uma máscara de 1- 14, não é afetada pelo bit J 1046 e está sempre na categoria de desvio de outro tipo. Quando na categoria de desvio tipo de retorno, o bit R 1016 controla inclusão para dentro buffer coletor 508 da FIG. 5. Quando na categoria de desvio de outro-tipo, o bit B 1048 controla a inclusão para dentro do buffer coletor 508. A categoria de desvio de outro-tipo também pode ser indicada como a categoria de desvio do tipo-transferência.
0116. O bit de código de endereço de instrução 1014 (bit C) controla a ativação dos desvios tipo de chamada. Se o bit C 1014 nos controles de instrumentação do tempo de execução é um e a instrução é um desvio do tipo de chamada, o buffer coletor é atualizado. Se a detecção dependente do modelo de ambos os desvios tipo de chamada e tipo de retorno é combinada, o bit C 1014 opera em ambos os tipos e o bit R 1016 não é eficaz.
0117. O bit R 1016 é o controle de ativação de desvios tipo-retorno. Se o bit R 1016 nos controles de instrumentação do tempo de execução é um e a instrução é um desvio do tipo-retorno, então o buffer coletor 508 é atualizado.
0118. O bit B 1048 é o controle de ativação de outros desvios que não sejam os desvios tipo de chamada e tipo-retorno. Se o bit B 1048 nos controles de instrumentação do tempo de execução é um e a instrução é um desvio de outro- tipo reconhecido pela instrumentação do tempo de execução, então o buffer coletor 508 é atualizado.
0119. O bit excedido do endereço máximo 1012 (bit MAE), se configurado como 1, indica que, um ou mais grupos de relatório foram armazenados que têm um código de endereço de instrução (campo C) configurado a um. Uma vez que o bit MAE 1012 está configurado para um, a continuação da execução da instrumentação do tempo de execução não o configurará de volta para zero. A execução da instrução LRIC ou da instrução MRIC que especifica o bit MAE como zero vai configurar o bit MAE para zero.
0120. O bit de controle 1010 (bit N) da próxima instrumentação do tempo de execução (RINEXT) controla a ativação da próxima instrução da instrumentação do tempo de execução, que controla a execução de uma instrução de amostra. Quando o bit N 1010 nos controles de instrumentação do tempo de execução é zero ou ignorado e tratado como zero, RINEXT executa uma não-operação. Quando o bit N 1010 é um, e não ignorado de outra forma, RINEXT está ativado para executar sua função definida.
0121. O campo modo de amostragem 1008 (campo M) é um inteiro não assinado de 4 bits cujo valor nos controles de instrumentação do tempo de execução especifica o modo de amostragem para os controles de instrumentação do tempo de execução.
0122. O campo de tamanho do grupo de relatório 1044 (RGS) é um inteiro não assinado de 3 bits cujo valor especifica o número de registros de um grupo de relatório (RRG). O número de registros em um grupo de relatório pode variar de dois registros, incluindo um registro começar/estampa de tempo e um registro de última instrução, até duzentos e cinquenta e seis registros. Numa concretização, o limite superior pode ser dependente do modelo. O número de registros de 16 bytes colocados num grupo de relatório é 2(RGS + 1).
0123. O bit de controle de supressão da capacidade de CPU-principal 1038 (bit Y) e o bit de controle de supressão da capacidade da CPU-secundária 1039 (bit Z) são referidos coletivamente como o controle de supressão. Supressão do armazenamento de um grupo de relatório significa que uma tentativa para armazenamento não é realizada. O controle da supressão não é eficaz e nenhuma supressão ocorre quando a capacidade da CPU de todas as CPUs na configuração é a mesma. Em uma configuração, se a capacidade de CPU de uma CPU difere da capacidade de outra CPU, o controle de supressão está em vigor, e pelo menos uma CPU é dita como estar operante na capacidade de CPU ou capacidade de CPU-primária enquanto pelo menos uma outra CPU é dita estar operante em capacidade de CPU-secundária. As capacidades da CPU-primária e CPU- secundária são diferentes velocidades de operação. Quando bit Y 1038 e bit Z 1039 são ambos zero, a supressão não ocorre. Quando bit Y 1038 é zero e o bit Z 1039 é um, a supressão ocorre se a CPU, por exemplo, o processador 106, está operando com a capacidade de CPU- secundária. Quando bit Y 1038 é um e o bit Z 1039 é zero, a supressão ocorre se a CPU, por exemplo, o processador 106, está operando com a capacidade de CPU-primária. Quando bit Y 1038 e bit Z 1039 são ambos um, ocorre a supressão.
0124. Os campos e bits da FIG. 10 acima são um exemplo da colocação e nomenclatura dos campos e são aqui fornecidos para fins de clareza. Deve ser entendido que em outras concretizações o apenas um subconjunto dos campos pode ser utilizado, os campos podem estar em qualquer ordem ou posição, e/ou podem ser representados por nomes diferentes.
0125. Conforme descrito anteriormente, quando a instrumentação do tempo de execução é ativada durante a execução do programa, dados da instrumentação do tempo de execução são coletados dentro do processador 106 no buffer coletor 508. Em uma concretização, o buffer coletor 508 é um buffer interno do processador 106 que é usado para salvar os registros coletados mais recentes. Quando um ponto de acionamento de amostra é detectado, os registros são copiados a partir do buffer coletor 508 para o buffer de programa 522 como parte de um grupo de relatório que é escrito para o buffer de programa 522. Em uma concretização, os registros são copiados do buffer coletor 508 em uma maneira não destrutiva.
0126. O buffer coletor 508 pode ser referido como um "buffer coletor de hardware" porque o buffer coletor 508 está localizado no processador e numa concretização implementado como uma matriz de pares de registradores para armazenar um endereço de instrução e metadados de evento para um determinado evento. Um exemplo de um evento é um desvio tomado para o qual o par de registradores pode conter o endereço de instrução do desvio, e os metadados podem conter o alvo do desvio assim como informações sobre o comportamento histórico do desvio. Em uma concretização, os pares de registradores são ordenados e atualizados sequencialmente a medida em que eventos ocorrem no fluxo de instruções. Um contador é mantido para indicar o índice da entrada atualizada mais recentemente na matriz. Numa concretização o buffer coletor 508 é um buffer circular, e quando o buffer coletor 508 está cheio, o próximo evento sobrescreve a primeira entrada na matriz, e atualização sequencial de pares de registradores reinicia nos eventos subsequentes da matriz. Como tal, assumindo uma matriz CB[0] para CB[N-1] e um contador i indicando o índice atualizado mais recentemente, o traço de eventos capturados seria representado pela sequência CB [i], CB [i-1]... CB[1], CB[0], CB[N-1], CB[N-2]... CB[i+1]. Em outra concretização, dois ponteiros são usados: um ponteiro cabeça apontando para a entrada mais antiga no buffer, e um ponteiro cauda/atual apontando para a entrada mais recente no buffer.
0127. Os eventos que representam um estado do processador 106 em qualquer ponto de execução oferecido são capturados em sequência no buffer coletor 508. O buffer coletor 508 é usado para capturar um conjunto de registros cujo conteúdo relata sobre eventos reconhecidos pelo processador 106 durante a execução do programa (por exemplo, a execução de um ou mais desvios tomados, eventos de aborto de execução transacional, o operando de uma instrução RIEMIT, etc.). Numa concretização os eventos reconhecidos dependem do conteúdo do RICCB mostrado na FIG. 10. As entradas na concretização do buffer coletor 508 mostradas incluem um endereço de instrução de evento e outros metadados de eventos relevantes. Exemplos de metadados de evento incluem, mas não estão limitados a: o endereço de instrução de um desvio tomado e seu alvo incluindo alguma informação sobre o comportamento histórico do desvio; o endereço de instrução de uma instrução RIEMIT e um respectivo valor de registrador; e o endereço de uma instrução de abortar transação e um ponto de entrada de recuperação de transação respectivo.
0128. Uma concretização do buffer coletor 508 armazena até trinta e duas entradas (ou seja, informação sobre trinta e dois eventos), com cada endereço de instrução especificado por sessenta e quatro bits (por exemplo, bits 0:63), e os metadados de evento por sessenta e quatro bits (por exemplo, bits 64:127). O tamanho do buffer coletor (RCB) é uma contagem dependente de modelo, representando um número de registros. Numa concretização, o tamanho de bytes do buffer coletor 508 é um múltiplo de um tamanho de registro de dezesseis bytes. O tamanho do buffer coletor (RCB) é um número de registros maior que ou igual à diferença entre a contagem do maior grupo de relatório (RRG) do modelo e a contagem dos registros em um grupo de relatório que não são adquiridos a partir do buffer coletor (RNC). Assim, numa concretização, o tamanho do buffer coletor é expressada como: RCB > (RRG - RNC)
0129. Em uma concretização, o conteúdo do buffer coletor 508 e o buffer de dados de instrução (se um for usado) são removidos ou afetado de outra forma pelos seguintes eventos: (1) uma interrupção; (2) o bit PSW que liga e desliga a instalação de instrumentação do tempo de execução (por exemplo, bit 24) muda de um para um zero; e (3) quando uma instrução de amostra é identificada quando a instalação de instrumentação do tempo de execução está em um modo de execução transacional (neste caso, atualizações seguintes do buffer coletor de dados 508 e buffer de dados de instrução param e recomeçam quando a transação termina, no momento em que, um armazenamento do grupo de relatório está pendente e o buffer coletor 508 e buffers de dados de instrução são removidos).
0130. Em uma concretização, tal como o sistema de computador hospedeiro emulado mostrado na FIG. 1B, o buffer coletor 508 é implementado utilizando registradores e/ou memória. Nesta concretização, o buffer de dados de instrução opcional, se estiver presente, é também implementado utilizando registradores e/ou memória.
0131. Em concretizações, capacidades adicionais podem afetar a coleta de dados e podem ser vistas como fornecedores de pontos de coleta de dados adicionais, sem no entanto perturbar substancialmente a contagem de instrução regular ou contagem de ciclo de amostragem anteriormente descrita. Estes incluem a execução de uma instrução RIEMIT, que coleta o valor de um registrador geral através de seu armazenamento no buffer coletor 508. Além disso, os bits de controle de coleta de dados nos controles de instrumentação do tempo de execução descritos anteriormente podem ser utilizados para customizar os tipos de dados coletados (por exemplo, os bits de controle E, C, R, e B). Desta maneira, o tipo de dado coletado é programável.
0132. Em uma concretização, um buffer de dados de instrução é implementado para coletar dados de instrução de amostra dependente do modelo que é utilizado para a construção de um registro de instrução de instrumentação do tempo de execução. O buffer de dados de instrução coleta dados a partir de uma instrução na expectativa de estar disponível quando a instrução é identificada como uma instrução de amostra. Numa concretização, o buffer de dados de instrução é um local de armazenamento/buffer de hardware no processador onde a informação sobre uma instrução que se tornaria um acionador como um ponto de amostra é salva, de modo que, durante o processo de saída (log out), ele pode ser escrito em conjunto com os dados do buffer coletor 508. Similar ao buffer coletor 508 que inclui o endereço de instrução, e metadados associados a essa instrução. Os metadados no buffer de dados de instrução são muitas vezes dependentes da máquina e podem incluir, mas não estão limitados a: informação relacionada a erro de cache e informação relacionada a previsão de desvios.
0133. De acordo com as concretizações, os outros dados coletados podem não ser do buffer coletor 508, e não ser do buffer de dados de instrução. Exemplos incluem dados utilizados para formar partes dos seguintes: (1) o primeiro registro de um grupo de relatório: estampa de tempo ou começar a registrar; e (2) tipos de registros adicionais podem ser criados para cada grupo de relatório e, assim não são armazenados no buffer coletor 508, tais registros, quando presentes, podem ser colocados na seção extra ou dependente da máquina de um grupo de relatório. Esses registros são referidos aqui como "registros de informação do sistema."
0134. A Fig. 11 representa uma porção de um bloco de controle RICCB quando MRIC não é permitida a executar no modo semi-privilegiado (isto é, o bit K é zero). O bloco de controle 1100 pode incluir valores adicionais diferentes daqueles descritos em referência à FIG. 11. Quando o modo semi-privilegiado não é permitido, a seção de endereço de origem 1102 e a seção de endereço de limite 1104 não são utilizadas e os valores atuais não modificados pelo programa de estado menos privilegiado.
0135. Em uma concretização, apenas um subconjunto de todas as configurações de controle de instrumentação do tempo de execução são atualizados pela execução bem-sucedida da instrução MRIC pelo programa de estado menos privilegiado.
0136. Quando o RICCB é buscado, um número de erros pode ser encontrado. Além disso, se o endereço do RICCB na instrução MRIC não está devidamente alinhado então uma exceção é encontrada. Da mesma forma, se o endereço na instrução MRIC é inacessível, seja por causa de um estado de erro ou um endereço inválido, então uma exceção é encontrada. Se durante a execução da instrução MRIC for determinado que os valores de RICCB entram em conflito em qualquer forma definida (ou seja, eles são internamente inconsistentes) uma exceção também é encontrada.
0137. Em uma concretização, uma exceção de operação-especial é reconhecida por qualquer uma das seguintes razões: uma instrução MRIC é dada e instrumentação do tempo de execução é ativada; os controles de tempo de execução atuais não são válidos; e/ou o processador está no estado menos privilegiado e o bit parado pela instrumentação do tempo de execução nos controles atuais de instrumentação do tempo de execução é zero.
0138. Em uma concretização, uma exceção de especificação é reconhecida por qualquer uma das seguintes razões: o operando de armazenamento de MRIC não está alinhado em um fronteira de palavra dupla; o processador está no estado supervisor ou o bit K nos controles de instrumentação do tempo de execução atuais é um e qualquer uma das seguintes condições é reconhecida: o endereço do limite especificado é menor do que o endereço de origem especificado; o endereço atual especificado é menor que o endereço de origem especificado; e o endereço atual especificado é maior do que a soma de um mais o endereço de limite gerado especificado; e o processador está no estado menos privilegiado, o bit K nos controles RI atuais é zero e qualquer uma das seguintes condições é reconhecida: o endereço atual especificado é menor do que o endereço de origem atual; o endereço atual especificado é maior do que a soma de um mais o endereço de limite atual; um modo inválido é especificado.
0139. Em uma concretização, uma instrução MRIC que é definida para um determinado processador de uma arquitetura pode ser executada por um segundo processador de uma arquitetura diferente. Numa concretização, o segundo processador identifica uma rotina de emulação baseada em software, e executa a instrução MRIC utilizando a rotina de emulação baseada em software.
0140. A Fig. 12 representa um exemplo de alto nível de um grupo de relatório 1200 armazenado em um buffer de programa 522 em um ponto de amostra. O tamanho de um grupo de relatório nos registros é representado por RRG, é igual a 2 (RGS+1), onde RGS é o tamanho do grupo de relatório como um expoente. Um número de registros dependente do modelo (RNC) copiado de um outro local que não seja o buffer coletor 508 pode ou não pode ser copiado de forma não destrutiva quando utilizado em um grupo de relatório. No exemplo da FIG. 12, RRG = 8, RGS = 2, e RNC = 4. O grupo de relatório 1200 de exemplo mostrado na FIG. 12 inclui uma seção de cabeçalho 1202, uma seção do corpo 1204, uma seção de registros extra 1206, e uma seção de rodapé 1208.
0141. A seção de cabeçalho 1202 pode incluir um registro de começar ou um registro de estampa do tempo para manter o status, informação de acompanhamento e/ou de acompanhamento de tempo. Um registro de começar é armazenado na seção de cabeçalho 1202 para o primeiro grupo de relatório armazenado num buffer de programa (isto é, quando o RCA 1006 é igual à ROA 1002). Em uma concretização, um registro de começar inclui um campo de tipo de registro "02", um campo de número de grupos de relatório (NRG) para indicar quantos grupos de relatório estão atualmente armazenados no buffer de programa, um campo RGS para indicar o tamanho dos grupos de relatório, um campo (S) parado para indicar se o buffer programa 522 está cheio ou não, um campo (H) interrompido para acusar se a instrumentação do tempo de execução é interrompida, e um campo de relógio hora do dia (TOD) para indicar quando o registro de começar foi escrito. Numa concretização, pelo menos um subconjunto dos campos no registro de começar são trazidos a partir do bloco de controle RI (por exemplo, RICCB). Uma concretização do registro de estampa de tempo tem um tipo de registro de "03" e inclui um campo de relógio TOD para indicar quando o registro foi armazenado. Numa concretização, um registro de estampa do tempo é armazenado na seção de cabeçalho 1202 para cada grupo de relatório diferente do primeiro grupo de relatório.
0142. A seção do corpo 1204 do grupo de relatório pode incluir uma variedade de registros de eventos e informações amostrados do buffer coletor 508. Eventos e informações podem representar, por exemplo, informações sobre o estado capturado por uma instrução emitir, um aborto de execução transacional, uma chamada, um retorno, um desvio, e enchimento.
0143. Numa concretização, um registro emite é criado e armazenado no buffer coletor 508 mediante uma execução bem-sucedida de uma instrução de RIEMIT. Uma concretização do registro emite inclui um campo de tipo registro de "10", um campo de código de endereço de instrução para indicar como as posições dos bits de endereço de instrução da PSW atual são representados no registro emite, um campo de endereço de instrução que varia de acordo com o modo de endereçamento (por exemplo, 64, 31 ou 24 bits) e contém o endereço da instrução da instrução RIEMIT ou instrução do tipo executar se o RIEMIT foi alvo de uma instrução tipo executar, e um campo de dados emite para armazenar os dados do registrador geral especificado pela instrução RIEMIT.
0144. Numa concretização, um registro de aborto de modo de execução transacional é criado e armazenado no buffer coletor 508 ou por um aborto implícito ou por execução de uma instrução de aborto transacional. Uma concretização do registro de aborto inclui um campo de tipo registro de "11", um campo de código de endereço de instrução para indicar como as posições dos bits de endereço de instrução da PSW atual são representados no registro de aborto de execução transacional, um campo de endereço de instrução que varia dependendo do modo de endereçamento (por exemplo, 64, 31 ou 24 bits) e contém o endereço da instrução da instrução abortada ou instrução do tipo executar se a instrução abortada foi o alvo de uma instrução tipo executar, e um campo para quaisquer dados dependentes do modelo associados com o aborto.
0145. Em uma concretização, um registro de chamada é criado pela execução de uma instrução de desvio tipo de chamada, como: DESVIO e SALVA (BASR) quando o campo R2 é diferente de zero, DESVIO e SALVA (BAS), DESVIO E SALVA (BAS), DESVIO RELATIVO E SALVA LONGO, DESVIO RELATIVO E SALVA, DESVIO E LINK (BALR) quando o campo R2 é diferente de zero, DESVIO E LINK (BAL) e DESVIO E SALVA E CONFIGURA MODO quando o campo R2 é diferente de zero. Uma concretização do registro de chamada inclui um campo de tipo registro de "12", um campo de código de endereço de instrução para indicar como as posições de bits de endereço de instrução da PSW atual são representados no registro de chamada, um campo de endereço de instrução que varia de acordo com o modo de endereçamento (por exemplo, 64, 31 ou 24 bits) e contém o endereço da instrução de desvio ou instrução do tipo executar se a instrução de desvio foi o alvo de uma instrução tipo executar, e um campo bem comportado para indicar se o desvio foi corretamente previsto ou não, e um campo de endereço do alvo, contendo o endereço do alvo de desvio (também referido como o "local chamado").
0146. Registros de retorno e registros de transferência podem ter o mesmo formato que os registros de chamadas. Em uma concretização, um registro de retorno tem um campo de tipo registro "13" e é criado pela execução de uma instrução de desvio de tipo retorno como DESVIO NA CONDIÇÃO (BCR) quando o campo R2 é diferente de zero e a máscara é 15. Para o registro de retorno, o campo de endereço da instrução contém o endereço da instrução de desvio ou instrução do tipo executar se o desvio é o alvo de uma instrução tipo executar, e no campo de endereço do alvo contém o local de retorno.
0147. Numa concretização, um registro de transferência tem um campo de tipo de registro de "14" e é criado pela execução de uma instrução de desvio tipo de retorno, tais como: a. BRANCH ON CONDITION (BCR) (DESVIO NA CONDIÇÃO) quando o campo R2 é diferente de zero e a máscara está no intervalo 1-14; b. BRANCH ON CONDITION (BC) (DESVIO NA CONDIÇÃO) quando o bit J é zero ou a máscara está na gama de 1-14; c. BRANCH ON COUNT (BCT, BCTR, BCTG, BCTGR) (DESVIO NA CONTAGEM); d. BRANCH ON INDEX HIGH (BXH, BXHG) (DESVIO NO ÍNDICE PARA MAIOR); e. BRANCH ON INDEX LOW OR EQUAL (BXLE, BXLEG) (DESVIO NO ÍNDICE PARA MAIOR OU IGUAL); f. BRANCH RELATIVE ON CONDITION (BRC) (DESVIO RELATIVO NA CONDIÇÃO) g. BRANCH RELATIVE ON CONDITION LONG (BRCL) (DESVIO RELATIVO NA CONDIÇÃO LONGO); h. BRANCH RELATIVE ON COUNT (BRCT,BRCTG) (DESVIO RELATIVO NA CONTAGEM); i. BRANCH RELATIVE ON COUNT HIGH(BRCTH) (DESVIO RELATIVO NA CONTAGEM PARA MAIOR); j. BRANCH RELATIVE ON INDEX HIGH(BRXH, BRXHG) (DESVIO RELATIVO NO INDEX PARA MAIOR); k. BRANCH RELATIVE ON INDEX LOW OR EQUAL (BRXLE, BRXLG) (DESVIO RELATIVO NO INDEX PARA MENOR OU IGUAL); l. COMPARE AND BRANCH (CRB, CGRB) (COMPARAR E DESVIAR); m. COMPARE AND BRANCH RELATIVE (CRJ,CGRJ) (COMPARAR E DESVIO RELATIVO); n. COMPARE IMMEDIATE AND BRANCH(CIB, CGIB) (COMPARAR IMEDIATO E DESVIO); o. COMPARE IMMEDIATE AND BRANCH RELATIVE (CIJ, CGIJ) (COMPARAR IMEDIATO E DESVIAR RELATIVO); p. COMPARE LOGICAL AND BRANCH(CLRB, CLGRB) (COMPARAR LOGICAMENTE E DESVIO); q. COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ, CLGRJ) (COMPARAR LOGICAMENTE E DESVIO RELATIVO); r. COMPARE LOGICAL IMMEDIATE AND BRANCH (CLIB, CLGIB) (COMPARAR LOGICAMENTE IMEDIATO E DESVIO); e s. COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE (CLIJ, CLGIJ) (COMPARAR LOGICAMENTE IMEDIATO E DESVIO ). O registro de transferência é criado quando o desvio é tomado. Para o registro de transferência, o campo de endereço da instrução contém o endereço da instrução de desvio ou instrução do tipo executar se o desvio é o alvo de uma instrução tipo executar, e no campo de endereço de alvo contém o local de retorno.
0148. Um registro de enchimento é utilizado em um grupo de relatório quando o número de registros válidos no buffer coletor 508 não for suficiente para encher um grupo de relatório de RGS atual. Uma concretização de um registro de enchimento inclui campo de tipo de registro "00" para indicar que o registro é um registro de enchimento e os bytes remanescentes são indefinidos.
0149. A seção de registros extra 1206, quando presente, pode conter registros dependentes do modelo. Em uma concretização, o formato de um registro extra é semelhante ao registro de enchimento exceto para o tipo de registro ser configurado como "01" para indicar que o registro é um registro extra e os bytes remanescentes do registro extra podem conter dados dependentes do modelo.
0150. A seção de rodapé 1208 pode incluir um registro de instrução contendo informações sobre a execução de uma instrução de amostra. Um registro de instrução é criado quando um grupo de relatório é armazenado para uma instrução de amostra. Uma concretização do registro de instrução inclui um campo de tipo registro de "04", um campo de código de endereço de instrução para indicar como as posições dos bits de endereço de instrução da PSW atual são representados no registro de instrução, um campo de endereço de instrução que varia de acordo com o modo de endereçamento (por exemplo, 64, 31 ou 24 bits) e contém o endereço da instrução da instrução de amostra ou instrução do tipo executar, se a instrução da amostra foi o alvo de uma instrução tipo executar, e campo do buffer de dados de instrução (IDB) contendo quaisquer dados dependentes do modelo coletados do IDB.
0151. Como foi descrito acima, concretizações podem ser concretizadas na forma de aparelhos e processos implementados por computador para a prática de tais processos. Uma concretização pode incluir um produto programa de computador 1300, conforme representado na FIG. 13 em meio legível/utilizável por computador 1302 com a lógica de código de programa de computador 1304 contendo instruções concretizadas em mídias tangíveis, como um artigo de fabricação. Exemplos de artigos de fabricação para meio legível/utilizável por computador 1302 podem incluir disquetes, CD-ROMs, discos rígidos, memória universal flash drive (USB), ou qualquer outro meio de armazenamento legível por computador, no qual, quando a lógica de código de programa de computador 1304 é carregada para dentro e executada por um computador, o computador se torna um aparelho para praticar a invenção. As concretizações compreendem a lógica de código de programa de computador 1304, por exemplo, se armazenado num meio de armazenamento, carregado em e/ou executado por um computador, ou transmitido através de algum meio de transmissão, tais como através de cabos ou cabos elétricos, através de fibras óticas, ou via radiação eletromagnética, em que, quando a lógica de código de programa de computador 1304 é carregada para dentro e executada por um computador, o computador se torna um aparelho para praticar a invenção. Quando implementado em um microprocessador de propósito geral, os segmentos da lógica de código de programa de computador 1304 configuram o microprocessador para criar circuitos lógicos específicos.
0152. Efeitos e benefícios técnicos incluem uma instrução MRIC que é executável por um programa de estado menos privilegiado para modificar as configurações da instrumentação do tempo de execução no tempo de execução a partir do estado menos privilegiado.
0153. A terminologia utilizada aqui tem como propósito descrever apenas concretizações particulares e não tem a intenção de ser limitativa à invenção. Tal como são utilizadas aqui, as formas singulares "um", "uma" e "a","o" destinam-se a incluir as formas de plural também, a menos que o contexto claramente indique o contrário. Será ainda compreendido que os termos "compreende" e / ou "compreendendo", quando utilizados nessa especificação, especificam a presença dos atributos, inteiros, etapas, operações, elementos, e/ou componentes mencionados, mas não excluem a presença ou adição de um ou mais outros atributos, inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
0154. As estruturas correspondentes, materiais, atos e equivalentes de todos os meios ou etapa mais elementos funcionais nas reivindicações abaixo destinam-se a incluir qualquer estrutura, material ou ato para a execução da função em combinação com outros elementos reivindicados como são especificamente reivindicados. A descrição da presente invenção foi apresentada para fins de ilustração e descrição, mas não se destina a ser exaustiva ou limitada à invenção na forma descrita. Muitas modificações e variações serão evidentes para aqueles com habilidades comuns na arte sem afastarem-se do escopo e do espírito da invenção. A concretização foi escolhida e descrita de modo a explicar da melhor forma os princípios da invenção e a sua aplicação prática, e para permitir que outros com habilidades comuns na arte compreendam a invenção, para várias concretizações com várias modificações conforme sejam apropriadas para o uso particular contemplado.
0155. Como será apreciado por aqueles com habilidades comuns na técnica, aspectos da presente invenção podem ser concretizados como um sistema, método e produto de programa de computador. Consequentemente, aspectos da presente invenção podem tomar a forma de uma concretização totalmente de hardware, uma concretização totalmente de software (incluindo firmware, software residente, micro-código, etc.) ou uma concretização combinando os aspectos de software e hardware, todos que podem ser geralmente referidos aqui como um "circuito", "módulo"ou "sistema". Além disso, aspectos da presente invenção podem tomar a forma de um produto programa de computador concretizado em um ou mais meios legíveis por computador tendo código de programa legível por computador concretizado nele.
0156. Qualquer combinação de um ou mais meios legíveis por computador pode ser utilizada. O meio legível por computador pode ser um meio de sinal legível por computador ou um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a, um sistema ou um aparelho ou dispositivo eletrônico, magnético, ótico, eletromagnético, infravermelho semicondutor, ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem o seguinte: uma conexão elétrica tendo um ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória apenas de leitura (ROM), uma memória programável apagável somente de leitura (EPROM ou memória Flash), uma fibra ótica, um disco compacto portátil de memória somente de leitura (CD- ROM), um dispositivo de armazenamento ótico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para utilização de, ou em conexão com um sistema, aparelho ou dispositivo de execução de instruções.
0157. Um meio de sinal legível por computador pode incluir um sinal de dados propagados com código de programa legível por computador nele concretizado, por exemplo, na banda de base ou como parte de uma onda carregadora. Tal sinal propagado pode tomar qualquer uma de uma variedade de formas, incluindo, mas não limitado a, eletromagnético, ótico, ou qualquer combinação apropriada dos mesmos. Um meio de sinal legível por computador pode ser qualquer meio legível por computador que não é um meio de armazenamento legível por computador e que pode se comunicar, propagar, ou transportar um programa para uso de, ou em conexão com um sistema, aparelho ou dispositivo de execução de instruções.
0158. Código do programa concretizado em um meio legível por computador pode ser transmitido usando qualquer meio apropriado, incluindo mas não se limitando a sem fios, cabo, cabo de fibra ótica, RF, etc., ou qualquer combinação adequada dos mesmos.
0159. O código de programa de computador para a realização de operações para aspectos da presente invenção podem ser escritos em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos como Java, Smalltalk, C++ ou as linguagens de programação procedurais convencionais, tal como a linguagem de programação "C" ou linguagens de programação semelhantes. O código do programa pode executar inteiramente no computador do usuário, parcialmente no computador do usuário, como um pacote de software independente, parcialmente no computador do usuário e parcialmente num computador remoto ou inteiramente no computador ou servidor remoto. Neste último cenário, o computador remoto pode ser conectado ao computador do usuário por meio de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de área ampla (WAN), ou a conexão pode ser feita para um computador externo (por exemplo, através da Internet usando um provedor de serviços de Internet).
0160. Os aspectos da presente invenção estão descritos acima com referência às ilustrações do fluxograma e/ou diagramas esquemáticos de métodos, aparelhos (sistemas) e produtos de programa de computador de acordo com as concretizações da invenção. Será compreendido que cada bloco das ilustrações de fluxograma e/ou diagramas de blocos, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de blocos, podem ser implementados por instruções de programa de computador. Estas instruções de programa de computador podem ser fornecidas para um processador de um computador de uso geral, computador de propósito especial, ou outro aparelho processador de dados programável para produzir uma máquina, de tal modo que as instruções, que executam através do processador do computador ou outro aparelho processador de dados programável, criam meios para a implementação das funções/ atos especificados no bloco de fluxograma e/ ou diagrama de blocos ou blocos.
0161. Estas instruções de programa de computador podem também ser armazenadas num meio legível por computador que pode direcionar um computador, outro aparelho processador de dados programável, ou outros dispositivos para funcionar de uma forma particular, de tal modo que as instruções armazenadas no meio legível por computador produza um artigo de fabricação incluindo instruções que implementam a função/ato especificado no bloco de fluxograma e/ ou diagrama de blocos ou blocos.
0162. As instruções do programa de computador também podem ser carregadas num computador, outro aparelho processador de dados programável, ou outros dispositivos para causar uma série de etapas operacionais para serem executadas no computador, outro aparelho programável ou outros dispositivos para produzir um processo implementado por computador de tal forma que as instruções que executam no computador ou outro aparelho programável forneçam processos para a implementação das funções/atos especificados no bloco de fluxograma e/ou diagrama de blocos ou blocos.
0163. Como é descrito acima, concretizações podem ser concretizadas na forma de aparelhos e processos implementados por computador para a prática de tais processos. Em concretizações, a invenção é concretizada em código de programa de computador executado por um ou mais elementos de rede. Concretizações incluem um produto programa de computador em um meio utilizável por computador com lógica de código de programa de computador contendo instruções concretizadas em mídia tangível como um artigo de fabricação. Exemplos de artigos de fabricação de meio utilizável por computador pode incluir disquetes, CD-ROMs, discos rígidos, memória universal flash drive (USB), ou qualquer outro meio de armazenamento legível por computador, no qual, quando a lógica de código de programa de computador é carregada para dentro e executada por um computador, o computador se torna um aparelho para praticar a invenção. As concretizações incluem lógica de código de programa de computador, por exemplo, se armazenado num meio de armazenamento, carregado em e/ou executado por um computador, ou transmitido através de algum meio de transmissão, tais como através de cabos elétricos ou cabos, através de fibras óticas ou através de radiação eletromagnética, em que, quando a lógica de código de programa de computador é carregada para dentro e executada por um computador, o computador se torna um aparelho para praticar a invenção. Quando implementado num microprocessador de propósito geral, os segmentos da lógica de código de programa de computador configuram o microprocessador para criar circuitos lógicos específicos.
0164. Os diagramas de blocos e fluxograma nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações da presente invenção. Com essa consideração, cada bloco nos fluxogramas ou diagramas de blocos podem representar um módulo, segmento, ou porção do código, que compreende uma ou mais instruções executáveis para implementar a função(ões) lógica(s) especificada(s). Deve-se também notar que, em algumas implementações alternativas, as funções notadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, serem executado simultaneamente substancialmente, ou os blocos podem, por vezes serem executados na ordem inversa, dependendo da funcionalidade envolvida. Também irá ser notado que cada bloco do diagrama de blocos e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração de fluxograma, podem ser implementados por sistemas baseados em hardware para propósitos especiais, que realizam as funções ou atos especificados, ou combinações de instruções de computadores e hardware para propósito especiais.

Claims (15)

1. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, implementado por computador para a execução de uma instrução de modificação de controles de instrução de tempo de execução (MRIC), a instrução MRIC executável em ou estado supervisor ou um estado menos privilegiado, a instrução MRIC para configurar apenas um subconjunto de controles de instrumentação do tempo de execução, onde todos os referidos controles de instrumentação do tempo de execução são carregáveis por uma instrução de controles de instrumentação do tempo de execução (LRIC) de carga privilegiada, caracterizado por compreender as etapas de: busca da instrução MRIC, a instrução MRIC incluindo o endereço de um bloco de controle de instrumentação do tempo de execução (RICCB); busca, por um processador, do RICCB, o RICCB incluindo uma pluralidade de valores para modificar o referido subconjunto de controles de instrumentação do tempo de execução do processador, o subconjunto de controles de instrumentação do tempo de execução compreendendo um endereço atual de buffer de programa de instrumentação do tempo de execução (RCA) de um local de buffer de programa de instrumentação do tempo de execução (RIB), a RIB para a conter informações de eventos da instrumentação do tempo de execução reconhecidos pelo processador durante a execução do programa; e um ou mais RICCB inclui ainda um ou mais dos seguintes um controle para gerenciar os detalhes de amostragem de dados da instrumentação do tempo de execução; um controle para gerenciar os detalhes da coleta de dados da instrumentação do tempo de execução; um controle para gerenciar os detalhes do relatório de dados de instrumentação do tempo de execução para um buffer de programa; um controle para gerenciar a detecção de erros de cache de instrução; um controle para gerenciar a detecção de erros de cache de dados; um controle para gerenciar o tamanho de um grupo de relatório; um controle para gerenciar um endereço atual dentro de um buffer de programa de saída no qual um próximo grupo de relatório é armazenado; controles para gerenciar a coleta de dados de dados em desvios de tipo de chamada, tipo de retorno e tipo de transferência; e controles para gerenciar a coleta de dados de desvios que estão correta ou incorretamente previstos e tomados ou não tomados; carregamento da pluralidade de valores para os controles de instrumentação do tempo de execução; e utilização da pluralidade de valores carregada para fornecer informação de eventos da instrumentação do tempo de execução para o RIB;
2. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 1, caracterizado ainda pelas etapas de: derivar um valor limitado dependente do modelo para, pelo menos, um da pluralidade de valores da RICCB; e carregar o valor limitado dependente do modelo como um valor atualizado nos controles de instrumentação do tempo de execução;
3. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 2 e baseado em um da pluralidade de valores do RICCB sendo o controle para gerenciar um tamanho de grupo de relatório, caracterizado por: carregar o valor limitado dependente do modelo; baseado em um campo K dos controles de instrumentação do tempo de execução tendo um primeiro valor, configurar um endereço atual para um valor de endereço de origem do RICCB; e baseado no campo K dos controles de instrumentação do tempo de execução tendo um segundo valor, configurar o endereço atual para um valor de um valor de endereço atual do RICCB especificado;
4. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 1, caracterizado por compreender ainda a etapa de: causar uma exceção, baseado em qualquer uma ou mais das seguintes determinação que o endereço na instrução MRIC não se alinhe com um limite de palavra dupla; e determinação que o RICCB não pode ser buscado a partir do endereço incluído na instrução MRIC;
5. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 1, caracterizado por compreender ainda as etapas de: determinar que um ou mais valores no RICCB são válidos, onde a determinação compreende ainda qualquer uma das seguintes ações determinar que um bit S de instrumentação do tempo de execução indica que a execução da instrução MRIC a partir do estado menos privilegiado não é permitida; determinar que os controles de instrumentação do tempo de execução não são válidos; e determinar que a instrumentação do tempo de execução não está ativada;
6. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 1, caracterizado por: a instrução MRIC ser definida para uma primeira arquitetura de computadores, e a busca e análise ser executada por um segundo processador de uma arquitetura de computador alternativa, a busca e análise pelo segundo processador compreendendo identificar uma rotina de software para emular a execução da instrução MRIC na primeira arquitetura de computador; e executar a instrução MRIC com a rotina de software;
7. MÉTODO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, computador de acordo com a Reivindicação 1 é caracterizado por: nenhum valor nos controles de instrumentação do tempo de execução será atualizado se for encontrado um erro;
8. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, onde um equipamento ou sistema de computador para executar uma instrução de modificação de controles de instrumentação do tempo de execução (MRIC) tanto de um estado supervisor quanto de um estado menos privilegiado, a instrução MRIC para configurar apenas um subconjunto de controles de instrumentação do tempo de execução, onde todos os referidos controles de instrumentação do tempo de execução são carregáveis por uma instrução de controles de instrumentação do tempo de execução (LRIC) de carga privilegiada é caracterizado por: um processador de computador compreendendo um módulo de instrumentação do tempo de execução, o módulo de instrumentação do tempo de execução configurado para desempenhar um método que compreende buscar a instrução MRIC, a instrução MRIC incluindo o endereço de um bloco de controle de instrumentação do tempo de execução (RICCB); buscar o RICCB, o RICCB incluindo uma pluralidade de valores para modificar o referido subconjunto de controles de instrumentação do tempo de execução do processador do computador, a pluralidade de valores do RICBB compreendendo um controle para gerenciar os detalhes de amostragem de dados da instrumentação do tempo de execução; um controle para gerenciar os detalhes da coleta de dados da instrumentação do tempo de execução; um controle para gerenciar os detalhes dos relatórios de dados de instrumentação do tempo de execução para um buffer de programa; um controle para gerenciar a detecção de erros de cache de instrução; um controle para gerenciar a detecção de erros de cache de dados; um controle para gerenciar o tamanho de um grupo de relatório; um controle para gerenciar um endereço atual dentro de um buffer de programa de saída no qual um próximo grupo de relatório é armazenado; controles para gerenciar a coleta de dados dos dados em desvios de tipo de chamada, tipo de retorno e tipo de transferência; e controles para gerenciar a coleta de dados dos desvios que estão correta ou incorretamente previstos e tomados ou não tomados; carregar a pluralidade de valores para os controles de instrumentação do tempo de execução; e utilizar a pluralidade de valores carregados para fornecer informação de eventos da instrumentação do tempo de execução para o RIB;
9. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 8, caracterizado por compreender ainda as etapas de: derivar um valor limitado dependente do modelo para pelo menos um da pluralidade de valores do RICCB; e carregar o valor limitado dependente do modelo como um valor atualizado para os controles de instrumentação do tempo de execução;
10. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 9 e baseado em um da pluralidade de valores do RICCB sendo o controle para gerenciar um tamanho de grupo de relatório, caracterizado por: carregar o valor limitado dependente do modelo; baseado em um campo K dos controles de instrumentação do tempo de execução tendo um primeiro valor, configurar um endereço atual para um valor de endereço de origem do RICCB; e baseado no campo K dos controles de instrumentação do tempo de execução tendo um segundo valor, configurar o endereço atual para um valor de um valor de endereço atual do RICCB especificado;
11. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 8 é caracterizado ainda por: causar uma exceção, baseada em qualquer um ou mais das seguintes ações determinação que o endereço na instrução MRIC não se alinhe com um limite de palavra dupla; e determinação que o RICCB não pode ser buscado a partir do endereço incluído na instrução MRIC;
12. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 8, caracterizado por: determinar que um ou mais valores do RICCB são válidos, onde a determinação compreende ainda qualquer uma das seguintes ações determinar que um bit S da instrumentação do tempo de execução indica que a execução da instrução MRIC a partir do estado menos privilegiado não é permitida; determinar que os controles de instrumentação do tempo de execução não são válidos; e determinar que instrumentação do tempo de execução não está ativada;
13. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 8, caracterizado por: a instrução MRIC ser definida para uma primeira arquitetura de computadores, a busca e a análise ser executada por um segundo processador de uma arquitetura de computador alternativa, a busca e análise pelo segundo processador compreendendo identificar uma rotina de software para emular a execução da instrução MRIC na primeira arquitetura de computador; e executar a instrução MRIC com a rotina de software;
14. EQUIPAMENTO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO, de acordo com a Reivindicação 8, caracterizado por: nenhum dos valores nos controles de instrumentação do tempo de execução serem atualizados se for encontrado um erro;
15. SUPORTE FÍSICO PARA MODIFICAÇÃO DE CONTROLES DE INSTRUMENTAÇÃO DO TEMPO DE EXECUÇÃO A PARTIR DE UM ESTADO MENOS PRIVILEGIADO caracterizado por: conter nele gravado qualquer um dos métodos das reivindicações 1, 2, 3, 4, 5, 6 e 7.
BR112014022763-2A 2012-03-16 2013-03-01 Equipamento, método e suporte físico para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado BR112014022763B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/422,598 US9280447B2 (en) 2012-03-16 2012-03-16 Modifying run-time-instrumentation controls from a lesser-privileged state
US13/422,598 2012-03-16
PCT/JP2013/001262 WO2013136703A1 (en) 2012-03-16 2013-03-01 Modifying run-time-instrumentation controls from a lesser-privileged state

Publications (2)

Publication Number Publication Date
BR112014022763A2 BR112014022763A2 (pt) 2020-10-27
BR112014022763B1 true BR112014022763B1 (pt) 2021-10-13

Family

ID=49158804

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014022763-2A BR112014022763B1 (pt) 2012-03-16 2013-03-01 Equipamento, método e suporte físico para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado

Country Status (7)

Country Link
US (2) US9280447B2 (pt)
EP (1) EP2807562B1 (pt)
JP (1) JP6195571B2 (pt)
CN (1) CN104364771B (pt)
BR (1) BR112014022763B1 (pt)
PL (1) PL2807562T3 (pt)
WO (1) WO2013136703A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106161243B (zh) * 2015-04-10 2020-11-24 中兴通讯股份有限公司 一种状态上报控制方法和装置
KR102431773B1 (ko) * 2016-01-15 2022-08-11 구글 엘엘씨 애플리케이션 컨테이너를 사용한 코드 및 종속 데이터의 전달 관리
US10169010B2 (en) * 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
US10169009B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs
US9934009B2 (en) 2016-06-01 2018-04-03 International Business Machines Corporation Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US11269640B2 (en) 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US11086759B2 (en) * 2018-09-27 2021-08-10 SeaLights Technologies LTD System and method for probe injection for code coverage
EP3798755A1 (de) * 2019-09-27 2021-03-31 Siemens Aktiengesellschaft Vom maschinenhersteller parametrierbare numerische steuerung

Family Cites Families (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821178A (en) 1986-08-15 1989-04-11 International Business Machines Corporation Internal performance monitoring by event sampling
JPS6421546A (en) 1987-07-16 1989-01-24 Nec Corp Device for collecting program execution history
JPH03217949A (ja) 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
US5151981A (en) 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5341500A (en) 1991-04-02 1994-08-23 Motorola, Inc. Data processor with combined static and dynamic masking of operand for breakpoint operation
JP2505950B2 (ja) 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5491793A (en) 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
JPH07281930A (ja) 1994-04-08 1995-10-27 Nec Corp 情報処理装置動作測定解析システム
EP0689141A3 (en) 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US5555432A (en) 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
WO1996009584A2 (en) 1994-09-19 1996-03-28 Philips Electronics N.V. A microcontroller system for performing operations of multiple microcontrollers
US5675817A (en) 1994-12-05 1997-10-07 Motorola, Inc. Language translating pager and method therefor
US5553293A (en) 1994-12-09 1996-09-03 International Business Machines Corporation Interprocessor interrupt processing system
US5964893A (en) 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5675768A (en) 1996-02-01 1997-10-07 Unisys Corporation Store software instrumentation package instruction
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US5796939A (en) 1997-03-10 1998-08-18 Digital Equipment Corporation High frequency sampling of processor performance counters
US5960198A (en) 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US6631518B1 (en) 1997-03-19 2003-10-07 International Business Machines Corporation Generating and utilizing organized profile information
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6154818A (en) * 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6163840A (en) 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6077312A (en) 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6216237B1 (en) 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6161196A (en) 1998-06-19 2000-12-12 Lucent Technologies Inc. Fault tolerance via N-modular software redundancy using indirect instrumentation
US6145123A (en) 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6158049A (en) 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6243836B1 (en) 1998-08-17 2001-06-05 Lucent Technologies, Inc. Apparatus and method for circular buffering on an on-chip discontinuity trace
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US20020046305A1 (en) 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US6378125B1 (en) 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread identification points
US7137105B2 (en) 1999-05-12 2006-11-14 Wind River Systems, Inc. Dynamic software code instrumentation method and system
US6321329B1 (en) 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
US6519766B1 (en) 1999-06-15 2003-02-11 Isogon Corporation Computer program profiler
JP2001051874A (ja) 1999-08-12 2001-02-23 Hitachi Ltd マイクロコンピュータ
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6539500B1 (en) 1999-10-28 2003-03-25 International Business Machines Corporation System and method for tracing
US6574727B1 (en) 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6634020B1 (en) 2000-03-24 2003-10-14 International Business Machines Corporation Uninitialized memory watch
US7735072B1 (en) 2000-08-11 2010-06-08 International Business Machines Corporation Method and apparatus for profiling computer program execution
US7103877B1 (en) 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
US6961927B1 (en) 2000-11-27 2005-11-01 Microsoft Corporation Lossless, context-free compression system and method
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
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
JP2002252163A (ja) 2001-02-27 2002-09-06 Toshiba Corp 画像表示装置の製造方法および製造装置
US6918110B2 (en) 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
US7047521B2 (en) 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US20030005423A1 (en) 2001-06-28 2003-01-02 Dong-Yuan Chen Hardware assisted dynamic optimization of program execution
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7080289B2 (en) 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
GB0125628D0 (en) 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US7281242B2 (en) 2002-01-18 2007-10-09 Bea Systems, Inc. Flexible and extensible Java bytecode instrumentation system
US7134115B2 (en) 2002-02-07 2006-11-07 Matsushita Electric Industrial Co., Ltd. Apparatus, method, and program for breakpoint setting
AU2003211000A1 (en) 2002-02-12 2003-09-04 Sandpiper Software, Inc. Ontology frame-based knowledge representation in the unified modeling language (uml)
US6877114B2 (en) 2002-02-14 2005-04-05 Delphi Technologies, Inc. On-chip instrumentation
US7107585B2 (en) 2002-07-29 2006-09-12 Arm Limited Compilation of application code in a data processing apparatus
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US8141052B2 (en) 2003-05-09 2012-03-20 Microsoft Corporation Instrumenting software for enhanced diagnosability
US7185320B2 (en) 2003-06-27 2007-02-27 Hewlett-Packard Development Company, L.P. System and method for processing breakpoint events in a child process generated by a parent process
US7152186B2 (en) 2003-08-04 2006-12-19 Arm Limited Cross-triggering of processing devices
US20050120337A1 (en) 2003-12-01 2005-06-02 Serrano Mauricio J. Memory trace buffer
US7500152B2 (en) 2003-12-05 2009-03-03 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US7206916B2 (en) 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US20090150890A1 (en) 2007-12-10 2009-06-11 Yourst Matt T Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US20060184832A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Method and apparatus for achieving high cycle/trace compression depth by adding width
US9152531B2 (en) 2005-02-18 2015-10-06 Green Hills Sofware, Inc. Post-compile instrumentation of object code for generating execution trace data
US7478219B2 (en) 2005-04-14 2009-01-13 International Business Machines Corporation Retrieving event data for logical partitions
US7650595B2 (en) 2005-04-29 2010-01-19 Microsoft Corporation Sound transaction-based reduction without cycle detection
US7661094B2 (en) 2005-05-10 2010-02-09 Alcatel-Lucent Usa Inc. Real-time software diagnostic tracing
US8527958B2 (en) 2005-05-16 2013-09-03 Texas Instruments Incorporated Profiling operating context and tracing program on a target processor
US7886271B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Embedding event information in the timing stream
US7603589B2 (en) 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
US7886198B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Method and system of identifying overlays used by a program
US8694970B2 (en) 2005-06-02 2014-04-08 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US7716335B2 (en) 2005-06-27 2010-05-11 Oracle America, Inc. System and method for automated workload characterization of an application server
US7239980B2 (en) 2005-08-30 2007-07-03 International Business Machines Corporation Method and apparatus for adaptive tracing with different processor frequencies
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079177A1 (en) 2005-09-30 2007-04-05 Charles Spirakis Process monitoring and diagnosis apparatus, systems, and methods
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
CN101021800A (zh) 2006-02-16 2007-08-22 Sap股份公司 虚拟机监控
GB0604991D0 (en) 2006-03-11 2006-04-19 Slam Games Ltd Instrumentation for real-time performance profiling
US20070260849A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
US8245199B2 (en) 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US20070261032A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
US7814466B2 (en) 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US8141058B2 (en) 2006-06-05 2012-03-20 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8307346B2 (en) 2006-06-09 2012-11-06 Oracle America, Inc. Atomic groups for debugging
US7895569B2 (en) 2006-08-30 2011-02-22 Research In Motion Limited System and method for implementing software breakpoints in an interpreter
CN100401267C (zh) 2006-09-01 2008-07-09 上海大学 微处理器的片上动态跟踪方法
CN100547562C (zh) 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
US7992136B2 (en) 2006-10-18 2011-08-02 International Business Machines Corporation Method and apparatus for automatic application profiling
US8627335B2 (en) 2006-11-13 2014-01-07 Oracle America, Inc. Method and apparatus for data space profiling of applications across a network
US8645185B2 (en) 2006-12-06 2014-02-04 Telefonaktiebolaget L M Ericsson (Publ) Load balanced profiling
US7783867B2 (en) 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8041901B2 (en) 2007-03-05 2011-10-18 Freescale Semiconductor, Inc. Performance monitoring device and method thereof
US7743279B2 (en) 2007-04-06 2010-06-22 Apple Inc. Program counter (PC) trace
US9652241B2 (en) 2007-04-10 2017-05-16 Cambridge Consultants Ltd. Data processing apparatus with instruction encodings to enable near and far memory access modes
US20090037887A1 (en) 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8453121B2 (en) 2007-10-25 2013-05-28 International Business Machines Corporation Managing the tracing of the execution of a computer program
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8141053B2 (en) 2008-01-04 2012-03-20 International Business Machines Corporation Call stack sampling using a virtual machine
US8090933B2 (en) 2008-02-12 2012-01-03 International Business Machines Corporation Methods computer program products and systems for unifying program event recording for branches and stores in the same dataflow
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US8312253B2 (en) 2008-02-22 2012-11-13 Freescale Semiconductor, Inc. Data processor device having trace capabilities and method
US7904460B2 (en) 2008-04-23 2011-03-08 Microsoft Corporation Determining computer information from processor properties
US8572577B2 (en) 2008-06-20 2013-10-29 International Business Machines Corporation Monitoring changes to data within a critical section of a threaded program
GB2461716A (en) 2008-07-09 2010-01-13 Advanced Risc Mach Ltd Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events.
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8307345B2 (en) 2008-11-04 2012-11-06 Ca, Inc. Intelligent engine for dynamic and rule based instrumentation of software
US8478948B2 (en) 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
JP5326708B2 (ja) 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8694962B2 (en) 2009-04-30 2014-04-08 International Business Machines Corporation Aspect-oriented parallel programming language extensions
JP5411587B2 (ja) 2009-06-09 2014-02-12 トヨタ自動車株式会社 マルチスレッド実行装置、マルチスレッド実行方法
US8650562B2 (en) 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
US8347001B2 (en) 2010-01-08 2013-01-01 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
KR20110070468A (ko) 2009-12-18 2011-06-24 삼성전자주식회사 인스트루먼테이션 실행 장치 및 방법
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US8453124B2 (en) 2009-12-23 2013-05-28 International Business Machines Corporation Collecting computer processor instrumentation data
US8782612B2 (en) 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8473925B2 (en) 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US8566800B2 (en) 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US9009663B2 (en) 2010-06-01 2015-04-14 Red Hat, Inc. Cartridge-based package management
GB2481385B (en) 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
US20120167057A1 (en) 2010-12-22 2012-06-28 Microsoft Corporation Dynamic instrumentation of software code
US9430275B2 (en) 2011-06-03 2016-08-30 Oracle International Corporation Synchronization between concurrent notifier and waiter transactions using transaction condition variables
US8707314B2 (en) 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations

Also Published As

Publication number Publication date
US20130246744A1 (en) 2013-09-19
PL2807562T3 (pl) 2017-11-30
BR112014022763A2 (pt) 2020-10-27
CN104364771B (zh) 2017-04-26
EP2807562A4 (en) 2015-01-14
WO2013136703A1 (en) 2013-09-19
EP2807562A1 (en) 2014-12-03
CN104364771A (zh) 2015-02-18
US20130247014A1 (en) 2013-09-19
JP6195571B2 (ja) 2017-09-13
US9489285B2 (en) 2016-11-08
EP2807562B1 (en) 2017-08-02
US9280447B2 (en) 2016-03-08
JP2015514240A (ja) 2015-05-18

Similar Documents

Publication Publication Date Title
BR112014022763B1 (pt) Equipamento, método e suporte físico para modificação de controles de instrumentação do tempo de execução a partir de um estado menos privilegiado
EP2825962B1 (en) Determining the status of run-time-instrumentation controls
AU2013233831B2 (en) Run-time instrumentation directed sampling
EP2810167B1 (en) Run-time instrumentation monitoring of processor characteristics
EP2810170B1 (en) Run-time instrumentation indirect sampling by address
US9442728B2 (en) Run-time instrumentation indirect sampling by instruction operation code
EP2810169B1 (en) Run-time-instrumentation controls emit instruction

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 01/03/2013, OBSERVADAS AS CONDICOES LEGAIS.