BR112016022282B1 - Equipamento, método e suporte físico para execução de segmentos múltiplos em computador - Google Patents

Equipamento, método e suporte físico para execução de segmentos múltiplos em computador Download PDF

Info

Publication number
BR112016022282B1
BR112016022282B1 BR112016022282-2A BR112016022282A BR112016022282B1 BR 112016022282 B1 BR112016022282 B1 BR 112016022282B1 BR 112016022282 A BR112016022282 A BR 112016022282A BR 112016022282 B1 BR112016022282 B1 BR 112016022282B1
Authority
BR
Brazil
Prior art keywords
segments
segment
physical
logical
guest
Prior art date
Application number
BR112016022282-2A
Other languages
English (en)
Other versions
BR112016022282A2 (pt
Inventor
Lisa Cranton Heller
Fadi Yusuf Busaba
Mark S. Farrell
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 BR112016022282A2 publication Critical patent/BR112016022282A2/pt
Publication of BR112016022282B1 publication Critical patent/BR112016022282B1/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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Stored Programmes (AREA)

Abstract

EQUIPAMENTO, MÉTODO E PRODUTO PROGRAMA DE COMPUTADOR PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR. De acordo com um aspecto, um equipamento ou sistema de computador inclui uma configuração com uma máquina ativada para operar no modo tarefa única (ST) e no modo multitarefa (MT). Além disso, a máquina inclui segmentos físicos. A máquina está configurada para realizar um método que inclui a emissão de instrução iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada com segmentos lógicos múltiplos no núcleo. A entidade convidada inclui toda ou parte da máquina convidada virtual (VM), e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de todos os segmentos lógicos para um dos segmentos físicos correspondente, inicializando cada um dos segmentos físicos mapeados com um estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo no modo MT.

Description

ANTECEDENTES DA INVENÇÃO
[001] A presente invenção se relaciona de forma geral à função multitarefa (MT) e, mais especificamente, à implementação de máquina para execução de segmentos múltiplos num computador.
[002] A multitarefa (MT) fornece meios para aumentar o número de segmentos processadores que podem opera rem paralelo dentro de um único núcleo processador sem a necessidade de adicionar núcleos adicionais. Idealmente, a MT fornece esta capacidade aumentada por ter um ou mais segmentos utilizando partes do hardware do núcleo que não estão sendo utilizados no mento por outro(s) segment(s) processando no mesmo núcleo. Por exemplo, durante a latência causada por cache-miss ou outro atraso num segmento, um ou mais outros segmentos podem utilizar os recursos do núcleo, aumentando assim a utilização dos recursos. Ainda que, na prática, esses resultados compartilhados resultem em alguma interferência entre os segmentos e necessitem algum hardware adicional, a MT ainda fornece a capacidade de realizar cada trabalho do segmento utilizando menos hardware do que seria necessário se cada segmento fosse processado no seu próprio hardware do núcleo isolado. Com frequência, benefício adicional pode ser originado da MT quando o compartilhamento dos recursos de hardware entre os segmentos também diminuem a tensão geral no Sistema de computador para fornecer informações, tais como dados da memória, de dois únicos núcleos.
[003] Tipicamente, embora a MT forneça economia de hardware, a adição de outro segment de trabalho consome o mesmo custo de coordenação no nível do hypervisor que seria necessário para fornecer capacidade aumentada utilizando um núcleo adicional, separado. Em muitas situações, uma vez que uma taxa de conversão e alcançada, a atividade auxiliar para coordenar recursos entre os segmentos de trabalho, quer processada em núcleo único ou compartilhado, é substancial e pode diminuir ou até mesmo superar os benefícios vistos pela capacidade de processar um segmento de trabalho independente. Isso significa, em geral, que há mais atividades adicionais gerenciadas à medida que a quantidade de coisas para gerenciar aumenta.
SUMÁRIO DA INVENÇÃO
[004] Concretizações incluem sistema, método e produto programa de computador para colocar em execução uma máquina virtual (VM) convidada multissegmentada. De acordo com um aspecto, o sistema de computador inclui uma configuração com uma máquina ativada para operar no modo tarefa única (ST) e no modo multitarefa (MT). Além disso, a máquina inclui segmentos físicos. A máquina está configurada para realizar um método que inclui uma instrução iniciar- execução-virtual (iniciar-VE) para colocar em execução uma entidade convidada compreendendo segmentos lógicos múltiplos no núcleo. A entidade convidada inclui, completa ou parcialmente, uma VM convidada, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o segmento físico correspondente, inicializando cada um dos segmentos físicos com o estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo no modo MT.
[005] De acordo com outro aspecto, é fornecido um método implementado em computador para colocar em execução uma máquina virtual (VM) convidada multissegmentada. A configuração inclui uma máquina com núcleo único ativado para operar em modo tarefa única (ST) e em modo multitarefa (MT). O núcleo inclui segmentos físicos. O método inclui a emissão de uma instrução iniciar- execução-virtual (start-VE) para colocar em execução uma entidade convidada compreendendo segmentos lógicos múltiplos no núcleo. A entidade convidada inclui, completa ou parcialmente, uma VM convidada, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o segmento físico correspondente, inicializando cada um dos segmentos físicos com o estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo no modo MT.
[006] Outro aspecto inclui um produto programa de computador para colocar em execução uma máquina virtual (VM) convidada multissegmentada. A configuração inclui uma máquina com núcleo único ativado para operar em modo tarefa única (ST) e em modo multitarefa (MT). Além disso, a máquina inclui segmentos físicos. O produto programa de computador inclui uma mídia de armazenamento para leitura em computador com instruções de programa embutidas, em que a mídia de armazenamento para leitura em computador não é um sinal. As instruções de programa são legíveis por um circuito de processamento que permite que o circuito de processamento realize um método. O método inclui a emissão de uma instrução iniciar-execução-virtual (start-VE) para colocar em execução uma entidade convidada compreendendo segmentos lógicos múltiplos no núcleo. A entidade convidada inclui, completa ou parcialmente, uma VM convidada, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o segmento físico correspondente, inicializando cada um dos segmentos físicos com o estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo no modo MT.
DESCRIÇÃO RESUMIDA DAS VÁRIAS EXIBIÇÕES DOS DESENHOS
[007] O assunto, considerado concretizações, está especificamente destacado e reivindicado nas reivindicações no final da especificação. O acima exposto e outras características e vantagens das concretizações são evidentes a partir da descrição detalhada tomada em conjunto com os desenhos anexos nos quais: A FIG. 1 retrata um ambiente computacional que pode ser implementado de acordo com uma concretização; A FIG. 2 retrata um processador físico que pode ser implementado de acordo com uma concretização; A FIG. 3 retrata um ambiente computacional que pode ser implementado de acordo com uma concretização; A FIG. 4 retrata uma descrição de estado de um segmento lógico multissegmentado de acordo com uma concretização; A FIG. 5 retrata um diagrama de blocos de uma máscara de validade de um segmento (TVM) de acordo com uma concretização; A FIG. 6 retrata um grupo de descrição de estado de deslocamento fixo de acordo com uma concretização; A FIG. 7 retrata um grupo de descrição de estado especificado como uma lista de endereço de acordo com uma configuração; A FIG. 8 retrata um grupo de descrição de estado especificado como uma lista vinculada de acordo com uma concretização; A FIG. 9 retrata um grupo de descrição de estado especificado como uma lista circular ou em anel de acordo com uma concretização; A FIG. 10 retrata um processo de execução do núcleo de acordo com uma concretização; A FIG. 11 retrata uma saída coordenada da execução virtual de acordo com uma concretização; A FIG. 12 retrata um diagrama de blocos de uma área de controle de sistema de acordo com uma concretização; A FIG. 13 retrata um fluxo de processo para a coordenação entre núcleos multissegmentados de acordo com uma concretização; A FIG. 14, que inclui as FIGs. 14A e 14B, retrata a implementação de uma máquina de execução de núcleo de acordo com uma concretização; A FIG. 15, que inclui as FIGs. 15A e 15B, retrata a implementação de uma máquina de saída coordenada da execução virtual de acordo com uma concretização; e A FIG. 16 retrata uma mídia de leitura por computador de acordo com uma concretização.
DESCRIÇÃO DETALHADA
[008] Concretizações descritas neste documento podem ser utilizadas para reduzir o auxílio do gerenciamento do hipervisor num ambiente multitarefa (MT). Conforme aqui descrito, o gerenciamento de segmentos múltiplos pode ser dividido entre o hipervisor que gerencia os segmentos múltiplos como um núcleo lógico único e a máquina que gerencia as interações entre os segmentos múltiplos quando eles acessam recursos do núcleo físico. Isso pode resultar na redução substancial dos custos fixos da multitarefa permitindo que o hipervisor gerencie grande parte dos recursos de infraestrutura do hipervisor numa base de núcleo lógica, e permitir que a máquina gerencie outros recursos em base mais granular, de segmento. Uma concretização inclui uma instrução de execução do núcleo que pode ser executada por um hipervisor que está processando em modo tarefa única (ST). A execução da instrução para colocar em execução o núcleo, aqui referenciada como “instrução iniciar-VE com MT especificada”, pode fazer com que os segmentos lógicos convidados múltiplos que compõem, no todo ou em parte, uma máquina virtual (VM) convidada sejam executados num único núcleo físico. Numa concretização, a instrução utilizada pelo hipervisor para colocar em execução o convidado especifica se o convidado a ser executado é de segmento único ou multissegmentado.
[009] As concretizações aqui descritas podem incluir estruturas, tais como máscara de validade do segmento, para indicar quais segmentos lógicos dentro de um núcleo lógico convidado estão válidos no momento e um grupo de descrição de estado que inclui um anel de descrição de estado para gerenciar a execução de um núcleo lógico multissegmentado. Além disso, as descrições de estado e tipos de campo primários e secundários (e.g., primário, núcleo-comum, segmento específico) podem ser implementados para permitir o gerenciamento eficiente dos recursos do computador quando um núcleo lógico com segmentos múltiplos é executado. Mais ainda, pode ser fornecida uma saída coordenada na qual todos os segmentos dentro de um núcleo lógico saiam da execução virtual ao mesmo tempo para simplificar as funções de gerenciamento tanto do hipervisor como do núcleo lógico.
[0010] As concretizações podem incluir uma estrutura de controle mantida pelo hipervisor que aqui será denominada como área de sistema de controle orientada ao núcleo (COSCA). A COSCA é utilizada para que o hipervisor e a máquina gerenciem determinadas funções que podem afetar múltiplos processadores lógicos na configuração convidada. Uma concretização da COSCA está implementada como uma estrutura em árvore em que as folhas representam núcleos lógicos e cada folha contém uma lista correspondente aos segmentos daquele núcleo. A estrutura COSCA pode conter campos (e.g., endereços de descrição de estado) que permitam que o hipervisor acesse facilmente as descrições de estado para todos os segmentos num núcleo determinado.
[0011] As concretizações podem também incluir uma implementação de máquina da execução do núcleo (e.g., a instrução iniciar-VE com MT especificada) em que o milicódigo localizado na máquina pode ser utilizado para gerenciar o processo de execução do núcleo.
[0012] Conforme utilizado neste documento, o termo milicódigo é usado para se referir ao Código Interno Licenciado que é integral à operação do hardware processador. O milicódigo é utilizado pela máquina quando ela está processando no modo de execução, aqui referenciado como milimodo.
[0013] Quando um núcleo lógico convidade inclui segmentos múltiplos, um dos segmentos lógicos é designado segmento primário e os restantes são designados segmentos secundários. O termo “primário” se aplica ao segmento lógico. Um segmento físico não é nem um segmento primário e nem secundário da perspectiva de hardware; ele se torna um segmento primário assim que é emitida nele uma instrução iniciar-VE com MT especificada. A razão para esta distinção temporária no nível físico é porque quando o controle é devolvido ao hospedeiro, isso é feito característicamente no segmento primário, isto é, o controle é devolvido ao hipervisor no mesmo segmento físico em que a iniciar-VE foi emitida.
[0014] Numa concretização, o milicódigo pode ser utilizado para carregar quase o estado inteiro de qualquer segmento (primário ou secundário) de qualquer outro segmento (primário ou secundário). Em concretizações, o milicódigo usa esta flexibilidade de estado de carregamento para carregar uma parte muito pequena de outro segmento a fim de alavancar a eficiência potencial que pode ser obtida pelo carregamento paralelo de seu próprio estado por dado segmento. Alguns comandos (tal como expurgar translation lookaside buffer ou “PTLB”) e recursos podem ser aplicados a todos os segmentos, e isto permite que eles sejam executados ou carregados a partir de um único segmento somente. Esse procedimento não apenas economiza tempo para o comando ou para a própria carga mas, em alguns casos, também economiza em testes requeridos para determinar se a ação é de fato necessária. Essa flexibilidade incluída no projeto pode permitir que o milicódigo ajuste constantemente o algoritimo utilizado para suportar a execução do núcleo, na medida que o projeto, o desenvolvimento e o ciclo de teste avance. Podem ser fornecidos mecanismos para iniciar e parar eficientemente a execução do segmento. Além disso, o milicódigo pode também ser utilizado para dar conta de uma situação em que o firmware interno esteja processando num segmento que esteja visualizado como inválido no nível do software.
[0015] Concretizações adicionais estão direcionadas à implementação de máquinas de uma saída coordenada de um núcleo lógico convidado em MT retornando para um hospedeiro ST (e.g., um hipervisor). Numa concretização, o milicódigo é utilizado para sincronizar o sistema, e isso inclui a coordenação de todos os segmentos diferentes levando em conta cada um de seus estados atuais. Uma concretização pode também incluir a manipulação de interrupções de alta prioridade enquanto são retidas interrupções de baixa prioridade que podem atrasar a saída. O desligamento de segmentos secundários pode ser feito de forma que permita o uso mais eficiente dos recursos do núcleo depois que a saída está completa. Por exemplo, o milicódigo pode desativar determinadas interrupções para evitar que recursos do núcleo sejam utilizados para executar o milicódigo manipulador de interrupção quando ele não for necessário. O milicódigo pode ainda ser utilizado para indicar que certos registros físicos não estão mais sendo utilizados, então, estão liberados para utilização pelo ST que está processando.
[0016] Conforme utilizado neste documento, o termo “segmento” se refere a um fluxo único de instrução e a seu estado associado. Isto é, em nível de arquitetura, cada segmento lógico representa uma CPU independente ou um processador. Em nível de hardware, um segmento físico é a execução de um fluxo de instrução associado a um segmento lógico, combinado com a manutenção daquele estado de convidado quando aquele segmento é executado. É a manutenção daquele estado de segmento pela máquina que reduz o gerenciamento necessário no nível do hipervisor. O número total de segmentos lógicos disponíveis para utilização pelos núcleos lógicos é limitado pelo número total de segmentos físicos disponíveis para os núcleos físicos.
[0017] Conforme aqui utilizado, o termo “núcleo físico” se refere a uma unidade de processamento hardware que executa um ou mais fluxos de instrução independentes ou segmentos, mas compartilha muitos recursos de base tais como unidades de execução e caches de baixo nível. Esse compartilhamento pode ser feito de vários modos, incluindo que cada segmento utilize os mesmos recursos de hardware em momentos independentes ou que os recursos sejam logicamente compartilhados com cada entrada física marcada com um identificador de segmento. Uma sinergia adequada entre os segmentos, por exemplo um segmento que necessite frequentemente do recurso A, mas só raramente do recurso B e outro segmento que caracteristicamente utilize o recurso B, mas não o recurso A, pode aperfeiçoar a eficiência do compartilhamento. Conforme aqui utilizado, o termo “máquina” se refere ao hardware incluído no núcleo físico, bem como o milicódigo e outro hardware utilizado em apoio ao núcleo físico.
[0018] Conforme aqui utilizado, os termos “VM convidada” e “convidado(a)” são utilizados de forma intercambiável para denominar uma única configuração convidada que pode incluir uma única CPU ou CPUs múltiplas. Conforme aqui utilizado, o termo “núcleo lógico” se refere ao grupo de segmentos lógicos convidados ou CPUs que estão definidas como colocadas em execução juntas como parte de uma instrução iniciar-VE em que a MT está especificada. Uma VM convidada pode ser constituída de um núcleo lógico único (ST ou MT) ou núcleos lógicos múltiplos (cada um deles podendo ser ST ou MT).
[0019] Conforme aqui utilizado, o termo “software” se refere tanto ao programa hipervisor (e.g. PR/SM ou zVM) como ao sistema operacional convidado ou ao programa aplicativo que é executado como resultado da instrução iniciar-VE.
[0020] Conforme aqui utilizado, os termos "hipervisor" e "hospedeiro" se referem ao programa que gerencia os recursos do sistema e coloca em execução o(s) processador(es) lógico(s) convidado(s) para ser(em) processado(s) no hardware físico.
[0021] O operando da instrução iniciar-VE utilizada para colocar em execução um convidado aponta para uma descrição de estado ou grupo de descrições de estado que define o estado daquele processador ou núcleo convidado. A própria descrição de estado possui apontadores para “blocos satélite” que podem ser visualizados como uma extensão da descrição de estado e incluem informações adicionais que definem mais a fundo o estado daquele núcleo ou processador convidado. Conforme utilizado aqui, o termo “descrição de estado” se refere não somente à própria descrição de estado, mas também àqueles blocos satélite. A área de sistema de controle orientada ao núcleo (COSCA), um desses blocos satélite, está ilustrada na FIG. 12.
[0022] Passando agora à FIG. 1,é mostrado de forma geral um ambiente computacional 100 que pode ser implementado por uma concretização exemplificativa. O ambiente computacional 100 pode ser baseado, por exemplo, na Arquitetura z oferecida pela International Business Machines Corporation, Armonk, Nova York. A Arquitetura z está descrita na publicação da IBM® intitulada “ z/Architecture Principles of Operation ”, Publicação da IBM N° SA22-7832-09, de agosto de 2012, incorporada a este documento na sua totalidade como referência. Num exemplo, um ambiente computacional baseado na Arquitetura z inclui um servidor eServer, Série z, oferecido pela International Business Machines Corporation, Armonk, Nova York.
[0023] Como exemplo, o ambiente computacional 100 pode incluir um complexo processador 102 acoplado a um controlador de sistema 120. O complexo processador 102 pode incluir, por exemplo, uma ou mais partições 104 (e.g., partições lógicas LPl-LPn), um ou mais núcleos físicos 106 (e.g., Núcleo l- Núcleo m), e um hipervisor nível-0 108 (e.g., gerenciador de partição lógica), cada um dos quais descrito abaixo.
[0024] Cada partição lógica 104 pode ser capaz de funcionar como um sistema separado. Isto é, cada partição lógica 104 pode ser restaurada independentemente, carregada inicialmente com um sistema operacional 110, se desejado, e operar com programas diferentes. Um sistema operacional 110 ou programa aplicativo processando numa partição lógica 104 pode parecer ter acesso a um sistema total e completo, mas na realidade, somente uma parte dele está disponível. Uma combinação de hardware e Código Interno Licenciado (comumente referenciado como microcódigo ou milicódigo ou firmware) impede um programa numa partição lógica 104 de interferir com um programa numa partição lógica diferente 104. Isso permite que várias partições lógicas diferentes 104 operem em núcleos físicos únicos ou múltiplos 106 em modo de tempo fracionado. Numa concretização, cada núcleo físico inclui um ou mais processadores centrais (também denominados aqui “segmentos físicos”). No exemplo mostrado na FIG. 1, cada partição lógica 104 possui um sistema operacional residente 110, que pode diferir por uma ou mais partições lógicas. O sistema operacional 110 processando em cada partição lógica 104 é um exemplo de máquina virtual ou de configuração convidada. Numa concretização, o sistema operacional 110 é o sistema operacional z/OS®, oferecido pela International Business Machines Corporation, Armonk, New York.
[0025] Os núcleos físicos 106 incluem recursos de processador físico que estão alocados às partições lógicas 104. Uma partição lógica 104 pode incluir um ou mais processadores lógicos, cada um representando todos ou uma parte dos recursos de processador físico alocados à partição 104. Os núcleos físicos 106 podem ou ser dedicados aos núcleos lógicos de uma partição particular 104 de forma que os recursos de processador físico dos núcleos subjacentes 106 sejam reservados para aquela partição 104; ou compartilhados com os núcleos lógicos de uma outra partição 104, de modo que os recursos do processador físico do(s) núcleo(s) subjacente(s) fiquem potencialmente disponíveis para uma outra partição 104.
[0026] Na concretização mostrada na FIG. 1, as partições lógicas 104 são gerenciadas por hipervisor nível-0 108 que é implementado por firmware processando nos núcleos físicos 106. As partições lógicas 104 e o hipervisor 108 compreendem, cada um, um ou mais programas residindo nas respectivas partes do armazenamento central (memória) associadas aos núcleos físicos 106. Um exemplo de hipervisor 108 é o Processor Resource/Systems Manager (PR/SM™), oferecido pela Intemational Business Machines Corporation, Armonk, New York.
[0027] O controlador do sistema 120, que na FIG. 1 está acoplado ao complexo processador central 102, pode incluir lógica centralizada responsável pelo arbitramento entre solicitações emitidas por processadores diferentes. Por exemplo, quando o sistema controlador 120 recebe uma solicitação de acesso à memória, determina se o acesso àquela localização de memória é permitido e, se for este o caso, fornece os conteúdos daquela localização de memória ao complexo processador central 102 enquanto mantém a consistência da memória entre os processadores dentro daquele complexo.
[0028] Passando agora à FIG. 2, é mostrado, em forma geral e de acordo com uma concretização, um diagrama de blocos de um circuito de processamento 200 para a implementação de uma máquina ou núcleo físico, como o núcleo físico 106 na FIG. 1. O circuito de processamento 200 pode incluir um núcleo físico de uma pluralidade de núcleos físicos em um ambiente de multiprocessamento. O circuito de processamento mostrado na FIG. 2 inclui uma unidade de interface de controlador de sistema 202 que pode acoplar o circuito de processamento 200 a outros núcleos e dispositivos periféricos. A unidade de interface de controlador de sistema 202 pode também conectar a Dcache 204, que lê e armazena valores de dados, a Icache 208, que lê instruções de programa, e uma unidade de interface de cache 206 para memória externa, processadores, e outros dispositivos periféricos.
[0029] A Icache 208 pode fornecer o carregamento de fluxos de instruções em conjunção com uma unidade de busca de instrução (IFU) 210, que faz uma busca prévia de instruções e pode incluir capacidade de carga especulativa e de predição de desvio As instruções buscadas podem ser fornecidas a uma unidade de decodificação de instrução (IDU) 212 para decodificá-la em dados de processamento de instrução.
[0030] A IDU 212 pode fornecer as instruções para uma unidade de emissão 214 que pode controlar a emissão das instruções para várias unidades de execução, como uma ou mais unidades de ponto fixo (FXU) 216 para executar operações gerais e uma ou mais unidades de pontos flutuantes (FPU) 218 para executar operações de ponto flutuante. As FPUs 218 podem incluir uma unidade de ponto flutuante binário (BFU) 220, uma unidade de ponto flutuante decimal (DFU) 222, ou qualquer outra unidade de ponto flutuante. A unidade de emissão 214 pode também ser acoplada a uma ou mais unidades de carga/armazenamento (LSU) 228 por meio de um ou mais encadeamentos LSU. Os múltiplos encadeamentos LSU são tratados como unidades de execução para realizar cargas e armazenamento e geração de endereços para desvios. Tanto a LSU 228 como a IFU 210 podem utilizar translation-lookaside-buffer (TLB) 230 para fornecer traduções armazenadas temporariamente para o operando e instrução de endereços.
[0031] A FXU 216 e a FPU 218 são acopladas a vários recursos, tais como registros de propósito geral (GPR) 224 e registros de ponto flutuante (FPR) 226. Os GPR 224 e os FPR 226 fornecem armazenamento de valores de dados para valores de dados carregados e armazenadas da Dcache 204 por uma LSU 228.
[0032] Passando agora à FIG. 3, é mostrado de forma geral um ambiente computacional 300 que pode ser implementado por uma concretização. O ambiente computacional 300 mostrado na FIG. 3 é similar ao ambiente computacional mostrado na FIG. 1 com a adição de um hipervisor 302 de nível-1 sendo executado na partição lógica 104 rotulada LP2. Conforme mostrado na FIG. 3, o hipervisor 302 de nível-1 pode fornecer as mesmas funções de hipervisor descritas previamente com respeito ao hipervisor 108 (também aqui denominado “hipervisor nível-0”), tais como divisão transparente do tempo de recursos entre sistemas operacionais múltiplos (e.g. SO1 314, SO2 312, e SO3 310 processando em máquinas virtuais VM1 304, VM2 306, e VM3 308) e isolamento daqueles sistemas operacionais uns dos outros, dentro da partição lógica 104 rotulada LP2. A concretização mostrada na FIG. 3 inclui três máquinas virtuais como exemplo e outras concretizações podem incluir mais ou menos máquinas virtuais com base nos requisitos de aplicativo.
[0033] Como mostrado na FIG. 3, a partição lógica 104 rotulada LP1 possui um sistema operacional residente 110, e a partição lógica 104 denominada LP2 processa um hipervisor 302 de nível-1 que, por sua vez, cria máquinas virtuais 304 306 308 cada uma das quais processa seu próprio sistema operacional residente 314 312 310. Qualquer das partições lógicas 104 pode processar um hipervisor 302 nível-1. Numa concretização, o hipervisor 302 nível-1 é o hipervisor zNM hypervisor, oferecido pela International Business Machines Corporation, Armonk, New York. Os sistemas operacionais residentes processando nas várias partições lógicas podem diferir e, quando processando subordinados a um hipervisor 302 nível-1, os sistemas operacionais residentes (e.g., sistemas operacionais 314 312 310) dentro de uma partição única 104 (e.g., LP2) podem também diferir. Numa concretização, o sistema operacional 110 na partição lógica 104 denominada LP1 é o sistema operacional z/OS, que é oferecido pela International Business Machines Corporation, Armonk, New York. Numa concretização, os sistemas operacionais 310 e 312 são Linux e o sistema operacional 314 é z/OS.
[0034] Quando um hipervisor 302 nível-1 está processando numa partição lógica 104 pode fornecer a mesma virtualização de recursos fornecida por um hipervisor nível-0, como o hipervisor 108, para partições lógicas 104 para os sistemas operacionais para os sistemas 310 312 314 processando em máquinas virtuais 308 306 304. Similarmente ao primeiro nível, cada máquina virtual pode incluir processadores virtuais múltiplos.
[0035] Núcleos físicos 106 incluem recursos de processador físico que podem ser dedicados ou compartilhados, conforme descrito para a FIG. 1, entre as partições lógicas 104 LP1, LP2, LP3 e LP4. Quando a partição lógica LP2 é executada em um ou mais núcleos físicos, o hipervisor 302 nível-1 pode então compartilhar de forma transparente aqueles recursos entre suas máquinas virtuais VM1 304, VM2 306 e VM3 308. Numa concretização, o hipervisor 108 nível-0 utiliza uma instrução iniciar-VE com MT especificada para executar um hipervisor 302 nível-1 multissegmentado que então utiliza uma instrução iniciar-VE com ST especificada para executar as máquinas virtuais de segmento único VM1 304, VM2 306 e VM3 308. Numa concretização diferente, o hipervisor 108 nível-0 utiliza uma instrução iniciar-VE com ST especificada para executar um hipervisor 302 nível-1 de segmento único que então utiliza uma instrução iniciar-VE com MT especificada para executar máquinas virtuais multissegmentadas VM1 304, VM2 306 e VM3 308. Em outra concretização, tanto o hipervisor 302 nível-1 como suas VMs convidadas 304 306 308 são todos de segmento único.
[0036] Num ambiente de multiprocessamento (MP) convidado, o hipervisor pode manter uma estrutura de controle, chamada área de sistema de controle (SCA), que é utilizada tanto pelo hipervisor como pela máquina para gerenciar certas funções que podem afetar processadores lógicos múltiplos na configuração convidada. A mesma origem SCA (SCAO) está especificada na descrição de estado para todos os processadores convidados na configuração ou na máquina virtual. Numa concretização, esta área pode incluir uma área comum (usada, em geral, para coordenar funções estendidas da configuração convidada) e entradas específicas de processador separadas. A área comum, por exemplo, mantém informações sobre quais processadores virtuais dentro da configuração convidada são válidos. A área separada, de processador específico dentro da SCA pode, por exemplo, ser utilizada para interpretar ou emular funções convidadas inter-processador, tais como interrupção inter-processador ou para fornecer facilmente indicadores acessíveis para a descrição de estado de cada processador lógico. Numa concretização a SCA é utilizada para ST estendida para uso em MT mediante a adição de entradas específicas de segmento para cada segmento convidado potencial.
[0037] Uma configuração de execução de núcleo pode fazer com que um hipervisor que está processando em segmento único execute um convidado multissegmentado em seu núcleo utilizando uma variação da instrução iniciar-VE, às vezes referenciada como iniciar execução virtual multissegmentada (iniciar- MVE). Cada segmento no convidado multissegmentado pode representar uma unidade de processamento central (CPU) lógica convidada, ou segmento convidado. A instrução iniciar-VE pode ativar a execução multitarefa (MT) convidada no núcleo físico, por meio de um campo de controle na descrição de estado. O operando da instrução iniciar-VE quando utilizado para execução no núcleo pode especificar ou uma única descrição de estado que contém o estado de todos os segmentos convidados ou um grupo de descrições de estado cada uma das quais, por exemplo, representa o estado de um único segmento convidado. Numa concretização, o núcleo lógico inclui este grupo de descrições de estado. A execução no núcleo precisa de uma entrada de execução virtual para carregar o estado do núcleo lógico e de cada um desses segmentos lógicos convidados num segmento de núcleo físico e seus segmentos. Esses segmentos podem ser fluxos de instrução que operam independentemente uns dos outros. Em várias concretizações, um grupo de descrições de estado pode ser especificado de várias maneiras incluindo desvios fixos de um para os outros, como uma lista de endereços de descrição de estado ou descrições de estado, ou como uma lista circular (anel) de descrições de estado que se aplicam ao núcleo com cada descrição de estado naquele grupo representando um segmento convidado separado. Tais técnicas permitem livre acesso pelo hipervisor e pela máquina para outros segmentos dentro do núcleo lógico e permitem que campos que se aplicam ao núcleo lógico inteiro sejam mantidos num único lugar.
[0038] O SO convidado pode utilizar segmentos múltiplos simplesmente emitindo uma instrução de definição MT que ativa multitarefa no convidado. Isso permite que o SO convidado trate esses novos segmentos como adicionais, CPUs independentes, e os gerencie como seria feito na ausência de multissegmentação. Além disso, o SO convidado pode usar esses segmentos de forma a maximizar o fato de que eles compartilham um núcleo ou pode fazê-los operar de forma mais independente. Isso tudo é transparente para o hipervisor e a máquina. O hipervisor então fornece esses segmentos adicionais para o SO convidado enquanto o próprio hipervisor continua a processar num segmento único por núcleo e a gerenciar grande parte do ambiente MT convidado com base no núcleo. A ativação do modo multitarefa está descrita em mais detalhes no Pedido de Patente dos EUA 14/226895 (nossa referência POU920140064US1) entitulado "Thread Context Preservation in a Multithreading Computer System," (Preservação de Contexto de Segmento num Sistema de Computador Multitarefa), protocolado simultaneamente com este documento, cujo conteúdo é aqui incorporado como referência na sua totalidade. Está incluída uma cópia no protocolo.
[0039] Numa concretização de execução de núcleo, a descrição de estado que está especificada como operando da instrução iniciar-VE com MT especificada é uma descrição de estado “primária” e o segmento lógico convidado associado é o segmento “primário”. As outras descrições de estado no grupo são referenciadas neste documento como descrições de estado “secundárias” e, se cabível, se aplicam aos segmentos lógicos secundários. Quando o grupo de descrição de estado é implementado ou como uma lista ou anel, pode haver um campo próxima-descrição-de-estado (NSD) na descrição de estado primária que indica para a primeira descrição de estado secundária que, por sua vez, ou 1) indica a próxima descrição de estado secundária no grupo ou 2) contém um valor para indicar o fim de um grupo. O valor NSD na descrição de estado para o último na lista pode ser o endereço da descrição de estado primária, caso em que a lista forma um anel de descrições de estado.
[0040] Numa implementação não-MT, o hipervisor executa um processador lógico convidado (também denominado neste documento “segmento lógico”) num dado núcleo físico num momento. Se o processador lógico determinado está num estado inválido, por exemplo, estado de parada ou em espera desativada, o hipervisor não irá executar aquele convidado. Num ambiente MT, a execução do núcleo permite que o hipervisor execute segmentos convidados múltiplos no núcleo ao mesmo tempo. A fim de acomodar a possibilidade de um ou mais dos segmentos no grupo de descrição de estado daquele núcleo lógico serem inválidos, uma concretização utiliza a máscara de validade do segmento (TVM) na primeira descrição de estado e cada bit dela indica a validade, da perspectiva de software, do segmento lógico na descrição de estado correspondente no grupo.
[0041] Em outra concretização, somente segmentos válidos são incluídos no grupo de descrição de estado e não é necessária indicação de validade. Uma concretização que inclui segmentos lógicos inválidos no grupo de descrição de estado permite ao hipervisor manter o estado associado a esses segmentos inválidos e esses segmentos podem se tornar válidos de novo no futuro. A máquina somente inicializará e processará os segmentos que possuem estado válido. O hipervisor somente executará um núcleo lógico convidado se pelo menos um segmento no grupo for válido.
[0042] Passando agora à FIG. 4, é mostrada, de acordo como uma concretização, uma descrição de estado de um segmento lógico que inclui a maior parte do estado arquitetado do convidado. Neste contexto, o termo “descrição de estado” inclui não somente a própria descrição de estado, mas também os blocos satélite, cujos indicadores residem na descrição de estado, que atuam como uma extensão. Como mostrado na FIG. 4, a descrição de estado 400 pode incluir os registros gerais (GRs) convidados 402, registros de acesso (ARs) 404, registros de controle (CRs) 406, cronômetros convidados 408 (incluindo comparador de relógio e cronômetro da CPU), registro de prefixo convidado 410, número da CPU virtual (VCN) 412, palavra de status do programa (PSW) e endereço de instrução (IA) 414. Além disso, pode incluir informações de controle, tais como bits de controle de interceptação (IC) 420 para indicar se determinadas instruções (e.g., Carregamento da Palavra de Status do Programa (LPSW) e Invalidar a Entrada de Tabela de Página (IPTE)) precisam interceptação para o hospedeiro ou se é necessária a limpeza do translation lookaside buffer (TLB) antes que possa ser iniciada a execução da instrução convidada. A descrição de estado também contém a próxima descrição de estado (NSD) 422 que é utilizado para definir as listas e anéis de descrição de estado conforme descrito nas FIGs 6-9. A descrição de estado primária inclui também A TVM 430 conforme descrito na FIG. 5 e o número de partição lógica (LPN) 432. O número da CPU virtual (VCN) 412 é equivalente ao número da CPU, potencialmente ajustado para incluir o número de segmento no modo MT, conforme descrito no Pedido de Patente dos EUA 14/226947, (nossa referência POU920 140072US1), entitulado "Address Expansion and Contraction in a Multithreading Computer System" (Expansão e Contração de Endereço em Sistema Computacional Multitarefa) protocolado simultaneamente com este documento, cujo conteúdo é aqui incorporado como referência na sua totalidade. Está incluída uma cópia no protocolo.
[0043] Os segmentos dentro de um núcleo podem ser identificados por uma identificação de segmento binário (TID). Para concisão nas figuras abaixo, o segmento x é com frequência identificado pelo termo TIDx, cujo significado é “o segmento que possui TID x”.
[0044] Com referência agora à FIG. 5, é mostrado, de forma geral e de acordo com uma concretização, um diagrama de blocos de uma máscara de validade de segmento (TVM) 520. Conforme mostrado na FIG. 5, o bit 0 530 da TVM 520 representa a validade do segmento lógico 0 no grupo de descrição de estado, o bit 1 531 representa a validade do segmento 1, o bit 2 532 representa a validade do segmento 2, o bit 3 533 representa a validade do segmento 3 e assim por diante até o bit n 537, que representa a validade do bit n, o último segmento lógico possível no grupo de descrição de estado associado a este núcleo. A TVM pode residir na descrição de estado primária para o grupo.
[0045] Passando agora à FIG. 6, é mostrada de forma geral e de acordo com uma concretização, uma estrutura de grupo de descrição de estado de desvio fixo. Conforme mostrado na FIG. 6, o grupo de descrição de estado é especificado em desvios fixos (N) uns dos outros. Neste caso, o operando da instrução iniciar-VE 602 aponta para a descrição de estado primário 603 para um segmento lógico 0. A descrição de estado secundária para o segmento lógico x 605 está localizada a um desvio fixo de N bytes depois da descrição de estado primária e a descrição de estado secundária para o segmento lógico y 607 está localizada N bytes depois da descrição de estado secundária para o segmento x. Isso continua para todos os segmentos no grupo. O número de segmentos no grupo pode ser determinado de muitas formas incluindo por uma contagem na descrição de estado primária ou por um marcador de fim subsequente ao último endereço de descrição de estado na lista.
[0046] A FIG. 6 pode representar dois casos, o primeiro caso em que o grupo inclui descrições de estado para todos os segmentos lógicos no grupo, quer sejam válidas ou não, e o segundo caso em que somente descrições de estado válidas são incluídas no grupo. No primeiro caso, a descrição de estado para o segmento x 605 representa o estado do segmento 1 e a do segmento y 607 representa o estado do segmento 2. A TVM 620, que só é necessária nesse primeiro caso, representa a validade de cada um desses segmentos lógicos. No segundo caso, a descrição de estado para o segmento x 605 representa o estado do primeiro segmento secundário lógico válido e a descrição de estado para o segmento lógico y 607 representa o estado do segundo segmento secundário válido. Por exemplo, se o segmento 1 não é válido e os segmentos 2 e 3 são ambos válidos, então o segmento x 605 representaria o segmento 2 e o segmento y 607 representaria o segmento 3. Não haveria nenhuma descrição de estado incluída no grupo para o segmento 1 uma vez que ele é inválido. Esses mesmos dois casos podem também se aplicar às concretizações mostradas nas FIGS. 7-9 abaixo, entretanto, somente o caso 1 está descrito e ilustrado.
[0047] Passando agora à FIG. 7, é mostrada, de forma geral e de acordo com uma concretização, uma estrutura de grupo de descrição de estado especificada como uma lista. Neste caso, o operando da instrução iniciar-VE 702 representa uma lista de endereços de descrição de estado com a primeira entrada na lista 704 apontando para a descrição de estado primária 705 para o segmento 0, a segunda entrada na lista 706 apontando para a descrição de estado secundária para o segmento 1 707, a terceira entrada na lista 708 apontando para a descrição de estado secundária para o segmento 2 709, e assim por diante, continuando para todos os segmentos no grupo. A TVM 720 representa a validade de cada um desses segmentos.
[0048] Passando agora à FIG. 8, é mostrada, de forma geral e de acordo com uma concretização, uma estrutura de grupo de descrição de estado especificada como uma lista vinculada. Neste caso, assim como no caso retratado na FIG. 6, o operando da instrução iniciar-VE 802 indica a descrição de estado primária para o segmento 0 803, mas, em vez disso, o indicador 804 para a descrição de estado secundária para o segmento 1 805 é fornecido como o próximo campo de descrição de estado (NSD) 804 na descrição de estado primária. Por sua vez, o indicador 806 para a descrição de estado secundária para o segmento 2 807 é fornecido como NSD 806 na descrição de estado secundária para o segmento 1. Isso continuaria para todos os segmentos no grupo com NSD 810 na descrição de estado para o último segmento n 809 sendo especificado como zeros ou algum outro valor único indicando o fim da lista. A TVM 820 fornecida na descrição de estado primária 803 representa a validade de cada um desses segmentos.
[0049] Passando agora à FIG. 9, é mostrada, de forma geral e de acordo com uma concretização, uma estrutura de grupo de descrição de estado especificada como uma lista circular ou anel. Este caso é idêntico ao caso mostrado na FIG.8, na qual o operando da instrução iniciar-VE 902 aponta para a descrição de estado primária 903 para o segmento 0, que contém a NSD 904 para a descrição de estado secundária para o segmento 1 905, que contém a NSD 906 para a descrição de estado secundária para o segmento 2 907 e isso continua para todos os segmentos até o último segmento n. Na concretização mostrada na FIG. 9, entretanto, a NSD 910 na descrição de estado para o segmento n 909 forma uma lista circular e aponta de volta para a descrição de estado primária 903. A TVM fornecida na descrição de estado primária 903 representa a validade de cada um desses segmentos.
[0050] A execução do núcleo permite ao hipervisor gerenciar muitos aspectos dos segmentos lógicos no nível do núcleo. A execução do núcleo não apenas em geral simplifica o código do hipervisor necessário para o gerenciamento do segmento pelo acionamento da coordenação da execução virtual de múltiplos segmentos de um núcleo na máquina, mas também pode reduzir as despesas necessárias para gerenciar mais processadores na configuração. O gerenciamento prioritário para partições lógicas (ou convidadas) pode continuar a ser feito no nível do núcleo lógico, reduzindo a pressão em escala neste tipo de gerenciamento. O próprio hipervisor ainda precisa gerenciar a coleção de segmentos associada ao núcleo lógico para se certificar de que suas necessidades (tais como interceptações de instruções) foram todas atendidas antes de reemitir a instrução iniciar-VE.
[0051] Com referência agora à FIG. 10, é mostrado, de forma geral e de acordo com uma concretização, um processo de execução do núcleo. Conforme a FIG. 10, um hipervisor está processando em segmento único no núcleo físico N 1010 e segmento físico A 1020. No bloco 1022, o hipervisor emite a instrução iniciar-VE com MT especificada para executar o núcleo convidado multissegmentado. A máquina determina que o convidado está multissegmentado e, no bloco 1024, disponibiliza os segmentos B e C para processar software. A máquina carrega o estado convidado da descrição de estado para cada um dos segmentos em segmento físico correspondente. Na concretização retratada na FIG. 10, a máquina utiliza segmentos físicos múltiplos para realizar sua função, isto é, milicódigo processando em segmento físico A 1020 carrega o estado do segmento lógico convidado X no segmento físico A, conforme mostrado no bloco 1026. Da mesma forma, o milicódigo processando nos segmentos físicos B 1040 e C 1060 carrega o estado dos segmentos lógicos convidados Y e Z nos segmentos físicos B e C conforme mostrado nos blocos 1046 e 1066. Uma vez que o estado convidado é carregado, o software sendo processado nos segmentos lógicos X, Y e Z é executado nos segmentos físicos A, B e C, conforme mostrado nos blocos 1028, 1048 e 1068.
[0052] Com referência agora à FIG. 11, é mostrada, de forma geral e de acordo com uma concretização, uma saída coordenada da execução virtual. Conforme mostrado na FIG. 11, os segmentos lógicos convidados X, Y e Z estão executando software convidado nos segmentos físicos A 1120, B 1140, e C 1160 conforme indicado nos blocos 1128, 1148 e 1168. Um ou múltiplos segmentos convidados determinam que é necessária uma saída da execução virtual. Com referência à FIG. 11, o segmento lógico convidado Y processando no segmento físico B 1140 determina que ele deve sair da execução virtual, conforme mostrado no bloco 1150, fazendo com que a máquina sinalize para os segmentos físicos A 1120 e C 1160 saírem da execução virtual, conforme mostrado no bloco 1152. Nos blocos 1136, 1154 e 1174, o milicódigo processando em cada um dos segmentos físicos coordena a saída da execução virtual e então torna os segmentos físicos B 1140 e C 1160 indisponíveis para uso pelo software como indicado nos blocos 1156 e 1176. O milicódigo no segmento físico A 1120 recarrega o estado hospedeiro no hardware conforme mostrado no bloco 1138, o que resulta na execução do software hipervisor no segmento físico A conforme mostrado no bloco 1140. O hipervisor processará então quaisquer interceptações convidadas e interrupções hospedeiras pendentes conforme necessário.
[0053] A FIG. 12 retrata um diagrama de blocos de uma área de sistema de controle orientada ao núcleo (COSCA) para uma única configuração convidada que inclui núcleos lógicos múltiplos de acordo com uma configuração. A COSCA mostrada na FIG. 12 pode ser utilizada para fornecer coordenação tanto entre os segmentos lógicos dentro de um núcleo como entre segmentos lógicos em núcleos diferentes. A COSCA pode incluir uma área comum representando a configuração convidada total com indicadores, um para cada núcleo lógico, para separar áreas de descrição do núcleo. Cada descrição de núcleo inclui uma área comum representando aquele núcleo e uma série de áreas de segmento específico contíguas, separadas ou descrições de segmento para aquele núcleo. Em outra concretização, a descrição do núcleo fornece a localização das descrições de segmento. As localizações fornecidas podem ser deduzidas (e.g., são uma lista contida na descrição do núcleo ou podem estar em blocos de memória que são consecutivos à descrição do núcleo). Em outras concretizações podem ser fornecidos indicadores para outras localizações de memória contendo descrições de segmento. Conforme utilizado neste documento, o termo “indica uma localização” é utilizado para referir-se a qualquer dessas formas, ou a qualquer modo adicional, de determinar uma localização de um item (e.g., as descrições do segmento ou outros elementos da COSCA). Esta estrutura mantém uma representação em árvore da configuração MT convidada que facilita em algumas situações, particularmente em nível de hipervisor, elementos a serem gerenciados em base de núcleo, mas em outras situações, elementos a serem gerenciados em base de segmento ou processador.
[0054] A mesma origem da COSCA (COSCAO) pode ser fornecida no campo de origem da SCA (SCAO) nas descrições de estado para todos os segmentos convidados dentro da configuração convidada e pode ser fornecido o mesmo endereço de área da descrição do núcleo (CDAA) para todos os segmentos dentro de um dado núcleo. Uma vantagem desta concretização é que ela não necessita de muito armazenamento real contíguo, que pode ser difícil que alguns hipervisores forneçam. Outra concretização poderia acrescentar um nível adicional de ação indireta e fazer com que cada descrição inclua uma lista de indicadores para cada área de segmento específico removendo a necessidade de que esses blocos de controle que contenham essas áreas sejam contíguos.
[0055] Com referência agora à FIG. 12, é mostrada de forma geral uma concretização exemplificativa de uma COSCA para uma configuração convidada única que inclui dois núcleos lógicos com três segmentos lógicos em cada núcleo. Numa concretização, a COSCA inclui os conteúdos da área comum da COSCA 1260 (mostrada na FIG. 12 como "COSCACA 1260"), área de descrição do núcleo 1270, e área de descrição do núcleo 1280. A descrição de estado primária para o grupo de descrição de estado associado ao núcleo lógico 0 1203 é especificado como o operando da instrução iniciar-VE utilizada pelo hipervisor para executar o núcleo convidado 0 1202. Além disso, a descrição de estado primária para o grupo de descrição de estado associado ao núcleo lógico 1 1233 é especificado como o operando da instrução iniciar-VE utilizada para executar o núcleo 1 1232. Esta descrição de estado primária para “núcleo 0 segmento 0” 1203 contém NSD01 1205, que aponta para a descrição de estado secundário para o núcleo 0 segmento 1 1213 que, por sua vez, contém NSD02 1215, que aponta para a descrição de estado secundária final para o núcleo 0 segmento 2 1223 no grupo. Similarmente, o grupo de descrição de estado para o núcleo lógico 1 começa com a descrição de estado primária para o núcleo 1 segmento 0 1233 contendo NSD11 1235, que aponta para a descrição de estado secundária para o núcleo 1 segmento 1 1243 contendo NSD12 1245, que aponta à descrição de estado secundária final para o núcleo 1 segmento 2 1253. As descrições de estado para todos os seis segmentos nesta configuração convidada 1203 1213 1223 1233 1243 1253 contêm o mesmo valor na SCAO 1204 1214 1224 1234 1244 1254, apontando para a área comum da COSCA 1260.
[0056] A área comum da COSCA 1260, como mostrado na FIG. 12, contém informações de nível do núcleo utilizadas para coordenar as funções ampliadas da configuração convidada. A área comum da COSCA 1260 inclui uma máscara de validação do núcleo da SCA (SCVM) 1261 que indica a validade de cada núcleo lógico dentro da configuração convidada e também inclui um endereço de área de descrição do núcleo (CDAA) para cada núcleo 1262 1264. Tanto os bits no SCVM como o arranjo dos endereços de área de descrição do núcleo podem ser indexados pelo número do núcleo. A CDAAO 1262, que aponta para a área de descrição do núcleo (CDA) para o núcleo 0 1270, é incluída na área comum da COSCA 1260. Além disso, o campo CDAA nas descrições de estado para todos os segmentos no núcleo 0 1206 1216 1226 também aponta para a CDA para o núcleo 0 1270. A CDAA1 1264, que aponta para a CDA para o núcleo 1 1280, também está incluída na área comum da COSCA 1260 e, da mesma forma que o campo CDAA nas descrições para todos os segmentos no núcleo 1 1236 1246 1256, também aponta para a CDA para o núcleo 1 1280. A área de descrição do núcleo (CDA) para o núcleo 0 1270 contém uma SCA de máscara de validade de segmento (STVMO) 1271 que indica a validade de cada segmento lógico dentro do núcleo 0. Contém também as áreas de descrição de segmento para o núcleo 0 segmento 0 1272, segmento 1 1274 e segmento 2 1276. A CDA para o núcleo 1 1280 contém similarmente a STVM1 1281 e as áreas de descrição de segmento para o núcleo 1 segmento 0 1282, segmento 1 1284, e segmento 2 1286. Cada uma dessas áreas de descrição de segmento 1272 1274 1276 1282 1284 1286 contém um endereço de descrição de estado (SDA) 1273 1275 1277 1283 1285 1287 para o segmento correspondente àquela área de descrição do segmento, núcleo 0 segmento 0, núcleo 0 segmento 1, núcleo 0 segmento 2, núcleo 1 segmento 0, núcleo 1 segmento 1 e núcleo 1 segmento 2, respectivamente. Tanto os bits na STVM como o arranjo de áreas de descrição do segmento podem ser indexados pela identificação do segmento. Essas SDAs facilitam ao hipervisor o gerenciamento de segmentos dentro de um núcleo e à máquina a apresentação de interrupções de interprocessadores convidados.
[0057] A FIG. 13 retrata um fluxo de processo para gerenciamento de núcleos multissegmentados de acordo com uma concretização que utiliza a COSCA mostrada na FIG. 12. No exemplo mostrado na FIG. 13, no bloco 1302, um sistema operacional convidado (SO) processando num primeiro segmento físico (e.g., núcleo 0 segmento 1 definido pela descrição de estado 1213) determinou que ele sinalizará um segundo segmento lógico, ou segmento de destino (e.g., núcleo 1 segmento 2 definido pela descrição de estado 1253). No bloco 1304, o SO convidado faz isso, por exemplo, pela emissão de uma instrução de interrupção interprocessador. A máquina, como parte da execução da instrução de interrupção interprocessador, utiliza a COSCA para emular a instrução convidada de interrupção interprocessador. A instrução de interrupção interprocessador é emulada pela máquina uma vez que o núcleo lógico que inclui o segmento lógico de destino possa ou não ser executado no momento em que a sinalização está sendo feita. No bloco 1306, a máquina localiza (e.g., via SCA0 1214 desde que a instrução de interrupção interprocessador tenha sido executada pelo núcleo lógico 0 segmento 1) uma área comum (e.g., área comum COSCA 1260) para a configuração convidada a fim de acessar a SCVM (e.g., SCVM 1261) para verificar a validade do núcleo de destino e para obter a CDAA adequada (e.g., CDAA1 1264 desde que o segmento de destino esteja no núcleo 1).
[0058] Em seguida, no bloco 1308, a máquina localiza (e.g., via CDA1 1264) a área de descrição do núcleo para o núcleo de destino (e.g., CDA 1280). A máquina verifica que o segmento de destino é válido acessando uma STVM na área de descrição do núcleo (e.g., STVM1 1281 na CDA 1280). No bloco 1310, a máquina localiza a área de descrição do segmento (e.g. área de descrição do segmento 1286 correspondendo ao segmento 2 uma vez que o segmento de destino é o segmento 2). No bloco 1312, a informação sobre a interrupção é gravada na área de descrição do segmento para o segmento de destino (e.g., ela coloca a identidade o segmento remetente na área de descrição de segmento 1286). No bloco 1314, a máquina localiza (e.g. via SDA12 1287 na área de descrição de segmento 1286) a descrição de estado para o segmento de destino (e.g. descrição de estado secundário para o núcleo 1 TID2 1253). No bloco 1316, a interrupção é tornada pendente na descrição de estado de destino (e.g., o bit de IP 1257 é definido na descrição de estado para o núcleo 1 TID2 1253). Como resultado, quando o processador lógico de destino (e.g. núcleo 1 segmento 2) é executado num segmento físico e é ativado para a interrupção, a máquina apresentará a interrupção, se ativada, para o sistema operacional convidado. Se o processador lógico de destino já tiver sido colocado em execução no momento em que a interrupção se torna pendente, ela fará a interrupção assim que for ativada.
[0059] Há ocasiões em que a máquina pode também fazer uso do fato que segmentos dentro de um núcleo lógico possuem atributos em comum. Por exemplo, a execução do núcleo é naturalmente adequada para que todos os segmentos convidados num núcleo lógico residam na mesma zona ou partição LPAR. A estrutura pode minimizar o hardware somente implementando elementos associados com a zona uma vez por núcleo em vez de uma vez por segmento. Além disso, lógicas de controle complicadas (manipulação de interrupções amplas de sistema, por exemplo) podem também ser simplificadas já que só se irá lidar com um único valor de núcleo.
[0060] Numa concretização, cada campo (ou bit dentro de um campo) no grupo de descrições de estado representando um convidado multissegmentado é classificado como primário, núcleo-comum ou segmento-específico. Um campo primário reside somente na descrição de estado primária e se aplica a todos os processadores no núcleo lógico; qualquer acesso feito a um campo primário em nome de qualquer segmento de um núcleo deve utilizar o valor da descrição de estado primária associada. Esta classificação é utilizada para campos que definem o estado geral do núcleo, tais como a máscara de validade do segmento. Um campo núcleo-comum é comum entre todos os processadores dentro de um núcleo lógico e este campo possui o mesmo valor em toda descrição de estado no grupo; qualquer acesso feito a um desses campos em nome de um processador pode utilizar o valor de qualquer descrição de estado no grupo. Esta classificação é utilizada para campos que se aplicam por todo o núcleo, como o número LP. O hipervisor deve manter os campos núcleo-comum em todas as descrições de estado, mas a máquina tem permissão para acessar este campo na descrição de estado de qualquer segmento que forneça o melhor desempenho. Uma vez que esses campos não são modificados pelo hipervisor com frequência, mas são frequentemente acessados pela máquina a cada entrada em execução virtual, definir um campo como núcleo-comum em vez de segmento-específico permite a entrada de execução virtual, por exemplo, para carregar um recurso de segmento secundário do segmento primário utilizando o valor na descrição de estado primária. Um campo segmento-específico é específico para cada segmento lógico; qualquer acesso feito a um desses campos em nome de qualquer segmento dado deve utilizar o valor da descrição de estado daquele segmento. Esta classificação é utilizada para campos que são tipicamente únicos entre os segmentos, como o prefixo convidado.
[0061] Uma concretização inclui a implementação de uma máquina da instrução de execução do núcleo. Quando um hipervisor emite uma execução de núcleo ou uma instrução iniciar-VE com MT especificada, o núcleo lógico que é descrito pelo grupo de descrição de estado associado é carregado num núcleo físico pelo milicódigo da entrada-de-execução-virtual (entrada-VE). Como parte deste processo, o estado de cada segmento lógico válido é carregado no segmento físico. O mapeamento de segmentos lógicos para segmentos físicos pode ser um mapeamento direto um-para-um ou pode ser virtualizado. Antes de a entrada-VE começar, os conteúdos de cada segmento físico contém o estado de qualquer que tenha sido o segmento virtual processado nele da última vez. Portanto, o milicódigo entrada-VE substitui o estado inteiro com o estado do segmento convidado recentemente executado.
[0062] Quando a execução do núcleo é acessada por um hipervisor de segmento único, é responsabilidade do milicódigo carregar o estado do segmento individual convidado (processador lógico) no hardware e definir o hardware para iniciar a execução multissegmentada. A fim de melhorar a eficiência mediante a permissão para que cada segmento físico carregue a maioria do seu próprio estado em paralelo, o milicódigo pode carregar uma pequena quantidade de registros de hardware para cada um dos segmentos secundários (ou pelo segmento primário ou outro, já iniciado, segmento secundário). Isso pode exigir que um segmento secundário que está atualmente inativo de uma perspectiva de hardware seja “despertado” para iniciar a execução de uma rotina de milicódigo que completará a inicialização de seu próprio estado convidade e finalmente comece a execução do programa convidado. Há casos em que embora nenhum hipervisor ou código de programa convidado esteja sendo processado num segmento secundário, o firmware interno pode estar processando a fim de manipular, por exemplo, alguma função interna de gerenciamento de sistema. Se for este o caso, a máquina deve coordenar com a execução dos segmentos convidados.
[0063] Existem algumas operações, tais como a limpeza do TLB, que podem ser especificadas para serem aplicadas ao núcleo inteiro. Isso elimina a necessidade de cada segmento determinar se a limpeza é necessária e, quando necessária, realizar essa limpeza. Além disso, existem alguns recursos do núcleo que são compartilhados ou comuns entre os segmentos físicos dentro do núcleo. O milicódigo pode tirar vantagem do fato que recursos compartilhados precisam apenas ser carregados de um segmento único e que aquele segmento único pode carregar todas as cópias dos recursos comuns do segmento caso as salvaguardas puderem ser reconhecidas para fazer isso. O milicódigo entrada-VE pode também utilizar a multissegmentação convidada ativada e os bits de validade do segmento para desviar a inicialização de segmentos lógicos inválidos num esforço para acelerar a execução do milicódigo de inicialização nos segmentos válidos. A estrutura de hardware flexível permite concretizações do milicódigo para otimizar suas implementações na medida que o projeto se desenvolve.
[0064] Passando agora à FIG. 14, que inclui as FIGs. 14A e 14B, é mostrada, de forma geral e de acordo com uma concretização, a implementação de uma máquina de execução de núcleo. Conforme mostrado na FIG. 14A, no bloco 1400, a execução do núcleo é iniciada pelo hipervisor processando em segmento único (referenciado como o segmento primário) utilizando uma instrução iniciar-VE em que a MT é especificada. Com base no hipervisor emitindo a instrução iniciar-VE, o milicódigo entrada-VE é chamado no segmento primário, que é o segmento que emitiu a instrução, e ele começar por iniciar a multissegmentação no hardware para o núcleo todo. Muito desta inicialização pode incluir teste de bits de estado de hardware de todos os segmentos secundários aplicáveis e/ou a definição dos bits de controle de hardware ou campos em todos os segmentos secundários aplicáveis. Os bits de controle e de estado 1450 mostrados na FIG. 14A podem residir logicamente no hardware do próprio segmento secundário ou podem residir logicamente em recursos comuns de hardware compartilhados entre os segmentos, mas que representam e controlam o segmento secundário. No bloco 1402, o milicódigo entrada-VE determina, utilizando a máscara de validade de segmento (TVM) na descrição de estado, quais segmentos lógicos são válidos, de uma perspectiva de software e, portanto, precisam ser carregados no hardware. Determina também o mapeamento dos segmento lógicos válidos para segmentos físicos.
[0065] Os blocos 1404 a 1414 da FIG. 14A são realizados pelo milicódigo para verificar que os segmentos físicos estão disponíveis. No bloco 1404 o milicódigo evita que os segmentos secundários do hardware aplicáveis façam novas interrupções que possam chamar códigos internos ou comecem a processar qualquer código novo de programa. Isso pode ser conseguido pela definição de controles adequados do hardware no(s) segmento(s) secundário(s). No bloco1406, é determinado se o software está sendo processado nos segmentos secundários. Numa concretização, o hipervisor que está emitindo a instrução iniciar-VE no segmento primário garante que outros segmentos de hardware neste núcleo não estão processando qualquer código de programa (e.g. hipervisor ou código convidado). Em outra concretização, o hipervisor que emite a instrução iniciar-VE pode não ser capaz de determinar facilmente se quaisquer outros segmentos de hardware exigidos para esta nova iniciar-VE estão processando códico de programa, por exemplo, o código é associado com uma iniciar-VE independente. Neste caso, o milicódigo entrada-VE verifica o(s) bit(s) de estado do hardware adequado(s) no(s) segmento(s) secundário(s) no bloco 1406.
[0066] Se fica determinado, no bloco 1406, que o código de programa está sendo processado em hardware que precisa processar um segmento convidado secundário, a nova instrução iniciar-VE está completa e no bloco 1408 o hipervisor é informado pela máquina que a instrução iniciar-VE não foi bem- sucedida e, potencialmente, informado do número de segmentos de hardware atualmente disponíveis. Em resposta, o hipervisor pode tomar as ações apropriadas tais como reduzir o número de segmentos convidados válidos a serem executados ou aguardando um tempo predeterminado, conforme indicado no bloco 1410, antes de emitir a instrução iniciar-VE de novo no bloco 1400. Se fica determinado, no bloco 1406, que o hardware está disponível, então o processamento continua para o bloco 1412. No bloco 1412, o milicódigo determina, verificando por exemplo o(s) bit(s) de estado adequados no hardware, se algum do(s) segmento(s) secundário(s) do hardware está processando código de firmware interno. Neste caso, numa concretização, o segmento primário aguardo o(s) segmento(s) secundário(s) terminar de processar o código interno e, enquanto aguarda, a fim de evitar deslocamentos, o segmento primário pode privilegiar determinadas interrupções. Pode, entretanto, bloquear o(s) segmento(s) secundário(s) para que não faça outras interrupções de modo que possam atingir o estado inativo mais rapidamente. O processamento continua então no bloco 1416. Em outra concretização, se um segmento de hardware está processando um código interno de firmware, como determinado no bloco 1412, a máquina pode anular a instrução iniciar-VE e retornar o controle para o hipervisor no bloco 1414. Isso dá oportunidade ao segmento primário de remover as interrupções do firmware interno e evitar potenciais deslocamentos e, uma vez que não existe interrupção pendente no segmento primário, a instrução inicar-VE é executada novamente. Essas duas concretizações possuem benefícios quando comparadas à pausa do firmware interno e seu reinício no hardware quando o trabalho multitarefa é completado uma vez que a operação de código do firmware é com frequência essencial para a operação do sistema (atualização concomitante, por exemplo) e, além disso, os segmentos processam o firmware interno com pouca frequência, o que torna a espera pela finalização uma opção viável.
[0067] O processamento então continua no bloco 1416 para iniciar o carregamento do(s) segmento(s) lógico(s) nos segmentos físicos no núcleo físico. No bloco 1416, o milicódigo verifica e remove exceções relacionadas a determinadas condições de exceção. Algumas condições de exceção podem se aplicar à própria instrução iniciar-VE (e.g., estrutura em anel de descrição de estado inválida) e outras são relacionadas às condições aplicáveis ao segmento lógico secundário (e.g., uma exceção de acesso access exception na NSD). No bloco 1418, podem ser limpas entradas de buffers look-aside de hardware convidados (incluindo TLBs). Isso pode incluir o expurgo de buffers look-aside para segmento(s) secundário(s) quando aplicável. No bloco 1420, os estados mínimos para as descrições de estado primárias e secundárias são carregados e os recursos de hardware necessários são inicializados, incluindo cada um dos segmentos válidos. Numa concretização, os estados mínimos incluir os endereços de descrição de estado para os segmentos secundários. No bloco 1422, os controles de hardware para o(s) segmento(s) secundário(s) são definidos para parar a busca de todos os fluxos de instrução interna. Isso pode simplificar a alternância de uma execução de segmento único para a execução multissegmento. No bloco 1424, é carregado o endereço de instrução de milicódigo (milli-IA) para cada um dos outros segmentos secundários válidos. O milli-IA é a localização em que os segmentos secundários iniciam a execução uma vez que iniciam a busca de um fluxo de instrução interna e tipicamente aponta para uma localização no milicódigo que completará a inicialização de cada segmento lógico. O segmento primário continua sua execução do milicódigo entrada-VE e, portanto, não é preciso carregar nenhum milli-IA novo. No bloco 1426, numa concretização, o segmento primário desperta o(s) segmento(s) secundário(s) definindo controles de hardware que mudam seu modo de execução para milimodo o que faz com que eles comecem a execução no milli-IA previamente carregado. Em outra concretização, o segmento primário (Ta) pode despertar o primeiro segmento secundário (Tb); Tb pode despertar o próximo segmento secundário (Te); e assim por diante, até que todos os segmentos válidos estejam ativos e processando no hardware. Numa concretização, os segmentos secundários não começarão a executar as instruções de milicódigo até que um outro segmento defina seu modo de execução para modo de execução milicódigo, ou milimodo.
[0068] Com referência agora à FIG. 14B, nos blocos 1428 e 1478, o segmento primário e cada segmento secundário válido executam o milicódigo necessário para completar a carga do estado do segmento lógico convidado associado no hardware. Numa concretização, o estado inclui os registros gerais convidados (GRs) 402, registros de acesso (ARs) 404, registros de controle (CRs) 406, registro de prefixo 408, cronômetros convidados 410, número da CPU virtual (VCN) 412, palavra de status do programa (PSW) e endereço de instrução (IA) 414, bits de controle de intercepção (IC) 420, e número da partição lógica (LPN) 432 conforme mostrado na FIG. 4. Nos blocos 1430 e 1480, o segmento primário e os segmentos secundários completam a execução da entrada-VE e eles saem do modo milicódigo (e.g., milimodo ). Nos blocos 1432 e 1482, eles começam a execução do fluxo de instrução de programa do segmento convidado. Numa concretização, cada finalização de entrada-VE do segmento é independente da dos outros segmentos. Em outra concretização, os segmentos sincronizam antes de completar a entrada-VE.
[0069] Numa concretização, a fim de suportar o uso de execução do núcleo e da execução unissegmentada do hipervisor, pode ser fornecida ao mesmo tempo uma saída coordenada da execução virtual (saída-VE) na qual todos os segmentos convidados num dado núcleo saem de volta para o hospedeiro ST. No contexto de saída-VE coordenada, os tipos de saída-VE podem ser divididos em três categorias: (1) interrupções do hospedeiro que pertencm à operação do hospedeiro; (2) interrupções do hospedeiro que pertencem à operação do convidado; e (3) interceptações do convidado. Hospedeiro interno, E/S, e algumas interrupções de verificação de máquina caem na categoria saída-VE (1). Para este caso, todos os segmentos convidados são solicitados a sair do modo de execução virtual para permitir que o hospedeiro manipule a interrupção. Essa interrupção provavelmente fará com que o hospedeiro execute um convidado diferente. Se a interrupção ocorrer enquanto o processamento estiver no modo de execução virtual, a interrupção do hospedeiro pode ou ser detectada em todos os segmentos de forma que eles possam sair do modo de execução virtual ou ser detectada num único segmento que então sinaliza para os outros segmentos se eles devem sair.
[0070] A categoria saída-VE (2), interrupções do hospedeiro que pertencem ao convidado, pode incluir algumas interrupções de verificação de máquina (tais como um erro de armazenamento incorreto). Numa situação de não multissegmentação, essas condições são apresentadas como interrupções do hospedeiro. Com a execução do núcleo há apenas um segmento hospedeiro, mas uma vez que essas exceções pertencem à operação convidada, é possível que múltiplos segmentos convidados detectem razões distintas e diferentes para a mesma interrupção do hospedeiro. A fim de fazer uma adaptação, para execução do núcleo, quando aplicável, essas interrupções do hospedeiro são apresentadas em vez disso na descrição de estado convidada correspondente como um novo tipo de interceptação do convidado e são tratadas da mesma forma da categoria (3), descrita abaixo. Numa concretização, interrupções de falha na tradução do endereço do hospedeiro surgidas devido a referências de memória convidada também caem na categoria (2), e podem ser apresentadas como um novo tipo de interceptação de convidado.
[0071] Interceptações de convidado, mesmo num ambiente multissegmentado convidado, tanto para as categorias de saída-VE (2) e (3) acima) pertencem a um segmento único e são independentes da execução convidada de um outro segmento. É possível ainda que segmentos múltiplos convidados reconheçam tais condições concomitantemente, necessitando que o hospedeiro trate de todas. Tipicamente, quando confrontado com uma interceptação, o hospedeiro simulará algum comportamento em nome do convidado e então reexecutará aquele mesmo convidado. Para esses casos, uma vez que o hospedeiro está processando em segmento único, todos os segmentos convidados devem sair do modo de execução virtual antes que o hospedeiro possa manipular a(s) interceptação(ões). Isso pode ser conseguido ou aguardando que todos os segmentos saiam naturalmente ou sinalizando que os outros segmentos saiam quando um segmento determinou que deve interceptar de volta para o hospedeiro. Nos referimos a isso como “saída-VE-coordenada”.
[0072] Como cada segmento determina que deve sair do modo de execução virtual, entra em saída-VE e aguarda no laço (loop) inicial de sincronização saída-VE até que todos os outros segmentos válidos estejam prontos para sair. Se a implementação exigir, então ele sinaliza para os outros segmentos para sair antes que entrem nesse laço de sincronização. Enquanto estiverem no laço de sincronização saída-VE, somente é manipulado um mínimo de interrupções. A fim de permitir uma situação em que um segmento convidado é solicitado a sair do modo de execução em que não se aplicam interrupção de hospedeiro nem interceptação de convidado, é definida uma interceptação de “não ação” para indicar ao hospedeiro que não é necessária nenhuma ação de interceptação em nome desse convidado.
[0073] Uma vez que todos os segmentos tenham entrado no laço inicial sincronizado saída-VE, o armazenamento dos dados convidados em todas as descrições de estado válidas podem ser completadas. Isto é, o estado de convidado atual que reside no hardware é salvo na descrição de estado correspondente e esse segmento lógico convidado pode ser reexecutado mais tarde. Um ponto final de sincronização saída-VE é solicitado depois que este armazenamento esteja completo para garantir que todas as atualizações para as descrições de estado do segmento secundário estejam completas antes que o controle seja devolvido ao hipervisor (que está tipicamente processando no segmento primário). Uma vez que a saída-VE esteja completa, o hipervisor pode processar cada segmento no anel para determinar se foi apresentada alguma interceptação e, caso afirmativo, tratá-la apropriadamente. Após fazer isso, ele pode então reexecutar esse mesmo núcleo lógico ou um diferente no processador físico.
[0074] Uma concretização inclui a implementação de uma máquina de uma saída coordenada de execução virtual que inclui a suspensão da execução de um convidado multissegmentado e a devolução do controle para um hospedeiro de segmento único. Num ambiente MT, o milicódigo de execução virtual de saída (saída-VE) é responsável, na maioria das condições, por sinalizar para os outros segmentos convidados válidos a saída da execução virtual assim que factível. É possível pela demora observada pelo segmento solicitante da saída ser substancial, especialmente se o segmento está no momento processando um código interno que não pode ser interrompido, sair da execução virtual. Enquanto um segmento está aguardando que outros segmentos saiam da execução virtual, pode ser utilizado o milicódigo para manipular determinadas interrupções como aquelas que podem resultar em condições de desvio ou aquelas que podem afetar o desempenho do sistema como um todo. Pode não ser ótimo que um milicódigo trate outras interrupções se elas apenas atrasarem a saída final da execução virtual agora que outros segmentos (cujo trabalho pode ter sido interrompido) foram transmitidos. Isso tudo deve ser feito enquanto se estiver ainda mantendo a prioridade de interrupção adequada.
[0075] Além disso, a maior parte da coordenação necessária para sair da execução virtual que é feita por milicódigo deve levar em conta o estado de cada segmento. Por exemplo, deve responder se cada segmento lógico é válido e se o segmento físico está processando código interno. Independentemente de o segmento primário ser inválido, ele ainda deve ser transmitido uma vez que ele é tipicamente o segmento no qual o programa hospedeiro será retomado. Tudo isso é conseguido utilizando um milicódigo interno de sistema de interrupção solicitada.
[0076] O milicódigo pode também realizar algumas ações para liberar registros físicos que foram utilizados pelo(s) segmento(s) secundário(s) convidado(s), mas que não são mais necessários uma vez que o estado do convidado foi salvo e o hospedeiro não utiliza o(s) segmento(s) secundário(s). Por exemplo, o milicódigo pode zerar registros mapeados como forma de liberar recursos uma vez que o hardware pode, em determinadas implementações, mapear todos os registros lógicos com conteúdo zero para um único registro físico deixando os outros registros físicos para uso pelo segmento primário. Pode haver outros recursos que são compartilhados entre os segmentos e que podem ser liberados para uso somente pelo segmento primário. O milicódigo pode mascarar determinadas interrupções de forma que os recursos do núcleo não sejam utilizados para chamar o milicódigo desnecessariamente.
[0077] Uma vez que qualquer segmento determina que é necessária a saída da execução virtual, ele vai transmitir aos outros segmentos conforme descrito abaixo, por exemplo, em referência à FIG. 15 que inclui as FIGs. 15A e 15B. O processo utilizado pode variar com base em se o segmento que está saindo da execução virtual é o segmento primário ou o segmento secundário.
[0078] Numa concretização, um segmento primário pode sinalizar para que segmentos secundários válidos saiam da execução virtual se todas as condições seguintes forem atendidas: (1) ele quer sair do modo de execução virtual e devolver o controle ao hipervisor; (2) todos os demais segmentos válidos já não estão no processo de saída (i.e. pelo menos um segmento ainda está processando instruções convidadas); (3) todos os outros segmentos já não foram sinalizados para sair; e (4) existe pelo menos um outro segmento válido. Se essas condições não forem atendidas, é dado tempo a cada segmento secundário para limpeza e saída da execução virtual independentemente. Numa concretização, um segmento secundário sinaliza para o segmento primário (mesmo que ele seja inválido) e para todos os outros segmentos secundários válidos para sair do modo de execução virtual se todas as condições (1)-(3) acima foram atendidas. Numa concretização, um segmento secundário deve enviar um sinal para o segmento primário mesmo se ele for o único segmento válido uma vez que ele precisa sinalizar para o primeiro segmento para completar a saída coordenada da execução virtual.
[0079] Passando agora à FIG. 15, que inclui as FIGs. 15A e 15B, é mostrada, de forma geral e de acordo com uma concretização, uma implementação de máquina de saída coordenada da execução virtual. No exemplo mostrado na FIG. 15, o segmento primário P está executando um fluxo de instruções convidadas P em 1502, o segmento secundário A está executando um fluxo de instruções convidadas A em 1542, e o segmento secundário B está executando um fluxo de instruções convidadas B em 1572. No bloco 1544, o segmento secundário A determina que ele deve sair da execução virtual e, utilizando os critérios descritos acima, determina no bloco 1546 que ele deve sinalizar aos outros segmentos para sair também. O segmento secundário A sinaliza aos outros segmentos fazendo uma interrupção interna de solicitação de execução de saída virtual pendente no controle de estado do hardware do segmento primário P 1508 e controle de estado do hardware do segmento secundário B 1578. O controle de estado do segmento secundário A 1548 é também mostrado na FIG. 15A. Ao responder à interrupção interna no bloco 1510 para o segmento primário P e no bloco 1580 para o segmento secundário B, cada segmento verifica a razão para a interrupção interna e determina, no bloco 1512 para o segmento secundário B, se a interrupção interna é uma solicitação de saída da execução virtual. Se for determinado que não é uma solicitação de saída da execução virtual, então o segmento primário P e o segmento secundário B realizam os blocos 1514 e 1584 respectivamente para tratar a outra solicitação de interrupção.
[0080] Se a interrupção é uma solicitação de saída da execução virtual, então, numa concretização, cada segmento pode realizar o seguinte processo independentemente. No bloco 1516 para o segmento primário P e no bloco 1586 para o segmento secundário B, é determinado se o segmento é válido. O segmento secundário A que solicitou a saída da execução virtual pode ser considerado válido. Para um segmento determinado como válido, a maioria do estado de convidado associado do hardware é salvo em sua própria descrição de estado. Isso inclui, conforme mostrado na FIG. 4, os registros gerais convidados (GRs) 402, registros de acesso (ARs) 404, registros de controle (CRs) 406, palavra de status do programa (PSW) e endereço da instrução (IA) 414. Estado convidado que não mudou durante a execução virtual, como o número da CPU virtual (VCN) 412 e o número da partição lógica (LPN) 432, não precisa ser salvo. Isso é mostrado na FIG. 15A no bloco 1518 para o segmento primário P, no bloco 1558 para o segmento secundário A, e no bloco 1588 para o segmento secundário B. Cada segmento atualiza seu estado interno para indicar que está no ponto de sincronização inicial saída-VE. Isso é mostrado na FIG. 15A no bloco 1520 para o segmento primário P, no bloco 1560 para o segmento secundário A, e no bloco 1590 para o segmento secundário B.
[0081] Todos os segmentos aguardam o segmento primário (e.g., segmento primário P) e todos os outros segmentos secundários válidos (e.g., segmentos secundários A e B) atingirem o ponto inicial de sincronização antes de continuar. Isso é mostrado na FIG. 15A no bloco 1521 para o segmento primário P, no bloco 1561 para o segmento secundário A, e no bloco 1591 para o segmento secundário B. Uma vez que todos os segmentos atinjam o ponto inicial de sincronização VE no milicódigo de execução de saída virtual, cada um dos segmentos terminam de atualizar as informações apropriadas na descrição de estado. Exemplos desta informação podem incluir o cronômetro da CPU convidada que é parte dos cronômetros convidados 408 na FIG. 4. Isso é mostrado na FIG. 15A no bloco 1522 para o segmento primário P, no bloco 1562 para o segmento secundário A, e no bloco 1592 para o segmento secundário B. Atrasar o salvamento deste estado até o ponto de sincronização aperfeiçoa a consistência da cronometragem convidade entre os segmentos.
[0082] Com referência agora à FIG. 15B, cada segmento atualiza seu próprio estado interno para indicar que está no ponto final de sincronização no milicódigo de saída-VE. Isso é mostrado FIG. 15B nos blocos 1524 para o segmento primário P, nos blocos 1564 para o segmento secundário A, e nos blocos 1594 para o segmento secundário B. Além disso, o segmento primário A aguarda que todos os segmentos atinjam o ponto de sincronização final 1599 no bloco 1526 antes de continuar para o bloco 1528. Cada segmento secundário determina um bit de hardware interno para indicar que não está mais executando um fluxo válido de instruções de programa o que faz com que a máquina saia do milimodo e pare de executar o código. Isso é mostrado na FIG. 15B no bloco 1566 para o segmento secundário A, e no bloco 1596 para o segmento secundário B. Numa concretização, cada segmento secundário não executará nenhum código de programa até a próxima iniciar-VE, entretanto, poderá executar código interno, conforme necessidade, para tratar interrupções internas.
[0083] Uma vez que todos os segmentos tenham atingido o ponto final de sincronização no milicódigo saída-VE, mostrado como ponto 1599 na FIG. 15B, a execução em tarefa única é executada o segmento primário P. O segmento primário P completa a limpeza do núcleo no bloco 1528, carrega o estado do hipervisor incluindo o programa hospedeiro IA no bloco 1530 para o hardware, e sai do milimodo no bloco 1532. Como resultado, o segmento primário P está processando no modo hospedeiro e tratará quaisquer interrupções apropriadas, e o hipervisor tratará quaisquer interceptações convidadas.
[0084] Os efeitos e benefícios técnicos incluem a capacidade de executar uma máquina virtual convidada multissegmentada.
[0085] Concretizações incluem um sistema, método e produto programa de computador para executar uma máquina virtual (VM) convidada multissegmentada. De acordo com um aspecto, um sistema de computador inclui uma configuração com uma máquina ativada para operar em modo tarefa única (ST) e em modo multitarefa (MT). Além disso, a máquina inclui segmentos físicos. A máquina está configurada para realizar um método que inclui a emissão de uma instrução iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada compreendendo segmentos múltiplos no núcleo. A entidade convidada inclui uma VM convidada no todo ou em parte, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o correspondente segmento físico, inicializando cada um dos segmentos físicos mapeados com um estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo em modo MT.
[0086] De acordo com outro aspecto, é fornecido um método de implementação em computador para executar uma máquina virtual (VM) multissegmentada numa configuração. A configuração inclui uma máquina com um núcleo único ativado para operar em modo tarefa única (ST) e em modo multitarefa (MT). O núcleo inclui segmentos físicos. O método inclui inclui a emissão de uma instrução iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada compreendendo segmentos múltiplos no núcleo. A entidade convidada inclui uma VM convidada no todo ou em parte, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o correspondente segmento físico, inicializando cada um dos segmentos físicos mapeados com um estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo em modo MT.
[0087] Outro aspecto inclui um produto programa de computador para executar uma máquina virtual (VM) multissegmentada numa configuração. A configuração inclui uma máquina com um núcleo único ativado para operar em modo ST e em modo MT. Além disso, a máquina inclui segmentos físicos. O produto programa de computador inclui uma mídia de armazenamento de leitura por computador com instruções de programa embutidas nela, em que a mídia de armazenamento de leitura por computador não é um sinal. As instruções de programa são legíveis por um circuito de processamento que permite que o circuito de processamento realize um método. O método inclui inclui a emissão de uma instrução iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada compreendendo segmentos múltiplos no núcleo. A entidade convidada inclui uma VM convidada no todo ou em parte, e a emissão é realizada por um hospedeiro processando em um dos segmentos físicos no núcleo no modo ST. A execução da instrução iniciar-VE pela máquina inclui o mapeamento de cada segmento lógico para o correspondente segmento físico, inicializando cada um dos segmentos físicos mapeados com um estado do segmento lógico correspondente, e iniciando a execução da entidade convidada no núcleo em modo MT.
[0088] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir situações em que somente segmentos lógicos válidos são mapeados para um segmento físico correspondente.
[0089] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a inicialização inclui o carregamento, para cada semento lógico, de uma parte do estado do segmento lógico para o segmento físico correspondente; e completando, por todo segmento físico mapeado, o carregamento do resto do estado do segmento físico correspondente, sendo o resto do estado determinado com base na parte do estado
[0090] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a parte do estado inclui um endereço de uma descrição de estado do restante do estado.
[0091] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira um dos segmentos físicos realiza o carregamento, para cada um dos segmentos lógicos, de parte do estado do segmento lógico.
[0092] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a execução inclui a verificação de que os segmentos físicos mapeados não estão no momento processando qualquer código de programa ou código interno antes da inicialização.
[0093] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a execução de início é realizada para cada um dos segmentos físicos com base na inicialização completando para o segmento físico.
[0094] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a execução de início é realizada para cada um dos segmentos físicos com base na inicialização completando para todos os segmentos físicos.
[0095] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a execução inclui a determinação de que o software está processando em um dos segmentos físicos mapeados; e com base na determinação, completar a instrução iniciar-VE e notificação ao hospedeiro que o instrução iniciar-VE falhou.
[0096] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir de que maneira a execução inclui a determinação de que o firmware interno está processando em um dos segmentos físicos mapeados; e com base na determinação, realizar pelo menos um dentre: anular a instrução iniciar-VE e devolver o controle ao hospedeiro; e aguardar que o segmento físico mapeado fique disponível.
[0097] A terminologia aqui utilizada é para fins de descrição de concretizações particulares somente e não pretende limitar a invenção. Conforme utilização neste documento, as formas singulares “um”, “uma”, “o”, “a” pretendem também incluir as formas plurais, salvo indicação clara do contrário no contexto. Fica ainda entendido que os termos “compreendendo” e/ou “englobando” quando utilizados nesta especificação, determinam a presença de características, números inteiros, etapas, operações, elementos e/ou componentes definidos, mas não impedem a presença ou adição de uma ou mais características, números inteiros, etapas, operações, elementos componentes, e/ou grupos deles.
[0098] As estruturas correspondentes, materiais, atos, e equivalentes de todos os meios ou etapas mais elementos de função nas reivindicações abaixo tencionam incluir qualquer estrutura, material ou ato para a realização de função em combinação com outros elementos reivindicados conforme especificamente reclamados. A descrição da presente invenção foi apresentada para fins de ilustração e descrição, mas não pretende ser exaustiva ou limitada à invenção na forma revelada. Muitas modificações e variações serão evidentes para os especialistas na matéria sem ter como ponto de partida o escopo e espírito da invenção. A concretização foi escolhida e descrita a fim de melhor explicar os princípios da invenção e a aplicação prática, e para permitir que aqueles de conhecimento normal do assunto compreendam a invenção por várias concretizações com várias modificações convenientes ao uso particular contemplado.
[0099] As descrições das várias concretizações da presente invenção foram apresentadas com fins ilustrativos, mas não tencionam ser exaustivas ou limitadas às concretizações reveladas. Muitas modificações e variações serão evidentes para aqueles de especialização ordinária no assunto sem ter como ponto de partida o escopo e o espírito das concretizações descritas. A terminologia aqui utilizada foi escolhida para melhor explicar os princípios das concretizações, sua aplicação prática ou aperfeiçoamento técnico em tecnologias encontradas no mercado, ou para permitir que aqueles de conhecimento normal do assunto compreendam as concretizações aqui reveladas.
[00100] Com referência agora à FIG. 16, num exemplo, um produto programa de computador 1600 inclui, por exemplo, uma ou mais mídias de armazenamento 1602, em que a mídia pode ser tangível e/ou não transitória, para armazenar meios ou lógica de código de programa legíveis por computador 1604 para fornecer e facilitar um ou mais aspectos de concretizações aqui descritas.
[00101] A presente invenção pode ser um sistema, um método, e/ou um produto programa de computador. O produto programa de computador pode incluir uma mídia de armazenamento de leitura por computador com instruções de programa de computador legíveis para que um processador possa realizar aspectos da presente invenção.
[00102] A mídia de armazenamento de leitura por computador pode ser um dispositivo tangível que possa reter e armazenar instruções para uso por um dispositivo de execução de instrução. A mídia de armazenamento de leitura por computador pode ser, por exemplo, mas sem restrição, um dispositivo de armazenamento eletrônico, um dispositivo de armazenamento magnético, um dispositivo de armazenamento ótico, um dispositivo de armazenamento eletromagnético, um dispositivo de armazenamento semicondutor, ou qualquer combinação adequada dos antecedentes. Uma lista não exaustiva de exemplos mais específicos de mídia de armazenamento de leitura por computador inclui o seguinte: um disquete portátil, um disco rígido, memória RAM, memória ROM, memória EPROM ou Flash, memória SRAM, CD-ROM, DVD, cartão de memória, disquete, dispositivo codificado mecanicamente, como cartão perfurado ou estruturas suspensas em sulcos com instruções gravadas, e qualquer combinação adequada dos precedentes. A mídia de armazenamento de leitura por computador, conforme utilizada neste documento, não deve ser interpretada como sinais transitórios em si mesmos, tais como ondas de rádio ou outras ondas eletromagnéticas de propagação livre, ondas eletromagnéticas que se propagam por guia de onda ou outro meio de transmissão (e.g., pulsos de luz passando por cabo de fibra ótica), ou sinais elétricos transmitidos por cabo.
[00103] As instruções de programa de leitura por computador descritas aqui podem ser baixadas para respectivos dispositivos de computação/processamento a partir de uma mídia de armazenamento de leitura por computador ou para um computador externo ou dispositivo de armazenamento externo via rede, por exemplo, a Internet, uma área de rede local, rede de longa distância e/ou rede sem fio. A rede pode compreender cabos de transmissão de cobre, fibras óticas de transmissão, transmissão sem fio, roteadores, firewalls, comutadores, computadores gateway e/ou servidores periféricos. Um cartão adaptador de rede ou interface de rede em cada dispositivo de computação/processamento recebe instruções de programa de leitura por computador da rede e encaminha as instruções de programa de leitura de computador para armazenamento em uma mídia de armazenamento de leitura por computador dentro do respectivo dispositivo de computação/processamento.
[00104] As instruções de programa de leitura por computador para realizar operações da presente invenção podem ser instruções assembler, instruções ISA, instruções de máquina, instruções dependentes de máquina, microcódigo, instruções firmware, dados de definição de estado, ou código de fonte ou código de objeto escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo linguagem de programação orientada a objetos, como a Smalltalk, C++ ou similares, e linguagens de programação de procedimento convencional, como a linguagem de programação “C” ou linguagens de programação similares. As instruções de programa de leitura por computador podem ser executadas inteiramente no computador do usuário, parcialmente no computador do usuário, como um pacote autônomo de software, parcialmente no computador do usuário e parcialmente num computador remoto ou inteiramente num computador remoto ou servidor. No último cenário, o computador remoto pode estar conectado ao computador do usuário através de qualquer tipo de rede, incluindo rede local (LAN), ou rede de longa distância (WAN), ou a conexão pode ser feita a um computador externo (por exemplo, através da Internet utilizando um provedor de serviços da Internet). Em algumas concretizações, circuitos eletrônicos incluindo, por exemplo, circuitos programáveis lógicos, arranjos de portas programáveis em campo (FPGA), ou arranjos lógicos programáveis (PLA) podem executar as instruções de programa de leitura por computador mediante a utilização de informações de estado das instruções de programa de leitura por computador para personalizar os circuitos eletrônicos a fim de realizar aspectos da presente invenção.
[00105] Aspectos da presente invenção estão descritos neste documento com referência a ilustrações de fluxograma e/ou diagramas de blocos de métodos, sistemas e produtos programa de computador de acordo com concretizações da invenção. Fica entendido que cada bloco das ilustrações do fluxograma e/ou diagramas de bloco, e combinações de blocos nas ilustrações de fluxogramas e/ou diagramas de blocos podem ser implementados por instruções de programa de leitura por computador.
[00106] As instruções de programa de leitura por computador podem ser fornecidas para o processador de um computador de propósito geral, computador de propósito específico, ou outro equipamento programável de processamento de dados para produzir uma máquina, de forma que as instruções, executadas via processador do computador ou outro equipamento programável de processamento de dados, criem meios para a implementação das funções/ações especificadas no fluxograma ou no bloco ou blocos do diagrama de blocos. Essas instruções de programa de leitura por computador podem também ser armazenadas em mídia de leitura por computador que pode direcionar um computador, equipamento programável de processamento de dados e/ou outros dispositivos para funcionamento de uma forma determinada, de modo que a mídia de leitura por computador, contendo instruções armazenadas, compreenda um artigo manufaturado que inclua instruções que implementem aspectos da função/ação especificada no fluxograma e/ou no bloco ou blocos do diagrama de blocos.
[00107] As instruções de programa de leitura por computador podem também ser carregadas para um computador, outro equipamento programável de processamento de dados, ou outro dispositivo que propicie uma série de etapas operacionais a serem realizadas no computador, outro equipamento programável de processamento de dados ou outro dispositivo para produzir um processo implementado no computador, de forma que as instruções sendo executados no computador, em outro equipamento programável de processamento de dados ou em outro dispositivo implementem as funções/ações especificadas no fluxograma e/ou no bloco ou blocos do diagrama de blocos.
[00108] Os fluxogramas e diagramas de blocos nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis efetivações de sistemas, métodos e produtos programa de computador de acordo com várias concretizações da presente invenção. A esse respeito, cada bloco no fluxograma ou nos diagramas de bloco pode representar um módulo, um segmento, ou parte de instruções que compreendem uma ou mais instruções executáveis para efetivação da(s) função(ões) lógica(s) especificada(s). Em algumas implementações alternativas, as funções marcadas no bloco podem ocorrer fora da ordem marcada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, na realidade, ser executados, na maior parte, concomitantemente, ou os blocos podem, às vezes, ser executados na ordem reversa, dependendo da funcionalidade envolvida. Também deverá ser observado que cada bloco dos diagramas de blocos e/ou ilustração do fluxograma, e combinações de blocos nos diagramas de blocos e/ou ilustração do fluxograma podem ser implementadas por sistemas com base em hardware de propósito específico que desempenham as funções ou ações especificadas ou realizam combinações de hardware de propósito específico e instruções de computador.

