BR112016022283B1 - Equipamento, método e suporte físico para área de controle para gerenciamento de múltiplos segmentos em computadores - Google Patents

Equipamento, método e suporte físico para área de controle para gerenciamento de múltiplos segmentos em computadores Download PDF

Info

Publication number
BR112016022283B1
BR112016022283B1 BR112016022283-0A BR112016022283A BR112016022283B1 BR 112016022283 B1 BR112016022283 B1 BR 112016022283B1 BR 112016022283 A BR112016022283 A BR 112016022283A BR 112016022283 B1 BR112016022283 B1 BR 112016022283B1
Authority
BR
Brazil
Prior art keywords
core
logical
segment
description
area
Prior art date
Application number
BR112016022283-0A
Other languages
English (en)
Other versions
BR112016022283A2 (pt
Inventor
Lisa Cranton Heller
Jonathan David Bradbury
Jeffrey Paul Kubala
Mark S. Farrell
Damian Leo Osisek
Dan F. Greiner
Timothy Slegel
Fadi Yusuf Busaba
Donald William Schmidt
Charles Gainey Jr
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 BR112016022283A2 publication Critical patent/BR112016022283A2/pt
Publication of BR112016022283B1 publication Critical patent/BR112016022283B1/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/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/45583Memory management, e.g. access or allocation

Landscapes

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

Abstract

EQUIPAMENTO, MÉTODO E PRODUTO PROGRAMA DE COMPUTADOR PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES. Um equipamento ou sistema de computador inclui uma configuração de máquina virtual (VM) com um ou mais núcleos. Cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um segmento único e o modo MT consiste de uma pluralidade de segmentos em recursos compartilhados de um respectivo núcleo. O sistema de computador inclui uma área de sistema de controle orientada ao núcleo (COSCA) com uma área comum representando todos os núcleos da configuração VM e áreas de descrição de núcleo separadas para cada um dos núcleos da configuração VM. Cada área de descrição de núcleo indica uma localização de uma ou mais áreas de descrição de segmento, cada uma representando um segmento dentro do núcleo respectivo, e cada área de descrição de segmento indica a localização da descrição do estado do segmento respectivo.

Description

CAMPO TÉCNICO DA INVENÇÃO
[001] A invenção atual refere-se, de modo geral, a multissegmentos (MT) e, mais especificamente, à área de sistema de controle orientada ao núcleo (COSCA) para gerenciamento de múltiplos segmentos em computador.
ANTECEDENTES
[002] A multissegmentação (MT) permite o aumento do número de segmentos processados que podem operar em paralelo com um único núcleo processador físico, sem a necessidade de segmentos adicionais. Em condições ideais, a MT proporciona esse aumento de capacidade utilizando uma ou mais partes de segmentos do núcleo do hardware que não estiverem sendo utilizados por outro(s) segmento(s) no mesmo núcleo. Por exemplo, durante o período de latência causado por falta de acesso ao cache, ou outro atraso em um segmento, um ou mais segmentos podem utilizar os recursos do núcleo. Apesar de na prática esse compartilhamento resultar em alguma interferência entre os segmentos e requerer hardware adicional, a MT ainda possibilita o desempenho de trabalho de cada segmento usando menos hardware do que seria necessário caso cada segmento fosse executado em seu próprio núcleo de hardware isoladamente. Frequentemente, podem-se obter vantagens adicionais da MT quando o compartilhamento dos recursos do hardware entre os segmentos também diminui a tensão geral no sistema do computador para obtenção de informações, tais como dados da memória, para dois únicos núcleos.
[003] Caracteristicamente, apesar de a MT proporcionar uma economia de hardware, a incorporação de outro segmento de trabalho consome o mesmo custo de coordenação no nível do hipervisor que seria necessário para aumentar a capacidade através de um núcleo adicional separado. Em muitos casos, uma vez que uma certa escala tenha sido atingida, o custo operacional para coordenar os recursos entre os segmentos de trabalho, quer sejam executados em núcleo isolado ou compartilhado, é substancial e pode diminuir ou até mesmo suplantar os benefícios existentes para utilizar um segmento independente de trabalho. Ou seja, geralmente, existem mais despesas de gerenciamento na medida em que aumentam os objetos a gerenciar.
SUMÁRIO DA INVENÇÃO
[004] As concretizações incluem um sistema, um método e um produto programa de computador para o gerenciamento de áreas de múltiplos segmentos em um computador. De acordo com um aspecto, um sistema de computador inclui uma configuração de máquina virtual (VM) com um ou mais núcleos, em que cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um único segmento e o modo MT consiste de múltiplos segmentos em recursos compartilhados de um respectivo núcleo. O sistema do computador também inclui uma área de sistema de controle orientada ao núcleo (COSCA) com uma área em comum representando todos os núcleos (um ou mais) da configuração da VM e áreas de descrição de núcleo separadas para cada núcleo, na configuração da VM. Cada área de descrição do núcleo indica a localização de uma ou mais áreas de descrição de segmento, cada uma representando um segmento dentro de um respectivo núcleo, e cada área de descrição de segmento indica uma localização de uma descrição de estado do respectivo segmento. O sistema do computador ainda inclui um recurso definido para controlar a configuração para realizar um método. O método inclui gerenciamento de segmentos de um ou mais núcleos da configuração da VM baseado nos conteúdos da COSCA.
[005] De acordo com outro aspecto, é disponibilizado um método implantado em computador para gerenciar múltiplos segmentos em determinada máquina virtual (VM). A configuração inclui um ou mais núcleos, em que os núcleos são ativados para operar em um modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um segmento único e o modo MT consiste de uma pluralidade de segmentos em recursos compartilhados de um respectivo núcleo. O método inclui uma área de controle de sistema orientada para o núcleo (COSCA) com uma área comum representando todos os núcleos da configuração da VM e áreas de descrição de núcleo separadas para cada núcleo, de um ou mais núcleos na configuração da VM. Cada área de descrição de núcleo indica a localização da área de descrição de um ou mais segmentos, cada uma representando o segmento dentro do respectivo núcleo, e cada área de descrição de segmento indicando a localização de uma descrição do estado de cada respectivo segmento. O método ainda inclui gerenciamento, por um núcleo, de segmentos de um ou mais núcleos da configuração da VM, com base nos conteúdos da COSCA.
[006] Outro aspecto inclui um produto programa de computador para gerenciar múltiplos segmentos em uma configuração de máquina virtual (VM). A configuração inclui um ou mais núcleos, em que cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um único segmento e o modo MT consiste de uma pluralidade de segmentos em recursos compartilhados de um respectivo núcleo. O produto programa de computador inclui uma mídia de armazenamento de leitura por computador com instruções de programa contidas nela, em que a mídia de armazenamento de leitura por computador não é um sinal, as instruções do programa legíveis por um circuito de processamento fazem com que o circuito de processamento realize um método. O método inclui a disponibilização de uma área de controle de sistema orientada ao núcleo (COSCA), com uma área comum representando todos os núcleos na configuração da VM e áreas de descrição do núcleo separadas para cada núcleo dos núcleos existentes na configuração da VM. Cada área de descrição do núcleo indica a localização da área de descrição de um ou mais segmentos, cada uma representando um segmento dentro do respectivo núcleo, e cada área de descrição de segmento indica a localização de uma descrição do estado do respectivo segmento. O método também inclui o gerenciamento, por um núcleo, de segmentos de um ou mais núcleos da configuração de uma VM com base nos conteúdos da COSCA.
DESCRIÇÃO RESUMIDA DOS DESENHOS
[007] O assunto, considerado nas concretizações, está especificamente apontado e destacado 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 a descrição de estado de um segmento lógico multissegmentado (MT) de acordo com uma concretização; A FIG 5 retrata um diagrama de blocos de uma máscara de validade de segmentos (TVM) de acordo com uma concretização; A FIG 6 retrata um grupo de descrição de um estado de deslocamento fixo de acordo com uma concretização; A FIG 7 retrata um grupo de descrição de um estado especificado com uma lista de endereço de acordo com uma concretização; A FIG 8 retrata um grupo de descrição do estado especificado com uma lista vinculada de acordo com uma concretização; A FIG 9 retrata um grupo de descrição do estado especificado como uma lista circular ou em anel de acordo com uma concretização; A FIG.10 retrata um processo de execução de núcleo de acordo com uma concretização; A FIG 11 retrata uma saída coordenada de uma 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 coordenação entre núcleos multissegmentados de acordo com uma concretização; e A FIG. 14 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] 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.
[0012] 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.
[0013] 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).
[0014] 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.
[0015] 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.
[0016] 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.
[0017] 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.
[0018] 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.
[0019] 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.
[0020] 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.
[0021] 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.
[0022] 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.
[0023] 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.
[0024] 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.
[0025] 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.
[0026] 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.
[0027] 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.
[0028] 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.
[0029] 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.
[0030] 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.
[0031] 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.
[0032] 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.
[0033] 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.
[0034] 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.
[0035] 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.
[0036] 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.
[0037] 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, entitulado "Address Expansion and Contraction in a Multithreading Computer System" (Expansão e Contração de Endereço em Sistema Computacional Multitarefa) protocolado em 27 de março de 2014, cujo conteúdo é aqui incorporado como referência na sua totalidade.
[0038] 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”.
[0039] 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.
[0040] 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.
[0041] 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.
[0042] 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.
[0043] 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.
[0044] 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.
[0045] 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.
[0046] 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.
[0047] 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.
[0048] 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.
[0049] 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.
[0050] 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.
[0051] 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.
[0052] 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).
[0053] 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.
[0054] 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.
[0055] 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.
[0056] 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.
[0057] 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.
[0058] 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”.
[0059] 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.
[0060] 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.
[0061] Os efeitos e benefícios técnicos incluem o fornecimento de suporte ao gerenciamento de segmento para um hospedeiro (e.g., um hipervisor) numa configuração de VM. A COSCA pode ser utilizada para auxiliar no gerenciamento permitindo ao hospedeiro o acesso fácil às descrições de estado para todos os segmentos na configuração da VM.
[0062] As concretizações incluem um sistema, um método e um produto programa de computador para uma área de gerenciamento de múltiplos segmentos existentes em um computador. De acordo com um aspecto, um sistema de computador inclui uma configuração de máquina virtual (VM) com um ou mais núcleos, em que cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um único segmento e o modo MT consiste de múltiplos segmentos em recursos compartilhados de um respectivo núcleo. O sistema do computador também inclui uma área de sistema de controle orientada ao núcleo (COSCA) com uma área em comum representando todos os núcleos (um ou mais) da configuração da VM e áreas de descrição de núcleo separadas para cada núcleo, na configuração da VM. Cada área de descrição do núcleo indica a localização de uma ou mais áreas de descrição de segmento, cada uma representando um segmento dentro de um respectivo núcleo, e cada área de descrição de segmento indica uma localização de uma descrição de estado do respectivo segmento. O sistema do computador ainda inclui um recurso definido para controlar a configuração para realizar um método. O método inclui gerenciamento de segmentos de um ou mais núcleos da configuração da VM baseado nos conteúdos da COSCA.
[0063] Outro aspecto inclui um método implementado por computador para gerenciar múltiplos segmentos em uma configuração de máquina virtual (VM). A configuração inclui um ou mais núcleos, em que cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um único segmento e o modo MT consiste de uma pluralidade de segmentos em recursos compartilhados de um respectivo núcleo. O método inclui a disponibilização de uma área de controle de sistema orientada ao núcleo (COSCA), com uma área comum representando todos os núcleos na configuração da VM e áreas de descrição do núcleo separadas para cada núcleo dos núcleos existentes na configuração da VM. Cada área de descrição do núcleo indica a localização da área de descrição de um ou mais segmentos, cada uma representando um segmento dentro do respectivo núcleo, e cada área de descrição de segmento indica a localização de uma descrição do estado do respectivo segmento. O método também inclui o gerenciamento, por um núcleo, de segmentos de um ou mais núcleos da configuração de uma VM com base nos conteúdos da COSCA.
[0064] Um aspecto adicional inclui um produto programa de computador para gerenciar múltiplos segmentos em uma configuração de máquina virtual (VM). A configuração inclui um ou mais núcleos, em que cada núcleo é ativado para operar em modo tarefa única (ST) ou em modo multitarefa (MT). O modo ST consiste de um único segmento e o modo MT consiste de uma pluralidade de segmentos em recursos compartilhados de um respectivo núcleo. O produto programa de computador inclui uma mídia de armazenamento de leitura por computador com instruções de programa contidas nela, em que a mídia de armazenamento de leitura por computador não é um sinal, as instruções do programa legíveis por um circuito de processamento fazem com que o circuito de processamento realize um método. O método inclui a disponibilização de uma área de controle de sistema orientada ao núcleo (COSCA), com uma área comum representando todos os núcleos na configuração da VM e áreas de descrição do núcleo separadas para cada núcleo dos núcleos existentes na configuração da VM. Cada área de descrição do núcleo indica a localização da área de descrição de um ou mais segmentos, cada uma representando um segmento dentro do respectivo núcleo, e cada área de descrição de segmento indica a localização de uma descrição do estado do respectivo segmento. O método também inclui o gerenciamento, por um núcleo, de segmentos de um ou mais núcleos da configuração de uma VM com base nos conteúdos da COSCA.
[0065] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir local em que a área comum indica ainda localizações das áreas de descrição de um ou mais núcleos separados para um ou mais núcleos.
[0066] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir local em que a área comum inclui ainda a máscara de validade do núcleo que indica a validade de um ou mais núcleos.
[0067] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir local em que a área de descrição do núcleo inclui ainda a máscara de validade do segmento que indica a validade de um ou mais segmentos associados ao núcleo.
[0068] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir pelo menos: cada uma das áreas de descrição do núcleo indica ainda a localização da área comum; cada uma das descrições de estado indica ainda a localização de uma área de descrição de segmento do respectivo segmento, cada uma das áreas de descrição de segmento indica ainda a localização de uma área de descrição do núcleo do respectivo núcleo, e cada uma das áreas de descrição de segmento indica ainda a localização da área comum.
[0069] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir o local em que cada uma ou mais descrições de estado incluem ainda a localização da área comum.
[0070] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir local em que a área comum indica ainda as localizações das áreas de descrição de um ou mais núcleos separados para um ou mais núcleos, a área comum inclui ainda a máscara de validade do núcleo que indica a validade de um ou mais núcleos, e a área de descrição do núcleo inclui ainda a máscara de validade do segmento que indica a validade de um ou mais segmentos associados ao núcleo.
[0071] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir o local em que o gerenciamento inclui o fornecimento de coordenação entre os segmentos na configuração da VM.
[0072] Em adição a uma ou mais características descritas acima, ou como uma alternativa, outras concretizações podem incluir o local em que o gerenciamento inclui a modificação do conteúdo de uma área de descrição de segmento.
[0073] 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.
[0074] 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.
[0075] 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.
[0076] Com referência agora à FIG. 14, num exemplo, um produto programa de computador 1400 inclui, por exemplo, uma ou mais mídias de armazenamento 1402, 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 1404 para fornecer e facilitar um ou mais aspectos de concretizações aqui descritas.
[0077] 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.
[0078] 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.
[0079] 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.
[0080] 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.
[0081] 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.
[0082] 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.
[0083] 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.
[0084] 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 (8)

