BR112014017828B1 - Uso de uma facilidade de interrupção de faixa de aviso por um programa - Google Patents

Uso de uma facilidade de interrupção de faixa de aviso por um programa Download PDF

Info

Publication number
BR112014017828B1
BR112014017828B1 BR112014017828-3A BR112014017828A BR112014017828B1 BR 112014017828 B1 BR112014017828 B1 BR 112014017828B1 BR 112014017828 A BR112014017828 A BR 112014017828A BR 112014017828 B1 BR112014017828 B1 BR 112014017828B1
Authority
BR
Brazil
Prior art keywords
program
guest
warning
host
grace period
Prior art date
Application number
BR112014017828-3A
Other languages
English (en)
Other versions
BR112014017828A8 (pt
BR112014017828A2 (pt
Inventor
Charles Gainey Jr
Jeffrey Paul Kubala
Mark Farrell
Donald William Schmidt
Robert Rogers
Bernard Pierce
James Mulder
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 BR112014017828A2 publication Critical patent/BR112014017828A2/pt
Publication of BR112014017828A8 publication Critical patent/BR112014017828A8/pt
Publication of BR112014017828B1 publication Critical patent/BR112014017828B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Storage Device Security (AREA)
  • Alarm Systems (AREA)

Abstract

uso de uma facilidade de interrupção de faixa de aviso por um programa. a um programa (por exemplo, um sistema operacional) é provido um aviso de que tem um período de carência para executar uma função, tal como limpeza (por exemplo, concluir, interromper e/ou mover uma unidade despachável). o programa está sendo avisado, em um exemplo, de que está perdendo acesso a seus recursos compartilhados. por exemplo, em um ambiente virtual, um programa convidado é avisado de que está próximo de perder seus recursos de unidade de processamento central e, portanto, deve executar uma função, tal como limpeza.

Description

Antecedentes
[0001] Um aspecto da presente invenção refere-se, em geral, a processamento dentro de um ambiente de computação e, em particular, à facilitação de processamento associado a recursos compartilhados.
[0002] Um tipo de ambiente em que recursos são compartilhados é um ambiente virtual, que inclui uma unidade de processamento central host (CPU) e uma ou mais unidades de processamento central convidadas. Uma CPU convidada (também conhecida como uma CPU virtual) é provida por um programa host (por exemplo, sistema operacional host) rodando em uma CPU host. O programa host executa ações para alocar recursos de uma configuração subjacente de host e para atribuir tais recursos à CPU convidada.
[0003] Em uma concretização particular, uma CPU convidada existe quando uma CPU host entra no modo de execução interpretativa. Neste ponto, o sistema operacional convidado (também aqui referido como o programa convidado) inicia a execução na CPU virtualizada, enquanto o programa host suspende a execução na CPU host. O programa host retoma a execução na CPU quando o modo de execução interpretativa é encerrado. Técnicas de ligação existem entre o host e o convidado, pelas quais o estado de host e convidado é salvo e restaurado. Tipicamente, quando um programa host inicia um programa convidado, o programa host é suspenso até o programa convidado retornar. Ambas a CPU convidada e a CPU host são modos diferentes da CPU host.
[0004] A configuração de host geralmente inclui todos os recursos do sistema de computador. Esses recursos incluem, mas sem limitação, unidades de processamento central (CPUs), memória principal e dispositivos de entrada/saída (E/S). Em tal sistema, várias CPUs convidadas podem ser suportadas por uma única CPU host. Isso é realizado atribuindo a cada CPU convidada um período para utilização da CPU host, chamado de fração de tempo, e então movendo a CPU host para outra CPU convidada por uma fração de tempo, e assim por diante. O número de CPUs convidadas suportável por uma CPU host varia de acordo com as capacidades da CPU host e a capacidade desejada a ser atribuída a cada CPU convidada.
[0005] Uma configuração de convidado é tipicamente formada a partir de duas ou mais CPUs convidadas e é referida como uma configuração de multiprocessamento de convidado (MP). Cada CPU convidada pode ser provida por um compartilhamento de uma CPU host separada ou mesmo por compartilhamento de uma única CPU host. Um atributo de tal compartilhamento é que uma CPU convidada pode operar por um período, referido como uma fração de tempo, e então ficar inativa por um período arbitrário. O período inativo varia com base em políticas de prioridade estabelecidas pelo sistema, no número total de CPUs convidadas que devem compartilhar CPUs hosts e na técnica de compartilhamento particular sendo usada.
[0006] Em tal sistema de multiprocessamento convidado, um programa, geralmente denominado unidade despachável (DU), pode ser despachado pelo sistema operacional convidado em uma CPU convidada e, em seguida, durante a execução daquela unidade despachável, a fração de tempo de host daquela unidade despachável expira. Isso pode levar a unidade despachável a uma condição de não poder continuar em qualquer outra CPU convidada da configuração de multiprocessamento de convidado, independentemente da disponibilidade de quaisquer outras CPUs convidadas. Em vez disso, deve aguardar que a uma e única CPU convidada receba sua próxima fração de tempo para continuar. Com base na técnica de compartilhamento e na prioridade relativa da configuração de convidado, a próxima fração de tempo pode ser retardada por um período substancial. Mesmo se a configuração de convidado tiver outras CPUs convidadas que sejam capazes de rodar a unidade despachável, a continuação da unidade despachável não é possível devido ao estado da CPU convidada da unidade despachável que foi salvo quando a fração de tempo anterior expirou. Até que o estado preciso possa ser usado para continuar a CPU convidada, a unidade despachável fica inativa.
Breve Sumário
[0007] As desvantagens do estado da técnica são superadas e vantagens são providas através da provisão de um produto de programa de computador para facilitação de processamento em um ambiente de computação. O produto de programa de computador inclui um meio de armazenamento legível por computador legível por um circuito de processamento e armazenando instruções para execução pelo circuito de processamento para realização de um método. O método inclui, por exemplo, obter, por um programa, uma indicação de uma facilidade de rastreamento de aviso instalada no ambiente de computação, a facilidade de rastreamento de aviso para prover ao programa um período de carência de rastreamento de aviso para executar uma função; receber, pelo programa, uma notificação de rastreamento de aviso indicando que o período de carência de rastreamento de aviso começou; e, com base na notificação de rastreamento de aviso, pelo menos iniciar, pelo programa, a função dentro do período de carência de rastreamento de aviso.
[0008] Métodos e sistemas referentes a um ou mais aspectos da presente invenção são também descritos e reivindicados neste documento. Além disso, serviços referentes a um ou mais aspectos da presente invenção são também descritos e podem ser reivindicados neste documento.
[0009] Características e vantagens adicionais são obtidas através das técnicas da presente invenção. Outras concretizações e aspectos da presente invenção são descritos em detalhes neste documento e são considerados uma parte da invenção reivindicada.
Breve Descrição das Várias Vistas dos Desenhos
[0010] Um ou mais aspectos da presente invenção são particularmente destacados e distintamente reivindicados como exemplos nas reivindicações na conclusão da especificação. O descrito acima e objetos, características e vantagens da invenção são evidentes a partir da descrição detalhada a seguir considerada em conjunto com os desenhos anexos, em que: A Figura 1 apresenta uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A Figura 2 apresenta outra concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A Figura 3 apresenta ainda outra concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A Figura 4 apresenta uma concretização da lógica associada a observação de convidado da facilidade de interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; A Figura 5 apresenta uma concretização da lógica associada a observação de host da facilidade de interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; A Figura 6 apresenta uma concretização da lógica associada a um host que gerencia uma saída de convidado, de acordo com um aspecto da presente invenção; A Figura 7 apresenta uma concretização de uma visão geral da lógica da facilidade de interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; As Figuras 8A-8C apresentam concretizações da lógica associada ao processamento da facilidade de interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; A Figura 9 apresenta uma concretização da lógica associada ao recebimento de uma interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; A Figura 10 apresenta uma concretização de um formato de uma instrução de Diagnóstico usada de acordo com um aspecto da presente invenção; A Figura 11 apresenta uma concretização de um produto de programa de computador incorporando um ou mais aspectos da presente invenção; A Figura 12 apresenta uma concretização de um sistema de computador host para incorporar e usar um ou mais aspectos da presente invenção; A Figura 13 apresenta um exemplo adicional de um sistema de computador para incorporar e usar um ou mais aspectos da presente invenção; A Figura 14 apresenta outro exemplo de um sistema de computador compreendendo uma rede de computador para incorporar e usar um ou mais aspectos da presente invenção; A Figura 15 apresenta uma concretização de vários elementos de um sistema de computador para incorporar e usar um ou mais aspectos da presente invenção; A Figura 16A apresenta uma concretização da unidade de execução do sistema de computador da Figura 15 para incorporar e usar um ou mais aspectos da presente invenção; A Figura 16B apresenta uma concretização da unidade de ramificação do sistema de computador da Figura 15 para incorporar e usar um ou mais aspectos da presente invenção; A Figura 16C apresenta uma concretização da unidade de carregamento/ armazenamento do sistema de computador da Figura 15 para incorporar e usar um ou mais aspectos da presente invenção; e A Figura 17 apresenta uma concretização de um sistema de computador host emulado para incorporar e usar um ou mais aspectos da presente invenção.
Descrição Detalhada
[0011] De acordo com um aspecto da presente invenção, uma capacidade é provida para avisar um programa (por exemplo, um sistema operacional) de que tem um período de carência para executar uma função. Por exemplo, é provido a um programa um período de carência para executar uma limpeza (por exemplo, concluir, interromper e/ou mover uma unidade despachável).
[0012] De acordo com um aspecto adicional da presente invenção, um programa e/ou um processador é avisado de que está próximo de perder acesso a recursos (por exemplo, recursos compartilhados). Por exemplo, um aviso é provido a um processador compartilhando recursos com outros processadores de que o processador está próximo de perder acesso aos recursos. Como um exemplo adicional, um programa, tal como um sistema operacional, rodando em um processador compartilhado (isto é, o programa compartilha o processador com outros programas) é avisado de que está próximo de perder seus recursos de processador.
[0013] Em uma concretização particular, uma capacidade é provida em que, a um programa convidado rodando em uma CPU convidada provida por uma CPU host, é provido um aviso de expiração de uma fração de tempo dada à CPU convidada a partir da CPU host ou de preempção pelo host da fração de tempo do convidado. O aviso provê um período de carência que a CPU convidada pode usar para executar uma função particular, tal como concluir a execução de uma unidade despachável, interromper a unidade despachável em um ponto em que a unidade despachável é re-despachável e/ou mover a unidade despachável para outra CPU convidada.
[0014] Como usado neste documento, um período de carência inclui como exemplos uma quantidade de tempo, um número de instruções, um número de ciclos, etc. É de uma duração predeterminada, em que uma ou mais funções podem ser executadas.
[0015] Uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção é descrita com referência à Figura 1. Nesta concretização particular, um ambiente de computação 100 inclui uma pluralidade de processadores 102 compartilhando recursos 104. A cada processador (e/ou um programa, tal como um sistema operacional, rodando no processador) é provida uma determinada quantidade de tempo, referida como uma fração de tempo, para compartilhar os recursos. Os recursos incluem recursos de unidade de processamento central, memória, interfaces ou dispositivos de entrada/saída e/ou outros recursos, como exemplos. O processador (ou um programa nele executado) tendo acesso aos recursos é avisado de que seu acesso está próximo de encerrar e, portanto, o processador (ou programa) deve executar uma ação particular, tal como limpeza, conclusão de uma unidade de trabalho, interrupção de uma unidade de trabalho, movimentação de uma unidade de trabalho, etc.
[0016] Outra concretização de um ambiente de computação 200 para incorporar e usar um ou mais aspectos da presente invenção é descrita com referência à Figura 2. O ambiente de computação 200 baseia-se, por exemplo, na z/Architecture® fornecida pela International Business Machines Corporation (IBM®), Armonk, New York. A z/Architecture® é descrita em uma publicação da IBM® intitulada “z/Architecture Principles of Operation”, Publicação IBM® N°. SA22-7832-08, Nona Edição, agosto de 2010. Em um exemplo, um ambiente de computação com base na z/Architecture® inclui um servidor System z®, fornecido pela International Business Machines Corporation, Armonk, New York. IBM®, z/Architecture® e zSeries®, bem como z/VM® e z/OS® mencionados abaixo, são marcas registradas da International Business Machines Corporation, Armonk, New York, USA. Outros nomes usados neste documento podem ser marcas registradas, nomes comerciais ou nomes de produtos da International Business Machines Corporation ou outras companhias.
[0017] Como um exemplo, o ambiente de computação 200 inclui um complexo de processador central (CPC) 202 provendo suporte de máquina virtual. O CPC 202 inclui, por exemplo, uma ou mais máquinas virtuais 204 (ou, em outra concretização, partições lógicas), um ou mais processadores centrais 206, pelo menos um host 208 (por exemplo, um programa de controle, tal como um hipervisor) e um subsistema de entrada/saída 210, cada um dos quais é descrito abaixo. Neste exemplo, as máquinas virtuais e host são incluídos na memória.
[0018] O suporte de máquina virtual do CPC provê a capacidade de operar grandes números de máquinas virtuais, cada uma capaz de hospedar um sistema operacional convidado 212, tal como z/VM®, z/OS® ou Linux, como exemplos. Cada máquina virtual 204 é capaz de funcionar como um sistema separado. Ou seja, cada máquina virtual pode ser independentemente reconfigurada, hospedar um sistema operacional convidado e operar com diferentes programas. Um sistema operacional ou programa de aplicativo rodando em uma máquina virtual parece ter acesso a um sistema total e completo, mas na realidade, apenas uma porção deste está disponível.
[0019] Os recursos físicos do CPC (por exemplo, CPUs, memória, dispositivos E/S etc.) pertencem ao host 208, e os recursos físicos compartilhados são despachados pelo host ao sistema operacional convidado, conforme necessário, para atender às suas demandas de processamento. As interações entre os sistemas operacionais convidados e os recursos de máquina físicos compartilhados são controladas pelo host, uma vez que o grande número de convidados tipicamente impede o host de simplesmente dividir e atribuir os recursos de hardware aos convidados configurados.
[0020] Processadores centrais 206 são recursos físicos de processador que são atribuíveis a uma máquina virtual. Por exemplo, a máquina virtual 204 inclui um ou mais processadores lógicos, cada um dos quais representa todos ou um compartilhamento de um recurso de processador físico 206 que pode ser alocado dinamicamente na máquina virtual. Máquinas virtuais são geridas pelo host 208. Como exemplo, o host pode ser implementado em microcódigo rodando em processadores 206 ou pode ser parte de um sistema operacional host rodando na máquina. Em um exemplo, o host 208 é o Processor Resource/System Manager (PR/SM) fornecido pela International Business Machines Corporation, Armonk, Nova York.
[0021] O subsistema de entrada/saída 210 direciona o fluxo de informações entre os dispositivos e armazenamento principal. É acoplado ao complexo de processamento central, em que pode ser parte do complexo de processamento central ou separado dele. O subsistema de E/S alivia os processadores centrais da tarefa de se comunicarem diretamente com os dispositivos de E/S acoplados ao CPC e permite que o processamento de dados ocorra simultaneamente com o processamento de E/S.
[0022] Em uma concretização, hardware/firmware de processador (por exemplo, System z®) e host (por exemplo, PR/SM) interagem entre si de forma cooperativa controlada para processar operações do sistema operacional convidado sem a necessidade de transferência de controle de/para o sistema operacional convidado e o host. As operações convidadas podem ser executadas diretamente sem intervenção de host através de uma facilidade que permite que instruções sejam executadas de forma interpretativa para um convidado. Esta facilidade provê uma instrução, Iniciar Execução Interpretativa (SIE), que o host pode emitir, designando um bloco de controle denominado descrição de estado que contém controles e estado de convidado (máquina virtual). A instrução coloca a CPU em um modo de execução interpretativa, em que interrupções e instruções de convidado são processadas diretamente, até surgir uma condição que requer a atenção do host. Quando tal condição ocorre, a execução interpretativa é encerrada, ou uma interrupção de host é apresentada, ou a instrução SIE conclui o armazenamento de detalhes da condição encontrada; esta última ação é chamada de intercepção. Um exemplo de execução interpretativa é descrito em “System/370 Extended Architecture/Interpretive Execution”, Publicação IBM N°. SA22-7095-01, setembro de 1985.
[0023] Como usado neste documento, firmware inclui, por exemplo, o microcódigo, mili-código e/ou macrocódigo do processador. Inclui, por exemplo, estruturas de dados e/ou instruções de nível de hardware usadas na implementação de código de máquina de nível superior. Em uma concretização, inclui, por exemplo, um código proprietário que é tipicamente entregue como microcódigo que inclui software confiável ou microcódigo específico para o hardware subjacente e controla o acesso do sistema operacional ao hardware do sistema.
[0024] Outro exemplo de um ambiente de computação para incorporar um ou mais aspectos da presente invenção é representado na Figura 3. Neste exemplo, um sistema de computador host emulado 300 é provido, o qual emula um computador host 302 de uma arquitetura de host. No sistema de computador host emulado 300, um processador host (CPU) 304 é um processador host emulado (ou processador host virtual) e é realizado através de um processador de emulação 306 tendo uma arquitetura de conjuntos de instruções nativas diferentes do que a usada pelos processadores do computador host 302. O sistema de computador host emulado 300 tem memória 308 acessível ao processador de emulação 306. Na concretização exemplificativa, a memória 308 é dividida em uma porção de memória de computador host 310 e uma porção de rotinas de emulação 312. A memória de computador host 310 está disponível para programas de computador host emulado 302 de acordo com arquitetura de computador host, e pode incluir ambos um host ou hipervisor 314 e uma ou mais máquinas virtuais 316 rodando sistemas operacionais convidados 318, análogos aos elementos de nome semelhante na Figura 2.
[0025] O processador de emulação 306 executa instruções nativas de um conjunto de instruções de arquitetura de uma arquitetura diferente daquela do processador emulado 304. As instruções nativas são obtidas, por exemplo, a partir da memória de rotinas de emulação 312. O processador de emulação 306 pode acessar uma instrução de host para execução a partir de um programa na memória de computador host 310, empregando uma ou mais instruções obtidas em uma sequência & rotina de acesso/decodificação que podem decodificar a(s) instrução(ões) de host acessadas para determinar uma rotina nativa de execução de instruções para emular a função da instrução de host acessada. Tal instrução de host pode ser, por exemplo, uma instrução Iniciar Execução Interpretativa (SIE), pela qual o host procura executar um programa convidado em uma máquina virtual. As rotinas de emulação 312 podem incluir suporte para esta instrução e para a execução de uma sequência de instruções de convidado em uma máquina virtual 316 de acordo com a definição desta instrução SIE.
[0026] Outras facilidades que são definidas para a arquitetura do sistema de computador host 302 podem ser emuladas por rotinas de facilidades de arquitetura, incluindo tais facilidades como registros de uso geral, registros de controle, tradução de endereços dinâmicos, suporte de subsistema E/S e cache de processador, como exemplos. As rotinas de emulação também podem aproveitar as funções disponíveis no processador de emulação 306 (como registros gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Hardware especial e mecanismos de descarga também podem ser providos para auxiliar o processador 306 na emulação das funções do computador host 302.
[0027] De acordo com um aspecto da presente invenção, uma facilidade de interrupção de rastreamento de aviso é provida, a qual pode ser usada em muitos tipos de ambientes de computação. Embora possa ser usada em muitos tipos de ambientes de computação, os aspectos da facilidade são descritos neste documento com referência a um sistema de multiprocessamento convidado. Como descrito acima, no sistema de multiprocessamento convidado, sistemas operacionais convidados despacham unidades despacháveis (por exemplo, programas, código etc.) em unidades de processamento central convidadas que são hospedadas por pelo menos uma unidade de processamento central host. A CPU host provê uma fração de tempo (por exemplo, uma quantidade de tempo ou outro período, tal como número de instruções, número de ciclos etc.) para a CPU convidada, durante cujo tempo a unidade despachável é executada. Se, durante a execução da unidade despachável, a fração de tempo expirar, a unidade despachável pode ser deixada em tal condição que não pode ser continuada em nenhuma outra CPU convidada da configuração de multiprocessamento de convidado, independentemente da disponibilidade de quaisquer outras CPUs convidadas. Em vez disso, deve aguardar que a única CPU convidada receba sua próxima fração de tempo para continuar. Com base na técnica de compartilhamento particular empregada e na prioridade relativa da configuração de convidado, a próxima fração de tempo pode ser retardada por um período substancial. Mesmo se a configuração de convidado tiver outras CPUs convidadas que sejam capazes de rodar a unidade despachável, a continuação da unidade despachável não é possível devido ao estado da CPU convidada da unidade despachável que foi salvo quando a fração de tempo anterior expirou. Até que o estado preciso possa ser usado para continuar a CPU convidada, a unidade despachável fica inativa.
[0028] É possível ampliar a fração de tempo concedendo tempo adicional (ou outro período adicional, tal como instruções adicionais, ciclos etc.), mas mesmo com esse tempo extra, a CPU convidada poderia ampliar a execução da unidade despachável e ainda deixá-la na mesma condição não despachável, como seria na expiração da fração de tempo normal.
[0029] Uma vez que um programa host não conhece os controles e estado usados por um programa convidado arbitrário rodando uma unidade despachável arbitrária, sempre conceder tempo extra para o sistema operacional convidado limpar sua unidade despachável não pode ser feito sem estabelecer um protocolo entre o programa host e o programa convidado. Sem um protocolo, qualquer tempo extra concedido à CPU convidada seria consumido no processamento principal e seria ainda possivelmente concluído com a mesma condição de bloqueio de unidade despachável. Portanto, de acordo com um aspecto da presente invenção, tal protocolo é provido.
[0030] De acordo com um aspecto da presente invenção, uma extensão ou período de carência é provido, que inclui um aviso indicando ao programa convidado que uma ação particular deve ser tomada (por exemplo, concluir uma unidade despachável ou tornar a unidade despachável re- despachável). Como exemplos, o período de carência é provido em resposta à expiração da fração de tempo ou em resposta à preempção do convidado pelo host, antes da expiração de sua fração de tempo, a fim de recuperar o processador para alguma outra prioridade mais alta, como visto pelo host, conforme descrito em maiores detalhes no documento.
[0031] Como um exemplo, o período de carência é provido em vez da extensão incondicional da fração de tempo. Se a fração de tempo normal expirar completamente, um período de carência é provido, mas carregado na próxima fração de tempo normal, a fim de permanecer justo para todos os outros convidados virtualizados que tenham, cada um, uma expectativa de fração de tempo. Se a fração de tempo normal não tiver expirado, o período de carência é retirado do tempo normal restante. De qualquer forma, o período de carência limita o tempo restante (ou outro período) provido à CPU convidada e não é extensível por si só. Dessa forma, a CPU convidada não pode continuar a rodar por um período arbitrário e desconhecido.
[0032] No início do período de carência, o programa convidado é notificado com o objetivo de limpar a unidade despachável (por exemplo, concluí-la, interrompê-la e/ou movê-la). A aplicação do período de carência garante que a CPU convidada não exceda o período adicional concedido. O protocolo pelo qual o programa convidado recebe um período de carência e é notificado de que aquele tempo (ou outro período) está quase expirado (o período de carência começou) é um acordo entre o programa convidado e o programa host de que o protocolo é compreendido pelo programa convidado, fazendo com que tal notificação seja válida. Ou seja, o programa convidado normalmente honraria a notificação, quando necessário, tornando a unidade despachável atual despachável em outra CPU convidada da configuração de convidado (por exemplo, movendo-a).
[0033] Mais detalhes sobre o protocolo e a facilidade de interrupção de rastreamento de aviso (também denominada rastreamento de aviso ou facilidade de rastreamento de aviso) são descritos abaixo com referência às Figuras 4-10. A concretização descrita com referência a essas figuras refere-se a um ambiente virtual tendo um ou mais convidados providos por um ou mais hosts. No entanto, um ou mais aspectos da presente invenção referem-se a outros ambientes também, incluindo ambientes não virtuais em que vários processadores e/ou vários programas compartilham recursos.
[0034] Com referência à Figura 4, são descritos detalhes sobre o protocolo da facilidade de interrupção de rastreamento de aviso observado por um convidado. O protocolo de rastreamento de aviso, conforme observado pelo convidado, inclui, por exemplo, uma indicação de facilidade instalada, registro de convidado, notificação e saída voluntária, cada um dos quais é descrito abaixo.
[0035] Referindo-se à Figura 4, o programa convidado entende o protocolo de rastreamento de aviso e procura por uma indicação de instalação instalada, ETAPA 400. Em um exemplo, esta indicação é um bit armazenado em um bloco de controle (por exemplo, um Bloco de Controle de Serviço de Chamada (SCCB)), que é observado usando um comando de leitura, tal como um comando Ler Informações de SCP. Após a determinação de que a facilidade está instalada, o programa convidado executa o registro, ETAPA 402. O registro é um mecanismo em que o programa convidado comunica ao programa host que o programa convidado entende o protocolo da facilidade de interrupção de rastreamento de aviso. Em um exemplo, o registro é executado usando uma instrução de Diagnóstico, um exemplo da qual é descrito abaixo.
[0036] O registro iniciado a partir de qualquer unidade de processamento central convidada abrange, em uma concretização, todas as unidades de processamento central convidadas da configuração de multiprocessamento, uma vez que comportamento consistente em CPUs convidadas da configuração de multiprocessamento de convidado é desejado. Em uma configuração de multiprocessamento de convidado, as CPUs convidadas usam a mesma memória principal e assume-se que as CPUs convidadas operam no que, às vezes, é chamado de imagem única. Dessa forma, o registro de uma CPU convidada é aplicável às outras CPUs convidadas do ambiente de multiprocessamento. O registro é irrevogável, em uma concretização, e isso ajuda a evitar janelas temporárias, simplifica o desenvolvimento e permite uma melhor testabilidade. Mesmo que o registro seja irrevogável, o programa convidado pode determinar se continuará a participar do protocolo. Se assim escolher, não precisa participar reconfigurando ou tendo reconfigurados uma ou mais indicadores de habilitação descritos abaixo.
[0037] Após o registro do programa convidado para o protocolo de rastreamento de aviso, uma CPU convidada pode ser notificada de um período de carência, ETAPA 404. Por exemplo, pode ser avisada, por uma CPU host, da expiração de uma fração de tempo (ou uma expiração iminente, em um exemplo adicional) ou de preempção de sua fração de tempo. Em um exemplo particular, uma CPU de uma configuração de convidado registrado é notificada, por exemplo, da expiração de sua fração de tempo normal e do início de um período de carência que provê um período adicional para limpeza, por exemplo.
[0038] Após a notificação, o convidado tem uma quantidade limitada de tempo ou outro período, o período de carência (por exemplo, 50 microssegundos em uma concretização particular), para tornar re-despachável uma unidade despachável ou para fazer quaisquer outros ajustes apropriados. Se a fração de tempo normal já tiver terminado, então, por exemplo, antes de retornar o controle para o host, o período de carência é usado para tornar a unidade despachável re-despachável ou para fazer outros ajustes apropriados. Se a fração de tempo não tiver terminado, então, o período de carência é usado e qualquer porção restante da fração de tempo é abandonada. A contabilização normal do tempo real usado por uma CPU convidada ocorre.
[0039] Após a notificação, a CPU convidada está em um período restrito (por exemplo, quantidade de tempo limitada), após o qual a operação da CPU convidada é involuntariamente encerrada. Apenas uma notificação é feita para cada período normal de fração de tempo. Dessa forma, a CPU convidada é ainda limitada por um controle de tempo final que garante que a CPU host compartilhada subjacente possa ser compartilhada em outro lugar, preservando assim a boa ordem e disciplina na virtualização geral provida pelo programa host.
[0040] A notificação pode ser realizada por qualquer mecanismo que faça com que um status único seja detectado pelo programa convidado. Exemplos incluem uma única interrupção de convidado, uma localização de memória principal definida arquitetonicamente que pode ser configurada ou um dispositivo de memória externo E/S disponível para host e convidado. O primeiro requer uma habilitação de convidado apropriada para permitir a interrupção. Os dois últimos requerem exames periódicos com frequência suficiente para que o período de carência não seja desperdiçado. Em um exemplo particular da z/Architecture®, uma interrupção de convidado, denominada interrupção de rastreamento de aviso (WTI), é usada como notificação.
[0041] Após o aviso, o convidado sai voluntariamente da sua fração de tempo/período de carência, ETAPA 406. O convidado encerra a fração de tempo/período de carência atual após ser notificado e tornando a unidade despachável re- despachável (por exemplo, interromper e mover a unidade despachável ou concluí-la). Esta saída sinaliza ao programa host que o convidado está seguindo o protocolo. Outras razões para que convidado abandonar o controle, assim retornando ao programa host, podem ocorrer. Normalmente, para o processamento limitado tornar re-despachável uma unidade despachável, as condições não ocorreriam para tais saídas estranhas. Se a CPU convidada sair de dentro do período de carência através do protocolo de interrupção de rastreamento de aviso, uma indicação de retorno é provida na próxima fração de tempo, sempre que ocorrer. Dessa forma, o programa convidado sabe que cumpriu a restrição de tempo imposta pelo período de carência.
[0042] Se o convidado atrasar a saída voluntária, sua execução é antecipada por expiração do período de carência. A próxima vez que a CPU convidada iniciar com uma fração de tempo normal, uma indicação de retorno é provida para que o convidado saiba que estava atrasado. Geralmente, isso pode ser usado para a determinação de problema no programa convidado porque o período de carência usual permite tempo suficiente para limpar e sair voluntariamente.
[0043] Se uma saída estranha ocorrer, a próxima vez que a CPU convidada iniciar dentro de uma fração de tempo normal, espera-se que a saída voluntária ocorra rapidamente. O mesmo mecanismo de retorno informaria ao programa convidado que uma saída estranha ocorreu e, portanto, forneceria diferentes informações para informar a determinação do problema.
[0044] A saída voluntária é realizada por qualquer mecanismo que faça com que o controle passe através do programa host a partir do programa convidado, e que inclui o mecanismo de retorno mencionado acima. O mecanismo usado deve ser definido no protocolo de interrupção de rastreamento de aviso da arquitetura particular para que o programa host reconheça a requisição de convidado. Em um exemplo, este mecanismo inclui a instrução de Diagnóstico descrita abaixo.
[0045] Além da observação de convidado do protocolo de interrupção de rastreamento de aviso, em uma concretização, o host também observa a facilidade, conforme descrito mais detalhadamente abaixo com referência à Figura 5.
[0046] Referindo-se à Figura 5, o host reconhece a indicação de facilidade instalada e reflete-a em seus convidados, ETAPA 500. Por exemplo, o host verifica o bit instalado no bloco de controle (por exemplo, SCCB) e reconhece o status instalado do protocolo de rastreamento de aviso (isto é, é configurado) e sabe como o programa host pode usá-lo para benefício do host. Dessa forma, a indicação de facilidade é refletida em seu convidado. Por exemplo, para refletir a facilidade a um convidado, o host configura um bit instalado em um bloco de controle convidado (por exemplo, SCCB convidado) ou uma área de memória acessível ao convidado. Se, por qualquer razão, o programa host não desejar que um convidado observe o status instalado do protocolo de facilidade de interrupção de rastreamento de aviso e não permitir que um convidado observe seu status instalado e o utilize, o programa host passa uma indicação desinstalada ao convidado (por exemplo, configura o bit visto pelo convidado para zero). Além disso, em uma concretização, o programa host define os controles das CPUs convidadas de modo que o protocolo de rastreamento de aviso seja desativado (por exemplo, desativa um ou mais bits designados na descrição de estado da CPU convidada).
[0047] À medida que o registro é iniciado por um convidado, o programa host recebe a requisição de registro não solicitada e lembra que o convidado se registrou, ETAPA 502. Uma requisição de registro iniciada por qualquer CPU convidada é suficiente para registrar todas as CPUs convidadas em uma configuração de multiprocessamento de convidado. Dessa forma, o programa host habilita o protocolo de rastreamento de aviso para todas as CPUs da configuração de convidado, ETAPA 504. Por exemplo, o programa host configura um ou mais bits designados na descrição de estado da CPU convidada para habilitar a facilidade de interrupção de rastreamento de aviso para os convidados. Retorno de registro não é necessariamente retornado ao convidado. Se uma CPU convidada tentasse o registro mesmo quando a facilidade não estivesse instalada, o host ignoraria a requisição e não habilitaria CPUs convidadas para o protocolo de facilidade de interrupção de rastreamento de aviso.
[0048] Depois de registrar e habilitar os convidados para a facilidade de rastreamento de aviso, um convidado pode receber notificação de invocação do protocolo, ETAPA 506. Isso pode ser realizado em uma variedade de cenários, conforme descrito abaixo.
[0049] Como um exemplo, quando o protocolo de interrupção de rastreamento de aviso é habilitado para uma CPU convidada operando no modo de execução interpretativa em uma CPU host, a referida CPU host X, o programa host pode iniciar o protocolo a partir da CPU host Y. Ou seja, uma CPU convidada foi provida com uma CPU host X e aquela CPU host X não está atualmente disponível para o programa host. Se o programa host tiver motivos para readquirir a CPU X, ele primeiramente faz com que a CPU X saia do modo de execução interpretativa. Ou seja, a CPU convidada é interrompida, saindo assim do modo de execução interpretativa da CPU X. A interrupção da CPU convidada em qualquer ponto arbitrário sem permitir que a CPU convidada pare voluntariamente cria um risco de um problema que o protocolo de interrupção de rastreamento de aviso deve resolver. O protocolo de interrupção de rastreamento de aviso permite que a CPU host Y solicite notificação, permitindo que uma ação de programa host seja transformada em uma notificação na CPU convidada X, ETAPA 506. Uma vez que o programa convidado se registrou previamente, o programa host tem a expectativa de que o programa convidado reconheça a notificação e suporte o tratamento apropriado da notificação, incluindo a última etapa de execução de encerramento voluntário, assim retornando o controle da CPU host X ao programa host. Uma vez que isso ocorra, o programa host pode proceder com qualquer utilização da CPU host X que possa ter levado o processo a ser iniciado.
[0050] O programa host notifica um convidado, por exemplo, definindo qualquer status, configurando um indicador (por exemplo, um bit) ou fazendo com que seja enviado um sinal assíncrono não solicitado (por exemplo, uma interrupção de rastreamento de aviso) ao convidado. Embora registrado, o tempo de recebimento de tal sinal de notificação ainda é desconhecido ao convidado. Ao se registrar, o convidado concorda em aderir ao protocolo se e quando for sinalizado.
[0051] Em um sistema uniprocessador host, se a CPU host estiver no modo de execução interpretativa, de modo que a CPU convidada esteja operacional, nenhuma outra CPU host existe para invocar o protocolo de interrupção de rastreamento de aviso. No entanto, mesmo neste caso, o protocolo de interrupção de rastreamento de aviso pode ser invocado pela própria CPU quando a CPU host, enquanto no modo de execução interpretativa, reconhece a expiração da fração de tempo e pode, então, conceder um período de carência e executar a notificação.
[0052] Em um exemplo adicional de notificação, a notificação ocorre quando, devido a uma alteração de status interna reconhecida pela CPU host quando no modo de execução interpretativa, a CPU host faz com que a notificação definida no protocolo de interrupção de rastreamento de aviso seja enviada para a CPU convidada. Um exemplo disso ocorre quando a CPU convidada é habilitada para o protocolo de interrupção de rastreamento de aviso e a CPU host reconhece o fim da fração de tempo. Antes de sinalizar a CPU convidada para renunciar ao controle, a CPU concede internamente um período de carência para permitir à CPU convidada tempo suficiente para receber o sinal, para tomar a ação apropriada (por exemplo, concluir a unidade despachável atual ou tornar a unidade atual despachável re-despachável) e para encerrar voluntariamente. Internamente, a CPU host mantém estado para indicar que a CPU convidada foi notificada. Se o convidado não for voluntariamente encerrado dentro do período de carência, a CPU reconhece isso e encerra a execução do convidado, retornando assim o controle para o programa host finalizando o modo de execução interpretativa. O convidado não tem como determinar, em uma concretização, por que o protocolo foi invocado, mas apenas que foi notificado para limpar e encerrar. Podem existir outras razões para o host encerrar o modo de execução interpretativa e, dessa forma, encerrar a execução de convidado. Por exemplo, existem cenários em que a execução de todas as CPUs convidadas deve ser interrompida para fazer algumas mudanças coordenadas em toda a configuração de convidado. Uma configuração de multiprocessamento de convidado não precisa ter algumas CPUs operando sob diferentes regras ou pressupostos de outras CPUs da configuração de convidado. Tal combinação poderia criar resultados imprevisíveis de convidados.
[0053] A CPU host recebe o efeito da CPU convidada que realizou a saída voluntária ou saída por qualquer outra razão (por exemplo, o host retornou o recurso da CPU), ETAPA 508. Se a saída for devido ao que o protocolo de interrupção de rastreamento de aviso define, então, o programa host lembra de prover um retorno à CPU convidada na próxima vez que for iniciada, independentemente do tempo que isso levar até para acontecer. Este retorno é uma indicação positiva (“boa”), assumindo que o convidado saiu voluntariamente antes da expiração do período de carência. Se a saída for devido a qualquer outro motivo, nenhum retorno de protocolo de interrupção de rastreamento de aviso ocorre na próxima inicialização da CPU convidada.
[0054] Se o convidado estiver atrasado na saída voluntária; ou seja, o convidado executou uma ação para sair voluntariamente, mas o período de carência expirou, a execução da CPU convidada é antecipada pela expiração do período de carência. Da próxima vez em que a CPU convidada for iniciada com uma fração de tempo normal, uma indicação de retorno de exceção é provida para que o convidado saiba que estava atrasado em sua saída voluntária. Geralmente, isso pode ser usado para a determinação de problema no programa convidado porque o período de carência usual permite tempo suficiente para limpar e sair voluntariamente.
[0055] Se uma saída ocorrer, que não a saída voluntária do protocolo de interrupção de rastreamento de aviso, da próxima vez em que a CPU convidada for iniciada com uma fração de tempo normal, nenhum retorno para o protocolo de rastreamento de aviso é incluído.
[0056] Os meios para sair voluntariamente são realizados por qualquer mecanismo que faça com que o controle passe para o programa host a partir do programa convidado, que é reconhecido pelo programa host como a saída voluntária de protocolo, e inclui o mecanismo de retorno acima mencionado. Em um exemplo, a instrução de Diagnóstico é usada para a saída voluntária. Ou seja, a instrução de Diagnóstico com um parâmetro particular é usada para indicar a conclusão da fração de tempo. Após a instrução de Diagnóstico ser emitida pelo programa convidado e ser executada, o programa host determina se a saída estava no horário previsto. Então, quando o convidado é iniciado novamente, que é na próxima instrução sequencial após o Diagnóstico, um código de condição indicando estar no horário previsto é provido. O código de condição é definido, por exemplo, na PSW convidada que é usada para iniciar o convidado na próxima instrução sequencial. O convidado pode, então, testar o código de condição.
[0057] O gerenciamento da saída voluntária de convidado pelo host é ainda descrito com referência à Figura 6. Inicialmente, o controle retorna para a CPU host, quando a CPU convidada é interrompida, ETAPA 600. Uma determinação é feita sobre se o controle retornou dentro do período de carência, CONSULTA 602. Se o controle tiver retornado dentro do período de carência, então, o programa host observa uma saída de convidado voluntária pelo protocolo de interrupção de rastreamento de aviso e lembra o retorno bom para o próximo início da CPU convidada, independentemente de qual CPU host pode prover a CPU convidada naquele momento, ETAPA 604. Assume-se que a facilidade de interrupção de rastreamento de aviso está instalada. Caso contrário, o status de retorno não é lembrado. No entanto, se o convidado executar uma ação para sair voluntariamente, mas estiver fora do período de carência, CONSULTA 602, então, o programa host na CPU host observa uma saída de convidado voluntária pelo protocolo de interrupção de rastreamento de aviso (mesmo que tenha sido prematura e tiver tido que sair involuntariamente) e lembra um retorno ruim para o próximo início da CPU convidada, independentemente de qual CPU host puder prover a CPU convidada naquele momento, ETAPA 606. Novamente, assume-se que a facilidade de rastreamento de aviso está instalada. Caso contrário, o status de retorno não é lembrado.
[0058] Posteriormente, se o host lembrar retorno bom ou ruim, o programa host redireciona a CPU host para uma atribuição de preempção, ETAPA 608. Ou seja, o host é redirecionado para executar uma ou mais funções agora que tem seus recursos (CPU) de volta.
[0059] Além disso, no próximo início sequencial da CPU convidada, independentemente de qual CPU host provisionar a CPU convidada, se o status de retorno for lembrado, a indicação de status de retorno é definida antes do início da CPU convidada, ETAPA 610. Em um exemplo, é definida na descrição de estado SIE, por exemplo, na PSW da descrição de estado, que indica o início da próxima instrução sequencial.
[0060] Mais detalhes sobre o processamento associado à facilidade de interrupção de rastreamento de aviso são descritos com referência às Figuras 7-9. Em particular, a Figura 7 apresenta uma concretização da lógica associada a uma visão geral do processamento da facilidade de interrupção de rastreamento de aviso; as Figuras 8A-8C fornecem detalhes do processamento da facilidade de interrupção de rastreamento de aviso, de acordo com um aspecto da presente invenção; e a Figura 9 apresenta uma concretização da lógica associada a uma interrupção de rastreamento de aviso.
[0061] Referindo-se à Figura 7, inicialmente, um programa convidado (por exemplo, sistema operacional convidado) reconhece que a facilidade de interrupção de rastreamento de aviso está instalada, ETAPA 700. Em uma concretização, isso é realizado pelo programa convidado observando um indicador de facilidade instalado (por exemplo, bit) que é localizado, por exemplo, em um bloco de controle designado. Se o sistema operacional convidado tiver o suporte para participar da facilidade de interrupção de rastreamento de aviso, ele reconhece o indicador de facilidade de interrupção de rastreamento de aviso instalada e, em seguida, indica sua capacidade de participar do protocolo. Em um exemplo, isso inclui registrar sua intenção de participar do processamento de rastreamento de aviso, ETAPA 702. Como documento aqui, em um exemplo, o registro é executado através de uma instrução de Diagnóstico. Quando registrado, o sistema operacional convidado indica tanto à CPU host quanto ao programa host que sabe como lidar com uma interrupção de rastreamento de aviso (WTI), que é uma interrupção não ambígua que provê um aviso ao convidado que está, por exemplo, prestes a perder acesso a seu recurso compartilhado (por exemplo, CPU convidada) e que deve, por exemplo, agir em relação à sua unidade despachável atualmente em execução. O registro é um pré-requisito, em uma concretização, para receber a WTI. Se o convidado não estiver registrado para a facilidade de interrupção de rastreamento de aviso, após expiração da fração de tempo de convidado, nenhum período de carência é oferecido e a CPU convidada é retirada do modo de execução interpretativa.
[0062] Mesmo se registrado, em uma concretização, o programa convidado tem dois mecanismos para desativar a apresentação da WTI. Por exemplo, um bit selecionado, por exemplo, na palavra de status de programa (PSW) pode ser definido como zero, o que desativa a apresentação de todas as interrupções externas, incluindo WTI; ou um bit em um registro de controle especificado (por exemplo, CR0) pode ser definido como zero para desativar apenas a WTI. Quando ambos os bits são um, a apresentação da WTI é habilitada. Se a apresentação de uma WTI permanecer desativada para todo o período de carência de WTI, a execução do convidado termina sem o benefício da WTI, o que constitui uma saída involuntária.
[0063] Durante a execução interpretativa da CPU convidada, se a CPU convidada reconhecer internamente uma condição de interrupção externa do temporizador da CPU host (por exemplo, uma fração de tempo expirada) ou uma preempção solicitada pelo programa host, CONSULTA 704, o processamento interno da CPU determina, antes do host receber o controle, se o processamento da interrupção de rastreamento de aviso deve ser executado, CONSULTA 706. Ou seja, o processamento interno da CPU verifica se o convidado é habilitado para o processamento de rastreamento de aviso e, portanto, determina que o processamento de rastreamento de aviso deve ser incluído no processamento a ser executado. Se o processamento da interrupção de rastreamento de aviso não for executado, então, a execução interpretativa do convidado termina, ETAPA 708, e o controle retorna ao programa host, ETAPA 710. Voltando à CONSULTA 706, se, no entanto, o processamento de interrupção de rastreamento de aviso tiver que ser executado, então, o processamento é executado, como descrito mais detalhadamente abaixo, ETAPA 712.
[0064] Concretizações de detalhes adicionais do processamento de interrupção de rastreamento de aviso são descritas com referência às Figuras 8A-8C. Neste processamento, uma variedade de indicadores de controle é empregada, incluindo o seguinte:
[0065] Um controle interno ativo do período de carência da facilidade de interrupção de rastreamento de aviso (por exemplo, bit G), que não é arquitetonicamente visível, mas é usado pela lógica interna da CPU;
[0066] Um controle interno de interrupção de rastreamento de aviso (WTI) apresentada (por exemplo, bit P), que indica, quando um, que a WTI foi apresentada ao convidado e, quando zero, indica que não foi apresentada. Como o controle interno ativo do período de carência da facilidade de interrupção de rastreamento de aviso, o controle interno de WTI apresentada não é arquitetonicamente visível, mas é usado pela lógica interna da CPU;
[0067] Uma preempção de programa host do controle de convidado (por exemplo, bit T), que é, por exemplo, o indicador de requisição de intervenção de rastreamento de aviso na descrição de estado da CPU convidada; e
[0068] Ativação de interrupções externas existem quando um indicador E é um. Em um exemplo, o indicador E é um bit dentro da palavra de status de programa (PSW) atual.
[0069] Referindo-se à Figura 8A, em um exemplo, uma condição de interrupção de temporizador da CPU host é reconhecida (por exemplo, fração de tempo expirada) ou uma requisição de intervenção de rastreamento de aviso (por exemplo, host deseja retorno precoce de recursos da CPU; isto é, antes do térmico da fração de tempo) é reconhecida. Se uma condição de interrupção do temporizador da CPU host for reconhecida, CONSULTA 800, uma determinação é feita sobre se o indicador de controle ativo do período de carência é definido (por exemplo, é G igual a 1), CONSULTA 802. Se G não for definido, então, o indicador G é ajustado, por exemplo, para 1, ETAPA 804, e o período de carência da facilidade de interrupção de rastreamento de aviso está prestes a começar. O valor atual do temporizador da CPU host é, então, salvo (o valor salvo é chamado de valor original neste documento), ETAPA 806, e o temporizador da CPU host é ajustado para o período de carência de rastreamento de aviso (por exemplo, 50 microssegundos), ETAPA 808.
[0070] Posteriormente, uma determinação é feita sobre se o convidado é habilitado para uma interrupção de rastreamento de aviso, CONSULTA 810. Em uma concretização, se o convidado nível 2 estiver ativo indicando que um convidado iniciou outro convidado, então, o Convidado 2 sai do modo de execução interpretativa como para uma interrupção do Convidado 1, e a instrução de Início de Execução Interpretativa do Convidado 1 é anulada. Dessa forma, o processamento é como um Convidado 1 neste ponto. Se o Convidado 2 não estiver ativo, então, o processamento apenas continua com o Convidado 1. Se o convidado estiver habilitado para uma WTI, então, a interrupção externa de rastreamento de aviso (WTI) é apresentada ao convidado, ETAPA 812. Em um exemplo, essa interrupção inclui um código de interrupção particular que é apresentado indicando que tem um período de carência para executar uma ou mais funções (por exemplo, limpeza), se desejado.
[0071] Além disso, P é definido para 1 indicando que a WTI foi apresentada, ETAPA 814. Além disso, o bit T é definido para 1 usando uma função de atualização intertravada (pode ser 1 se uma requisição de intervenção tiver sido originalmente foi usado), ETAPA 816. O período de carência no temporizador da CPU host continua a ser reduzido, independentemente de se a WTI foi apresentada, ETAPA 818. Esse processamento é, então, encerrado, ETAPA 820. Em um exemplo, uma designação de saída desse processo indica que a CPU concluiu o processamento atual da facilidade de interrupção de rastreamento de aviso e está retornando para outro processamento conforme ditado pelo estado atual da CPU.
[0072] Voltando à CONSULTA 810, se o convidado não estiver habilitado para interrupção de rastreamento de aviso, o processamento passa para a ETAPA 816. Neste caso, o convidado não está habilitado para a WTI, portanto esta não pode ser apresentada ao convidado. No entanto, o bit T é definido pendente para que possa ser detectado mais tarde quando o convidado for habilitado para a WTI.
[0073] Voltando à CONSULTA 800, se não for uma condição de interrupção do temporizador da CPU host, então uma requisição de intervenção de rastreamento de aviso é reconhecida (isto é, preempção de host). Ou seja, o bit T no campo de requisição de intervenção da descrição de estado do convidado é 1. Dessa forma, uma determinação é feita sobre se o indicador G é definido, CONSULTA 850. Se não for definido (por exemplo, 0), então, o processamento continua com a ETAPA 804. Nessa situação, a condição T igual a 1 é o motivo inicial para iniciar o processo de WTI. No entanto, se o G bit for definido, então, uma determinação é feita sobre se P é definido, CONSULTA 852. Se P não for definido (por exemplo, igual a 0), então, o processamento continua com a ETAPA 810 na tentativa de apresentar a WTI. No entanto, se P for definido (por exemplo, não igual a 0), então, a descoberta de T igual a 1 após o período de carência da facilidade de rastreamento de aviso ter iniciado não tem efeito e o processo é encerrado, ETAPA 854.
[0074] Voltando à CONSULTA 802, se G for definido (por exemplo, igual a 1), a CPU convidada já foi rodada no período de carência e a expiração do temporizador da CPU host indica que o período de carência expirou. Dessa forma, um ciclo WTI foi iniciado previamente e o período de carência expirou. Por isso, referindo-se à Figura 8B, o valor original do temporizador da CPU host salvo anteriormente foi reduzido pela quantidade de tempo realmente usada durante o período de carência e, após, carregado no temporizador da CPU host, ETAPA 860. O modo de execução interpretativa é encerrado, ETAPA 862, e a interrupção externa do temporizador da CPU host é apresentada ao host, ETAPA 864 (esta é uma forma de uma saída de convidado involuntária).
[0075] Além do acima, análise de WTI pode ser iniciada através de determinadas instruções que podem habilitar a CPU para WTI. Por exemplo, referindo-se à Figura 8C, inicialmente, um número de instruções que podem habilitar a CPU para WTI, incluindo, por exemplo, uma instrução Carregar PSW (Estendida) e uma instrução Armazenar em Seguida ou Máscara de Sistema que pode definir o bit designado na PSW, e Carregar Controle que pode definir o bit selecionado no registro de controle, executa o monitoramento como descrito neste documento. Por exemplo, uma instrução que pode habilitar interrupções verifica o bit T para potencial processamento de rastreamento de aviso. Se T = 0, CONSULTA 880, então não há WTI, e este processo é encerrado, ETAPA 884. No entanto, se T = 1, o processamento continua com a CONSULTA 822.
[0076] Na CONSULTA 882, determina-se se P é definido (por exemplo, igual a 1). Caso positivo, então, este processo é encerrado, ETAPA 884, já que a habilitação já havia sido detectada previamente. No entanto, se P não for definido (por exemplo, não igual a 1), então, uma determinação adicional é feita sobre se G é definido (por exemplo, igual a 1), CONSULTA 886. Se não, o processamento continua com a ETAPA 804 (Figura 8A). No entanto, se G for definido (por exemplo, igual a 1), ETAPA 886 (Figura 8C), então, o processamento continua com a CONSULTA 810 na Figura 8A, ETAPA 888, e o processamento é encerrado.
[0077] Detalhes adicionais do processamento da interrupção de rastreamento de aviso são descritos com referência à Figura 9. Quando o programa convidado recebe a interrupção de rastreamento de aviso, executa quaisquer funções (por exemplo, funções do sistema operacional) que tiver que executar, por exemplo, para tornar a unidade despachável de trabalho re-despachável, ETAPA 900. Por exemplo, o convidado interrompe a unidade despachável em um ponto particular, salva seu estado e move-a para outra CPU convidada ou permite que seja movida provendo informações de estado etc. O sistema operacional convidado sinaliza que terminou emitindo um sinal de conclusão de limpeza de rastreamento de aviso para o programa host (também conhecida como saída voluntária), ETAPA 902. Este sinal pode ser qualquer mecanismo que leve a operação de convidado a abandonar a fração de tempo restante. No entanto, deve ser reconhecido pelo programa host como a parte de limpeza do protocolo. Em um exemplo, uma função de limpeza concluída da instrução de Diagnóstico é utilizada.
[0078] Se o programa convidado emite o sinal de limpeza concluída antes de o período de carência expirar, CONSULTA 904, o programa host lembra que a CPU convidada saiu dentro do prazo, ETAPA 906. Esta é uma saída voluntária. Quando a CPU convidada é iniciada em seguida, a natureza pontual do sinal é indicada de volta para a CPU convidada, ETAPA 908. Em um exemplo, a PSW de retomada de convidado é definida para indicar um código de condição bem-sucedido (por exemplo, código de condição 0).
[0079] Voltando à CONSULTA 904, se o programa convidado, por qualquer motivo, levar muito tempo, o período de carência expira em do temporizador da CPU host ter reduzido o período de carência a zero, apresentando assim uma condição de interrupção externa do temporizador da CPU host à CPU. Neste caso, a CPU reconhece que o convidado já estava no período de carência e não concede outro período de carência. Em vez disso, a execução de convidado é interrompida e o controle reverte para o programa host pela recepção da interrupção externa. Um programa host reconhece que esta finalização da CPU convidada é uma saída involuntária de convidado.
[0080] Na próxima inicialização da CPU convidada, o sistema operacional convidado pode emitir um sinal de limpeza concluída, embora agora seja tarde demais. O programa host já não tem expectativa de aguardar o recebimento do sinal de limpeza concluída. Então, a próxima vez que uma CPU convidada for iniciada, a natureza tardia do sinal é indicada de volta à CPU convidada, ETAPA 912. Em um exemplo, a PSW de retomada de convidado é marcada para indicar uma condição tardia, que será visualizada pelo convidado na próxima inicialização. Emitir uma instrução de Diagnóstico tardia é, às vezes, chamado de instrução de Diagnóstico ultrapassada, porque anteriormente perdeu a saída dentro do período de carência e, então, saiu posteriormente por nenhuma razão boa.
[0081] Em um exemplo, após uma nova inicialização da CPU convidada, o programa convidado pode verificar a parte de retomada de sinal do protocolo para saber se o sinal tinha sido ou não emitido dentro do período de carência. O programa convidado pode usar esta informação para investigar por que pode ter sido adiada e fazer melhorias para aprimorar as estatísticas de serem mais pontuais no futuro.
[0082] Em uma concretização, quando o convidado é desativado para todas as interrupções externas, um número de instruções que podem permitir interrupções externas realiza o monitoramento. Quando o convidado é habilitado para interrupções externas, uma habilitação de WTI é examinada. Neste ponto, se a WTI estiver habilitada e o bit P for 0, a WTI é apresentada à CPU convidada.
[0083] Como mencionado acima, em uma concretização, uma função de Diagnóstico é usada para indicar que a limpeza está concluída ou para se registrar na facilidade de interrupção de rastreamento de aviso. Para a limpeza concluída, a função de Diagnóstico, quando emitida com um parâmetro de limpeza e executada, sinaliza que a CPU emissora realizou qualquer processamento desejado associado ao recebimento de uma interrupção externa de rastreamento de aviso. Quando a execução é concluída, um código de condição é definido indicando se a conclusão foi emitida ou não dentro do intervalo de tempo dependente de modelo permitido para limpeza após a interrupção de rastreamento de aviso.
[0084] Quanto à função de registro, a função de Diagnóstico, quando emitida com o parâmetro de registro e executada, indica que a configuração de emissão compreende a interrupção de rastreamento de aviso. Quando a execução é concluída, um código de condição bem-sucedida é definido. O status de registro é apagado por uma reconfiguração do sistema.
[0085] Uma concretização de um formato de uma instrução de Diagnóstico é descrita com referência à Figura 10. Em uma concretização, uma instrução de Diagnóstico 1000 inclui um código de operação (opcode) 1002 indicando a função de Diagnóstico; um primeiro campo de registro 1004 (R1); um segundo campo de registro 1006 (R3); um campo de registro geral 1008 (B2); e um campo de deslocamento 1010 (D2). Em um exemplo, os conteúdos do campo D2 são adicionados aos conteúdos do registro geral B2. O resultado não é usado para endereçar dados, mas em vez disso, determinados bits (por exemplo, bits 48-63) são usados como uma extensão de código de operação. Quando a extensão de código de operação é um valor predeterminado, a limpeza de rastreamento de aviso concluída é especificada e uma fração de tempo é abandonada.
[0086] Em um exemplo, o campo R3 não é utilizado e contém zeros. Além disso, os bits especificados do registro geral R1 não são utilizados e devem conter zeros e um bit particular do registro geral R1 (por exemplo, bit 63) especifica a função de limpeza concluída, quando zero, e a função de registro, quando 1.
[0087] Em uma partição lógica usando CPUs físicas compartilhadas, esta função pode melhorar o desempenho do sistema, permitindo que a CPU física, na qual a CPU lógica está rodando, seja atribuída a outra CPU lógica.
[0088] Além de Diagnóstico, qualquer outra saída SIE enquanto no intervalo gratuito WTI, seja qual for a causa, também restaura o valor original do temporizador da CPU host diminuído pela quantidade gasta de tempo do período de carência.
[0089] É descrita em detalhes no documento uma facilidade de interrupção de rastreamento de aviso que provê, em uma concretização, um mecanismo pelo qual uma interrupção externa de rastreamento de aviso pode ser apresentada a uma CPU em uma configuração com recursos compartilhados de CPU, tais como uma partição lógica. O programa de controle pode usar a interrupção externa de rastreamento de aviso como o sinal para tornar a unidade despachável atualmente em execução despachável em uma CPU diferente na configuração.
[0090] Em uma concretização, um processador lógico (convidado) rodando em uma fração de tempo em um processador físico recebe um sinal de aviso indicando um período de carência, por exemplo, uma quantidade de tempo antes do processador lógico ser interrompido (desalocado do processador físico que pode ser compartilhado) permitindo que o trabalho que está sendo realizado pelo processador lógico seja concluído ou movido para outro processador lógico. Por exemplo, a CPU convidada é sinalizada de que a fração de tempo está expirada e que deve antecipar a unidade despachável atual de trabalho (DU) para torná-la re- despachável em outra CPU convidada. Em um exemplo, o sinal de aviso é uma interrupção tendo um código de interrupção que indica que é uma WTI. Em um exemplo adicional, o código de interrupção inclui informações sobre a quantidade de tempo ou outro período provido ao período de carência.
[0091] Em uma concretização, a facilidade de interrupção de rastreamento de aviso pode ser usada em ambientes não-virtuais, bem como em ambientes virtuais, em que um programa e/ou processador compartilha recursos (por exemplo, recursos da CPU ou outros recursos) com um ou mais outros programas e/ou processadores.
[0092] Em uma concretização em que o ambiente é um ambiente virtual, pela perspectiva de um convidado: 1. O programa convidado observa a condição instalada do protocolo de interrupção de rastreamento de aviso. 2. O programa convidado se registra no protocolo de interrupção de rastreamento de aviso. 3. A CPU convidada recebe uma notificação de rastreamento de aviso de acordo com a arquitetura particular (por exemplo, indicação de memória compartilhada, indicação de dispositivo E/S compartilhado, interrupção). 4. O programa convidado rodando na CPU convidada executa processamento aplicável de acordo com a natureza do programa convidado que recebeu a notificação (processamento de notificação que se espera ser exclusivo por sistema operacional). 5. A CPU convidada abandona o controle de acordo com a técnica voluntária do protocolo de rastreamento de aviso. 6. Na próxima inicialização da CPU convidada, o programa convidado pode observar o retorno, de acordo com o protocolo de rastreamento de aviso.
[0093] Além disso, em uma concretização, pela perspectiva do host: A. O programa host observa a condição instalada da facilidade de protocolo de interrupção de rastreamento de aviso. 1. O programa host adquire a indicação de facilidade de protocolo de interrupção de rastreamento de aviso instalada. 2. O programa host lembra persistentemente o status instalado do protocolo de interrupção de rastreamento de aviso. 3. O programa host indica o status de protocolo de rastreamento de aviso para cada configuração de convidado. 4. O programa host desativa o protocolo de rastreamento de aviso em todas as CPUs convidadas não registradas. 5. O programa host se prepara para reconhecer uma requisição de registro de rastreamento de aviso de convidado da cada configuração de convidado. B. O programa host reconhece uma requisição de registro de rastreamento de aviso de um convidado. 1. O programa host lembra persistentemente que a configuração de convidado compreende o protocolo de rastreamento de aviso. 2. O programa host habilita o convidado ao protocolo de rastreamento de aviso. C. Durante a operação da CPU convidada X normal, preempção da CPU convidada X é usada para readquirir a CPU host X correspondente. 1. O programa host na CPU Y sinaliza a notificação à CPU convidada X. a. A CPU X propaga a notificação à CPU convidada X por meio da atualização da localização de memória compartilhada, atualização do dispositivo E/S compartilhado ou interrupção da CPU convidada X, acordo com o protocolo de rastreamento de aviso. D. A CPU convidada X é interrompida, retornando o controle para a CPU host X. 1. Se dentro do período de carência, o programa host na CPU X observa a saída voluntária de convidado por protocolo de rastreamento de aviso e lembra um retorno bom para a próxima inicialização da CPU convidada X, independentemente de qual CPU host possa provisionar a CPU convidada X naquele momento. (A) Se dentro do período de carência, mas a saída da CPU convidada X não for de acordo com o protocolo de rastreamento de aviso, status de retorno não é lembrado. 2. Se não dentro do período de carência, o programa host na CPU X observa saída voluntária de convidado por protocolo de rastreamento de aviso e lembra retorno ruim para a próxima inicialização da CPU convidada X, independentemente de qual CPU host possa provisionar a CPU convidada X naquele momento. a. Se não dentro do período de carência, mas a saída da CPU convidada X não estiver de acordo com o protocolo de rastreamento de aviso, o status de retorno não é lembrado. 3. O programa host na CPU host X redireciona a CPU X para a atribuição de preempção. E. Próxima inicialização sequencial da CPU convidada X, independentemente de qual CPU host provê a CPU convidada X, se o status de retorno for lembrado, define indicação do retorno, de acordo com o protocolo de rastreamento de aviso antes de iniciar a CPU convidada X.
[0094] Em uma concretização, um processador convidado da configuração de convidado recebe uma interrupção única, sendo essa interrupção definida para uma arquitetura de computador e o significado da interrupção sendo uma interrupção de rastreamento de aviso. A interrupção indica um código específico que identifica a interrupção como uma interrupção de rastreamento de aviso. A interrupção implica um intervalo de tempo relativamente curto, referido como um período de carência, levando ao fim de uma execução de processador convidado.
[0095] Durante o período de carência, em um exemplo, espera-se nominalmente que o programa convidado torne a unidade despachável atual de trabalho re-despachável em outro processador convidado, evitando assim ficar bloqueado no atual processador convidado, aguardando o início de sua próxima fração de tempo normal a partir do host.
[0096] Em um exemplo, o intervalo de tempo relativamente curto é concedido apenas uma vez por início de programa host do processador convidado. O intervalo de tempo é concedido, por exemplo, pelo intervalo de tempo existente sob o qual o processador convidado está rodando. Uma vez que o intervalo de tempo concedido é alocado a partir da fração de tempo restante normal, não está fazendo empréstimo de tempo, per se, mas está usando uma quantidade de tempo limitada do intervalo de tempo atual para garantir que o processador convidado seja realmente antecipado em um período relativamente curto.
[0097] Em um exemplo adicional, em que a fração de tempo atual expirou, o intervalo de tempo é concedido como tempo extra além do intervalo de tempo existente sob o qual o processador convidado está rodando. O intervalo de tempo concedido é concedido pelo programa host em relação ao próximo intervalo de tempo normal sequencial esperado, que será consumido pelo processador convidado sob o qual espera- se que o processador convidado esteja rodando a seguir. Ainda se pretende garantir que o processador convidado seja antecipado em um período de tempo relativamente curto.
[0098] Em um exemplo, uma requisição de interrupção para um evento de rastreamento de aviso pode ser gerada para informar ao programa que está próximo ao final do intervalo de execução atual em uma CPU compartilhada. A requisição de interrupção é um tipo de condição pendente que é gerada quando a configuração é registrada e é habilitada para a facilidade de interrupção de rastreamento de aviso.
[0099] O processamento cooperativo entre os programas (por exemplo, host e convidado) otimiza o compartilhamento de recursos (por exemplo, CPU) entre programas (por exemplo, sistemas operacionais convidados). Um ou mais aspectos fornecem, por exemplo, melhor tempo de resposta com a mesma utilização da CPU. Além disso, a serialização do sistema é liberada antes do escalonamento pelo hipervisor.
[0100] Em uma concretização adicional, um ou mais aspectos da presente invenção podem ser usados com requisições de um sistema operacional para permitir que um segmento de execução individual continue a melhorar o tempo decorrido de trabalho sensível ao tempo. Ou seja, um segmento pode requisitar ou ser provido com tempo adicional para executar uma função.
[0101] Como será apreciado por um versado na técnica, um ou mais aspectos da presente invenção podem ser incorporados como um sistema, método ou produto de programa de computador. Por conseguinte, um ou mais aspectos da presente invenção podem assumir a forma de uma concretização inteiramente de hardware, uma concretização inteiramente de software (incluindo firmware, software residente, microcódigo etc.) ou uma concretização que combina aspectos de software e hardware que podem ser geralmente referidos neste documento como “circuito”, “módulo” ou “sistema”. Além disso, um ou mais aspectos podem ter a forma de um produto de programa de computador incorporado em um ou mais meios legíveis por computador tendo código de programa legível por computador neles incorporado.
[0102] Qualquer combinação de um ou mais meios legíveis por computador pode ser utilizada. Um meio de armazenamento legível por computador pode ser, por exemplo, mas sem limitação, um sistema, aparelho ou dispositivo eletrônico, magnético, óptico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação adequada dos acima. Exemplos mais específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem os seguintes: uma conexão elétrica tendo uma ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória somente de leitura programável apagável (EPROM ou memória Flash), uma fibra óptica, uma memória somente de leitura de disco portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos acima. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que possa conter ou armazenar um programa para uso por ou em uma conexão com um sistema, aparelho ou dispositivo de execução de instruções.
[0103] Com referência agora à Figura 11, em um exemplo, um produto de programa de computador 1100 inclui, por exemplo, um ou mais meios de armazenamento legíveis por computador não transitórios 1102, para armazenar lógica ou meios de código de programa legível por computador 1104 para prover e facilitar um ou mais aspectos da presente invenção.
[0104] O código de programa incorporado em um meio legível por computador pode ser transmitido utilizando um meio apropriado, incluindo, mas sem limitação, sem fio, a cabo, cabo de fibra óptica, RF etc., ou qualquer combinação adequada dos acima.
[0105] Código de programa de computador para a realização de operações para um ou mais aspectos da presente invenção pode ser escrito em qualquer combinação de uma ou linguagens de programação, incluindo uma linguagem de programação orientada a objetos, tal como Java, Smalltalk, C++ ou semelhantes, e linguagens de programação processuais convencionais, tais como a linguagem de programação “C”, linguagem de montagem ou linguagens de programação semelhantes. O código do programa pode ser executado inteiramente no computador do usuário, parcialmente no computador do usuário, como um pacote de software autônomo, parcialmente no computador do usuário e parcialmente em um computador remoto ou inteiramente no computador ou servidor remoto. No último cenário, o computador remoto pode ser conectado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou a conexão pode ser feita a um computador externo (por exemplo, através da Internet usando um provedor de serviços de Internet).
[0106] Um ou mais aspectos da presente invenção são descritos neste documento com referência a ilustrações de fluxograma e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programa de computador de acordo com concretizações da invenção. Deve-se entender 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 bloco, podem ser implementados pelas instruções de programa de computador. Essas instruções de programa de computador podem ser providas a um processador de um computador de uso geral, um computador de aplicação específica ou outros aparelhos de processamento de dados programáveis para produzir uma máquina, de modo que as instruções, que são executadas através do processador do computador ou outros aparelhos de processamento de dados programáveis, criem meios para implementar as funções/ações especificadas no blocos ou blocos do fluxograma e/ou diagrama de blocos.
[0107] Essas instruções de programa de computador podem também ser armazenadas em um meio legível por computador que pode direcionar um computador, outros aparelhos de processamento de dados programáveis ou outros dispositivos para funcionar de uma maneira particular, de modo que as instruções armazenadas no meio legível por computador produzam um artigo de fabricação incluindo instruções que implementam a função/ação especificada no bloco ou blocos do fluxograma e/ou diagrama de blocos.
[0108] As instruções de programa de computador também podem ser carregadas em um computador, outros aparelhos de processamento de dados programáveis ou outros dispositivos para que uma série de etapas operacionais seja executada no computador, outros aparelhos programáveis ou outros dispositivos para produzir um processo implementado por computador, de modo que as instruções que são executadas no computador ou outros aparelhos programáveis forneçam processos para a implementação das funções/ações especificadas no bloco ou blocos do fluxograma e/ou diagramas de blocos.
[0109] O fluxograma e diagramas de blocos nas figuras ilustram a arquitetura, a funcionalidade e a operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações de um ou mais aspectos da presente invenção. A este respeito, cada bloco no fluxograma ou diagramas de blocos pode representar um módulo, segmento ou parte de código, que compreende uma ou mais instruções executáveis para implementar a(s) função(ões) lógica(s) especificada(s). Deve-se também notar que, em algumas implementações alternativas, as funções observadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente simultaneamente, ou os blocos podem, às vezes, ser executados na ordem inversa, dependendo da formalidade envolvida. Também será notado que cada bloco dos diagramas de bloco e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração de fluxograma, pode ser implementado por sistemas à base de hardware de aplicação específica que executam as funções ou ações especificadas, ou combinações de hardware de aplicação específica e instruções de computador.
[0110] Além do acima, um ou mais aspectos da presente invenção podem ser providos, oferecidos, implantados, gerenciados, executados etc. por um fornecedor de serviço que ofereça gerenciamento de ambientes de cliente. Por exemplo, o fornecedor de serviço pode criar, manter, suportar etc. código de computador e/ou uma infraestrutura de computador que execute um ou mais aspectos da presente invenção para um ou mais clientes. Em contrapartida, o fornecedor de serviços pode receber o pagamento do cliente sob uma assinatura e/ou contrato, por exemplo. Adicionalmente ou alternativamente, o fornecedor de serviços pode receber o pagamento da venda de conteúdo publicitário para uma ou mais terceiros.
[0111] Em um aspecto da presente invenção, um aplicativo pode ser implantado para realizar um ou mais aspectos da presente invenção. Como exemplo, a implantação de um aplicativo compreende prover infraestrutura de computador operável para executar um ou mais aspectos da presente invenção.
[0112] Como um aspecto adicional da presente invenção, uma infraestrutura de computação pode ser implantada compreendendo integrar o código legível por computador em um sistema de computação, em que o código em combinação com o sistema de computação é capaz de executar um ou mais aspectos da presente invenção.
[0113] Como um aspecto adicional da presente invenção, um processo para integrar infraestrutura de computação compreendendo integrar código legível por computador em um sistema de computador pode ser provido. O sistema de computador compreende um meio legível por computador, em que o meio de computador compreende um ou mais aspectos da presente invenção. O código em combinação com o sistema de computador é capaz de executar um ou mais aspectos da presente invenção.
[0114] Embora várias concretizações sejam descritas acima, elas são apenas exemplos. Por exemplo, ambientes de computação para outras arquiteturas podem incorporar e usar um ou mais aspectos da presente invenção. Além disso, o período de carência pode ser diferente de uma quantidade de tempo, tal como um número de instruções ou ciclos ou qualquer outro valor quantificável. Muitas alterações e/ou adições podem ser feitas sem se afastar do escopo da presente invenção.
[0115] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos da presente invenção. Por exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa é utilizável, o qual inclui pelo menos dois processadores acoplados diretamente ou indiretamente a elementos de memória através de um barramento do sistema. Os elementos de memória incluem, por exemplo, memória local empregada durante a execução real do código do programa, armazenamento em massa e memória cache que fornecem armazenamento temporário de pelo menos algum código de programa para reduzir o número de vezes que o código deve ser recuperado do armazenamento em massa durante a execução.
[0116] Dispositivos de Entrada/Saídas ou E/S (incluindo, mas sem limitação, teclados, monitores, dispositivos ponteiros, DASD, fita, CDs, DVDs, unidade USB e outras mídias de memória etc.) podem ser acoplados ao sistema direta ou diretamente ou através de controladores E/S intermediários. Adaptadores de rede também podem ser acoplados ao sistema para permitir que o sistema de processamento de dados seja acoplado a outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através de redes públicas ou privadas intermediárias. Modems, modems a cabo e placas Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0117] Outros exemplos de ambientes de computação que podem incorporar e/ou usar um ou mais dos aspectos da presente invenção são descritos abaixo.
[0118] Referindo-se à Figura 12, os componentes representativos de um sistema de Computador Host 5000 para implementar um ou mais aspectos da presente invenção são retratados. O computador host representativo 5000 compreende uma ou mais CPUs 5001 em comunicação com a memória de computador (isto é, armazenamento central) 5002, bem como interfaces E/S para dispositivos de mídia de armazenamento 5011 e redes 5010 para comunicação com outros computadores ou SANs e similares. A CPU 5001 é compatível com uma arquitetura que tem um conjunto de instruções de arquitetura e uma funcionalidade de arquitetura. A CPU 5001 pode ter tradução dinâmica de endereços (DAT) 5003 para transformar endereços de programas (endereços virtuais) em endereços reais de memória. Uma DAT tipicamente inclui uma Translation Lookaside Buffer (TLB) 5007 para armazenar em cache as traduções, de modo que os acessos posteriores ao bloco de memória de computador 5002 não requeiram o atraso da tradução de endereços. Tipicamente, uma cache 5009 é empregada entre a memória de computador 5002 e o processador 5001. A cache 5009 pode ser hierárquica tendo uma grande cache disponível para mais de uma CPU e caches menores, mais rápidas (nível inferior) entre a cache grande e cada CPU. Em algumas implementações, as caches de nível inferior são divididas para fornecer caches de nível inferior separadas para a pesquisa e carregamento de instruções e acessos a dados. Em uma concretização, uma instrução é pesquisada e carregada da memória 5002 por uma unidade de pesquisa e carregamento de instruções 5004 através de uma cache 5009. A instrução é decodificada em uma unidade de decodificação de instrução 5006 e despachada (com outras instruções em algumas concretizações) para unidade ou unidades de execução de instruções 5008. Tipicamente, várias unidades de execução 5008 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 de instruções de ramificação. A instrução é executada pela unidade de execução, acessando operandos a partir da memória ou registros de instrução especificados, conforme necessário. Se um operando tiver que ser acessado (carregado ou armazenado) da memória 5002, uma unidade de carregamento/ armazenamento 5005 tipicamente gerencia o acesso sob controle da instrução que está 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.
[0119] Como observado, um sistema de computador inclui informações em armazenamento local (ou principal), bem como endereçamento, proteção e gravação de alterações e referências. Alguns aspectos do endereçamento incluem o formato dos endereços, o conceito de espaços de endereço, os vários tipos de endereços e a maneira em que um tipo de endereço é traduzido para outro tipo de endereço. Parte do armazenamento principal inclui locais de armazenamento permanentemente atribuídos. O armazenamento principal fornece ao sistema armazenamento de dados de acesso rápido diretamente endereçável. Tanto os dados como os programas devem ser carregados no armazenamento principal (a partir de dispositivos de entrada) antes que possam ser processados.
[0120] O armazenamento principal pode incluir um ou mais armazenamentos tampão de acesso mais rápido e menores, às vezes denominados caches. Uma cache é tipicamente fisicamente associada a uma CPU ou um processador E/S. Os efeitos, exceto de desempenho, da construção física e uso de meios de armazenamento distintos geralmente não são observáveis pelo programa.
[0121] Caches separadas podem ser mantidas para instruções e para operandos de dados. As informações dentro de um cache são mantidas em bytes contíguos em um limite integral chamado de bloco de cache ou linha de cache (ou linha, para abreviação). Um modelo pode fornecer uma instrução EXTRACT CACHE ATTRIBUTE que retorna o tamanho de uma linha de cache em bytes. Um modelo também pode fornecer as instruções PREFETCH DATA e PREFETCH DATA RELATIVE LONG que afetam a pré-pesquisa e carregamento de armazenamento na cache de instruções ou dados ou a liberação de dados da cache.
[0122] O armazenamento é visto como uma longa cadeia horizontal de bits. Para a maioria das operações, os acessos ao armazenamento continuam em uma sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. Uma unidade de oito bits é chamada de byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um único número inteiro não negativo, que é o endereço da localização do byte ou, simplesmente, o endereço do byte. Os locais de bytes adjacentes têm endereços consecutivos, começando com 0 na esquerda e prosseguindo em uma sequência da esquerda para a direita. Os endereços são números inteiros binários não assinados e têm 24, 31 ou 64 bits.
[0123] A informação é transmitida entre o armazenamento e uma CPU ou um subsistema de canal um byte, ou um grupo de bytes, de cada vez. Salvo especificação em contrário, por exemplo, na z/Architecture®, um grupo de bytes no armazenamento é endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é implícito ou é explicitamente especificado pela operação a ser executada. Quando usado em uma operação de CPU, um grupo de bytes é chamado de campo. Dentro de cada grupo de bytes, por exemplo, na z/Architecture®, os bits são numerados em uma sequência da esquerda para a direita. Na z/Architecture®, os bits mais à esquerda são referidos, às vezes, como os bits de “alta ordem” e os bits mais à direita, como os bits de “ordem baixa”. Os números de bits não são endereços de armazenamento, no entanto. Apenas bytes podem ser endereçados. Para operar em bits individuais de um byte no armazenamento, o byte inteiro é acessado. Os bits em um byte são numerados de 0 a 7, da esquerda para a direita (por exemplo, na z/Architecture®). Os bits em um endereço podem ser numerados de 8-31 ou 40-63 para endereços de 24 bits, ou de 1-31 ou 33-63 para endereços de 31 bits; eles são numerados de 0 a 63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixo de vários bytes, os bits que compõem o formato são numerados consecutivamente a partir de 0. Para fins de detecção de erro e, de preferência, para correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Esses bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. As capacidades de armazenamento são expressas em número de bytes. Quando o comprimento de um campo de operando de armazenamento é implícito pelo código de operação de uma instrução, o campo é dito ter um comprimento fixo, que pode ser de um, dois, quatro, oito ou dezesseis bytes. Campos maiores podem ser implícitos para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não é implícito, mas é explicitamente definido, o campo é dito ter um comprimento variável. Operandos de comprimento variável podem variar em comprimento com incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação é colocada no armazenamento, os conteúdos apenas desses locais de bytes são substituídos, os quais são incluídos no campo designado, mesmo que a largura do percurso físico para o armazenamento possa ser maior do que o comprimento do campo que está sendo armazenado.
[0124] Certas unidades de informação devem estar em um limite integral no armazenamento. Um limite é chamado de integral para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são atribuídos aos campos de 2, 4, 8 e 16 bytes em um limite integral. Uma meia palavra é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco básico de construção de instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma palavra quádrupla é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando os endereços de armazenamento designam meias palavras, palavras, palavras duplas e palavras quádruplas, a representação binária do endereço contém um, dois, três ou quatro bits zero mais à direita, respectivamente. As instruções devem estar em limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não têm requisitos de alinhamento de limites.
[0125] Em dispositivos que implementam caches separadas para operandos de dados e instruções, um atraso significativo pode ser experimentado se o programa estiver armazenado em uma linha de cache a partir da qual as informações são subsequentemente pesquisadas e carregadas, independentemente de se o armazenamento altera as instruções que posteriormente são pesquisadas e carregadas.
[0126] Em uma concretização, a invenção pode ser praticada por software (geralmente referente a código interno licenciado, firmware, microcódigo, mili-código, pico-código e semelhantes, qualquer um dos quais deve ser consistente com uma ou mais concretizações). Em referência à Figura 12, o código de programa de software que incorpora um ou mais aspectos da presente invenção pode ser acessado pelo processador 5001 do sistema host 5000 a partir de dispositivos de meios de armazenamento de longo prazo 5011, tais como uma unidade de CD-ROM, unidade de fita ou unidade de disco rígido. O código de programa de software pode ser implementado em qualquer uma de uma variedade de mídias conhecidas para utilização com um sistema de processamento de dados, tal como um disco flexível, disco rígido ou CD- ROM. O código pode ser distribuído em tais mídias ou pode ser distribuído para usuários a partir da memória de computador 5002 ou armazenamento de um sistema de computador em uma rede 5010 para outros sistemas de computador para utilização pelos usuários desses outros sistemas.
[0127] O código de programa de software inclui um sistema operacional que controla a função e a interação dos vários componentes de computador e um ou mais programas de aplicativo. O código de programa é normalmente paginado a partir do dispositivo de meio de armazenamento 5011 para o armazenamento de computador de velocidade relativamente superior 5002, onde está disponível para processamento pelo processador 5001. As técnicas e métodos para incorporação de código de programa 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 neste documento. O código de programa, quando criado e armazenado em um meio tangível (incluindo, mas sem limitação, módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, Fita Magnética e semelhantes) é geralmente referido como um “produto de programa de computador”. O meio de produto de programa de computador é tipicamente legível por um circuito de processamento preferivelmente em um sistema de computador para execução pelo circuito de processamento.
[0128] A Figura 13 ilustra uma estação de trabalho ou sistema de hardware de servidor representativo, em que um ou mais aspectos da presente invenção podem ser praticados. O sistema 5020 da Figura 13 compreende um sistema de computador base representativo 5021, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar e permitir a comunicação entre o(s) processador(es) 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 à memória 5025 e ao armazenamento de longo prazo 5027, que pode incluir um disco rígido (incluindo qualquer um de meio magnético, CD, DVD e Memória Flash, por exemplo) ou uma unidade de fita, por exemplo. O sistema 5021 deve também incluir um adaptador de interface de usuário, que conecta o microprocessador 5026, através do barramento, a um ou mais dispositivos de interface, tais como um teclado 5024, um mouse 5023, uma impressora/scanner 5030 e/ou outros dispositivos de interface, que podem ser qualquer dispositivo de interface de usuário, tal como uma tela sensível ao toque, teclado de entrada digitalizada etc. O barramento também conecta um dispositivo de exibição 5022, tal como um monitor ou tela LCD, ao microprocessador 5026 através de um adaptador de exibição.
[0129] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar 5028 com uma rede 5029. Exemplos de adaptadores de rede são canais de comunicação, token ring, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fio, tal como um cartão de CDPD (dados de pacote digital de celular). O sistema 5021 pode ser associado com tais outros computadores em uma Rede de Área Local (LAN) ou uma Rede de longa distância (WAN), ou o sistema 5021 pode ser um cliente em um arranjo cliente/servidor com outro computador etc. Todas essas configurações, bem como hardware e software de comunicação apropriados, são conhecidos na técnica.
[0130] A Figura 14 ilustra uma rede de processamento de dados 5040, em que um ou mais aspectos da presente invenção podem ser praticados. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tais como uma rede sem fio e uma rede a cabo, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Adicionalmente, como será entendido por aqueles versados na técnica, uma ou mais LANs podem ser incluídas, em que uma LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador host.
[0131] Ainda em referência à Figura 14, as redes podem também incluir computadores ou servidores mainframe, tais como um computador de porta de conversão (servidor cliente 5046) ou servidor de aplicativo (servidor remoto 5048 que pode acessar um repositório de dados e pode também ser acessado diretamente de uma estação de trabalho 5045). Um computador de porta de conversão 5046 serve como um ponto de entrada em cada rede individual. Uma porta de conversão é necessária ao conectar um protocolo de rede a outro. A porta de conversão 5046 pode ser preferivelmente acoplada à outra rede (a Internet 5047, por exemplo) por meio de um link de comunicação. A porta de conversão 5046 pode também ser diretamente acoplada a uma ou mais estações de trabalho 5041, 5042, 5043, 5044 usando um link de comunicação. O computador de porta de conversão pode ser implementado utilizando um servidor IBM eServerTM System z® fornecido pela International Business Machines Corporation.
[0132] Em referência simultaneamente à Figura 13 e à Figura 14, o código de programação de software que pode incorporar um ou mais aspectos da presente invenção pode ser acessado pelo processador 5026 do sistema 5020 a partir do meio de armazenamento de longo prazo 5027, tal como uma unidade de CD-ROM ou disco rígido. O código de programação de software pode ser incorporado em qualquer um de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tal como um disco flexível, disco rígido ou CD-ROM. O código pode ser distribuído em tais meios ou pode ser distribuído para usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador em uma rede para outros sistemas de computador para utilização por usuários de tais outros sistemas.
[0133] Alternativamente, o código de programação pode ser incorporado na memória 5025 e acessado pelo processador 5026 usando 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 aplicativo 5032. O código de programa é normalmente paginado a partir do meio de armazenamento 5027 para a memória de alta velocidade 5025, onde está disponível para processamento pelo processador 5026. As técnicas e métodos para incorporação de código de programação de software na memória, em meio físico, e/ou distribuição de código de software através de redes são bem conhecidos e não serão mais discutidos neste documento. O código de programa, quando criado e armazenado em um meio tangível (incluindo, mas sem limitação, módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, Fita Magnética e semelhantes) é geralmente referido como um “produto de programa de computador”. O meio de produto de programa de computador é tipicamente legível por um circuito de processamento preferivelmente em um sistema de computador para execução pelo circuito de processamento.
[0134] A cache que está mais prontamente disponível para o processador (normalmente mais rápida e menor do que outras caches do processador) é a cache mais inferior (L1 ou nível um) e o armazenamento principal (memória principal) é a cache de nível mais alto (L3 se forem 3 níveis). A cache de nível mais baixo é geralmente dividida em uma cache de instrução (I-Cache) portando instruções de máquina a serem executadas e uma cache de dados (D-Cache) portando operandos de dados.
[0135] Em referência à Figura 15, uma concretização de processador exemplar é apresentada para o processador 5026. Tipicamente, um ou mais níveis de cache 5053 são empregados a blocos de memória temporária a fim de melhorar o desempenho do processador. A cache 5053 é uma memória temporária de alta velocidade portando linhas de cache de dados de memória que são prováveis de serem usados. Linhas de cache típicas têm 64, 128 ou 256 bytes de dados de memória. Caches separadas são geralmente empregadas para instruções de cache em vez de para dados de cache. A coerência de cache (sincronização de cópias de linhas na memória e caches) é geralmente provida por vários algoritmos “snoop” bem conhecidos na técnica. O armazenamento de memória principal 5025 de um sistema de processador é geralmente referido como uma cache. Em um sistema de processador tendo 4 níveis de cache 5053, o armazenamento principal 5025 é geralmente referido como a cache de nível 5 (L5) uma vez que é tipicamente mais rápida e somente porta a porção do armazenamento não volátil (DASD, fita etc.) que é disponível a um sistema de computador. O armazenamento principal 5025 armazena em “cache” páginas de dados paginadas dentro e fora do armazenamento principal 5025 pelo sistema operacional.
[0136] Um contador de programa (contador de instrução) 5061 mantém o rastreamento do endereço da instrução atual a ser executada. Um contador de programa em um processador de z/Architecture® é de 64 bits e pode ser truncado para 31 ou 24 bits para suportar limites de endereçamentos anteriores. Um contador de programa é tipicamente incorporado em uma PSW (Palavra de Status de Programa) de um computador, tal que persista durante a comutação de contexto. Dessa forma, um programa em progresso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema operacional (comutação de contexto do ambiente de programa para o ambiente de sistema operacional). A PSW do programa mantém o valor de contador de programa enquanto o programa não está ativo, e o contador de programa (na PSW) do sistema operacional é usado enquanto o sistema operacional está em execução. Tipicamente, o contador de programa é incrementado por uma quantidade igual ao número de bytes da instrução atual. Instruções RISC (Computação de Conjunto Reduzido de Instruções) são tipicamente de comprimento fixo enquanto instruções CISC (Computação de Conjunto Complexo de Instruções) são tipicamente de comprimento variável. Instruções da z/Architecture® da IBM são instruções CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado por uma operação de comutação de contexto ou uma operação de tomada de ramificação de instrução de ramificação, por exemplo. Em uma operação de comutação de contexto, o valor de contador de programa atual é salvo na palavra de status de programa junto com outras informações de estado sobre o programa sendo executado (tais como códigos de condição), e um novo valor de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação de tomada de ramificação é executada a fim de permitir que o programa tome decisões ou permitir um loop dentro do programa carregando-se o resultado da instrução de ramificação no contador de programa 5061.
[0137] Tipicamente, uma unidade de pesquisa e carregamento de instrução 5055 é empregada para pesquisar e carregar instruções em nome do processador 5026. A unidade de pesquisa e carregamento pesquisa e carrega as “próximas instruções sequenciais”, instruções alvo de instruções de tomada de ramificação, ou as primeiras instruções de um programa após uma comutação de contexto. Unidades de pesquisa e carregamento de Instrução Moderna geralmente empregam técnicas de pré-pesquisa e carregamento para especulativamente pesquisar e carregar instruções com base na probabilidade de as instruções pré-pesquisadas e carregadas serem usadas. Por exemplo, uma unidade de pesquisa e carregamento pode pesquisar e carregar 16 bytes de instrução que incluem a próxima instrução sequencial e bytes adicionais de instruções sequenciais adicionais.
[0138] As instruções pesquisadas e carregadas são, então, executadas pelo processador 5026. Em uma concretização, as instruções pesquisadas e carregadas são passadas para uma unidade de envio 5056 da unidade de pesquisa e carregamento. A unidade de envio decodifica as instruções e encaminha informações sobre as instruções decodificadas para as unidades adequadas 5057, 5058, 5060. Uma unidade de execução 5057 irá tipicamente receber informações sobre instruções aritméticas decodificadas da unidade de pesquisa e carregamento de instrução 5055 e irá executar operações aritméticas em operandos de acordo com o código de operação da instrução. Operandos são fornecidos à unidade de execução 5057 preferivelmente a partir da memória 5025, registros de arquitetura 5059 ou de um campo imediato da instrução sendo executada. Os resultados da execução, quando armazenados, são armazenados na memória 5025, nos registros 5059 ou em outros hardwares de máquina (tais como registros de controle, registros de PSW e semelhantes).
[0139] Um processador 5026 tipicamente tem uma ou mais unidades 5057, 5058, 5060 para execução da função da instrução. Em referência à Figura 16A, uma unidade de execução 5057 pode se comunicar com registros gerais de arquitetura 5059, uma unidade de decodificação/ envio 5056, uma unidade de armazenamento de carga 5060, e outras unidades de processador 5065 por meio de lógica de interface 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registro 5067, 5068, 5069 para manter informações que a unidade lógica aritmética (ALU) 5066 irá operar. A ALU executa operações aritméticas, tais como adição, subtração, multiplicação e divisão, bem como função lógica, tal como AND, OR e Exclusive-OR (XOR), girar e trocar. Preferivelmente, a ALU suporta operações especializadas que são dependentes de projeto. Outros circuitos podem fornecer outras facilidades de arquitetura 5072 incluindo códigos de condição e lógica de suporte de recuperação, por exemplo. Tipicamente, o resultado de uma operação de ALU é mantido em um circuito de registro de saída 5070 que pode encaminhar o resultado a uma variedade de outras funções de processamento. Existem vários arranjos de unidades de processador, a presente descrição é somente destinada a fornecer um entendimento representativo de uma concretização.
[0140] Uma instrução ADD, por exemplo, seria executada em uma unidade de execução 5057 tendo funcionalidade lógica e aritmética enquanto uma instrução de ponto flutuante, por exemplo, seria executada em uma execução de ponto flutuante tendo capacidade de ponto flutuante especializada. Preferivelmente, uma unidade de execução opera em operandos identificados por uma instrução executando uma função definida por código de operação nos operandos. Por exemplo, uma instrução ADD pode ser executada por uma unidade de execução 5057 em operandos encontrados em dois registros 5059 identificados por campos de registro da instrução.
[0141] A unidade de execução 5057 executa a adição aritmética em dois operandos e armazena o resultado em um terceiro operando, em que o terceiro operando pode ser um terceiro registro ou um dos dois registros fonte. A unidade de execução preferivelmente utiliza uma Unidade Lógica Aritmética (ALU) 5066 que é capaz de executar uma variedade de funções lógicas, tais como Alterar, Girar, AND, OR e XOR, bem como uma variedade de funções algébricas, incluindo qualquer uma de adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são concebidas para operações escalares e algumas para ponto flutuante. Os dados podem ser Big Endian (em que o byte menos significativo está no endereço de byte mais alto) ou Little Endian (em que o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. A z/Architecture® da IBM é Big Endian. Campos assinados podem ser sinal e dimensão, complemento de 1 ou complemento de 2 dependendo da arquitetura. Um número complemento de 2 é vantajoso em que a ALU não precisa projetar uma capacidade subtração, uma vez que tanto um valor negativo ou um valor positivo no complemento de 2 requer somente uma adição dentro da ALU. Os números são comumente descritos de forma abreviada, em que um campo de 12 bits define um endereço de um bloco de 4.096 bytes e é comumente descrito como um bloco de 4 Kbytes (Kilo-byte), por exemplo.
[0142] Em referência à Figura 16B, informações de instrução de ramificação para execução de uma instrução de ramificação são tipicamente enviadas para uma unidade de ramificação 5058 que geralmente emprega um algoritmo de previsão de ramificação, tal como uma tabela de histórico de ramificação 5082 para prever o resultado da ramificação antes de outras operações condicionais serem concluídas. O alvo da instrução de ramificação atual será pesquisado e carregado e especulativamente executado antes de as operações condicionais serem concluídas. Quando as operações condicionais são concluídas, as instruções de ramificação especulativamente executadas são concluídas ou descartadas com base nas condições da operação condicional e no resultado especulado. Uma instrução de ramificação típica pode testar códigos de condição e ramificar para um endereço alvo se os códigos de condição atenderem ao requerimento de ramificação da instrução de ramificação, um endereço alvo pode ser calculado com base em vários números incluindo aqueles encontrados nos campos de registro ou um campo imediato da instrução, por exemplo. A unidade de ramificação 5058 pode empregar uma ALU 5074 tendo uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de ramificação 5058 pode se comunicar com registros gerais 5059, decodificar a unidade de envio 5056 ou outros circuitos 5073, por exemplo.
[0143] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões incluindo uma comutação de contexto iniciada por um sistema operacional, uma exceção ou erro de programa causando uma comutação de contexto, um sinal de interrupção E/S causando uma comutação de contexto ou atividade multissegmentada de uma pluralidade de programas (em um ambiente multissegmentado), por exemplo. Preferivelmente, uma ação de comutação de contexto salva informações de estado sobre um programa atualmente em execução e, então, carrega informações de estado sobre outro programa sendo invocado. Informações de estado podem ser salvas em registros de hardware ou na memória, por exemplo. Informações de estado preferivelmente compreendem um valor de contador de programa apontando para uma instrução seguinte a ser executada, códigos de condição, informações de tradução de memória e conteúdo de registro de arquitetura. Uma atividade de comutação de contexto pode ser exercida por circuitos de hardware, programas de aplicativo, programas de sistema operacional ou código de firmware (microcódigo, pico-código ou código interno licenciado (LIC)) sozinho ou em combinação.
[0144] Um processador acessa operandos de acordo com métodos de instrução definidos. 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 registro explicitamente apontando para registros de uso geral ou registros de aplicação específica (registros de ponto flutuante, por exemplo). A instrução pode utilizar registros implicados identificados por um campo de código de operação como operandos. A instrução pode utilizar locais de memória para operandos. Um local de memória de um operando pode ser fornecido por um registro, um campo imediato ou uma combinação de registros e campo imediato como exemplificado pela facilidade de deslocamento longo da z/Architecture®, em que a instrução define um registro base, um registro de índice e um campo imediato (campo de deslocamento) que são adicionados juntos para fornecer o endereço do operando na memória, por exemplo. O local neste documento tipicamente implica um local na memória principal (armazenamento principal) salvo indicação em contrário.
[0145] Em referência à Figura 16C, um processador acessa o armazenamento usando uma unidade de carregamento/ armazenamento 5060. A unidade de carregamento/ armazenamento 5060 pode executar uma operação de carga pela obtenção do endereço do operando alvo na memória 5053 e pelo carregamento do operando em um registro 5059 ou outro local de memória 5053, ou pode executar uma operação de armazenamento obtendo o endereço do operando alvo na memória 5053 e armazenando os dados obtidos de um registro 5059 ou outro local de memória 5053 no local de operando alvo na memória 5053. A unidade de carregamento/ armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que esteja fora da ordem em relação à sequência de instrução, no entanto, a unidade de carregamento/ armazenamento 5060 deve manter a aparência para programas cujas instruções foram executadas na ordem. Uma unidade de carregamento/ armazenamento 5060 pode se comunicar com registros gerais 5059, unidade de decodificação/ envio 5056, interface de memória/cache 5053 ou outros elementos 5083 e compreende vários circuitos de registro, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e para fornecer sequenciamento para manter as operações na ordem. Algumas operações podem estar fora da ordem, mas a unidade de carregamento/ armazenamento provê funcionalidade para fazer as operações fora da ordem aparecerem para o programa como tendo sido executadas na ordem, como é bem conhecido na técnica.
[0146] Preferivelmente, endereços que um programa de aplicativo “visualiza” são geralmente referidos como endereços virtuais. Endereços virtuais são geralmente referidos como “endereços lógicos” e “endereços efetivos”. Esses endereços virtuais são virtuais porque eles são redirecionados para o local de memória física por uma de uma variedade de tecnologias de tradução dinâmica de endereço (DAT) incluindo, mas sem limitação, simplesmente prefixação de um endereço virtual com um valor de compensação, tradução do endereço virtual através de uma ou mais tabelas de tradução, as tabelas de tradução preferivelmente compreendendo pelo menos uma tabela de segmento e uma tabela de página sozinha ou em combinação, preferivelmente, a tabela de segmento tendo uma entrada apontando para a tabela de página. Na z/Architecture®, uma hierarquia de tradução é fornecida incluindo uma primeira tabela de região, uma segunda tabela de região, uma terceira tabela de região, uma tabela de segmento e uma tabela de página opcional. O desempenho da tradução de endereço é geralmente melhorado utilizando uma memória tampão à parte de tradução (TLB) que compreende mapeamento de entradas de um endereço virtual para uma memória local física associada. As entradas são criadas quando a DAT traduz um endereço virtual usando 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 acessos de tabela de tradução sequencial lentos. O conteúdo de TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Menos Utilizados Recentemente).
[0147] No caso em que o processador é um processador de um sistema de multiprocessador, cada processador tem a responsabilidade de manter recursos compartilhados, tais como E/S, caches, TLBs e memória, bloqueados por coerência. Tipicamente, tecnologias “snoop” serão utilizadas na manutenção da coerência da cache. Em um ambiente snoop, cada linha de cache pode ser marcada como estando em qualquer um de um estado compartilhado, um estado exclusivo, um estado alterado, um estado inválido e semelhantes a fim de facilitar o compartilhamento.
[0148] Unidades de E/S 5054 (Figura 15) proveem o processador com meios de conexão a dispositivos periféricos incluindo fita, disco, impressoras, telas e redes, por exemplo. Unidades de E/S são geralmente apresentadas ao programa de computador por unidades de software. Em mainframes, tais como o System z® da IBM®, adaptadores de canal e adaptadores de sistemas abertos são unidades de E/S do mainframe que proveem a comunicação entre o sistema operacional e dispositivos periféricos.
[0149] Além disso, outros tipos de ambientes de computação podem se beneficiar de um ou mais aspectos da presente invenção. Como um exemplo, como mencionado neste documento, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma arquitetura particular (incluindo, por exemplo, execução de instrução, funções de arquitetura, tais como tradução de endereço e registros de arquitetura) ou um subconjunto da mesma é emulado (por exemplo, em um sistema de computador nativo tendo um processador e memória). Em tal ambiente, uma ou mais funções de emulação do emulador podem implementar um ou mais aspectos da presente invenção, ainda que um computador executando o emulador possa ter uma arquitetura diferente do que as capacidades sendo emuladas. Como exemplo, no modo de emulação, a instrução específica ou operação sendo emulada é decodificada, e uma função de emulação apropriada é construída para implementar a instrução ou operação individual.
[0150] Em um ambiente de emulação, um computador host inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de pesquisa e carregamento de instrução para pesquisar e carregar instruções da memória e para, opcionalmente, fornecer memória temporária local para a instrução pesquisada e carregada; uma unidade de decodificação de instrução para receber as instruções pesquisadas e carregadas e para determinar o tipo de instruções que foram pesquisadas e carregadas; e uma unidade de execução de instrução para executar as instruções. A execução pode incluir o carregamento de dados em um registro da memória; armazenamento de dados de volta para a memória a partir de um registro; ou execução de algum tipo de operação lógica ou aritmética, como determinado pela unidade de decodificação. Em um exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas dentro de software emulador.
[0151] Mais particularmente, em um mainframe, instruções de máquina de arquitetura são usadas por programadores, geralmente programadores “C” atuais, geralmente por meio de um aplicativo compilador. Essas instruções armazenadas no meio de armazenamento podem ser executadas de forma nativa em um Servidor de z/Architecture® IBM®, ou alternativamente em máquinas executando outras arquiteturas. Elas podem ser emuladas nos servidores mainframe IBM® existentes e futuros e em outras máquinas da IBM® (por exemplo, servidores Power System e servidores System x®). Elas podem ser executadas em máquinas rodando Linux em uma ampla variedade de máquinas usando hardware fabricado por IBM®, Intel®, AMDTM e outros. Além da execução naquele hardware sob a Z/Architecture®, Linux pode ser usado e também máquinas que utilizam emulação por Hercules, UMX ou FSI (Fundamental Software, Inc), em que geralmente a execução está em um modo de emulação. No modo de emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0152] O processador nativo tipicamente executa software de emulação compreendendo firmware ou um sistema operacional nativo para executar emulação do processador emulado. O software de emulação é responsável por pesquisa e carregamento e execução de instruções da arquitetura de processador emulada. O software de emulação mantém um contador de programa emulado para manter o rastreamento de fronteiras de instrução. O software de emulação pode pesquisar e carregar uma ou mais instruções de máquina emuladas de uma vez e converter a uma ou mais instruções de máquina emuladas em um grupo de instruções de máquina nativas correspondentes para execução pelo processador nativo. Essas instruções convertidas podem ser armazenadas em cache, tal que uma conversão mais rápida possa ser realizada. Não obstante, o software de emulação deve manter as regras de arquitetura da arquitetura de processador emulado, de modo a garantir que os sistemas operacionais e aplicativos gravados no processador emulado operem corretamente. Além disso, o software de emulação deve prover recursos identificados pela arquitetura de processador emulado incluindo, mas não limitados a, registros de controle, registros de uso geral, registros de ponto flutuante, função de tradução dinâmica de endereço incluindo tabelas de segmento e tabelas de página, por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto, relógios de Hora do Dia (TOD) e interfaces de arquitetura para subsistemas de E/S, tal que um sistema operacional ou um programa de aplicativo concebido para rodar no processador emulado possa ser rodado no processador nativo tendo o software de emulação.
[0153] Uma instrução específica sendo emulada é decodificada, e uma sub-rotina é chamada para executar a função da instrução individual. Uma função de software de emulação emulando uma função de um processador emulado é implementada, por exemplo, em uma unidade ou sub-rotina “C”, ou algum outro método de provisão de uma unidade para o hardware específico conforme estará dentro da habilidade daqueles versados na técnica após compreensão da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, mas não limitadas a, Carta- Patente dos Estados Unidos N°. 5.551.013, intitulada “Multiprocessador for Hardware Emulation”, de Beausoleil et al.; e Carta-Patente dos Estados Unidos N°. 6.009.261, intitulada “Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor”, de Scalzi et al; e Carta-Patente dos Estados Unidos N°. 5.574.873, intitulada “Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions”, de Davidian et al; e Carta-Patente dos Estados Unidos N°. 6.308.255, intitulada “Symmetrical Multiprocessing Bus and Chipset Used for Coprocessador Support Allowing Non-Native Code to Run in a System”, de Gorishek et al; e Carta-Patente dos Estados Unidos N°. 6.463.582, intitulada “Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method”, de Lethin et al; e Carta- Patente dos Estados Unidos N°. 5.790.825, intitulada “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”, de Eric Traut, e muitas outras, ilustram uma variedade de formas conhecidas de conseguir a emulação de um formato de instrução com arquitetura para uma máquina diferente para uma máquina alvo disponível para aqueles versados na técnica.
[0154] Na Figura 17, um exemplo de um sistema de computador host emulado 5092 é fornecido, o qual emula um sistema de computador host 5000' de uma arquitetura host. No sistema de computador host emulado 5092, o processador host (CPU) 5091 é um processador host emulado (ou processador host virtual) e compreende um processador de emulação 5093 tendo uma arquitetura de conjunto de instruções nativas diferente do processador 5091 do computador host 5000'. O sistema de computador host emulado 5092 tem memória 5094 acessível ao processador de emulação 5093. No exemplo de concretização preferida da presente invenção, a memória 5094 é dividida em uma porção de memória de computador host 5096 e uma porção de rotinas de emulação 5097. A memória de computador host 5096 é disponível a programas do computador host emulado 5092 de acordo com a arquitetura de computador host. O processador de emulação 5093 executa instruções nativas de um conjunto de instruções de arquitetura de uma arquitetura diferente daquela do processador emulado 5091, as instruções nativas obtidas de memória de rotinas de emulação 5097, e pode acessar uma instrução host para execução de um programa na memória de computador host 5096 empregando uma ou mais instrução(ões) obtida(s) em uma rotina de sequência & acesso/decodificação que pode decodificar a instrução(ões) host(s) acessada para determinar uma rotina de execução de instrução nativa para emulação da função da instrução host acessada. Outras facilidades que são definidas para a arquitetura do sistema de computador host 5000' podem ser emuladas por rotinas de facilidades de arquitetura, incluindo tais facilidades como registros de uso geral, registros de controle, tradução dinâmica de endereço e suporte de subsistema de E/S e cache de processador, por exemplo. As rotinas de emulação podem também obter vantagens de funções disponíveis no processador de emulação 5093 (tais como registros gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Mecanismos especiais de descarregamento e hardware podem também ser fornecidos para auxiliar o processador 5093 na emulação da função do computador host 5000'.
[0155] A terminologia aqui utilizada tem a finalidade apenas de descrever concretizações particulares e não se destina a limitar a invenção. Tal como aqui utilizado, as formas singulares “um”, “uma”, “o” e “a” se destinam a incluir também as formas plurais, a menos que o contexto indique claramente o contrário. Será ainda entendido que os termos “compreende” e/ou “compreendendo”, quando usados nesta invenção, especificam a presença de características, números inteiros, etapas, operações, elementos e/ou componentes declarados, mas não impedem a presença ou adição de uma ou mais características, números inteiros, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0156] As estruturas, materiais, ações e equivalentes correspondentes de todos os meios ou etapas mais os elementos de função nas reivindicações abaixo, se houver, são destinados a incluir qualquer estrutura, material ou ação para executar a função em combinação com outros elementos reivindicados como especificamente reivindicados. A descrição de um ou mais aspectos 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 divulgada. Muitas modificações e variações serão evidentes para os versados na técnica sem se afastar do escopo da invenção. A concretização foi escolhida e descrita de modo a melhor explicar os princípios da invenção e a aplicação prática, e permitir que outros versados na técnica compreendam a invenção para várias concretizações com várias modificações que são adequadas para o uso particular contemplado.