Claims (17)

1. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, onde o equipamento ou sistema de computador para execução de uma máquina virtual (VM) convidada multissegmentada, é caracterizado por compreender: uma configuração compreendendo uma máquina que inclui um núcleo único ativado para operar em modo tarefa única (ST) e em modo multitarefa (MT), dito núcleo único incluindo múltiplos segmentos físicos, dita máquina estando configurada para realizar um método compreendendo emissão de uma instrução de iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada compreendendo segmentos lógicos múltiplos no dito núcleo único, dita entidade convidada incluindo o todo ou uma parte de uma máquina virtual (VM) convidada, dita emissão de uma instrução de iniciar-VE sendo realizada por um hospedeiro processando em um dos múltiplos segmentos físicos no núcleo no modo ST; e a execução da instrução iniciar-VE pela máquina compreendendo mapeamento de cada um dos segmentos lógicos múltiplos para correspondente dos múltiplos segmentos físicos; inicialização de cada um dos múltiplos segmentos físicos mapeados com o estado do segmento lógico correspondente; e início da execução da entidade convidada no núcleo único físico no modo MT.
2. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizado por: apenas múltiplos segmentos lógicos válidos serem mapeados para um segmento físico correspondente.
3. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizada por: a dita inicialização incluir carregamento, para cada um dos segmentos lógicos múltiplos, de parte do estado do segmento lógico no segmento físico correspondente; e completar, por todo segmento físico mapeado, o carregamento do restante do estado do segmento lógico correspondente, dito restante do estado do segmento lógico correspondente sendo determinado baseado na parte do estado do segmento lógico correspondente.
4. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 3, caracterizado por: a parte do estado do segmento lógico correspondente incluir um endereço de uma descrição de estado do restante do estado do segmento ógico correspondente.
5. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 3, caracterizado por: um dos múltiplos segmentos físicos realizar o carregamento, para cada um dos segmentos lógicos múltiplos, de parte do estado do segmento lógico correspondente.
6. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizado por: a execução compreender ainda a verificação de que os múltiplos segmentos físicos mapeados não estão processando no momento nenhum código de programa ou código interno anterior à inicialização.
7. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizado por: a execução inicial ser realizada para cada um dos múltiplos segmentos físicos com base em completar a inicialização para o segmento físico.
8. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a a reivindicação 1, caracterizado por: a execução inicial ser realizada para cada um dos múltiplos segmentos físicos com base em completar a inicialização para todos os segmentos físicos.
9. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizado por: a execução compreender ainda a determinação de que o software está processando em um dos múltiplos segmentos físicos mapeados; e com base na determinação, completar a instrução iniciar-VE e notificar o hospedeiro de que a instrução iniciar-VE falhou.
10. EQUIPAMENTO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 1, caracterizado por: a execução compreender ainda a determinação de que o firmware interno está processando em um dos múltiplos segmentos físicos mapeados; e com base na determinação, a realização de pelo menos a anulação da instrução iniciar-VE e retorno do controle ao hospedeiro; e aguardar que o segmento físico mapeado fique disponível.
11. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR caracterizado por: executar uma máquina virtual (VM) convidada multissegmentada numa configuração compreendendo uma máquina que inclui um único núcleo físico ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT), o único núcleo físico incluindo múltiplos segmentos físicos e a máquina ser configurada para realizar as etapas de emissão de instrução iniciar-execução-virtual (iniciar-VE) para executar uma entidade convidada compreendendo segmentos lógicos múltiplos no único núcleo físico, a entidade convidada toda ou uma parte de uma VM convidada, a emissão de instrução iniciar VE sendo realizada por um hospedeiro processando em um dos múltiplos segmentos físicos no único núcleo físico no modo ST; e execução da instrução iniciar-VE pela máquina compreendendo mapeamento de cada um dos segmentos lógicos múltiplos para um correspondente dos múltiplos segmentos físicos; inicialização de cada um dos múltiplos segmentos físicos mapeados com um estado do segmento lógico correspondente; e início da execução da entidade convidada no único núcleo físico no modo MT.
12. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 11, caracterizado por: apenas segmentos lógicos múltiplos válidos serem mapeados para um segmento físico correspondente.
13. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 11, caracterizado por: a inicialização incluir carregamento, para cada um dos segmentos lógicos múltiplos, de uma parte do estado do segmento lógico no segmento físico correspondente; e completar o carregamento, por cada segmento físico mapeado, do restante do estado do segmento lógico correspondente, o restante do estado do segmento lógico correspondente sendo determinado baseado na parte do estado do segmento lógico correspondente.
14. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 11, caracterizado por: um dos múltiplos segmentos físicos realizar o carregamento, para cada um dos segmentos lógicos múltiplos, de parte do estado do segmento lógico correspondente.
15. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 11, caracterizado por: a execução compreender ainda a verificação de que os múltiplos segmentos físicos mapeados não estão no momento processando nenhum código de programa ou código interno anterior à inicialização.
16. MÉTODO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, de acordo com a reivindicação 11, caracterizado por: a execução inicial ser realizada para cada um dos múltiplos segmentos físicos com base em completar a inicialização para o segmento físico.
17. SUPORTE FÍSICO PARA EXECUÇÃO DE SEGMENTOS MÚLTIPLOS EM COMPUTADOR, caracterizado por conter gravado qualquer dos métodos das reivindicações 11, 12, 13, 14, 15 e 16.
BR112016022282-2A 2014-03-27 2015-03-20 Equipamento, método e suporte físico para execução de segmentos múltiplos em computador BR112016022282B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,955 2014-03-27
US14/226,955 US9195493B2 (en) 2014-03-27 2014-03-27 Dispatching multiple threads in a computer
PCT/EP2015/055942 WO2015144585A1 (en) 2014-03-27 2015-03-20 Dispatching multiple threads in a computer