1. EQUIPAMENTO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES caracterizado por compreender um processador, em comunicação com uma ou mais memórias dito processador estando configurado para executar uma configuração de máquina virtual (VM) compreendendo pelo menos um primeiro núcleo lógico e um segundo núcleo lógico, cada um desses primeiro núcleo lógico e segundo núcleo lógico núcleo estando ativados para operar em modo tarefa única (ST) ou em modo multitarefa (MT), o modo ST consistindo de segmento único e o modo MT consistindo de uma pluralidade de segmentos em recursos compartilhados de um ou mais núcleos físicos; executar uma área de controle de sistema orientada ao núcleo (COSCA) compreendendo uma área comum representando pelo menos o primeiro núcleo lógico e o segundo núcleo lógico, a COSCA compreendendo ainda uma primeira área de descrição de núcleo para o primeiro núcleo lógico e uma segunda área de descrição de núcleo para o segundo núcleo lógico, a primeira área de descrição de núcleo indicando uma localização de um primeiro conjunto de uma ou mais áreas de descrição de segmento e a segunda área de descrição de núcleo indicando uma localização de um segundo conjunto de uma ou mais áreas de descrição de segmento, onde cada área de descrição de segmento do primeiro conjunto contém um endereço de descrição de estado indicando uma localização de descrição de estado de um segmento lógico no primeiro núcleo lógico e cada área de descrição de segmento no segundo conjunto contém um endereço de descrição de estado indicando uma localização de descrição de estado de um segmento lógico no segundo núcleo lógico, onde a COSCA é implementada como uma estrutura de árvore compreendendo uma primeira folha representando o primeiro núcleo lógico e uma segunda folha representando o segundo núcleo lógico e onde a primeira folha contém uma primeira lista de um primeiro conjunto de um ou mais segmentos lógicos no primeiro núcleo lógico e a segunda folha contém uma segunda lista de um segundo conjunto de um ou mais segmentos lógicos no segundo núcleo lógico; executar, através de um hipervisor configurado para controlar a configuração da VM usando a COSCA, uma instrução de despacho do primeiro núcleo para despachar o primeiro núcleo lógico em um núcleo físico, onde o hipervisor opera em no odo ST e a instrução de despacho do primeiro núcleo especifica que o primeiro núcleo lógico deve ser despachado no modo MT; executar um primeiro segmento lógico do primeiro núcleo lógico para emitir uma instrução de interrupção entre processadores para sinalizar um segundo segmento lógico do segundo núcleo lógico; modificar uma descrição de estado associada a uma área de descrição de segmento do segundo conjunto ao segundo segmento lógico para fazer uma interrupção entre processadores que está associada a instrução de interrupção entre processadores pendente; executar, através do hipervisor, uma instrução de despacho do segundo núcleo para o segundo núcleo lógico no núcleo físico; habilitar o segundo núcleo lógico para a permitir a interrupção entre processadores; e apresentar a interrupção entre processadores ao primeiro núcleo lógico;
2. EQUIPAMENTO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES, de acordo com a reivindicação 1, caracterizado por a área comum incluir ainda uma máscara de validade do núcleo que indica a validade de cada primeiro núcleo lógico e segundo núcleo logico;
3. EQUIPAMENTO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES, de acordo com a reivindicação 1, caracterizado por a área de descrição do primeiro núcleo incluir ainda uma máscara de validade do segmento que indica a validade de um ou mais segmentos lógicos do primeiro núcleo lógico;
4. EQUIPAMENTO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES, de acordo com a reivindicação 1, caracterizado por cada descrição de estado indicar ainda uma localização da área comum;
5. MÉTODO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES caracterizado pelas etapas de fornecer, com a configuração de máquina virtual (VM) compreendendo pelo menos um primeiro núcleo lógico e um segundo núcleo lógico, cada um desses primeiro núcleo lógico e segundo núcleo lógico núcleo estando ativados para operar em modo tarefa única (ST) ou em modo multitarefa (MT), o modo ST consistindo de segmento único e o modo MT consistindo de uma pluralidade de segmentos em recursos compartilhados de um ou mais núcleos físicos; fornecer uma área de controle de sistema orientada ao núcleo (COSCA) compreendendo uma área comum representando pelo menos o primeiro núcleo lógico e o segundo núcleo lógico, a COSCA compreendendo ainda uma primeira área de descrição de núcleo para o primeiro núcleo lógico e uma segunda área de descrição de núcleo para o segundo núcleo lógico, a primeira área de descrição de núcleo indicando uma localização de um primeiro conjunto de uma ou mais áreas de descrição de segmento e a segunda área de descrição de núcleo indicando uma localização de um segundo conjunto de uma ou mais áreas de descrição de segmento, onde cada área de descrição de segmento do primeiro conjunto contém um endereço de descrição de estado indicando uma localização de descrição de estado de um segmento lógico no primeiro núcleo lógico e cada área de descrição de segmento no segundo conjunto contém um endereço de descrição de estado indicando uma localização de descrição de estado de um segmento lógico no segundo núcleo lógico, onde a COSCA é implementada como uma estrutura de árvore compreendendo uma primeira folha representando o primeiro núcleo lógico e uma segunda folha representando o segundo núcleo lógico e onde a primeira folha contém uma primeira lista de um primeiro conjunto de um ou mais segmentos lógicos no primeiro núcleo lógico e a segunda folha contém uma segunda lista de um segundo conjunto de um ou mais segmentos lógicos no segundo núcleo lógico; executar, através de um hipervisor configurado para controlar a configuração da VM usando a COSCA, uma instrução de despacho do primeiro núcleo para despachar o primeiro núcleo lógico em um núcleo físico, onde o hipervisor opera no modo ST e a instrução de despacho do primeiro núcleo especifica que o primeiro núcleo lógico deve ser despachado no modo MT; executar um primeiro segmento lógico do primeiro núcleo lógico para emitir uma instrução de interrupção entre processadores para sinalizar um segundo segmento lógico do segundo núcleo lógico; modificar uma descrição de estado associada a uma área de descrição de segmento do segundo conjunto ao segundo segmento lógico para fazer uma interrupção entre processadores que está associada a instrução de interrupção entre processadores pendente; executar, através do hipervisor, uma instrução de despacho do segundo núcleo para o segundo núcleo lógico no núcleo físico; habilitar o segundo núcleo lógico para a permitir a interrupção entre processadores; e apresentar a interrupção entre processadores ao primeiro núcleo lógico;
6. MÉTODO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES, de acordo com a reivindicação 5, caracterizado por: a área comum incluir ainda uma máscara de validade do núcleo que indica a validade de cada primeiro núcleo lógico e segundo núcleo logico;
7. MÉTODO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES, de acordo com a reivindicação 5, caracterizado por a área de descrição do primeiro núcleo incluir ainda uma máscara de validade do segmento que indica a validade de um ou mais segmentos lógicos do primeiro núcleo lógico;
8. SUPORTE FÍSICO PARA ÁREA DE CONTROLE PARA GERENCIAMENTO DE MÚLTIPLOS SEGMENTOS EM COMPUTADORES caracterizado por conter gravado quaisquer dos métodos pleiteados nas reivindicações 5, 6 ou 7.
BR112016022283-0A 2014-03-27 2015-03-16 Equipamento, método e suporte físico para área de controle para gerenciamento de múltiplos segmentos em computadores BR112016022283B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,986 US9772867B2 (en) 2014-03-27 2014-03-27 Control area for managing multiple threads in a computer
US14/226,986 2014-03-27
PCT/EP2015/055442 WO2015144476A1 (en) 2014-03-27 2015-03-16 Control area for managing multiple threads in a computer