Claims (14)

1. Sistema de computador (200) para facilitar o processamento em um ambiente de computação, o referido sistema de computador caracterizado pelo fato de que compreende: uma memória; e um processador em comunicação com a memória, em que o sistema de computador está configurado para executar um método, o referido método compreendendo: obter por um programa uma indicação de uma instalação de facilidade de faixa de alerta instalada (700) dentro do ambiente de computação, a facilidade de faixa de aviso fornecendo ao programa um período de carência de faixa de aviso para executar uma função; iniciar, pelo programa baseado em obter a indicação que a facilidade de faixa de aviso é instalada, registro do programa para a facilidade de faixa de aviso (702), o registro compreendendo uma solicitação não solicitada indicando que o programa entende um protocolo de facilidade de faixa de aviso e tem intenção de participar na facilidade de faixa de aviso; receber pelo programa de uma notificação de faixa de aviso indicando que o período de carência de faixa de aviso já começou, o registro do programa para facilidade de faixa de aviso sendo um pré-requisito para receber notificação de faixa de aviso, em que se o programa não é registrado, então nenhum período de graça é oferecido; e com base na notificação de faixa de aviso, pelo menos, iniciar, pelo programa, a função dentro do período de carência de faixa de aviso.
2. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda registrar pelo programa a facilidade de faixa de aviso.
3. Sistema de computador, de acordo com a reivindicação 2, caracterizado pelo fato de que com base no registro do programa é habilitado para a instalação de faixa de aviso.
4. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a função compreende um dos seguintes: completar uma unidade despachável executada num processador, em que o programa é executado; ou tornar a unidade despachável redespachável em outro processador do ambiente de computação.
5. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o programa é um programa convidado tendo acesso a recursos compartilhados do ambiente de computação durante uma fatia de tempo fornecida para uma unidade central de processamento convidada na qual o programa convidado executa, e em que o período de carência de faixa de aviso é distinguível da fatia de tempo.
6. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que o período de carência de faixa de aviso prematuramente termina a fatia de tempo.
7. Sistema de computador, de acordo com a reivindicação 5, caracterizado pelo fato de que o período de graça de faixa de aviso fornece um período além da fatia de tempo para executar a função.
8. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o período de graça é em adição à fatia de tempo fornecida ao programa, e em que se a fatia de tempo expirou completamente, o período de graça é cobrado contra uma próxima fatia de tempo para o programa, e se a fatia de tempo não expirou, o período de graça é tomado a partir do tempo normal remanescente na fatia de tempo.
9. Método para facilitar o processamento num ambiente de computação (200), o referido método caracterizado pelo fato de que compreende: obter por um programa uma indicação de uma instalação de facilidade de faixa de alerta instalada (700) dentro do ambiente de computação, a facilidade de faixa de aviso para fornecer ao programa um período carência de faixa de aviso para executar uma função; iniciar, pelo programa baseado em obter a indicação que a facilidade de faixa de aviso é instalada, registro do programa para a facilidade de faixa de aviso (702), o registro compreendendo uma solicitação não solicitada indicando que o programa entende um protocolo de facilidade de faixa de aviso e tem intenção de participar na facilidade de faixa de aviso; receber pelo programa uma notificação de faixa de aviso indicando que o período de carência de faixa de aviso já começou, o registro do programa para facilidade de faixa de aviso sendo um pré-requisito para receber a notificação de faixa de alerta, em que se o programa não é registrado, então nenhum período de graça é oferecido; e com base na notificação de faixa de aviso, pelo menos, iniciar, pelo programa, a função dentro do período de carência de faixa de aviso.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a função compreende um dos seguintes: completar uma unidade despachável executada num processador, em que o programa é executado; ou tornar a unidade despachável redespachável em outro processador do ambiente de computação.
11. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o programa é um programa convidado tendo acesso a recursos compartilhados do ambiente de computação durante uma fatia de tempo fornecida para uma unidade central de processamento host em que o programa convidado executa, e em que o período de carência de faixa de aviso é distinguível a partir da fatia de tempo.
12. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o registro é realizado via uma instrução Diagnóstica, a instrução Diagnóstica compreendendo um parâmetro para sinalizar que o segundo programa entende uma interrupção de faixa de aviso da facilidade de faixa de aviso.
13. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o período de graça é distinguível a partir da fatia de tempo fornecida para um processador no qual o programa executa, o programa tendo acesso para compartilhar recursos do ambiente de computação durante a fatia de tempo, e em que o período de graça fornece um período em adição à fatia de tempo, em que qualquer porção do período usado pelo programa para realizar a função é cobrado contra uma próxima fatia de tempo para o segundo programa.
14. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que o método compreende adicionalmente: obter pelo programa, uma próxima vez que o programa executa, com base em determinar o programa voluntariamente saiu antes da expiração do período de graça, feedback positivo indicando voluntariamente sair antes da expiração do período de graça; e obter pelo programa, uma próxima vez que o programa executa, com base em determinar o programa foi tardio em sair voluntariamente antes da expiração do período de graça, uma indicação de feedback de exceção indicando tardiamente em sair voluntariamente.
BR112014017828-3A 2012-01-18 2012-11-13 Uso de uma facilidade de interrupção de faixa de aviso por um programa BR112014017828B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/352,514 2012-01-18
US13/352,514 US9110878B2 (en) 2012-01-18 2012-01-18 Use of a warning track interruption facility by a program
PCT/IB2012/056370 WO2013108090A1 (en) 2012-01-18 2012-11-13 Use of a warning track interruption facility by a program