Publications (2)

Publication Number Publication Date
BR112016022282A2 BR112016022282A2 (pt) 2017-08-15
BR112016022282B1 true BR112016022282B1 (pt) 2022-12-06

Family

ID=52727125

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016022282-2A BR112016022282B1 (pt) 2014-03-27 2015-03-20 Equipamento, método e suporte físico para execução de segmentos múltiplos em computador

Country Status (15)

Country Link
US (1) US9195493B2 (pt)
EP (1) EP3123319A1 (pt)
JP (1) JP6501791B2 (pt)
KR (1) KR101843676B1 (pt)
CN (1) CN106170768B (pt)
AU (1) AU2015238517B2 (pt)
BR (1) BR112016022282B1 (pt)
CA (1) CA2940923A1 (pt)
IL (1) IL247889B (pt)
MX (1) MX2016012528A (pt)
RU (1) RU2666249C2 (pt)
SG (1) SG11201606090RA (pt)
TW (1) TWI617986B (pt)
WO (1) WO2015144585A1 (pt)
ZA (1) ZA201606254B (pt)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US10198298B2 (en) * 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework
US10146592B2 (en) 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US10437635B2 (en) 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
CN105871917A (zh) * 2016-06-08 2016-08-17 北京金山安全管理系统技术有限公司 传输控制协议tcp连接调度的方法及装置
US10372498B2 (en) * 2016-09-26 2019-08-06 Intel Corporation Dynamic virtual CPU core allocation
US10771554B2 (en) * 2017-09-30 2020-09-08 Intel Corporation Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
GB2574049B (en) * 2018-05-24 2020-10-07 Advanced Risc Mach Ltd Interrupt controller

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4456954A (en) 1981-06-15 1984-06-26 International Business Machines Corporation Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations
EP0150177A1 (en) 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
CA1213986A (en) 1983-12-14 1986-11-12 Thomas O. Curlee, Iii Selective guest system purge control
US4779188A (en) 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4792895A (en) 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
JPH0658650B2 (ja) 1986-03-14 1994-08-03 株式会社日立製作所 仮想計算機システム
JPS6474632A (en) * 1987-09-16 1989-03-20 Fujitsu Ltd Control transfer system for virtual computer
US5317754A (en) 1990-10-23 1994-05-31 International Business Machines Corporation Method and apparatus for enabling an interpretive execution subset
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
EP0619898A4 (en) 1992-01-02 1995-05-03 Amdahl Corp COMPUTER SYSTEM WITH TWO GAS SHIFTS.
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
US6453392B1 (en) 1998-11-10 2002-09-17 International Business Machines Corporation Method of and apparatus for sharing dedicated devices between virtual machine guests
US6349365B1 (en) 1999-10-08 2002-02-19 Advanced Micro Devices, Inc. User-prioritized cache replacement
JP2004506262A (ja) 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
EP1182567B1 (en) 2000-08-21 2012-03-07 Texas Instruments France Software controlled cache configuration
EP1267572A2 (en) * 2001-06-11 2002-12-18 Canal+ Technologies Société Anonyme Improvements in the field of programme delivery
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7155600B2 (en) 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7130949B2 (en) * 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7694304B2 (en) 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7526421B2 (en) 2004-02-27 2009-04-28 International Business Machines Corporation System and method for modeling LPAR behaviors in a simulation tool
US7873776B2 (en) 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US8271976B2 (en) 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
WO2009076324A2 (en) * 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
CN102184123B (zh) * 2005-03-02 2013-10-16 英特尔公司 一种附加地支持虚拟多线程的多线程处理器及系统
US20060242389A1 (en) 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US7493436B2 (en) * 2006-10-26 2009-02-17 International Business Machines Corporation Interrupt handling using simultaneous multi-threading
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8621459B2 (en) 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
US8286170B2 (en) 2007-01-31 2012-10-09 International Business Machines Corporation System and method for processor thread allocation using delay-costs
JP5595633B2 (ja) 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
US9164784B2 (en) 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
WO2009101563A1 (en) 2008-02-11 2009-08-20 Nxp B.V. Multiprocessing implementing a plurality of virtual processors
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
FR2950714B1 (fr) 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
US8650554B2 (en) 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
CN102193779A (zh) 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
US8856452B2 (en) 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US8990830B2 (en) 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
US8752036B2 (en) 2011-10-31 2014-06-10 Oracle International Corporation Throughput-aware software pipelining for highly multi-threaded systems
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8930950B2 (en) 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US9032191B2 (en) 2012-01-23 2015-05-12 International Business Machines Corporation Virtualization support for branch prediction logic enable / disable at hypervisor and guest operating system levels
JP5813554B2 (ja) * 2012-03-30 2015-11-17 ルネサスエレクトロニクス株式会社 半導体装置
US8682877B2 (en) * 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
CN102866957B (zh) 2012-07-31 2014-07-30 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
JP6074955B2 (ja) 2012-08-31 2017-02-08 富士通株式会社 情報処理装置および制御方法