Publications (2)

Publication Number Publication Date
BR112016022283A2 BR112016022283A2 (pt) 2017-08-15
BR112016022283B1 true BR112016022283B1 (pt) 2022-12-06

Family

ID=52727099

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016022283-0A BR112016022283B1 (pt) 2014-03-27 2015-03-16 Equipamento, método e suporte físico para área de controle para gerenciamento de múltiplos segmentos em computadores

Country Status (14)

Country Link
US (1) US9772867B2 (pt)
EP (1) EP3123317A1 (pt)
JP (1) JP6509248B2 (pt)
KR (1) KR101800991B1 (pt)
CN (1) CN106462437B (pt)
AU (1) AU2015238662B8 (pt)
BR (1) BR112016022283B1 (pt)
CA (1) CA2940982A1 (pt)
IL (1) IL247886B (pt)
MX (1) MX2016012531A (pt)
RU (1) RU2662695C2 (pt)
SG (1) SG11201606093QA (pt)
TW (1) TWI598818B (pt)
WO (1) WO2015144476A1 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US10719420B2 (en) * 2015-02-10 2020-07-21 International Business Machines Corporation System level testing of multi-threading functionality including building independent instruction streams while honoring architecturally imposed common fields and constraints
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10771554B2 (en) * 2017-09-30 2020-09-08 Intel Corporation Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication
US11579944B2 (en) 2018-11-14 2023-02-14 Intel Corporation System, apparatus and method for configurable control of asymmetric multi-threading (SMT) on a per core basis
CN109739612B (zh) * 2018-11-22 2021-10-26 海光信息技术股份有限公司 虚拟机进程的调度方法、装置、设备和存储介质
CN110032407B (zh) * 2019-03-08 2020-12-22 创新先进技术有限公司 提升cpu并行性能的方法及装置和电子设备
CN111078449B (zh) * 2019-11-29 2020-11-13 深圳大学 信息处理方法、信息处理装置及终端设备

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
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
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
CA1213986A (en) 1983-12-14 1986-11-12 Thomas O. Curlee, Iii 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 株式会社日立製作所 仮想計算機システム
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.
US5414851A (en) * 1992-06-15 1995-05-09 International Business Machines Corporation Method and means for sharing I/O resources by a plurality of operating systems
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
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
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
US6854114B1 (en) 1999-10-21 2005-02-08 Oracle International Corp. Using a virtual machine instance as the basic unit of user execution in a server environment
US6735758B1 (en) * 2000-07-06 2004-05-11 International Business Machines Corporation Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems
JP2004506262A (ja) 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
EP1182567B1 (en) 2000-08-21 2012-03-07 Texas Instruments France Software controlled cache configuration
US7234139B1 (en) * 2000-11-24 2007-06-19 Catharon Productions, Inc. Computer multi-tasking via virtual threading using an interpreter
US6971084B2 (en) 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
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
US7530067B2 (en) 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US20040236562A1 (en) 2003-05-23 2004-11-25 Beckmann Carl J. Using multiple simulation environments
US7694304B2 (en) 2003-08-28 2010-04-06 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US20050071841A1 (en) * 2003-09-30 2005-03-31 Hoflehner Gerolf F. Methods and apparatuses for thread management of mult-threading
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
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
US7574709B2 (en) * 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
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
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US8356143B1 (en) 2004-10-22 2013-01-15 NVIDIA Corporatin Prefetch mechanism for bus master memory access
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US20060212840A1 (en) * 2005-03-16 2006-09-21 Danny Kumamoto Method and system for efficient use of secondary threads in a multiple execution path processor
US20060242389A1 (en) 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
US8136111B2 (en) * 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
KR100790304B1 (ko) 2006-11-10 2008-01-02 주식회사 대우일렉트로닉스 자바 가상 머신과 운영 체제의 스케줄링 실행방법
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 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
US8561061B2 (en) * 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8091086B1 (en) 2007-07-20 2012-01-03 Parallels Holdings, Ltd. System and method for virtualization using an open bus hypervisor
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
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
JP4871948B2 (ja) * 2008-12-02 2012-02-08 株式会社日立製作所 仮想計算機システム、仮想計算機システムにおけるハイパバイザ、及び仮想計算機システムにおけるスケジューリング方法
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
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
JP5799797B2 (ja) * 2011-12-21 2015-10-28 富士通株式会社 算出方法、算出プログラム及びコンピュータ
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
CN102866957B (zh) 2012-07-31 2014-07-30 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
JP6074955B2 (ja) 2012-08-31 2017-02-08 富士通株式会社 情報処理装置および制御方法
US10002031B2 (en) 2013-05-08 2018-06-19 Nvidia Corporation Low overhead thread synchronization using hardware-accelerated bounded circular queues
US9495191B2 (en) 2014-01-28 2016-11-15 Red Hat Israel, Ltd. Using virtual disk in virtual machine live migration
US9672056B2 (en) 2014-01-29 2017-06-06 Red Hat Israel, Ltd. Reducing redundant network transmissions in virtual machine live migration

