BR112014017827B1 - Facilidade de interrupção de faixa de aviso - Google Patents

Facilidade de interrupção de faixa de aviso Download PDF

Info

Publication number
BR112014017827B1
BR112014017827B1 BR112014017827-5A BR112014017827A BR112014017827B1 BR 112014017827 B1 BR112014017827 B1 BR 112014017827B1 BR 112014017827 A BR112014017827 A BR 112014017827A BR 112014017827 B1 BR112014017827 B1 BR 112014017827B1
Authority
BR
Brazil
Prior art keywords
guest
operating system
host
guest operating
grace period
Prior art date
Application number
BR112014017827-5A
Other languages
English (en)
Other versions
BR112014017827A2 (pt
BR112014017827A8 (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 BR112014017827A2 publication Critical patent/BR112014017827A2/pt
Publication of BR112014017827A8 publication Critical patent/BR112014017827A8/pt
Publication of BR112014017827B1 publication Critical patent/BR112014017827B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

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)

Abstract

facilidade de interrupção de faixa de aviso. um programa (por exemplo, um sistema operacional) é provido um alerta que ele possui um período de graça para realizar uma função, tal como limpeza (por exemplo, completa, parar e/ ou mover uma unidade despachável). o programa está sendo alertado, em um exemplo, que está perdendo acesso para os seus recursos compartilhados. por exemplo, em um ambiente virtual, um programa do convidado é alertado que está prestes a perder os seus recursos de unidade de processamento central e, portanto, é para realizar uma função, tal como limpeza.

Description

FUNDAMENTOS
[0001] Um aspecto desta invenção se refere, em geral, ao processamento dentro de um ambiente de computação, e em particular, para facilitar o processamento associado com recursos compartilhados.
[0002] Um tipo de ambiente em que recursos são compartilhados é um ambiente virtual, que inclui uma unidade de processamento central de hospedeiro (CPU) e uma ou mais unidades de processamento central de convidado. Uma CPU convidado (também conhecida como uma CPU virtual) é provisionada por um programa do hospedeiro (por exemplo, sistema operacional do hospedeiro) sendo executado em uma CPU hospedeiro. O programa do hospedeiro realiza ações para alocar recursos a partir de uma configuração de hospedeiro subjacente e para designar estes recursos para a CPU convidado.
[0003] Em uma concretização particular, uma CPU convidado existe quando uma CPU hospedeiro entra o modo de execução interpretativa. Neste ponto, o sistema operacional do convidado (também referido aqui como o programa do convidado) começa a execução na CPU virtualizada, enquanto o programa do hospedeiro suspende a execução na CPU hospedeiro. O programa do hospedeiro resume a execução na CPU quando o modo de execução interpretativa termina. Técnicas de ligação existem entre o hospedeiro e o convidado em que estado do hospedeiro e do convidado é salvo e restaurado. Tipicamente, quando um programa do hospedeiro inicia um programa do convidado, o programa do hospedeiro suspende até o programa do convidado retornar. Tanto a CPU convidado quanto a CPU hospedeiro são diferentes modos da mesma CPU hospedeiro.
[0004] A configuração de hospedeiro comumente inclui todos os recursos do sistema de computador. Estes recursos incluem, mas não estão limitados a, unidades de processamento central (CPUs), memória principal, e dispositivos de entrada/saída (I/O). Em tal sistema, múltiplas CPUs convidado podem ser suportadas a partir de uma única CPU hospedeiro. Isto é alcançado designando cada CPU convidado um período de tempo para usar a CPU hospedeiro, chamado de uma fatia de tempo, e então movendo a CPU hospedeiro para outra CPU convidado para uma fatia de tempo, e assim por diante. O número de CPUs convidado suportável por uma CPU hospedeiro varia de acordo com as capacidades da CPU hospedeiro e a capacidade desejada a ser designada para cada CPU convidado.
[0005] Uma configuração de convidado tipicamente é formada a partir de duas ou mais CPUs convidados, e é referida como uma configuração de multiprocessamento (MP) de convidado. Cada CPU convidado pode ser provisionada por um compartilhamento de uma CPU hospedeiro separada ou até compartilhando uma única CPU hospedeiro. Um atributo de tal compartilhamento é que uma CPU convidado pode operar por um período de tempo, referido como uma fatia de tempo, e então é inativa por algum período de tempo arbitrário. O período inativo varia com base nas políticas de prioridade estabelecidas pelo sistema, o número global de CPUs convidado que são para compartilhar CPUs hospedeiro, e a técnica de compartilhamento sendo usada em particular.
[0006] Em tal sistema de multiprocessamento de convidado, um programa, algumas vezes chamado de uma unidade despachável (DU), pode ser despachado pelo sistema operacional do convidado em uma CPU convidado, e então durante a execução daquela unidade despachável, a fatia de tempo do hospedeiro daquela unidade despachável expira. Isto pode deixar a unidade despachável em tal condição que não pode ser continuada em qualquer outra CPU convidado da configuração de multiprocessamento de convidado, independentemente da disponibilidade de quaisquer outras CPUs convidado. Em vez disso, pode esperar pela uma e apenas uma CPU convidado para receber a sua próxima fatia de tempo de maneira a continuar. Com base na técnica de compartilhamento e na prioridade relativa da configuração de convidado, a próxima fatia de tempo pode ser atrasada para um período de tempo substancial. Mesmo se a configuração de convidado possuir outras CPUs convidado que são capazes de rodar a unidade despachável, continuação da unidade despachável não é possível devido ao estado da CPU convidado da unidade despachável que foi economizada quando a fatia de tempo anterior expirou. Até tal preciso estado pode ser usado para continuar a CPU convidado, a unidade despachável está inativa.
BREVE SUMÁRIO
[0007] Desvantagens do estado da técnica são superadas e vantagens são providas através do fornecimento de um produto de programa de computador para facilitar o 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 a execução pelo circuito de processamento para realizar um método. O método inclui, por exemplo, o fornecimento por um primeiro programa para um segundo programa uma indicação de instalação de facilidade de faixa de aviso dentro do ambiente de computação, a facilidade de faixa de alerta para prover para o segundo programa um período de graça para realizar uma primeira função; provendo pelo primeiro programa para o segundo programa uma notificação de faixa de alerta; com base na notificação de faixa de alerta, iniciando pelo segundo programa a primeira função dentro do período de graça; e realizando pelo primeiro programa uma segunda função subsequente ao período de graça.
[0008] Métodos e sistemas que se referem a um ou mais aspectos da presente invenção também são descritos e reivindicados aqui. Adicionalmente, serviços que se referem a um ou mais aspectos da presente invenção também são descritos e podem ser reivindicados aqui.
[0009] Funcionalidades adicionais e vantagens são realizadas através de técnicas da presente invenção. Outras concretizações e aspectos da invenção são descritos em detalhe aqui e são considerados uma parte da invenção reivindicada.
BREVE DESCRIÇÃO DAS VÁRIAS VISTAS DOS DESENHOS
[00010] 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 dito anteriormente e os objetivos, as funcionalidades, e as vantagens da invenção são aparentes a partir da seguinte descrição detalhada tomada em conjunto com os desenhos anexos em que: A FIG. 1 representa uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 2 representa outra concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 3 representa mais uma concretização de um ambiente de computação para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 4 representa uma concretização da lógica associada com observação de convidado da facilidade de interrupção de faixa de alerta, de acordo com um aspecto da presente invenção; A FIG. 5 representa uma concretização da lógica associada com observação de hospedeiro da facilidade de interrupção de faixa de alerta, de acordo com um aspecto da presente invenção; A FIG. 6 representa uma concretização da lógica associada com um hospedeiro manipulando uma saída de convidado, de acordo com um aspecto da presente invenção; A FIG. 7 representa uma concretização de uma visão geral da lógica da facilidade de interrupção de faixa de alerta, de acordo com um aspecto da presente invenção; As FIGs. 8A-8C representam concretizações da lógica associada com a facilidade de interrupção de processamento de faixa de alerta, de acordo com um aspecto da presente invenção; A FIG. 9 representa uma concretização da lógica associada com o recebimento de uma interrupção de faixa de alerta, de acordo com um aspecto da presente invenção; A FIG. 10 representa uma concretização de um formato de uma instrução de Diagnóstico usada de acordo com um aspecto da presente invenção; A FIG. 11 representa uma concretização de um produto de programa de computador que incorpora um ou mais aspectos da presente invenção; A FIG. 12 representa uma concretização de um sistema de computador de hospedeiro para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 13 representa um exemplo adicional de um sistema de computador para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 14 representa 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 FIG. 15 representa 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 FIG. 16A representa uma concretização da unidade de execução do sistema de computador da FIG. 15 para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 16B representa uma concretização da unidade de ramificação do sistema de computador da FIG. 15 para incorporar e usar um ou mais aspectos da presente invenção; A FIG. 16C representa uma concretização da unidade de carga/armazenamento do sistema de computador da FIG. 15 para incorporar e usar um ou mais aspectos da presente invenção; e A FIG. 17 representa uma concretização de um sistema de computador de hospedeiro emulado para incorporar e usar um ou mais aspectos da presente invenção.
DESCRIÇÃO DETALHADA
[00011] De acordo com um aspecto da presente invenção, uma capacidade é provida para alertar um programa (por exemplo, um sistema operacional) que ele possui um período de graça em que para realizar uma função. Por exemplo, um programa é dado um período de graça para realizar a limpeza (por exemplo, completa, parada e/ou mover uma unidade despachável).
[00012] De acordo com um aspecto adicional da presente invenção, um programa e/ou um processador é alertado que ele está prestes a perder o acesso para recursos (por exemplo, recursos compartilhados). Por exemplo, um alerta é provido para um processador que compartilha recursos com outros processadores que o processador está prestes a perder acesso para os recursos. Como um exemplo adicional, um programa, tal como um sistema operacional, executando em um processador dividido (isto é, o programa compartilha o processador com outros programas) é alertado que está prestes a perder os seus recursos de processador.
[00013] Em uma concretização particular, uma capacidade é provida em que um programa do convidado executando em uma CPU convidado provisionada por uma CPU hospedeiro é provido um alerta de expiração de uma fatia de tempo dado para a CPU convidado a partir da CPU hospedeiro ou de preempção pelo hospedeiro da fatia de tempo do convidado. O alerta provê um período de graça em que a CPU convidado pode usar para realizar uma função particular, tal como a execução completa de uma unidade despachável, parar a unidade despachável em um ponto em que a unidade despachável pode ser despachada novamente, e/ou mover a unidade despachável para outra CPU convidado.
[00014] Como usado aqui, um período de graça 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 realizadas.
[00015] 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 à FIG. 1. Nesta concretização particular, um ambiente de computação 100 inclui uma pluralidade de processadores 102 que compartilha recursos 104. Cada processador (e/ou um programa, tal como um sistema operacional, executando no processador) é dado uma certa quantidade de tempo, referida como uma fatia de tempo, para dividir os recursos. Os recursos incluem recursos de unidade de processamento central, memória, dispositivos de entrada/saída ou interfaces, e/ou outros recursos, como exemplos. O processador (ou um programa executando no mesmo) tendo acesso para os recursos é alertado que o seu acesso está prestes a terminar, e, portanto, o processador (ou programa) deve realizar uma ação particular, tal como limpeza, completando uma unidade de trabalho, parando uma unidade de trabalho, movendo uma unidade de trabalho, etc.
[00016] 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 à FIG. 2. Ambiente de computação 200 está baseado, por exemplo, na z/Architecture® oferecida por International Business Machines Corporation (IBM®), Armonk, Nova Iorque. A z/Architecture® é escrita em uma publicação da IBM® intitulada, "z/Architecture Principles of Operation," Publicação IBM® No. SA22-7832-08, Nona Edição, Agosto, 2010. Em um exemplo, um ambiente de computação com base na z/Architecture® inclui um servidor de sistema z®, oferecido por International Business Machines Corporation, Armonk, Nova Iorque. IBM®, z/Architecture® e zSeries®, bem como z/VM® e z/OS® mencionados abaixo, são marcas registradas de International Business Machines Corporation, Armonk, Nova Iorque, EUA. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais, ou nomes de produtos de International Business Machines Corporation ou outras companhias.
[00017] Como um exemplo, ambiente de computação 200 inclui um complexo de processador central (CPC) 202 que provê suporte de máquina virtual. 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 hospedeiro 208 (por exemplo, um programa de controle, tal como um hypervisor), e um subsistema de entrada/saída 210, cada um dos quais é descrito aqui abaixo. Neste exemplo, as máquinas virtuais e o hospedeiro são incluídos na memória.
[00018] O suporte de máquina virtual de CPC provê a capacidade para operar grandes números de máquinas virtuais, cada uma capaz de hospedar um sistema operacional do convidado 212, tal como z/VM®, z/OS® ou Linux. Cada máquina virtual 204 é capaz de funcionar como um sistema separado. Ou seja, cada máquina virtual pode ser independentemente reiniciada, hospedar um sistema operacional do convidado, e operar com diferentes programas. Um sistema operacional ou programa de aplicativo que roda em uma máquina virtual aparece para ter acesso para um sistema inteiro e completo, mas na realidade, apenas uma porção da mesma está disponível.
[00019] Os recursos físicos de CPC (por exemplo, CPUs, memória, dispositivos de I/O, etc.) são de propriedade do hospedeiro 208, e os recursos físicos compartilhados são despachados pelo hospedeiro para os sistemas operacionais de convidado, como necessário, para satisfazer as suas demandas de processamento. As interações entre os sistemas operacionais de convidado e os recursos de máquina físicos compartilhados são controlados pelo hospedeiro, já que o grande número de convidados tipicamente impede o hospedeiro de simplesmente particionar e designar os recursos de hardware para os convidados configurados.
[00020] Processadores centrais 206 são Recursos de Processador Físico que podem ser designados para uma máquina virtual. Por exemplo, máquina virtual 204 inclui um ou mais processadores lógicos, cada um dos quais representa todo ou uma parte de um Recurso de Processador físico 206 que pode ser alocado de maneira dinâmica para a máquina virtual. Máquinas virtuais 204 são gerenciadas pelo hospedeiro 208. Como exemplos, o hospedeiro pode ser implementado em microcódigo que roda nos processadores 206 ou pode ser uma parte de um sistema operacional do hospedeiro executando na máquina. Em um exemplo, o hospedeiro 208 é o Recurso de Processador/Gerenciador de Sistema (PR/SM), oferecido por International Business Machines Corporation, Armonk, Nova Iorque.
[00021] Subsistema de entrada/saída 210 direciona o fluxo de informação entre dispositivos e o armazenamento principal 104. Ele é acoplado com o complexo de processamento central, pelo fato de que pode ser uma parte do complexo de processamento central ou separado do mesmo. O subsistema de I/O alivia os processadores centrais da tarefa de se comunicar diretamente com os dispositivos de entrada/saída e permite que o processamento de dados prossiga concorrentemente com processamento de entrada/saída.
[00022] Em uma concretização preferida da presente invenção, o hospedeiro (por exemplo, PR/SM) e hardware/firmware de processador (por exemplo, System z®) interagem entre si de uma maneira cooperativa controlada de maneira a processar operações de sistema operacional do convidado sem precisar transferir controle de/para o sistema operacional do convidado e o hospedeiro. Operações de convidado podem ser executadas diretamente sem intervenção de hospedeiro através de uma facilidade que permite que as instruções sejam executadas de maneira interpretativa para um convidado de modo de armazenamento paginável. Esta facilidade provê uma instrução, Execução Interpretativa de Partida (SIE), em que o hospedeiro pode emitir, designar um bloco de controle chamado de uma descrição de estado que retém estado de convidado (máquina virtual) e controla, tal como controles de execução e controles de modo. A instrução coloca uma CPU em um modo de execução interpretativa em que instruções de convidado e interrupções são processadas diretamente, até uma condição que necessita que a atenção de hospedeiro surja. Quando tal condição ocorre, execução interpretativa é terminada, e tanto uma interrupção de hospedeiro é apresentada, ou a instrução SIE completa detalhes de armazenamento da condição encontrada; esta ação posterior é chamada de interceptação. Um exemplo de execução interpretativa é descrito em “System/370 Extended Architecture/Interpretive Execution,” Publicação IBM No. SA22-7095-01, Setembro de 1985.
[00023] Como usado aqui, firmware inclui, por exemplo, o microcódigo e/ou milicódigo do processador. Ele inclui, por exemplo, as instruções de nível de hardware e/ou estruturas de dados usadas na implementação de código de máquina de nível mais alto. Em uma concretização preferida da presente invenção, ele inclui, por exemplo, código proprietário que é tipicamente distribuído como microcódigo que inclui software confiado ou microcódigo específico para o hardware subjacente e controla o acesso do sistema operacional para o hardware de sistema.
[00024] Outro exemplo de um ambiente de computação para incorporar um ou mais aspectos da presente invenção é representado na FIG. 3. Neste exemplo, um sistema de computador de hospedeiro emulado 300 é provido que emula um computador hospedeiro 302 de uma arquitetura de hospedeiro. No sistema de computador de hospedeiro emulado 300, um hospedeiro processador (CPU) 304 é um processador de hospedeiro emulado (ou processador de hospedeiro virtual) e é realizado através de um processador de emulação 306 tendo uma diferente arquitetura de conjunto de instrução nativa do que é usada pelos processadores do computador hospedeiro 302. O sistema de computador de hospedeiro emulado 300 possui memória 308 acessível para o processador de emulação 306. Na concretização de exemplo, a memória 308 é particionada em uma porção de memória de computador hospedeiro 310 e uma porção de rotinas de emulação 312. Memória de computador hospedeiro 310 está disponível para programas de computador hospedeiro emulado 302 de acordo com arquitetura de computador hospedeiro, e pode incluir tanto um hospedeiro quanto hypervisor 314 e uma ou mais máquinas virtuais 316 que rodam o sistema operacional de convidado 318, análogas com elementos nomeados de maneira semelhante na FIG. 2.
[00025] Processador de emulação 306 executa instruções nativas de um conjunto de instrução de arquitetura de uma arquitetura diferente do que aquela 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 hospedeiro para a execução a partir de um programa na memória de computador de hospedeiro 310 empregando uma ou mais instruções obtidas em uma sequência e rotina de acesso/decodificação que pode decodificar as instruções de hospedeiro acessadas para determinar uma rotina de execução de instrução nativa para emular a função da instrução de hospedeiro acessada. Tal instrução de hospedeiro pode ser, por exemplo, uma instrução de Execução Interpretativa de Partida (SIE), em que o hospedeiro busca executar um programa do 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 de SIE.
[00026] Outras instalações que são definidas para a arquitetura do sistema de computador hospedeiro 302 podem ser emuladas pelas rotinas de instalações arquitetadas, incluindo tais instalações como registradores de propósito geral, registradores de controle, tradução de endereço dinâmico e suporte de subsistema de I/O e cache de processador, por exemplo. As rotinas de emulação também pode tomar uma vantagem de funções disponíveis no processador de emulação 306 (tal como registradores gerais e tradução dinâmica de endereços virtuais) para aprimorar o desempenho das rotinas de emulação. Hardware especial e motores de descarga também podem ser providos para ajudar o processador 306 na emulação da função do computador de hospedeiro 302.
[00027] De acordo com um aspecto da presente invenção, uma facilidade de interrupção de faixa de alerta é provida que pode ser usada em muitos tipos de ambientes de computação. Apesar de poder ser usada em muitos tipos de ambientes, aspectos da facilidade são descritos aqui com referência a um sistema de multiprocessamento de convidado. Como descrito acima, no sistema de multiprocessamento de convidados, sistemas de operação de convidado despacha unidades despacháveis (por exemplo, programas, código, etc.) nas unidades de processamento central de convidado que são hospedadas por pelo menos uma unidade de processamento central de hospedeiro. A CPU hospedeiro provê uma fatia 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 convidado durante tempo o qual a unidade despachável executa. Se durante a execução da unidade despachável, a fatia de tempo expira, a unidade despachável pode ser deixada em tal condição que não pode ser continuada em qualquer outra CPU convidado da configuração de multiprocessamento de convidado, independentemente da disponibilidade de quaisquer outras CPUs convidado. Em vez disso, deve esperar por a uma e única CPU convidado para receber a sua próxima fatia de tempo de maneira a continuar. Com base na técnica de compartilhamento particular empregada e a relativa prioridade da configuração de convidado, a próxima fatia de tempo pode ser atrasada por um período de tempo substancial. Mesmo se a configuração de convidado possui outras CPUs convidado que são capazes de rodar a unidade despachável, continuação da unidade despachável não é possível devido ao estado da CPU convidado da unidade despachável que foi economizada quando a fatia de tempo anterior passou. Até aquele preciso estado poder ser usado para continuar a CPU convidado, a unidade despachável está inativa.
[00028] É possível estender a fatia de tempo garantindo tempo adicional (ou outro período adicional, tal como instruções adicionais, ciclos, etc.), mas mesmo com este tempo extra, a CPU convidado pode estender a execução da unidade despachável, e ainda deixar a mesma na mesma condição não despachável que poderia estar na expiração da fatia de tempo normal.
[00029] Já que um programa do hospedeiro não conhece os controles e o estado usado por um programa do convidado arbitrário que roda em uma unidade despachável arbitrária, sempre garantindo tempo extra para o sistema operacional do convidado para limpar a sua unidade despachável não pode ser feito sem estabelecer um protocolo entre o programa do hospedeiro e o programa do convidado. Sem um protocolo, qualquer tempo extra garantido para a CPU convidado pode ser consumido no processamento principal e ainda possivelmente concluído com a mesma condição presa de unidade despachável. Portanto, de acordo com um aspecto da presente invenção, tal protocolo é provido.
[00030] De acordo com um aspecto da presente invenção, um período de graça ou extensão é provido que inclui um alerta indicando para o programa do convidado que a ação particular deve ser tomada (por exemplo, complete uma unidade despachável ou fazer a unidade despachável ser despachável novamente). Como exemplos, o período de graça é provido em resposta à expiração da fatia de tempo, ou em resposta ao hospedeiro fazendo a preempção do convidado, antes da expiração da sua fatia de tempo, de maneira a recuperar o processador para alguma outra maior prioridade, como observado pelo hospedeiro, como descrito em maior detalhe aqui.
[00031] Como um exemplo, o período de graça é provido em vez de estender incondicionalmente a fatia de tempo. Se a fatia de tempo normal expirou completamente, um período de graça é provido, mas carregado contra a próxima fatia de tempo normal de maneira a permanecer justo para todos os outros convidados virtualizados em que todos possuem uma expectativa de fatia de tempo. Se a fatia de tempo normal não expirou, o período de graça é tomado a partir do tempo normal remanescente. De qualquer modo, o período de graça limita o tempo remanescente (ou outro período) dado para a CPU convidado e não pode ser estendido. Assim, a CPU convidado não pode continuar a rodar por um período desconhecido e arbitrário.
[00032] No início do período de graça, o programa do convidado é notificado para o propósito de limpar a unidade despachável (por exemplo, completando a mesma, parando a mesma, e/ou movendo a mesma). Reforço do período de graça garante que a CPU convidado não exceda o período adicional garantido. O protocolo em que o programa do convidado é dado um período de graça e é notificado que o tempo (ou outro período) está quase expirado (o período de graça começou) é um acordo entre o programa do convidado e o programa do hospedeiro que o protocolo é entendido pelo programa do convidado, desta forma fazendo tal notificação valer. Ou seja, o programa do convidado normalmente pode honrar a notificação, quando for necessário, fazendo a unidade despachável corrente despachável em outra CPU convidado da configuração de convidado (por exemplo, se movendo).
[00033] Detalhes adicionais com relação ao protocolo e a facilidade de interrupção de faixa de alerta (também referidos como faixa de alerta ou facilidade de faixa de alerta) são descritos abaixo com referência às FIGs. 4 a 10. A concretização descrita com referência a estas figuras se refere a um ambiente virtual tendo um ou mais convidados provisionados por um ou mais hospedeiros. No entanto, um ou mais aspectos da presente invenção também se referem a outros ambientes, incluindo ambientes não virtuais em que múltiplos processadores e/ou múltiplos programas compartilham os recursos.
[00034] Com referência à FIG. 4, detalhes com relação ao protocolo de facilidade de interrupção de faixa de alerta como observado por um convidado são descritos. O protocolo de faixa de alerta, como observado pelo convidado, inclui, por exemplo, uma indicação de facilidade instalada, registro de convidado, notificação e saída voluntário, cada um dos quais é descrito abaixo.
[00035] Em referência à FIG. 4, o programa do convidado entende o protocolo de faixa de alerta e busca por uma indicação de facilidade instalada, ETAPA 400. Em um exemplo, esta indicação é um bit armazenado em um bloco de controle (por exemplo, um Bloco de Controle de Chamada de Serviço (SCCB)), que é observado usando um comando de leitura, tal como um comando de Informação de SCP de Leitura. Subsequente à determinação da facilidade é instalada, o programa do convidado realiza o registro, ETAPA 402. O registro é um mecanismo em que o programa do convidado se comunica com o programa do hospedeiro em que o programa do convidado entende o protocolo de facilidade de interrupção de faixa de alerta. Em um exemplo, registro é realizado usando uma instrução de Diagnóstico, um exemplo do qual é descrito adicionalmente abaixo.
[00036] Registro iniciado a partir de qualquer unidade de processamento central de convidado cobre, em uma concretização, todas as unidades de processamento central de convidado da configuração de multiprocessamento, já que comportamento consistente através das CPUs convidado da configuração de multiprocessamento de convidado é desejado. Em uma configuração de multiprocessamento de convidado, CPUs convidado usam a mesma memória principal e é assumido que as CPUs convidado operam em que algumas vezes é chamado de uma única imagem. Assim, registro de uma CPU convidado é aplicável para as outras CPUs convidado do ambiente de multiprocessamento.
[00037] Registro é irrevogável, em uma concretização, e isto ajuda a evitar janelas de tempo, simplifica o desenvolvimento e permite a melhoria na capacidade de teste. Mesmo que o registro seja irrevogável, o programa do convidado pode determinar se vai continuar a participar do protocolo. Se escolher assim, ele não precisa participar reiniciando ou tendo reiniciado um ou mais indicadores de habilitação descritos abaixo.
[00038] Subsequente ao registro o programa do convidado para o protocolo de faixa de alerta, uma CPU convidado pode ser notificada de um período de graça, ETAPA 404. Por exemplo, pode ser alertado por uma CPU hospedeiro de expiração de uma fatia de tempo (ou uma expiração iminente, em um exemplo adicional) ou da preempção da sua fatia de tempo. Em um particular exemplo, a CPU de uma configuração de convidado registrado é notificada, por exemplo, de expiração da sua fatia de tempo normal e o início de um período de graça que provê um período adicional para, por exemplo, a limpeza.
[00039] Subsequente a ser notificado, o convidado possui uma quantidade de tempo restrita ou outro período, o período de graça (por exemplo, 50 microssegundos em uma concretização particular), para fazer uma unidade despachável poder ser despachada novamente ou para fazer outros ajustes apropriados. Se a fatia de tempo normal já terminou, então antes, por exemplo, retornando o controle para o hospedeiro, o período de graça é usado para fazer a unidade despachável poder ser despachada novamente ou para fazer qualquer outro ajuste apropriado. Se a fatia de tempo não terminou, então o período de graça é usado e qualquer porção remanescente da fatia de tempo é abandonada. Contagem normal do tempo real usado por uma CPU convidado ocorre.
[00040] Subsequente a fazer a notificação, a CPU convidado está em um período restrito (por exemplo, quantidade de tempo limitada) após o qual a operação da CPU convidado é terminada involuntariamente. Apenas uma notificação é feita para cada período de fatia de tempo normal. Assim, a CPU convidado ainda está restrita por um controle de tempo final que garante que a subjacente CPU hospedeiro dividida pode ser dividida em outro local, preservando desta forma boa ordem e disciplina na virtualização global provida pelo programa do hospedeiro.
[00041] A notificação pode ser alcançada por qualquer mecanismo que faz com que um estado único seja detectado pelo programa do convidado. Exemplos incluem uma interrupção de convidado único, uma localização de memória principal definida por arquitetura que pode ser definida, ou um dispositivo de memória externa de I/O disponível tanto para hospedeiro quanto para convidado. O primeiro requer uma habilitação de convidado apropriado para permitir a interrupção. Os dois últimos necessitam de exames periódicos suficientemente geralmente que o período de graça não é desperdiçado. Em um exemplo particular da z/Architecture®, uma interrupção de convidado, referida como uma interrupção de faixa de alerta (WTI), é usada como notificação
[00042] Subsequente a ser alertado, o convidado voluntariamente sai da sua dada fatia de tempo/período de graça, ETAPA 406. O convidado termina a corrente fatia de tempo/período de graça após ser notificado e fazer a unidade despachável ser despachada novamente (por exemplo, parar e mover a unidade despachável, ou completar a mesma). Estes sinais de saída para o programa do hospedeiro o convidado de fato está seguindo o protocolo. Outras razões para um convidado para abdicar o controle, o retorno assim para o programa do hospedeiro pode ocorrer. Normalmente, para o processamento restrito para fazer uma unidade despachável ser despachada novamente, condições podem não ocorrer para quaisquer tais saídas estranhas. Se a CPU convidado sai de dentro do período de graça através do protocolo de interrupção de faixa de alerta, uma indicação de resposta é dada na próxima fatia de tempo, sempre que ocorre. Assim, o programa do convidado conhece que satifaz a restrição de tempo imposta pelo período de graça.
[00043] Se o convidado está atrasado na saída voluntária, a sua execução é antecipada pela expiração do período de graça. A próxima vez que a CPU convidado é iniciada com a fatia de tempo normal, uma indicação de resposta é dada de forma que o convidado sabe que foi atrasada. Em geral, isto pode ser usado para a determinação do problema no programa do convidado já que o período de graça usual permite tempo suficiente para limpar e voluntariamente sair.
[00044] Se uma saída estranha ocorre, a próxima vez a CPU convidado é iniciada dentro da fatia de tempo normal, é esperado que a saída voluntária possa ocorrer rapidamente. O mesmo mecanismo de resposta pode informar o programa do convidado que uma saída estranha interveio e assim provê diferente informação para informar a determinação de problema.
[00045] A saída de voluntario alcançada por qualquer mecanismo que faz com que o controle passe através do programa do hospedeiro a partir do programa do convidado, e que inclui o mecanismo de resposta mencionado anteriormente. O mecanismo usado deve ser definido no protocolo de interrupção de faixa de alerta da arquitetura particular de maneira que o programa do hospedeiro reconheça o requisito de convidado. Em um exemplo, este mecanismo inclui a Instrução de Diagnóstico descrita abaixo.
[00046] Em adição à observação de convidado do protocolo de interrupção de faixa de alerta, em uma concretização, o hospedeiro também observa a facilidade, como descrito em detalhe adicional abaixo com referência à FIG. 5.
[00047] Em referência à FIG. 5, o hospedeiro reconhece a indicação de facilidade instalada e reflete o mesmo para os seus convidados, ETAPA 500. Por exemplo, o hospedeiro verifica o bit instalado no bloco de controle (por exemplo, SCCB) e reconhece o estado instalado do protocolo de faixa de alerta (isto é, é definido) e sabe como o programa do hospedeiro pode usar o mesmo para a vantagem do hospedeiro. Assim, a indicação de facilidade é refletida para o seu convidado. Por exemplo, para refletir a facilidade para um convidado, o hospedeiro define um bit instalado em um bloco de controle convidado (por exemplo, SCCB de convidado) ou uma área de memória acessível para o convidado. Se, por qualquer razão, o programa do hospedeiro não deseja que um convidado observe o estado instalado do protocolo da facilidade de interrupção de faixa de alerta e não permite que um convidado observe o seu estado instalado e usar o mesmo, o programa do hospedeiro passa uma indicação de não instalada para o convidado (por exemplo, define o bit observado pelo convidado para zero). Adicionalmente, em uma concretização, o programa do hospedeiro define os controles das CPUs convidado tal que o protocolo de faixa de alerta é desabilitado (por exemplo, desliga um ou mais bits designados na descrição de estado da CPU convidado).
[00048] Quando o registro é iniciado por um convidado, o programa do hospedeiro recebe o requisito de registro não solicitado e lembra que o convidado registrou, ETAPA 502. Um requisito de registro iniciado por qualquer CPU convidado única é suficiente para registrar todas as CPUs convidado em uma configuração de multiprocessamento de convidado. Assim, o programa do hospedeiro habilita o protocolo de faixa de alerta para todas as CPUs da configuração de convidado, ETAPA 504. Por exemplo, o programa do hospedeiro define um ou mais bits designados na descrição de estado da CPU convidado para habilitar a facilidade de interrupção de faixa de alerta para os convidados. A resposta de registro não é necessariamente retornada para o convidado. Caso uma CPU convidado tente o registro mesmo quando a facilidade não está instalada, o hospedeiro pode ignorar o requisito e pode não habilitar as CPUs convidado para o protocolo da facilidade de interrupção de faixa de alerta.
[00049] Subsequente ao registro e habilitando os convidados para a facilidade de faixa de alerta, um convidado pode receber notificação de invocação do protocolo, ETAPA 506. Isto pode ser alcançado em um número de cenários, como descrito abaixo.
[00050] Como um exemplo, quando o protocolo de interrupção de faixa de alerta é habilitado para uma CPU convidado que opera no modo de execução interpretativa em uma CPU hospedeiro, digamos que a CPU hospedeiro X, o programa do hospedeiro pode iniciar o protocolo a partir da CPU hospedeiro Y. Ou seja, uma CPU convidado foi provisionada com uma CPU hospedeiro X e aquela CPU hospedeiro X atualmente não está disponível para o programa do hospedeiro. Se o programa do hospedeiro possui razão para readquirir CPU X, primeiramente faz com que a CPU X saia do modo de execução interpretativa. Ou seja, a CPU convidado é parada, desta forma saindo do modo de execução interpretativa de CPU X. Parar a CPU convidado em qualquer ponto arbitrário permite que a CPU convidado voluntariamente pare e crie um risco de um problema do qual o protocolo de interrupção de faixa de alerta deseja resolver. O protocolo de interrupção de faixa de alerta permite que a CPU hospedeiro Y requisite a notificação permitindo que uma ação de programa do hospedeiro seja transformada para uma notificação na CPU convidado X, ETAPA 506. Já que o programa do convidado anteriormente registrou, o programa do hospedeiro possui uma expectativa que o programa do convidado reconheça a notificação e suporte manipulação apropriada da notificação incluindo a última etapa de terminar voluntariamente a execução, retornando assim o controle da CPU hospedeiro X para o programa do hospedeiro. Uma vez que isto ocorre, o programa do hospedeiro pode prosseguir com qualquer uso da CPU hospedeiro X que possa ter feito o processo ser iniciado.
[00051] O programa do hospedeiro notifica um convidado, por exemplo, definindo qualquer estado, definindo um indicador (por exemplo, um bit), ou fazendo com que um sinal assíncrono não solicitado (por exemplo, uma interrupção de faixa de alerta) seja enviado para o convidado. Apesar de registrado, o tempo de recebimento de tal sinal de notificação ainda é conhecido no convidado. No registro, o convidado já concordou em aderir ao protocolo se e quando sinalizado.
[00052] Em um sistema de uniprocessador de hospedeiro, se a CPU hospedeiro está no modo de execução interpretativa tal que a CPU convidado está operando, nenhuma outra CPU hospedeiro existe para invocar o protocolo de interrupção de faixa de alerta. No entanto, mesmo neste caso, o protocolo de interrupção de faixa de alerta pode ser invocado pela CPU em si quando a CPU hospedeiro, enquanto no modo de execução interpretativa, reconhece a expiração de fatia de tempo, e então pode garantir um período de graça e realizar a notificação.
[00053] Em um exemplo adicional de notificação, notificação ocorre quando, devido a uma alteração de estado interno reconhecida pela CPU hospedeiro quando é no modo de execução interpretativa, a CPU hospedeiro faz com que a notificação definida no protocolo de interrupção de faixa de alerta seja enviada para a CPU convidado. Um exemplo disto ocorre quando a CPU convidado é habilitada para o protocolo de interrupção de faixa de alerta e a CPU hospedeiro reconhece o fim da fatia de tempo. Antes de sinalizar a CPU convidado para abdicar o controle, a CPU internamente garante um período de graça para permitir para a CPU convidado tempo suficiente para receber o sinal, para tomar ação apropriada (por exemplo, completar a unidade despachável corrente ou fazer a unidade despachável corrente ser despachada novamente), e para terminar voluntariamente. Internamente, a CPU hospedeiro retém o estado para indicar que a CPU convidado foi notificada. Se o convidado não termina voluntariamente dentro do período de graça, a CPU reconhece isto e termina a execução do convidado, retornando desta forma o controle para o programa do hospedeiro terminando o modo de execução interpretativa. O convidado não possui modo de determinar, em uma concretização, porque o protocolo foi invocado, mas apenas que foi notificado para limpar e terminar. Outros argumentos de hospedeiro podem existir para causar um final do modo de execução interpretativa, e assim, terminar a execução de convidado. Por exemplo, cenários existem onde a execução de todas CPUs convidado deve ser parada de maneira a fazer alguma coordenada alterar para toda a configuração de convidado. Uma configuração de convidado de multiprocessamento não é para ter algumas CPUs operando sob diferentes regras ou hipóteses a partir de outras CPUs da configuração de convidado. Tal assimetria pode criar resultados de convidado imprevisíveis.
[00054] A CPU hospedeiro recebe o efeito da CPU convidado tendo realizado a saída voluntária ou saída por qualquer outra razão (por exemplo, o hospedeiro é retornado o recurso da CPU), ETAPA 508. Se a saída é devido ao que o protocolo de interrupção de faixa de alerta define, então o programa do hospedeiro lembra para prover uma resposta para a CPU convidado a próxima vez é iniciada, independentemente do quão longo possa ser. Esta resposta é uma indicação positiva ("boa"), assumindo que o convidado voluntariamente sai antes da expiração do período de graça. Se a saída devido a qualquer outra razão, nenhuma resposta de protocolo de interrupção de faixa de alerta ocorre no próximo início da CPU convidado.
[00055] Se o convidado está atrasado na saída voluntária; ou seja, o convidado realiza uma ação para sair voluntariamente, mas o período de graça expirou, execução da CPU convidado é adiantada pela expiração do período de graça. A próxima vez a CPU convidado é iniciada com a fatia de tempo normal, uma indicação de resposta de exceção é dada de forma que o convidado sabe que está atrasado na sua saída voluntária. Em geral, isto pode ser usado para a determinação do problema no programa do convidado já que o período de graça usual permite tempo suficiente para limpar e voluntariamente sair.
[00056] Se uma saída ocorre diferente do que a saída voluntária do protocolo de interrupção de faixa de alerta, a próxima vez que a CPU convidado é iniciada com a fatia de tempo normal, nenhuma resposta para o protocolo de faixa de alerta está incluída.
[00057] O meio para sair voluntariamente é alcançado por qualquer mecanismo que faz com que o controle passe para o programa do hospedeiro a partir do programa do convidado, que é reconhecido pelo programa do hospedeiro como a saída voluntária do protocolo, e que inclui o mecanismo de resposta mencionado acima. Em um exemplo, uma 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 o fim da fatia de tempo. Após a Instrução de Diagnóstico ser emitida pelo programa do convidado e executado, o programa do hospedeiro determina se a saída estava no tempo. 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 se estava no tempo é provido. O código de condição é definido, por exemplo, no PSW de convidado que é usado para iniciar o convidado na próxima instrução sequencial. O convidado então pode testar o código de condição.
[00058] A manipulação da saída voluntária do convidado pelo hospedeiro é adicionalmente descrita com referência à FIG. 6. Inicialmente, o controle retorna para a CPU hospedeiro, quando a CPU convidado para, ETAPA 600. Uma determinação é feita como se o controle retornasse dentro do período de graça, CONSULTA 602. Se o controle retornou dentro do período de graça, então o programa do hospedeiro observa uma saída voluntária de convidado per o protocolo de interrupção de faixa de alerta e lembra boa resposta para o próximo início da CPU convidado, independentemente de qual CPU hospedeiro deve provisionar a CPU convidado naquele momento, ETAPA 604. Isto está assumindo que a facilidade de interrupção de faixa de alerta é instalada. Se não, estado de resposta não é lembrado. No entanto, se o convidado realiza uma ação para sair voluntariamente mas está fora do período de graça, CONSULTA 602, então o programa do hospedeiro na CPU hospedeiro observa uma saída voluntária de convidado pelo protocolo de interrupção de faixa de alerta (mesmo que seja inoportuno e tenha que ser involuntariamente saído) e lembra resposta ruim para o próximo início da CPU convidado, independentemente de qual CPU hospedeiro deve provisionar a CPU convidado naquele momento, ETAPA 606. Novamente, isto é, assumindo que a facilidade de faixa de alerta seja instalada. Se não, estado de resposta não é lembrado.
[00059] A seguir, se o hospedeiro está lembrando resposta boa ou resposta ruim, o programa do hospedeiro redireciona a CPU hospedeiro para uma designação de preempção, ETAPA 608. Ou seja, o hospedeiro é redirecionado para realizar uma ou mais funções agora que possui novamente os seus recursos (CPU).
[00060] Além disso, no próximo início sequencial da CPU convidado, independentemente de qual CPU hospedeiro provisiona a CPU convidado, se o estado de resposta é lembrado, a indicação de estado de resposta é definida antes de iniciar a CPU convidado, ETAPA 610. Em um exemplo, é definido na descrição de estado de SIE, por exemplo, no PSW da descrição de estado, que indica o início da próxima instrução sequencial.
[00061] Detalhes adicionais com relação ao processamento associado com a facilidade de interrupção de faixa de alerta são descritos com referência às FIGs. 7 a 9. Em particular, a FIG. 7 representa uma concretização da lógica associada com uma visão geral da facilidade de interrupção de processamento de faixa de alerta; as FIGs. 8A a 8C proveem detalhes da facilidade de interrupção de processamento de faixa de alerta, de acordo com um aspecto da presente invenção; e a FIG. 9 representa uma concretização da lógica associada com o recebimento de uma interrupção de faixa de alerta.
[00062] Em referência à FIG. 7, inicialmente um programa do convidado (por exemplo, sistema operacional do convidado) reconhece que a facilidade de interrupção de faixa de alerta é iniciada, ETAPA 700. Em uma concretização, isto é alcançado pelo programa do convidado observando um indicador de facilidade instalada (por exemplo, bit) que está localizado, por exemplo, em um bloco de controle designado. Se o sistema operacional do convidado possui o suporte para participar na facilidade de interrupção de faixa de alerta, reconhece o indicador instalado da facilidade de interrupção de faixa de alerta e então indica a sua capacidade de participar no protocolo. Em um exemplo, isto inclui registrar a sua intenção de participar do processamento de faixa de alerta, ETAPA 702. Como descrito aqui, em um exemplo, registro é realizado através de uma instrução de Diagnóstico. Quando registrado, o sistema operacional do convidado indica tanto para a CPU hospedeiro quanto para o programa do hospedeiro que sabe como lidar com uma interrupção de faixa de alerta (WTI), que é uma interrupção não ambígua que provê um alerta para o convidado que esta, por exemplo, prestes a perder o acesso para o seu recurso compartilhado (por exemplo, CPU convidado) e que é, por exemplo, para tomar ação com relação a sua unidade despachável atualmente em execução. Registro é um pré-requisito, em uma concretização, para o recebimento de WTI se o convidado não é registrado para a facilidade de interrupção de faixa de alerta, com a expiração da fatia de tempo do convidado, nenhum período de graça é ofertado, e a CPU convidado é retirada do modo de execução interpretativa.
[00063] Mesmo se for registrado, em uma concretização, o programa do convidado possui dois mecanismos para desabilitar a apresentação de WTI, Por exemplo, um bit selecionado, por exemplo, na palavra de estado de programa (PSW) pode ser enviado para zero que desabilita 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 para zero para desabilitar apenas o WTI. Quando ambos os bits são um, apresentação de WTI é habilitada. Se a apresentação de WTI permanece desabilitada por todo o período de graça de WTI, a execução do convidado termina sem o benefício de WTI, que constitui uma saída involuntária.
[00064] Durante a execução interpretativa da CPU convidado, se a CPU convidado internamente reconhece tanto uma condição de interrupção externa de cronômetro de CPU hospedeiro (por exemplo, uma fatia de tempo expirada) ou uma preempção requisitada pelo programa do hospedeiro, CONSULTA 704, processamento de CPU interno determina, antes de o hospedeiro receber o controle, se a interrupção de processamento de faixa de alerta deve ser realizada, CONSULTA 706. Ou seja, o processamento de CPU interno verifica que o convidado é habilitado para a processamento de faixa de alerta e, portanto, determina que a processamento de faixa de alerta deve estar incluída no processamento a ser realizado. Se o processamento de interrupção de faixa de alerta não deve ser realizado, então a execução interpretativa do convidado termina, ETAPA 708, e o controle retorna para o programa do hospedeiro, ETAPA 710. Retornando para CONSULTA 706, se, no entanto, a interrupção de processamento de faixa de alerta deve ser realizada, então aquele processamento é realizado, como descrito em detalhe adicional abaixo, ETAPA 712.
[00065] Concretizações de detalhes adicionais da interrupção de processamento de faixa de alerta são descritas com referência às FIGs. 8A-8C. Neste processamento, um número de indicadores de controle são empregados incluindo os seguintes: Um controle interno ativo de período de graça de facilidade de interrupção de faixa de alerta (por exemplo, G bit), que não é visível por arquitetura, mas é usado pela lógica de CPU interna; Uma interrupção de faixa de alerta (WTI) apresenta controle interno (por exemplo, P bit), que indica, quando um, que a WTI foi apresentada para o convidado e quando zero indica que não foi apresentada. Como um controle interno ativo de período de graça de facilidade de interrupção de faixa de alerta, a WTI apresenta controle interno não é visível por arquitetura, mas é usado pela lógica de CPU interna; Uma preempção de programa do hospedeiro do controle de convidado (por exemplo, T bit), que é, por exemplo, o indicador de requisito de intervenção da faixa de alerta na descrição de estado de CPU convidado; e Habilitação de interrupções externas existe, quando um indicador de E é um. Em um exemplo, o indicador de E é um bit dentro da palavra de estado de programa corrente (PSW).
[00066] Em referência à FIG. 8A, em um exemplo, tanto uma condição de interrupção de cronômetro de CPU hospedeiro é reconhecida (por exemplo, fatia de tempo expirada) ou um requisito de intervenção de faixa de alerta (por exemplo, o hospedeiro deseja retorno rápido de recursos de CPU; isto é, antes do fim da fatia de tempo) é reconhecido. Se uma condição de interrupção de cronômetro de CPU hospedeiro é reconhecida, CONSULTA 800, uma determinação é feita como se o indicador de controle ativo de período de graça é definido (por exemplo, é G igual a 1), CONSULTA 802. Se G não é definido, então o indicador de G é definido para, por exemplo, 1, ETAPA 804, e um período de graça da facilidade de interrupção de faixa de alerta está prestes a começar. O valor corrente do cronômetro da CPU hospedeiro então é economizado (o valor economizado é chamado de valor original aqui), ETAPA 806, e o cronômetro da CPU hospedeiro é definido para o período de graça da faixa de alerta (por exemplo, 50 microssegundos), ETAPA 808.
[00067] A seguir, uma determinação é feita para se o convidado é habilitado para uma interrupção de faixa de alerta, CONSULTA 810. Em uma concretização, se o nível de convidado 2 está 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 de convidado 1, e a instrução de Execução interpretativa de Partida do convidado 1 é anulada. Assim, o processamento é como um convidado 1 neste ponto. Se o Convidado 2 não está ativo, então o processamento apenas continua com o convidado 1. Se o convidado é habilitado para a WTI, então a interrupção externa de faixa de alerta (WTI) é apresentada para o convidado, ETAPA 812. Em um exemplo, esta interrupção inclui um código de interrupção particular que é apresentado indicando que possui um período de graça de maneira a realizar uma ou mais funções (por exemplo, limpeza), se for desejado.
[00068] Adicionalmente, P é definido para 1 indicando que a WTI foi apresentada, ETAPA 814. Ainda, o bit T é definido para 1 usando uma função de atualização intertravada (já pode ter sido 1 se um requisito de intervenção foi originalmente usado), ETAPA 816. O período de graça no cronômetro da CPU hospedeiro continua a ser diminuído, independentemente de se a WTI foi apresentada, ETAPA 818. Este processamento então é saído, ETAPA 820. Em um exemplo, uma designação de saída deste processo indica que a CPU completou o processamento corrente da facilidade de interrupção de faixa de alerta e é retornando para outro processamento como ditado pelo estado corrente da CPU.
[00069] Retornando para CONSULTA 810, se o convidado não é habilitado para a interrupção de faixa de alerta, processamento prossegue para a ETAPA 816. Neste caso, o convidado não é habilitado para WTI, então ele não pode ser apresentado para o convidado. No entanto, o bit T é definido pendente de forma que pode ser detectado posteriormente quando o convidado não permite WTI.
[00070] Retornando para CONSULTA 800, se não é uma condição de interrupção de cronômetro de CPU hospedeiro, então um requisito de intervenção de faixa de alerta é reconhecido (isto é, a preempção de hospedeiro). Ou seja, o bit T no campo de requisito de intervenção da descrição de estado do convidado é 1. Assim, uma determinação é feita como se o indicador G é definido, CONSULTA 850. Se não é definido (por exemplo, 0), então processamento continua com a ETAPA 804. Nesta situação, a condição de T igual a 1 é a razão inicial para iniciar o processo de WTI. No entanto, se o bit G é definido, então uma determinação é feita como se P é definido, CONSULTA 852. Se P não é definido (por exemplo, igual a 0), então o processamento continua com a ETAPA 810 em uma tentativa de apresentar a WTI. No entanto, se P é definido (por exemplo, não igual a 0), então a descoberta de T igual a 1 após o período de graça da facilidade de faixa de alerta começou a não ter efeito, e o processo é saído, ETAPA 854.
[00071] Retornando para CONSULTA 802, se G é definido (por exemplo, igual a 1), a CPU convidado já está rodando no período de graça e expiração do cronômetro da CPU hospedeiro indica que o período de graça expirou. Assim, um ciclo de WTI anteriormente foi iniciado e o período de graça expirou. Portanto, em referência à FIG. 8B, o valor de cronômetro de CPU hospedeiro original economizado anteriormente é reduzido pela quantidade de tempo na verdade usada durante o período de graça e então carregado para o cronômetro da CPU hospedeiro, ETAPA 8 60. Modo de execução interpretativa é saído, ETAPA 862, e a interrupção externa do cronômetro da CPU hospedeiro é apresentada para o hospedeiro, ETAPA 8 64 (esta é uma forma de uma saída involuntária de convidado).
[00072] Em adição ao dito acima, análise de WTI pode ser iniciada através de certas instruções que podem habilitar a CPU para WTI. Por exemplo, em referência à FIG. 8C, inicialmente, um número de instruções que pode habilitar a CPU para WTI, incluindo, por exemplo, uma instrução de PSW (Estendida) de carga e uma instrução de Máscara de Sistema ou Então Armazenar que pode ser definida no bit designado no PSW, e Controle de Carga que pode definir o bit selecionado no registro de controle, realizar o monitoramento, como descrito aqui. Por exemplo, uma instrução que pode permitir que as interrupções verifiquem o bit T para processamento de faixa de alerta potencial. Se T = 0, CONSULTA 880, então não existe WTI, e este processo é saído, ETAPA 884. No entanto, se T =1, então o processamento continua com CONSULTA 822.
[00073] Na CONSULTA 882, uma determinação é feita como se P é definido (por exemplo, igual a 1). Se for assim, então este processo é saído, ETAPA 884, já que a habilitação foi detectada anteriormente. No entanto, se P não é definido (por exemplo, não igual a 1), então uma determinação adicional é feita como se G é definido (por exemplo, igual a 1), CONSULTA 886. Se não for, então o processamento continua com a ETAPA 804 (FIG. 8A). No entanto, se G é definido (por exemplo, igual a 1), ETAPA 886 (FIG. 8C), então processamento continua com CONSULTA 810 na FIG. 8A, ETAPA 888, e o processamento é saído.
[00074] Detalhes adicionais do processamento da interrupção de faixa de alerta são descritos com referência à FIG. 9. Quando o programa do convidado recebe a interrupção de faixa de alerta, ele realiza quaisquer funções (por exemplo, funções do sistema operacional) que deve realizar de maneira a, por exemplo, fazer a unidade despachável de trabalho ser despachada novamente, ETAPA 900. Por exemplo, o convidado para a unidade despachável em um ponto particular, economiza o seu estado, e tanto se move para outra CPU convidado quanto permite que seja movido provendo informação de estado, etc. O sistema operacional do convidado sinaliza que terminou emitindo um sinal completo de limpeza de faixa de alerta para o programa do hospedeiro (também conhecido como, uma saída voluntária), ETAPA 902. Este sinal pode ser qualquer mecanismo que causa a operação de convidado para abdicar a remanescente fatia de tempo. No entanto, deve ser reconhecido pelo programa do hospedeiro que a parte de limpeza do protocolo. Em um exemplo, uma função completada de limpeza da Instrução de Diagnóstico é usada.
[00075] Se o programa do convidado emite o sinal completo de limpeza antes de o período de graça expira, CONSULTA 904, o programa do hospedeiro lembra que a CPU convidado saiu no tempo, ETAPA 906. Esta é uma saída voluntária. Quando a CPU convidado é iniciada a seguir, a natureza no tempo do sinal é indicada de volta para a CPU convidado, ETAPA 908. Em um exemplo, uma PSW de retomada de convidado é definida para indicar um código de condição de sucesso (por exemplo, código de condição 0).
[00076] Retornando para CONSULTA 904, se o programa do convidado, por qualquer razão, demora muito, o período de graça expira em virtude do cronômetro da CPU hospedeiro tendo decrementado o período de graça para zero, apresentando assim uma condição de interrupção externa de cronômetro de CPU hospedeiro para a CPU. Neste caso, a CPU reconhece que o convidado já estava no período de graça e não garante outro período de graça. Em vez disso, execução de convidado para e o controle reverte para o programa do hospedeiro pelo recebimento da interrupção externa. Um programa do hospedeiro reconhece que este fim da CPU convidado é uma saída involuntária de convidado.
[00077] No próximo início de CPU convidado, o sistema operacional do convidado então pode emitir um sinal completo de limpeza, embora agora seja muito tarde. O programa do hospedeiro não possui mais uma expectativa de esperar o recebimento do sinal completo de limpeza. Assim, a próxima vez a CPU convidado é iniciada, a natureza muito tardia do sinal é indicada novamente para a CPU convidado, ETAPA 912. Em um exemplo, o PSW de retomada de convidado é marcado para indicar uma condição tardia, que será observada pelo convidado no próximo início. Problema de uma Instrução de Diagnóstico muito tardia é algumas vezes chamado de uma Instrução de Diagnóstico obsoleta já que perdeu a saída anteriormente dentro do período de graça e então posteriormente sair por nenhuma boa razão.
[00078] Em um exemplo, com uma nova partida da CPU convidado, o programa do convidado pode verificar a parte de retomada de sinal do protocolo para se o sinal foi ou não emitido dentro do período de graça. O programa do convidado pode usar esta informação para investigar porque deve ser atrasado e fazer aprimoramento para aprimorar as estatísticas de ser mais oportuno no futuro.
[00079] Em uma concretização, quando o convidado é desabilitado para todas as interrupções externas, um número de instruções que pode permitir que interrupções externas realizem o monitoramento. Quando o convidado é habilitado para as interrupções externas, a habilitação de WTI é examinada. Neste ponto, se WTI é habilitado e o bit P é 0, a WTI é apresentada para a CPU convidado.
[00080] Como mencionado acima, em uma concretização, uma função de Diagnóstico é usada para indicar que a limpeza é completada ou para registrar para a facilidade de interrupção de faixa de alerta. Para a limpeza completada, a função de Diagnóstico, quando emitida com um parâmetro de limpeza e executada, sinais que a CPU emissora realizou qualquer processamento associado desejado com o recebimento de uma interrupção externa de faixa de alerta. Quando a execução completa, um código de condição é definido indicando se a completação foi emitida dentro do intervalo de tempo dependente do modelo permitido para a limpeza após a interrupção de faixa de alerta ou não.
[00081] Como para a função de registro, a função de Diagnóstico, quando emitida com o parâmetro de registro e executado, sinais que a configuração emissora entende a interrupção de faixa de alerta. Quando a execução completa, um código de condição de sucesso é definido. O estado de registro é liberado por um reinicio de sistema.
[00082] Uma concretização de um formato de uma instrução de Diagnóstico é descrita com referência à FIG. 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 para os conteúdos do registro geral B2. O resultado não é usado para endereçar dados, mas em vez disso, certos 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, limpeza de faixa de alerta completa é especificada e uma fatia de tempo é abandonada.
[00083] Em um exemplo, o campo R3 não está usado e contém zeros. Adicionalmente, bits especificados do registro geral R1 são usados e devam conter zeros e um bit particular de registro geral RI (por exemplo, bit 63) especifica a função completada de limpeza quando zero e a função de registro quando 1.
[00084] Em uma partição lógica usando CPUs físicas divididas, esta função pode aprimorar o desempenho do sistema permitindo que a CPU física em que a CPU lógica está rodando seja designada para outra CPU lógica.
[00085] Além do Diagnóstico, qualquer outra saída de SIE enquanto no intervalo de graça de WTI, seja por qualquer causa, similarmente restaura o valor original do cronômetro da CPU hospedeiro decrementado pela quantidade de tempo de período de graça que passou.
[00086] Descrito em detalhe aqui é uma facilidade de interrupção de faixa de alerta que provê, em uma concretização, um mecanismo em que uma interrupção externa de faixa de alerta pode ser apresentada para a CPU em uma configuração com recursos compartilhados da CPU , tal como uma partição lógica. O programa de controle pode usar a interrupção externa de faixa de alerta as o sinal para fazer a unidade despachável atualmente em execução despachável em uma diferente CPU na configuração.
[00087] Em uma concretização, um processador lógico (de convidado) rodando em uma fatia de tempo em um processador físico recebe um sinal de alerta que indica um período de graça, por exemplo, uma quantidade de tempo antes de o processador lógico ser interrompido (desalocado do processador físico que pode ser dividido) permitindo que o trabalho seja feito pelo processador lógico para ser tanto completado quanto movido para outro processador lógico. Como um exemplo, a CPU convidado é sinalizada que a sua fatia de tempo expirou e que deve antecipar a unidade despachável corrente de trabalho (DU) para fazer ela ser despachada novamente em outra CPU convidado. Em um exemplo, o sinal de alerta é uma interrupção tendo um código de interrupção que indica que é a WTI. Em um exemplo adicional, o código de interrupção inclui informação sobre a quantidade de tempo ou outro período dado para o período de graça.
[00088] Em uma concretização, a facilidade de interrupção de faixa de alerta pode ser usada em um ambiente não virtual, bem como em ambientes virtuais, em que um programa e/ou processador compartilha recursos (por exemplo, CPU recursos, ou outros recursos) com um ou mais outros programas e/ou processadores.
[00089] Em uma concretização, em que o ambiente é um ambiente virtual, a partir de uma perspectiva do convidado: 1. Programa do convidado observa a condição instalada da instalação do protocolo de interrupção de faixa de alerta. 2. Programa do convidado registra para o protocolo de interrupção de faixa de alerta. 3. CPU convidado recebe uma notificação de faixa de alerta, de acordo com a arquitetura particular (por exemplo, indicação de memória dividida, indicação de dispositivo de I/O dividido, interrupção). 4. Programa do convidado executando em a CPU convidado realiza processamento aplicável de acordo com a natureza do programa do convidado tendo recebido a notificação (processamento de notificação esperado de ser único por sistema operacional). 5. CPU convidado abdica do controle de acordo com a técnica voluntária do protocolo de faixa de alerta. 6. Na próxima partida da CPU convidado, programa do convidado pode observar a resposta, de acordo com o protocolo de faixa de alerta.
[00090] Adicionalmente, em uma concretização, a partir da perspectiva do hospedeiro: A. Programa do hospedeiro observa o protocolo de interrupção de faixa de alerta indicando a condição de facilidade instalada. 1. Programa do hospedeiro adquire o protocolo de interrupção de faixa de alerta indicando de facilidade instalada. 2. Programa do hospedeiro persistentemente lembra o estado instalado do protocolo de interrupção de faixa de alerta. 3. Programa do hospedeiro indica o protocolo de faixa de alerta estado instalado para cada configuração de convidado. 4. Programa do hospedeiro desabilita o protocolo de faixa de alerta em todas as CPUs não registradas de convidado. 5. Programa do hospedeiro se prepara para reconhecer um requisito de registro de faixa de alerta de convidado a partir de cada configuração de convidado. B. Programa do hospedeiro reconhece um requisito de registro de faixa de alerta a partir de um convidado. 1. Programa do hospedeiro persistentemente lembra que a configuração de convidado entende o protocolo de faixa de alerta. 2. Programa do hospedeiro habilita o convidado para o protocolo de faixa de alerta. C. Durante a operação X de CPU convidado normal, preempção da CPU convidado X é usada para readquirir a correspondente CPU hospedeiro X. 1. Programa do hospedeiro na notificação de sinais Y de CPU para CPU convidado X. a. CPU X propaga notificação para CPU convidado X através da atualização da localização de memória dividida, atualização de dispositivo de I/O dividido, ou interrupção para CPU convidado X, de acordo com protocolo de faixa de alerta. D. CPU convidado X para, retornando o controle para a CPU hospedeiro X. 1. Se está dentro do período de graça, programa do hospedeiro na CPU X observa a saída voluntária de convidado por protocolo de faixa de alerta e lembra boa resposta para a próxima partida da CPU convidado X, independentemente de qual CPU hospedeiro deve provisionar a CPU convidado X naquele momento. a. Se está dentro do período de graça, mas sai da CPU convidado X não está de acordo com o protocolo de faixa de alerta, estado de resposta não é lembrado. 2. Se não está dentro do período de graça, programa do hospedeiro na CPU X observa a saída voluntária de convidado por protocolo de faixa de alerta e lembra resposta ruim para a próxima partida da CPU convidado X, independentemente de qual CPU hospedeiro pode provisionar a CPU convidado X naquele momento. a. Se não está dentro do período de graça, mas sai da CPU convidado X não está de acordo com o protocolo de faixa de alerta, estado de resposta não é lembrado. 3. Programa do hospedeiro na CPU hospedeiro X redireciona CPU X para a designação de preempção. E. Próxima partida sequencial de CPU convidado X, independentemente de qual CPU hospedeiro provisiona CPU convidado X, se estado de resposta é lembrado, set indicação de resposta, de acordo com o protocolo de faixa de alerta antes de iniciar a CPU convidado X.
[00091] Em uma concretização, um processador de convidado da configuração de convidado recebe uma interrupção única, esta interrupção sendo definida para uma arquitetura de computador, e o significado da interrupção sendo uma interrupção de faixa de alerta. A interrupção indica um código específico que identifica a interrupção como uma interrupção de faixa de alerta. A interrupção implica um intervalo de tempo relativamente curto, referido como um período de graça, levando a terminar uma execução de processador de convidado.
[00092] Durante o período de graça, em um exemplo, o programa do convidado é nominalmente esperado de fazer a unidade despachável corrente de trabalho ser despachada novamente em outro processador de convidado, evitando assim ser preso no processador de convidado corrente, esperando a sua seguinte fatia de tempo normal iniciar a partir do hospedeiro.
[00093] Em um exemplo, o intervalo de tempo relativamente curto é garantido apenas uma vez pelo início do programa do hospedeiro do processador de convidado. O intervalo de tempo é garantido a partir, por exemplo, do intervalo de tempo existente sob o qual o processador de convidado está rodando. Já que o intervalo de tempo garantido é alocado a partir da fatia de tempo remanescente normal, não está emprestando tempo, por si só, mas está usando uma quantidade restrita de tempo a partir do intervalo de tempo corrente para garantir que o processador de convidado de fato é antecipado em um período de tempo relativamente curto.
[00094] Em um exemplo adicional em que a corrente fatia de tempo expirou, o intervalo de tempo é garantido como tempo extra em adição ao intervalo de tempo existente sob o qual o processador de convidado está rodando. O intervalo de tempo garantido é levado em conta pelo programa do hospedeiro como contra o esperado a seguir intervalo de tempo normal sequencial que será consumido pelo processador de convidado sob o qual o processador de convidado é esperado para está rodando a seguir. Ainda está intencionado a garantir que o processador de convidado de fato é antecipado em um período de tempo relativamente curto.
[00095] Em um exemplo, um requisito de interrupção para um evento de faixa de alerta pode ser gerado para informar o programa está se aproximando do fim do intervalo de execução corrente em uma CPU dividida. Um requisito de interrupção é um tipo de condição pendente que é gerado quando a configuração é registrada e é habilitado para a facilidade de interrupção de faixa de alerta.
[00096] O processamento cooperativo entre os programas (por exemplo, o hospedeiro e o convidado) otimiza compartilhamento de recurso (por exemplo, CPU) dentre os programas (por exemplo, sistemas de operação de convidado). Um ou mais aspectos proveem, por exemplo, melhor tempo de resposta com o mesmo uso de CPU. Adicionalmente, serialização do sistema é liberada antes de ser não despachado pelo hypervisor.
[00097] Em uma concretização adicional, um ou mais aspectos da invenção podem ser usados com requisitos a partir de um sistema operacional para deixar uma linha de execução individual continua a aprimorar tempo passado de trabalho sensível ao tempo. Ou seja, uma linha pode requisitar ou ser provida tempo adicional para realizar uma função.
[00098] Como será percebido por um perito 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. De maneira apropriada, um ou mais aspectos da presente invenção podem tomar a forma de uma concretização inteiramente de hardware, uma concretização inteiramente de software (incluindo firmware, software residente, micro-código, etc.) ou uma concretização que combina aspectos de software e hardware que podem em geral todos ser referidos aqui como um "circuito, " "módulo" ou "sistema". Adicionalmente, um ou mais aspectos da presente invenção podem tomar 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 incorporado no mesmo.
[00099] Qualquer combinação de um ou mais meios legíveis por computador pode ser usada. O meio legível por computador pode ser um meio de armazenamento legível por computador. Um meio de armazenamento legível por computador pode ser, por exemplo, mas não limitado a, um dispositivo, aparelho ou sistema eletrônico, magnético, óptico, eletromagnético, de infravermelho ou semicondutor, ou qualquer combinação adequada dos anteriores. Mais exemplos específicos (uma lista não exaustiva) do meio de armazenamento legível por computador incluem os seguintes: uma conexão elétrica tendo um ou mais fios, um disquete de computador portátil, um disco rígido, uma memória de acesso aleatório (RAM), uma memória apenas de leitura (ROM), uma memória apenas de leitura programável apagável (EPROM ou memória Flash), uma fibra óptica, uma memória apenas de leitura de disco compacto portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, ou qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legível por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para o uso por ou em conexão com um dispositivo, aparelho e sistema de execução de instrução.
[000100] Em referência agora à FIG. 11, em um exemplo, um produto de programa de computador 1100 inclui, por exemplo, um ou mais meios de armazenamento legível por computador não transitório 1102 para armazenar meios de código de programa legível por computador ou lógica 1104 nos mesmos para prover e facilitar um ou mais aspectos da presente invenção.
[000101] Código de programa incorporado em um meio legível por computador pode ser transmitido usando um meio apropriado, incluindo mas não limitado um sem fios, com fios, cabo de fibra óptica, RF, etc., ou qualquer combinação adequada dos anteriores.
[000102] Código de programa de computador para realizar operações por um ou mais aspectos da presente invenção pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada pelo objeto tal como Smalltalk, C++ ou semelhantes, e linguagens de programação de procedimento convencional, tal como a linguagem de programação "C" ou similares linguagens de programação. O código de programa legível pode executar inteiramente no computador de usuário, parcialmente no computador de usuário, como um pacote de software remoto, parcialmente no computador de usuário e parcialmente em um computador remoto ou inteiramente no computador remoto ou servidor. No último cenário, o computador remoto pode ser conectado com o computador de usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de área larga (WAN), ou a conexão pode ser feita para um computador externo (por exemplo, através da Internet usando um Provedor de Serviço de Internet).
[000103] Um ou mais aspectos da presente invenção são descritos aqui com referência às ilustrações de fluxograma e/ou diagramas de bloco de métodos, aparelho (sistemas), e produtos de programa de computador de acordo com concretizações da invenção. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de bloco, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de bloco, podem ser implementadas pelas instruções de programa de computador. Estas instruções de programa de computador podem ser providas para um processador de um computador de propósito geral, computador de propósito especial, ou outro aparelho de processamento de dados programável para produzir uma máquina, tal que as instruções, que executam através do processador do computador ou outro aparelho de processamento de dados programável, criar meios para implementar as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000104] Estas instruções de programa de computador também podem ser armazenadas em um meio de armazenamento legível por computador que podem direcionar um computador, um aparelho de processamento de dados programável, e/ou outros dispositivos para funcionar de uma maneira particular, tal que o meio de armazenamento legível por computador tendo instruções armazenadas no mesmo compreende um artigo de manufatura incluindo instruções que implementam aspectos da função/ato especificado no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000105] As instruções de programa de computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável, ou outro dispositivo para causar uma série de etapas operacionais a ser realizadas no computador, outro aparelho programável ou outro dispositivo para produzir um processo implementado por computador, tal que as instruções que executam no computador, outro aparelho programável, ou outro dispositivo implementam as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[000106] O fluxograma e diagramas de bloco nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos, e produtos de programa de computador de acordo com várias concretizações da presente invenção. Neste sentido, cada bloco no fluxograma ou diagramas de bloco pode representar um módulo, segmento, ou porção de instruções, que compreende uma ou mais instruções executáveis para implementar as funções lógicas especificadas. Deve ser notado ainda que, em algumas implementações alternativas, as funções notadas no bloco podem ocorrer fora da ordem notada nas figuras. Por exemplo, dois blocos mostrados em sucessão, de fato, podem ser executados substancialmente concorrentemente, ou os blocos algumas vezes podem ser executados na ordem reversa, dependendo da funcionalidade 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 bloco e/ou ilustração de fluxograma, podem ser implementados por sistemas com base em hardware de propósito especial que realizam as funções especificadas ou atos especificados ou realizar combinações de instruções de computador e hardware de propósito especial.
[000107] Em adição ao dito acima, um ou mais aspectos da presente invenção podem ser providos, oferecidos, distribuídos, gerenciados, servidos, etc. por um serviço provido que oferece o gerenciamento de ambientes de consumidor. Por exemplo, o provedor de serviço pode criar, manter, suportar, etc. código de computador e/ou uma infraestrutura de computador que realiza um ou mais aspectos para um ou mais consumidores. No retorno, o provedor de serviço pode receber pagamento a partir de um consumidor sob uma assinatura e/ou acordo de taxa, como exemplos.
[000108] Adicionalmente ou alternativamente, o provedor de serviço pode receber pagamento a partir da venda de conteúdo de propaganda para uma ou mais terceiras partes.
[000109] Em um aspecto da presente invenção, um aplicativo pode ser distribuído para realizar uma ou mais concretizações. Como um exemplo, a distribuição de um aplicativo compreende prover infraestrutura de computador operável para realizar um ou mais aspectos da presente invenção.
[000110] Como um aspecto adicional da presente invenção, uma infraestrutura de computação pode ser distribuída compreendendo integrar 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 realizar um ou mais aspectos da presente invenção.
[000111] Como mais 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 uma ou mais concretizações. O código em combinação com o sistema de computador é capaz de realizar um ou mais aspectos da presente invenção.
[000112] Apesar de várias concretizações serem descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem ser usados para incorporar e usar um ou mais aspectos da presente invenção. Adicionalmente, o período de graça pode ser diferente do que 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 fugir do escopo da presente invenção.
[000113] Adicionalmente, outros tipos de ambientes de computação podem se beneficiar a partir de um ou mais aspectos da presente invenção. Como um exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa é útil que inclui pelo menos dois processadores acoplados diretamente ou indiretamente com elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, memória local empregada durante a execução atual do código de programa, armazenamento físico, e memória de cache que proveem armazenamento temporário de pelo menos some código de programa de maneira a reduzir o número de vezes que o código deve ser recuperado a partir do armazenamento físico durante a execução.
[000114] Dispositivos de entrada/saída ou I/O (incluindo, mas não limitado a, teclados, exibidores, dispositivos de apontamento, DASD, fita, CDs, DVDs, pen drives e outros meios de memória, etc.) podem ser acoplados com o sistema tanto diretamente quanto através de controladores de I/O intervenientes. Adaptadores de rede também podem ser acoplados com o sistema para permitir que o sistema de processamento de dados seja acoplado com outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através de redes públicas ou privadas intervenientes. Modems, cabos de modems, e cartões de ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[000115] Outros exemplos de ambientes de computação que podem incorporar e/ou usar um ou mais aspectos da presente invenção são descritos abaixo.
[000116] Em referência à FIG. 12, componentes representativos de um sistema de computador de hospedeiro 5000 para implementar um ou mais aspectos da presente invenção são retratados. O computador hospedeiro representativo 5000 compreende uma ou mais CPUs 5001 em comunicação com memória de computador (isto é, armazenamento central) 5002, bem como interfaces de I/O para armazenar dispositivos de mídia 5011 e redes 5010 para se comunicar com outros computadores ou SANs e semelhantes. A CPU 5001 está em conformidade com um arquitetura tendo um conjunto de instrução de arquitetura e funcionalidade de arquitetura. A CPU 5001 pode ter tradução de endereço dinâmico (DAT) 5003 para transformar endereços de programa (endereços virtuais) para endereços reais de memória. A DAT tipicamente inclui um armazenamento temporário de lado de tradução (TLB) 5007 para armazenar em cache traduções de forma que acessos posteriores para o bloco de memória de computador 5002 não necessitam do atraso da tradução de endereço. Tipicamente, a cache 5009 é empregada entre memória de computador 5002 e o processador 5001. A cache 5009 pode ser hierárquica tendo uma grande cache disponível para mais do que uma CPU e menores caches mais rápidas (de menor nível) entre a grande cache e cada CPU. Em algumas implementações, as caches de menor nível são divididas para prover caches de nível inferior separadas para busca de instrução e acessos de dados. Em uma concretização, uma instrução é buscada a partir da memória 5002 por uma unidade de busca de instrução 5004 através da 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 a unidade ou unidades de execução de instrução 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 de flutuação e uma unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução, acessando operandos a partir de registradores de instrução especificada ou memória como for necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir da memória 5002, uma unidade de carga/armazenamento 5005 tipicamente lida com o acesso sob controle da instrução sendo executada. Instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[000117] Como notado, um sistema de computador inclui informação no armazenamento local (ou principal), bem como endereçamento, proteção, e referência e gravação de alteração. Alguns aspectos de endereçamento incluem o formato dos endereços, o conceito dos 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 permanentemente localizações de armazenamento designadas. Armazenamento principal provê o sistema com armazenamento de dados de acesso rápido diretamente endereçável. Ambos os dados e programas devem ser carregados no armazenamento principal (a partir dos dispositivos de entrada) antes de eles poderem ser processados.
[000118] Armazenamento principal pode incluir um ou mais armazenamentos temporários de acesso rápido menores, algumas vezes chamados de caches. A cache tipicamente é associada fisicamente com a CPU ou um processador de I/O. Os efeitos, exceto no desempenho, da construção física e o uso de meios de armazenamento distintos em geral não podem ser observados pelo programa.
[000119] Caches separadas podem ser mantidas para instruções e para operandos de dados. Informação dentro da cache é mantida nos bytes contíguos em um limite integral chamado de um bloco de cache ou linha de cache (ou linha, para resumir). Um modelo pode prover uma instrução de ATRIBUTO DE CACHE DE EXTRATO que retorna o tamanho de uma linha de cache em bytes. Um modelo também pode prover instruções de DADOS DE PRÉ-BUSCA e DADOS DE PRÉ-BUSCA RELATIVAMENTE LONGOS que efetuam a busca prévia de armazenamento para os dados ou cache de instrução ou a liberação de dados a partir da cache.
[000120] O armazenamento é observado como uma longa coluna horizontal de bits. Para a maioria das operações, acessos para o armazenamento prosseguem em uma sequência da esquerda para direita. A coluna de bits é subdividida nas unidades de oito bits. Uma unidade de oito bits é chamada de um 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 inteiro não negativo único, que é o endereço daquela localização de byte ou, simplesmente, o endereço de byte. Adjacentes localizações de byte possuem consecutivos endereços, partindo com 0 na esquerda e prosseguindo em uma sequência da esquerda para direita. Endereços são inteiros binários não assinados e são 24, 31, ou 64 bits.
[000121] Informação é transmitida entre o armazenamento e a CPU ou um subsistema de canal um byte, ou um grupo de bytes, em um momento. A menos que seja especificado de outra maneira, por exemplo, na Z/Architecture®, um grupo de bytes no armazenamento é endereçado pelo byte mais da esquerda do grupo. O número de bytes no grupo é tanto implicado ou explicitamente especificado pela operação a ser realizado. Quando usado em uma operação de CPU, um grupo de bytes é chamado de um campo. Dentro de cada grupo de bytes, por exemplo, na z/Architecture®, bits são numerados em uma sequência da esquerda para direita. Na z/Architecture®, os bits mais da esquerda algumas vezes são referidos como os bits de "maior ordem" e os bits mais da direita como os bits de "menor ordem". Números de bit não são endereços de armazenamento, no entanto. Apenas bytes podem ser endereçados. Para operar nos bits individuais de um byte no armazenamento, todo o byte é acessado. Os bits em um byte são numerados 0 a 7, a partir da esquerda para direita (por exemplo, na z/Architecture®) . Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bit, ou 1-31 ou 33-63 para endereços de 31 bit; eles são numerados 0-63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixado de múltiplos bytes, os bits que compõem o formato são numerados consecutivamente partindo de 0. Para os propósitos de detecção de erro, e preferivelmente para correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. Capacidades de armazenamento são expressas no número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito de ter um comprimento fixo, que pode ser um, dois, quatro, oito, ou dezesseis bytes. Maiores campos podem ser implicados para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não é implicado mas é declarado explicitamente, o campo é dito de ter um comprimento variável. Operandos de comprimento variável podem variar no comprimento pelos incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando informação é colocada no armazenamento, os conteúdos de apenas estas localizações de byte são substituídas que são incluídas no campo designado, mesmo que a largura do caminho físico para o armazenamento pode ser maior do que o comprimento do campo sendo armazenado.
[000122] 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 dados para os 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 de construção básico das 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 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 a direita, respectivamente. Instruções devem estar em limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não possuem requisitos de alinhamento limite.
[000123] Nos dispositivos que implementam caches separados para instruções e operandos de dados, um atraso significativo pode ser experenciado se o programa se armazena em uma linha de cache a partir da qual as instruções são subsequentemente buscadas, independentemente de se o armazenamento altera as instruções que são buscadas subsequentemente.
[000124] Em uma concretização, a invenção pode ser praticada por software (algumas vezes referido como código interno licenciado, firmware, microcódigo, milicódigo, picocódigo e semelhantes, qualquer um dos quais pode ser consistente com uma ou mais concretizações) . Em referência à FIG. 12, código de programa de software que incorpora um ou mais aspectos pode ser acessado pelo processador 5001 do sistema hospedeiro 5000 a partir de dispositivos de meio de armazenamento de longo prazo 5011, tais como um drive de CD-ROM, drive de fita ou disco rígido. O código de programa de software pode ser incorporado em qualquer um de uma variedade de meios conhecidos para o uso com um sistema de processamento de dados, tal como um disquete, disco rígido, ou CD-ROM. O código pode ser distribuído em tal mídia, ou pode ser distribuído para usuários a partir da memória de computador 5002 ou armazenamento de um sistema de computador por uma rede 5010 para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[000125] O código de programa de software inclui um sistema operacional que controla a função e a interação de vários componentes de computador e um ou mais programas de aplicativo. Código de programa normalmente é paginado a partir do dispositivo de mídia de armazenamento 5011 para o armazenamento de computador de velocidade relativamente maior 5002 onde está disponível para processar pelo processador 5001. As técnicas e métodos para incorporar o código de programa de software na memória, no meio físico, e/ou distribuir código de software através das redes são bem conhecidos e não será adicionalmente discutido aqui. Código de programa, quando criado e armazenado em um meio tangível (incluindo mas não limitado aos módulos de memória eletrônica (RAM), memória de flash, Discos compactos (CDs), DVDs, Fita Magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legível por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[000126] A FIG. 13 ilustra uma estação de trabalho representativa ou sistema de hardware de servidor em que um ou mais aspectos da presente invenção podem ser praticados. O sistema 5020 da FIG. 13 compreende um representativo sistema de computador de base 5021, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador de base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar e permitir a comunicação entre os processadores 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 com a memória 5025 e armazenamento de longo prazo 5027 que pode incluir um disco rígido (incluindo qualquer um de um meio magnético, CD, DVD e Memória de flash, por exemplo) ou um drive de fita, por exemplo. O sistema 5021 também deve incluir um adaptador de interface de usuário, que conecta o microprocessador 5026 através do barramento com um ou mais dispositivos de interface, tal como um teclado 5024, um mouse 5023, uma impressora/escâner 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, bloco de entrada digitalizado, etc. O barramento também conecta um dispositivo de exibição 5022, tal como uma tela de LCD ou monitor, com o microprocessador 5026 através de um adaptador de exibição.
[000127] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar 502 8 com uma rede 5029. Exemplo adaptadores de rede são canais de comunicações, token ring, ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fios, tal como um cartão de CDPD (dados de pacote digital de celular). O sistema 5021 pode estar associado com tais outros computadores em uma rede de área local (LAN) ou uma rede de área larga (WAN), ou o sistema 5021 pode ser um cliente em um arranjo de cliente/servidor com outro computador, etc. Todas estas configurações, bem como os hardware e software de comunicações apropriados, são conhecidos na técnica.
[000128] A FIG. 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, tal como uma rede sem fios e uma rede com fios, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Adicionalmente, como os peritos na técnica vão perceber, uma ou mais LANs podem estar incluídas, onde a LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas com um processador de hospedeiro.
[000129] Ainda em referência à FIG. 14, as redes também podem incluir computadores de mainframe ou servidores, tais como um computador de portal de entrada (servidor de cliente 5046) ou servidor de aplicativo (servidor remoto 5048 que pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 5045) . Um computador de portal de entrada 504 6 serve como um ponto de entrada para cada rede individual. Um portal de entrada é necessário quando se conecta um protocolo de rede com outro. O portal de entrada 5046 pode ser preferivelmente acoplado com outra rede (a Internet 5047, por exemplo) por meio de uma ligação de comunicações. O portal de entrada 5046 também pode ser acoplado diretamente com uma ou mais estações de trabalho 5041, 5042, 5043, 5044 usando uma ligação de comunicações. O computador de portal de entrada pode ser implementado usando um servidor de Sistema z de IBM eServer disponível a partir de International Business Machines Corporation.
[000130] Em referência concorrentemente à FIG. 13 e FIG. 14, 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 armazenamento de longo prazo media 5027, tal como um drive 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 o uso com um sistema de processamento de dados, tal como um disquete, disco rígido, ou CD-ROM. O código pode ser distribuído em tal meio, ou pode ser distribuído para os usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador sobre uma rede para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[000131] Alternativamente, o código de programação pode ser incorporado na memória 5025, e acessado pelo processador 5026 usando o barramento de 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. Código de programa normalmente é paginado a partir do meio de armazenamento 5027 para memória de alta velocidade 5025 onde está disponível para processar pelo processador 5026. As técnicas e métodos para incorporar código de programação de software na memória, no meio físico, e/ou distribuir código de software através de redes são bem conhecidos e não serão adicionalmente discutidos aqui. Código de programa, quando criado e armazenado em um meio tangível (incluindo, mas não limitado aos módulos de memória eletrônica (RAM), memória de flash, Discos compactos (CDs), DVDs, Fita Magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legível por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[000132] A cache que está mais prontamente disponível para o processador (normalmente mais rápido e menor do que outras caches do processador) é a menor cache (L1 ou de nível um) e armazenamento principal (memória principal) é a cache de nível mais alto (L3 se existem 3 níveis) . A cache de menor nível geralmente é dividida em uma cache de instrução (I-Cache) que retém instruções de máquina a ser executada e uma cache de dados (D-Cache) que retém operandos de dados.
[000133] Em referência à FIG. 15, uma concretização de processador de exemplo é representada para o processador 5026. Tipicamente um ou mais níveis de cache 5053 são empregados para armazenar temporariamente blocos de memória de maneira a aprimorar o desempenho do processador. A cache 5053 é um armazenamento temporário de alta velocidade que retém linhas de cache dos dados de memória que são prováveis de ser usados. Linhas de cache típicas são 64, 128 ou 256 bytes dos dados de memória. Caches separadas geralmente são empregadas para armazenar em cache instruções em vez de armazenar em cache os dados. Coerência de cache (sincronização de cópias de linhas na memória e as caches) geralmente é provida por vários algoritmos "para bisbilhotar" bem conhecidos na técnica. Armazenamento de memória principal 5025 de um sistema de processador geralmente é referido como a cache. Em um sistema de processador tendo 4 níveis de cache 5053, armazenamento principal 5025 algumas vezes é referido como a cache de nível 5 (L5) já que tipicamente é mais rápido e apenas retém uma porção do armazenamento não volátil (DASD, fita etc.) que está disponível para um sistema de computador. Armazenamento principal 5025 "armazena em cache" páginas de dados paginadas dentro e fora do armazenamento principal 5025 pelo sistema operacional.
[000134] Um contador de programa (contador de instrução) 5061 mantém registro do endereço da instrução corrente a ser executada. Um contador de programa no processador da z/Architecture® é 64 bits e pode ser truncado para 31 ou 24 bits para suportar antes de se endereçar aos limites. Um contador de programa tipicamente é incorporado em um PSW (palavra de estado de programa) de um computador tal que persiste durante comutação de contexto. Assim, um programa em progresso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema operacional (comutação de contexto a partir do programa ambiente para o sistema operacional ambiente). O PSW do programa mantém o valor de contador de programa enquanto o programa não está ativo, e o contador de programa (no PSW) do sistema operacional é usado enquanto o sistema operacional está executando. Tipicamente, o contador de programa é incrementado por uma quantidade igual ao número de bytes da instrução corrente. As instruções de RISC (Computação Definida por Construção Reduzida) tipicamente são fixadas comprimento enquanto instruções de CISC (Computação Definida por Instrução Complexa) tipicamente são de comprimento variável. Instruções de z/Architecture® de IBM são instruções de CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado tanto pela operação de comutação de contexto ou uma operação tomada por ramificação de uma instrução de ramificação por exemplo. Na operação de comutação de contexto, o valor de contador de programa corrente é economizado na palavra de estado de programa junto com outra informação de estado sobre o programa sendo executado (tal 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 tomada por ramificação é realizado de maneira a permitir que o programa tome decisões ou faça ciclo dentro do programa carregando o resultado da instrução de ramificação para o contador de programa 5061.
[000135] Tipicamente uma unidade de busca de instrução 5055 é empregada para buscar instruções em nome do processador 5026. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo de instruções tomadas por ramificação, ou primeiras instruções de um programa que segue a comutação de contexto. Unidades de busca de Instrução Moderna geralmente empregam técnicas de pré-busca para buscar previamente de maneira especulativa instruções com base na propensão que as instruções pré-buscadas devem ser usadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui os bytes adicionais e próxima instrução sequencial de adicionais instruções sequenciais.
[000136] As instruções buscadas então são executadas pelo processador 5026. Em uma concretização, as instruções buscadas são passadas para uma unidade de despacho 5056 da unidade de busca. A unidade de despacho decodifica as instruções e direciona informação sobre as instruções decodificadas para unidades apropriadas 5057, 5058, 5060. Uma unidade de execução 5057 tipicamente vai receber informação sobre instruções aritméticas decodificadas a partir da unidade de busca de instrução 5055 e vai realizar operações aritméticas nos operandos de acordo com o opcode da instrução. Operandos são providos para a unidade de execução 5057 preferivelmente tanto a partir da memória 5025, registradores arquitetados 5059 ou a partir de um campo imediato da instrução sendo executada. Resultados da execução, quando armazenados, são armazenados tanto na memória 5025, quanto nos registradores 5059 tanto em outro hardware de máquina (tal como registradores de controle, registradores de PSW e semelhantes).
[000137] Um processador 5026 tipicamente possui uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Em referência à FIG. 16A, uma unidade de execução 5057 pode comunicar com registradores gerais arquitetados 5059, uma unidade de despacho/decodificação 5056, uma unidade de armazenamento de carga 5060, e outras 5065 unidades de processador 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 reter informação que a unidade de lógica aritmética (ALU) 5066 vai operar ligada. A ALU realiza operações aritméticas tais como adição, subtração, multiplicação e divisão bem como função lógica tal como e, ou e exclusiva ou (XOR) , girar e deslocar. Preferivelmente a ALU suporta operações especializadas que são dependentes do projeto. Outros circuitos podem prover outras instalações arquitetadas 5072 incluindo códigos de condição e recuperar lógica de suporte por exemplo. Tipicamente o resultado de uma operação de ALU é mantido em um circuito de registro de saída 5070 que pode direcionar o resultado para uma variedade de outras funções de processamento. Existem muitos arranjos de unidades de processador, a presente descrição está intencionada apenas a prover um entendimento representativo de uma concretização preferida da presente invenção.
[000138] Uma instrução de ADD, por exemplo, pode ser executada em uma unidade de execução 5057 tendo funcionalidade lógica e aritmética enquanto uma instrução de ponto flutuante, por exemplo, pode ser executada em uma execução de ponto flutuante tendo capacidade de ponto de flutuação especializada. Preferivelmente, uma unidade de execução opera nos operandos identificados por uma instrução realizando uma função definida por opcode nos operandos. Por exemplo, uma instrução de ADD pode ser executada por uma unidade de execução 5057 nos operandos encontrados em dois registradores 5059 identificados pelos campos de registro da instrução.
[000139] A unidade de execução 5057 realiza a adição aritmética nos dois operandos e armazena o resultado em um terceiro operando onde o terceiro operando pode ser um terceiro registro ou um dos dois registradores de fonte. A unidade de execução preferivelmente usa uma Unidade de Lógica Aritmética (ALU) 5066 que é capaz de realizar uma variedade de funções lógicas tal como Deslocamento, Rotação, e, ou e XOR bem como uma variedade de funções algébricas incluindo qualquer um de adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são projetadas para operações escalares e algumas para ponto flutuante. Dados podem ser Big Endian (onde o byte menos significativo está no endereço de byte mais alto) ou Little Endian (onde o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. A z/Architecture® da IBM é Big Endian. Campos sinalizados podem ser sinalizados e magnitude, complemento 1 ou complemento 2 dependendo da arquitetura. Um número de complemento 2 é vantajoso pelo fato de que a ALU não precisa projetar uma capacidade de subtração já que tanto um valor negativo ou um valor positivo no complemento 2 necessita apenas de uma adição dentro de ALU. Números são comumente descritos de antemão, onde um campo de 12 bit define um endereço de um bloco de 4.096 byte e é comumente descrito como um bloco de 4 Kbyte (Kilobyte), por exemplo.
[000140] Em referência à FIG. 16B, informação de instrução de ramificação para executar uma instrução de ramificação tipicamente é enviada para uma unidade de ramificação 5058 que geralmente emprega um algoritmo de predição de ramificação tal como uma tabela histórica de ramificação 5082 para prever o resultado da ramificação antes de outras operações condicionais estarem completas. O alvo da instrução de ramificação corrente será buscado e especulativamente executado antes das operações condicionais serem completas. Quando as operações condicionais são completadas as instruções de ramificação especulativamente executadas são tanto completadas ou descartadas com base nas condições da operação condicional e o resultado especulado. Uma instrução de ramificação típica pode testar códigos de condição e ramificação para um endereço alvo se os códigos de condição satisfazem o requisito de ramificação da instrução de ramificação, um endereço alvo pode ser calculado com base nos 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 um 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 comunicar 5081 com registradores gerais 5059, unidade de despacho de decodificação 5056 ou outros circuitos 5073, por exemplo.
[000141] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões incluindo a comutação de contexto iniciada por um sistema operacional, uma exceção de programa ou erro causando a comutação de contexto, um sinal de interrupção de I/O causando a comutação de contexto ou atividade de threading múltipla de uma pluralidade de programas (em um ambiente multithreaded), por exemplo. Preferivelmente a ação de comutação de contexto economiza informação de estado sobre um programa em execução corrente e então carrega informação de estado sobre outro programa sendo invocado. Informação de estado pode ser economizada em registradores de hardware ou na memória por exemplo. Informação de estado preferivelmente compreende um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, informação de tradução de memória e conteúdo de registro arquitetado. A atividade de comutação de contexto pode ser exercitada pelos circuitos de hardware, programas de aplicativo, programas de sistema operacional ou código de firmware (microcódigo, picocódigo ou código interno licenciado (LIC)) sozinho ou em combinação.
[000142] Um processador acessa operandos de acordo com métodos definidos pela instrução. A instrução pode prover um operando imediato usando o valor de uma porção da instrução, pode prover um ou mais campos de registro explicitamente apontando tanto para registradores de propósito geral quanto para registradores de propósito especial (registradores de ponto flutuante por exemplo). A instrução pode usar registradores implicados identificados por um campo de opcode como operandos. A instrução pode usar localizações de memória para os operandos. Uma localização de memória de um operando pode ser provida por um registro, um campo imediato, ou uma combinação de registradores e campo imediato como exemplificado por uma facilidade de deslocamento longo de z/Architecture® em que a instrução define um registro de base, um registro de índice e um campo imediato (campo de deslocamento) que são adicionados juntos para prover o endereço do operando na memória por exemplo. A localização aqui tipicamente implica uma localização na memória principal (armazenamento principal) a menos que seja indicado de outra forma.
[000143] Em referência à FIG. 16C, um processador acessa o armazenamento usando uma unidade de carga/armazenamento 5060. A unidade de carga/armazenamento 5060 pode realizar uma operação de carga obtendo o endereço do operando alvo na memória 5053 e carregar o operando em um registro 5059 ou outra localização de memória 5053, ou pode realizar uma operação de armazenamento obtendo o endereço do operando alvo na memória 5053 e armazenar dados obtidos a partir de um registro 5059 ou outra localização de memória 5053 na localização de operando alvo na memória 5053. A unidade de carga/armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem com relação à sequência de instrução, no entanto a unidade de carga/armazenamento 5060 é para manter a aparência para programas em que as instruções foram executadas na ordem. Uma unidade de carga/armazenamento 5060 pode comunicar 5084 com registradores gerais 5059, unidade de despacho/decodificação 5056, interface de cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro, ALUs 5085 e controles de lógica 5090 para calcular endereços de armazenamento e para prover sequenciamento em linha para manter as operações na ordem. Algumas operações podem estar fora de ordem, mas a unidade de carga/armazenamento provê funcionalidade para fazer as operações fora de ordem aparecerem para o programa como tendo sigo realizado na ordem, como é bem conhecido na técnica.
[000144] Preferivelmente endereços que um programa de aplicação "vê" geralmente são referidos como endereços virtuais. Endereços virtuais algumas vezes são referidos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais pelo fato de que eles são redirecionados para localização de memória física por um de uma variedade de tecnologias de tradução de endereço dinâmico (DAT) incluindo, mas não limitado a, simplesmente prefixar um endereço virtual com um valor de deslocamento, traduzir o 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 que aponta para a tabela de página. Na Z/Architecture®, uma hierarquia de tradução é provida 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 é aprimorado usando um armazenamento temporário de lado de tradução (TLB) que compreende entradas que mapeiam um endereço virtual para uma localização de memória física associada. As entradas são criadas quando o DAT traduz um endereço virtual usando as tabelas de tradução. Subsequente ao uso do endereço virtual então pode usar a entrada de TLB rápido em vez do que os acessos de tabela de tradução sequencial lenta. O conteúdo de TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Menos Recentemente usado).
[000145] No caso onde o processador é um processador de um sistema de múltiplos processadores, cada processador possui responsabilidade para manter recursos compartilhados, tal como I/O, caches, TLBs e memória, intertravados para a coerência. Tipicamente, tecnologias de "bisbilhotar" serão usadas na manutenção de coerência de cache. Em um ambiente de bisbilhotar, cada linha de cache pode ser marcada como estando em qualquer um de um estado dividido, um estado exclusivo, um estado alterado, um estado inválido e semelhantes de maneira a facilitar o compartilhamento.
[000146] Unidades de I/O 5054 (FIG. 15) proveem o processador com meios para anexação com dispositivos periféricos incluindo fita, disco, impressoras, exibidores, e redes por exemplo. Unidades de I/O geralmente são apresentadas para o programa de computador por drivers de software. Nos mainframes, tais como o Sistema z® a partir de IBM®, adaptadores de canal e adaptadores de sistema aberto são unidades de I/O do mainframe que proveem as comunicações entre o sistema operacional e os dispositivos periféricos.
[000147] Adicionalmente, outros tipos de ambientes de computação podem beneficiar a partir de um ou mais aspectos. Como um exemplo, 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 arquitetadas, tais como tradução de endereço, e registradores arquitetados) ou um subconjunto das mesmas é 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 uma ou mais concretizações, mesmo que um computador que executa o emulador possa ter uma diferente arquitetura diferente do que as capacidades sendo emuladas. Como um exemplo, no modo de emulação, a operação ou instrução específica sendo emulada é decodificada, e uma função de emulação apropriada é embutida para implementar a operação ou instrução individual.
[000148] Em um ambiente de emulação, um computador de hospedeiro inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de busca de instrução para buscar instruções a partir da memória e opcionalmente, para prover armazenamento temporário local para a instrução buscada; uma unidade de decodificação de instrução para receber as instruções buscadas e para determinar o tipo de instruções que devem ser buscadas; e uma instrução unidade de execução para executar as instruções. A execução pode incluir dados de carregamento para um registro a partir da memória; armazenando dados de volta para a memória a partir de um registro; ou realizando 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 realizadas pelas unidades são implementadas como uma ou mais subroutinas dentro de software emulador.
[000149] Mais particularmente, em um mainframe, instruções arquitetadas de máquina são usadas pelos programadores, comumente programadores "C" da atualidade, geralmente por meio de um aplicativo compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas de maneira nativa no Servidor Z/Architecture® da IBM®, ou alternativamente nas máquinas que executam outras arquiteturas. Eles podem ser emulados nos servidores existentes e em futuros servidores de mainframe de IBM® e nas outras máquinas da IBM® (por exemplo, servidores Power Sistemas e Servidores de Sistema x). Eles podem ser executados em máquinas que rodam Linux em uma grande variedade de máquinas usando hardware fabricado por IBM®, Intel®, AMD, e outros. Além da execução daquele hardware sob Z/Architecture®, Linux pode ser usado bem como as máquinas que usam a emulação por Hercules, UMX, ou FSI (Fundamental Software, Inc.), onde em geral a execução está em um modo de emulação. No modo de emulação, software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[000150] O processador nativo tipicamente executa software de emulação compreendendo tanto firmware quanto um sistema operacional nativo para realizar emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura de processador emulada. O software de emulação mantém um contador de programa emulado para manter registro de limites de instrução. O software de emulação pode buscar uma ou mais instruções de máquina emulada em um momento e converter como uma ou mais instruções de máquina emulada para um correspondente grupo de instruções nativas de máquina para a execução pelo processador nativo. Estas instruções convertidas podem ser armazenadas em cache tal que uma conversão mais rápida pode ser alcançada. Não obstante, o software de emulação é para manter as regras de arquitetura da arquitetura de processador emulada de forma a garantir que os sistemas de operação e aplicativos escritos para o processador emulado operem corretamente. Adicionalmente, o software de emulação é para prover recursos identificados pela arquitetura de processador emulado incluindo, mas não limitado a, registradores de controle, registradores de propósito geral, ponto flutuante registradores, função de tradução de endereço dinâmico 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 arquitetadas para subsistemas de I/O tal que um sistema operacional ou um programa de aplicativo projetado para rodar no processador emulado, podem ser rodados no processador nativo tendo o software de emulação.
[000151] Uma instrução específica sendo emulada é decodificada, e uma subroutina é chamada para realizar a função da instrução individual. Uma função de software de emulação que emula uma função de um processador emulado é implementada, por exemplo, em um driver ou subroutina "C", ou algum outro método de provisão de um driver para o hardware específico como estará dentro da perícia daqueles peritos na técnica após o entendimento da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, mas não limitado a Cartas Patente U.S. No. 5,551,013, intitulada "Multiprocessor for Hardware Emulation", de Beausoleil et al; e cartas Patente U.S. No. 6,009,261, intitulada "Preprocessing of Stored Target Routines to emulate Incompatible Instructions on a Target Processor", de Scalzi et al; e Cartas Patente U.S. No. 5.574.873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines emulating the Guest Instructions", de Davidian et al; e Cartas Patente U.S. No. 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 Cartas Patente U.S. No. 6,463,582, intitulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method", de Lethin et al; e Cartas Patente U.S. No. 5,790,825, intitulada "Method to emulute Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions", de Eric Traut; e muitos outros, ilustram uma variedade de modos conhecidos para alcançar a emulação de um formato de instrução arquitetada para uma diferente máquina para uma máquina alvo disponível para o perito na técnica.
[000152] Na FIG. 17, um exemplo de um sistema de computador hospedeiro emulado 5092 é provido que emula um sistema de computador hospedeiro 5000' de uma arquitetura de hospedeiro. No sistema de computador hospedeiro emulado 5092, o processador de hospedeiro (CPU) 5091 é um processador de hospedeiro emulado (ou processador de hospedeiro virtual) e compreende um processador de emulação 5093 tendo uma diferente arquitetura de configuração de instrução nativa do que aquela do processador 5091 do computador de hospedeiro 5000'. O sistema de computador hospedeiro emulado 5092 possui memória 5094 acessível para o processador de emulação 5093. Na concretização de exemplo, a memória 5094 é particionada para uma porção de memória de computador de hospedeiro 5096 e uma porção de rotinas de emulação 5097. O hospedeiro memória de computador 5096 está disponível para programas do computador de hospedeiro emulado 5092 de acordo com arquitetura de computador de hospedeiro. O processador de emulação 5093 executa instruções nativas de um conjunto de instrução arquitetada de uma arquitetura diferente do que aquela do processador emulado 5091, as instruções nativas obtidas a partir da memória de rotinas de emulação 5097, e pode acessar uma instrução de hospedeiro para a execução a partir de um programa na memória de computador de hospedeiro 5096 empregando uma ou mais instruções obtidas em uma sequência e rotina de acesso/decodificação que pode decodificar as instruções de hospedeiro acessadas para determinar uma rotina de execução de instrução nativa para emular a função da instrução de hospedeiro acessada. Outras instalações que são definidas para a arquitetura do sistema de computador hospedeiro 5000' podem ser emuladas pelas rotinas de instalações arquitetadas, incluindo tais instalações como registradores de propósito geral, registradores de controle, tradução de endereço dinâmico e suporte de subsistema de I/O e cache de processador, por exemplo. As rotinas de emulação também podem tomar uma vantagem de funções disponíveis no processador de emulação 5093 (tal como registradores gerais e tradução dinâmica de endereços virtuais) para aprimorar o desempenho das rotinas de emulação. Hardware especial e motores de descarga também podem ser providos para ajudar o processador 5093 na emulação da função do computador de hospedeiro 5000'.
[000153] A terminologia usada aqui é para o propósito de descrever concretizações particulares apenas e não está intencionada a ser limitante. Como usado aqui, as formas singulares "um", "uma", "a" e "o" também estão intencionadas a incluir as formas plurais, a menos que o contexto indique claramente de outra forma. Será entendido adicionalmente que os termos "compreende" e/ou "compreendendo", quando usados nesta especificação, especificam a presença de funcionalidades, integrantes, etapas, operações, elementos, e/ou componentes declarados, mas não impedem a presença ou a adição de uma ou mais outras funcionalidades, integrantes, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[000154] As correspondentes estruturas, materiais, atos, e equivalentes de todos os meios ou etapa mais elementos de função nas reivindicações abaixo, se existe algum, estão intencionados a incluir qualquer estrutura, material, ou ato para realizar a função em combinação com outros elementos reivindicados como reivindicado especificamente. A descrição de uma ou mais concretizações foi apresentada para os propósitos de ilustração e descrição, mas não está intencionada a ser exaustiva ou limitada na forma divulgada. Muitas modificações e variações serão aparentes para os peritos na técnica na técnica. A concretização foi escolhida e descrita de maneira a explicar melhor vários aspectos e a aplicação prática, e para permitir que outros peritos na técnica entendam várias concretizações com várias modificações como são adequadas para o uso particular contemplado.

Claims (14)

1. Sistema de computador para facilitar o processamento em um ambiente de computação, o referido sistema de computador compreendendo: uma memória; e um processador host e um ou mais processadores virtuais, sendo o um ou mais processadores virtuais um modo diferente do processador host, o processador host em comunicação com a memória, em que o sistema de computador está configurado para executar um método, o referido método caracterizado pelo fato de que compreende: fornecer por um sistema operacional host a um sistema operacional convidado que executa nos um ou mais processadores virtuais uma indicação de instalação de faixa de aviso instalada indicando a instalação de uma instalação de faixa de aviso no ambiente de computação, a indicação de instalação a ser obtida pelo sistema operacional convidado, e a facilidade de rastreamento de aviso para fornecer ao sistema operacional convidado um período de graça para executar uma primeira função, sendo o período de graça uma duração predeterminada não extensível, em que a primeira função é concluir a execução de uma unidade despachada, parando a unidade despachada em um ponto em que a unidade despachável é reconstituível e / ou movendo a unidade despachável para outro processador convidado; obter, pelo sistema operacional host com base no fornecimento da indicação de que um recurso de rastreamento de aviso está instalado, uma indicação não solicitada de que o sistema operacional convidado se registrou para o recurso de rastreamento de aviso, o registro compreendendo uma indicação ao sistema operacional do host de que o sistema operacional convidado compreende um protocolo da instalação de rastreamento de aviso e pretende participar do serviço de rastreamento de aviso, de modo que o sistema operacional convidado normalmente honre a notificação, tornando a unidade despachada atual indisponível em outra CPU convidada da configuração do hóspede quando necessário; habilitar, com base na obtenção da indicação de que o sistema operacional convidado se registrou, o recurso de rastreamento de aviso para o sistema operacional convidado; fornecer pelo sistema operacional host ao sistema operacional convidado uma notificação de faixa de aviso; com base na notificação da faixa de aviso, iniciando pelo sistema operacional convidado a primeira função dentro do período de graça; e executando pelo sistema operacional host uma segunda função subsequente ao período de graça.
2. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a notificação da faixa de aviso compreende uma interrupção na qual os recursos compartilhados atribuídos ao sistema operacional convidado são liberados após o término do período de graça.
3. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o sistema operacional convidado tem acesso a recursos compartilhados do ambiente de computação durante um intervalo de tempo fornecido a uma unidade de processamento central de hóspedes na qual o sistema operacional convidado é executado, sendo o período de cortesia distinguível do intervalo de tempo.
4. Sistema de computador, de acordo com a reivindicação 3, caracterizado pelo fato de que o período de cortesia termina prematuramente o intervalo de tempo.
5. Sistema de computador, de acordo com a reivindicação 3, caracterizado pelo fato de que o período de graça fornece um período além do intervalo de tempo no qual a primeira função é executada.
6. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira função compreende um dentre: concluir uma unidade despachada em execução em um processador no qual o sistema operacional convidado é executado; ou tornando a unidade despachável novamente despachável em outro processador do ambiente de computação.
7. Sistema de computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o método compreende ainda: indicando pelo sistema operacional convidado a conclusão da primeira função durante o período de graça; e fornecendo uma indicação ao sistema operacional convidado na próxima vez em que o sistema operacional convidado executar a primeira função concluída durante o período de graça.
8. Método para facilitar o processamento em um ambiente de computação, o referido método caracterizado pelo fato de que compreende: fornecer por um sistema operacional host a um sistema operacional convidado que executa nos um ou mais processadores virtuais uma indicação de instalação de faixa de aviso instalada indicando a instalação de uma instalação de faixa de aviso no ambiente de computação, a indicação de instalação a ser obtida pelo sistema operacional convidado, e a facilidade de rastreamento de aviso para fornecer ao sistema operacional convidado um período de graça para executar uma primeira função, sendo o período de graça uma duração predeterminada não extensível, em que a primeira função é concluir a execução de uma unidade despachada, parando a unidade despachada em um ponto em que a unidade despachável é reconstituível e / ou movendo a unidade despachável para outro processador convidado; obter, pelo sistema operacional host com base no fornecimento da indicação de que um recurso de rastreamento de aviso está instalado, uma indicação não solicitada de que o sistema operacional convidado se registrou para o recurso de rastreamento de aviso, o registro compreendendo uma indicação ao sistema operacional do host de que o o sistema operacional convidado compreende um protocolo da instalação de rastreamento de aviso e pretende participar do serviço de rastreamento de aviso, de modo que o sistema operacional convidado normalmente honre a notificação, tornando a unidade despachada atual indisponível em outra CPU convidada da configuração do hóspede quando necessário; habilitar, com base na obtenção da indicação de que o sistema operacional convidado se registrou, o recurso de rastreamento de aviso para o sistema operacional convidado; fornecer pelo sistema operacional host ao sistema operacional convidado uma notificação de faixa de aviso; com base na notificação da faixa de aviso, iniciando pelo sistema operacional convidado a primeira função dentro do período de graça; e executando pelo sistema operacional host uma segunda função subsequente ao período de graça.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o sistema operacional convidado tem acesso a recursos compartilhados do ambiente de computação durante um intervalo de tempo fornecido a uma unidade de processamento central de convidado na qual o sistema operacional convidado é executado, sendo o período de cortesia distinguível do intervalo de tempo.
10. Método, de acordo com a reivindicação 8, caracterizado pelo fato de compreender ainda: indicando pelo sistema operacional convidado a conclusão da primeira função durante o período de graça; e fornecendo uma indicação ao sistema operacional convidado na próxima vez em que o sistema operacional convidado executar a primeira função concluída durante o período de graça.
11. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o registro é realizado por meio de uma instrução de Diagnóstico, a instrução de Diagnóstico compreende um parâmetro de registro para sinalizar que o sistema operacional convidado entende uma interrupção da faixa de aviso da instalação da faixa de aviso.
12. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o período de cortesia é distinguível de um horário fornecido a um processador no qual o sistema operacional convidado é executado, tendo o sistema operacional convidado acesso a recursos compartilhados do ambiente de computação durante o horário e em que a cortesia período fornece um período além da fatia de tempo, em que qualquer parte do período usada pelo sistema operacional convidado para executar a primeira função é cobrada por uma fatia de tempo seguinte para o sistema operacional convidado.
13. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o método compreende ainda: determinar se o sistema operacional convidado saiu voluntariamente antes do vencimento do período de graça; com base na determinação do sistema operacional convidado que saiu voluntariamente antes do término do período de graça, fornecendo ao sistema operacional convidado, na próxima vez que o sistema operacional convidado for executado, um feedback positivo indicando que o voluntário saiu antes do término do período de graça; e com base na determinação do sistema operacional convidado, com atraso na saída voluntária antes da expiração do período de graça, fornecendo ao sistema operacional convidado, na próxima vez que o sistema operacional convidado for executado, uma indicação de feedback de exceção indicando atraso na saída voluntária.
14. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que o método compreende ainda: determinar, com base em uma condição de interrupção do timer de um timer do sistema operacional host ou em uma solicitação de intervenção da faixa de aviso, se um indicador de controle ativo do período de cortesia é definido; com base no indicador de controle ativo do período de graça não definido, definindo o indicador de controle ativo do período de graça; salvar um valor atual do timer do sistema operacional host como um valor salvo; definir o cronômetro do sistema operacional host para o período de graça; determinar se o sistema operacional convidado está ativado para o recurso de rastreamento de aviso; e com base na determinação de que o sistema operacional convidado esteja ativado, notificando o sistema operacional convidado que o período de graça foi iniciado.
BR112014017827-5A 2012-01-18 2012-11-13 Facilidade de interrupção de faixa de aviso BR112014017827B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/352,509 2012-01-18
US13/352,509 US8850450B2 (en) 2012-01-18 2012-01-18 Warning track interruption facility
PCT/IB2012/056371 WO2013108091A1 (en) 2012-01-18 2012-11-13 Warning track interruption facility

Publications (3)

Publication Number Publication Date
BR112014017827A2 BR112014017827A2 (pt) 2017-06-20
BR112014017827A8 BR112014017827A8 (pt) 2017-07-11
BR112014017827B1 true BR112014017827B1 (pt) 2021-10-05

Family

ID=48780918

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014017827-5A BR112014017827B1 (pt) 2012-01-18 2012-11-13 Facilidade de interrupção de faixa de aviso

Country Status (17)

Country Link
US (4) US8850450B2 (pt)
EP (1) EP2805235B1 (pt)
JP (1) JP6214558B2 (pt)
KR (1) KR101625314B1 (pt)
CN (1) CN104054053B (pt)
BR (1) BR112014017827B1 (pt)
CA (1) CA2862147C (pt)
ES (1) ES2768277T3 (pt)
HK (1) HK1201350A1 (pt)
IL (1) IL231838A0 (pt)
IN (1) IN2014CN04835A (pt)
MX (1) MX346007B (pt)
RU (1) RU2577470C2 (pt)
SG (1) SG11201402084VA (pt)
TW (1) TWI550516B (pt)
WO (1) WO2013108091A1 (pt)
ZA (1) ZA201400731B (pt)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9753980B1 (en) * 2013-02-25 2017-09-05 EMC IP Holding Company LLC M X N dispatching in large scale distributed system
US9984083B1 (en) 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9251088B2 (en) 2013-10-30 2016-02-02 Globalfoundries Inc. Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching 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
US9411979B2 (en) * 2014-08-07 2016-08-09 Vmware, Inc. Embedding secret data in code
US9398019B2 (en) 2014-08-07 2016-07-19 Vmware, Inc. Verifying caller authorization using secret data embedded in code
US9800519B2 (en) * 2014-08-21 2017-10-24 Microsoft Technology Licensing, Llc Equitable sharing of system resources in workflow execution
US10922402B2 (en) 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
US9898289B2 (en) 2014-10-20 2018-02-20 International Business Machines Corporation Coordinated start interpretive execution exit for a multithreaded processor
US9411629B1 (en) 2015-03-10 2016-08-09 International Business Machines Corporation Reducing virtual machine pre-emption in virtualized environment
US10754676B2 (en) * 2016-01-20 2020-08-25 International Business Machines Corporation Sharing ownership of an input/output device using a device driver partition
CN107315636B (zh) * 2016-04-26 2020-06-05 中国移动通信集团河北有限公司 一种资源可用度预警方法及装置
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
TWI733745B (zh) * 2017-01-23 2021-07-21 香港商阿里巴巴集團服務有限公司 核心模式的虛擬機器(kvm)虛擬化下處理i/o請求的方法和裝置
US10348592B2 (en) * 2017-02-08 2019-07-09 Dell Products L.P. Systems and methods for dynamic availability of executable endpoints
CN108459898B (zh) * 2017-02-20 2022-01-14 阿里巴巴集团控股有限公司 一种资源回收方法及装置
US10614019B2 (en) 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
CN107423427A (zh) * 2017-08-02 2017-12-01 上海数烨数据科技有限公司 一种利用大数据在限定区域内人员失联判定系统及方法
JP6903275B2 (ja) * 2017-09-14 2021-07-14 オムロン株式会社 制御装置および制御方法

Family Cites Families (49)

* 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
JPS643634A (en) * 1987-06-26 1989-01-09 Canon Kk Flashing device
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
JPH08314740A (ja) * 1995-05-16 1996-11-29 Fuji Xerox Co 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
EP0863462B8 (en) 1997-03-04 2010-07-28 Panasonic Corporation Processor capable of efficiently executing many asynchronous event tasks
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
US6131166A (en) * 1998-03-13 2000-10-10 Sun Microsystems, Inc. System and method for cross-platform application level power management
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
EP1116086B1 (en) * 1998-09-22 2007-02-21 Avocent Huntsville Corporation System for accessing personal computers remotely
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 株式会社デンソー 割込コントローラ及びマイクロコンピュータ
WO2001082075A2 (en) 2000-04-25 2001-11-01 Icplanet Acquisition Corporation System and method for scheduling execution of cross-platform computer processes
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 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US7120794B2 (en) * 2003-10-29 2006-10-10 Qualcomm Inc. System for invoking a privileged function in a device
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
JP2005250550A (ja) * 2004-03-01 2005-09-15 Sharp Corp アプリケーション制御装置
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
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
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置
US7725531B1 (en) 2006-09-18 2010-05-25 George Mason Intellectual Properties, Inc. Single use server system
EP2527980A3 (en) 2007-06-19 2013-01-09 VirtualLogix SA Load balancing
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
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
JP4862056B2 (ja) 2009-03-16 2012-01-25 株式会社東芝 仮想計算機管理機構及び仮想計算機システムにおけるcpu時間割り当て制御方法
JP5428581B2 (ja) * 2009-06-30 2014-02-26 富士通株式会社 仮想マシン管理プログラム及び仮想マシン管理方法
TW201105059A (en) * 2009-07-28 2011-02-01 Tomtom Int Bv Alert content reception apparatus, alert content communications system and method of acquiring alert content
JP2011060055A (ja) * 2009-09-11 2011-03-24 Fujitsu Ltd 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム
JP5487951B2 (ja) * 2009-12-22 2014-05-14 富士通株式会社 運用管理プログラム、運用管理装置および運用管理方法
US20110162087A1 (en) * 2009-12-31 2011-06-30 Microsoft Corporation Virtualizing remote presentation session client licensing with a server-based broker
US9851969B2 (en) * 2010-06-24 2017-12-26 International Business Machines Corporation Function virtualization facility for function query of a processor
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
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
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

Also Published As

Publication number Publication date
IL231838A0 (en) 2014-05-28
TWI550516B (zh) 2016-09-21
BR112014017827A2 (pt) 2017-06-20
US9110741B2 (en) 2015-08-18
EP2805235A4 (en) 2015-12-30
US20150339174A1 (en) 2015-11-26
US20130185735A1 (en) 2013-07-18
ES2768277T3 (es) 2020-06-22
ZA201400731B (en) 2015-10-28
US20140317325A1 (en) 2014-10-23
HK1201350A1 (en) 2015-08-28
JP2015507808A (ja) 2015-03-12
US8850450B2 (en) 2014-09-30
EP2805235A1 (en) 2014-11-26
CN104054053B (zh) 2018-08-28
KR20140103287A (ko) 2014-08-26
RU2012148403A (ru) 2014-05-20
CA2862147A1 (en) 2013-07-25
BR112014017827A8 (pt) 2017-07-11
SG11201402084VA (en) 2014-09-26
AU2012366769A1 (en) 2014-07-17
JP6214558B2 (ja) 2017-10-18
MX2014008466A (es) 2014-08-27
US9262236B2 (en) 2016-02-16
MX346007B (es) 2017-02-28
TW201351289A (zh) 2013-12-16
RU2577470C2 (ru) 2016-03-20
CA2862147C (en) 2021-01-12
US20130185739A1 (en) 2013-07-18
IN2014CN04835A (pt) 2015-09-18
WO2013108091A1 (en) 2013-07-25
CN104054053A (zh) 2014-09-17
US9098478B2 (en) 2015-08-04
KR101625314B1 (ko) 2016-06-07
EP2805235B1 (en) 2019-12-25

Similar Documents

Publication Publication Date Title
BR112014017827B1 (pt) Facilidade de interrupção de faixa de aviso
BR112016021602B1 (pt) Configuração de modo de arquitetura em um sistema de computador
ES2598816T3 (es) Uso de una funcionalidad de interrupción con margen de advertencia por un programa
BR112014017826B1 (pt) Fornecimento por um programa para outro programa de acesso a uma facilidade de faixa de aviso
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.