PT2223203E - Realização de uma mudança de topologia virtual de configuração - Google Patents

Realização de uma mudança de topologia virtual de configuração Download PDF

Info

Publication number
PT2223203E
PT2223203E PT09700680T PT09700680T PT2223203E PT 2223203 E PT2223203 E PT 2223203E PT 09700680 T PT09700680 T PT 09700680T PT 09700680 T PT09700680 T PT 09700680T PT 2223203 E PT2223203 E PT 2223203E
Authority
PT
Portugal
Prior art keywords
cpu
topology
configuration
guest
host
Prior art date
Application number
PT09700680T
Other languages
English (en)
Inventor
Charles Gainey Jr
Mark Farrell
Jeffrey Kubala
Donald Schmidt
Original Assignee
Ibm
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 Ibm filed Critical Ibm
Publication of PT2223203E publication Critical patent/PT2223203E/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Variable-Direction Aerials And Aerial Arrays (AREA)
  • Hardware Redundancy (AREA)
  • Filters And Equalizers (AREA)

Description

ΡΕ2223203 1
DESCRIÇÃO
"REALIZAÇÃO DE UMA MUDANÇA DE TOPOLOGIA VIRTUAL DE CONFIGURAÇÃO"
Campo da invenção A presente invenção refere-se no geral à virtualização de sistemas multi-processador. Em particular, a presente invenção refere-se a permitir que os programas alterem elementos da topologia do seu ambiente virtual.
Antecedentes
Entre as funções de controlo do sistema encontra-se a capacidade de dividir o sistema em várias partições lógicas (LPARs) . Uma LPAR é um subconjunto do hardware do sistema que se encontra definido para suportar um sistema operativo. Uma LPAR contém recursos (processadores, memória, e dispositivos de entrada/saida) e funciona como um sistema independente. Podem existir várias partições lógicas dentro de um sistema de hardware de um mainframe (unidade de processamento).
Nos sistemas informáticos mainframes da IBM, incluindo o S/390®, durante muitos anos houve um limite de 15 LPARs. As máquinas mais recentes têm 30 (e 2 ΡΕ2223203 potencialmente mais). Tais máquinas são exemplificadas por aquelas da z/Architecture®. A z/Architecture® da IBM® é descrita no z/Architecture Principies of Operation SA22-7832-05 publicado em Abril de 2007 pela IBM.
As limitações práticas do tamanho da memória, disponibilidade de E/S, e poder de processamento disponível limita normalmente o número de LPARs a menos do que aqueles valores máximos. O hardware e firmware que proporciona o particionamento é conhecido como PR/SMTM (Processor Resource/System Manager) . São as funções PRISM que são usadas para criar e executar LPARs. Esta diferença entre PRISM (uma função incorporada) e LPARs (o resultado da utilização de PRISM) é muitas vezes ignorado e o termo LPAR é usado colectivamente para a função e os seus resultados. Os administradores de sistema atribuem partes da memória a cada LPAR sendo que a memória não pode ser partilhada entre LPARs. Os administradores podem atribuir processadores (também conhecidos como processadores centrais (CPs) ou unidades de processamento central (CPUs) para especificar LPARs ou eles podem permitir aos controladores do sistema expedir qualquer ou todos os processadores para todas as LPARs utilizando um algoritmo interno de carga-balanceamento. Os canais (CHPIDs) podem ser atribuídos a LPARs específicos ou podem ser partilhados por várias LPARs, dependendo da natureza dos dispositivos em cada canal. 3 ΡΕ2223203
Um sistema com um único processador (processador CP) pode ter várias LPARs. PRISM tem um expedidor interno que pode alocar uma parte do processador a cada LPAR, tanto quanto um expedidor do sistema operativo atribui uma parte do seu tempo de processador a cada processo, segmento ou tarefa.
As especificações de controlo do particionamento encontram-se parcialmente contidas nos IOCDS e encontram-se parcialmente contidas num perfil do sistema. Os IOCDS e perfis residem ambos no elemento de suporte (Support Element - SE) que, por exemplo, é simplesmente um computador portátil dentro do sistema. 0 SE pode ser ligado a uma ou mais consolas de gestão de hardware (Hardware Management Consoles - HMCs) , as quais, por exemplo, são computadores pessoais utilizados para monitorizar e controlar o hardware, tais como os microprocessadores do mainframe. Uma HMC é mais conveniente de usar do que um SE e pode controlar vários mainframes diferentes.
Trabalhando a partir de uma HMC (ou de um SE, em circunstâncias incomuns), um operador prepara um mainframe para uso seleccionando e carregando um perfil e um IOCDS. Estes criam LPARs e configuram os canais com números de dispositivos, atribuições LPAR, várias informações de trajecto, e assim por diante. Isto é conhecido como um Power-on Reset (POR) . Ao carregar um perfil e IOCDS diferentes, o operador pode mudar completamente o número e a natureza dos LPARs e o aparência da configuração E/S. No 4 ΡΕ2223203 entanto, fazer isto é geralmente prejudicial para todos os sistemas operacionais e aplicativos em execução e portanto raramente é feito sem planeamento prévio.
As partições lógicas (LPARs) são, na prática, o equivalente a mainframes separados.
Cada LPAR corre o seu próprio sistema operativo. Isto pode ser qualquer sistema operativo de mainframe; não há necessidade de correr z/OS®, por exemplo, em cada LPAR. Os planificadores da instalação podem optar por compartilhar dispositivos E/S em todas as várias LPARs, mas esta é uma decisão local. 0 administrador do sistema pode atribuir um ou mais processadores do sistema para o uso exclusivo de uma LPAR. Como alternativa, o administrador pode permitir que todos os processadores sejam usados em algumas ou todas as LPARs. Aqui, as funções de sistema de controlo do sistema (muitas vezes conhecidas como microcódigo ou firmware) fornecer um distribuidor para partilhar os processadores entre as LPARs seleccionadas. 0 administrador pode especificar um número máximo de processadores paralelos executando em cada LPAR. 0 administrador também pode fornecer ponderações para diferentes LPARs, por exemplo, especificando que LPARl deve receber o dobro de tempo de processador que LPAR2. 0 sistema operativo em cada LPAR é inicializado 5 ΡΕ2223203 (por exemplo, IPLado) separadamente, tem a sua própria cópia do seu sistema operativo, tem a sua própria consola de operador (se necessário), e assim por diante. Se o sistema numa LPAR falhar, não há nenhum efeito sobre as outras LPARs.
Num sistema de mainframe com três LPARs, por exemplo, você pode ter uma produção de z/OS em LPARl, uma versão de teste do z/OS em LPAR2, e Linux® para S/390 ® em LPAR3. Se este sistema total tiver 8 GB de memória, pode ter atribuído 4 GB a LPARl, 1 GB a LPAR2, 1 GB a LPAR3, e manter 2 GB na reserva. As consolas do sistema operativo para os dois LPARs do z/OS podem estar em locais completamente diferentes.
Para fins práticos, não há qualquer diferença entre, por exemplo, três mainframes separados a executar z/OS (e partilhando a maior parte da sua configuração E/S) e três LPARs no mesmo mainframe que faz a mesma coisa. Com pequenas excepções z/OS, os operadores e aplicações não conseguem detectar a diferença.
As pequenas diferenças incluem a capacidade do z/OS (se permitido quando as LPARs estiverem definidas ou a qualquer momento durante a execução) para obter o desempenho e as informações de utilização em todo o sistema completo de mainframe e para transferir dinamicamente recursos (processadores e canais) entre LPARs para melhorar o desempenho. ΡΕ2223203
Os mainframes actuais da IBM ®, também denominados de complexo de processador central (central processor complex - CPC) ou complexo de electrónica central (CEC) , podem conter vários tipos diferentes de processadores z/Architecture® que podem ser utilizados para fins ligeiramente diferentes. Vários destes objectivos estão relacionados com o controlo de custos de software, enquanto outros são mais fundamentais. Todos os processadores no CPC começam como unidades de processador equivalentes {PUs) ou motores que não tenham sido caracterizados para utilização. Cada processador é caracterizado pela IBM durante a instalação ou mais tarde. As caracterizações potenciais são:
Processador (CP)
Este tipo de processador está disponível para o sistema de operação normal e software de aplicação. - Processador de assistência ao sistema (System Assistance Processor - SAP)
Todos os mainframe s modernos têm pelo menos um SAP; sistemas maiores podem ter vários. Os SAPs executam código interno para proporcionar o subsistema de E/S. Um SAP, por exemplo, traduz os números de dispositivo e os endereços reais de identificadores de trajecto de canal (CHPIDs), os endereços de unidade de controlo, e os números de dispositivo. Ele gere vários caminhos para unidades de controlo e executa a recuperação de erro para erros temporários. Os sistemas operativos e 7 ΡΕ2223203 aplicações não podem detectar SAPs, e SAPs não usam nenhuma memória "normal".
Função integrada para Linux (Integrated Facility for Linux® - LFL)
Este é um processador normal com uma ou duas instruções desligadas que são usadas apenas por z/OS®. 0 Linux não usa estas instruções e pode por isso operar numa IFL. 0 Linux pode ser executado também por um CP. A diferença é que uma IFL não é contada quando se especifica o número de modelo do sistema. Isso pode fazer uma diferença substancial nos custos de software.
- zAAP
Este é um processador com um número de funções desligadas (tratamento de uma interrupção, algumas instruções) de tal modo que nenhum sistema operativo pode operar no processador. No entanto, z/OS pode detectar a presença de processadores zAAP e irá utilizá-los para executar o código JavaTM. 0 mesmo código Java pode ser executado num CP padrão. Novamente, os motores zAAP não são contados quando se especifica o número do modelo do sistema. Tal como IFLs, eles existem apenas para controlar os custos de software.
- zIIP 0 sistema processador de informação integrado (Integrated Information Processor) z9TM (zIIP) é um motor especializado de cargas de trabalho para o processamento de banco de dados elegíveis. 0 zIIP foi projectado para ajudar a reduzir os custos de software para seleccionar cargas de trabalho no mainframe, como 8 ΡΕ2223203 inteligência empresarial (busíness intelligence - BI) , planeamento de recursos empresariais (enterprise resource planning - ERP) e gestão de relacionamento com o cliente (customer relationshíp management - CRM). 0 zIIP reforça o papel do mainframe como o centro de dados da empresa, ajudando a realizar o acesso directo ao DB2® mais rentável e reduzindo a necessidade de várias cópias dos dados.
Função de acoplamento integrada (Integrated Coupling Facility - ICF)
Esses processadores correm apenas código interno licenciado. Eles não se encontram visíveis para os sistemas operativos ou aplicações normais. Por exemplo, uma função de acoplamento é, com efeito, uma grande memória temporal utilizada por vários sistemas para coordenar o trabalho. As ICFs devem ser atribuídas a LPARs que logo se transformam em funções de acoplamento.
Reserva
Um PU descaracterizado funciona como uma "reserva". Se os controladores do sistema detectarem um CP ou SAP com defeito, ele pode ser substituído com um PU de reserva. Na maioria dos casos isso pode ser feito sem interrupção do sistema, mesmo da aplicação em execução no processador com defeito. 9 ΡΕ2223203
Para além destas caracterizações de processadores, alguns mainframes têm modelos ou versões que se encontram configurados para operar mais lentamente do que a velocidade potencial dos seus CPs. Isto é amplamente conhecida como "knee-capping", embora a IBM prefira o termo de criação de capacidade (capacíty setting), ou algo semelhante. É realizado, por exemplo, usando microcódigo para inserir ciclos nulos no fluxo de instruções do processador. 0 objectivo, novamente, é o de controlar os custos de software tendo o modelo ou versão mínima de mainframe que corresponda aos requisitos da aplicação. IFLs, SAPs, zAAPs e zIIPs e ICFs funcionam sempre na velocidade total do processador porque estes processadores "não contam" nos cálculos dos preços de software.
Processador e CPU pode referir-se tanto à caixa completa do sistema, ou a um dos processadores (CPUs) dentro da caixa do sistema. Embora o significado possa ser claro a partir do contexto de uma descrição, até mesmo os profissionais de mainframe devem esclarecer qual o significado de processador ou CPU é que estão a utilizar numa descrição. IBM usa o termo complexo do processador central (CPC) para se referir à colecção física de hardware que inclui o armazenamento principal, um ou mais processadores centrais, temporizadores e canais. (Alguns programadores de sistema usam o termo complexo electrónico central (CEC) para se referir à "caixa" do mainframe mas o termo preferido é o CPC.) 10 ΡΕ2223203
Em suma, todos os processadores S/390 ou z/Architecture dentro de um CPC são unidades de processamento (PUs) . Quando a IBM fornece o CPC, os PUs são caracterizados como CPs (para o trabalho normal), função integrada para Linux {IFL), função de acoplamento integrada (ICF) para configurações de Parallel Sysplex, e assim por diante.
Os profissionais de mainframe utilizam tipicamente o sistema para indicar a caixa de hardware, um ambiente de hardware completo (com dispositivos E/S), ou um ambiente operativo (com software), dependendo do contexto. Eles normalmente usam processador para significar um único processador (CP) dentro do CPC. O z/VM® HYPERVISOR™ é projectado para ajudar os clientes a ampliar o valor comercial da tecnologia de mainframe em toda a empresa através da integração de aplicações e dados, proporcionando níveis excepcionais de disponibilidade, segurança e facilidade operacional. A tecnologia de virtualização z/VM é projectada para permitir a capacidade dos clientes correrem centenas de milhares de servidores Linux num único mainframe que corre outros sistemas operativos System z, tais como z/OS ®, ou como uma solução de servidor empresarial de somente Linux de grande escala. z/VM V5.3 também pode ajudar a melhorar a produtividade através do acolhimento de cargas de trabalho não-Linux tais como z/OS, z/VSE, e z/TPF. ΡΕ2223203 z/VM proporciona a cada utilizador um ambiente de trabalho individual conhecido como máquina virtual. A máquina virtual simula a existência de uma máquina real dedicada, incluindo as funções de processador, memória, rede, e recursos de entrada/saida (E/S). Os sistemas operativos e aplicações podem correr máquinas virtuais como convidados. Por exemplo, você pode correr várias imagens Linux e z/OS no mesmo sistema z/VM que também está a suportar várias aplicações e utilizadores finais. Como resultado, ambientes de desenvolvimento, teste e produção podem compartilhar um único computador físico.
Quanto às figuras 15A-15D, o particionamento e virtualização envolvem uma mudança no pensamento do físico para lógico tratando os recursos do sistema como interligações lógicas e não como entidades físicas separadas. Isto envolve consolidar e interligação de recursos do sistema, e fornecer uma "ilusão de sistema único" para os servidores, tanto homogéneas e heterogéneas, armazenamento, sistemas distribuídos e redes. 0 particionamento de hardware envolve CPUs separados para diferentes sistemas operativos, sendo que cada um corre as suas aplicações específicas. 0 particionamento de software emprega um "hipervisor" baseado em software para permitir que sistemas operativos individuais corram em qualquer ou todos os CPUs.
Os hipervisores permitem correr simultaneamente 12 ΡΕ2223203 vários sistemas operativos num computador hospedeiro. A tecnologia do hipervisor teve origem no IBM VM/370, o antecessor do z/VM que temos hoje. 0 particionamento lógico (LPAR) envolve divisão do firmware (um hipervisor baseado em hardware, por exemplo, PR/SM) para isolar o sistema operativo dos CPUs. A virtualização permite ou explora quatro capacidades fundamentais: a partilha de recursos, a agregação de recursos, a emulação da função, e isolamento. Vamos explorar estes temas pormenorizadamente nas secções seguintes. 0 z/VM é um sistema operativo para a plataforma IBM System z que proporciona um ambiente de teste e produção altamente flexível. A implementação z/VM da tecnologia de virtualização da IBM proporciona a capacidade de correr sistemas operativos de pleno funcionamento, tais como Linux em System z, z/OS, e outros como "convidados" de z/VM. z/VM suporta hóspedes z/Arquítecture da IBM de 64-bit e hóspedes da arquitectura de sistemas empresariais IBM /390 de 31-bit. z/VM proporciona a cada utilizador um ambiente de trabalho individual conhecido como máquina virtual. A máquina virtual simula a existência de uma máquina real dedicada, incluindo as funções de processador, memória, rede, e recursos de entrada/saída (E/S). Os sistemas operativos e aplicações podem correr máquinas virtuais como 13 ΡΕ2223203 convidados. Por exemplo, você pode correr várias imagens Linux e z/OS® no mesmo sistema z/VM que também está a suportar várias aplicações e utilizadores finais. Como resultado, ambientes de desenvolvimento, teste e produção podem compartilhar um único computador fisico.
Uma máquina virtual utiliza recursos reais de hardware, mas mesmo com dispositivos dedicados (tal como uma unidade de fita), o endereço virtual da unidade de fita podem ou não ser o mesmo que o endereço real da unidade de banda magnética. Por isso, uma máquina virtual só conhece "hardware virtual" que pode ou não existir no mundo real.
Por exemplo, num sistema de modo básico, uma z/VM de primeiro nível é o sistema operativo de base que é instalado na parte superior do hardware real figura 16. Um sistema operativo de segundo nivel é um sistema que é criado sobre o sistema operativo de base z/VM. Por isso, z/VM como um sistema operativo de base corre no hardware, enquanto que um sistema operativo hóspede corre na tecnologia de virtualização. A figura 14 ilustra um hóspede de segundo nivel z/VM OS carregado numa partição de hóspede de primeiro nivel (hóspede-1).
Por outras palavras, existe um sistema operativo de primeiro nível z/VM que fica directamente sobre o hardware, mas os hóspedes deste sistema de primeiro nível z/VM encontram-se virtualizados. Ao virtualizar o hardware dos hóspedes, somos passíveis de criar e usar quantos 14 ΡΕ2223203 hóspedes forem necessários com uma pequena quantidade de hardware.
Tal como mencionado anteriormente, os sistemas operativos que correm em máquinas virtuais são frequentemente denominados de "hóspedes". Outros termos e frases que você pode encontrar são: "Execução de primeiro nível" ou "executar nativamente" significa executar directamente no hardware (que é o que z/VM faz) . "Execução de segundo nível", "execução sob VM", ou "execução em (cima de) VM", ou "execução como hóspede-1" significa execução como hóspede. Usando o sistema operativo z/VM, também é possível a "execução como hóspede-2", quando z/VM em si é executado como um hóspede-1 num hipervisor PRISM.
Um exemplo da funcionalidade do z/VM é, se você tiver um sistema z/VM de primeiro nível e um sistema z/VM de segundo nível, você pode continuar a criar mais sistemas operativos no sistema de segundo nível. Este tipo de ambiente é especialmente útil para testar a instalação do sistema operativo antes da utilização, ou para testar ou depurar sistemas operativos. Os recursos virtuais podem ter funções ou características que não estão disponíveis nos seus recursos físicos subjacentes. A figura 14 ilustra a virtualização por emulação de recursos. Tais funções ou características são designadas para serem emuladas pelo 15 ΡΕ2223203 programa hospedeiro de tal forma que o hóspede observa a função ou caracteristica a ser fornecida pelo sistema quando é efectivamente prestado devido à assistência do programa hospedeiro.
Os exemplos incluem de software de emulação da arquitectura que implementa uma arquitectura de processador usando outro; iSCSI, que implementa um barramento SCSI virtual numa rede IP; e memória em banda magnética virtual implementada em armazenamento em disco fisico.
Além disso, a integração das unidades de processamento central {CPUs) na tecnologia moderna é frequentemente hierárquica. Vários núcleos podem ser colocados num único chip. Vários chips podem ser colocados num único módulo. Vários módulos podem ser empacotados numa placa muitas vezes designada como um livro, e vários livros podem ser distribuídos por vários repartidores.
Os CPUs têm frequentemente vários níveis de memórias cache, por exemplo cada processador pode ter uma memória cache (ou possivelmente uma memória cache de instrução de divisão e uma memória cache de dados) e pode haver memórias cache adicionais maiores entre cada processador e a interface de memória principal. Dependendo do nível da hierarquia, as memórias cache são também colocadas de modo a melhorar o desempenho global, e em certos níveis, uma memória cache pode ser partilhada entre mais do que um único CPU. As decisões de engenharia 16 ΡΕ2223203 referentes a tal colocação lidam com espaço, energia/térmica, distâncias de cableamento, a frequência da CPU, a velocidade da memória, o desempenho do sistema, e outros aspectos. Esta colocação de elementos do CPU cria uma estrutura interna que pode ser mais ou menos favorável para uma partição particular lógica, dependendo de onde reside a colocação de cada CPU da partição. Uma partição lógica dá a aparência de um sistema operativo, de propriedade de certos recursos incluindo a utilização do processador onde na realidade, o sistema operativo está a partilhar os recursos com outros sistemas operativos em outras partições. Normalmente, o software não tem conhecimento da colocação e, numa configuração de multiprocessamento simétrico [SMP) , observa um conjunto de CPUs onde cada CPU proporciona o mesmo nível de desempenho. 0 problema é que a ignorância do empacotamento interno e "distância" entre quaisquer dois CPUs pode resultar em o software fazer menos do que escolhas óptimas de como pode ser atribuído trabalho aos CPUs. Por isso, o potencial completo da configuração SMP não é alcançado. 0 exemplo da virtualização no mainframe apresentado destina-se a ensinar várias topologias possíveis na virtualização de uma máquina. Tal como mencionado, os programas que correm numa partição (incluindo os sistemas operativos) provavelmente terão uma visão de que os recursos disponíveis para os mesmos, incluindo os processadores, memória e E/S estão dedicados para a partição. Na verdade, os programas não fazem 17 ΡΕ2223203 qualquer ideia de que eles estão a correr numa partição. Tais programas também não estão conscientes da topologia da sua partição e portanto não podem fazer escolhas baseadas numa tal topologia. 0 que é necessário é uma forma de os programas optimizarem a topologia da configuração na qual eles estão a correr. A EP-A-1 674 987 descreve um sistema informático hospedeiro logicamente particionado que envolve uma alteração de configuração de uma topologia de vários processadores hóspedes de uma configuração de hóspede.
Descrição da invenção A invenção proporciona um processo de acordo com a reivindicação 1, um sistema correspondente e um programa de computador. São ultrapassadas as deficiências da técnica anterior, sendo proporcionadas vantagens adicionais, através do proporcionamento de um processo, sistema e produto de programa de computador para permitir um subconjunto de recursos latentes de hardware de computador num sistema informático actualizável que tem um conjunto de recursos latentes de hardware de computador.
Um computador hospedeiro que compreende CPUs hospedeiros pode ser dividido em partições lógicas/virtuais que têm CPUs hóspedes. 0 particionamento é de preferência 18 ΡΕ2223203 realizado por fírmware ou por software tal como pode ser proporcionado por um sistema operativo tal como z/VM da IBM. Cada CPU hospedeiro é um CPU virtual em que programas dos hóspedes vêm os CPUs hóspedes como processadores CPU reais, mas na verdade, o hospedeiro subjacente é o mapeamento de cada CPU hóspede para hospedar recursos do CPU. Numa forma de realização é implementado um CPU hóspede usando uma parte de um CPU hospedeiro pelo hospedeiro que designa uma parte do tempo do CPU para que o CPU hóspede utilize o CPU hospedeiro. Prevê-se que uma pluralidade de CPUs hospedeiros possam ser suportados por um único CPU hospedeiro mas o oposto pode também ser aplicado.
Numa outra forma de realização, os CPUs hóspedes são emulados por software sendo que as rotinas de emulação convertem funções do CPU hóspede (incluindo descodificação de instrução e execução) em rotinas que correm em CPUs hospedeiros. Os CPUs hospedeiros encontram-se preparados para suportar CPUs hóspedes.
Numa outra forma de realização, uma primeira imagem de hóspede pode ser o hospedeiro de uma segunda imagem de hóspede. Em qualquer dos casos os segundos CPUs hóspedes são preparados pelos primeiros CPUs hóspedes que por sua vez são preparados pelos CPUs hospedeiros. A topologia das configurações é um encaixe de níveis de CPUs hóspedes e um ou mais CPUs hospedeiros. 19 ΡΕ2223203 É proporcionada uma nova instrução PERFORM TOPOLOGY FACILITY (PTF) , sendo a instrução da técnica anterior STORE SYSTEM INFORMATION (STSI) melhorada para fornecer um novo SYSIB (identificador SYSIB 15.1.2) que proporciona afinidade de componentes e informação sobre empacotamento lógico ao software. Isso permite ao software aplicar a selecção informada e inteligente sobre como elementos individuais, tais como unidades de processamento do multiprocessador são atribuídos a diversas aplicações e cargas de trabalho. Assim, fornecendo informações a um programa (OS) para melhorar o desempenho aumentando por exemplo os rácios de solicitação à memória cache partilhada com sucesso. É utilizada uma nova instrução PERFORM TOPOLOGY FUNCTION (PTF) por um programa privilegiado tal como um supervisor, um OS, um núcleo e semelhante) para solicitar que a topologia de configuração do CPU dentro do qual o programa corre seja alterada. Numa forma de realização, a topologia de CPU hóspede é comutada entre polarização horizontal e vertical.
Ao ter a capacidade de aprender a informação de topologia do CPU, o programa compreende a "distância" entre quaisquer dois ou mais CPUs arbitrários de uma configuração de multiprocessamento simétrico. A capacidade proporcionada para minimizar a distância total de todos os CPUs numa configuração, e como 20 ΡΕ2223203 as tarefas particulares de programa de aplicação são enviadas nos CPUs individuais proporciona programas de supervisão com a capacidade de melhorar o desempenho. O desempenho melhorado pode resultar de um ou mais dos seguintes atributos que são melhorados por um melhor conhecimento da topologia:
Encurtando caminhos de sinalização entre CPUs. 0 armazenamento compartilhado, acedido por vários CPUs é mais provável que esteja em memórias cache que estão mais próximas do conjunto de CPUs. Por isso, a utilização do armazenamento inter-cache encontra-se confinada a um subconjunto menor da máquina total e configuração que permite uma transferência mais rápida de memória cache para memória cache. É significativamente mais provável de ocorrer a presença de um local de armazenamento na memória cache mais próxima de um CPU (LI).
Devido a melhor desempenho, o número de CPUs actualmente na configuração pode ser em menor número, e ainda obter o mesmo trabalho feito no mesmo ou menor tempo de execução. Tal redução de CPUs diminui o número de caminhos de comunicação que cada CPU tem que utilizar para comunicar com os outros CPUs da configuração, contribuindo assim ainda mais para a melhoria global do desempenho.
Por exemplo, se 10 CPUs necessitarem de executar um programa em particular, o tráfego inter-cache é 21 ΡΕ2223203 substancial enquanto que se o mesmo programa puder ser executado num CPU, não existe tráfego inter-cache. Isto indica que a presença de memória cache de locais de armazenamento desejados encontra-se garantida como estando na memória cache do único CPU, se esse armazenamento for em qualquer memória cache.
Quando o armazenamento e a hierarquia associada da memória cache for local, em vez de serem distribuídos por vários repartidores físicos (ou seja caixas, etc.), as vias de sinalização são mais curtas. 0 conhecimento da topologia indica a distância relativa na selecção do subconjunto adequado de CPUs para atribuir a um programa de aplicação de tal forma que, mesmo dentro de um conjunto maior de CPUs numa configuração SMP, o subconjunto optimiza a distância minimizada entre eles. Isso às vezes denominado de um grupo de afinidade
As noções de redução de contagem CPU e distância entre CPUs são esclarecidas por informação de topologia que permite que o programa optimize a atribuição de CPUs a um grupo de afinidade.
Um objectivo (figuras 20 e 21) da presente invenção é o de proporcionar num sistema informático hospedeiro dividido logicamente que compreende processadores hospedeiros {CPUs hospedeiros), um processo, sistema, e produto de programa para a alteração da configuração de uma topologia de vários processadores 22 ΡΕ2223203 hóspedes (CPUs hóspedes) de uma configuração de hóspede. De preferência, um processador hóspede da configuração hóspede vai buscar uma instrução PERFORM TOPOLOGY FUNCTION (executar função de topologia) definida para uma arquitectura de computador, compreendendo a instrução PERFORM TOPOLOGY FUNCTION um campo de código de operação que especifica a função a ser executada. A função a ser realizada por execução da instrução de executar função de topologia compreendendo: solicitar uma mudança especificada da configuração da polarização dos processadores de hóspedes da configuração de hóspede; e reagir à mudança de polarização requerida especificada, alterando a configuração da topologia dos processadores de hóspedes da configuração do hóspede de acordo com a alteração de polarização especificada.
Num aspecto da invenção, a instrução PERFORM TOPOLOGY FUNCTION compreende ainda um campo de registo, em que a execução da instrução PERFORM TOPOLOGY FUNCTION compreende adicionalmente: obter de um campo de código de função de um registo especificado pelo campo do registo, um valor do campo de código da função, consistindo o valor do campo de código da função qualquer um de um especificador de instrução de polarização horizontal, um especificador de instrução de polarização vertical ou uma verificação do estado de um especificador de mudança de topologia; reagir à instrução que especifica a polarização horizontal, iniciando a polarização horizontal dos processadores 23 ΡΕ2223203 hóspedes da configuração do computador; reagir à instrução que especifica a polarização vertical, iniciar a polarização vertical dos processadores hóspedes da configuração do computador; e definir um valor de código de resultado num campo de resultado do registo.
Num outro aspecto da invenção, a polarização iniciada é assíncrona à conclusão da execução, e reage ao valor do campo do código da função que especifica uma verificação do estado de uma alteração de topologia o estado da conclusão da alteração da topologia é verificado.
Numa forma de realização, a polarização horizontal compreende proporcionar recursos do processador hospedeiro substancialmente iguais para cada recurso processador hóspede, em que a polarização vertical compreende proporcionar substancialmente mais recursos processador hospedeiro a pelo menos um processador hóspede dos referidos processadores hóspedes do que a pelo menos um outro processador hóspede dos referidos processadores hóspedes .
Numa outra forma de realização, o valor do código do resultado especifica um código de razão que indica uma incapacidade para aceitar o pedido de polarização e que consiste em: reagir ao facto de a configuração ser polarizada tal como especificado pelo código de função antes da execução, indicando o valor do código resultante que a configuração já está polarizada de acordo com o 24 ΡΕ2223203 código de função; e, reagir à configuração que processa uma polarização incompleta antes da execução, o valor do código resultante indicando que já se encontra em processo uma alteração da topologia.
Numa forma de realização, a execução compreende adicionalmente: reagir a uma alteração de topologia em progresso, estabelecer um código de condição que indica uma alteração iniciada da topologia; e reagir ao pedido ser rejeitado, estabelecendo um código de condição que indica que o pedido é rejeitado.
Numa forma de realização, a execução compreende adicionalmente: reagir ao relatório que nenhuma alteração da topologia relatório se encontra pendente, estabelecendo um código de condição indicando que um relatório de alteração de topologia não se encontra pendente; e reagir a um relatório de alteração de topologia que se pendente, estabelecendo um código de condição que indica que um relatório de alteração de topologia se encontra pendente.
Numa forma de realização, a instrução de executar a função de topologia definida para a arquitectura do computador é obtida e executada por uma unidade central de processamento de uma arquitectura de computador alternativa, em que o processo compreende adicionalmente a interpretação da instrução PERFORM TOPOLOGY FUNCTION para identificar uma predeterminada rotina de software para emular a operação da instrução PERFORM TOPOLOGY FUNCTION; e 25 ΡΕ2223203 em que executar a instrução PERFORM TOPOLOGY FUNCTION compreende executar a rotina predeterminada de software para realizar os passos do processo para executar a instrução da máquina.
Breve descrição dos desenhos 0 assunto que é considerado como a invenção é particularmente salientado e distintamente reivindicado na parte final da especificação. A invenção, contudo, tanto quanto à organização como no processo da prática, juntamente com objectos adicionais e vantagens da mesma, pode ser melhor compreendida tomando como referência a seguinte descrição tomada em ligação com os desenhos que a acompanham. As figuras representam:
Figura 1 Figura 2 Figura 3 Figura 4 Figura 5 Figura 6 Figura 7 Figura 8 Figura 9 sistema informático hospedeiro da técnica anterior; sistema informático hospedeiro emulado da técnica anterior; formato de instrução de uma instrução de máquina STSI da técnica anterior; registos implicados antes da instrução STSI da técnica anterior; tabela de códigos de função; tabela SYSIB 1.1.1 da técnica anterior; tabela SYSIB 1.2.1 da técnica anterior; tabela SYSIB 1.2.2 Formato-1 da técnica anterior; tabela SYSIB 1.2.2 Formato-2 da técnica anterior; 26 ΡΕ2223203
Figura 10 Figura 11 Figura 12 Figura 13 Figura 14 Figuras 15A-15D Figura 16 Figuras 17-19 Figuras 20-21 tabela SYSIB 15.1.2 de acordo com a invenção; recipiente tipo TLE; TLE tipo CPU; formato de instrução de uma instrução de máquina PTF de acordo com a invenção; formato de registo da instrução PTF; elementos da técnica anterior de sistemas informáticos divididos; exemplo de sistema informático; recipientes do exemplo de sistema informático; e fluxo de uma forma de realização da invenção. Descrição pormenorizada
Num maínframe, as instruções de máquina arquitectadas são usadas por programadores (escrevendo normalmente as aplicações em "C" mas também Java®, COBOL, PL/I, PL/X, Fortran e outras linguagens de alto nível), muitas vezes por meio de uma aplicação compiladora. Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente num servidor IBM de z/Arquitecture, ou alternativamente em máquinas que executam outras arquitecturas. Elas podem ser emuladas nos servidores maínframe IBM existentes e futuros e em outras máquinas da IBM (por exemplo, servidores pSeries® e servidores xSeries®) . Elas podem ser executadas em máquinas que correm 27 ΡΕ2223203
Linux numa ampla variedade de máquinas que utilizam hardware fabricado pela IBM®, Intel®, AMDTM, Sun Microsystems e outros. Além de execução neste hardware sob z/Architecture®, pode ser usado o Linux bem como máquinas que utilizam a emulação por Hercules, UMX, FSI (Fundamental Software, Inc) ou Platform Solutions, Inc. (PSI), onde qeralmente a execução é num modo de emulação. No modo de emulação, o software de emulação é executado por um processador nativo para emular a arquitectura de um processador emulado. 0 processador nativo normalmente executa o software de emulação que compreende um firmware ou um sistema operativo nativo para realizar a emulação do processador emulado. 0 software de emulação é responsável por ir buscar e executar instruções da arquitectura do processador emulado. 0 software de emulação mantém um contador de programa emulado para manter o controlo das fronteiras das instruções. 0 software de emulação pode ir buscar uma ou mais instruções de máquina emuladas de cada vez e converter as uma ou mais instruções de máquina emuladas num grupo correspondente de instruções de máquina nativas para execução pelo processador nativo. Estas instruções convertidas podem ser memorizadas em cache de tal modo que pode ser obtida uma conversão mais rápida. Não obstante, o software de emulação deve manter as regras de arquitectura da arquitectura do processador emulado de forma a assegurar sistemas operativos e aplicações escritos para o processador emulado funcionar correctamente. Além 28 ΡΕ2223203 disso o software de emulação deve fornecer recursos identificados pela arquitectura do processador emulado, incluindo mas não limitado a, controlar registos, registadores de propósito geral (muitas vezes incluindo registos de ponto flutuante), função de tradução dinâmica de endereços incluindo as tabelas de segmento e tabelas de páginas por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto, relógios da hora do dia (TOD) e interfaces arquitectadas para subsistemas E/S de tal forma que um sistema operativo ou uma aplicação desenvolvida para correr no processador emulado, pode correr no processador nativo que tem o software de emulação.
Uma instrução especifica a ser emulada é descodificada, e uma sub-rotina chamada para executar a função da instrução individual. Uma função de software de emulação emulando uma função de um processador emulado é implementada, por exemplo, numa sub-rotina "C" ou controlador, ou algum outro processo de proporcionar um controlador para o hardware específico tal como será dentro dos conhecimentos dos técnicos após compreenderem a descrição da forma de realização preferida. Várias patentes de emulação de software e hardware compreendendo, mas não limitada a US 5551013 para um "Multiprocessor for hardware emulation" de Beausoleil et al., e US 6009261: "Preprocessing of stored target routines for emulating incompatible instructions on a target processor" de Scalzi et al; e US 5574873: "Decoding guest instruction to directly access emulation routines that emulate the guest 29 ΡΕ2223203 instructions", de Davidian et al; US 6308255: "Symmetrical multiprocessing bus and. chipset used for coprocessor support allowing non-native code to run in a system", de Gorishek et al; e US6463582: "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method", de Lethin et al; and US 5790825: "Method for emulating guest instructions on a host Computer through dynamic recompilation of host instructions", of Eric Traut, e muitos outros, ilustram uma variedade de maneiras conhecidas para alcançar a l emulação de um formato de instrução arquitectado para uma máquina diferente para uma máquina de destino disponível para os técnicos, bem como aquelas técnicas de software comercial utilizadas por aqueles acima mencionados.
Na figura 1 encontram-se representados os componentes representativos de um sistema informático hospedeiro 100. Podem também ser empregues outras formas de realização num sistema informático as quais são bem conhecidas na técnica. O ambiente de computação do hospedeiro é de preferência baseado na z/Arquitecture proporcionada pela International Business Machines Corporation (IBM®), Armonk, Nova Iorque. O z/Architecture encontra-se mais pormenorizadamente descrita em: z/Architecture Principies of Operation, publicações IBM® No. SA22-7832-05, 6a edição, (Abril 2007) . Ambientes de computação baseados na 30 ΡΕ2223203 z/Architecture incluem, por exemplo eServer™, e zSeries®, ambos da IBM®. 0 computador hospedeiro representativo 100 compreende um ou mais CPUs 101 em comunicação com a memória principal (memória do computador 102) bem como as interfaces de E/S para dispositivos de armazenamento 111 e redes 101 para comunicar com outros computadores ou SANs e semelhantes. O CPU pode ter tradução dinâmica de endereços (Dynamic Address Translation - DAT) 103 para transformar endereços de programa (endereços virtuais) em endereços reais de memória. Uma DAT inclui normalmente uma Translation Lookaside Buffer (TLB) 107 para memória cache de traduções de modo que acessos posteriores ao bloco da memória do computador 102 não exige o atraso de tradução de endereços. Tipicamente uma memória cache 109 é empregue entre a memória do computador 102 e o processador 101. A memória cache 109 pode ser hierárquica tendo um grande memória cache disponível para mais de um CPU e memórias cache menores, mais rápidas (nível inferior) entre a memória cache grande e cada CPU. Em algumas formas de realização as memórias cache de nível inferior são divididas para proporcionar memórias cache separadas de baixo nível para a busca de instrução e acessos de dados. Numa forma de realização, uma instrução é obtida da memória 102 por uma unidade de busca de instrução 104 por meio de uma memória cache 109. A instrução é descodificada numa unidade de descodificação de instruções (706) e entregue (com outras instruções em algumas formas de realização) 31 ΡΕ2223203 para as unidades de execução de instruções 108. Tipicamente são empregues várias unidades de execução 108, por exemplo uma unidade de execução aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução de instruções de ramo. A instrução é executada pela unidade de execução, acedendo a operandos de registos especificados por instrução ou memória quando necessário. Se um operando tiver que ser acedido (carregado ou armazenado) da memória 102, uma unidade de memória de carga 105 tipicamente manipula o acesso sob controlo da instrução a ser executada.
Numa forma de realização, a invenção pode ser realizada por software (por vezes designado como Licensed Internai Code (LIC), firmware, micro-código, mili-código, pico-código e semelhantes, qualquer dos quais seria consistente com a presente invenção) . O código do programa de software que realiza a presente invenção é normalmente acedido pelo processador também conhecido como CPU {Central Processing Unit) 101 do sistema informático 100 de suporte de armazenamento longo prazo 111, tal como um leitor de CD-ROM, unidade de banda magnética ou disco rígido. O código do programa de software pode ser realizado em qualquer um de uma variedade de suportes conhecidos para utilização com um sistema de processamento de dados, tal como uma disquete, um disco rígido, ou CD-ROM. O código pode ser distribuídos em tais suportes, ou pode ser distribuído a utilizadores a partir da memória do computador 102 ou armazenamento de um sistema informático através de uma rede 32 ΡΕ2223203 110 para outros sistemas informáticos para utilização por utilizadores de tais outros sistemas.
Alternativamente, o código do programa pode ser incluído na memória 102, e acedido pelo processador 101 através de um barramento de processador. Tal código de programa inclui um sistema operativo que controla a função e interacção dos vários componentes do computador e um ou mais programas de aplicação. 0 código de programa é normalmente paginado a partir de meios de armazenamento densos 111 para a memória de alta velocidade 102 onde estiver disponível para processamento pelo processador 101. As técnicas e processos para incluir o código de programa de software na memória, em meios físicos, e/ou distribuição de código de software através de redes são bem conhecidas e não serão descritas aqui. O código do programa, quando criado e armazenado num meio tangível (incluindo mas não limitado a módulos de memória electrónicos {RAM) , memória flash, discos compactos (CDs), DVDs, fitas magnéticas e semelhantes é muitas vezes designado como um "produto de programa de computador". O suporte do produto de programa de computador é tipicamente legível por um circuito de processamento de preferência num sistema informático para execução pelo circuito de processamento.
Na figura 2 é proporcionado um exemplo de sistema informático hospedeiro emulado 201 o qual emula um sistema informático hospedeiro 100 de uma arquitectura de hospedeiro. No sistema informático hospedeiro emulado 201, 33 ΡΕ2223203 o processador hospedeiro (CPUs) 208 é um processador hospedeiro emulado (ou processador hospedeiro virtual) e compreende um processador de emulação 2 07 que tem uma arquitectura nativa de conjunto de instruções diferentes do que aquela usada pelo processador 101 do computador hospedeiro 100. 0 sistema informático hospedeiro emulado 201 tem memória 202 acessível ao processador de emulação 207. No exemplo de forma de realização, a memória 207 é dividida numa parte da memória do computador hospedeiro 102 e uma parte de rotinas de emulação 203. A memória do computador hospedeiro 102 está disponível para os programas do computador hospedeiro emulado 201 de acordo com a arquitectura do computador hospedeiro. O processador de emulação 207 executa instruções nativas de um conjunto de instruções arquitectado de uma arquitectura diferente daquela do processador emulado 208, as instruções nativas obtidas a partir da memória das rotinas de emulação 203, e pode aceder a uma instrução de hospedeiro para a execução de um programa na memória 102 do computador hospedeiro empregando um ou mais instruções obtidas numa rotina de sequência e acesso/descodificar que pode descodificar as instruções do hospedeiro acedidas para determinar uma rotina de execução de instruções nativa para emular a função da instrução do hospedeiro acedida.
Outras funções que sejam definidas para o sistema informático hospedeiro 100 podem ser emuladas por rotinas de recursos arquitectados, incluindo tais recursos tais como os registos de propósito geral, registos de controlo, 34 ΡΕ2223203 tradução dinâmica de endereços, e suporte de subsistema E/S e memória cache do processador, por exemplo. As rotinas de emulação podem também tirar proveito da função disponível no processador de emulação 207 (tais como registos gerais e tradução dinâmica de endereços virtuais) para melhorar o desempenho das rotinas de emulação. Pode ser proporcionado hardware especial e motores de circuito aberto para ajudar o processador 207 a emular a função do computador hospedeiro 100.
De modo a proporcionar informação de topologia a programas, são proporcionadas duas instruções. A primeira é um melhoramento de uma instrução da técnica anterior STSI (STORE SYSTEM INFORMATION - armazenar informação do sistema) e a segunda é uma nova instrução PTF (PERFORM TOPOLOGY FUNCTION - executar função de topologia).
Vista geral da topologia do CPU:
Com o advento dos novos mainframes IBM eSeries, e mesmo anteriormente, a organização da máquina em estruturas nodais resultou num comportamento de acesso de memória não-uniforme {NUMA) (às vezes também denominado de "caroços"). A finalidade da nova função SYSIB 15.1.2 da instrução STSI ((STORE SYSTEM INFORMATION - armazenar informação do sistema) da técnica anterior e a nova instrução PERFORM TOPOLOGY FUNCTION (PTF) é o de proporcionar o conhecimento adicional da topologia da máquina ao programa de modo que certas optimizações podem ser executadas (incluindo rácios 35 ΡΕ2223203 melhorados de solicitação à memória cache com sucesso) e assim melhorar o desempenho global. A quantidade de recurso do CPU hospedeiro atribuído a uma configuração de hóspede de multiprocessamento (MP) tem sido geralmente distribuídos uniformemente pelo número de CPUs hóspedes configurados. (Um CPU hóspede é um CPU lógico proporcionado a um programa, todos os CPUs hóspedes são suportados por divisão de software/hardware em CPUs hospedeiros actuais). Uma tal propagação uniforme implica que nenhum CPU hóspede particular (ou CPUs) tem direito a quaisquer proporcionamentos adicionais de CPU hospedeiro do que quaisquer outros CPUs hóspedes arbitrariamente determinados. Esta condição da configuração do hóspede, que afecta todos os CPUs da configuração, é denominada de "polarização horizontal". Sob polarização horizontal, a atribuição de um CPU hospedeiro a um CPU hóspede é aproximadamente a mesma quantidade de proporcionamento para cada CPU hóspede. Quando o proporcionamento não é dedicado, os mesmos CPUs hospedeiros que proporcionam os CPUs hóspedes podem também ser utilizados para proporcionar CPUs hóspedes de outro hóspede, ou mesmo outros CPUs hóspedes da mesma configuração hóspede.
Quando a configuração do outro hóspede é uma partição lógica diferente, um CPU hospedeiro, quando activo em cada partição, deve aceder normalmente mais à memória principal porque o rácio da solicitação à memória com sucesso é reduzida por ter que compartilhar as memórias cache através de várias zonas de relocação. Se o 36 ΡΕ2223203 proporcionamento do CPU hospedeiro pode alterar o equilíbrio de tal forma que alguns CPUs hospedeiros se encontram na sua maioria, ou mesmo exclusivamente, atribuídos a uma dada configuração de hóspede (e que se torna no comportamento normal), então os rácios de solicitação à memória com sucesso melhora, assim como o desempenho. Uma tal propagação desigual implica que um ou mais CPUs hóspedes têm direito a proporcionamento adicional de CPU hospedeiro versus outros, arbitrariamente determinados CPUs hóspedes que têm direito a menos proporcionamento de CPU hospedeiro. Esta condição da configuração do hóspede, que afecta todos os CPUs da configuração, é denominada de "polarização vertical". A arquitectura aqui apresentada classifica a polarização vertical em três níveis de direito de proporcionamento, alto, médio e baixo: • A autorização alta garante que aproximadamente 100% de um CPU hospedeiro é atribuído a um CPU lógico/ virtual, sendo a afinidade mantida como uma forte correspondência entre os dois. Em relação ao proporcionamento de uma partição lógica, quando a polarização vertical está em vigor, a autorização de um CPU dedicado encontra-se definida como sendo alta. • A autorização média garante uma quantidade indeterminada de recursos de CPU hospedeiro (um ou mais CPUs hospedeiros) que são atribuídos a um CPU lógico/virtual, sendo qualquer capacidade remanescente do CPU hospedeiro considerada como sendo a folga que pode ser atribuída em 37 ΡΕ2223203 outro lugar. 0 melhor caso para a folga disponível seria atribuí-la como folga local se isso for possível. Um resultado menos benéfico ocorre se a folga disponível estiver atribuída como folga remota. É também o caso em que a percentagem de recursos atribuídos a um CPU lógico da autorização média é uma aproximação muito mais suave se comparada com a aproximação de 100% de uma configuração de autorização média-alta. • A autorização baixa garante que cerca de 0% de um CPU hospedeiro é atribuído a um CPU lógico/virtual. No entanto, se estiver disponível a folga, um tal CPU lógico/virtual pode ainda receber algum recurso do CPU. Um modelo de recipientes aninhados que usam a polarização destina-se a proporcionar um nível de inteligência sobre a estrutura nodal da máquina tal com se aplica à configuração pedida, de modo que, geralmente, os grupos de CPUs hospedeiros podem ser atribuídos a grupos de CPUs hóspedes, melhorando assim tanto quanto possível a partilha de armazenamento e a minimização de configurações diferentes, essencialmente em colisão nos mesmos CPUs hospedeiros. Polarização e autorização indicam a relação entre CPUs físicos e CPUs lógicos ou CPUs lógicos e CPUs virtuais numa configuração de hóspede, e como a capacidade atribuída à configuração do hóspede é repartida entre os CPUs que compõem a configuração.
Historicamente, uma configuração de hóspede tem sido polarizada horizontalmente. Para contudo muitos CPUs 38 ΡΕ2223203 hóspedes foram definidos para a configuração, o recurso atribuído ao CPU hospedeiro foi espalhado uniformemente para todos os CPUs hóspedes de um modo equitativo, não de direito. Pode dizer-se que o peso de um único CPU lógico numa partição lógica quando a polarização horizontal se encontra em efeito é aproximadamente igual ao peso total da configuração dividido pelo número de CPU1s. No entanto, com a introdução dos modelos 2097 e família, torna-se imperativo ser passível de espalhar o recurso do CPU hospedeiro de um modo diferente, o que é denominado de polarização vertical de uma configuração, e então o grau de proporcionamento de CPUs hóspedes com CPUs hospedeiros sendo indicado como tendo autorização alta, média ou baixa. A autorização alta está em vigor quando um CPU lógico/ virtual de uma configuração verticalmente polarizada é totalmente apoiada pelo mesmo CPU hospedeiro. A autorização média está em vigor quando um CPU lógico/virtual de uma configuração verticalmente polarizada é parcialmente apoiado por um CPU hospedeiro. Uma autorização baixa está em vigor quando a um CPU lógica/virtual de uma configuração polarizada verticalmente não está garantido qualquer recurso CPU hospedeiro, além do que pode tornar-se disponível devido a recursos de folga se tornarem disponíveis. Folga de CPU:
Recurso de CPU, existem dois tipos de recursos de CPU de folga: • A folga local torna-se disponível quando um CPU lógico/virtual de uma configuração não está a utilizar 39 ΡΕ2223203 todos os recursos ao qual ele tem direito, sendo uma tal folga então utilizada dentro da configuração daquele CPU. A folga local é preferida em relação à folga remota dado que são esperadas melhores taxas de sucesso em memórias cache quando a folga é utilizada dentro da configuração. • A folga remota torna-se disponível quando um CPU lógico/virtual de uma configuração não está a utilizar todos os recursos ao qual ele tem direito, sendo uma tal folga é então utilizada fora da configuração daquele CPU. Espera-se que a folga remota exiba taxas de sucesso mais baixas em memórias cache, mas sempre é melhor do que não correr um CPU lógico/virtual.
Tal 0 objectivo é o de maximizar as taxas de sucesso da memória cache do CPU. Para uma partição lógica, a quantidade de recurso físicos de CPU é determinada pelos coeficientes de ponderação globais do sistema que determinam os recursos de CPU atribuídos a cada partição lógica. Por exemplo, num MP lógico de 3 vias ao qual é atribuído recursos de CPU físico equivalente a um único CPU, e se encontra polarizado horizontalmente, cada CPU lógico seria entregue independentemente e assim receberia cerca de 33% de recursos de CPU físico. Se a mesma configuração tivesse que ser polarizada verticalmente, apenas um único CPU lógico iria funcionar e receberia cerca de 100% do recurso físico do CPU atribuído (autorização alta) , enquanto que os restantes dois CPUs lógicos não seriam normalmente entregues (direito baixo). 40 ΡΕ2223203 atribuição de recursos é normalmente uma aproximação. Mesmo um CPU de baixa autorização pode receber uma certa quantidade de recursos que sejam apenas para ajudar a garantir que um programa não fique preso num tal CPU. Ao proporcionar um meio para que um programa de controlo indique que compreende a polarização, e para receber uma indicação para cada CPU da sua polarização e, se polarização vertical, o grau de autorização, o programa de controlo pode fazer uma utilização mais inteligente de estruturas de dados que geralmente são tidas como locais para um CPU versus disponíveis para todos os CPUs de uma configuração. Além disso, um tal programa de controlo pode evitar direccionar o trabalho para qualquer CPU de autorização baixa. O recurso actual de CPU físico atribuído pode não constituir um número integral de CPUs, sendo que portanto existe também a possibilidade de um ou mais CPUs numa configuração MP polarizada verticalmente serem autorizados mas não num grau elevado, resultando assim em CPUs que têm autorização vertical média ou baixa. É possível para quaisquer CPUs restantes de baixa autorização receber uma certa quantidade de recursos de CPU hospedeiro.
Por exemplo, isto pode ocorrer quando um tal CPU é direccionado, tal como através de uma sequência SIGP e recurso de CPU hospedeiro de folga se encontra disponível. Caso contrário, um tal CPU lógico/virtual pode permanecer num estado não-despachado, mesmo que seja de outro passível de ser despachado.
De preferência, de acordo com a invenção, é definido um campo de polarização de 2-bit para o novo tipo 41 ΡΕ2223203 de CPU "entrada da lista topológica" (topology-list entry -TLE) da instrução STORE SYSTEM INFORMATION (STSI) . 0 grau de autorização de polarização vertical para cada CPU é indicado como alto, médio ou baixo. A atribuição não é uma percentagem precisa, mas antes um pouco é um pouco difusa e heurística.
Adicionalmente à polarização vertical como um meio de reatribuição de ponderação a CPUs hóspedes, existe um outro conceito, que é a criação e gestão de capacidade de folga (também denominada de "espaço branco") . A capacidade folga é criada sob as seguintes circunstâncias: • Um CPU de verticalidade alta contribui para afrouxar quando a sua utilização média (AU) cai abaixo de 100 por cento (100-UA). • Um CPU de verticalidade média que tem um proporcionamento atribuído de M por cento de um CPU hospedeiro contribui para afrouxar quando a sua utilização média (AU) cai abaixo de M por cento (M-AU > 0) . • Um CPU de verticalidade baixa não contribui para a folga. • Um CPU de verticalidade alta não é um consumidor de folga.
Instrução STORE SYSTEM INFORMATION (armazenar informação do sistema): 42 ΡΕ2223203
Um exemplo de forma de realização de um formato de uma instrução STORE SYSTEM INFORMATION figura 3 compreende um campo de código de operação 'B27D', um campo de registo base B2 e um campo de deslocamento D2 assinado. A instrução código de operação informa a máquina que executa a instrução que se encontram implicados registos gerais '0' e '1' associados à instrução. É obtido um endereço de um segundo operando adicionando o valor assinado do campo de deslocamento para o conteúdo do registo geral especificado pelo campo de base. Numa forma de realização, quando o campo de registo de base for '0', o valor alargado do sinal do campo de deslocamento é utilizado directamente para especificar o segundo operando. Quando a instrução STORE SYSTEM INFORMATION é obtido e executado, dependendo de um código de função, em geral, registo 0, quer uma identificação do nível da configuração que executa o programa é colocada no registo geral 0 ou informação acerca de um componente ou componentes de uma configuração é armazenada num bloco de informação do sistema (SYSIB). Quando a informação sobre um componente ou componentes é pedida, a informação é especificada por conteúdos adicionais do registo geral 0 e por conteúdos do registo geral 1. 0 SYSIB, se houver, é designado pelo endereço do segundo operando. A máquina encontra-se preparada para proporcionar um, dois ou três níveis de configuração. Os níveis são: 43 ΡΕ2223203 1. A máquina básica, que é a máquina como se estivesse a operar no modo básico ou execução de instrução não-interpretativa. 2. Uma partição lógica, que é fornecida se a máquina estiver a operar no modo LPAR (dividido logicamente, execução interpretativa da instrução). Uma partição lógica é proporcionada pelo hipervisor LPAR, que é uma parte da máquina. Existe uma máquina básica mesmo quando a máquina está a funcionar no modo LPAR. 3. Uma máquina virtual, que é proporcionada por um programa de controlo de máquina virtual (VM) que é executado quer pela máquina básica ou numa partição lógica. Uma máquina virtual pode por ela própria executar um programa de controlo de VM que proporciona uma máquina virtual de nivel mais elevado (mais removida da máquina básica) , que também é considerada uma configuração de nivel 3. Os termos modo básico, modo LPAR, partição lógica, hipervisor, e máquina virtual, e quaisquer outros termos relacionados especificamente com estes termos, não são definidos nesta publicação, eles são definidos nos manuais da máquina. Um programa a ser executado por uma configuração de nível 1 (a máquina básica) pode solicitar informações sobre essa configuração. Um programa a ser executado por uma configuração de nível 2 (numa partição lógica) pode solicitar informações sobre a partição lógica e sobre a máquina básica subjacente. Um programa a ser executado por uma configuração de nível 3 (uma máquina virtual) pode 44 ΡΕ2223203 pedir informações sobre a máquina virtual e sobre os um ou dois níveis subjacentes; uma máquina básica é sempre subjacente, e uma partição lógica pode ou não estar entre a máquina básica e a máquina virtual. Quando é solicitada a informação sobre uma máquina virtual são fornecidas informações sobre a configuração que executa o programa e sobre qualquer nível ou níveis subjacentes de máquina virtual. Em qualquer destes casos é proporcionada informação sobre um só nível, se o nível implementa a instrução. 0 código de função que determina a operação é um número inteiro binário não sinalizado nas posições dos bits 32-35 do registo geral 0 e é tal como se segue: Código de função Informação pedida:_ 0 Número do nível da configuração actual 1 Informação sobre o nível 1 (a máquina básica) 2 3 4-14
Informação sobre o nível 2 (uma partição lógica)
Informação sobre o nível 3 (uma máquina virtual)
Nenhum; códigos estão reservados Informação sobre o nível da configuração actual Código da função inválido: 15 45 ΡΕ2223203 0 nível da configuração que executa o programa é denominado de nível actual. 0 nível da configuração especificada por um código de função diferente de zero é denominado de nível especificado. Quando o nível especificado se encontra numerado mais alto do que o nível actual, então o código da função é denominado de inválido, o código de condição encontra-se definido como 3, e nenhuma outra acção (incluindo verificação) é executada. Código da função válido:
Quando o código de função é igual a ou menor do que o número do nível actual é denominado válido. Neste caso, os bits 36-55 do registo geral 0 e bits 32-47 do registo geral 1 devem ser zero ou 15; caso contrário, é reconhecida uma excepção de especificação. Os bits 0-31 dos registos gerais 0 e 1 são sempre ignorados. Quando o código da função é 0, um binário inteiro não sinalizado que identifica o nível de configuração actual (1 para máquina básica, 2 para partição lógica, ou 3 para máquina virtual) é colocado em posições dos bits 32-35 do registo geral 0, o código da condição encontra-se definido para 0, e nenhuma outra acção é realizada. Quando o código da função é válida e diferente de zero, os registos gerais 0 e 1 contêm especificações adicionais sobre a informação solicitada, tal como se segue: • As posições dos bits 56-63 do registo geral 0 contêm um número inteiro binário não sinalizado, denominado 46 ΡΕ2223203 componentes 1 contêm um denominado informação selector 1, que especifica um componente ou da configuração especificada.
As posições dos bits 48-63 do registo geral número inteiro binário não sinalizado, selector 2, que especifica o tipo de solicitada. 0 conteúdo de registos gerais 0 e 1 encontra-se apresentado na figura 4.
Quando o código de função é válido e diferente de zero, a informação pode ser armazenada num bloco de informação do sistema (SYSIB) que começa no local do segundo operando. 0 SYSIB é 4K bytes e deve começar num limite de 4K bytes; caso contrário, pode ser reconhecida uma excepção de especificação, dependendo do selector 1 e selector 2 e se as excepções de acesso são reconhecidas devido a referências ao SYSIB. 0 selector 1 pode ter valores tal como se segue:
Selector 1 Informação pedida 0 Nenhuma; selector está reservado 1 Informação sobre o nível de configuração especificado pelo código da função 2 Informação sobre um ou mais CPUs no nivel de configuração especificado 3 - 255 Nenhuma; selectores estão reservados ΡΕ2223203 47
Quando ο valores tal como se Selector 2 quando selector 1 é 1 0 1 2 3-65.535 Quando o valores tal como se Selector 2 quando selector 1 é 2 0 1 2 3-65.535 selector 1 é 1, o selector 2 pode ter segue:
Informação pedida
Nenhuma; selector está reservado Informação sobre o nível de configuração especificado Informação da topologia sobre o nível de configuração especificado
Nenhuma; selectores estão reservados selector 1 é 2, o selector 2 pode ter segue:
Informação pedida
Nenhuma; selector está reservado
Informação sobre o CPU que executa o programa no nível de configuração especificado Informação sobre todos os CPUs no nível de configuração especificado
Nenhuma; selectores estão reservados
Apenas certas combinações do código de função, selector 1, e selector 2 são válidas, tal como apresentado 48 ΡΕ2223203 na figura 5.
Quando o código de função especificado, a combinação selector-1, e selector-2, é inválido (é diferente daquele apresentado na figura 5), ou se é válido, mas a informação solicitada não está disponível porque o nível especificado não implementa ou não implementa integralmente a instrução ou porque uma parte necessária do nível se encontra desinstalada ou não inicializada, e desde que uma excepção não seja reconhecida, o código de condição é definido como 3. Quando o código de função é diferente de zero, a combinação é válida, a informação solicitada encontra-se disponível, e não há excepção, a informação solicitada é armazenada num bloco de informação do sistema (SYSIB) no endereço do segundo operando.
Algum ou todos os SYSIBs podem ser obtidos antes de serem armazenados. Um SYSIB pode ser identificado nas referências por meio de "SYSIB fc.sl.s2", onde "fc", "sl" e "s2" são os valores de um código de função, selector 1, e selector 2, respectivamente.
As secções seguintes descrevem os SYSIBs definidos por meio de figuras e textos relacionados. Nas figuras, os deslocamentos apresentados à esquerda são valores de palavras (uma palavra compreende 4 bytes). "A configuração" refere-se ao nível de configuração especificado pelo código de função (o nível de configuração sobre o qual a informação é solicitada). 49 ΡΕ2223203 SYSIB 1.1.1 (configuração da máquina básica) SYSIB 1.1.1 tem o formato mostrado na figura 6, onde os campos têm os seguintes significados:
Reservado: 0 conteúdo das palavras 0-7, 13-15, e 29-63 são reservados e são armazenados como zeros. O conteúdo das palavras 64-1023 são reservados e podem ser armazenadas como zeros ou podem permanecer inalterados.
Fabricante: As palavras 8-11 contêm o nome EBCDIC de 16 caracteres (0-9 ou maiúscula A-Z) do fabricante da configuração. O nome é justificado à esquerda com espaços de fim de campo, se necessário.
Tipo: A palavra 12 contém o número de tipo EBCDIC de quatro caracteres (0-9) da configuração. (Isto é denominado o número do tipo da máquina na definição de STORE CPU ID.)
Identificador de capacidade do modelo: As palavras 16-19 contêm o identificador da capacidade do modelo EBCDIC de 16 caracteres (0-9 ou maiúscula A-Z) da configuração. O identificador da capacidade do modelo é justificado à esquerda com espaços de fim de campo, se necessário. Código da sequência: As palavras 20-23 contêm o código de sequência EBCDIC de 16 caracteres (0-9 ou maiúscula A-Z) da configuração. O código da sequência encontra-se justificado a direita com zeros EBCDIC à esquerda, se necessário. 50 ΡΕ2223203
Planta do fabrico: A palavra 24 contém o código EBCDIC de quatro caracteres (0-9 ou maiúscula A-Z) que identifica a planta do fabrico para a configuração. 0 código é justificado à esquerda com espaços de fim de campo, se necessário.
Modelo: Quando a palavra 25 não forem zeros binários, as palavras 25-28 contêm a identificação do modelo EBCDIC de 16 caracteres (0-9 ou maiúscula A-Z) da configuração. A identificação do modelo encontra-se justificada à esquerda com espaços de fim de campo, se necessário. (Isto é denominado o número do modelo na nota de programação 4 na página de 10-111 de STORE CPU ID.) Quando a palavra 25 são zeros binários, o conteúdo de palavras 16-19 representam ambos o identificador de capacidade do modelo e o modelo.
Notas de programação: 1. Os campos do SYSIB 1.1.1 são semelhantes àqueles do descritor do nó descrito na publicação "Common E/S-Device Commands and Self Description". No entanto, os conteúdos dos campos SYSIB podem não ser idênticos ao conteúdos dos correspondentes campos descritores do nó porque os campos SYSIB: • Permitem mais caracteres. • São mais flexíveis quanto ao tipo de caracteres permitidos. • Proporcionam informação que é justificado de 51 ΡΕ2223203 maneira diferente dentro do campo. • Pode não usar o mesmo processo para determinar o conteúdo dos campos tais como o campo de código da sequência. 2. 0 campo do modelo num descritor de nó corresponde ao conteúdo do campo do modelo STSI e não ao campo STSI do identificador de capacidade do modelo. 3. 0 campo modelo especifica o modelo da máquina (isto é, o modelo físico); o campo do identificador de capacidade do modelo especifica um símbolo que pode ser utilizado para localizar uma declaração de capacidade ou desempenho na publicação da biblioteca do sistema para o modelo. SYSIB 1.2.1 (CPU da máquina básica) SYSIB 1.2.1 tem o formato mostrado na figura 7, onde os campos têm os seguintes significados:
Reservado: Os conteúdos das palavras 0-19, bytes 0 e 1 da palavra 25, e palavras 26-63 são reservados e são armazenados como zeros. Os conteúdos das palavras 64-1023 são reservados e podem ser armazenadas como zeros ou podem permanecer inalterados. Código da sequência: As palavras 20-23 contêm o código de sequência EBCDIC de 16 caracteres (0-9 ou maiúscula A-Z) da configuração. O código encontra-se justificado 52 ΡΕ2223203 a direita com zeros EBCDIC à esquerda, se necessário. Planta do fabrico: A palavra 24 contém o código EBCDIC de quatro caracteres (0-9 ou maiúscula A-Z) que identifica a planta do fabrico para a configuração. é justificado à esquerda com espaços de fim de campo, se necessário.
Endereço do CPU: Os bytes 2 e 3 da palavra 25 contêm o endereço do CPU através do qual este CPU é identificado numa configuração de multiprocessamento. O endereço do CPU é um número inteiro binário não sinalizado de 16-bits. O endereço do CPU é o mesmo que é armazenado por STORE CPU ADDRESS, quando o programa é executado por uma máquina que opera no modo básico.
Nota de programação: Vários CPUs na mesma configuração têm o mesmo código de sequência, e é necessário utilizar outra informação, tal como o endereço do CPU, para estabelecer uma identidade única de CPU. 0 código de sequência devolvido para um CPU de máquina básica e um CPU de partição lógica são idênticos e têm o mesmo valor que o código de sequência devolvido para a configuração da máquina básica. SYSIB 1.2.2 (CPUs de máquina básica) O campo do formato em byte 0 da palavra 0 determina o formato do SYSIB. Quando o campo formato tem um valor de zero, SYSIB 1.2.2 tem uma configuração de formato 53 ΡΕ2223203 0 tal como apresentado na figura 8. Quando o campo do formato tem um valor de um, SYSIB 1.2.2 tem uma configuração de formato 0 tal como apresentado na figura 9.
Reservado:
Quando o campo do formato contém um valor de zero, o conteúdo dos bytes 1-3 da palavra 0 e palavras 1-6 são reservados e armazenados como zeros. Quando o campo do formato contém um valor de um, o conteúdo do byte 1 da palavra 0 e palavras 1-6 são reservados e armazenados como zeros. Quando são necessárias menos do que 64 palavras para conter a informação para todos os CPUs, o porção do SYSIB seguindo a lista do factor de ajustamento num SYSIB de formato 0 ou a lista de factor de ajuste alternativo num SYSIB de formatol, até à palavra 63 são reservados e são armazenados como zeros. Os conteúdos das palavras 64-1023 são reservados e podem ser armazenados como zeros ou podem permanecer inalterados. Quando 64 ou mais palavras são necessárias para conter a informação para todos os CPUs, a porção do SYSIB seguindo a lista do factor de ajustamento num SYSIB de formato 0 ou a lista de factor de ajuste alternativo num SYSIB de formatol, até à palavra 63 são reservados e podem ser armazenados como zeros ou permanecer inalterados.
Formato:
Byte 0 da palavra 0 contém um número inteiro 54 ΡΕ2223203 binário não sinalizado de 8-bit que especifica o formato de SYSIB 1.2.2.
Offset de capacidade de CPU alternativo:
Quando o campo do formato tem um valor de um, os bytes 2-3 da palavra 0 contêm um número inteiro binário não sinalizado de 16-bit que especifica o Offset em bytes do campo de capacidade do CPU alternativo no SYSIB
Capacidade secundária do CPU:
A palavra 7 contém um número inteiro binário não sinalizado de 32 bits que, quando não for zero, especifica uma capacidade secundária que pode ser aplicada a certos tipos de CPUs na configuração. Não há descrição formal do algoritmo usado para gerar este número inteiro, excepto que é o mesmo que o algoritmo utilizado para gerar a capacidade do CPU. 0 número inteiro é usado como uma indicação da capacidade de um CPU em relação à capacidade de outros modelos de CPU, e também em relação à capacidade de outros tipos de CPU dentro de um modelo. 0 valor da capacidade aplica-se a cada um dos CPUs de um ou mais tipos de CPU aplicáveis na configuração. Isto é, todos os CPUs na configuração de um tipo ou tipos aplicáveis têm a mesma capacidade. Quando o valor é zero, todos os CPUs de qualquer tipo de CPU na configuração têm a mesma capacidade, tal como especificado pela capacidade do CPU. A capacidade secundária do CPU pode ou não ser o mesmo valor 55 ΡΕ2223203 que o valor da capacidade do CPU. Os factores de ajuste de capacidade de multiprocessamento do CPU são também aplicáveis a CPUs cuja capacidade é especificada pela capacidade secundária do CPU.
Capacidade do CPU:
Se os bits 0-8 da palavra 8 forem zero, a palavra contém um número inteiro (I) binário de 32 bits não sinalizado no intervalo de 0<1<223 que especifica a capacidade de um dos CPUs na configuração. Se os bits 0-8 da palavra 8 forem diferentes de zero, a palavra contém um número de formato curto de ponto flutuante binário de 32-bit em vez de um número inteiro binário não sinalizado de 32 bits. Independentemente da codificação, um valor mais baixo indica uma capacidade de CPU proporcionalmente maior. Além disso, não existe descrição formal do algoritmo usado para gerar este valor. O valor é usado como uma indicação da capacidade do CPU em relação à capacidade de outros modelos de CPU. O valor da capacidade aplica-se a cada um dos CPUs não secundários na configuração. Isto é, todos os CPUs não secundários na configuração têm a mesma capacidade.
Contagem total de CPUs:
Os bytes 0 e 1 da palavra 9 contêm um número inteiro binário não sinalizado de 16-bit que especifica o número total de CPUs na configuração. Este número inclui 56 ΡΕ2223203 todos os CPUs no estado configurado, o estado de espera, ou o estado reservado.
Contagem de CPUs configurados:
Os bytes 0 e 1 da palavra 9 contêm um número inteiro binário não sinalizado de 16-bit que especifica o número total de CPUs que se encontram no estado configurado. Um CPU encontra-se no estado configurado quando ele se encontra na configuração e disponível para ser usado para executar programas
Contagem de CPUs em espera:
Os bytes 0 e 1 da palavra 10 contêm um número inteiro binário não sinalizado de 16-bit que especifica o número total de CPUs que se encontram no estado em espera. Um CPU encontra-se no estado em espera quando se encontra na configuração, não está disponível para ser usado para executar programas, e pode ser disponibilizado emitindo instruções para o colocar no estado de configurado.
Contagem de CPUs reservados:
Os bytes 2 e 3 da palavra 10 contêm um número inteiro binário não sinalizado de 16-bit que especifica o número de CPUs que se encontram no estado reservado. Um CPU encontra-se no estado reservado quando se encontra na configuração, não está disponível para ser usado para 57 ΡΕ2223203 executar programas, e pode ser disponibilizado emitindo instruções para o colocar no estado de configurado. (Pode ser possível colocar um CPU reservado no estado em espera ou configurado por meio de acções manuais).
Factores de ajuste da capacidade de multiprocessamento do CPU:
Começando com os bytes 0 e 1 da palavra 11, o SYSIB contém uma série de campos de dois bytes contíguos, contendo cada um número inteiro binário não sinalizado de 16-bit usado para formar um factor de ajuste (fracção) para o valor contido no campo da capacidade do CPU. Uma tal fracção é desenvolvida usando o valor de (V) do primeiro campo de dois bytes de acordo com um dos seguintes processos: • Se V se situar no intervalo CKV^lOO, é indicado um denominador de 100 que produz uma fracção de V/100. • Se V se situar no intervalo 101<V<255, é indicado um denominador de 255 que produz uma fracção de V/255. • Se V se situar no intervalo 255<V<65.536, é indicado um denominador de 65,536 que produz uma fracção de V/65.536.
Deste modo, a fracção representada por cada campo de dois bytes é então desenvolvida dividindo o conteúdo de um campo de dois bytes pelo denominador indicado. O número de campos de factor de ajuste é um a menos do que o número 58 ΡΕ2223203 de CPUs especificados no campo de contagem de CPUs totais. Os campos de factor de ajuste de correspondem às configurações com números crescentes de CPUs no estado de configurados. 0 primeiro campo de factor de ajustamento corresponde a uma configuração com dois CPUs no estado configurado. Cada campo sucessivo de factor de ajustamento corresponde a uma configuração com um número de CPUs no estado configurado que é um mais do que aquele para o campo precedente.
Capacidade alternada do CPU:
Quando o campo de formato tem um valor de um, os bits 0-8 da palavra N forem zero, a palavra contém um número inteiro (I) binário de 32 bits não sinalizado no intervalo de 0<1<223 que especifica a capacidade de um dos CPUs na configuração. Se os bits 0-8 da palavra N forem diferentes de zero, a palavra contém um número de formato curto de ponto flutuante binário de 32-bit em vez de um número inteiro binário não sinalizado de 32 bits.
Independentemente da codificação, um valor mais baixo indica uma capacidade de CPU proporcionalmente maior. Além disso, não existe descrição formal do algoritmo usado para gerar este valor. 0 valor é usado como uma indicação da capacidade anunciada do CPU relativamente à capacidade anunciada de outros modelos de CPU. O valor da capacidade alternada aplica-se a cada um dos CPUs na configuração. Isto é, todos os CPUs na configuração têm a mesma capacidade alternada. 59 ΡΕ2223203
Factores alternados de ajuste da capacidade de multiprocessamento do CPU:
Começando com os bytes 0 e 1 da palavra N+l, o SYSIB contém uma série de campos de dois bytes contíguos, contendo cada um número inteiro binário não sinalizado de 16-bit usado para formar um factor de ajuste (fracção) para o valor contido no campo da capacidade do CPU. Uma tal fracção é desenvolvida usando o valor de (V) do primeiro campo de dois bytes de acordo com um dos seguintes processos: • Se V se situar no intervalo 0<V<100, é indicado um denominador de 100 que produz uma fracção de V/100. • Se V se situar no intervalo 101^V<255, é indicado um denominador de 255 que produz uma fracção de V/255. • Se V se situar no intervalo 255<V<65.536, é indicado um denominador de 65.536 que produz uma fracção de V/65.536.
Deste modo, a fracção representada por cada campo de dois bytes é então desenvolvida dividindo o conteúdo de um campo de dois bytes pelo denominador indicado. O número de campos de factor de ajustamento alternativos é um menos do que o número de CPUs especificados no campo de contagem total de CPUs. Os campos de factor de ajustamento alternativos correspondem às configurações com números crescentes de CPUs no estado de configurados. O primeiro campo de factor de ajustamento alternativo corresponde a 60 ΡΕ2223203 uma configuração com dois CPUs no estado configurado. Cada campo sucessivo de factor de ajustamento corresponde a uma configuração com um número de CPUs no estado configurado que é um mais do que aquele para o campo precedente. SYSIB 15.1.2 (topologia da configuração) SYSIB 15.1.2 tem o formato apresentado na figura 10. Os campos têm os seguintes significados:
Reservado: 0 conteúdo dos bytes 0-1 da palavra 0, byte 2 da palavra 2, e palavra 3 são reservados e são armazenados como zeros. Os conteúdos das palavras N-1023 são reservados e podem ser armazenadas como zeros ou podem permanecer inalterados.
Comprimento: Os bytes 2-3 da palavra 0 contêm um número inteiro binário de 16-bit não sinalizado cujo valor é a contagem de bytes de todo o SYSIB 15.1.2. O comprimento de apenas a lista da topologia é determinado subtraindo 16 do valor do comprimento em bytes 2-3 da palavra de O. N na figura 10 é determinado através da avaliação da fórmula N=Comprimento/4.
Magl-6: Word e bytes 0-1 da palavra constituem seis campos de um byte onde o conteúdo de cada byte indica o número máximo de entradas da lista da topologia do tipo recipiente (TLE) ou TLEs do tipo CPU no nível correspondente de encaixe. TLEs do tipo CPU são sempre encontrados apenas no nível Magi. Adicionalmente, o 61 ΡΕ2223203 valor Magi também especifica o número máximo de CPUs que podem ser representados por um recipiente do tipo TLE do nivel Mag2. Quando o valor do nivel de encaixe é maior do que um, os níveis que contêm encaixe acima do nível Magi são ocupados apenas por TLEs do tipo recipiente. Uma mudança dinâmica à topoloqia pode alterar o número de TLEs e o número de CPUs no nível Magi, mas os limites representados pelos valores dos campos Magl-6 não mudam dentro de uma família modelo de máquinas. A topologia é uma lista estruturada de entradas onde uma entrada define um ou mais CPUs ou de outro modo está envolvido com a estrutura do encaixe. 0 seguinte ilustra o significado dos campos de magnitude:
Quando todos os CPUs da máquina são pares e não existe qualquer organização de contenção, para além da totalidade do próprio complexo de processamento central, o valor do nível de encaixe é 1, Magi é o único campo de magnitude diferente de zero, e o número de TLEs do tipo CPU armazenado não excede o valor Magi.
Quando todos os CPUs da máquina estiverem subdivididos em grupos de pares de modo a que exista um nível de contenção, o valor do nível de encaixe é 2, sendo Magi e Mag2 os únicos campos de magnitude diferente de zero, sendo que o número de TLEs do tipo recipiente armazenado não excede o valor Mag2, e sendo que o número de 62 ΡΕ2223203 TLEs do tipo CPU armazenados dentro de cada recipiente não excede o valor Mag 1.
Os bytes Mag3-6 de forma semelhante são utilizados (prosseguindo numa direcção da direita para a esquerda), quando o valor do nivel de encaixe cai na gama de 3-6. MNest: 0 byte 3 da palavra 2 especifica o nivel de encaixe da topologia à qual a configuração pode ser alargada enquanto continua a permitir ao programa hóspede sobreviver. 0 valor máximo MNest é de seis; o mínimo é um. Se MNest é um, não há nenhuma estrutura de encaixe TLE actual, Magi é o único campo diferente de zero na gama Magl-6, sendo que apenas TLE s do tipo CPU estão representados na lista da topologia. 0 valor MNest indica o número de valores de magnitude diferentes de zero começando com o campo de magnitude no byte da palavra 2 (Magi) , continuando à esquerda quando MNest é maior do que um, e com os restantes campos de magnitude armazenados como zeros. 0 valor de MNest é o encaixe máximo possível. Nenhuma mudança de configuração dinâmica excede este limite.
Lista da topologia: As palavras da figura 10 na gama 4 a N-l especifica uma lista de uma ou mais entradas da lista da topologia {TLE) . Cada TLE é um campo de oito bytes ou dezasseis bytes; assim N é um número par de 63 ΡΕ2223203 palavras, e um corolário é que uma TLE começa sempre num limite de dupla-palavra.
Entradas da lista da topologia: A primeira TLE na lista da topologia começa a um nível de encaixe igual a MNest-1. Toda a lista da topologia representa a configuração do emissor da instrução STSI especificando SYSIB 15.1.2; não é utilizada qualquer entrada TLE de recipiente mais afastada dado que seria redundante com toda a lista, e toda a configuração. Por isso, o nível de encaixe mais elevado pode ter mais de um único recipiente par.
As figuras 11 e 12 ilustram os tipos de TLEs, em que os campos têm as seguintes definições: Nível de encaixe (Nesting Levei - NL) : 0 byte 0 da palavra 0 especifica o nível de encaixe TLE. NL Significado 0 A TLE é uma TLE do tipo CPU.
1-5 A TLE é uma TLE do tipo recipiente. A primeira TLE do tipo recipiente armazenada numa lista da topologia ou um recipiente pai tem um identificador de recipiente na gama de 1-255 . Se existirem recipientes irmãos dentro do mesmo pai, eles prosseguem numa sequência ascendente dos identificadores do recipiente, que pode ou não ser consecutivo, para um valor máximo de 255. 64 ΡΕ2223203 06-FF Reservado.
As TLEs irmãs têm o mesmo valor de nível de encaixe que equivale a um valor do nível de encaixe menos um da TLE pai imediata, ou o valor de MNest menos um, porque o pai imediato é a lista da topologia em vez de uma TLE.
Reservado, 0: Para uma TLE do tipo recipiente, os bytes 1-3 da palavra 0 e bytes 0-2 da palavra 1 são reservados e armazenados como zeros. Para uma TLE do tipo CPU, os bytes 1-3 da palavra 0 e bytes 0-4 da palavra 1 são reservados e armazenados como zeros.
Identificador do recipiente: O byte da palavra 1 de uma TLE do tipo recipiente especifica um valor inteiro diferente de zero não sinalizado de 8-bit, cujo valor é o identificador do recipiente. O identificador do recipiente para uma TLE é exclusivo dentro do mesmo recipiente pai.
Dedicado (D): O bit 5 da palavra 1 de uma TLE do tipo CPU, quando um, indica que os um ou mais CPUs representados pela TLE são dedicados. Quando D é zero, o um ou mais CPUs da TLE não são dedicados. 65 ΡΕ2223203
Polarização (PP):
Os bits 6-7 da palavra 1 de uma TLE do tipo CPU especifica o valor da polarização e, quando a polarização é vertical, o grau de polarização vertical também denominado de autorização (alta, média, baixa) do(s) CPU{s) correspondente(s) representado(s) pelo TLE . São usados os seguintes valores:
Significado PP: 0 0 um ou mais CPUs representados pela TLE são polarizados horizontalmente. 1 0 um ou mais CPUs representados pela TLE são polarizados verticalmente . A autorização é baixa. 2 0 um ou mais CPUs representados pela TLE são polarizados verticalmente . A autorização é média. 3 0 um ou mais CPUs representados pela TLE são polarizados verticalmente. A autorização é alta. A polarização é apenas significativa numa configuração de multiprocessamento lógico e virtual que utiliza processadores hospedeiros partilhados e endereços de como o recurso atribuído a uma configuração é aplicado através dos CPUs da configuração. Quando a polarização horizontal se encontra em execução, a cada CPU de uma configuração é garantida aproximadamente a mesma quantidade ΡΕ2223203 de recursos. Quando a polarização vertical se encontra em execução, os CPUs de uma configuração são classificados em três níveis de autorização de recursos: alta, média, e baixa.
Ambas, a reinicialização do subsistema e execução bem-sucedida da sequência da arquitectura configurada do SIGP, especificando o modo ESA/390, colocam uma configuração e todos os seus CPUs em polarização horizontal. Os CPUs imediatamente afectados são aqueles que estão no estado configurado. Quando um CPU no estado de espera é configurado, ele adquire a polarização actual da configuração e provoca uma alteração da topologia dessa configuração a ser reconhecida.
Um CPU dedicado é polarizado horizontalmente ou verticalmente. Quando um CPU dedicado é polarizada verticalmente, a autorização é sempre alta. Assim, quando D é um, PP é binário 00 ou binário 11.
Tipo de CPU: O byte 1 da palavra 1 de uma TLE do tipo CPU especifica um número inteiro binário não sinalizado de 8-bit cujo valor é o tipo de CPU de um ou mais CPUs representados pela TLE. O valor do tipo CPU especifica um tipo de CPU primário ou qualquer um dos possíveis tipos de CPU secundário. 67 ΡΕ2223203
Origem do endereço do CPU:
Os bytes 2-3 da palavra 1 de uma TLE do tipo CPU especifica um número inteiro binário não sinalizado de 16-bit cujo valor é o endereço do CPU do primeiro CPU na gama de CPUs representados pela máscara do CPU, e cuja presença é representada pelo valor da posição de bit 0 na máscara do CPU. A origem de um endereço de CPU é divisível uniformemente por 64. 0 valor de uma origem de endereço de CPU é o mesmo que a armazenada pela instrução STORE CPU ADDRESS (STAP) quando executada no CPU representado pela posição de bit 0 na máscara do CPU. Máscara do CPU:
As palavras 2-3 de uma TLE do tipo CPU especifica uma máscara de 64 bits em que cada posição de bit representa um CPU. 0 valor do campo origem do endereço do CPU mais uma posição de bit na máscara do CPU é igual ao endereço do CPU para o CPU correspondente. Quando um bit da máscara do CPU é zero, o CPU correspondente não é representado pela TLE. 0 CPU não se encontra na configuração ou então deve ser representado por outra TLE tipo CPU.
Quando um bit de máscara do CPU é um, o CPU correspondente tem os valores de atributo do modificador especificados pela TLE, encontra-se na topologia da configuração, e não se encontra presente em qualquer outra 68 ΡΕ2223203 TLE da topologia.
Deste modo, por exemplo, se a origem do endereço do CPU for um valor de 64, e posição de bit 15 da máscara do CPU for um, o CPU 79 encontra-se na configuração e tem o tipo de CPU, polarização, a autorização, e dedicação tal como especificado pela TLE.
Sequência da TLE:
Os atributos do modificador que se aplicam a uma TLE do tipo CPU são o tipo de CPU, a polarização, a autorização, e a dedicação. A polarização e a autorização (para a polarização vertical) são tomadas como um único atributo, embora com quatro valores possíveis (horizontal, vertical alto, vertical médio, e vertical baixo).
Uma única TLE de CPU é suficiente para representar até 64 CPUs que têm todos os mesmos valores de atributo de modificador.
Quando existem mais do que 64 CPUs, ou toda a gama de endereços da CPU não está coberta por uma única origem de endereço de CPU, e os atributos do modificador são constantes, uma TLE separada de CPU irmão é armazenada para cada origem de endereço de CPU, se necessário, em ordem crescente de origem de endereço de CPU. Cada uma de tais TLEs armazenada tem pelo menos um CPU representado. A colecção de uma ou mais de tais TLEs de CPU é denominado de 69 ΡΕ2223203 um conjunto TLE de CPU.
Quando existem vários tipos de CPU, um conjunto separado de TLE de CPU é armazenado para cada, em ordem crescente, tipo de CPU.
Quando existem vários valores de polarização e de autorização é armazenado para cada um, um conjunto separado de TLEs de CPU, em ordem decrescente de valor e grau de polarização (vertical alta, média, baixa, depois horizontal) . Quando presente, todos os conjuntos de polarização de TLE de CPU de um dado tipo de CPU são armazenados antes do próximo conjunto TLE do CPU do próximo tipo de CPU.
Quando existem ambos os CPUs dedicadas como não dedicados é armazenado para cada um, um conjunto separado de TLE de CPUs, com aparecimento dedicado antes de não-dedicado. Todas as TLEs encontram-se ordenadas assumindo uma primeira transversal de profundidade, onde a ordem de classificação de maior para menor é a seguinte:
1. Tipo de CPU
a. Menor valor de tipo de CPU
b. Maior valor de tipo de CPU 2. Autorização de polarização a. Vertical alta b. Vertical média c. Vertical baixa 70 ΡΕ2223203 d. Horizontal 3. Dedicação (quando aplicável) a. Dedicado b. Não dedicado A sequência por origem de endereço do CPU e atributos modificadores de TLEs irmãs de CPUs dentro de um recipiente pai é realizada de acordo com a seguinte lista, que prossegue do maior para o menor. 1. Conjunto da TLE do CPU do valor mais baixo do tipo de CPU, vertical alto, dedicado 2. Conjunto da TLE do CPU do valor mais baixo do tipo de CPU, vertical alto, não dedicado 3. Conjunto da TLE do CPU do valor mais baixo do tipo CPU, vertical médio, não dedicado 4. Conjunto da TLE do CPU do valor mais baixo do tipo CPU, vertical baixo, não dedicado 5. Conjunto da TLE do CPU do valor mais baixo do tipo CPU, horizontal, dedicado 6. Conjunto da TLE do CPU do valor mais baixo do tipo CPU, horizontal, não dedicado 7. Conjunto da TLE do CPU do valor mais alto do tipo CPU, vertical alto, dedicado 8. Conjunto da TLE do CPU do valor mais alto do tipo CPU, vertical alto, não dedicado 9. Conjunto da TLE do CPU do valor mais alto do tipo CPU, vertical médio, não dedicado 10. Conjunto da TLE do CPU do valor mais alto do tipo 71 ΡΕ2223203 CPU, vertical baixo, não dedicado 11. Conjunto da TLE do CPU do valor mais alto do tipo CPU, horizontal, dedicado 12. Conjunto da TLE do CPU do valor mais alto do tipo CPU, horizontal, não dedicado
Outras regras da TLE: 1. Uma TLE do tipo recipiente encontra-se localizada em níveis de encaixe na gama 1-5. 2. Uma TLE do tipo CPU encontra-se localizada no nível de encaixe 0. 3. 0 número de TLEs irmãs do tipo recipiente numa lista de topologia ou um dado recipiente pai não excede o valor do byte de magnitude (Mag2-6) do nível de encaixe que corresponde aos irmãos. 4. 0 número de CPUs representados por uma ou mais TLEs do tipo CPU do recipiente pai não excede o valor do byte de magnitude Magi. 5. O conteúdo de uma TLE é definido como se segue: a) Se uma TLE é uma TLE do tipo recipiente, o conteúdo é uma lista que segue imediatamente a TLE pai, composto de uma ou mais TLEs criança, sendo que cada criança TLE tem um nível de encaixe de um menos que o nível de encaixe da TLE pai ou final de lista da topologia. b) Se uma TLE é uma TLE do tipo CPU, o conteúdo é um ou mais CPU' s, tal como identificado pelos outros campos de uma TLE de CPU. 72 ΡΕ2223203
Quando a primeira TLE a um nível de encaixe é uma entrada de CPU, foi atingido o nível 0 nível de encaixe máximo.
Nota de programação: É descrito um possível processo de exame de uma lista de topologia. Antes de ser iniciado um exame de uma lista de topologia, o apontador TLE actual é inicializado para referenciar a primeira TLE ou de topo na lista da topologia, sendo o apontador TLE anterior inicializado para zero, sendo depois as TLEs examinadas numa sequência de cima para baixo.
Conforme prossegue o exame da lista da topologia, o apontador TLE actual é avançado aumentando o apontador TLE actual pela dimensão da TLE actual para a qual aponta. Uma TLE do tipo recipiente é avançada pela adição de oito ao apontador TLE actual. Uma TLE do tipo CPU é avançada pela adição de dezasseis ao apontador TLE actual. 0 processo de avançar o apontador TLE actual inclui guardar o seu valor como o apontador TLE anterior imediatamente antes de ser incrementado. 0 exame TLE não é realizado se a lista da topologia não tiver TLEs. 0 processo de exame é descrito nos seguintes passos: 1. Se o nível de encaixe actual de TLE for zero, e o 73 ΡΕ2223203 nível de encaixe anterior de TLE for nulo ou um, a TLE actual representa a primeira TLE do tipo CPU de um grupo de uma ou mais TLEs do tipo CPU. 0 programa deverá executar qualquer acção apropriada para quando um novo grupo de um ou mais CPUs é observado pela primeira vez. Vá para 0 passo 5. 2. Se o nível de encaixe TLE actual for zero, e o nível de encaixe TLE anterior for zero, a TLE actual representa uma TLE subsequente do tipo CPU de um grupo de TLEs do tipo CPU que representam irmãos dos CPUs previamente observados nos passos 1 ou 2. 0 programa deverá executar qualquer acção que for apropriada para quando o tamanho de um grupo irmão existente de um ou mais CPUs for aumentado. Vá para o passo 5. 3. Se o nível de encaixe actual da TLE não for zero, e o nível de encaixe anterior da TLE for nulo, a TLE anterior representa a última TLE ou somente do tipo CPU de um grupo de uma ou mais TLEs do tipo CPU. 0 programa deverá executar qualquer acção apropriada para quando um grupo existente de um ou mais CPUs estiver completo. Vá para o passo 5. 4. Vá para o passo 5.
Por eliminação, este seria o caso em que o nível de encaixe actual da TLE não é zero, e o nível de encaixe anterior da TLE não é zero. Se o nível de encaixe actual da TLE for menor que o nível de 74 ΡΕ2223203 encaixe anterior da TLE, a direção da transversal da lista da topologia é em direcção a uma TLE do tipo CPU. Se o nivel de encaixe actual da TLE for maior do que o nivel de encaixe anterior da TLE, a direção da transversal da lista da topologia é para longe de uma TLE do tipo CPU. As TLEs do tipo recipiente estão a ser atravessadas conduzindo a (1) um outro grupo de TLEs do tipo CPU que são um grupo separado na topologia global, ou (2) ao fim da lista de topologia. Em qualquer dos casos, não é necessário nenhum processamento especial para além de avançar para a TLE seguinte. 5. Avançar para a próxima posição TLE com base no tipo da TLE actual. Se o apontador TLE actual avançado for equivalente ao fim da lista da topologia: a. Não existem mais TLEs de qualquer tipo. b. Se o nivel de encaixe da TLE anterior for zero, o programa deverá executar qualquer acção apropriada para quando um grupo existente de um ou mais CPUs estiver completo. c. 0 exame está completo.
Caso contrário, vá para o passo 1.
Num exemplo de forma de realização, figura 16, um sistema informático compreende dois repartidores físicos 75 ΡΕ2223203 (Repartidor 1 e Repartidor 2). Cada repartidor contém duas placas lógicas (Placa 1 e Placa 2), memória principal (Memória), e adaptadores E/S (Canais E/S 1 e canais E/S 2) para comunicar com dispositivos periféricos e redes. Cada placa contém dois módulos multi-chip (Mod 1, Mod 2, Mod 3 e Mod 4). Cada módulo multi-chip contém dois processadores (CP[71, CP[72, CP[73, CP[74, CP[75, CP[76, CPU! e CP[78) . Cada módulo contém também uma memória cache de nível 2 (Memória cache 1, Memória cache 2, Memória cache 3 e Memória cache 4). Cada processador (Central Processing Unit ou CPU), inclui uma memória cache de nível 1 e memória tampão e Translation-Lookaside-Buffer (TLB). As memórias tampão TLB endereçam informações de tradução durante a tradução de endereços dinâmicos.
De acordo com a invenção, figuras 17, 18 e 19, os componentes do sistema informático são atribuídos a "recipientes" de acordo com a proximidade. Cada módulo é atribuído a recipientes que se encontram mais no interior 6, 7, 8 e 9 como os CPUs de cada módulo se encontram na proximidade mais contígua uns dos outros. Uma vez que os módulos são empacotados em placas, os módulos das placas respectivas são atribuídos aos recipientes do próximo nível 4 e 5. 0 agrupamento de proximidade imediatamente superior é o bastidor. As placas de um bastidor são atribuídos a um recipiente que representa o bastidor (recipientes 2 e 3) . Todo o sistema é representado pelo recipiente 1.
Pode ser visto que dois CPUs no mesmo módulo, 76 ΡΕ2223203 tais como os CPUl e CPC72 estão num relacionamento topológico mais próximo ou distância uns aos outros e ambos se encontram num recipiente (recipiente 6) e nenhum limite de recipiente é atravessado quando somente estes CPUs estão envolvidos. No entanto, se o CPUl e CP [78 estiverem envolvidos, existem 4 limites de recipientes atravessados. CPUl no recipiente 6 é separado pelo recipiente 4, 5 e 9 do CP[78. Portanto, conhecendo a estrutura do recipiente, um utilizador pode obter uma vista da topologia do sistema.
Claro que, num sistema dividido logicamente, os CPUs podem ser compartilhadas entre sistemas operativos tal como discutido anteriormente. Por isso, se a uma partição lógica foram atribuídos 3 CPUs lógicos, cada CPU lógico atribuído a 20% de cada de três CPUs reais, a partição deverá ter um melhor desempenho se os 3 CPUs reais estiverem em grande proximidade um para o outro dado que a comunicação entre CPUs e recursos de CPU (memória cache e memória, por exemplo) teria o melhor desempenho. No nosso exemplo, CPUl e CPU2 numa partição experimentariam menos degradação de linhas da memória na memória cache 1 do que se os dois CPUs fossem CPUl e CPUS.
No exemplo, é criada uma partição incluindo CPUl, CPU2 e CPU3. Um programa que opera na partição emite uma instrução STSI e um quadro SYSIB 15.1.2 (figura 10) é devolvido para o programa. Neste caso, a partição compreende o recipiente 6 e recipiente 7 e, portanto, existem dois níveis de encaixe. Os valores do quadro SYSIB 77 ΡΕ2223203 são : 0 campo MNest é definido como 4 indicando que a topologia inclui 4 níveis de encaixe, o que é um máximo absoluto de encaixe para o modelo, e pode ou pode não ser plenamente explorado em qualquer lista de topologia arbitrária, dependendo da atribuição de recursos para a configuração do hóspede que emite STSI, e como os recursos são atribuídos a outras configurações hóspedes do sistema. 0 campo Magi é definido como 2 indicando que 2 CPUs estão disponíveis no primeiro nível mais primitivo. 0 campo Mag2 é definido como 2 indicando que 2 recipientes de segundo nível (módulo) estão disponíveis. 0 campo Mag3 é definido como 2 indicando que 2 terceiros níveis (placas) estão disponíveis. 0 campo Mag4 é definido como 2 indicando que 2 quartos níveis (bastidores) estão disponíveis.
No nosso exemplo, os 3 CPUs estão contidos em dois módulos na mesma placa, sendo por isso proporcionadas as seguintes 4 entradas TLE: 1. NL = 1/ CtnrID = 1 (recipiente 6) 2. NL = 0/ CPU type = 1 (o tipo de CPU's) ; CPU Addr
Origin = 0/ CPU Mask 0110 00 (CPUI e CPU2 dos CPU's endereçados) 78 ΡΕ2223203 3. NL = 1; CtnrID = 2 (recipiente 7) 4. NL = 0; CPU type = 1 (o tipo de CPU1 s) ; CPU Addr
Origin = 0; CPU Mask 00010 00 {CPU3 dos CPU1 s endereçados)
Assim, o programa tem uma representação da topologia com base no recipiente e TLE1s do CPU devolvidas.
Executar função da topologia (PTF)
Quanto à figura 13, uma instrução de execução de função da topologia {PTF) compreende de preferência um código de operações e um campo de registo RI que identifica um primeiro operando. Os conteúdos do registo geral identificado por RI especifica um código de função nas posições de bits 56-63, tal como ilustrado na figura 14.
Os códigos de função definidos são tal como se segue: FC Significado_ 0 Pedir polarização horizontal. 1 Pedir polarização vertical. 2 Verificar estado de alteração da topologia.
Os códigos de função indefinida na gama de 0-255 estão reservados para futuras ampliações.
Após a conclusão, se o código a condição 2 79 ΡΕ2223203 estiver definido, um código de razão é armazenado nas posições de bits 48-55 no registo geral RI. Os bits 16-23 e 28-31 da instrução são ignorados.
Operação do Código de Função 0: A execução completa com código de condição para qualquer das seguintes razões e (códigos de razão):
Nenhuma razão especificada (0). A configuração de pedido já se encontra polarizada horizontalmente (1).
Uma alteração da topologia já está em processo (2).
Caso contrário, é iniciado um processo para colocar todos os CPUs na configuração em polarização horizontal. A conclusão do processo é assíncrona em relação à execução da instrução e pode ou pode não ser concluído quando a execução da instrução termina. Código de condição resultante: 0 Mudança da topologia iniciada 1 - 2 pedido rejeitado 3 -
Operação do Código de Função 1: 80 ΡΕ2223203 A execução completa com o código de condição 2 para qualquer das seguintes razões e (códigos de razão):
Nenhuma razão especificada (0). A configuração de pedido já se encontra polarizada verticalmente (1).
Uma alteração da topologia já está em processo (2).
Caso contrário, é iniciado um processo para colocar todos os CPUs na configuração em polarização vertical. A conclusão do processo é assíncrona em relação à execução da instrução e pode ou pode não ser concluído quando a execução da instrução termina. Código de condição resultante: 0 Mudança da topologia iniciada 1 - 2 pedido rejeitado 3 -
Operação do Código da Função 2: É verificada a condição de relatório pendente de mudança da topologia, e a instrução termina com o conjunto de código da condição. Código de condição resultante: 0 Relatório não pendente de mudança de topologia, topologia 81 ΡΕ2223203 1 relatório mudança pendente 2 -3 -
Uma mudança da topologia é qualquer alteração de modo que o conteúdo de um SYSIB 15.1.2 seria diferente dos conteúdos da SYSIB 15.1.2 antes da alteração da topologia. É criada uma condição de relatório pendente de mudança de topologia quando termina um processo de mudança de topologia. Uma condição de relatório pendente de mudança de topologia é libertada para a configuração quando qualquer um do seguinte é realizado: A execução de PERFORM TOPOLOGY FUNCTION especifica a função de código 2 que completa com código de condição 1. STORE SYSTEM INFORMATION para SYSIB 15.1.2 é executada com êxito por qualquer CPU na configuração. É realizada uma reinicialização do subsistema.
Condições especiais:
Se as posições de bits 0-55 de registo geral RI não forem, é reconhecida uma excepção de especificação. Se for especificado um código de função indefinida é reconhecida uma excepção de especificação.
Excepções do programa: 82 ΡΕ2223203
Operação (função de topologia de configuração não está instalada)
Operação privilegiada Especificação
Exemplo de ambiente de mainfrazoe:
Conforme as arquitecturas de ponta dos servidores aumentam o número de processadores físicos e as velocidades de processadores continuam a melhorar, o "ninho" de processador necessário para construir máquinas de grande porte continua a ser feita de blocos de construção menores que são mais nodais na natureza. Por exemplo, enquanto que a memória cache L2 de uma máquina z990 ou Z9 é totalmente memória cache coerente, os modelos totalmente preenchido têm actualmente quatro (4) L2s separadas que estão ligadas por um tecido para apresentar a aparência de uma única memória cache L2. A penalidade por sair do nó para resolver uma falha de memória cache continua a aumentar. Por exemplo, a resolução de um falha da LI numa L2 remota é mais dispendiosa do que resolver a mesma no local L2. A falha numa memória cache LI privada de um CP, normalmente em chip, é dispendiosa de iniciar e ter que passar por todo o caminho para a memória pode parecer uma eternidade. 0 aumento da velocidade da memória e as ligações à mesma não estão a manter o ritmo com aumentos na velocidade do processador. Enquanto alguém pode querer tentar empacotar tudo mais apertado "no chip" ou semelhante, o consumo de energia e problemas de refrigeração estão em contradição 83 ΡΕ2223203 com isto.
Com a introdução do z990, a LPAR tomou conhecimento da topologia da máquina e começou a optimizar a alocação do CP da partição lógica e recursos de armazenamento para os recursos físicos. Os melhoramentos às capacidades para reotimizar dinamicamente as atribuições de recursos de partição lógica foram introduzidos com o z9 GA-1 principalmente no apoio da reparação de livro concorrente. 0 novo suporte descrito aqui aborda o verdadeiro início de ter software OS zSeries tornar-se consciente da topologia da máquina, apresentada como uma topologia de partição lógica, para então proporcionar comunicação de afinidade em relação à colocação do CPU na estrutura do livro CEC.
Você pode pensar no modo como a LPAR zSeries faz a gestão de partições lógicas partilhadas hoje como estando polarizadas horizontalmente. Isto é, o peso do processamento para a partição lógica é dividido igualmente entre todos os CPs on-line lógicos na partição lógica. Este suporte apresenta uma forma nova e opcional de polarização para gerir os CPs lógicos partilhados de uma partição lógica denominada de polarização vertical.
Quando uma partição lógica escolhe correr em modo vertical, o software emite uma nova instrução para informar 84 ΡΕ2223203 o hipervisor do zSeries disto e o hipervisor vai mudar a forma como ele despacha a partição lógica.
Dependendo da configuração da partição lógica vertical, os processadores lógicos teriam polaridade alta, média ou baixa. A polaridade descreve a quantidade de partes do processador físico a que os processadores lógicos verticais têm direito. Os clientes definem pesos para as partições lógicas que efectivamente definem a quantidade de ciclos de processador físico a que cada partição lógica numa máquina tem direito. A polaridade é medida pela razão entre o peso actual uma partição lógica para o número de processadores lógicos configurados para a partição lógica. Os processadores de alta polaridade têm perto de 100% de quota-parte de CPU. Os processadores de polaridade média têm > 0 a 99% de quota-parte e processadores de baixa polaridade, têm 0% de quota-parte (ou muito perto disso). Aos CPs lógicos de alta polaridade será atribuído um processador físico para execução em CPs muito semelhantes a dedicados mas o CP de alta polaridade partilhado pode ainda desistir do recurso físico e permitir que outros CPs partilhados utilizem os seus ciclos em excesso. A chave aqui torna-se então que o software vê a topologia lógica e tenta explorar os CP s lógicos altamente polarizados para suas filas de trabalho.
Por exemplo, um cliente configura um processador 85 ΡΕ2223203 de três vias com 2 partições lógicas, cada uma com 2 processadores lógicos e cada um com um peso de 50. Se a primeira partição lógica definiu-se a si como vertical, teria 1 CP lógico sw polaridade alta e 1 de polaridade média.
Note que quando uma partição lógica escolhe correr em modo vertical, toda a partição lógica corre no modo vertical. Isto inclui todas os seus processadores secundários, tais como zAAPs {IFAs) e/ou zIIPs. É da responsabilidade do cliente definir pesos para todos os tipos de processador para estas partições lógicas que irão atingir o nivel desejado de processamento vertical para cada tipo.
Suporte da topologia da partição lógica o Estabelecer a infra-estrutura para uma topologia nodal da partição lógica. o Fazer quaisquer alterações necessárias aos algoritmos de atribuição nodais da LPAR para as partições horizontais existentes necessárias para proporcionar uma topologia válida. o Proporcionar simulação de instrução para o novo bloco de informações de topologia da configuração para a instrução STORE SYSTEM INFORMATION (STSI) para proporcionar topologia nodal de partição lógica à partição lógica. o Examinar mudanças na configuração física ou lógica 86 ΡΕ2223203 para determinar se é necessária uma alteração da topologia. Estas podem ocorrer quando:
Um CP físico é adicionado ou retirado da configuração
Um CP lógico é adicionado ou retirado da configuração É activada uma partição lógica É desactivada uma partição lógica
Os pesos das partições lógicas são alterados a partir da HMC/SE
Iniciação de software de mudança do peso de uma partição lógica.
Uma partição lógica é reinicializada (comutar para horizontal).
Uma partição lógica comuta para o modo ESA/390 (comutar para horizontal).
Algoritmos do ambiente:
Uma topologia tem que ser atribuída a uma partição lógica quando é activada pela primeira vez e, em seguida, quaisquer mudanças na topologia nodal atribuídas a uma partição lógica devem resultar na notificação da partição lógica. Os resultados da topologia nodal devem ser mantidos numa estrutura de dados nova conveniente para permitir consultas mais fáceis pelo novo processamento STSI, bem como limitando o processamento da melhor forma possível quando são feitas as alterações da configuração. 87 ΡΕ2223203
Esta nova estrutura permite também que o processamento de mudança da topologia complete em vários passos com a serialização necessária para cada passo, sem introduzir pontos de vista inconsistentes da topologia na partição lógica.
Atribuição de topologia Não é importante para esta descrição como é escolhida a topologia lógica. Basta dizer que uma determinação deve ser feita de quantos de cada tipo de processadores lógicos são necessários e que nós ou os livros eles precisam que lhes sejam atribuídos. Para uma partição de modo vertical, isto significa a contagem dos processadores verticais altos, verticais médios, e verticais baixos para cada tipo de processador.
Atribuir valores de polarização para CPs lógicos
Assim que as contagens acima estiverem determinadas, as atribuições de polarização são feitas do endereço de CP lógico mais baixo online do tipo CP para o mais alto na sequência de (1) todos os altos verticais, (2) todos os médios verticais, e (3) todos os baixos verticais. A sequência na qual isto é feito é arbitrária, sendo possíveis outras sequências de selecção.
Mapeamentos da instrução "STORE SYSTEM INFORMATION" ΡΕ2223203
Adicione 3 estruturas para mapear a resposta 15.1.2: 1. Mapeamento para STSI 15.1.2, mapeando o bloco de resposta a topologia
Del 1 syibkl512 char{4096) baseado(*), 3 * char(2), 3 syibkl512_length fixed (16) r comprimento 3 syibkl512_mag6. fixed(8), 6o nivel encaixe 3 syibkl512_mag5 fixed(8), 5o 3 syibkl 512_Mag4 fixed(8), 4° 3 syibkl 512_Mag3 fixed(8), 3o 3 syibkl 512_Mag2 fixed(8), 2o, nós 3 syibkl512_magl fixed(8), 1°, CPUs 3 * char(1), 3 syíbkl512_MNest fixed(8), nivel de encaixe syibkl512 char(4096 ) baseado(*), 3 * char(4), 3 syibkl512_topology_list char(0); lista de topologia 2 . Mapeamento para uma TLE do tipo recipiente para STSI 15.1.2 89 ΡΕ2223203 char(8) fixed{8), nível de char(3), char(1), char(2), fixed(Q); id do nó
Del 1 syibk_vcm_container baseado(*), 3 syibknl encaixe 3 * 3 * 3 * 3 syibk_container_id 3. Mapeamento para uma TLE do tipo CPU para STSI 15.1.2
Del 1 syibk_vcm_CPU char {16) baseado(*), 3 syibknl2 fixed{8), nível de encaixe char(3), bit (8) , bit(5), bit (1) , bit (2) , fixed(8), fixed (16) byte vem bit bits de tipo de origem 3 * 3 syibk_ded_polari zation 5 * 5 syibk_dedicated dedicado 5 syibk_polari zat ion polarização 3 syibk_CPUtype
CPU 3 syibk_CPUaddrorg do endereço 3 syibk_CPUmask bit (64);CPt7 mask entry 90 ΡΕ2223203 ΤΟΡΒΚ - Topologia da partição
Um resumo da topologia de uma partição lógica é mantido actualizado nesse bloco pelas rotinas de atribuição nodais. Os dados neste bloco encontram-se ordenados de tal modo que o processamento STSI pode fazer uma passagem de toda a estrutura para criar a resposta da topologia da partição lógica para o programa, preservando a sequência e separação de entradas de CPU como exigido pela arquitectura.
Consiste numa matriz tridimensional (nó, tipo de CP, classificação da polarização), com uma máscara de CPU de 64-bit por entrada.
Uma segunda área de trabalho, TOP_WORKING, encontra-se incluída para utilização na actualização da topologia.
DECLARE 1 TOPBK BASED BDY (DWORD) , 3 TOP_CURRENT, 5 TOPCPUMASK(1:MAXNODE, /* Each of 1-4 nodes
V 0: CPUTMAX, /* CP type índex
V 0:3) /* 4 possible topology classifications when the logical partition is vertical.
There are only 2 classifications when 91 ΡΕ2223203 the partition is horizontal.
V BIT(64), /* Mask of the logical CPUs that fali into this classification.
V 3 TOP_WORKING CHAR (LENGTH (TOP_CURRENT) ) ; /* Work area for building new topology
V T03P0 - Tradução da topologia da partição
Estas tabelas "constantes" de tradução são usadas pelas rotinas de atribuição nodais que formam a topologia (mapeada por TOPBK) e processamento STSI que lê a topologia. /****************************/ /* STSI translation arrays: */ ^****************************^
DECLARE 1 TOPVERT(0:3) BIT (8) /* For vertical partitions, translates the classification index above to the architected D (dedication) and PP (polarization) values to be returned for this group of CPs in the STSI data */ STATIC INIT('0 0 0 0 0'bL'1'bLPPVH, /* Classification 0:
Dedicated Vertical high */ 92 ΡΕ2223203 '00000'bL'Ο'bLPPVH, /* Classification 1: Shared Vertical high */
'00000'bL'0'bLPPVM, /* Classification 2: Shared Vertical Médium V '00000'bL'0'bLPPVL) , /* Classification 3:
Shared Vertical Low */ 3 * BIT(5), /* Unused, need byte alignment for bit arrays*/ 3 TOPDPP BIT(3), /* Actual D, PP values to use */ 1 TOPHOR(0:1) BIT (8) /* For horizontal partitions, translates the classification índex above to the architected D (dedication) and PP (polarizatíon) values to be returned for this group of CPs in the STSI data. Note only the first two classifications can be used for a horizontal partition.
V STATIC INIT (' 00000' bL' 1' bLPPH, /* Classification 0: Dedícated Horizontal */ '00000'bL'0'bLPPH), /* Classification 1: Shared Horizontal */ 3 * BIT (5) , /* Unused, need byte alignment for bit arrays*/ 3 TOPDPP BIT(3), /* Actual D, PP values to use */ /************************* / /* NDI translation array */ /*************************/ 1 T0PDPP2CLASS (0:7) FIXED /* Used by the nodal assignment 93 ΡΕ2223203
routines to create the topology Information. LPDPP is used as an index into this array to determine which classification index the logical CP should use. This one array is used for both horizontal and vertical partitions V STATIC INIT(1, /* Shared, horizontal */ 3, /* Shared, vertical low */ 2, /* Shared, vertical médium */ 1, /* Shared, vertical high */ 0, /* Dedicated, horizontal */ 0, /* Not applicable */ 0, /* Not applicable */ 0) , /* Dedicated, vertical high */ 3 * CHAR(4); /* Force to be non-simple item */
Bloco de processador lógico:
Uma codificação de 2 bits da polarização da partição pode ser seguida para cada processador lógico para reflectir a sua polarização. Agrupar isto com uma indicação de 1-bit de dedicação permite uma imagem de polaridade completa para um processador lógico em 3 bits: 3 LPDPP BIT (3), /* Polarization, including dedication */ 4 LPDED BIT(l), /* =1, logical CP is dedicated */ 4 LPPP BIT(2), /* Processor Polarization */ /* Encodings for Processor Polarization */ 94 ΡΕ2223203 PPH BIT (2) CONSTANT (' 00'Β) , /* Horizontally polarized */ PPVL BIT (2) CONSTANT ('01'Β) , /* Vertically polarized - Low */ PPVM BIT (2) CONSTANT ('10'B) , /* Vertically polarized - Médium */ PPVH BIT (2) CONSTANT ('11'B) , /* Vertically polarized - High */
Update Topology Block
Clear Local copy of CPU topology mask DO for every logical CP in the target logical-partition
IF the logical CP is Online THEN DO
Polarity index = Polarity índex appropriate for the logical CPs polarization value according to the translate polarization value to polarity index array
Local copy of CPU topology mask (CPU_address, node,cptype, Polarity index) = ON END END IF new topology block NOT= current topology block 95 ΡΕ2223203
for partition THEN
Set topology change report bit and copy the new topology to the current.
Simulação de instrução para STSI 15.1.2
Dentro dos mapeamentos syibk para o bloco de resposta STSI 15.1.2, foram adicionadas uma TLE do tipo recipiente, e uma TLE do tipo CPU. Essencialmente, os dados devem ser devolvidos no(s) recipiente(s) com a entrada no nivel mais baixo sendo uma TLE do tipo CPU. Pode-se pensar nisto como uma matriz de matrizes com base em como os recursos da partição lógica forma subdivididos ou alocados. Para a forma de realização preferida, cada recipiente é essencialmente um nó com um nivel de encaixe de 1 e inclui TLE {s) do tipo CPU que cada tem um nível de encaixe de 0. As TLEs do CPU são ordenadas por tipo de CPU seguido da sua classificação. As partições verticais têm quatro classificações (dedicada vertical, partilhada alta vertical, partilhada médio vertical, e partilhada baixa vertical), sendo que as partições horizontais têm duas classificações (dedicada e partilhada).
Os passos seguintes ilustram um caso de uso de como uma STSI 15.1.2 é tratada após todas as verificações iniciais terem validado a entrada de instrução.
Para a forma de realização actual é assumido um 96 ΡΕ2223203 máximo de 4 nós e 64 processadores.
Iniciar verificação de topbk, e numa variável local denominada current_node_value manter o valor do índice do nó onde estamos actualmente ligados. A razão porque nós precisamos isto é porque se todas as máscaras de 64 bits dentro de um nó forem zero, não precisamos criar uma TLE do tipo recipiente para esse nó.
Uma vez que a primeira entrada não-zero se encontra dentro de um nó, criar primeiro uma entrada TLE do tipo recipiente para esse nó. Dentro da entrada TLE do recipiente, o valor do encaixe é 1, seguido por 48 bits reservados. Os últimos bits são o identificador do nó que é o índice em topbk do nó actual que estamos a processar. Depois de criar a TLE do tipo recipiente, criar uma TLE do tipo CPU para a entrada com uma máscara de bits diferente de zero. Dentro desta entrada, o nível de encaixe é 0, seguido de 24 bits reservados. Os próximos 8 bits incluem o bit dedicado e o bit de polarização. Se a partição for actualmente vertical, preencher o valor de polarização e bit dedicado tal como se segue:
Classificação 0 em topbk é dedicada vertical, armazenar um 11 na PP e 1 em D
Classificação 1 em topbk é partilhada vertical alta, armazenar um 11 na PP e 0 em D
Classificação 2 em topbk é partilhado vertical média, armazenar 10 na PP e 0 em D
Classificação 3 em topbk é partilhada vertical baixa, 97 ΡΕ2223203
armazenar um 01 na PP e 0 em D
Para partições horizontais, apenas as classificações 0 e 1 são actualmente válidas. Preencher o valor do bit e polarização dedicado como se segue:
Classificação 0 em topbk é horizontal dedicada, armazenar um 00 na PP e 1 em D
Classificação 1 em topbk é partilhada horizontal, armazenar um 00 na PP e 0 em D O tipo de CPU, o próximo valor a ser preenchido no na TLE do CPU é apenas o índice da segunda matriz dentro de topCPUmask em topbk. (0 - GP, 2 - IFA, 3 - IFL, 4 - ICF, 1 não é actualmente utilizado). 1. 0 próximo valor é a origem do endereço do CPU. Este valor é armazenado explicitamente como 0 dado que 64 é o número máximo de CPUs disponíveis na forma de realização actual. 2. 0 último valor em syibk_vcm_CPU é a máscara de CPU, a máscara de 64 bits diferente de zero armazenada na matriz encaixada de aninhada de matrizes topCPUmask. 3. Para cada máscara diferente de zero após a primeira máscara de bit diferente de zero dentro de um nó, criar uma entrada separada TLE do tipo CPU e repetir este processo para todos os 4 nós. 98 ΡΕ2223203
Numa forma de realização, a instrução PTF pode solicitar alterações especificas à topologia que não sejam uma mudança de polarização, sendo que tais mudanças incluem (mas não estão limitadas a) , solicitar mais processadores hóspedes a serem adicionados à configuração hóspede, solicitar menos processadores hóspedes na configuração hóspede, solicitar um ou mais processadores dedicados a ser adicionados ou removidos da configuração hóspede, solicitar polarização especifica de processadores hóspedes específicos, solicitar que co-processadores sejam adicionados ou removidos a partir da configuração hóspede, solicitar uma alteração temporária da topologia, solicitar uma mudança da topologia por um período de tempo predeterminado e semelhantes.
Além disso, a invenção não se encontra limitada à topologia de processadores. Pode ser apreciado que o componente básico da invenção pode ser vantajosamente aplicado a outros componentes que não sejam os CPUs, incluindo, mas não se limitado a co-processadores, memórias cache, TLBs, caminhos de dados internos, memórias tampão de percurso de dados, memória distribuída e adaptadores comunicações E/S, por exemplo.
Lisboa, 19 de Março de 2012

Claims (10)

  1. ΡΕ2223203 REIVINDICAÇÕES 1. Processo para uma mudança de configuração de uma topologia de vários processadores hóspedes (CPUs hóspedes) de uma configuração de hóspede num sistema informático hospedeiro dividido logicamente gue compreende processadores hospedeiros {CPU1s hospedeiros), sendo o processo caracterizado por, um processador hóspede da configuração hóspede ir buscar (2001) uma instrução PERFORM TOPOLOGY FUNCTION (executar função de topologia) definida para uma arquitectura de computador, compreendendo a instrução PERFORM TOPOLOGY FUNCTION um campo de código de operação que especifica a instrução PERFORM TOPOLOGY FUNCTION e um campo de registo que especifica um registo geral, executar a instrução PERFORM TOPOLOGY FUNCTION, compreendendo a execução: obter um campo FC de controlo de função do registo geral especificado; reagir ao FC tendo um primeiro valor ou um segundo valor que especifica um pedido para uma mudança de polarização, isto é, um pedido para mudar entre atribuir uniformemente e não uniformemente recursos de processamento físicos para os processadores hóspede, solicitando a alteração de polarização especificada da configuração da topologia dos processadores hóspedes da configuração hóspede; reagir à mudança de polarização requerida ΡΕ2223203 especificada, alterando a topologia dos processadores hóspedes da configuração de hóspede de acordo com a alteração de polarização especificada; reagir ao facto de a mudança de topologia solicitada estar em progresso, configurando (2005) um primeiro valor de código de condição que indica uma mudança de topologia iniciada; reagir ao facto da mudança de topologia solicitada ser rejeitada, configurando (2007) um segundo valor de código de condição que indica que a mudança de topologia solicitada é rejeitada; reagir ao facto da mudança de topologia solicitada ser rejeitada, configurando um valor RC de código de razão no registo geral; reagir ao facto do FC ter um terceiro valor que especifica um pedido de verificação do estado de alteração da topologia, definindo um valor de código de condição que indica se o relatório de mudança de topologia está pendente, e completar a execução da instrução.
  2. 2. Processo de acordo com a reivindicação 1, em que a execução da instrução PERFORM TOPOLOGY FUNCTION compreende adicionalmente: reagir ao primeiro valor do FC especificando uma polarização horizontal, iniciando a polarização horizontal dos processadores hóspedes da configuração do computador, produzindo assim uma topologia actualizada resultante; 3 ΡΕ2223203 reagir ao segundo valor do FC especificando uma polarização vertical, iniciando a polarização vertical dos processadores hóspedes da configuração do computador, produzindo assim uma topologia actualizada resultante.
  3. 3. Processo de acordo com a reivindicação 2, em que o pedido de polarização iniciada é assíncrono para a conclusão da execução, em que o processo compreende adicionalmente, reagir ao campo FC que tem o terceiro valor especificando uma verificação de uma mudança de topologia, verificando o estado de conclusão da mudança da topologia.
  4. 4. Processo de acordo com a reivindicação 3, em que a execução compreende adicionalmente: reagir ao relatório que nenhuma alteração da topologia se encontra pendente, estabelecendo um código de condição indicando que um relatório de alteração de topologia não se encontra pendente em que o processo de mudança de topologia se encontra completo; e reagir ao relatório de alteração da topologia se encontra pendente, estabelecendo um código de condição indicando que um relatório de alteração de topologia se encontra pendente em que o processo de mudança de topologia não foi completado.
  5. 5. Processo de acordo com a reivindicação 2, em que a polarização horizontal compreende proporcionar recursos do processador hospedeiro substancialmente iguais 4 ΡΕ2223203 para cada recurso de processador hóspede, em que a polarização vertical compreende proporcionar substancialmente mais recursos de processador hospedeiro a pelo menos um processador hóspede dos referidos processadores hóspedes do que a pelo menos um outro processador hóspede dos referidos processadores hóspedes.
  6. 6. Processo de acordo com a reivindicação 2, em que o valor RC especifica um código de razão que consiste em: reagir ao facto de a configuração a ser polarizada tal como especificado pelo código de função antes da execução, indicando o valor RC que a configuração já está polarizada de acordo com o código de função; e reagir à configuração que processa uma polarização incompleta antes da execução, o valor RC que já se encontra em processo uma alteração da topologia.
  7. 7. Processo de acordo com a reivindicação 2, em que a instrução PERFORM TOPOLOGY FUNCTION definida para a arquitectura do computador é obtida e executada por uma unidade de processamento central de uma arquitectura de computador alternativa, em que o processo compreende ainda a interpretação da instrução PERFORM TOPOLOGY FUNCTION para identificar uma rotina de software predeterminada para emular a operação da instrução PERFORM TOPOLOGY FUNCTION; e em que a execução da instrução PERFORM TOPOLOGY FUNCTION compreende executar a rotina de software predeterminada 5 ΡΕ2223203 para executar os passos do processo para executar a instrução PERFORM TOPOLOGY FUNCTION.
  8. 8. Processo de acordo com a reivindicação 2, em que a referido polarização vertical compreende ainda proporcionar aos referidos processadores hóspedes da configuração do computador um nivel de autorização, sendo o nivel de autorização qualquer um de alta, média e baixa, em que o elevado nivel de autorização compreende atribuir a totalidade de um processador hospedeiro a um processador hóspede correspondente da configuração hóspede; em que o nível médio de autorização compreende a atribuição de menos do que a totalidade de um processador hospedeiro ao referido processador hóspede correspondente da configuração hóspede, em que um ou mais processadores hospedeiros são atribuídos aos referidos processadores hóspede da configuração hóspede e em que o baixo nível de autorização compreende a atribuição de nenhuma parte de qualquer processador hospedeiro ao referido processador hóspede correspondente da configuração hóspede.
  9. 9. Sistema que compreende meios adaptados para a realização de todos os passos do processo de acordo com quaisquer das reivindicações do processo.
  10. 10. Programa de computador que compreende instruções para a realização de todos os passos do processo de acordo com qualquer reivindicação do processo anterior, 6 ΡΕ2223203 quando o referido programa de computador é executado num sistema informático. Lisboa, 19 de Março de 2012
PT09700680T 2008-01-11 2009-01-12 Realização de uma mudança de topologia virtual de configuração PT2223203E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/972,766 US7739434B2 (en) 2008-01-11 2008-01-11 Performing a configuration virtual topology change and instruction therefore

Publications (1)

Publication Number Publication Date
PT2223203E true PT2223203E (pt) 2012-03-29

Family

ID=40419037

Family Applications (1)

Application Number Title Priority Date Filing Date
PT09700680T PT2223203E (pt) 2008-01-11 2009-01-12 Realização de uma mudança de topologia virtual de configuração

Country Status (13)

Country Link
US (8) US7739434B2 (pt)
EP (1) EP2223203B1 (pt)
JP (1) JP5179597B2 (pt)
KR (1) KR101221252B1 (pt)
CN (1) CN101911012B (pt)
AT (1) ATE546774T1 (pt)
CY (1) CY1112504T1 (pt)
DK (1) DK2223203T3 (pt)
ES (1) ES2379575T3 (pt)
PL (1) PL2223203T3 (pt)
PT (1) PT2223203E (pt)
SI (1) SI2223203T1 (pt)
WO (1) WO2009087233A1 (pt)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US7739434B2 (en) 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US8527988B1 (en) * 2009-07-31 2013-09-03 Hewlett-Packard Development Company, L.P. Proximity mapping of virtual-machine threads to processors
US8464030B2 (en) * 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8271710B2 (en) * 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
EP2609511B1 (en) * 2010-08-26 2016-10-19 Freescale Semiconductor, Inc. Memory management unit for a microprocessor system, microprocessor system and method for managing memory
WO2012029149A1 (ja) * 2010-09-01 2012-03-08 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9639815B2 (en) 2011-07-14 2017-05-02 International Business Machines Corporation Managing processes in an enterprise intelligence (‘EI’) assembly of an EI framework
US8566345B2 (en) 2011-07-14 2013-10-22 International Business Machines Corporation Enterprise intelligence (‘EI’) reporting in an EI framework
US9659266B2 (en) 2011-07-14 2017-05-23 International Business Machines Corporation Enterprise intelligence (‘EI’) management in an EI framework
US9646278B2 (en) 2011-07-14 2017-05-09 International Business Machines Corporation Decomposing a process model in an enterprise intelligence (‘EI’) framework
US8881100B2 (en) * 2011-09-07 2014-11-04 International Business Machines Corporation Automated generation of bridging code to augment a legacy application using an object-oriented language
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US8918885B2 (en) * 2012-02-09 2014-12-23 International Business Machines Corporation Automatic discovery of system integrity exposures in system code
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9588762B2 (en) 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9454366B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9454367B2 (en) 2012-03-15 2016-09-27 International Business Machines Corporation Finding the length of a set of character data having a termination character
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9208193B1 (en) 2013-03-15 2015-12-08 Ca, Inc. Problem management software
US9116597B1 (en) 2013-03-15 2015-08-25 Ca, Inc. Information management software
US9256344B1 (en) 2013-03-15 2016-02-09 Ca, Inc. Software management software
CN103530191B (zh) * 2013-10-18 2017-09-12 杭州华为数字技术有限公司 热点识别处理方法及装置
EP2899652B1 (de) * 2014-01-22 2024-03-13 dSPACE GmbH Verfahren zur Einsatzoptimierung programmierbarer Logikbausteine in Steuerungsgeräten für Fahrzeuge
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9218185B2 (en) * 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9223574B2 (en) 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9195493B2 (en) 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
US9772867B2 (en) 2014-03-27 2017-09-26 International Business Machines Corporation Control area for managing multiple threads in a computer
US20160055078A1 (en) * 2014-08-22 2016-02-25 Vmware, Inc. Decreasing user management of an appliance
CN104539684B (zh) * 2014-12-23 2018-07-06 广州亦云信息技术有限公司 一种用户机器资源抽取整合方法及系统
US10853104B2 (en) * 2015-02-27 2020-12-01 Plasma Business Intelligence, Inc. Virtual environment for simulating a real-world environment with a large number of virtual and real connected devices
US9465664B1 (en) * 2015-09-09 2016-10-11 Honeywell International Inc. Systems and methods for allocation of environmentally regulated slack
FR3041788B1 (fr) 2015-09-30 2018-02-02 Zcost Management Procede de controle de la capacite d'utilisation d'un systeme partitionne de traitement de donnees.
US10680852B2 (en) * 2016-07-14 2020-06-09 Hewlett Packard Enterprise Development Lp Configuration of a managed device
US10693732B2 (en) 2016-08-03 2020-06-23 Oracle International Corporation Transforming data based on a virtual topology
US10389628B2 (en) 2016-09-02 2019-08-20 Oracle International Corporation Exposing a subset of hosts on an overlay network to components external to the overlay network without exposing another subset of hosts on the overlay network
US10558478B2 (en) 2016-12-15 2020-02-11 Nutanix, Inc. Specification-based computing system configuration
US10291507B2 (en) 2017-02-13 2019-05-14 Oracle International Corporation Implementing a virtual tap in a virtual topology
US10462013B2 (en) * 2017-02-13 2019-10-29 Oracle International Corporation Implementing a single-addressable virtual topology element in a virtual topology
CN107301034A (zh) * 2017-08-09 2017-10-27 葛松芬 一种并行处理器阵列结构
DE102018131613A1 (de) * 2018-04-10 2019-10-10 Infineon Technologies Ag Fehlererkennung mittels Gruppenfehler
US11256531B2 (en) * 2019-06-20 2022-02-22 International Business Machines Corporation Isolating physical processors during optimization of VM placement
CN113867791B (zh) * 2020-06-30 2023-09-26 上海寒武纪信息科技有限公司 一种计算装置、芯片、板卡、电子设备和计算方法
US11782872B2 (en) 2022-03-07 2023-10-10 International Business Machines Corporation Distribution of over-configured logical processors

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US585994A (en) * 1897-07-06 Administrator of alexander
US3825895A (en) 1973-05-14 1974-07-23 Amdahl Corp Operand comparator
US3982229A (en) 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
US4713750A (en) 1983-03-31 1987-12-15 Fairchild Camera & Instrument Corporation Microprocessor with compact mapped programmable logic array
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4578750A (en) 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US5113523A (en) 1985-05-06 1992-05-12 Ncube Corporation High performance computer system
JPS6382513A (ja) 1986-09-26 1988-04-13 Toshiba Corp バレルシフタ
US5859994A (en) 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US6067613A (en) 1993-11-30 2000-05-23 Texas Instruments Incorporated Rotation register for orthogonal data transformation
US5551013A (en) * 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5748950A (en) 1994-09-20 1998-05-05 Intel Corporation Method and apparatus for providing an optimized compare-and-branch instruction
US5632028A (en) 1995-03-03 1997-05-20 Hal Computer Systems, Inc. Hardware support for fast software emulation of unimplemented instructions
EP0730220A3 (en) 1995-03-03 1997-01-08 Hal Computer Systems Inc Method and device for quickly executing branch instructions
US5732242A (en) 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5790825A (en) * 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
JP3790607B2 (ja) 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6223256B1 (en) 1997-07-22 2001-04-24 Hewlett-Packard Company Computer cache memory with classes and dynamic selection of replacement algorithms
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6009261A (en) * 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
IL147348A0 (en) 1999-06-30 2002-08-14 Mochida Pharm Co Ltd Tricyclic compounds having spiro union
ATE283512T1 (de) * 1999-09-28 2004-12-15 Ibm Arbeitsbelastungsverwaltung in einer rechnerumgebung
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6763327B1 (en) 2000-02-17 2004-07-13 Tensilica, Inc. Abstraction of configurable processor functionality for operating systems portability
US6738895B1 (en) 2000-08-31 2004-05-18 Micron Technology, Inc. Method and system for substantially registerless processing
US7165101B2 (en) 2001-12-03 2007-01-16 Sun Microsystems, Inc. Transparent optimization of network traffic in distributed systems
US7493480B2 (en) 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
US7140021B2 (en) * 2002-09-13 2006-11-21 Microsoft Corporation Dynamic TCP partitioning
US7337442B2 (en) 2002-12-03 2008-02-26 Microsoft Corporation Methods and systems for cooperative scheduling of hardware resource elements
WO2005022385A1 (en) * 2003-08-28 2005-03-10 Mips Technologies, Inc. Mechanisms for dynamic configuration of virtual processor resources
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8335810B2 (en) 2006-01-31 2012-12-18 Qualcomm Incorporated Register-based shifts for a unidirectional rotator
US7693811B2 (en) 2006-02-28 2010-04-06 International Business Machines Corporation Generating unique identifiers for logical partitions
US8352950B2 (en) * 2008-01-11 2013-01-08 International Business Machines Corporation Algorithm to share physical processors to maximize processor cache usage and topologies
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
WO2010023974A1 (ja) * 2008-08-27 2010-03-04 独立行政法人農業生物資源研究所 広範な病害抵抗性を付与するイネ遺伝子

Also Published As

Publication number Publication date
WO2009087233A1 (en) 2009-07-16
ATE546774T1 (de) 2012-03-15
JP5179597B2 (ja) 2013-04-10
US10055261B2 (en) 2018-08-21
US20180107495A9 (en) 2018-04-19
CY1112504T1 (el) 2015-12-09
DK2223203T3 (da) 2012-04-02
US20130024659A1 (en) 2013-01-24
US8819320B2 (en) 2014-08-26
US20170308392A1 (en) 2017-10-26
US20190317828A1 (en) 2019-10-17
US10061623B2 (en) 2018-08-28
JP2011509478A (ja) 2011-03-24
US20090182915A1 (en) 2009-07-16
US20140337602A1 (en) 2014-11-13
CN101911012A (zh) 2010-12-08
CN101911012B (zh) 2013-07-24
PL2223203T3 (pl) 2012-07-31
SI2223203T1 (sl) 2012-05-31
US10621007B2 (en) 2020-04-14
US20100095033A1 (en) 2010-04-15
US7739434B2 (en) 2010-06-15
WO2009087233A9 (en) 2009-09-24
ES2379575T3 (es) 2012-04-27
US10372505B2 (en) 2019-08-06
KR20100106449A (ko) 2010-10-01
US8301815B2 (en) 2012-10-30
US20190004867A1 (en) 2019-01-03
US20110283280A1 (en) 2011-11-17
EP2223203B1 (en) 2012-02-22
EP2223203A1 (en) 2010-09-01
US8015335B2 (en) 2011-09-06
KR101221252B1 (ko) 2013-01-14

Similar Documents

Publication Publication Date Title
US10621007B2 (en) Execution of an instruction for performing a configuration virtual topology change
US9137120B2 (en) Emulating execution of an instruction for discovering virtual topology of a logical partitioned computer system
EP1508855A2 (en) Method and apparatus for providing virtual computing services
Ke Interprocess communication mechanisms with Inter-Virtual machine shared memory
US20230036017A1 (en) Last-level cache topology for virtual machines