Also Published As

Publication number Publication date
IL247886B (en) 2019-03-31
RU2016127442A (ru) 2018-04-28
AU2015238662A8 (en) 2018-04-19
EP3123317A1 (en) 2017-02-01
KR20160104694A (ko) 2016-09-05
AU2015238662A1 (en) 2016-08-04
RU2662695C2 (ru) 2018-07-26
RU2016127442A3 (pt) 2018-04-28
US20150277948A1 (en) 2015-10-01
KR101800991B1 (ko) 2017-11-23
TWI598818B (zh) 2017-09-11
SG11201606093QA (en) 2016-08-30
US9772867B2 (en) 2017-09-26
AU2015238662B8 (en) 2018-04-19
JP2017515204A (ja) 2017-06-08
CN106462437B (zh) 2019-11-15
WO2015144476A1 (en) 2015-10-01
AU2015238662B2 (en) 2017-12-14
BR112016022283A2 (pt) 2017-08-15
CN106462437A (zh) 2017-02-22
MX2016012531A (es) 2016-12-20
CA2940982A1 (en) 2015-10-01
JP6509248B2 (ja) 2019-05-08
TW201610855A (zh) 2016-03-16

Similar Documents

Publication Publication Date Title
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
JP6501791B2 (ja) マルチスレッド・ゲスト仮想マシン(vm)をディスパッチするためのシステム、方法およびコンピュータ・プログラム製品
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 16/03/2015, OBSERVADAS AS CONDICOES LEGAIS