Publications (3)

Publication Number Publication Date
BR112014017828A2 BR112014017828A2 (pt) 2017-06-20
BR112014017828A8 BR112014017828A8 (pt) 2017-07-11
BR112014017828B1 true BR112014017828B1 (pt) 2021-08-17

Family

ID=48780919

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014017828-3A BR112014017828B1 (pt) 2012-01-18 2012-11-13 Uso de uma facilidade de interrupção de faixa de aviso por um programa

Country Status (24)

Country Link
US (2) US9110878B2 (pt)
EP (1) EP2805236B1 (pt)
JP (1) JP6249961B2 (pt)
KR (1) KR101625317B1 (pt)
CN (1) CN104054054B (pt)
AU (1) AU2012366768B2 (pt)
BR (1) BR112014017828B1 (pt)
CA (1) CA2862265C (pt)
DK (1) DK2805236T3 (pt)
ES (1) ES2598816T3 (pt)
HK (1) HK1201348A1 (pt)
HR (1) HRP20161265T1 (pt)
HU (1) HUE029040T2 (pt)
IL (1) IL231839B (pt)
IN (1) IN2014CN04836A (pt)
MX (1) MX363387B (pt)
PL (1) PL2805236T3 (pt)
PT (1) PT2805236T (pt)
RU (1) RU2565495C2 (pt)
SG (1) SG11201402085QA (pt)
SI (1) SI2805236T1 (pt)
TW (1) TWI540510B (pt)
WO (1) WO2013108090A1 (pt)
ZA (1) ZA201400733B (pt)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
US9389897B1 (en) 2014-12-18 2016-07-12 International Business Machines Corporation Exiting multiple threads of a simulation environment in a computer
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001783A (en) 1975-03-26 1977-01-04 Honeywell Information Systems, Inc. Priority interrupt mechanism
US4271468A (en) * 1979-11-06 1981-06-02 International Business Machines Corp. Multiprocessor mechanism for handling channel interrupts
JP2523653B2 (ja) 1987-07-08 1996-08-14 株式会社日立製作所 仮想計算機システム
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5414812A (en) 1992-03-27 1995-05-09 International Business Machines Corporation System for using object-oriented hierarchical representation to implement a configuration database for a layered computer network communications subsystem
US5485626A (en) * 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
WO1994027215A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
CA2124772C (en) 1994-05-31 2000-02-08 Russell Francis Byers Processor shelf controller
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5548535A (en) 1994-11-08 1996-08-20 Advanced Micro Devices, Inc. Monitor utility for use in manufacturing environment
JPH09106358A (ja) * 1995-10-12 1997-04-22 Hitachi Ltd 仮想計算機システムのスケジューリング方法および装置
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
FR2760109B1 (fr) 1997-02-25 1999-05-28 Sextant Avionique Procede et dispositif pour l'execution par un processeur unique de plusieurs fonctions de niveaux de criticite differents, avec une grande securite de fonctionnement
CN1113289C (zh) * 1997-03-04 2003-07-02 松下电器产业株式会社 能执行多异步运行任务中的异步事件任务的处理器
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
JP4151198B2 (ja) * 1999-06-23 2008-09-17 株式会社デンソー 割込コントローラ及びマイクロコンピュータ
US7469405B2 (en) 2000-04-25 2008-12-23 Kforce Inc. System and method for scheduling execution of cross-platform computer processes
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
JP3952992B2 (ja) * 2003-06-03 2007-08-01 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7475002B1 (en) 2004-02-18 2009-01-06 Vmware, Inc. Method and apparatus for emulating multiple virtual timers in a virtual computer system when the virtual timers fall behind the real time of a physical computer system
US7162666B2 (en) 2004-03-26 2007-01-09 Emc Corporation Multi-processor system having a watchdog for interrupting the multiple processors and deferring preemption until release of spinlocks
US8024544B2 (en) * 2004-05-13 2011-09-20 International Business Machines Corporation Free resource error/event log for autonomic data processing system
US7689998B1 (en) 2004-07-13 2010-03-30 Microsoft Corporation Systems and methods that manage processing resources
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US7725531B1 (en) 2006-09-18 2010-05-25 George Mason Intellectual Properties, Inc. Single use server system
EP2006770B1 (en) 2007-06-19 2014-01-01 VirtualLogix SA Load balancing
US8261284B2 (en) 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
JP4620097B2 (ja) * 2007-09-19 2011-01-26 株式会社東芝 仮想計算機システム及び同システムにおけるスケジュール調整方法
US9201673B2 (en) 2008-07-30 2015-12-01 Microsoft Technology Licensing, Llc Efficient detection and response to spin waits in multi-processor virtual machines
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US9424211B2 (en) * 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
JP4862056B2 (ja) 2009-03-16 2012-01-25 株式会社東芝 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法
JP5428581B2 (ja) 2009-06-30 2014-02-26 富士通株式会社 仮想マシン管理プログラム及び仮想マシン管理方法
JP2011060055A (ja) 2009-09-11 2011-03-24 Fujitsu Ltd 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム
JP5487951B2 (ja) 2009-12-22 2014-05-14 富士通株式会社 運用管理プログラム、運用管理装置および運用管理方法
JP5308383B2 (ja) * 2010-03-18 2013-10-09 パナソニック株式会社 仮想マルチプロセッサシステム
CN102467373A (zh) 2010-10-28 2012-05-23 微软公司 任务取消宽限期
US8490089B2 (en) 2010-11-05 2013-07-16 Advanced Micro Devices, Inc. Guest timer facility to improve management in a virtualized processing system
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program