Also Published As

Publication number Publication date
CN106170768A (zh) 2016-11-30
RU2016127435A3 (pt) 2018-04-28
CA2940923A1 (en) 2015-10-01
SG11201606090RA (en) 2016-08-30
WO2015144585A1 (en) 2015-10-01
CN106170768B (zh) 2020-01-03
AU2015238517B2 (en) 2018-02-22
MX2016012528A (es) 2016-12-20
BR112016022282A2 (pt) 2017-08-15
JP2017513128A (ja) 2017-05-25
KR101843676B1 (ko) 2018-05-14
KR20160124887A (ko) 2016-10-28
JP6501791B2 (ja) 2019-04-17
TWI617986B (zh) 2018-03-11
EP3123319A1 (en) 2017-02-01
RU2666249C2 (ru) 2018-09-06
IL247889A0 (en) 2016-11-30
US9195493B2 (en) 2015-11-24
AU2015238517A1 (en) 2016-08-11
US20150277946A1 (en) 2015-10-01
RU2016127435A (ru) 2018-04-28
TW201610854A (zh) 2016-03-16
ZA201606254B (en) 2017-08-30
IL247889B (en) 2019-10-31

Similar Documents

Publication Publication Date Title
BR112016022282B1 (pt) Equipamento, método e suporte físico para execução de segmentos múltiplos em computador
BR112016022283B1 (pt) Equipamento, método e suporte físico para área de controle para gerenciamento de múltiplos segmentos em computadores
AU2015238706B2 (en) Start virtual execution instruction for dispatching multiple threads in a computer
JP6556747B2 (ja) コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
US9389897B1 (en) Exiting multiple threads of a simulation environment in a computer

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 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 20/03/2015, OBSERVADAS AS CONDICOES LEGAIS