PT2290539E - Identificação de topologia virtual de configuração de computador - Google Patents
Identificação de topologia virtual de configuração de computador Download PDFInfo
- Publication number
- PT2290539E PT2290539E PT10184363T PT10184363T PT2290539E PT 2290539 E PT2290539 E PT 2290539E PT 10184363 T PT10184363 T PT 10184363T PT 10184363 T PT10184363 T PT 10184363T PT 2290539 E PT2290539 E PT 2290539E
- Authority
- PT
- Portugal
- Prior art keywords
- cpu
- tle
- cpus
- information
- topology
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45566—Nested virtual machines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Mobile Radio Communication Systems (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
DESCRIÇÃO
"IDENTIFICAÇÃO DE TOPOLOGIA VIRTUAL DE CONFIGURAÇÃO DE COMPUTADOR"
CAMPO DA INVENÇÃO A presente invenção refere-se, em geral, à virtualização de sistemas multi-processador. Em especial, a presente invenção refere-se a permitir que programas identifiquem a topologia do seu ambiente virtual.
ANTECEDENTES
Entre as funções de controlo de sistema encontra-se a capacidade para repartir o sistema em várias partições lógicas (LPAR). Uma LPAR é um subconjunto do hardware de processador que é definido para suportar um sistema operativo. Uma LPAR contém recursos (processadores, memória e dispositivos de entrada/saída) e funciona como um sistema independente. Podem existir múltiplas partições lógicas dentro de um sistema de hardware de uma unidade de processamento.
Nos sistemas informáticos de unidade de processamento da IBM incluindo o S/390®, existiu, durante muitos anos, um limite de 15 LPAR. As máquinas mais recentes têm 30 (e potencialmente mais). Tais máquinas são exemplificadas pelas que possuem uma z/Architecture®. A z/Architecture® da IBM® é descrita no 1 documento "z/Architecture Principies of Operation SA22-7832-05" publicado em Abril de 2007, pela IBM.
Limitações práticas do tamanho de memória, disponibilidade de I/O e energia de processamento disponível limitam, normalmente, o número de LAPR a um número inferior a estes máximos. O hardware e firmware que proporcionam a partição são conhecidos como PR/SM™ (Recursos de Processador/Gestor de Sistema) . São as funções PR/SM que são utilizadas para criar e executar as LPAR. Esta diferença entre PR/SM (um recurso incorporado) e LPAR (o resultado da utilização das PR/SM) é muitas vezes ignorado e o termo LPAR é utilizado colectivamente para o recurso e os seus resultados.
Os administradores de sistemas atribuem partes de memória a cada LPAR e a memória não pode ser partilhada entre as várias LPAR. Os administradores podem atribuir processadores (também conhecidos como CP ou CPU) para especificar as LPAR ou podem permitir que os controladores de sistema enviem qualquer um ou todos os processadores para todas as LPAR utilizando um algoritmo de equilíbrio de carga interno. Podem ser atribuídos canais (CHPID) a LPAR específicas ou podem ser partilhados por múltiplas LPAR dependendo da natureza dos dispositivos em cada canal.
Um sistema com um único processador (processador CP) pode ter múltiplas LPAR. As PR/SM têm um repartidor interno que pode alocar uma parte do processador a cada LPAR, tal como um repartidor de sistema operativo aloca uma parte do tempo do seu processador a cada processo, fluxo de execução ou tarefa. 2
As especificações de controlo de partição estão parcialmente contidas nos IOCDS e estão parcialmente contidas num perfil de sistema. Os IOCDS e os perfis residem, ambos, no Elemento de Suporte (SE) que é, simplesmente, um computador portátil dentro do sistema. 0 SE pode ser ligado a uma ou mais Consolas de Gestão de Hardware (HMC), que são computadores pessoais de secretária utilizados para monitorizar e controlar hardware, tal como os microprocessadores de unidade de processamento. E mais conveniente utilizar uma HMC do que um SE e esta pode controlar várias unidades de processamento diferentes.
Ao trabalhar a partir de uma HMC (ou a partir de um SE, em circunstâncias invulgares), um operador prepara uma unidade de processamento para utilização seleccionando e carregando um perfil e um IOCDS. Isto cria várias LPAR e configura os canais com números de dispositivo, atribuições de LPAR, informação de caminhos múltiplos e assim por diante. Isto é conhecido como uma Reinicialização no Arranque (POR). Ao carregar um perfil e IOCDS diferentes, o operador pode mudar completamente o número e a natureza das LPAR e o aspecto da configuração de 1/0. No entanto, esta acção é, normalmente, prejudicial para quaisquer sistemas operativos e aplicações em execução e é, por conseguinte, raramente efectuado sem um planeamento antecipado.
As partições lógicas (LPAR) são, na prática, equivalentes a unidades de processamento distintas.
Cada LPAR executa o seu próprio sistema operativo. Este pode ser um qualquer sistema operativo de unidade de processamento; não há necessidade de executar z/OS®, por exemplo, em cada LPAR. Os programadores da instalação podem escolher partilhar 3 dispositivos 1/0 através de várias LPAR, mas esta é uma decisão local. 0 administrador de sistema pode atribuir um ou mais processadores de sistema para a utilização exclusiva de uma LPAR. Em alternativa, o administrador pode permitir que todos os processadores sejam utilizados em algumas ou todas as LPAR. Neste caso, as funções de controlo de sistema (muitas vezes conhecidas como microcódigo ou firmware) proporcionam um repartidor para partilhar os processadores entre as LPAR seleccionadas. 0 administrador pode especificar um número máximo de processadores simultâneos em execução em cada LPAR. 0 administrador também pode proporcionar ponderações a LPAR diferentes; especificando, por exemplo, que a LPAR1 deverá receber o dobro de tempo de processador da LPAR2. 0 sistema operativo em cada LPAR é carregado 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 deixar de funcionar, isso não tem nenhum efeito nas outras LPAR.
Num sistema de unidade de processamento com três LPAR, por exemplo, pode-se ter uma produção z/OS em LPAR1, uma versão de teste de z/OS em LPAR2 e Linux® para S/390® em LPAR3. Se este sistema total tiver 8 GB de memória, pode-se atribuir 4GB à LPAR1, 1GB à LPAR2, 1GB à LPAR3 e manter 2GB em reserva. As consolas do sistema operativo para as duas LPAR z/OS podem estar em locais completamente diferentes.
Em termos práticos, não existe diferença entre, por exemplo, três unidades de processamento distintas executando z/OS 4 (e partilhando a maior parte da sua configuração 1/0) e três LPAR na mesma unidade de processamento fazendo a mesma coisa. Com poucas excepções as z/OS, os operadores e as aplicações não conseguem detectar a diferença.
As poucas diferenças incluem a capacidade da z/OS (se permitido quando se definirem as LPAR) obter informação de desempenho e utilização através do sistema de unidade de processamento completo e desviar dinamicamente recursos (processadores e canais) entre várias LPAR para melhorar o desempenho.
As actuais unidades de processamento da IBM® têm um complexo de processadores centrais (CPC), que pode conter vários tipos diferentes de processadores de z/Architecture® que podem ser utilizados para objectivos ligeiramente diferentes. Vários destes objectivos estão relacionados com o controlo do custo de software, enquanto outros são mais fundamentais. Todos os processadores no CPC começam como unidades de processador (PU) equivalentes ou motores que não têm sido caracterizados para utilização. Cada processador é caracterizado pela IBM durante a instalação ou posteriormente. As caracterizações de potencial são: - Processador (CP)
Este tipo de processador está disponível para o sistema operativo normal e software de aplicação. 5 - Processador de Assistência de Sistema (SAP)
Cada unidade de processamento moderna tem, pelo menos, um SAP, sistemas maiores podem ter vários. Os SAP executam um código interno para proporcionar o subsistema 1/0. Um SAP, por exemplo, traduz números de dispositivo e endereços reais de identificadores de percurso de canal (CHPID), endereços de unidade de controlo e números de dispositivos. Gere múltiplos percursos para unidades de controlo e realiza recuperação de erros para erros temporários. Os sistemas operativos e aplicações não podem detectar os SAP e os SAP não utilizam qualquer memória "normal".
- Recurso Integrado para Linux® (IFLJ
Este é um processador normal com uma ou duas instruções desactivadas que só são utilizadas por z/OS®. 0 Linux não utiliza estas instruções e pode ser executado por um IFL. 0 Linux também pode ser executado por um CP. A diferença é que um IFL não é contado quando se especifica o número de modelo do sistema. Isto pode fazer uma diferença substancial nos custos de software.
- zAAP
Este é um processador com várias funções desactivadas (tratamento de interrupções, algumas instruções) para que nenhum sistema operativo completo possa ser executado no processador. No entanto, a z/OS pode detectar a presença de processadores zAAP e utilizá-los para executar código Java™. 0 mesmo código Java pode ser executado num CP convencional. Os motores zAAP 6 também não são contados quando se especifica o número de modelo do sistema. Tal como os IFL, existem apenas para controlar custos de software.
- zIIP 0 Processador (zIIP) de Informação Integrada de Sistema z9™ é um motor especializado para processar cargas de trabalho de base de dados elegíveis. 0 zIIP é concebido para ajudar a diminuir custos de software para seleccionar cargas de trabalho na unidade de processamento, tal como informação empresarial (BI), planeamento de recursos empresariais (ERP) e gestão de relações com clientes (CRM). 0 zIIP reforça o papel da unidade de processamento como centro de dados da empresa ajudando a fazer com que o acesso directo a DB2® seja mais económico e a reduzir a necessidade de múltiplas cópias dos dados.
Recurso de Acoplamento Integrado (ICF)
Estes processadores executam apenas um Código Interno Licenciado. Não são visíveis pelos sistemas operativos ou aplicações normais. Um recurso de acoplamento é, com efeito, um bloco de rascunho de grande memória utilizado por múltiplos sistemas para coordenar trabalho. Os ICF devem ser atribuídos às LPAR que, depois, se tornam recursos de acoplamento. 7
Sobressalente
Uma PU não caracterizada funciona como um "sobressalente". Se os controladores de sistema detectarem uma deficiência no CP ou SAP, este pode ser substituído por uma PU sobressalente. Na maior parte dos casos, isto pode ser feito sem qualquer interrupção do sistema, mesmo para a aplicação em execução no processador com deficiência.
Além destas caracterizações de processadores, algumas unidades de processamento têm modelos ou versões que são configuradas para funcionar mais lentamente do que a velocidade potencial dos seus CP. Isto é, em grande medida, conhecido como "knee-capping", embora a IBM prefira o termo definição de capacidade ou algo semelhante. É feito utilizando um microcódigo para introduzir ciclos nulos no fluxo de instruções do processador. 0 objectivo, de novo, é controlar os custos de software trabalhando com o modelo ou versão mínima de unidade de processamento que satisfaça as necessidades de aplicação. Os IFL, SAP, zAAP, zIIP e ICF funcionam sempre com a velocidade máxima do processador porque estes processadores "não contam" para os cálculos de determinação de preço de software. 0 processador e a CPU podem referir-se à caixa de sistema completa ou a um dos processadores (CPU) dentro da caixa de sistema. Embora o significado possa ser claro a partir do contexto de uma discussão, mesmo profissionais de unidades de processamento devem clarificar qual o significado de processador ou CPU que estão a utilizar numa discussão. A IBM utiliza o termo complexo de processadores centrais (CPCJ para designar a colecção física de hardware que inclui armazenamento principal, um ou mais processadores centrais, temporizadores e canais. 8 (Alguns programadores de sistema utilizam o termo complexo de electrónica central (CEC) para designar a "caixa" da unidade de processamento, mas o termo preferido é CPC).
Resumidamente, todos os processadores S/390 ou z/Architecture dentro de um CPC são unidades de processamento (PU) . Quando a IBM entrega o CPC, as PU são caracterizadas como CP (para trabalho normal), Recurso Integrado para Linux (IFL), Recurso de Acoplamento Integrado (IFC) para configurações Parallel Sysplex e assim por diante.
Os profissionais de unidade de processamento utilizam, tipicamente, a expressão sistema para indicar a caixa de hardware, um ambiente de hardware completo (com dispositivos 1/0) ou um ambiente operativo (com software), dependendo do contexto. Utilizam, tipicamente, a expressão processador para designar um único processador (CP) dentro do CPC. 0 HYPERVISOR™ z/VM® é concebido para ajudar clientes a aumentar o valor de negócio da tecnologia de unidades de processamento por toda a empresa integrando aplicações e dados e oferecendo, ao mesmo tempo, niveis excepcionais de disponibilidade, segurança e facilidade operacional. A tecnologia de virtualização z/VM é concebida para permitir que a capacidade dos clientes execute centenas a milhares de servidores Linux numa única unidade de processamento executando outros sistemas operativos de Sistema z, tal como z/OS® ou como uma solução de servidor de empresa só executável em Linux em grande escala. A z/VM V5.3 pode, também, ajudar a melhorar a produtividade acomodando cargas de trabalho não utilizáveis em Linux, tais como z/OS, z/VSE e z/TPF. 9 A z/VM proporciona a cada utilizador um ambiente de trabalho individual conhecido como uma máquina virtual. A máquina virtual simula a existência de uma máquina real dedicada, incluindo funções de processador, memória, trabalho em rede e recursos de entrada/saida (1/0). Sistemas operativos e programas de aplicação podem ser executados em máquinas virtuais como hóspedes. Por exemplo, podem-se executar múltiplas imagens Linux e z/OS no mesmo sistema z/VM que também suporta várias aplicações e utilizadores finais. Consequentemente, os ambientes de desenvolvimento, testes e produção podem partilhar um único computador físico.
No que se refere às FIGs. 15A - 15D, a partição e virtualização implicam um desvio de pensamento de físico para lógico ao tratar recursos de IT como grupos lógicos e não como entidades físicas separadas. Isto envolve consolidar e agrupar recursos de IT e proporcionar uma "ilusão de sistema único" a servidores homogéneos e heterogéneos, armazenamento, sistemas distribuídos e redes. A partição de hardware envolve CPU distintos para sistemas operativos distintos, cada um dos quais executa as suas aplicações especificas. A partição de software emprega um "hypervisor" com base em software para permitir que sistemas operativos individuais sejam executados em qualquer ou em todos os CPU.
Os Hypervisores permitem que múltiplos sistemas operativos sejam executados num computador central ao mesmo tempo. A tecnologia de Hypervisor iniciou-se na IBM VM/370, o predecessor da z/VM que existe actualmente. A partição lógica (LPAR) envolve 10 firmware de partição (um hypervisor com base em hardware) para isolar o sistema operativo dos CPU. A virtualização possibilita ou explora quatro capacidades fundamentais: partilha de recursos, agregação de recursos, emulação de função e isolamento. Estes tópicos são explorados em mais detalhe nas secções seguintes. 0 z/VM é um sistema operativo para a plataforma Sistema z da IBM que proporciona um ambiente de teste e produção altamente flexível. A implementação z/VM de tecnologia de virtualização da IBM proporciona a capacidade para executar sistemas operativos de funcionalidade completa, tais como Linux no Sistema z, z/OS e outros como "hóspedes" de z/VM. 0 z/VM suporta hóspedes de z/Architecture da IBM de 64-bits e hóspedes de Arquitectura de Sistema Empresariais/390 da IBM de 31-bits. 0 z/VM proporciona a cada utilizador um ambiente de trabalho individual conhecido como uma máquina virtual. A máquina virtual simula a existência de uma máquina real dedicada, incluindo funções de processador, memória, trabalho em rede e recursos de entrada/saída (1/0). Sistemas operativos e programas de aplicações podem ser executados em máquinas virtuais como hóspedes. Por exemplo, podem executar-se múltiplas imagens Linux e z/OS® no mesmo sistema z/VM que também suporta várias aplicações e utilizadores finais. Consequentemente, os ambientes de desenvolvimento, testes e produção podem partilhar um único computador físico.
Uma máquina virtual utiliza recursos de hardware reais, mas mesmo com dispositivos dedicados (do mesmo modo que uma unidade de banda magnética) o endereço virtual da unidade de banda 11 magnética pode ou não ser igual ao endereço real da unidade de banda magnética. Por conseguinte, uma máquina virtual apenas conhece "hardware virtual", que pode ou não existir no mundo real.
Um z/VM de primeiro nível é o sistema operativo base que está instalado no topo do hardware real, FIG 16. Um sistema operativo de segundo nivel é um sistema que é criado na base do sistema operativo z/VM. Por conseguinte, o z/VM enquanto sistema operativo de base é executado no hardware, enquanto um sistema operativo hóspede é executado na tecnologia de virtualização. Na FIG. 14, ilustra-se um hóspede z/VM OS de segundo nivel carregado numa partição hóspede (hóspede-1) de primeiro nivel.
Por outras palavras, existe um sistema operativo z/VM de primeiro nivel que assenta directamente no hardware, mas os hóspedes deste sistema z/VM de primeiro nível são virtualizados. Ao virtualizar o hardware dos hóspedes, pode-se criar e utilizar tantos hóspedes quanto o necessário com uma pequena quantidade de hardware.
Como previamente mencionado, sistemas operativos executados em máquinas virtuais são, muitas vezes, chamados "hóspedes". Outros termos e frases que se podem encontrar são: "Executados no primeiro nivel" significa executados directamente no hardware (que é o que o z/VM faz). "Executados no segundo nível", "executados ao abrigo do VM", ou "executados no (topo de) VM" significa executados como um hóspede. 12
Um exemplo da funcionalidade de z/VM é, se houver um sistema z/VM de primeiro nível e um sistema z/VM de segundo nível, pode continuar-se a criar mais sistemas operativos no sistema de segundo nível. Este tipo de ambiente é especialmente útil para ensaiar a instalação do sistema operativo antes da sua implantação ou para ensaiar ou eliminar erros em 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 FIG. 14 ilustra a virtualização por emulação de recursos.
Exemplos incluem software de emulação de arquitectura que implementa uma arquitectura do processador utilizando outra; iSCSI, que implementa um barramento SCSI virtual numa rede IP; e armazenamento de banda virtual implementado no armazenamento de disco físico.
Além disso, o acondicionamento de unidades de processamento central (CPU) na tecnologia moderna é, muitas vezes, hierárquico. Podem colocar-se múltiplos núcleos num único chíp. Podem colocar-se múltiplos chips num único módulo. Podem acondicionar-se múltiplos módulos numa placa, muitas vezes designada por livro e podem distribuir-se múltiplos livros por múltiplas estruturas.
Os CPU têm, muitas vezes, vários níveis de caches, por exemplo, cada processador pode ter uma cache (ou possivelmente uma cache de Instruções dividida e uma cache de dados) e podem existir caches maiores adicionais entre cada processador e a interface de memória principal. Dependendo do nível da hierarquia, as caches também são ordenadas para melhorar o desempenho global e, em certos níveis, uma cache pode ser 13 partilhada entre mais do que um único CPU. As decisões técnicas referentes a esse tipo de colocação lidam com espaço, potência/térmica, distâncias de cabos, frequência de CPU, desempenho de sistema e outros aspectos. Esta colocação de elementos do CPU cria uma estrutura interna que pode ser mais ou menos favorável a uma partição lógica particular dependendo de onde reside a colocação de cada CPU da partição. Uma partição lógica faz com que pareça que um sistema operativo seja proprietário de certos recursos incluindo a utilização do processador, quando, na realidade, o sistema operativo está a partilhar os recursos com outros sistemas operativos noutras partições. Normalmente, o software não está ciente da colocação e, numa configuração de multiprocessamento simétrico (SMPJ, observa um conjunto de vários CPU, em que cada um proporciona o mesmo nivel de desempenho. 0 problema é que a ignorância do acondicionamento interno e da "distância" entre quaisquer dois CPU pode resultar no facto de o software fazer escolhas menos do que ideais no que se refere à atribuição de trabalho aos CPU.
Por conseguinte, não se obtém o potencial total da configuração de SMP. 0 exemplo de virtualização de unidade de processamento apresentado destina-se a mostrar várias topologias possíveis na virtualização de uma máquina. Como mencionado, os programas em execução numa partição (incluindo os sistemas operativos) têm, provavelmente, a sensação de que os recursos disponibilizados aos mesmos, incluindo os processadores, memória e 1/0, são dedicados à partição. De facto, os programas não têm qualquer ideia de estarem a ser executados numa partição. Esses programas também não estão cientes da topologia da sua partição e, por conseguinte, não podem fazer escolhas baseadas nessa topologia. 14 0 que é necessário é um modo de os programas se optimizarem para a topologia de configuração na qual estão a ser executados. 0 documento EP-A-1674987 divulga um método de acordo com a parte de pré-caracterização da reivindicação 1. - part 1-74, URL: em 0 documento de Perretta R F: "z/Architecture overview 2", MVS Update, vol. 196, 1 Janeiro de 2003, páginas XP002616948, obtido na Internet: http://www.cbttape.org/xephonm/mvs03 01.pdf [obtido 2010-01-17], divulga e estrutura SYSIB.
DIVULGAÇÃO DA INVENÇÃO A invenção proporciona um método como reivindicado na reivindicação 1 e sistema e programa informático correspondentes.
As imperfeições da técnica anterior são superadas e proporcionam-se vantagens adicionais através da provisão de um método, sistema e produto de programa informático para possibilitar um subconjunto de recursos de hardware informático latentes num sistema informático actualizável tendo um conjunto de recursos de hardware informático latentes.
Um computador central compreendendo vários CPU anfitriões pode ser repartido em partições lógicas/virtuais tendo vários CPU hóspedes. A partição é realizada, de um modo preferido, por firmware ou por software, como poderia acontecer com um sistema operativo, tal como o z/VM da IBM. Cada CPU hóspede é um CPU virtual na medida em que os programas hóspedes vêem os CPU 15
hóspedes como processadores de CPU reais, mas, de facto, o anfitrião subjacente está a mapear cada CPU hóspede para recursos de CPU anfitrião. Numa forma de realizaçao, um CPU hóspede é implementado utilizando uma parte de um CPU anfitrião, em que o anfitrião indica uma parte de tempo de CPU durante a qual o CPU hóspede utiliza o CPU anfitrião. Prevê-se que uma pluralidade de CPU hóspedes possa ser suportada por um único CPU anfitrião, mas o oposto também se pode aplicar.
Noutra forma de realização, os CPU são emulados por software por meio do qual as rotinas de emulação convertem funções do CPU hóspede (incluindo descodificação e execução de instruções) em rotinas que são executadas nos CPU anfitriões. Os CPU anfitriões estão preparados para suportar CPU hóspedes.
Noutra forma de realização, uma primeira imagem hóspede pode ser a anfitriã de uma segunda imagem hóspede. Nesse caso, os segundos CPU hóspedes são facultados pelos primeiros CPU hóspedes, que são, eles próprios, facultados pelos CPU anfitriões. A topologia das configurações é um ninho de níveis de CPU hóspedes e um ou mais CPU anfitriões. É proporcionada uma nova instrução PERFORM TOPOLOGY FACILITY (PTF) e a instrução STORE SYSTEM INFORMATION (STSI) da técnica anterior é aperfeiçoada para proporcionar um novo SYSIB (identificador SYSBIB 15.1.2) que proporciona uma afinidade de componente e informação de acondicionamento lógico para software. Isto permite ao software aplicar uma selecção inteligente e informada relativamente a como é que elementos individuais, tais como unidades de processamento do multiprocessador, são atribuídos a várias aplicações e cargas de trabalho. Proporcionando, assim, informação a um programa (OS) 16 para melhorar o desempenho aumentando, por exemplo, as taxas de sucesso de cache partilhada. É utilizada uma nova instrução PERFORM TOPOLOGY FUNCTION (PTF) por um programa privilegiado, tal como um supervisor, um OS, um kernel e semelhante, para pedir a alteração da topologia de configuração de CPU dentro do qual o programa está a ser executado. Numa forma de realização, a topologia CPU hóspede é comutada entre polarização horizontal e vertical.
Ao ter a capacidade de conhecer a informação de topologia CPU, o programa compreende a "distância" entre quaisquer dois ou mais CPU arbitrários de uma configuração de multiprocessamento simétrico. A capacidade proporcionada para minimizar a distância agregada de todos os CPU numa configuração e como as tarefas de aplicação-programa particular são repartidas nos CPU individuais proporcionam programas de supervisão com a capacidade de melhorar o desempenho. 0 desempenho melhorado pode resultar de um ou mais dos seguintes atributos que são melhorados por um melhor conhecimento de topologia:
Encurtamento de percursos de sinalização Inter-CPU. É provável que o armazenamento partilhado, a que múltiplos CPU acedem, esteja em caches mais próximas do conjunto de CPU. Por conseguinte, a utilização de armazenamento inter-cache está confinada a um subconjunto mais pequeno da máquina total e configuração que permita uma transferência de cache a cache mais rápida. A presença de um local de armazenamento na cache mais próximo de um CPU (Ll) é significativamente mais provável. 17
Devido ao desempenho melhorado, o número de CPU actualmente na configuração pode ser menor, obtendo-se, mesmo assim, o trabalho feito no mesmo ou menor tempo de execução. Esta redução de CPU diminui o número de caminhos de comunicação que cada CPU tem que utilizar para comunicar com os outros CPU da configuração, contribuindo, desse modo, para melhorar o desempenho global.
Por exemplo, se 10 CPU necessitarem de executar um programa particular, o tráfego inter-cache é substancial, ao passo que se o mesmo programa puder ser executado num CPU, não existe tráfego inter-cache. Isto indica que se garante que a presença de cache de locais de armazenamento desejados está na cache do único CPU, se esse armazenamento estiver presente numa qualquer cache.
Quando o armazenamento e a hierarquia de cache associada são locais, em vez de distribuídos através de múltiplas estruturas físicas (i. e., caixas, etc.), os percursos de sinalização são mais curtos. O conhecimento da topologia indica a distância relativa para seleccionar o subconjunto apropriado de CPU a atribuir a um programa de aplicação para que, mesmo dentro de um conjunto maior de CPU numa configuração SMP, o subconjunto optimize a distância minimizada entre eles. Este é algumas vezes chamado um grupo de afinidade.
As noções de redução da contagem de CPU e distância entre CPU são denunciadas pela informação de topologia que permite ao programa optimizar a atribuição dos CPU a um grupo de afinidade.
Numa forma de realização (FIG. 20), num sistema informático anfitrião repartido logicamente compreendendo processadores anfitriões (CPU anfitriões), informação de topologia de um ou 18 mais processadores hóspedes (CPU hóspedes) de uma configuração de hóspedes é identificada e armazenada numa tabela. Um processador hóspede da configuração de hóspedes extrai, de um modo preferido, uma instrução de STORE SYSTEM INFORMATION [ARMAZENAR INFORMAÇÃO DE SISTEMA] para execução. Quando a instrução STORE SYSTEM INFORMATION é executada com base num pedido de informação de topologia da instrução STORE SYSTEM INFORMATION, obtém informação de topologia da configuração informática, compreendendo a informação de topologia informação de encadeamento de processadores da configuração. A informação de topologia obtida é armazenada numa tabela de topologia de configuração, de um modo preferido, na memória.
Numa forma de realização, a informação de topologia compreende a identificação de processadores anfitriões e níveis de encadeamento associados com a topologia dos processadores anfitriões. Noutra forma de realização, a informação de topologia compreende informação acerca de processadores anfitriões de configuração de hóspedes e níveis de encadeamento associados com a topologia dos processadores anfitriões da configuração de hóspedes.
Numa forma de realização, a instrução STORE SYSTEM INFORMATION compreende um campo de código de operação, um campo de registo de base, um campo de deslocamento com sinal, em que a instrução de identificação de topologia compreende, ainda, um primeiro registo geral implicado contendo um campo de código de função e um campo de selector-1 e um segundo registo geral implicado contendo um campo de selector-2, especificando o campo de código de função o pedido de informação de topologia, identificando o campo de registo de base e o campo de deslocamento com sinal um local na memória de um bloco de 19 informação de sistema (SYSIB) contendo a tabela de topologia de configuração, em que valores do campo de selector-1 e do campo de selector-2, em combinação, determinam o pedido de informação de topologia a realizar.
Noutra forma de realização, a tabela contém uma entrada de processador de lista de topologia para cada grupo de processadores encadeados dos processadores.
Ainda noutra forma de realização, a entrada de processador de lista de topologia compreende, ainda, um indicador que mostra quão dedicados são os processadores do grupo de processadores encadeados para a configuração de hóspedes de partição lógica.
Numa forma de realização, a tabela inclui, ainda, uma entrada de recipiente de lista de topologia de cada nivel de encadeamento para uma hierarquia de um ou mais níveis de encadeamento tendo os referidos processadores encadeados.
Numa forma de realização, a execução da STORE SYSTEM INFORMATION é realizada por emulação num processador "forasteiro".
BREVE DESCRIÇÃO DOS DESENHOS 0 assunto que é considerado como a invenção é especialmente salientado e distintamente reivindicado na parte final da descrição. A invenção, no entanto, enquanto organização e método de prática, em conjunto com outros objectivos e vantagens respectivos, pode ser melhor compreendida recorrendo-se à 20 descrição que se segue feita em associaçao com os desenhos anexos nos quais: A FIG. 1 indica um sistema Informático Central da técnica anterior. A FIG.2 indica um sistema Informático Central emulado da técnica anterior, A FIG. 3 indica um formato de instrução de uma instrução de máquina STSI da técnica anterior; A FIG. 4 indica registos implicados da instrução STSI da técnica anterior; A FIG. 5 indica uma tabela de códigos de função; A FIG. 6 indica uma tabela SYSIB 1.1.1 da técnica anterior; A FIG. 7 indica uma tabela SYSIB 1.2.1 da técnica anterior; A FIG. 8 indica uma tabela SYSIB 1.2.2 Formato-1 da técnica anterior; A FIG. 9 indica uma tabela SYSIB 1.2.2 Formato-2 da técnica anterior; A FIG.10 indica uma tabela SYSIB 15.1.2 de acordo com a invenção; A FIG. 11 indica uma TLE tipo recipiente; 21 A FIG. 12 indica uma TLE tipo CPU; A FIG. 13 indica um formato de instrução de uma instrução de máquina PTF de acordo com a invenção; A FIG. 14 indica um formato de registo da instrução PTF;
As FIGs. 15A-15D indicam elementos de sistemas informáticos repartidos da técnica anterior; A FIG. 16 indica um sistema informático exemplificativo;
As FIGs. 17-19 indicam recipientes do sistema informático exemplificativo; e A FIG. 20 indica um fluxo de uma forma de realização da invenção.
DESCRIÇÃO DETALHADA
Numa unidade de processamento, instruções de máquina arquitectada são utilizadas por programadores (que escrevem, tipicamente, aplicações em "C", mas também em Java®, COBOL, PL/I, PL/X, Fortran e outras linguagens de nível elevado), muitas vezes, por meio de uma aplicação de compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas nativamente num Servidor IBM de z/Architecture ou, em alternativa, em máquinas executando outras arquitecturas. Podem ser emuladas nos existentes e futuros servidores de unidades de processamento da IBM e noutras máquinas da IBM (e. g., Servidores pSeries® e Servidores xSeries®) . Podem ser executadas 22 em máquinas Linux num leque variado de máquinas utilizando hardware fabricado pela IBM®, Intel®, AMD™, SunMicrosystems e outros. Além da execução em hardware com z/Architecture®, o Linux também pode ser utilizado, assim como máquinas que utilizam emulação por Hercules, UMX, FSI (Fundamental Software, Inc) ou Plataform Solutions, Inc. (PSI), em que, de um modo geral, 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 executa, tipicamente, software de emulação compreendendo firmware ou um sistema operativo nativo para realizar a emulação do processador emulado. 0 software de emulação é responsável pela extracção e execução de instruções da arquitectura do processador emulado. 0 software de emulação mantém um contador de programa emulado para não perder o rasto dos limites das instruções. 0 software de emulação pode extrair uma ou mais instruções de máquina emulada num momento e converter uma ou mais instruções de máquina emulada para um grupo correspondente de instruções de máquina nativa para execução pelo processador nativo. Estas instruções convertidas podem ser colocadas na cache, para se poder realizar 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 modo a assegurar que os sistemas operativos e aplicações escritas para o processador emulado funcionem correctamente. Além disso, o software de emulação deve proporcionar recursos identificados pela arquitectura do processador emulado incluindo, sem limitação, registos de controlo, registos de utilização geral (muitas vezes incluindo registos de vírgula flutuante), função de tradução de endereço dinâmico incluindo tabelas de segmentos e tabelas de páginas, 23 por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto, relógios com Hora Diária (TOD) e interfaces arquitectadas para subsistemas 1/0, para que um sistema operativo ou um programa de aplicação concebido para ser executado no processador emulado, possa ser executado no processador nativo tendo o software de emulação.
Uma instrução especifica em emulação é descodificada e uma subrotina é chamada a realizar a função da instrução individual. Uma função de software de emulação emulando uma função de processador emulado é implementada, por exemplo, numa subrotina “C" ou driver, ou algum outro método de proporcionar um driver para o hardware especifico como será compreendido pelos especialistas na técnica depois de compreender a descrição da forma de realização preferida. Várias patentes de emulação de software e hardware incluindo, mas não limitada a, documento US 5551013 para um "Multiprocessor for hardware emulation" de Beausoleil et ai., e documento US 6009261: "Preprocessing of stored target routines for emulating incompatible instructions on a target processor") de Scalei et ai., e documento US 5574873: "Decoding guest instruction to directly access emulation routines that emulate the guest instructions" de Davidian et ai.; documento US 6308255: "Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system", de Gorishek et ai; e documento US 6463582: "Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method" de Lethin et ai; e documento US 5790825: "Method for emulating guest instructions on a host Computer through dynamic recompilation of host instructions" de Eric Traut; e muitas outras, ilustram a uma variedade de modos conhecidos para obter a emulação de um formato de instrução 24 arquitectado para uma máquina diferente de uma máquina alvo disponível para os especialistas na técnica, assim como as técnicas de software comercial utilizadas pelos acima referenciados.
No que se refere à FIG. 1, representam-se componentes representativos de um sistema 100 informático central. Também se podem empregar outras configurações de componentes num sistema informático bem conhecidas na técnica. O ambiente informático central é, de um modo preferido, baseado na z/Architecture oferecida pela International Business Machines Corporation (IBM®), Armonk, Nova York. A z/Architecture é descrita de um modo mais aprofundado em: z/Architecture Principies of Operation, IBM® Pub. N° SA22-7832-05, 6a Edição, (Abril 2007). Ambientes informáticos baseados na z/Architecture incluem, por exemplo, eServer™ e Zseries®, ambos da IBM®. O computador 100 central representativo compreende um ou mais CPU 101 em comunicação com o meio de armazenamento principal (memória 102 de computador) , assim como interfaces de 1/0 para dispositivos 111 de armazenamento e redes 101 para comunicar com outros computadores ou SAN e semelhantes. O CPU pode ter Tradução Dinâmica de Endereço (DAT) 103 para transformar endereços de programa (endereços virtuais) em endereços reais de memória. Uma DAT inclui, tipicamente, uma Memória Tampão de Tradução de Endereços (TLB) 107 para colocar em cache traduções para que acessos posteriores ao bloco de memória 102 de computador não fiquem sujeitos ao atraso de tradução de endereço. Tipicamente, emprega-se uma cache 109 entre a memória 102 de computador e o Processador 101. A cache 109 pode ser hierárquica tendo uma grande cache disponível 25 para mais do que um CPU e caches mais pequenas e mais rápidas (nível inferior) entre a grande cache e cada CPU. Em algumas implementações, as caches de nível inferior são divididas para proporcionar caches de nível inferior separadas para extracção de instruções e acessos a dados. Numa forma de realização, uma instrução é extraída da memória 102 por uma unidade 104 de extracção de instruções através de uma cache 109. A instrução é descodificada numa unidade (706) de descodificação de instruções e expedida (com outras instruções em algumas formas de realização) para unidades 108 de execução de instruções. Empregam-se, tipicamente, várias unidades 108 de execução, por exemplo, uma unidade de execução aritmética, uma unidade de execução de vírgula flutuante e uma unidade de execução de instruções de ramificação. A instrução é executada pela unidade de execução, acedendo a operandos a partir de registos especificados de instrução ou memória, quando necessário. Se se quiser aceder a um operando (carregado ou armazenado) a partir da memória 102, uma unidade 105 de armazenamento de carga gere, tipicamente, o acesso segundo o controlo da instrução a ser executada.
Numa forma de realização, a invenção pode ser implementada por software (designado, algumas vezes, por Código Interno Licenciado (LIC), firmware, microcódigo, milicódigo, picocódigo e semelhante, em que qualquer destes será consistente com a presente invenção). 0 código de programa de software que incorpora a presente invenção é, tipicamente, acedido pelo processador, também conhecido como um CPU 101 (Unidade de Processamento Central), de sistema 100 informático a partir do meio 111 de armazenamento de longo prazo, tal como uma unidade de CD-ROM, unidade de banda magnética ou unidade de disco rígido. O código de programa de software pode ser incorporado em 26 qualquer um de uma variedade de meios conhecidos para utilização com um sistema de processamento de dados, tal como uma disquete, disco rígido ou CD-ROM. 0 código pode ser distribuído por esses meios ou pode ser distribuído a utilizadores a partir da memória 102 de computador ou armazenamento de um sistema informático através de uma rede 110 para outros sistemas informáticos para utilização pelos utilizadores desses outros sistemas.
Em alternativa, o código de programa pode ser incorporado na memória 102 e acedido pelo processador 101 utilizando o barramento de processador. Este código de programa inclui um sistema operativo que controla a função e interacção de vários componentes informáticos e um ou mais programas de aplicação. O código de programa é normalmente "paged" do meio 111 de armazenamento compacto para a memória 102 de alta velocidade, onde fica disponível para processamento pelo processador 101. As técnicas e métodos para incorporar o código de programa de software na memória, em meios físicos e/ou distribuir o código de software através de redes são bem conhecidos e não continuarão a ser discutidos no presente documento. O código de programa, quando criado e armazenado num meio tangível (incluindo, sem limitação, módulos de memória electrónica (RAM), memória flash, discos compactos (CD), DVD, fitas magnéticas e semelhantes é, muitas vezes, designado por "produto de programa informático". O meio de produto de programa informático é, tipicamente, legível por um circuito de processamento, de um modo preferido, num sistema informático para execução pelo circuito de processamento.
Na FIG. 2, proporciona-se um sistema 201 informático central emulado exemplificativo que emula um sistema 100 informático central de uma arquitectura central. No sistema 201 informático 27 central emulado, o processador (CPU) 208 anfitrião é um processador anfitrião emulado (ou processador anfitrião virtual) e compreende um processador 207 de emulação tendo uma arquitectura de conjunto de instruções nativa diferente da utilizada pelo processador 101 do computador 100 central. 0 sistema 201 informático central emulado tem uma memória 202 acessível pelo processador 207 de emulação. Na forma de realização exemplificativa, a memória 207 é repartida numa parte da memória 102 de computador central e numa parte de rotinas 203 de emulação. A memória 102 de computador central é disponibilizada a programas do computador 201 central emulado de acordo com a arquitectura do computador central. O processador 207 de emulação executa instruções nativas de um conjunto de instruções arquitectadas de uma arquitectura diferente da do processador 208 emulado, sendo as instruções nativas obtidas a partir da memória 203 de rotinas de emulação e pode aceder a uma instrução central para execução a partir de um programa na memória 102 de computador central empregando uma ou mais instruções obtidas numa rotina de Sequência & Acesso/Descodificação, que pode descodificar a(s) instrução(ões) central(is) acedidas para determinar uma rotina de execução de instruções nativas para emular a função da instrução central acedida.
Outros recursos que são definidos para a arquitectura do sistema 100 informático central podem ser emulados pelas Rotinas de Recursos Arquitectadas, incluindo tais recursos como Registos de Utilização Geral, Registos de Controlo, Tradução Dinâmica de Endereços e suporte de Subsistema 1/0 e cache de processador, por exemplo. As rotinas de emulação também podem aproveitar uma função disponível no processador 207 de emulação (tal como Registos Gerais e tradução dinâmica de endereços virtuais) para 28 melhorar o desempenho das rotinas de emulação. Também se pode proporcionar hardware especial e Motores de Descarregamento para ajudar o processador 207 na emulação da função do computador 100 central.
De modo a fornecer informação de topologia a programas, proporcionam-se duas instruções. A primeira é um aperfeiçoamento de uma instrução STSI (STORE SYSTEM INFORMATION) da técnica anterior e a segunda é uma nova instrução PTF (PERFORM TOPOLOGY FUNCTION) .
Visão de Conjunto de Topologia de CPU:
Com o advento de novas unidades de processamento eSeries da IBM, e mesmo anteriormente, a organização de máquinas em estruturas nodais resultou num comportamento de acesso de memória não uniforme (NUMA) (também denominado, algumas vezes, "granuloso". O propósito da nova função SYSIB 15.1.2 da instrução STSI (STORE SYSTEM INFORMATION) da técnica anterior e da nova instrução PERFORM TOPOLOGY FUNCTION (PTF) é proporcionar ao programa um conhecimento adicional da topologia de máquina para poder realizar determinadas optimizações (incluindo taxas de sucesso de cache melhoradas) e, por esse meio, melhorar o desempenho global. A quantidade de recurso de CPU anfitrião atribuído a uma configuração de hóspedes de multiprocessamento (MP) tem, geralmente, sido difundido uniformemente através dos vários CPU hóspedes configurados. (Um CPU hóspede é um CPU lógico proporcionado a um programa, todos os CPU hóspedes são apoiados por partição de software/hardware nos CPU anfitriões propriamente ditos) . Esta difusão uniforme implica que nenhum CPU (ou mais que um CPU) hóspede em particular tem mais direito 29 ao aprovisionamento de um qualquer CPU anfitrião suplementar que quaisquer outros CPU hóspedes determinados arbitrariamente. Esta condição da configuração de hóspedes, afectando todos os CPU da configuração, é chamada "polarização horizontal". De acordo com a polarização horizontal, a atribuição de um CPU anfitrião a um CPU hóspede corresponde, aproximadamente, à mesma quantidade de aprovisionamento para cada CPU hóspede. Quando o aprovisionamento não é dedicado, os mesmos CPU anfitriões de aprovisionamento dos CPU hóspedes também podem ser utilizados para aprovisionar CPU hóspedes de outro hóspede ou mesmo outros CPU hóspedes da mesma configuração de hóspedes.
Quando a outra configuração de hóspedes é uma partição lógica diferente, um CPU anfitrião, quando activo em cada partição, deve, tipicamente, aceder mais ao meio de armazenamento principal porque a taxa de sucesso de cache é reduzida na medida em que é preciso partilhar as caches por múltiplas zonas de transferência para outro local. Se o aprovisionamento de CPU anfitrião pode alterar o equilíbrio para que alguns CPU anfitriões sejam, na sua maior parte ou mesmo exclusivamente, atribuídos a uma dada configuração de hóspedes (e isto torna-se o comportamento normal), então, as taxas de sucesso de cache melhoram, tal como o desempenho. Esta difusão não uniforme implica que um ou mais CPU hóspedes têm mais direito a aprovisionamento do CPU anfitrião suplementar que outros CPU hóspedes determinados arbitrariamente que ficam com direito a menor aprovisionamento de CPU anfitrião. Esta condição da configuração de hóspedes afectando todos os CPU da configuração, é chamada "polarização vertical". A arquitectura aqui apresentada classifica a polarização vertical em três níveis de prerrogativa de aprovisionamento, elevada, média e baixa: 30 aproximadamente, uma
Prerrogativa elevada garante, atribuição de 100% de um CPU anfitrião a um CPU lógico/virtual e a afinidade é mantida como uma forte correspondência entre os dois. No que se refere ao aprovisionamento de uma partição lógica, quando a polarização vertical é a utilizada, diz-se que a prerrogativa de um CPU dedicado é elevada.
Prerrogativa média garante que uma quantidade não especificada de recurso de CPU anfitrião (um ou mais CPU anfitriões) é atribuída a um CPU lógico/virtual e qualquer capacidade restante do CPU anfitrião não utilizada pode ser atribuída a qualquer outro lado. O melhor caso de capacidade restante não utilizada disponível seria atribuí-la como capacidade não utilizada local se isso for possível. Um resultado menos benéfico ocorre se essa capacidade não utilizada disponível for atribuída como capacidade não utilizada remota. Também acontece que a percentagem de recurso atribuída a um CPU lógico de prerrogativa médio é uma aproximação muito mais suave em comparação com a aproximação de 100% de uma configuração de prerrogativa elevada.
Prerrogativa baixa garante, aproximadamente, 0% de atribuição de um CPU anfitrião a um CPU lógico/virtual. No entanto, se houver capacidade não utilizada disponível, esse CPU lógico/virtual pode, ainda, receber algum recurso de CPU. Um modelo de recipientes encadeados utilizando polarização destina-se a proporcionar um nível de informação acerca da estrutura nodal da máquina tal como esta se aplica à configuração pedida, para que, geralmente, agregados de CPU anfitriões possam ser atribuídos a agregados de CPU 31 hóspedes, melhorando, por esse meio, tanto quanto possível, a partilha de armazenamento e a minimização de colisões de configurações diferentes, essencialmente, nos mesmos CPU anfitriões. A polarização e a prerrogativa indicam a relação entre CPU físicos e CPU lógicos ou CPU lógicos e CPU virtuais numa configuração de hóspedes e como é que a capacidade atribuída à configuração de hóspedes é dividida proporcionalmente pelos CPU que fazem parte da configuração.
Historicamente, uma configuração de hóspedes foi polarizada horizontalmente. Independentemente dos CPU hóspedes definidos para a configuração, o recurso de CPU anfitrião atribuído foi difundido uniformemente por todos os CPU hóspedes de um modo equitativo e sem prerrogativas. Pode dizer-se que o peso de um único CPU lógico numa partição lógica quando a polarização horizontal é utilizada é aproximadamente igual ao peso da configuração total dividido pelo número de CPU. No entanto, com a introdução do 2097 e modelos de família, torna-se imperativo poder difundir o recurso de CPU anfitrião diferentemente, a que se chama polarização vertical de uma configuração e, depois, o grau de aprovisionamento de CPU de hóspedes, sendo os CPU anfitriões indicados como tendo prerrogativa elevada, média ou baixa. A prerrogativa elevada está em vigor quando um CPU lógico/virtual com uma configuração polarizada verticalmente é inteiramente apoiado pelo mesmo CPU anfitrião. A prerrogativa média está em vigor quando um CPU lógico/virtual com uma configuração polarizada verticalmente é apoiado parcialmente por um CPU anfitrião. A prerrogativa baixa está em vigor quando não se garante ao CPU lógico/virtual com uma configuração polarizada verticalmente qualquer recurso de CPU anfitrião, a não ser o que é disponibilizado pela capacidade não utilizada que fica disponível. 32
Capacidade não utilizada de CPU:
Recurso de CPU, existem duas espécies de recurso de capacidade não utilizada de CPU: • Capacidade não utilizada local torna-se disponível quando um CPU lógico/virtual de uma configuração não está a utilizar todo o recurso a que tem direito e essa capacidade não utilizada é, então, utilizada na configuração desse CPU. Capacidade não utilizada local é preferida à capacidade não utilizada remota já que se esperam melhores taxas de sucesso nas caches quando a capacidade não utilizada é utilizada na configuração. • A capacidade não utilizada remota torna-se disponível quando um CPU lógico/virtual de uma configuração não está a utilizar todo o recurso a que tem direito e essa capacidade não utilizada é, então, utilizada fora da configuração desse CPU. Espera-se que a capacidade não utilizada remota exiba taxas de sucesso mais baixas nas caches, mas isso é melhor do que não executar, de todo, um CPU lógico/virtual. 0 objectivo é maximizar as taxas de sucesso de cache do CPU. Para uma partição lógica, a quantidade de recurso de CPU físico é determinada pelas ponderações de sistema global que determinam o recurso de CPU atribuído a cada partição lógica. Por exemplo, num MP de 3 vias lógico, a que é atribuído o recurso de CPU físico equivalente a um único CPU, e é polarizado horizontalmente, cada CPU lógico será expedido independentemente e receberá, assim, aproximadamente, 33% de recurso de CPU físico. Se a mesma configuração fosse polarizada verticalmente, apenas um só CPU lógico funcionaria e receberia, 33 aproximadamente, 100% do recurso atribuído de CPU físico (prerrogativa elevada) enquanto os restantes dois CPU lógicos não serão, normalmente, expedidos (prerrogativa baixa). Esta atribuição de recursos é, normalmente, uma aproximação. Mesmo um CPU de prerrogativa baixa pode receber alguma quantidade de recurso, nem que seja apenas para ajudar a assegurar que um programa não fique preso nesse CPU. Ao proporcionar um meio para um programa de controlo indicar que compreende a polarização e para receber uma indicação para cada CPU da sua polarização e, se for polarização vertical, o grau de prerrogativa, o programa de controlo pode utilizar, de forma mais inteligente, as estruturas de dados, que se pensa serem, geralmente, locais, de um CPU, mas que estão, em vez disso, disponíveis a todos os CPU de uma configuração. Esse programa de controlo também pode evitar dirigir trabalho para um qualquer CPU de prerrogativa baixa. 0 recurso de CPU físico propriamente dito atribuído pode não constituir um número inteiro de CPU, assim, também há a possibilidade de um ou mais CPU numa configuração MP polarizada verticalmente terem prerrogativa, mas não com um grau elevado, resultando, por esse meio, que esses CPU têm uma prerrogativa média ou baixa. É possível que quaisquer CPU de prerrogativa baixa restantes recebam alguma quantidade de recurso de CPU anfitrião. Por exemplo, isto pode ocorrer quando esse CPU é visado, tal como através de uma ordem SIGPP e se encontra disponível recurso de CPU anfitrião de capacidade não utilizada. De outro modo, esse CPU lógico/virtual pode estar num estado não expedido, mesmo que seja, de outro modo, apto a ser expedido.
De um modo preferido, de acordo com a invenção, é definido um campo de polarização de 2-bits para a nova "entrada de lista de topologia" (TLE) de tipo CPU da instrução STORE SYSTEM INFORMATION (STSI). O grau de prerrogativa de polarização 34 vertical para cada CPU é indicado como elevado, médio ou baixo. A atribuição não é uma percentagem precisa, mas, pelo contrário, é um tanto vaga e heurística.
Além da polarização vertical como meio de atribuição de ponderação a CPU hóspedes, existe outro conceito, que é a criação e gestão de capacidade não utilizada (também chamada "espaço branco") . A capacidade não utilizada é criada nas seguintes circunstâncias: • Um CPU vertical elevado contribui para a capacidade não utilizada quando a sua utilização média (AU) cai abaixo dos 100 por cento (100-AU). • Um CPU vertical médio que tem um aprovisionamento atribuído de M por cento de um CPU anfitrião contribui para a capacidade não utilizada quando a sua utilização média (AU) cai abaixo de M por cento (M-AU > 0). • Um CPU vertical baixo não contribui para a capacidade não utilizada. • Um CPU vertical elevado não é um consumidor de capacidade não utilizada.
Instrução STORE SYSTEM INFORMATION:
Uma forma de realização exemplificativa de um formato de uma instrução STORE SYSTEM INFORMATION na FIG. 3 compreende um campo de código de operação "B27D", um campo B2 de registo de base e um campo D2 de deslocamento com sinal. O código de operação de 35 instruções informa a máquina que executa a instrução que existem registos gerais "0 e 1" implicados associados com a instrução. É obtido um endereço de um segundo operando adicionando-se o valor do campo de deslocamento com sinal ao conteúdo do registo geral especificado pelo campo de base. Numa forma de realização, quando o campo de registo de base é "0", o valor estendido de sinal do campo de deslocamento é utilizado, directamente, para especificar o segundo operando. Quando a instrução STORE SYSTEM INFORMATION é extraída e executada, dependendo de um código de função no registo geral 0, ou uma identificação do nível da configuração executando 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 de sistema (SYSIB). Quando informação acerca de um componente ou componentes é pedida, a informação é especificada por conteúdo adicional de registo geral 0 e por conteúdo de registo geral 1. O SYSIB, se aplicável, é concebido pelo endereço do segundo operando. Considera-se que a máquina fornece um, dois ou três níveis de configuração. Os níveis são: 1. A máquina básica, que é a máquina como se funcionasse no modo básico. 2. Uma partição lógica, que é proporcionada se a máquina estiver a funcionar no modo LPAR (logicamente repartido). Uma partição lógica é proporcionada pelo hypervisor LPAR, que é uma parte da máquina. Uma máquina básica existe, 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 ou pela máquina básica ou numa partição lógica. 36
Uma máquina virtual pode, ela própria, executar um programa de controlo VM que proporciona uma máquina virtual de nível mais elevado (mais afastado da máquina básica), o que também é considerado uma configuração de nível-3. Os termos modo básico, modo LPAR, partição lógica, hypervisor e máquina virtual, e quaisquer outros termos relacionados especificamente com estes termos, não são definidos nesta publicação; são definidos nos manuais das máquinas. Um programa em execução por uma configuração de nível-1 (a máquina básica) pode pedir informação acerca dessa configuração. Um programa em execução por uma configuração de nível-2 (numa partição lógica) pode pedir informação acerca da partição lógica e acerca da máquina básica subjacente. Um programa em execução por uma configuração de nível-3 (uma máquina virtual) pode pedir informação acerca da máquina virtual e acerca de 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 se pede informação acerca de uma máquina virtual, é proporcionada informação acerca da configuração executando o programa e acerca de qualquer nível ou níveis subjacentes da máquina virtual. Em qualquer destes casos, a informação é proporcionada acerca de um só nível se o nível implementar a instrução. 0 código de função determinando a operação é um inteiro binário sem sinal em posições de bit 32-35 de registo geral 0 e é a seguinte: 37 Código de Função Informação Pedida: 0 1 2 3 4-14 15 Número de nível de configuração actual Informação acerca do nível 1 (a máquina básica) Informação acerca do nível 2 (uma partição lógica) Informação acerca do nível 3 (uma máquina virtual) Nenhuma; códigos são reservados Informação de nível de configuração actual Código de Função Inválido: 0 nível da configuração executando o programa é chamado o nível actual. 0 nível de configuração especificado por um código de função não nulo é chamado o nivel especificado. Quando o valor do nível especificado é mais elevado do que o nível actual, então, o código de função é chamado inválido, o código de condição é passado para 3 e não é executada mais nenhuma acção (incluindo verificação). Código de Função Válido:
Quando o código de função é igual ou menor do que o número do nível actual, é chamado válido. Neste caso, os bits 36-55 do registo geral 0 e os bits 32-47 do registo geral 1 devem ser zero ou 15; de outro modo, é reconhecida uma excepção de especificação. Os bits 0-31 de registos gerais 0 e 1 são sempre ignorados. Quando o código de função é 0, um inteiro binário sem sinal identificando 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 de bit 32-35 do registo geral 0, 38 o código de condição é passado para 0 e não se executa mais nenhuma acção. Quando o código de função é válido e não nulo, os registos gerais 0 e 1 contém especificações adicionais acerca da informação pedida, como se segue: • Posições de bit 56-63 do registo geral 0 contêm um inteiro binário sem sinal, chamado selector 1, que especifica um componente ou componentes da configuração especificada. • Posições de bit 48-63 do registo geral 1 contêm um inteiro binário sem sinal, chamado selector 2, que especifica o tipo de informação pedida. 0 conteúdo dos registos gerais 0 e 1 são mostrados na FIG. 4.
Quando o código de função é válido e não nulo, a informação pode ser armazenada num bloco de informação de sistema (SYSIB) começando na localização do segundo operando. 0 SYSIB é de 4k bytes e deve começar numa fronteira de 4k bytes; de outro modo, pode ser reconhecida uma excepção da especificação, dependendo do selector 1 e selector 2 e em se são reconhecidas excepções de acesso devido a referências ao SYSIB. 0 selector 1 pode ter os valores como se segue: 39
Selector 1
Informação Pedida 0 Nenhuma; o selector está reservado 1 Informação acerca do nível de configuração especificado pelo código de função 2 Informação acerca de um ou mais CPU no nível de configuração especificado 3-255 Nenhuma; selectores estão reservados
Quando o selector 1 é 1, o selector 2 pode ter os valores como se segue:
Selector 2 quando
Selector 1 é 1 Informação Pedida 0 Nenhuma; o selector está reservado 1 Informação acerca do nível de configuração especificado 2 Informação de topologia acerca do nível de configuração especificado 3-65,535 Nenhuma; os selectores estão reservados Quando o selector 1 é 2, o selector 2 pode ter os valores como se segue: 40
Informação Pedida
Selector 2 quando Selector 1 é 2 0 Nenhuma; o selector está reservado 1 Informação acerca do CPU executando o programa no nível de configuração especificada 2 Informação acerca de todos os CPU no nível de configuração especificado 3-65,535 Nenhuma; os selectores estão reservados
Apenas determinadas combinações do código de função, selector 1 e selector 2 são válidas, como mostrado na FIG.5.
Quando a combinação especificada entre código de função selector-1 e selector-2 é inválida (é diferente da mostrada na FIG. 5) ou se é válida, mas a informação pedida não está disponível porque o nível especificado não implementa ou não implementa completamente a instrução ou porque uma parte necessária do nível não está instalada ou não foi inicializada, e desde que uma excepção não seja reconhecida, o código de condição é passado para 3. Quando o código de função não é nulo, a combinação é válida, a informação pedida está disponível e não há excepção, a informação pedida é armazenada num bloco de informação de sistema (SYS1B) no endereço do segundo operando.
Alguns ou todos os SYSIB podem ser extraídos antes de serem armazenados. Um SYSIB pode ser identificado por referências, por meio de "SYSIB fc.sl.s2", em que "fc","sl" e "s2" são os valores de um código de função, selector 1 e selector 2, respectivamente. 41
As secções seguintes descrevem os SYSIB definidos por meio de figuras e texto relacionado. Nas figuras, os deslocamentos mostrados na esquerda são valores de palavra (compreendendo uma palavra 4 bytes). A "configuração" refere-se ao nivel de configuração especificado pelo código de função (o nivel de configuração acerca do qual se pede informação). SYSIB 1.1.1 (Configuração de Máquina Básica) 0 SYSIB 1.1.1 tem o formato mostrado na FIG. 6, onde os campos têm os seguintes significados:
Reservado: Os conteúdos de palavras 0-7, 13-15 e 29-63 são reservados e são armazenados como zeros. Os conteúdos de palavras 64-1023 são reservados e podem ser armazenados como zeros ou podem permanecer inalterados.
Fabricante: Palavras 8-11 contêm o nome EBCDIC de 16 caracteres (0-9 ou maiúsculas A-Z) do fabricante da configuração. O nome é justificado à esquerda com espaços finais em branco se necessário.
Tipo: Palavra 12 contém o número tipo EBCDIC de quatro caracteres (0-9) da configuração. (Isto é chamado o número de tipo-máquina na definição de STORE CPU ID.)
Identificador de Capacidade de Modelo: Palavras 16-19 contêm o identificador de capacidade de modelo EBCDIC de 16 caracteres (0-9 ou maiúsculas A-Z] 1 da configuração. 0 identificador de capacidade de modelo é justificado à esquerda com espaços finais em branco se necessário. 42 Código de Sequência: Palavras 20-23 contêm o código de sequência EBCDIC de 16 caracteres (0-9 ou maiúsculas A-Z) da configuração. 0 código de sequência é justificado à direita com zeros de EBCDIC iniciais se necessário.
Instalação de Fabrico: Palavra 24 contém o código EBCDIC de quatro caracteres (0-9 ou maiúsculas A-Z) que identifica a instalação de fabrico da configuração. 0 código é justificado à esquerda com espaços finais em branco se necessário.
Modelo: Quando a palavra 25 não é zeros binários, as palavras 25-28 contêm a identificação de modelo EBCDIC de 16 caracteres (0-9 ou maiúsculas A-Z) da configuração. A identificação de modelo é justificada à esquerda com espaços finais em branco se necessário. (Isto é chamado o número do modelo na nota 4 de programação na página 10-111 de STORE CPU ID). Quando a palavra 25 é zeros binários, os conteúdos das palavras 16-19 representam o identificador de capacidade de modelo e o modelo.
Notas de Programaçao: 1. Os campos do SYSIB 1.1.1 são semelhantes aos do descritor de nós descrito na publicação Common I/O-Device Commands and Self Description. No entanto, os conteúdos dos campos SYSIB podem não ser idênticos aos conteúdos dos campos de descritores de nós correspondentes porque os campos de SYSIB: 43
Permitem mais caracteres. • Sao mais flexíveis no que se refere ao tipo de caracteres permitido. • Fornecem informação que é justificada de modo diferente dentro do campo. • Podem não utilizar o mesmo método para determinar os conteúdos de campos, tal como o campo de código de sequência. 2. 0 campo do modelo num descritor de nós corresponde ao conteúdo do campo de modelo de STSI e nao ao campo de identificador de capacidade de modelo de STSI. 3. 0 campo de modelo especifica o modelo da máquina (i. e., o modelo físico), o campo de identificador de capacidade de modelo especifica um símbolo que pode ser utilizado para localizar uma declaração de capacidade ou desempenho na publicação de Biblioteca de Sistema para o modelo. SYSIB 1.2.1 (CPU de Máquina Básica) 0 SYSIB 1.2.1 tem o formato mostrado na FIG. 7, em que os campos têm o seguinte significado:
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 de palavras 64-1023 são reservados e podem ser armazenados como zeros ou podem permanecer inalterados. 44 Código de Sequência: Palavras 20-23 contêm o código de sequência EBCDIC de 16 caracteres (0-9 ou maiúsculas A-Z) da configuração. O código é justificado à direita com zeros de EBCDIC iniciais se necessário.
Instalação de Fabrico: Palavra 24 contém o código de EBCDIC de quatro caracteres (0-9 ou maiúsculas A-Z) que identifica a instalação de fabrico para a configuração. O código é justificado à esquerda com espaços finais em branco se necessário.
Endereço de CPU: Bytes 2 e 3 de palavra 25 contêm o endereço de CPU pelo qual este CPU é identificado numa configuração de multiprocessamento. O endereço de CPU é um inteiro binário de 16-bits sem sinal. O endereço de CPU é igual ao armazenado pelo STORE CPU ADRESS quando o programa é executado por uma máquina funcionando no modo básico.
Nota de Programaçao: Múltiplos CPU 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 de CPU, para estabelecer uma identidade de CPU única. Os códigos de sequência devolvidos a um CPU de máquina básica e a 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 à configuração de máquina básica. 45 SYSIB 1.2.2 (CPU de Máquina Básica) 0 campo de formato em byte 0 de palavra 0 determina o formato do SYSIB. Quando o campo de formato tem um valor de zero, o SYSIB 1.2.2 tem uma configuração de formato-0 como mostrado na FIG. 8. Quando o campo de formato tem um valor de um, o SYSIB 1.2.2 tem uma configuração de formato-1 como mostrado na FIG.9.
Reservado:
Quando o campo de formato contém um valor de zero, os conteúdos de bytes 1-3 de palavra 0 e palavras 1-6 são reservados e armazenados como zeros. Quando o campo de formato contém um valor de um, os conteúdos de byte 1 de palavra 0 e palavras 1-6 são reservados e armazenados como zeros. Quando são necessárias menos de 64 palavras para conter a informação para todos os CPU, a parte do SYSIB seguindo a lista de factor de ajustamento num SYSIB de formato-0 ou a lista de factor de ajustamento alternativa num SYSIB de format-1, até à palavra 63, são reservadas e são armazenadas como zeros. Os conteúdos de palavras 64-1023 são reservados e podem ser armazenados como zeros ou podem permanecer inalterados. Quando são necessárias 64 ou mais palavras para conter a informação para todos os CPU, a parte do SYSIB seguindo a lista de factor de ajustamento num SYSIB de formato-0 ou a lista de factor de ajustamento alternativa num SYSIB de format-1, até à palavra 1023, são reservadas e podem ser armazenadas como zeros ou podem permanecer inalteradas. 46
Formato :
Byte 0 da palavra 0 contém um inteiro binário de 8-bits sem sinal, que especifica o formato de SYSIB 1.2.2.
Deslocamento de Capacidade de CPU Alternativa:
Quando o campo de formato tem um valor de um, bytes 2-3 da palavra 0 contêm um inteiro binário de 16 bits sem sinal que especifica o deslocamento em bytes do campo de capacidade de CPU alternativo no SYSIB.
Capacidade de CPU Secundária: A palavra 7 contém um inteiro binário sem sinal de 32-bits que, quando diferente de zero, especifica uma capacidade secundária que pode ser aplicada a certos tipos de CPU na configuração. Não existe nenhuma descrição formal do algoritmo utilizado para gerar este inteiro, excepto que é igual ao algoritmo utilizado para gerar a capacidade de CPU. 0 inteiro é utilizado 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 de capacidade aplica-se a cada CPU de entre um ou mais tipos de CPU aplicáveis na configuração. Isto é, todos os CPU na configuração de um tipo ou tipos aplicáveis têm a mesma capacidade. Quando o valor é zero, todos os CPU de qualquer tipo de CPU na configuração têm a mesma capacidade, como especificado pela capacidade de CPU. A capacidade de CPU secundária pode ou não ter o mesmo valor que o valor de capacidade de CPU. Os 47 factores de ajustamento de capacidade de CPU de multiprocessamento são também aplicáveis aos CPU cuja capacidade é especificada pela capacidade de CPU secundária.
Capacidade de CPU:
Se os bits 0-8 da palavra 8 forem zero, a palavra contém um inteiro (I) binário sem sinal de 32 bits no intervalo 0<1<223, que especifica a capacidade de um dos CPU na configuração. Se os bits 0-8 da palavra 8 forem diferentes de zero, a palavra contém um número binário de formato curto de vírgula flutuante de 32 bits em vez de um inteiro binário sem sinal de 32 bits. Independentemente da codificação, um valor inferior indica uma capacidade de CPU proporcionalmente mais elevada. Além disso, não existe descrição formal do algoritmo utilizado para gerar este valor. O valor é utilizado 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 CPU não secundários na configuração. Isto é, todos os CPU não secundários na configuração têm a mesma capacidade.
Contagem de CPU Total:
Bytes 0 e 1 da palavra 9 contêm um inteiro binário sem sinal de 16-bits que especifica o número total dos vários CPU na configuração. Este número inclui todos os CPU no estado configurado, o estado de espera ou o estado reservado. 48
Contagem de CPU Configurados:
Bytes 2 e 3 da palavra 9 contêm um inteiro binário sem sinal de 16 bits que especifica o número de CPU que estão no estado configurado. Um CPU está no estado configurado quando ele está na configuração e disponível a ser utilizado para executar programas.
Contagem de CPU de Espera:
Bytes 0 e 1 da palavra 10 contêm um inteiro binário sem sinal de 16 bits que especifica o número de CPU que estão no estado de espera. Um CPU está no estado de espera quando está na configuração, não está disponível para ser utilizado para executar programas e pode ser disponibilizado pela emissão de instruções para o colocar estado configurado.
Contagem de CPU Reservados:
Bytes 2 e 3 da palavra 10 contêm um inteiro binário sem sinal de 16 bits que especifica o número de CPU que estão no estado reservado. Um CPU está no estado reservado quando está na configuração, não está disponível para ser utilizado para executar programas e não pode ser disponibilizado pela emissão de instruções para o colocar no estado configurado. (Pode ser possível colocar um CPU reservado no estado de espera ou configurado por meio de acções manuais.) 49
Factores de Ajustamento de Capacidade de CPU de Multiprocessamento:
Começando com bytes 0 e 1 da palavra 11, o SYSIB contém uma série de campos de dois bytes contínuos, contendo, cada um, um inteiro binário sem sinal de 16 bits utilizado para formar um factor de ajustamento (fracção) para o valor contido no campo de capacidade de CPU. Uma tal fracção é desenvolvida utilizando o valor (V) do primeiro campo de dois bytes de acordo com um dos seguintes métodos: • Se V estiver no intervalo 0<V£l00, indica-se um denominador de 100 que produz uma fracção de V/100. • Se V estiver no intervalo 101<V<255, indica-se um denominador de 255 que produz uma fracção de V/255. • Se V estiver no intervalo 255<V<65.536, indica-se um denominador de 65.536 que produz uma fracção de V/65.536.
Assim, a fracção representada por cada campo de dois bytes é, então, desenvolvida dividindo os conteúdos de um campo de
dois bytes pelo denominador indicado. O número de campos de factor de ajustamento é menos um do que o número de CPU especificado no campo de contagem de CPU total. Os campos de factor de ajustamento correspondem à configuração com números crescentes de CPU no estado configurado. 0 primeiro campo de factor de ajustamento corresponde a uma configuração com dois CPU no estado configurado. Cada campo de factor de ajustamento sucessivo corresponde a uma configuração com um número de CPU no estado configurado que é mais um do que o para o campo precedente. 50
Capacidade de CPU Alternativa:
Quando o campo de formato tem um valor de um, se os bits 0-8 da palavra N forem zero, a palavra contém um inteiro (I) binário sem sinal de 32 bits no intervalo 0<1<223 que especifica a capacidade anunciada de um dos CPU na configuração. Se os bits 0-8 da palavra N não forem nulos, a palavra contém um número de formato curto binário de virgula flutuante de 32-bits em vez de um inteiro binário sem sinal de 32 bits. Independentemente da codificação, um valor inferior indica uma capacidade de CPU proporcionalmente mais elevada. Além disso, não existe uma descrição formal do algoritmo utilizado para gerar este valor. O valor é utilizado como uma indicação da capacidade anunciada do CPU em relação à capacidade anunciada de outros modelos de CPU. 0 valor de capacidade alternativa aplica-se a cada um dos CPU na configuração. Isto é, todos os CPU na configuração têm a mesma capacidade alternativa.
Factores de Ajustamento de Capacidade de CPU de Multiprocessamento Alternativa:
Iniciando com bytes 0 e 1 da palavra N+l, o SYSIB contém uma série de campos de dois bytes contíguos, incluindo cada campo um inteiro binário sem sinal de 16 bits, utilizado para formar um factor (fracção) de ajustamento para o valor contido no campo de capacidade de CPU alternativa. Uma tal fracção é desenvolvida utilizando o valor (V) do primeiro campo de dois bytes de acordo com um dos seguintes métodos: • Se V estiver no intervalo 0<V<100, indica-se um denominador de 100 que produz uma fracção de V/100. 51 • Se V estiver no intervalo 101<V<255, indica-se um denominador de 255 que produz uma fracção de V/255. • Se V estiver no intervalo 255<V<65.536, indica-se um denominador de 65.536 que produz uma fracção de V/65.536
Assim, a fracção representada por cada campo de dois bytes é, então, desenvolvida dividindo-se o conteúdo de um campo de dois bytes pelo denominador indicado. 0 número de campos de factor de ajustamento alternativo é menos um do que o número de CPU especificado no campo de contagem de CPU total. Os campos de factor de ajustamento alternativo correspondem a configurações com números crescentes de CPU no estado configurado. 0 primeiro campo de factor de ajustamento alternativo corresponde a uma configuração com dois CPU no estado configurado. Cada campo de factor de ajustamento alternativo sucessivo corresponde a uma configuração com um número de CPU no estado configurado que é mais um do que o para o campo precedente. SYSIB 15.1.2 (Topologia de Configuração) 0 SYSIB 15.1.2 tem o formato mostrado na FIG. 10. Os campos têm os seguintes significados:
Reservado: Os conteúdos de bytes 0-1 da palavra 0, byte 2 da palavra 2 e palavra 3 são reservados e armazenados como zeros. Os conteúdos de palavras N-1023 são reservados e podem ser armazenados como zeros ou podem permanecer inalterados. 52
Comprimento: Bytes 2-3 da palavra 0 contêm um inteiro binário sem sinal de 16-bits cujo valor é a contagem dos bytes de todo o SYSIB 15.1.2. 0 comprimento de, apenas, a lista de topologia é determinado subtraindo-se 16 do valor de comprimento em bytes 2-3 da palavra 0. N na FIG 10 é determinado pelo cálculo da fórmula N = Comprimento/4.
Magl-6: Palavra e bytes 0-1 de palavra constituem seis campos de um byte, em que o conteúdo de cada byte indica o número máximo de entradas de lista de topologia tipo recipiente (TLE) ou TLE de tipo CPU no correspondente nivel de encadeamento. As TLE de tipo CPU só são sempre encontradas no nivel Magl. Além disso, o valor Magl também especifica o número máximo de CPU que pode ser representado por uma TLE de tipo recipiente do nivel Mag2. Quando o valor do nivel de encadeamento é maior que um, níveis de encadeamento de contenção acima do nível Magl são ocupados apenas por TLE de tipo recipiente. Uma mudança dinâmica da topologia pode alterar o número de TLE e o número de CPU no nível Mag 1, mas os limites representados pelos valores dos campos Magl-6 não se alteram numa família de modelos de máquinas. A topologia é uma lista estruturada de entradas onde uma entrada define um ou mais CPU ou, então, está envolvida com a estrutura de encadeamento. Em seguida, ilustra-se o significado dos campos de magnitude:
Quando todos os CPU da máquina são entidades homólogas e não existe qualquer organização de contenção, além da totalidade do próprio complexo de processamento central, o valor do nível de 53 encadeamento é 1, Magl é o único campo de magnitude nao nulo e o número de TLE de tipo CPU armazenado não excede o valor de Magl.
Quando todos os CPU da máquina são subdivididos em grupos de entidades homólogas, para que exista um nivel de contenção, o valor do nivel de encadeamento é 2, Magl e Mag2 são os únicos campos de magnitude não nulos, o número de TLE tipo recipiente armazenadas não excede o valor Mag2 e o número de TLE de tipo CPU armazenadas em cada recipiente não excede o valor MAG1. Os Mag3-6 bytes também passam, do mesmo modo, a ser utilizados (actuando da direita para a esquerda) quando o valor do nivel de encadeamento cai no intervalo 3-6 .
Mnest: Byte 3 da palavra 2 especifica o nível de encadeamento da topologia à qual a configuração pode ser estendida ao mesmo tempo que se permite a sobrevivência do programa hóspede. 0 máximo valor de Mnest é seis; o mínimo é um.
Se Mnest for um, não há, na verdade, estrutura de encadeamento de TLE. Magl é o único campo não nulo no intervalo de Magl-6 e só os TLE de tipo CPU é que estão representados na lista de topologia. 0 valor Mnest indica o número de valores de magnitude não nulos começando com o campo de magnitude no byte de palavra 2 (Magl), continuando para a esquerda quando MNest é maior que um e com os campos de magnitude restantes armazenados como zeros. 0 valor de Mnest é o encadeamento máximo possível. Nenhuma mudança de configuração dinâmica excede este limite.
Lista de Topologia: Palavras da FIG. 10 no intervalo de 4 a N-l especificam uma lista de uma ou mais entradas (TLE) de lista de topologia. Cada TLE é um campo de oito bytes ou dezasseis 54 bytes; assim, N é um número par de palavras e um corolário é que uma TLE inicia-se sempre numa fronteira de palavra dupla.
Entradas de Lista de Topologia: A primeira TLE na lista de topologia começa no nível de encadeamento igual a Mnest-1. Toda a lista de topologia representa a configuração do emissor da instrução de STSI especificando o SYSIB15.1.2; não se utiliza qualquer entrada de TLE de recipiente mais exterior dado que seria redundante com toda a lista inteira e toda a configuração.
Por conseguinte, o nível de encadeamento mais elevado pode ter mais do que um único recipiente de entidades homólogas.
As FIGs. 11 e 12 ilustram os tipos de TLE, em que os campos têm as definições seguintes: Nível de Encadeamento (NL) : Byte 0 de palavra 0 especifica o nível de encadeamento de TLE. NL Significado 0 A TLE é uma TLE de tipo CPU. 1 A TLE é uma TLE de tipo recipiente. A primeira TLE de tipo recipiente armazenada numa lista de topologia ou num recipiente pai tem um ID de recipiente no intervalo 1-255. Se existirem recipientes irmãos dentro do mesmo pai, continuam numa ordem ascendente de ID de recipiente, que pode ou não ser consecutiva, até um valor máximo de 255. 0 6-FF Reservado. TLE irmãs têm o mesmo valor de nível de encadeamento que é equivalente ou ao valor de nível de encadeamento menos um do que 55 a TLE progenitora imediata ou o valor de Mnest menos um, porque o progenitor imediato é a lista de topologia e não uma TLE.
Reservado, 0: Para uma TLE tipo recipiente, bytes 1-3 da palavra 0 e bytes 0-2 da palavra 1 são reservados e armazenados como zeros. Para uma TLE de tipo CPU, bytes 1-3 da palavra 0 e bits 0-4 da palavra 1 são reservados e armazenados como zeros. ID de Recipiente:
Byte da palavra 1 de uma TLE tipo recipiente especifica um inteiro binário sem sinal não nulo de 8-bits cujo valor é o identificador do recipiente. O ID de recipiente para uma TLE é único dentro do mesmo recipiente pai.
Dedicado (D):
Bit 5 da palavra 1 de uma TLE tipo CPU, quando um, indica que um ou mais CPU representados pela TLE são dedicados. Quando D é zero, o ou os CPU da TLE não são dedicados.
Polarizaçao (PP):
Bits 6-7 da palavra 1 de uma TLE tipo CPU especifica o valor da polarização e, quando a polarização é vertical, o grau de polarização vertical também chamado prerrogativa (elevada, média, baixa) dos correspondentes CPU representados pela TLE. Utilizam-se os seguintes valores: 56
Significado de PP: 0 0 ou os CPU representados pela TLE são polarizados horizontalmente. 1 0 ou os CPU representados pela TLE são polarizados verticalmente. A prerrogativa é baixa. 2 0 ou os CPU representados pela TLE são polarizados verticalmente. A prerrogativa é média. 3 0 ou os CPU representados pela TLE são polarizados verticalmente. A prerrogativa é elevada. A polarização é apenas significativa numa configuração de multiprocessamento lógico e virtual que utilize processadores anfitriões partilhados e aborda como é que o recurso atribuído a uma configuração é aplicado através dos CPU da configuração. Quando se utiliza polarização horizontal, a cada CPU de uma configuração é garantido, aproximadamente, a mesma quantidade de recurso. Quando se utiliza polarização vertical, os CPU de uma configuração são classificados em três níveis de prerrogativa de recurso: elevada, média e baixa.
Tanto a reinicialização do subsistema como a execução bem sucedida da ordem de arquitectura definida como SIGP especificando o modo ESA/390 colocam uma configuração e todos os seus CPU na polarização horizontal. Os CPU imediatamente
afectados são os que estão no estado configurado. Quando um CPU no estado de espera é configurado, adquire a polarização actual da configuração e provoca uma mudança de topologia dessa configuração a reconhecer.
Um CPU dedicado é polarizado horizontalmente ou verticalmente. Quando um CPU dedicado é polarizado 57 verticalmente, a prerrogativa é sempre elevada. Assim, quando D é um, PP é um binário 00 ou um binário 11.
Tipo de CPU:
Byte 1 da palavra 1 de uma TLE tipo CPU especifica um inteiro binário sem sinal de 8 bits cujo valor é o tipo de CPU de um ou mais CPU representados pela TLE. 0 valor de tipo CPU especifica ou um tipo de CPU primário ou qualquer um dos tipos de CPU secundários possíveis.
Origem de Endereço de CPU:
Bytes 2-3 da palavra 1 de uma TLE tipo CPU especificam um inteiro binário sem sinal de 16 bits cujo valor é o endereço de CPU do primeiro CPU no intervalo de vários CPU representado pela máscara de CPU e cuja presença é representada pelo valor da posição 0 de bit na máscara de CPU. Uma origem de endereço de CPU é divisível uniformemente por 64. O valor de uma origem de endereço de CPU é igual ao armazenado pela instrução STORE CPU ADDRESS (STAP) quando executada no CPU representado pela posição 0 de bit na máscara de CPU. Máscara de CPU:
Palavras 2-3 de uma TLE tipo CPU especificam uma máscara de 64 bits onde cada posição de bit representa um CPU. O valor do campo de origem de endereço de CPU mais uma posição de bit na máscara de CPU iguala o endereço de CPU para o CPU 58 correspondente. Quando um bit de máscara de CPU é zero, o CPU correspondente não é representado pela TLE. 0 CPU não está na configuração ou, então, deve ser representado por outra TLE tipo CPU. Quando um bit de máscara de CPU é um, o CPU correspondente tem os valores de atributo de modificador especificados pela TLE, está na topologia da configuração e não está presente em qualquer outra TLE da topologia.
Assim, por exemplo, se a origem de endereço de CPU for um valor de 64 e a posição 15 de bit da máscara de CPU for um, o CPU 79 está na configuração e tem o tipo de CPU, polarização, prerrogativa e dedicação como especificado pela TLE.
Ordenação de TLE:
Os atributos de modificador que se aplicam a uma TLE do tipo CPU são o tipo de CPU, polarização, prerrogativa e dedicação. A polarização e a prerrogativa (para polarização vertical) são consideradas um único atributo, embora com quatro valores possíveis (horizontal, vertical-elevada, vertical-média e vertical-baixa). É suficiente uma única TLE de CPU para representar até 64 CPU em que todos têm os mesmos valores de atributo de modificador.
Quando existem mais do que 6 4 CPU ou toda a gama de endereços de CPU não está abrangida por uma única origem de endereço de CPU e os atributos de modificador são constantes, uma TLE de CPU irmã separada é armazenada para cada origem de endereço de CPU, quando necessário, em ordem ascendente de 59 origem de endereço de CPU. Cada uma destas TLE armazenada tem, pelo menos, um CPU representado. A acumulação de uma ou mais destas TLE de CPU é chamada um conjunto TLE-CPU.
Quando existem múltiplos tipos de CPU, um conjunto TLE-CPU separado é armazenado para cada um, em ordem ascendente de tipo CPU.
Quando existem múltiplos valores de polarização e prerrogativa, um conjunto TLE-CPU separado é armazenado para cada um, em ordem descendente de valor de polarização e grau (vertical elevada, média, baixa e, depois, horizontal). Quando presentes, todos os conjuntos TLE-CPU de polarização de um dado tipo de CPU são armazenados antes do conjunto TLE-CPU seguinte do tipo de CPU seguinte.
Quando existem amobos CPU dedicados e não dedicados, um conjunto TLE-CPU separado é armazenado em cada um, aparecendo os dedicados antes dos não dedicados. Todas as TLE são ordenadas assumindo-se uma primeira travessia em profundidade onde a ordem de classificação do maior ao menor é a seguinte:
1. Tipo CPU a. Valor de tipo CPU mais baixo b. Valor de tipo CPU mais elevado 2. Prerrogativa-Polarização a. Elevada vertical b. Média vertical 60 c. Baixa vertical d. Horizontal 3. Dedicação (quando aplicável) a. Dedicado b. Não dedicado A ordenação por origem de endereço CPU e atributos de modificador de TLE de CPU irmã dentro de um recipiente pai é feita de acordo com a lista seguinte, a qual continua da mais elevada para a mais baixa. 1. Conjunto TLE-CPU de valor de tipo CPU mais baixo, elevada vertical, dedicado. 2 . Conjunto TLE-CPU de valor de tipo CPU mais baixo, elevada vertical, não dedicado. 3. Conjunto TLE-CPU de valor de tipo CPU mais baixo, média vertical, não dedicado. 4. Conjunto TLE-CPU de valor de tipo CPU mais baixo, baixa vertical, não dedicado. 5. Conjunto TLE-CPU de valor de tipo CPU mais baixo, horizontal, dedicado. 6 . Conjunto TLE-CPU de valor de tipo CPU mais baixo, horizontal, nao dedicado. 7 . Conjunto TLE-CPU de valor de tipo CPU mais elevado, elevada vertical, dedicado. 8. Conjunto TLE-CPU de valor de tipo mais elevado, elevada vertical, não dedicado. 9. Conjunto TLE-CPU de valor de tipo mais elevado, média vertical, não dedicado. 61 10. Conjunto TLE-CPU de valor de tipo mais elevado, baixa vertical, não dedicado. 11. Conjunto TLE-CPU de valor de tipo mais elevado, horizontal, dedicado. 12. Conjunto TLE-CPU de valor de tipo mais elevado, horizontal, não dedicado.
Outras Regras de TLE:
Uma TLE tipo recipiente está localizada em niveis de encadeamento no intervalo de 1-5. Uma TLE tipo CPU está localizada no nivel de encadeamento 0. 0 número de TLE tipo recipiente irmã numa lista de topologia ou um dado recipiente pai não excede o valor do byte de magnitude (Mag2-6) do nivel de encadeamento correspondente às irmãs. O número de CPU representado por uma ou mais TLE de tipo CPU do recipiente pai não excede o valor do byte de magnitude Magl. 0 conteúdo de uma TLE é definido da seguinte forma:
Se uma TLE for uma TLE tipo recipiente, o conteúdo é uma lista que segue imediatamente a TLE progenitora, compreendida por uma ou mais TLE filhas e cada TLE filha tem um nivel de encadeamento de menos um do que o nivel de encadeamento da TLE progenitora ou fim da lista de topologia. Se uma TLE for uma TLE tipo CPU, o conteúdo é um ou mais CPU, como identificado pelos outros campos de uma TLE CPU. 62
Quando a primeira TLE num nível de encadeamento for uma entrada de CPU, o nível 0 de encadeamento máximo foi atingido.
Nota de Programação:
Descreve-se um processo de exame possível de uma lista de topologia. Antes de um exame de uma lista de topologia ser iniciado, o apontador TLE actual é inicializado para referenciar a primeira ou TLE de topo na lista de topologia, o apontador da TLE anterior é inicializado para nulo e, depois, as TLE são examinadas numa ordem decrescente. À medida que o exame da lista de topologia continua, o apontador de TLE actual é avançado pelo incremento do apontador de TLE actual pelo tamanho da TLE actual para a qual aponta. Um TLE tipo recipiente é avançado, adicionando oito ao apontador de TLE actual. Uma TLE tipo CPU é avançada adicionando dezasseis ao apontador de TLE actual. 0 processo de avançar o apontador de TLE actual inclui guardar o seu valor como o apontador de TLE anterior imediatamente antes de ser incrementado. Se a lista de topologia não tiver TLE, o exame de TLE não é realizado. 0 processo de exame é delineado nos passos seguintes: 1. Se o nível de encadeamento de TLE actual for zero e o nível de encadeamento de TLE anterior for nulo ou um, o TLE actual representa a primeira TLE tipo CPU de um grupo de uma ou mais TLE tipo CPU. 0 programa deverá realizar uma qualquer acção apropriada para quando um novo grupo de um ou mais CPU for observado em primeiro lugar. Ir para o passo 5. 63 2. Se o nível de encadeamento de TLE actual for zero e o nível de encadeamento de TLE anterior for zero, a TLE actual representa um TLE tipo CPU subsequente de um grupo de TLE tipo CPU que representa irmãs dos CPU observado previamente nos passos 1 ou 2. 0 programa deverá realizar uma qualquer acção apropriada para quando a dimensão de um grupo irmão existente de um ou mais CPU for aumentada. Ir para o passo 5. 3. Se o nível de encadeamento de TLE actual não for zero e o nível de encadeamento de TLE anterior for zero, a TLE anterior representa uma última ou única TLE tipo CPU de um grupo de uma ou mais TLE tipo CPU. 0 programa deverá realizar uma qualquer acção apropriada para quando um grupo existente de um ou mais CPU for completado. Ir para o passo 5. 4. Ir para o passo 5.
Por eliminação, este será o caso em que o nível de encadeamento de TLE actual não é zero e o nível de encadeamento de TLE anterior não é zero. Se 0 nível de encadeamento de TLE actual for menor do que o nível de encadeamento de TLE anterior, a direcção de travessia da lista de topologia é de aproximaçao de uma TLE tipo CPU. Se o nível de encadeamento de TLE actual for maior do que o nível de encadeamento de TLE anterior, a direcção de travessia da lista de topologia afasta-se de uma TLE tipo CPU. As TLE de tipo recipiente estão a ser atravessadas conduzindo a (1) outro grupo de TLE tipo CPU que são um grupo separado na topologia global ou (2) para o fim da lista de topologia. Em qualquer caso, não é necessário 64 qualquer processamento especial para além de avançar para a TLE seguinte. 5. Avançar para a posição de TLE seguinte com base no tipo de TLE actual. Se o apontador de TLE actual avançado for equivalente ao fim da lista de topologia: a. Não existem mais TLE de qualquer tipo. b. Se o nivel de encadeamento de TLE anterior for zero, o programa deverá realizar uma qualquer acção apropriada para quando um grupo existente de um ou mais CPU for completado. c. 0 exame está completo.
De outro modo, ir para o passo 1.
Numa implementação exemplificativa, FIG. 16, um sistema informático compreende duas estruturas físicas (Estrutura 1 e Estrutura 2). Cada estrutura contém duas placas lógicas (Placa 1 e Placa 2), armazenamento principal (Memória) e adaptadores 1/0 (Canais 1 de 1/0 e Canais 2 de 1/0) para comunicar com dispositivos periféricos e redes. Cada Placa contém dois módulos multichip (Mod 1, Mod 2, Mod 3 e Mod 4) . Cada módulo multichip contém dois processadores (CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7 e CPU8). Cada módulo também contém também uma Cache de nivel 2 (Cache 1, Cache 2, Cache 3 e Cache 4). Cada processador (Unidade de Processamento Central ou CPU), inclui uma Cache de nível 1 e Memória Tampão de Tradução de Endereços (TLB) . As memórias tampão TLB abordam informação de tradução durante a tradução dinâmica de endereços. 65
De acordo com a invenção, FIGS. 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 6, 7, 8 e 9 mais interiores, dado que os CPU de cada módulo estão na vizinhança imediata uns dos outros. Uma vez que os módulos são empacotados em placas, os módulos das respectivas placas são atribuídos a recipientes 4 e 5 de nível seguinte. 0 agrupamento de proximidade mais elevada seguinte é a Estrutura. As placas de uma estrutura são atribuídas a um recipiente representando a estrutura (recipientes 2 e 3). 0 sistema completo é representado pelo recipiente 1.
Pode ver-se que dois CPU no mesmo módulo, tais como CPU1 e CPU2, têm uma relação topológica ou distância entre si mais próxima e que ambos residem num recipiente (recipiente 6) e nenhuma fronteira do recipiente é atravessada quando só esses CPU estão envolvidos. No entanto, se CPU1 e CPU2 estiverem envolvidos, existem 4 fronteiras de recipiente atravessadas. 0 CPU1 no recipiente 6 é separado pelo recipiente 4, 5 e 9 do CPU8. Por conseguinte, ao conhecer a estrutura do recipiente, um utilizador consegue ter uma vista da topologia do sistema.
Evidentemente, num sistema logicamente repartido, os CPU podem ser partilhados entre sistemas operativos, como previamente discutido. Por conseguinte, se a uma partição lógica forem atribuídos 3 CPU lógicos, cada CPU lógico atribuído a 20% de cada um de três CPU reais, a partição terá um melhor desempenho se os 3 CPU reais estiverem numa vizinhança mais imediata uns dos outros, dado que a comunicação entre os CPU e recursos do CPU (cache e memória, por exemplo) terá um melhor desempenho. Neste exemplo, CPU1 e CPU2 numa partição 66 experimentarão menos destruição de linhas cache na Cache 1 do que se esses dois CPU fossem o CPU1 e CPU8.
No Exemplo, é criada uma partição incluindo CPU1, CPU2 e CPU3. Um programa a funcionar na partição emite uma instrução STSI e uma tabela de SYSIB 15.1.2 (FIG.10) é devolvida ao programa. Neste caso, a partição compreende um recipiente 6 e recipiente 7 e, por conseguinte, existem dois niveis de encadeamento. Os valores da tabela de SYSIB são: 0 campo Mnest é configurado para 4 indicando que a topologia inclui 4 niveis de encadeamento, o que é um encadeamento absoluto máximo para o modelo e podem ou não ser completamente explorados em qualquer lista de topologia arbitrária, dependendo da atribuição de recurso à configuração de hóspedes emitindo STSI e como é que os recursos são atribuídos a outras configurações de hóspedes do sistema. 0 campo Magl é configurado para 2 indicando a disponibilidade de 2 CPU no primeiro nível mais primitivo. 0 campo Mag2 é configurado para 2 indicando a disponibilidade de 2 recipientes de segundo nível (Módulo). 0 campo Mag3 é configurado para 2 indicando a disponibilidade de 2 (Placas) de terceiro nivel. 0 campo Mag4 é configurado para 2 indicando a disponibilidade de 2 (Estruturas) de quarto nível 67
Neste exemplo, os 3 CPU estão contidos em dois módulos na mesma placa, por conseguinte, proporcionam-se as 4 entradas de TLE seguintes: 1. NL = 1; CtnrID = 1 (recipiente 6) 2. NL = 0; tipo CPU = 1 (o tipo de CPU); Origem de End.
CPU = 0; Máscara de CPU 0....... 11 (CPU1 e CPU2 dos CPU endereçados) 3. NL = 1, CtnrID = 2 (recipiente 7) 4. NL = 0, tipo CPU = 1 (o tipo de CPU); Origem de End.
CPU = 4; Máscara de CPU 0......10 (CPU3 dos CPU endereçados)
Assim, o programa tem uma representação da topologia física com base no recipiente e TLE de CPU devolvidas. PERFORM TOPOLOGY FUNCTION (PTF)
No que se refere à FIG. 13, uma instrução PERFORM TOPOLOGY FUNCTION (PTF) compreende, de um modo preferido, um código de operação e um campo de registo RI identificando um primeiro operando. O conteúdo do registo geral identificado por RI especifica um código de função nas posições 56-63 de bit, como ilustrado na Figura 14.
Os códigos de função definidos são como se seguem: FC Significado 0 Pedir polarização horizontal. 1 Pedir polarização vertical. 2 Verificar estado de mudança de topologia. 68 Códigos de função nao definidos no intervalo 0-255 são reservados para futuras extensões.
Depois da conclusão, se se definir um código de estado 2, um código de razão é armazenado nas posições 48-55 de bit do registo geral RI. São ignorados os bits 16-23 e 28-31 da instrução.
Operação do Código de Função 0: A execução termina com um código de estado por qualquer das razões seguintes e (códigos de razão):
Nenhuma razão especificada (0). A configuração pedida já está polarizada (1) horizontalmente.
Uma mudança de topologia já está em andamento (2).
De outro modo, é iniciado um processo para colocar todos os CPU na configuração na polarização horizontal. A conclusão do processo é assíncrona no que se refere à execução da instrução e pode ou não pode ser terminada quando a execução da instrução termina. Código de Estado Resultante: 0 Mudança de topologia iniciada 1- 2 pedido rejeitado 69 3-
Operaçao do Código de Função 1: A execução termina com um código de estado 2 por qualquer das razões seguintes e (códigos de razão):
Nenhuma razão especificada (0). A configuração pedida já está polarizada verticalmente (1).
Uma mudança de topologia já está em andamento (2).
De outro modo, é iniciado um processo para colocar todos os CPU na configuração em polarização vertical. A conclusão do processo é assíncrona no que se refere à execução da instrução e pode ou não ser terminada quando termina a execução da instrução. Código de Estado Resultante: 0 Mudança de topologia iniciada 1- 2 Pedido rejeitado 3-
Operação de Código de Função 2: O estado de relatório de mudança de topologia pendente é verificado e a instrução termina com o conjunto de código de estado. 70 Código de Estado Resultante: 0 1 2 3
Relatório de mudança de topologia nao pendente Relatório de mudança de topologia pendente
Uma mudança de topologia é qualquer alteração em que o conteúdo de um SYSIB 15.1.2 é diferente do conteúdo do SYSIB 15.1.2 antes da mudança de topologia.
Um estado de relatório de mudança de topologia pendente é criado quando um processo de mudança de topologia termina. Um estado de relatório de mudança de topologia pendente é libertado da configuração quando se executa qualquer um dos seguintes: A execução de PERFORM TOPOLOGY FUNCTION especifica o código de função 2 que termina com o código de estado 1. A STORE SYSTEM INFORMATION para SYSIB 15.1.2 é executada com sucesso por qualquer CPU na configuração. É realizada a reinicialização do subsistema.
Condições especiais:
Se as posições 0-55 de bits do registo geral RI não forem zeros, é reconhecida uma excepção de especificação. Se se especificar um código de função não definido, é reconhecida uma excepção de especificação. 71
Excepções de Programa:
Operação (Não está instalado um recurso de topologia de configuração)
Operação privilegiada Especificação UM AMBIENTE EXEMPLIFICATIVO DE UNIDADE DE PROCESSAMENTO: À medida que as arquitecturas de servidores de qualidade elevada aumentam o número de processadores físicos e as velocidades de processador continuam a melhorar, o "ninho" do processador necessário para construir grandes máquinas continua a ser feito de blocos de construção mais pequenos com uma natureza mais nodal. Por exemplo, enquanto a cache L2 de uma máquina z990 ou z9 é completamente coerente em termos de cache, os modelos completamente povoados têm, na verdade, quatro (4) L2 separadas que estão ligadas por uma estrutura para apresentar a aparência de uma única cache L2. A penalização por sair do nó para resolver uma perda de cache continua a aumentar. Por exemplo, resolver uma perda de LI numa L2 remota é mais dispendioso do que resolvê-la na L2 local. Perder, num CP, normalmente no chip, uma cache LI privada é, para começar, dispendioso e ter que percorrer todo o caminho até à memória pode parecer uma eternidade. 0 aumento na velocidade da memória e as ligações à mesma não conseguem acompanhar os aumentos na velocidade dos processadores. Embora se pudesse experimentar compactar tudo "no chip" ou semelhante, o consumo de energia e questões de arrefecimento contrariam esta solução. 72
Com a introdução da z900, a LPAR fica ciente da topologia da máquina e começa a optimizar a alocação de partição lógica CP e recursos de armazenamento aos recursos físicos. Aperfeiçoamentos das capacidades para optimizar de novo, dinamicamente, atribuições de recurso de partição lógica foram introduzidos com a z9GA-l, principalmente em apoio da reparação de livros concorrentes. 0 novo apoio aqui discutido trata de fazer com que o software zSeriesOS esteja verdadeiramente ciente da topologia da máquina, apresentada como uma topologia de partição lógica, para, então, proporcionar repartição de afinidade em relação à colocação de CPU na estrutura de livro CEC.
Pode-se pensar em como é que a LPAR da zSeries gere, actualmente, partições lógicas partilhadas polarizadas horizontalmente. Isto é, o peso do processamento para a partição lógica é igualmente dividido entre todos os CP lógicos on-line na partição lógica. Este apoio introduz uma nova forma facultativa de polarização para gerir os CP lógicos partilhados de uma partição lógica chamada polarização vertical.
Quando uma partição lógica escolhe uma execução no modo vertical, o software emite uma nova instrução para informar o hypervisor zSeries disto e o hypervisor mudará a forma de enviar a partição lógica.
Dependendo da configuração da partição lógica vertical, os processadores lógicos terão uma polaridade elevada, média ou baixa. A polaridade descreve a quantidade de partilha de processadores físicos a que processadores lógicos verticais têm direito. Os clientes definem ponderações para partições lógicas 73 que definem, efectivamente, a quantidade de ciclos de processadores físicos a que cada partição lógica numa máquina tem direito. A polaridade é medida pela relação entre uma ponderação actual da partição lógica versus o número de processadores lógicos configurados para a partição lógica. Os processadores de elevada polaridade têm perto de 100% de partilha de CPU. Os processadores de Polaridade Média têm > 0 a 99% de partilha e os processadores de baixa polaridade tem 0% de partilha (ou muito próximo disso). Um processador físico será atribuído aos CP lógicos de polaridade elevada para que a execução seja muito semelhante à de CP dedicados, mas o CP de polaridade elevada partilhado pode, ainda, desistir do recurso físico e permitir que outros CP partilhados utilizem os seus ciclos em excesso. 0 facto importante, aqui, é que o software vê a topologia lógica e tenta explorar os CP lógicos com polarização elevada para as suas filas de trabalho.
Por exemplo, um cliente configura um processador de três vias com 2 partições lógicas, tendo cada partição 2 processadores lógicos e cada com um peso de 50. Se a primeira partição lógica se se definir a si própria como vertical, terá um 1 CP lógico de polaridade média e 1 de elevada.
Deve salientar-se que, quando uma partição lógica escolhe uma execução no modo vertical, a execução de toda a partição lógica é em modo vertical. Isto inclui todos os seus processadores secundários, tais como zAAP (IFA) e/ou zIIP. E da responsabilidade do cliente definir ponderações para todos os tipos de processador para estas partições lógicas que obterão o nível desejado de processamento vertical para cada tipo. 74
Apoio de Topologia de Partição Lógica o Estabelecer uma infra-estrutura para uma topologia nodal de partição lógica. o Fazer as mudanças necessárias para algoritmos de atribuição nodal das LPAR para partições horizontais existentes necessárias para proporcionar uma topologia válida. o Proporcionar simulação de instruções para o novo bloco de informação de topologia de 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 fisica ou lógica para determinar se uma mudança de topologia é necessária. Estas podem ocorrer quando:
Um CP físico é adicionado ou removido da configuração
Um CP lógico é adicionado ou removido da configuração
Uma partição lógica é activada
Uma partição lógica é desactivada
Os pesos de partição lógica são mudados a partir da HMC/SE
Iniciação de software muda o peso de uma participação lógica 75
Uma participação lógica é reinicializada (comutada para horizontal)
Uma participação lógica comuta para modo ESA/390 (comutada para horizontal) ALGORITMOS DO AMBIENTE:
Uma topologia deve ser atribuída a uma partição lógica quando é, em primeiro lugar, activada e, depois, 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 nova e conveniente estrutura de dados para possibilitar consultas mais fáceis pelo novo processamento de STSI, bem como para limitar o processamento o melhor possível quando se fazem mudanças de configuração. Esta nova estrutura também permite completar o processamento de mudança de topologia em múltiplos passos com a serialização necessária para cada passo sem introduzir vistas inconsistentes da topologia na partição lógica.
Atribuição de Topologia 0 modo de escolha da topologia lógica não é importante para esta divulgação. Basta dizer que se determina quantos, de cada um dos tipos de processadores lógicos, são necessários e que nós ou livros necessitam para serem atribuídos. Para uma partição de modo vertical, isto significa a contagem de processadores de elevada vertical, média vertical e baixa vertical para cada tipo de processador. 76
Atribuição de valores de Polarizaçao a CP lógicos
Depois de determinadas as contagens, as atribuições de polarização são feitas a partir do endereço de CP lógico on-line mais baixo do tipo cp para o mais elevado na ordem de (1) todas elevadas verticais, (2) todas médias verticais e (3) todos baixas verticais. A ordem em que isto é feito é arbitrária e são possíveis outras ordens de selecção.
Mapeamentos de instrução de "STORE SYSTEM INFORMATION"
Adicionar 3 estruturas para mapear a resposta de 15.1.2 1. Mapeamento para STSI mapeando a topologia 15.1.2, o bloco de respost, syibkl512 car(4096) baseado (*), 3 * car (2), 3 syibkl512_length fixo(16), comprimento 3 sy±bkl512_mag6 fixo(8), encadeamento de nível 6 3 syibkl512_mag5 fixo(8), 5 3 syibkl512_mag4 fixo(8), 4 3 syibkl512_mag3 fixo (8), 3 3 syibkl512_mag2 fixo(8), 2, nós 3 syibkl512_magl fixo(8), 1, cpus 3 * car (1), 3 syibkl512_mnest fixo (8), nível de encadeamento 3 * car(4), 3 syibk!512_topology_list car(O); lista de topologia 77
Del 2 . Mapeamento para um TLE tipo recipiente para STSI 15.1. 1 sybk_vcm_container car(8), baseado (*) 3 sybknl fixo(8), nível de encadeament 3 * car (3) 3 * car (1), 3 * car(2), 3 sylbk_recipiente_id fixo (8); id nó
Del 3 . Mapeamento para uma TLE tipo CPU para STSI 15.1.2 1 syibk_vcm_CPU car (16), baseado(*). 3 syibknl2 fixo(8), nível de encadeamento 3 * car (3), 5 syibk_ded_polarization bit ( 8) , byte vem 5 * bit (5), 5 syibk_dedicated bit (1), bit dedicado 5 syibk_polarization bit (2), bits de polarização 3 syibk_CPUtype fixo(8), tipo de CPU 3 syibk_CPUaddrorg fixo(16), origem de endereço 3 syibk_CPUmask bit (64); entrada de máscara de cpu TOPBK - Topologia de Partição
Um resumo de uma topologia de partição lógica é mantido actual neste bloco pelas rotinas de atribuição nodal. Os dados neste bloco são ordenados de modo a que o processamento STSI possa fazer uma passagem de toda a estrutura para criar a resposta de topologia de partição lógica ao programa, conservando a ordem e separação de entradas de CPU como pedido pela arquitectura. 78
Consiste num vector tridimensional (nó, tipo de cp, classificação de polarização) com uma máscara de CPU de 64 bits por entrada.
Uma segunda área de trabalho, TOP_WORKING, é incluída para utilizar na actualização da topologia.
DECLARE 1 TOPBK BASED BDY(DWORD), 3 TOP_CURRENT, 5 TOPCPUMASK(1):MAXNODE, /* Cada um de 1-4 nós */
0:CPUTMAX, /* índice de tipo CP */ 0:3) /* 4 classificações de topologia possíveis quando a partição lógica é vertical. Existem apenas 2 classificações quando a partição é horizontal. */ BIT(64), /* Máscara dos CPU lógicos que são abrangidos por esta classificação. */ 3 TOP_WORKING CHAR(LENGTH(TOP_CURRENT))/* Área de trabalho para construir nova topologia */ 79 Τ03Ρ0 - Tradução de Topologia de Partição
Estas tabelas de tradução "constante" são utilizadas pelas rotinas de atribuição nodal que constroem a topologia (mapeado por TOPBK) e processamento de STSI que lê a topologia. /'kkk~k~k~k~k~k~k~k~k~k~kkk'k'k'kkkkk'k'k'kkkkk~k~k/ Γ vectores de tradução de STSI:*/
Jkkkkkkkkkk-kkkkkkkkkkkkkkkkkkkkkJ
DECLARE 1 TOPVERT(0:3) BIT(8) /* Para partições verticais, traduz o índice de classificação acima para os valores D (dedicação) e PP (polarização) arquitectados para serem devolvidos para este grupo de CP nos dados STSI. */ STATIC INIT ('00000 'b||'1'b||PPVH /* Classificação 0:
Dedicado elevada Vertical */ '00000 'b|| ' 0 'b||pPVH, /* Classificação 1:
Partilhado elevada Vertical */ "00000 'b|| '0 'b||pPVM,/* Classificação 2: partilhado Média Vertical */ "00000 'b|| "0 "b||PPVL) , /* Classificação 3:
Partilhado Baixa Vertical */ 3* BIT (5), /* Não utilizado, necessita alinhamento de byte para vectores de bit */ 3 TOPDPP BIT(3), /* Valores D, PP reais a utilizar */ 1 TOPHOR(0:1) BIT(8) /* Para partições horizontais, traduz o índice de classificação acima para os valores D (dedicação) e PP (polarização) arquitectados para serem 80 devolvidos para este grupo de CP nos dados STSI. Deve salientar-se que apenas as primeiras duas classificações podem ser utilizadas para uma partição horizontal. */ STATIC INIT ('00000'b'1'b||.PPH, /* Classificação 0:
Dedicado Horizontal * / '00000 'b|| 0 ' || IPPH) , /* Classificação 1: Partilhado
Horizontal */ 3* BIT(5), /* Não utilizado, necessita alinhamento de byte para vectores de bit*/ 3 TOPDPP BIT(3) /* Valores D, PP reais para utilizar */ /************************** j /* Vector de tradução NDI */ 1 TOPDPP2CLASS(0:7)FIXED/* Utilizado pelas rotinas de atribuição nodal para criar a informação de topologia. LPDPP é utilizado como um índice neste vector para determinar qual o índice de classificação que o CP lógico deve utilizar. Este vector é utilizado para partições horizontais e verticais */ STATIC INIT(1, /* Partilhado, horizontal */ 3, /* Partilhado , baixa vertical */ 2, /* Partilhado, média vertical */ 1, /* Partilhado, elevada vertical */ 0, /* Dedicado, horizontal */ 0, /* Não aplicável V 0, /* Não aplicável */ 0),/* Dedicado, elevada vertical */ 81 3*CHAR(4) ; /* Forçar para ser item não simples */
Bloco Processador Lógico:
Uma codificação de 2 bits de polarização de partição pode ser seguida para cada processador lógico para reflectir a sua polarização. Ao agrupar isto com uma indicação de 1-bit de dedicação permite-se uma imagem de polaridade completa para um processador lógico em 3-bits: 3LPDPP 611(3), /* Polarização, incluindo dedicação */ 4LPDED BIT(l), /*=1, CP lógico é dedicado */ 4LPPP BIT(2), /* Polarização do Processador */ /* Codificações para Polarização de Processador */ PPH BIT(2) horizontalmente */ PPVL BIT(2) CONSTANT verticalmente -Baixa */ PPVM BIT(2) CONSTANT verticalmente -Média */ PPVH BIT(2) CONSTANT verticalmente - Elevada */ CONSTANT( '00 'B), ( '01 Έ) , (Ί0Έ), ( Ί1Β) , /-
Polarizado
Polarizado
Polarizado
Polarizado
Actualizar Bloco de Topologia
Remover cópia Local da máscara de topologia de CPU DO para todo o CP lógico na partição lógica de destino 82
IF o CP lógico estiver on-line THEN DO índice de polaridade = índice de polaridade apropriado para o valor de polarização de CP lógicos de acordo com o valor de polarização traduzido para o vector de índice de polaridade
Cópia local da máscara de topologia de CPU (CPU_adress, nó, cptype, índice de Polaridade)= ON
END
END
IF o novo bloco de topologia NOT = bloco de topologia actual para partição THEN
Definir bit de relatório de mudança de topologia e copiar a nova topologia para a actual.
Simulação de Instrução para STSI 15.1.2
Nos mapeamentos de syibk para o bloco de resposta de
STSI 15.1.2, uma TLE tipo recipiente e uma TLE tipo CPU foram adicionadas. Essencialmente, os dados devem ser devolvidos ao recipiente (s) , em que a entrada no nível mais baixo é uma TLE tipo CPU. Pode pensar-se nisto como um vector de vectores com base em como se tem subdividido ou alocado os recursos da partição lógica. No caso da forma de realização preferida, cada recipiente é, essencialmente, um nó com um nível de encadeamento de 1 e inclui TLE(S) tipo CPU, em que que cada TLE tem um nível de encadeamento de 0. As TLE de CPU são ordenadas por tipo de CPU seguido pela sua classificação. As partições verticais têm quatro classificações (dedicada vertical, partilhada elevada 83 vertical, partilhada média vertical & partilhada baixa vertical) e as partições horizontais têm duas classificações (dedicada e partilhada).
Os passos seguintes ilustram um caso de utilização de gestão de uma STSI 15.1.2 depois de todas as verificações antecipadas terem validado a entrada de instrução.
Na forma de realização actual assume-se um máx. de 4 nós e 64 processadores.
Iniciar o varrimento de topbk e, num local variável chamado current_node_value , manter o valor do índice de nó em que se está actualmente. A razão de isto ser necessário é porque se todas as máscaras de 64 bits dentro de um nó forem zero, não é necessário criar uma TLE tipo recipiente para esse nó.
Depois de identificar a primeira entrada não nula dentro de um nó, cria-se, em primeiro lugar, uma entrada de TLE tipo recipiente para esse nó. Dentro da entrada de TLE recipiente, o valor de encadeamento é 1, seguido por 48 bits reservados. Os últimos bits são a ID de nó que é o índice em topbk do nó actual que se está a processar. Depois de criar o TLE tipo recipiente, cria-se uma TLE tipo CPU para a entrada com uma máscara de bits não nula. Dentro desta entrada, o nível de encadeamento é 0, seguido por 24 bits reservados. Os 8 bits seguintes incluem o bit dedicado e o bit de polarização. Se a partição for, actualmente, vertical, preenche-se o valor de polarização e o bit dedicado como se segue:
Classificação 0 em topbk é dedicada vertical, armazena-se um
11 no PP e 1 em D 84
Classificação 1 em topbk é partilhada elevada vertical, armazena-se um 11 em PP e 0 em D
Classificação 2 em topbk é partilhada média vertical,
armazena-se 10 em PP e 0 em D
Classificação 3 em topbk é partilhada baixa vertical,
armazena-se um 01 em PP e 0 em D
Para partições horizontais, apenas as classificações 0 e 1 são actualmente válidas. Preenche-se o bit dedicado e valor de polarização como se segue:
Classificação 0 em topbk é dedicada horizontal, armazena-se um 00 em PP e 1 em D
Classificação 1 em topbk é horizontal partilhada, armazena-se um 00 em PP e 0 em D 0 Tipo CPU, o valor seguinte a ser preenchido na TLE -CPU é apenas o indice do segundo vector dentro de topcpumask em topbk. (0-GP, 2 - IFA, 3 - IFL, 4 - ICF, 1 não é actualmente utilizado). 1. 0 valor seguinte é a origem de endereço de CPU. Este valor é explicitamente armazenado como 0 dado que o 64 é o máximo número de CPU 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 não nulos armazenada no vector encadeado de vectores topcpumask. 85 3. Para cada máscara não nula a seguir à primeira máscara de bits não nula dentro de um nó, cria-se uma entrada de TLE tipo CPU separada e itera-se através deste processo para todos os 4 nós.
Relatório de Mudança de Topologia de Multiprocessador (MTCR) Pendente, se o recurso de topologia-configuração estiver instalado e habilitado (ECB.7 é um) e o endereço SCA para o CPU hóspede não for nulo, a posição 0 de bit é utilizada para lembrar a condição de relatório de mudança de topologia pendente para a configuração. 0 estado de reinicialização de relatório de mudança de topologia pendente é zero. A invenção aqui descrita não está limitada à topologia de processadores. Pode reconhecer-se que a componente básica da invenção pode aplicar-se, de um modo vantajoso, a outros componentes para além dos CPU, incluindo, sem limitação, co-processadores, Caches, TLB, percursos de dados internos, memórias tampão de percursos de dados, memória distribuída e adaptadores de comunicações 1/0, por exemplo.
Lisboa, 7 de Fevereiro de 2012 86
Claims (10)
- REIVINDICAÇÕES 1. Método implementado informaticamente para identificar informação de topologia compreendendo informação de encadeamento de processadores (CPU) de uma configuração hóspede num sistema informático repartido logicamente, compreendendo o método: extrair (2001), por um processador da configuração hóspede, uma instrução STORE SYSTEM INFORMATION para execução, sendo a instrução STORE SYSTEM INFORMATION definida para uma arquitectura informática; executar a instrução STORE SYSTEM INFORMATION, em que a instrução STORE SYSTEM INFORMATION compreende um campo de código de operação e um campo de registo de base, servindo o campo de registo de base para identificar um local na memória de um bloco de informação de sistema (SYSIB), sendo a execução caracterizada por compreender: com base num pedido de informação de topologia da instrução STORE SISTEM INFORMATION, obter (2004) informação de topologia da configuração hóspede, em que a informação de topologia está configurada para incluir um comprimento do SYSIB e informação de encadeamento, compreendendo a informação de encadeamento um agrupamento hierárquico de CPU em recipientes de acordo com a proximidade, compreendendo a informação de encadeamento entradas de lista de topologia (TLE) para cada 1 nível de encadeamento (NL), compreendendo, cada TLE, um indicador de nível de encadeamento (NL) , em que os CPU são especificados por TLE de CPU tendo NL = ' 0 ' e uma hierarquia de estruturas de encadeamento é especificada por TLE de recipiente tendo NL > '0 ' ; e armazenar (2006) a informação de topologia no SYSIB no localização na memória.
- 2. Método de acordo com a Reivindicação 1, em que a instrução STORE SISTEM INFORMATION definida para a arquitectura informática é extraída e executada por uma unidade de processamento central de uma arquitectura informática alternativa, em que o método compreende, ainda, interpretar a instrução STORE SISTEM INFORMATION para identificar uma rotina de software predeterminada para emulação da operação da instrução STORE SISTEM INFORMATION; e em que a execução da instrução STORE SISTEM INFORMATION compreende executar a rotina de software predeterminada para efectuar os passos do método para executar a instrução STORE SISTEM INFORMATION.
- 3. Método de acordo com a Reivindicação 1, em que a informação de topologia está configurada para incluir, ainda, um campo MNest indicando um número máximo de níveis de encadeamento disponíveis para a configuração hóspede, uma pluralidade de indicadores de campo Mag e TLE, em que cada indicador de campo Mag corresponde a um NL, indicando cada campo Mag um 2 número máximo de TLE no NL correspondente, em que a pluralidade de campos Mag compreende um campo Magl correspondendo a um NL = ' 0 ' , em que Magl indica um número máximo de TLE de CPU, em que as TLE compreendem uma ou mais TLE de CPU, consistindo cada TLE de CPU num indicador NL = '0' e numa máscara de CPU para indicar um ou mais CPU.
- 4. Método de acordo com a Reivindicação 3, em que a pluralidade de campos Mag compreende um campo Mag2 correspondendo a NL = '1', um campo Mag3 correspondendo a NL = '2', um campo Mag4 correspondendo a NL = '3', um campo Mag5 correspondendo a NL = '4' e um campo Mag6 correspondendo a NL = '5'.
- 5. Método de acordo com a Reivindicação 3, em que as TLE compreendem, ainda, um ou mais TLE de recipiente, consistindo, cada TLE de recipiente, num indicador NL > '0' e num campo de ID de recipiente.
- 6. Método de acordo com a Reivindicação 3, em que as TLE compreendem uma ou mais primeiras TLE de recipiente consistindo num indicador NL = ' 1' , em que a uma ou mais primeiras TLE de recipiente no SYSIB são, sequencialmente, seguidas por uma ou mais TLE de CPU representando CPU de um recipiente especificado pela ou pelas primeiras TLE de recipiente.
- 7. Método de acordo com a Reivindicação 6, em que as TLE compreendem uma ou mais segundas TLE de recipiente consistindo num indicador NL = '2', em que a uma ou mais segundas TLE de recipiente no SYSIB são, sequencialmente, seguidas por uma ou mais primeiras TLE de recipiente. 3
- 8. Método de acordo com a Reivindicação 3, em que as TLE de CPU compreendem, ainda, um indicador de polarização de processador (PP) para indicar uma polarização horizontal e vertical, em que a polarização horizontal indica os CPU especificados pela TLE de CPU tendo, substancialmente, a mesma quantidade de recursos, em que a polarização vertical indica os CPU especificados pela TLE de CPU tendo uma de entre uma prerrogativa de recursos elevada, uma prerrogativa de recursos média ou uma prerrogativa de recursos baixa relativamente aos outros CPU da configuração hóspede.
- 9. Sistema compreendendo meios adaptados para efectuar todos os passos do método de acordo com qualquer reivindicação de método anterior.
- 10. Programa informático compreendendo instruções para efectuar todos os passos do método de acordo com qualquer reivindicação de método anterior quando o referido programa informático é executado num sistema informático. Lisboa, 7 de Fevereiro de 2012 4
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/972,802 US7734900B2 (en) | 2008-01-11 | 2008-01-11 | Computer configuration virtual topology discovery and instruction therefore |
Publications (1)
Publication Number | Publication Date |
---|---|
PT2290539E true PT2290539E (pt) | 2012-02-15 |
Family
ID=40851709
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PT10184363T PT2290539E (pt) | 2008-01-11 | 2009-01-12 | Identificação de topologia virtual de configuração de computador |
PT09701347T PT2223214E (pt) | 2008-01-11 | 2009-01-12 | Descoberta de topologia virtual de configuração de computador |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PT09701347T PT2223214E (pt) | 2008-01-11 | 2009-01-12 | Descoberta de topologia virtual de configuração de computador |
Country Status (13)
Country | Link |
---|---|
US (4) | US7734900B2 (pt) |
EP (2) | EP2223214B1 (pt) |
JP (1) | JP4768083B2 (pt) |
KR (1) | KR101231557B1 (pt) |
CN (1) | CN101911018B (pt) |
AT (2) | ATE540355T1 (pt) |
CY (1) | CY1112463T1 (pt) |
DK (2) | DK2290539T3 (pt) |
ES (2) | ES2380450T3 (pt) |
PL (2) | PL2223214T3 (pt) |
PT (2) | PT2290539E (pt) |
SI (2) | SI2290539T1 (pt) |
WO (1) | WO2009087232A2 (pt) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8122230B2 (en) * | 2007-12-28 | 2012-02-21 | Intel Corporation | Using a processor identification instruction to provide multi-level processor topology information |
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 |
US9015446B2 (en) * | 2008-12-10 | 2015-04-21 | Nvidia Corporation | Chipset support for non-uniform memory access among heterogeneous processing units |
US9032101B1 (en) | 2008-12-10 | 2015-05-12 | Nvidia Corporation | Chipset support for binding and migrating hardware devices among heterogeneous processing units |
US8171176B2 (en) * | 2010-08-31 | 2012-05-01 | Lsi Corporation | Method for selective replication of physical devices on a virtual self-configuring zoning expander |
WO2012029149A1 (ja) * | 2010-09-01 | 2012-03-08 | 富士通株式会社 | 情報処理プログラム、情報処理装置及び情報処理方法 |
US20120131154A1 (en) * | 2010-11-23 | 2012-05-24 | Wulf Kruempelmann | Synchronous Transport of Business Configuration Data in a Distributed Computing System Environment |
CN103262035B (zh) * | 2010-12-15 | 2017-05-17 | 超威半导体公司 | 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 |
DE102011107169A1 (de) * | 2011-07-13 | 2013-01-17 | Kuka Roboter Gmbh | Steuerung eines Roboter |
US9659266B2 (en) | 2011-07-14 | 2017-05-23 | International Business Machines Corporation | Enterprise intelligence (‘EI’) management in an EI framework |
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 |
US9646278B2 (en) | 2011-07-14 | 2017-05-09 | International Business Machines Corporation | Decomposing a process model in an enterprise intelligence (‘EI’) framework |
JP5836042B2 (ja) * | 2011-10-04 | 2015-12-24 | 株式会社日立製作所 | 管理サーバプログラム |
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 |
US9292318B2 (en) * | 2012-11-26 | 2016-03-22 | International Business Machines Corporation | Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system |
WO2014141419A1 (ja) * | 2013-03-14 | 2014-09-18 | 株式会社日立製作所 | 仮想計算機システムおよびスケジューリング方法 |
US9582295B2 (en) | 2014-03-18 | 2017-02-28 | International Business Machines Corporation | Architectural mode configuration |
US9916185B2 (en) | 2014-03-18 | 2018-03-13 | International Business Machines Corporation | Managing processing associated with selected architectural facilities |
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 |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
WO2016041173A1 (en) * | 2014-09-18 | 2016-03-24 | Intel Corporation | Supporting multiple operating system environments in computing device without contents conversion |
CN104539684B (zh) * | 2014-12-23 | 2018-07-06 | 广州亦云信息技术有限公司 | 一种用户机器资源抽取整合方法及系统 |
CN107301034A (zh) * | 2017-08-09 | 2017-10-27 | 葛松芬 | 一种并行处理器阵列结构 |
US10956358B2 (en) * | 2017-11-21 | 2021-03-23 | Microsoft Technology Licensing, Llc | Composite pipeline framework to combine multiple processors |
US11042398B2 (en) | 2018-07-09 | 2021-06-22 | Samsung Electronics Co., Ltd. | System and method for guest operating system using containers |
US11256531B2 (en) * | 2019-06-20 | 2022-02-22 | International Business Machines Corporation | Isolating physical processors during optimization of VM placement |
CN110990054B (zh) * | 2019-12-03 | 2023-03-21 | 北京明略软件系统有限公司 | 一种开源框架的配置处理方法及装置 |
CN114489771A (zh) * | 2022-01-28 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种Python的配置监控和响应方法、装置、设备及可读介质 |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
IT1179386B (it) * | 1984-07-05 | 1987-09-16 | Silvano Bellapadrona | Sospensione oleopneumatica per veicoli in genere, in particolare per motociclette |
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 |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
HU228286B1 (en) | 1999-09-28 | 2013-02-28 | Ibm | Method system and computer program for workload management in a computing environment |
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 |
US7734900B2 (en) * | 2008-01-11 | 2010-06-08 | International Business Machines Corporation | Computer configuration virtual topology discovery and instruction therefore |
-
2008
- 2008-01-11 US US11/972,802 patent/US7734900B2/en active Active
-
2009
- 2009-01-12 AT AT10184363T patent/ATE540355T1/de active
- 2009-01-12 WO PCT/EP2009/050250 patent/WO2009087232A2/en active Application Filing
- 2009-01-12 SI SI200930190T patent/SI2290539T1/sl unknown
- 2009-01-12 PL PL09701347T patent/PL2223214T3/pl unknown
- 2009-01-12 DK DK10184363T patent/DK2290539T3/da active
- 2009-01-12 PT PT10184363T patent/PT2290539E/pt unknown
- 2009-01-12 EP EP20090701347 patent/EP2223214B1/en active Active
- 2009-01-12 PT PT09701347T patent/PT2223214E/pt unknown
- 2009-01-12 ES ES10184363T patent/ES2380450T3/es active Active
- 2009-01-12 DK DK09701347T patent/DK2223214T3/da active
- 2009-01-12 EP EP20100184363 patent/EP2290539B1/en active Active
- 2009-01-12 KR KR1020107015025A patent/KR101231557B1/ko active IP Right Grant
- 2009-01-12 SI SI200930066T patent/SI2223214T1/sl unknown
- 2009-01-12 AT AT09701347T patent/ATE514130T1/de active
- 2009-01-12 JP JP2010541796A patent/JP4768083B2/ja active Active
- 2009-01-12 ES ES09701347T patent/ES2368684T3/es active Active
- 2009-01-12 CN CN2009801017609A patent/CN101911018B/zh active Active
- 2009-01-12 PL PL10184363T patent/PL2290539T3/pl unknown
-
2010
- 2010-05-13 US US12/779,232 patent/US7984275B2/en active Active
-
2011
- 2011-06-15 US US13/160,536 patent/US8832689B2/en active Active
- 2011-09-21 CY CY20111100912T patent/CY1112463T1/el unknown
-
2014
- 2014-09-05 US US14/478,247 patent/US9137120B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US7984275B2 (en) | 2011-07-19 |
WO2009087232A3 (en) | 2009-11-05 |
EP2223214B1 (en) | 2011-06-22 |
SI2290539T1 (sl) | 2012-04-30 |
CY1112463T1 (el) | 2015-12-09 |
JP2011509477A (ja) | 2011-03-24 |
EP2223214A2 (en) | 2010-09-01 |
ATE540355T1 (de) | 2012-01-15 |
WO2009087232A2 (en) | 2009-07-16 |
US20100223448A1 (en) | 2010-09-02 |
PT2223214E (pt) | 2011-09-19 |
DK2290539T3 (da) | 2012-02-06 |
JP4768083B2 (ja) | 2011-09-07 |
EP2290539B1 (en) | 2012-01-04 |
EP2290539A1 (en) | 2011-03-02 |
KR101231557B1 (ko) | 2013-02-08 |
PL2223214T3 (pl) | 2011-11-30 |
US20150026680A1 (en) | 2015-01-22 |
US9137120B2 (en) | 2015-09-15 |
CN101911018B (zh) | 2013-08-28 |
KR20100106462A (ko) | 2010-10-01 |
PL2290539T3 (pl) | 2012-06-29 |
US7734900B2 (en) | 2010-06-08 |
DK2223214T3 (da) | 2011-08-01 |
ES2368684T3 (es) | 2011-11-21 |
ES2380450T3 (es) | 2012-05-11 |
US20110246752A1 (en) | 2011-10-06 |
ATE514130T1 (de) | 2011-07-15 |
US8832689B2 (en) | 2014-09-09 |
CN101911018A (zh) | 2010-12-08 |
US20090182979A1 (en) | 2009-07-16 |
SI2223214T1 (sl) | 2011-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10621007B2 (en) | Execution of an instruction for performing a configuration virtual topology change | |
PT2290539E (pt) | Identificação de topologia virtual de configuração de computador | |
US10061600B2 (en) | Ascertaining configuration of a virtual adapter in a computing environment | |
BR112013031827B1 (pt) | Processamento de comandos de mensagem de operador |