Also Published As

Publication number Publication date
PT2805236T (pt) 2016-10-25
DK2805236T3 (en) 2016-11-07
WO2013108090A1 (en) 2013-07-25
KR101625317B1 (ko) 2016-06-07
TWI540510B (zh) 2016-07-01
US9110878B2 (en) 2015-08-18
US20130185738A1 (en) 2013-07-18
ES2598816T3 (es) 2017-01-30
CN104054054A (zh) 2014-09-17
EP2805236A1 (en) 2014-11-26
HK1201348A1 (en) 2015-08-28
SI2805236T1 (sl) 2017-01-31
IL231839A0 (en) 2014-05-28
IL231839B (en) 2019-01-31
CN104054054B (zh) 2018-01-30
KR20140113668A (ko) 2014-09-24
RU2012148404A (ru) 2014-05-20
JP2015510630A (ja) 2015-04-09
AU2012366768A1 (en) 2014-07-17
HRP20161265T1 (hr) 2016-12-02
PL2805236T3 (pl) 2017-08-31
CA2862265C (en) 2021-01-12
MX363387B (es) 2019-03-20
SG11201402085QA (en) 2014-06-27
JP6249961B2 (ja) 2017-12-20
EP2805236B1 (en) 2016-09-14
HUE029040T2 (en) 2017-01-30
MX2014008461A (es) 2014-08-27
TW201351288A (zh) 2013-12-16
ZA201400733B (en) 2015-10-28
US9098358B2 (en) 2015-08-04
CA2862265A1 (en) 2013-07-25
EP2805236A4 (en) 2014-12-24
IN2014CN04836A (pt) 2015-09-18
BR112014017828A8 (pt) 2017-07-11
AU2012366768B2 (en) 2016-05-12
RU2565495C2 (ru) 2015-10-20
US20130185736A1 (en) 2013-07-18
BR112014017828A2 (pt) 2017-06-20

Similar Documents

Publication Publication Date Title
US9262236B2 (en) Warning track interruption facility
BR112014017828B1 (pt) Uso de uma facilidade de interrupção de faixa de aviso por um programa
US9104509B2 (en) Providing by one program to another program access to a warning track facility
AU2012366769B2 (en) Warning track interruption facility

Legal Events

Date Code Title Description
B11A Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing
B04C Request for examination: application reinstated [chapter 4.3 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
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 13/11/2012, OBSERVADAS AS CONDICOES LEGAIS.