BR112012033821B1 - método de gerenciamento de requisições de interrupção em um ambiente computacional - Google Patents
método de gerenciamento de requisições de interrupção em um ambiente computacional Download PDFInfo
- Publication number
- BR112012033821B1 BR112012033821B1 BR112012033821-8A BR112012033821A BR112012033821B1 BR 112012033821 B1 BR112012033821 B1 BR 112012033821B1 BR 112012033821 A BR112012033821 A BR 112012033821A BR 112012033821 B1 BR112012033821 B1 BR 112012033821B1
- Authority
- BR
- Brazil
- Prior art keywords
- adapter
- aibv
- function
- pci
- address
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
MÉTODO DE GERENCIAMENTO DE REQUISIÇÕES DE INTERRUPÇÃO EM UM AMBIENTE COMPUTACIONAL Um ou mais requisitos de interrupção sinalizada por mensagem a partir de um ou mais adaptadores de entrada/saída (E/S) são convertidos para notificações de evento de adaptador de E/S. Cada notificação de evento de adaptador de E/S inclui a configuração de um ou mais indicadores específicos na memória de sistema e um pedido de interrupção, o primeiro que resulta em um requisito de interrupção de adaptador de E/S pendente. Enquanto um requisito por uma interrupção de adaptador de E/S está pendente, subsequentes requisitos de interrupção sinalizada por mensagem são convertidos para notificações de evento de adaptador de E/S, mas não resultam em requisitos adicionais para as interrupções de adaptador de E/S.
Description
[0001] Esta invenção se refere, em geral, ao processamento de interrupção dentro de um ambiente computacional, e em particular, a manipulação de interrupções geradas pelos adaptadores do ambiente computacional.
[0002] A interrupção sinalizada por mensagem (MSI) é um modo para uma função de adaptador, tal como uma função de Interconexão de Componente Periférico (PCI), para gerar uma interrupção de unidade de processamento central (CPU) para notificar o sistema operacional da ocorrência de um evento ou a presença de algum estado. MSI é uma alternativa a ter um pino de interrupção dedicado em cada dispositivo. Quando uma função de adaptador está configurada para usar MSI, a função requisita uma interrupção realizando uma operação de escrita de MSI de um número especifico de bytes de dados a um endereço especial. A combinação deste endereço especial e um valor de dados único é chamada de um vetor de MSI.
[0003] Algumas funções de adaptador suportam apenas um vetor de MSI; outras funções de adaptador suportam múltiplos vetores de MSI. Para as funções que suportam múltiplos vetores de MSI, o mesmo endereço especial é usado com diferentes valores de dados.
[0004] Em muitas plataformas de computação, um driver de dispositivo configura em si como o manipulador de interrupção associado com um vetor de MSI. Isto efetivamente associa um vetor de MSI com uma entrada em um vetor de interrupção de CPU. Portanto, quando uma função de adaptador suporta múltiplos vetores de MSI e está configurada para usar múltiplos vetores de MSI, ele consome um correspondente número de entradas no vetor de interrupção de CPU.
[0005] A publicação dos EUA No. 2007/0271559 Al, publicada em 22 de novembro de 2007, Easton et al, "Virtualization of Infiniband Host Channel Adapter Interruptions", descreve um método, sistema, produto de programa e estrutura de dados de computador para prover dois niveis de virtualização de servidor. Um primeiro hipervisor permite que múltiplas partições lógicas dividam um conjunto de recursos e provê um primeiro nivel de virtualização. Um segundo hipervisor permite que múltiplas máquinas virtuais independentes dividam os recursos que são designados para uma única partição lógica e provê um segundo nivel de virtualização. Todos os eventos para todas as máquinas virtuais dentro da dita única partição lógica são agrupados em uma única fila de evento de propriedade de partição para receber notificações de evento a partir dos recursos divididos para aquela única partição lógica. Um requisito para uma interrupção é sinalizado para os eventos agrupados a partir da fila de evento de propriedade de partição para a desmultiplexação de eventos agrupados, pela máquina, a partir da fila de evento de propriedade de partição em filas de evento virtualizadas individuais que são alocadas em uma base por máquina virtual.
[0006] A publicação dos EUA No. 2005/0289271 Al, publicada em 29 de dezembro de 2005, Martinez, et al, "Circuitry to Selectively Produce MSI Signals",descreve, em algumas concretizações, as invenções incluem um chip tendo um circuito de registro de estado acoplado com condutores para receber sinais de evento de interrupção para prover sinais de fonte correspondendo com os sinais de evento de interrupção. O chip também inclui um circuito de registro de controle para prover sinais de habilitação de fonte para algumas seletivas das fontes de interrupção, e um circuito lógico de rearmamento acoplado com os condutores para receber os sinais de evento de interrupção e prover um sinal de rearmamento. O chip inclui adicionalmente o primeiro circuito lógico para receber os sinais de fonte, os sinais de habilitação de fonte, e o sinal de rearmamento para prover um sinal de interrupção inicial, e lógica de geração de pulso de sinal de interrupção sinalizada por mensagem (MSI) para receber o sinal de interrupção inicial e prover um sinal de MSI em resposta ao mesmo. Outras concretizações são descritas e reivindicadas.
[0007] A patente dos EUA No. 7.562.366, concedida em 14 de julho de 2009, por Pope et al, "Transmit Completion Event Batching", descreve um método para gerenciar uma fila de transmissão de dados, para o uso com um host e um dispositivo de interface de rede. Descrito de maneira geral, o host escreve descritores de armazenamento temporário de dados para uma fila de descritor de transmissão, e o dispositivo de interface de rede escreve eventos para notificar o host quando ele completou o processamento de um armazenamento temporário de dados de transmissão. Cada um dos descritores de evento de completação de transmissão notifica o host da completação de uma pluralidade de armazenamentos temporários de dados de transmissão.
[0008] De acordo com um aspecto da presente invenção, uma capacidade é provida para facilitar o gerenciamento de requisitos de interrupção a partir dos adaptadores.
[0009] As desvantagens da técnica anterior são superadas e vantagens são providas através da provisão de um método de acordo com a reivindicação 1, e correspondente sistema e produto de programa de computador para gerenciar requisitos de interrupção em um ambiente computacional.
[0010] Um ou mais aspectos da presente invenção são particularmente apontados e distintamente reivindicados como exemplos nas reivindicações na conclusão do relatório descritivo. Os objetivos anteriores e outros objetivos, funcionalidades, e vantagens da invenção são aparentes a partir da seguinte descrição detalhada tomada em conjunto com os desenhos anexos em que: A figura 1 representa uma concretização de um ambiente computacional para incorporar e usar um ou mais aspectos da presente invenção; A figura 2 representa uma concretização de detalhes adicionais da memória do sistema e o hub de E/S da figura 1, de acordo com um aspecto da presente invenção; As figuras 3A-3B representam exemplos de alocações de vetores de bit de interrupção de adaptador, de acordo com um aspecto da presente invenção; As figuras 3C-3D representam exemplos de alocações de bits de sumário de interrupção de adaptador, de acordo com um aspecto da presente invenção; A figura 4 representa uma concretização de uma visão geral da lógica a ser realizada durante a inicialização para configurar uma função de adaptador para notificação de evento de adaptador de E/S, de acordo com um aspecto da presente invenção; A figura 5 representa uma concretização da lógica para realizar o registro para permitir a conversão de uma interrupção sinalizada por mensagem (MSI) em uma notificação de evento de adaptador de E/S, de acordo com um aspecto da presente invenção; A figura 6A representa uma concretização da lógica para converter um requisito de MSI para uma notificação de evento de adaptador de E/S, de acordo com um aspecto da presente invenção; A figura 6B representa uma concretização da lógica para apresentar a notificação de evento de adaptador de E/S para um sistema operacional, de acordo com um aspecto da presente invenção; A figura 7A representa uma concretização de uma instrução de Controles de Função de PCI de Modificação usada de acordo com um aspecto da presente invenção; A figura 7B representa uma concretização de um campo usado pela instrução de Controles de Função de PCI de Modificação da figura 7A, de acordo com um aspecto da presente invenção; A figura 7C representa uma concretização de outro campo usado pela instrução de Controles de Função de PCI de Modificação da figura 7A, de acordo com um aspecto da presente invenção; A figura 7D representa uma concretização dos conteúdos de um bloco de informação de função (FIB) usado de acordo com um aspecto da presente invenção; A figura 8 representa uma concretização de uma visão geral da lógica da instrução de Controles de Função de PCI de Modificação, de acordo com um aspecto da presente invenção; A figura 9 representa uma concretização da lógica associada com uma operação de interrupções de adaptador de registro que pode ser especificada pela instrução de Controles de Função de PCI de Modificação, de acordo com urn aspecto da presente invenção; A figura 10 representa uma concretização da lógica associada com uma operação de interrupções de adaptador de cancelamento de registro que pode ser especificada pela instrução de Controles de Função de PCI de Modificação, de acordo com um aspecto da presente invenção; A figura 11A representa uma concretização de uma instrução de Processador Lógico de Chamada usada de acordo com um aspecto da presente invenção; A figura 11B representa uma concretização de um bloco de requisito usado pela instrução de Processador Lógico de Chamada da figura 11A para uma operação em lista, de acordo com um aspecto da presente invenção; A figura 11C representa uma concretização de um bloco de resposta para a operação em lista da figura 11B, de acordo com um aspecto da presente invenção; A figura 11D representa uma concretização de uma entrada de lista de função usada de acordo com um aspecto da presente invenção; A figura 12A representa uma concretização de um bloco de requisito usado pela instrução de Processador Lógico de Chamada da figura 11A para uma operação de função de solicitação, de acordo com um aspecto da presente invenção; A figura 12B representa uma concretização de um bloco de resposta para a operação de função de solicitação da figura 12A, de acordo com um aspecto da presente invenção; A figura 13A representa uma concretização de um bloco de requisito usado pela instrução de Processador Lógico de Chamada da figura 11A para uma operação de grupo de solicitação, de acordo com um aspecto da presente invenção; A figura 13B representa uma concretização de um bloco de resposta para a operação de grupo de solicitação da figura 13A, de acordo com um aspecto da presente invenção; A figura 14 representa uma concretização de um produto de programa de computador que incorpora um ou mais aspectos da presente invenção; A figura 15 representa uma concretização de um sistema de computador de host para incorporar e usar um ou mais aspectos da presente invenção; A figura 16 representa um exemplo adicional de um sistema de computador para incorporar e usar um ou mais aspectos da presente invenção; A figura 17 representa outro exemplo de um sistema de computador compreendendo uma rede de computador para incorporar e usar um ou mais aspectos da presente invenção; A figura 18 representa uma concretização de vários elementos de um sistema de computador para incorporar e usar um ou mais aspectos da presente invenção; A figura 19A representa uma concretização da unidade de execução do sistema de computador da figura 18 para incorporar e usar um ou mais aspectos da presente invenção; A figura 19B representa uma concretização da unidade de ramificação do sistema de computador da figura 18 para incorporar e usar um ou mais aspectos da presente invenção; A figura 19C representa uma concretização da unidade de carregamento/armazenamento do sistema de computador da figura 18 para incorporar e usar um ou mais aspectos da presente invenção; e A figura 20 representa uma concretização de um sistema de computador de host emulado para incorporar e usar um ou mais aspectos da presente invenção.
[0011] De acordo com um aspecto da presente invenção, uma capacidade é provida para converter o requisito de interrupção sinalizada por mensagem (MSI) para uma notificação de evento de adaptador de entrada/saida (E/S). A MSI é requisitada por um adaptador e convertida para uma notificação de evento de adaptador, em que um ou mais indicadores específicos são definidos e um requisito é feito em que uma interrupção seja apresentada para um sistema operacional (ou outro software, tal como outros programas, etc. Como usado aqui, o termo sistema operacional inclui drivers de dispositivo de sistema operacional). Em um particular exemplo, cada requisito de MSI não resulta em um requisito para a interrupção para o sistema operacional, mas em vez disso, um requisito de interrupção engloba uma pluralidade de requisitos de MSI.
[0012] Como usado aqui, o termo "adaptador"inclui qualquer tipo de adaptador (por exemplo, adaptador de armazenamento, adaptador de rede, adaptador de processamento, adaptador criptográfico, adaptador de PCI, outro tipo de adaptador de entrada/saida, etc.). Em uma concretização, um adaptador inclui uma função de adaptador. No entanto, em outras concretizações, um adaptador pode incluir uma pluralidade de funções de adaptador. Um ou mais aspectos da presente invenção são aplicáveis se um adaptador inclui uma função de adaptador ou uma pluralidade de funções de adaptador. Adicionalmente, nos exemplos apresentados aqui, o adaptador é usado de maneira intercambiável com a função de adaptador (por exemplo, função de PCI) a menos que seja notado de outra forma.
[0013] Uma concretização de um ambiente computacional para incorporar e usar um ou mais aspectos da presente invenção é descrita com referência à figura 1. Em um exemplo, um ambiente computacional 100 é um servidor de System z® oferecido por International Business Machines Corporation. System z® está baseado em na z/Architecture® oferecido por International Business Machines Corporation. Detalhes com relação a z/Architecture® são descritos em uma publicação da IBM® intitulada, "z/Architecture Principles of Operation", Publicação IBM No. SA22-7832-07, fevereiro de 2009. IBM®, System z® e z/Architecture® são marcas registradas de International Business Machines Corporation, Armonk, Nova Iorque. Outros nomes usados aqui podem ser marcas registradas, marcas comerciais ou nomes de produtos de International Business Machines Corporation ou outras companhias.
[0014] Em um exemplo, ambiente computacional 100 inclui uma ou mais unidades de processamento central (CPUs) 102 acopladas com uma memória de sistema 104 (também conhecida como, memória principal) através de um controlador de memória 106. Para acessar memória de sistema 104, uma unidade de processamento central 102 emite um requisito de leitura ou escrita que inclui um endereço usado para acessar memória de sistema. O endereço incluido no requisito tipicamente não é diretamente útil para acessar a memória de sistema, e, portanto, é traduzido para um endereço que é diretamente utilizável no acesso à memória de sistema. O endereço é traduzido através de um mecanismo de tradução (XLATE) 108. Por exemplo, o endereço é traduzido a partir de um endereço virtual para um endereço real ou absoluto usando, por exemplo, tradução dinâmica de endereço (DAT).
[0015] O requisito, incluindo o endereço (traduzido, se for necessário), é recebido pelo controlador de memória 106. Em um exemplo, o controlador de memória 106 é compreendido de hardware e é usado para arbitrar para o acesso à memória de sistema e para manter a consistência da memória. Esta arbitragem é realizada para requisitos recebidos a partir das CPUs 102, bem como para os requisitos recebidos a partir de um ou mais adaptadores 110. Como as unidades de processamento central, os adaptadores emitem requisitos para a memória de sistema 104 para ganhar o acesso para a memória de sistema.
[0016] Em um exemplo, adaptador 110 é um adaptador de Interconexão de Componente Periférico (PCI) ou PCI Express (PCTe) que inclui uma ou mais funções de PCI. A função de PCI emite um requisito que é roteado para um hub de entrada/saida 112 (por exemplo, um hub de PCI) através de um ou mais comutadores (por exemplo, Comutadores de PCIe) 114. Em um exemplo, o hub de entrada/saida é compreendido de hardware, incluindo uma ou mais máquinas de estado.
[0017] O hub de entrada/saida inclui, por exemplo, um complexo de raiz 116 que recebe o requisito a partir de um comutador. O requisito inclui um endereço de entrada/saida que é usado para realizar um acesso direto à memória (DMA) ou para requisitar a interrupção sinalizada por mensagem (MSI), como exemplos. Este endereço é provido para uma unidade de proteção e tradução de endereço 118 que acessa a informação usada para qualquer um dentre DMA ou do requisito de MSI.
[0018] Para uma operação de DMA, a unidade de proteção e tradução de endereço 118 pode traduzir o endereço para um endereço utilizável para acessar a memória de sistema. Então, o requisito iniciado a partir do adaptador, incluindo o endereço traduzido, é provido para o controlador de memória 106 através, por exemplo, de um barramento de E/S para memória 120. O controlador de memória realiza a sua arbitragem e direciona o requisito com o endereço traduzido para a memória de sistema no momento apropriado.
[0019] Para um requisito de MSI, informação na unidade de proteção e tradução de endereço 118 é obtida para facilitar a conversão do requisito de MSI para uma notificação de evento de adaptador de E/S. Já que as concretizações descritas aqui se referem ao processamento de interrupção, detalhes adicionais com relação ao hub de E/S e a memória de sistema já que eles se referem ao processamento de interrupção são descritos com referência à figura 2. Na figura 2, o controlador de memória não é mostrado, mas pode ser usado. O hub de E/S pode ser acoplado com a memória de sistema 104 e/ou o processador 254 diretamente ou através de um controlador de memória.
[0020] Em referência à figura 2, em um exemplo, memória de sistema 104 inclui uma ou mais estruturas de dados utilizáveis na facilitação do processamento de interrupção. Neste exemplo, memória de sistema 104 inclui um vetor de bit de interrupção de adaptador (AIBV) 200 e um bit de sumário de interrupção de adaptador opcional (AISB) 202 associado com um adaptador particular. Pode haver um AIBV e um correspondente AISB para cada adaptador.
[0021] Em um exemplo, o vetor de bit de interrupção de adaptador 200 é um arranjo de dimensão única de um ou mais bits no armazenamento principal que estão associados com um adaptador (por exemplo, a função de PCI). Os bits no vetor de bit de interrupção de adaptador representam os números de vetor de MSI. Um bit que é definido para um em um AIBV indica uma condição ou tipo de evento para o adaptador associado. No exemplo de função de PCI, cada bit no AIBV associado corresponde com um vetor de MSI. Portanto, se a função de PCI suporta apenas um vetor de MSI, o seu AIBV inclui um único bit; se a função de PCI suporta múltiplos vetores de MSI, o seu AIBV inclui um bit por vetor de MSI. No exemplo representado na figura 2, a função de PCI suporta múltiplos vetores de MSI (por exemplo, 3), e, portanto, existem múltiplos bits (por exemplo, 3) no AIBV 200. Cada bit corresponde com um evento particular, por exemplo, bit 0 do AIBV, quando definido para um, indica uma operação completada; bit 1 do AIBV, quando definido para um, corresponde com um evento de erro; etc. Como mostrado, bit 1 é definido neste exemplo.
[0022] Em um particular exemplo, um comando (por exemplo, um comando de Controles de função de PCI de Modificação) é usado para designar um AIBV para a função de PCI. Especificamente, o comando é emitido pelo sistema operacional e especifica a identidade da função de PCI, a localização de armazenamento principal da área que inclui o AIBV, o deslocamento a partir daquela localização para o primeiro bit do AIBV, e o número de bits que compreendem o AIBV. Em particular, usando este comando, parâmetros de interrupção de adaptador são copiados a partir de um bloco de informação de função que armazena tal informação (por exemplo, obtida a partir da inicialização e/ou configuração) para a entrada de tabela de dispositivo do adaptador (descrita abaixo) e/ou a entrada de tabela de função (descrita abaixo).
[0023] A identidade da função de PCI, em um exemplo, é um identificador de função. Um identificador de função inclui, por exemplo, um indicador de habilitação que indica se a habilitação de função de PCI é habilitada; o número de função de PCI que identifica a função (este é um identificador estático); e um número de caso que indica o caso particular deste identificador de função. Por exemplo, cada vez que o identificador de função é habilitado, o número de caso é incrementado para prover um novo número de caso. O identificador de função é usado para localizar uma entrada de tabela de função em uma tabela de função que inclui uma ou mais entradas. Por exemplo, um ou mais bits do identificador de função são usados como um indice para a tabela de função para localizar a particular entrada de tabela de função. A entrada de tabela de função inclui informação com relação a sua função de PCI associada. Por exemplo, ela pode incluir vários indicadores que se referem ao estado de sua função de adaptador associada, e ela pode incluir um ou mais indices de entrada de tabela de dispositivo usados para localizar entradas de tabela de dispositivo para esta função de adaptador (para o sistema operacional, em uma concretização, o identificador é simplesmente um identificador opaco do adaptador).
[0024] Um AIBV pode ser alocado qualquer limite de byte e qualquer limite de bit. Isto permite ao sistema operacional a flexibilidade para empacotar os AIBVs de múltiplos adaptadores para uma faixa contígua de bits e bytes. Por exemplo, como mostrado na figura 3A, em um exemplo, o sistema operacional designou uma área de armazenamento comum na localização X para incluir cincos AIBVs contíguos. 0 adaptador associado com cada AIBV é identificado pelas letras A-E. O evento que cada bit de AIBV representa para um adaptador é adicionalmente identificado pelos números 0-n. Os bits não sinalizados são identificados pela letra minúscula "u".
[0025] Um exemplo adicional é representado na figura 3B. Neste exemplo, o sistema operacional designou três áreas de armazenamento únicas, nas localizações X, Y e Z para incluir os AIBVs para cinco adaptadores de E/S. O armazenamento na localização X inclui os AIBVs para os adaptadores A e B, o armazenamento na localização Y inclui o AIBV apenas para o adaptador C, e o armazenamento na localização Z inclui os AIBVs para os adaptadores D e E. O evento em que cada bit de AIBV representa um adaptador de E/S é adicionalmente identificado pelos números 0-n. Os bits não sinalizados são identificados pela letra "u".
[0026] Voltando à figura 2, em adição ao AIBV, neste exemplo, existe um AISB 202 para o adaptador, que inclui um único bit associado com o adaptador. Um AISB que é um que indica que um ou mais bits foram definidos para um em um AIBV associado com o AISB. O AISB é opcional, e pode haver um para cada adaptador, um para cada adaptador selecionado ou um para um grupo de adaptadores.
[0027] Em uma implementação particular para as funções de PCI, um comando (por exemplo, um comando de Controles de função de PCI de Modificação) é usado para designar um AISB para a função de PCI. Especificamente, o comando é emitido pelo sistema operacional e especifica a identidade da função de PCI (por exemplo, o identificador), a localização de armazenamento principal da área que inclui o AISB, o deslocamento a partir daquela localização para o AISB, e um controle de habilitação de notificação de sumário de interrupção de adaptador indicando se existe um bit de sumário.
[0028] Um AISB pode ser alocado em qualquer limite de byte e qualquer limite de bit. Isto permite ao sistema operacional a flexibilidade para empacotar os AISBs de múltiplos adaptadores para uma faixa contígua de bits e bytes. Em um exemplo, como representado na figura 3C, o sistema operacional designou uma área de armazenamento comum, na localização X, para incluir nove AISBs contíguos. O adaptador associado com cada AISB é identificado pelas letras A-I. Bits não sinalizados são identificados pela letra minúscula "u".
[0029] Um exemplo de alocação adicional é representado na figura 3D, onde o sistema operacional designou três localizações de armazenamento de AISB únicas, nas localizações X, Y e Z para incluir os AISBs de cada um dos três adaptadores. Os adaptadores associados com cada AISB são identificados com as letras A-C. Bits não sinalizados são identificados pela letra minúscula "u".
[0030] Adicionalmente, o programa também pode designar um único AISB para múltiplas funções de PCI. Isto associa múltiplos AIBVs com um único bit de sumário. Portanto, tal AISB que é um que indica que o sistema operacional deve escanear múltiplos AIBVs.
[0031] Retornando à figura 2, em um exemplo, o AIBV e o AISB são destacados pelos endereços localizados em uma entrada de tabela de dispositivo 206 de uma tabela de dispositivo 208 localizada no hub de E/S 112. Em um exemplo, a tabela de dispositivo 208 está localizada dentro da unidade de proteção de tradução de endereço do hub de E/S.
[0032] A tabela de dispositivo 208 inclui uma ou mais entradas 206, cada uma das quais é designada para uma particular função de adaptador 210. Uma entrada de tabela de dispositivo 206 inclui um número de campos, que podem ser povoados usando, por exemplo, os comandos mencionados acima. Os valores de um ou mais dos campos estão baseados na politica e/ou na configuração. Exemplos dos campos incluem: Subclasse de Interrupção (ISO) 214: Indica uma subclasse de interrupção para a interrupção. A ISO identifica uma classe mascarável das interrupções de adaptador que pode ser associada com uma prioridade com a qual o sistema operacional vai processar a interrupção; Endereço de AIBV (@) 216: Provê, por exemplo, um endereço absoluto do inicio da localização de armazenamento que inclui o AIBV para a particular função de adaptador designada para esta entrada de tabela de dispositivo; Deslocamento de AIBV 218: Um deslocamento para a localização de armazenamento principal para o inicio do AIBV; Endereço de AISB (@) 220: Provê, por exemplo, um endereço absoluto do inicio da localização de armazenamento que inclui o AISB para esta função de PCI, se o sistema operacional designou um AISB; Deslocamento de AISB 222: Um deslocamento para a localização de armazenamento principal para o AISB; Controle de habilitação de notificação de sumário de interrupção de adaptador (Habilitado) 224: Este controle indica se existe um AISB; Número de Interrupções (NOI) 226: Indica o número máximo de vetores de MSI permitido para esta função de PCI, com zero indicando que nenhum é permitido.
[0033] Em outras concretizações, o DTE pode incluir mais, menos ou informação diferente.
[0034] Em uma concretização, a entrada de tabela de dispositivo a ser usada para um particular requisito de interrupção por um adaptador é localizada usando, por exemplo, um identificador de solicitante (RID) (e/ou uma porção do endereço) localizado em um requisito emitido pelo adaptador (por exemplo, função de PCI 210). O ID de requisito (por exemplo, um valor de 16 bits especificando, por exemplo, um número de barramento, número de dispositivo e número de função) é incluído no requisito, bem como um endereço a ser usado para a interrupção. O requisito, incluindo o RID e o endereço, são providos para, por exemplo, uma memória de conteúdo endereçável (CAM 230) através, por exemplo, de um comutador, e a memória de conteúdo endereçável é usada para prover um valor de indice. Por exemplo, a CAM inclui múltiplas entradas, com cada entrada correspondendo com um indice para a tabela de dispositivo. Cada entrada de CAM inclui o valor de um RID. Se, por exemplo, o RID recebido corresponde com o valor contido em uma entrada na CAM, o correspondente indice de tabela de dispositivo é usado para localizar a entrada de tabela de dispositivo. Ou seja, a saida da CAM é usada para indexar para a tabela de dispositivo 208. Se não existe correspondência, o pacote recebido é descartado. (Em outras concretizações, a CAM ou outra observação não é necessária e o RID é usado como o indice.) O DTE localizado é usado no processamento de um pedido de interrupção, como descrito aqui .
[0035] Para requisitar uma interrupção, a função de adaptador 210 envia um pacote para o hub de E/S. Este pacote possui um endereço de MSI 232 e dados associados 234. O hub de E/S compara pelo menos uma parte do endereço recebido com um valor em um registro de comparação de MSI 250. Se existe uma correspondência, então uma interrupção (por exemplo, MSI) está sendo requisitada, como oposto a uma operação de DMA. A razão para o requisito (isto é, tipo de evento que ocorreu) ser indicado nos dados associados 234. Por exemplo, um ou mais dos bits de baixa ordem dos dados são usados para especificar um vetor de interrupção particular (isto é, um vetor de MSI) que indica a razão (evento).
[0036] De acordo com um aspecto da presente invenção, um pedido de interrupção recebido a partir do adaptador é convertido para uma notificação de evento de adaptador de E/S. Ou seja, um ou mais indicadores (por exemplo, um ou mais AIBVs e opcionalmente um AISB) são definidos e uma interrupção para o sistema operacional é requisitada, se uma já não está pendente. Em uma concretização, múltiplos requisitos de interrupção (por exemplo, MSIs) a partir de um ou mais adaptadores são coalescidos para uma única interrupção para o sistema operacional, mas com respectivas indicações de AIBV e AISB. Por exemplo, se o hub de E/S já recebeu um requisito de MSI, por sua vez já proveu um pedido de interrupção para um processador, e esta interrupção ainda está pendente (por exemplo, por uma razão ou outra, a interrupção ainda não foi apresentada para o sistema operacional (por exemplo, interrupções estão desabilitadas)), então se o hub recebe um ou mais outros MSIs, ele não requisita interrupções adicionais. Uma interrupção substitui e representa a pluralidade de requisitos de MSI. No entanto, um ou mais AIBVs e opcionalmente um ou mais AISBs são definidos.
[0037] Detalhes adicionais com relação à conversão de uma MSI (ou outro requisito de interrupção de adaptador) para uma notificação de evento de adaptador de E/S são descritos abaixo com referência às figuras 4-6B. Particularmente, a figura 4 descreve várias inicializações a serem realizadas; a figura 5 descreve um processo de registro; figura 6A descreve lógica para converter uma MSI para uma notificação de evento de adaptador; e a figura 6B descreve lógica para apresentar a notificação de evento de adaptador de E/S para o sistema operacional.
[0038] Em referência à figura 4, em um exemplo, para converter um requisito de MSI para uma notificação de evento de adaptador de E/S certa inicialização é realizada. Durante a inicialização, o sistema operacional realiza um número de etapas para configurar um adaptador para a notificação de evento de adaptador através de um requisito de MSI. Neste exemplo, é a função de PCI sendo configurada; apesar de, em outras concretizações, ela poder ser de outros adaptadores, incluindo outros tipos de funções de adaptador.
[0039] Inicialmente, em uma concretização, uma determinação é feita como se as funções de PCI na configuração, ETAPA 400. Em um exemplo, um comando (por exemplo, um comando de Lista de Solicitação) emitido pelo sistema operacional é usado para obter uma lista das funções de PCI designadas para a configuração de requisito (por exemplo, designadas para um particular sistema operacional). Esta informação é obtida a partir de uma estrutura de dados de configuração que mantém esta informação.
[0040] A seguir uma das funções de PCI na lista é selecionada, ETAPA 402, e uma determinação é feita como se para um endereço de MSI a ser usado para a função de PCI e o número de vetores de MSI suportado pela função de PCI. Um endereço de MSI é determinado com base nas características do hub de E/S e o sistema em que ele é instalado. O número de vetores de MSI suportado está baseado na politica e é configurável.
[0041] Adicionalmente, o AIBV é alocado, bem como o AISB, se existe qualquer, ETAPA 410. Em um exemplo, o sistema operacional determina a localização do AIBV para permitir o processamento eficiente de um ou mais adaptadores, tipicamente com base na classe de adaptador. Por exemplo, os AIBVs para os adaptadores de armazenamento podem estar localizados adjacentes entre si. O AIBV e o AISB são alocados e liberados para zeros, e uma operação de interrupção de adaptador de registro é especificada (por exemplo, usando uma instrução de Controles de Função de PCI de Modificação). Esta operação registra o AIBV, o AISB, a ISC, o número de interrupções (Vetores de MSI), e o controle de habilitação de notificação de sumário de interrupção de adaptador, como descrito em detalhe adicional abaixo, ETAPA 412. A seguir, o espaço de configuração da função de PCI é lido/escrito, ETAPA 414. Especificamente, um endereço de MSI e contagem de vetor de MSI são escritos consistentes com o registro anterior.
[0042] A seguir, uma determinação é feita como se existem funções adicionais na lista, CONSULTA 416. Se for assim, o processamento continua com a ETAPA 402. Caso contrário, processamento de inicialização está completo.
[0043] Os detalhes adicionais com relação ao registro de vários parâmetros são descritos com referência à figura 5. Inicialmente, a entrada de tabela de dispositivo (DTE) para corresponder com a função de PCI para a qual inicialização está sendo realizada é selecionada. Esta seleção é realizada, por exemplo, através do firmware de gerenciamento que seleciona um DTE disponível a partir da tabela de dispositivo. A seguir, os vários parâmetros são armazenados na entrada de tabela de dispositivo, ETAPA 502. Por exemplo, a ISC, o endereço de AIBV, o deslocamento de AIBV, o endereço de AISB, o deslocamento de AISB, o controle de habilitação, e o número de interrupções (NOI) são definidos para valores obtidos a partir da configuração da função. Isto completa o processo de registro.
[0044] Como usado aqui, firmware inclui, por exemplo, o microcódigo, milicódigo e/ou macrocódigo do processador. Ele inclui, por exemplo, as instruções de nivel de hardware e/ou estruturas de dados usadas na implementação de código de máquina de maior nivel. Em uma concretização, ele inclui, por exemplo, código proprietário que tipicamente é distribuído como microcódigo que inclui software confiável ou microcódigo especifico do subjacente hardware e controla o acesso de sistema operacional para o hardware do sistema.
[0045] Durante a operação, quando a função de PCI deseja gerar uma MSI, tipicamente torna alguma informação disponível para o sistema operacional que descreve a condição. Isto faz com que uma ou mais etapas ocorram de maneira a converter o requisito de MSI da função de PCI para uma notificação de evento de adaptador de E/S para o sistema operacional. Isto é descrito com referência à figura 6A.
[0046] Em referência à figura 6A, inicialmente, uma descrição do evento para o qual a interrupção é requisitada é gravada, ETAPA 600. Por exemplo, a função de PCI grava uma descrição do evento em uma ou mais estruturas de gravação de descrição de evento especificas do adaptador armazenadas, por exemplo, na memória de sistema. Isto pode incluir gravar o tipo de evento, bem como gravar informação adicional. Adicionalmente, um requisito é iniciado pela função de PCI especificando um endereço de MSI e o número de vetor de MSI, bem como um ID de requisito, ETAPA 601. Este requisito é recebido pelo hub de E/S, e responsivo a responder o requisito, o ID de requisito no requisito é usado para localizar a entrada de tabela de dispositivo para a função de PCI, ETAPA 602. 0 hub de E/S compara pelo menos uma porção do endereço no requisito com o valor em um registro de comparação de MSI, CONSULTA 603. Se eles são desiguais, uma MSI não está sendo requisitada. No entanto, se eles são iguais, então um endereço de MSI foi especificado, e assim, uma MSI foi requisitada, em vez de uma operação de acesso direto à memória.
[0047] A seguir, uma determinação é feita como se o número de vetor de MSI especificado no requisito é menor do que ou igual ao número de interrupções (NOI) permitido para esta função, CONSULTA 604. Se o número de vetor de MSI é maior do que NOI, um erro é indicado. Caso contrário, o hub de E/S emite uma função de bit de ajuste para ajustar o apropriado bit de AIBV no armazenamento. O apropriado bit é determinado adicionando o número de vetor de MSI para o Deslocamento de AIBV especificado na entrada de tabela de dispositivo e deslocando este número de bits a partir do Endereço de AIBV especificado na entrada de tabela de dispositivo, ETAPA 605. Além disso, se um AISB foi designado, o hub de E/S uses uma função de bit de ajuste para ajustar o AISB, usando o Endereço de AISB e o Deslocamento de AISB na entrada de tabela de dispositivo, ETAPA 606.
[0048] A seguir em uma concretização, uma determinação é feita (por exemplo, pela CPU ou o hub de E/S) como para se um pedido de interrupção já é pendente. Para fazer esta determinação, um indicador pendente é usado. Por exemplo, um indicador pendente 252 (figura 2) armazenado na memória de um processador 254, que é acessível para os processadores do ambiente computacional que pode processar a interrupção (por exemplo, CPUs 102 da figura 1) , é verificado, CONSULTA 608. Se não está definido, então é definido (por exemplo, para 1), ETAPA 610. Se já está definido, o processamento está completo e outro requisito de interrupção não é requisitado. Portanto, subsequentes requisitos de interrupção são englobados pelo único requisito já pendente.
[0049] Em um particular exemplo, pode haver um indicador pendente per Subclasse de Interrupção, e, portanto, o indicador pendente da subclasse de interrupção designada para a função de requisitar é o indicador que é verificado.
[0050] De maneira assíncrona, como representado na figura 6B, um ou mais processadores verificam o indicador pendente, CONSULTA 640. Em particular, cada processador habilitado para as enquetes de ISC (e a zona em outra concretização) no indicador para a ISC quando, por exemplo, interrupções são habilitadas para aquele processador (isto é, para o seu sistema operacional). Se um dos processadores determina que o indicador está definido, ele arbitra com os outros processadores habilitados para o mesmo ISC (e zona em outra concretização) para apresentar a interrupção, ETAPA 642. Retornando para a CONSULTA 640, se o indicador pendente não é definido, os processadores habilitados para a ISC continuam a votar em um indicador definido.
[0051] Em resposta ao sistema operacional que é apresentado com a interrupção, ETAPA 642, o sistema operacional determina se existem quaisquer AISBs são registrados, CONSULTA 643. Se não existe, o sistema operacional processa os AIBVs definidos, como descrito abaixo, ETAPA 645. Caso contrário, o sistema operacional processa quaisquer AISBs e AIBVs definidos, ETAPAs 644, 645. Por exemplo, ele verifica se existem quaisquer AISBs são definidos. Se for assim, ele usa o AISB para determinar a localização de um ou mais AIBVs. Por exemplo, o sistema operacional lembra as localizações dos AISBs e AIBVs. Adicionalmente, lembra para qual adaptador cada AISB e AIBV representa. Portanto, ele pode manter uma forma de um bloco de controle ou outra estrutura de dados que inclui as localizações de AISBs e AIBVs e a associação entre AISBs, AIBVs e ID de adaptador. Ele usa este bloco de controle para facilitar a localização de um AIBV com base no seu AISB associado. Em uma concretização adicional, um AISB não é usado. Nesta situação, o bloco de controle é usado para localizar o AIBV particular.
[0052] Em resposta à localização de um ou mais AIBVs, o sistema operacional escaneia os AIBVs e processa quaisquer AIBVs definidos. Ele processa a interrupção de uma maneira consistente com o evento apresentado (por exemplo, provê o estado) . Por exemplo, com um adaptador de armazenamento, um evento pode indicar que uma operação foi completada. Isto resulta no sistema operacional verificando o estado armazenado pelo adaptador para observar se a operação completada com sucesso e também detalhes da operação. No caso de uma leitura de armazenamento, isto é uma indicação de que os dados lidos a partir do adaptador agora estão disponíveis na memória de sistema e podem ser processados.
[0053] Em uma concretização, se durante a operação da conversão, um erro é detectado, uma atenção é gerada para o firmware de sistema, em vez de converter o requisito de MSI para uma notificação de evento de adaptador.
[0054] Detalhes adicionais com relação à instrução de Controles de Função de PCI de Modificação usada para registrar interrupções de adaptador são descritos aqui. Em referência à figura 7A, uma instrução de Controles de Função de PCI de Modificação 700 inclui, por exemplo, um opcode (código de operação) 702 indicando a instrução de Controles de Função de PCI de Modificação; um primeiro campo 704 especificando uma localização em que informação variada é incluída com relação à função de adaptador para a qual os parâmetros operacionais estão sendo estabelecidos; e um segundo campo 706 especificando uma localização a partir da qual o bloco de informação de função (FIB) de PCI é buscado. Os conteúdos das localizações designadas pelos Campos 1 e 2 são adicionalmente descritos abaixo.
[0055] Em uma concretização, Campo 1 designa um registro geral que inclui informação variada. Como mostrado na figura 7B, os conteúdos do registro incluem, por exemplo, um identificador de função 710 que identifica o identificador da função de adaptador em nome do qual a instrução de modificar está sendo realizada; um espaço de endereço 712 designando um espaço de endereço na memória de sistema associada com a função de adaptador designada pelo identificador de função; um controle de operação 714 que especifica a operação a ser realizada para a função de adaptador; e o estado 716 que provê estado com relação à instrução quando a instrução completa com um código predefinido.
[0056] Em uma concretização, o identificador de função inclui, por exemplo, um indicador de habilitação indicando se o identificador está habilitado, um número de função que identifica uma função de adaptador (este é um identificador estático e pode ser usado para indexar em uma tabela de função); e um número de caso especificando o caso particular deste identificador de função. Existe um identificador de função para cada função de adaptador, e ele é usado para localizar uma entrada de tabela de função (FTE) dentro da tabela de função. Cada entrada de tabela de função inclui parâmetros operacionais e/ou outra informação associada com a sua função de adaptador. Como um exemplo, uma entrada de tabela de função inclui: Número de caso: Este campo indica um particular caso do identificador da função de adaptador associado com a entrada de tabela de função; índice de entrada de tabela de dispositivo (DTE) l...n: Podem haver um ou mais índices de tabela de dispositivo, e cada índice é um índice para uma tabela de dispositivo para localizar uma entrada de tabela de dispositivo (DTE). Existem uma ou mais entradas de tabela de dispositivo por função de adaptador, e cada entrada inclui informação associada com a sua função de adaptador, incluindo informação usada para processar requisitos da função de adaptador (por exemplo, requisitos de DMA, requisitos de MSI) e informação que se refere aos requisitos associados com a função de adaptador (por exemplo, instruções de PCI). Cada entrada de tabela de dispositivo é associada com um espaço de endereço dentro da memória de sistema designada para a função de adaptador. Uma função de adaptador pode ter um ou mais espaços de endereço dentro da memória de sistema designada para a função de adaptador. Indicador de ocupado: Este campo indica se a função de adaptador está ocupada; Indicador de estado de erro permanente: Este campo indica se a função de adaptador está em um estado de erro permanente; Indicador iniciado por recuperação: Este campo indica se a recuperação foi iniciada para a função de adaptador; Indicador de permissão: Este campo indica se o sistema operacional tentando controlar a função de adaptador possui autoridade de fazer isto; Indicador de habilitação: Este campo indica se a função de adaptador é habilitada (por exemplo, l=habilitado, O=desabilitado); Identificador de solicitante (RID) : Este é um identificador da função de adaptador, e inclui, por exemplo, um número de barramento, um número de dispositivo e um número de função.
[0057] Em um exemplo, este campo é usado para acessos de um espaço de configuração da função de adaptador. (A memória de um adaptador pode ser definida como espaços de endereço, incluindo, por exemplo, um espaço de configuração, um espaço de E/S, e/ou um ou mais espaço de memória). Em um exemplo, o espaço de configuração pode ser acessado especificando o espaço de configuração em uma instrução emitida pelo sistema operacional (ou outra configuração) para a função de adaptador. É especificado na instrução um deslocamento para o espaço de configuração e um identificador de função usado para localizar a entrada de tabela de função apropriada que inclui o RID. O firmware recebe a instrução e determina que é para um espaço de configuração. Portanto, ele usa o RID para gerar um requisito para o hub de E/S, e o hub de E/S cria um requisito para acessar o adaptador. A localização da função de adaptador está baseada no RID, e o deslocamento especifica um deslocamento para o espaço de configuração da função de adaptador.
[0058] Registro de endereço de base (BAR) (1 a n) : Este campo inclui uma pluralidade de inteiros não sinalizados, designados como BARo - BARn, que estão associados com a função de adaptador originalmente especificada, e aqueles em que eles também são armazenados nos registros de endereço de base associados com a função de adaptador. Cada BAR especifica o endereço de partida de um espaço de memória ou espaço de E/S dentro da função de adaptador, e também indica o tipo de espaço de endereço, ou seja, se é um espaço de memória de 64 ou 32 bits, ou um espaço de E/S de 32 bits, como os exemplos.
[0059] Em um exemplo, ele é usado para acessos para espaço de memória e/ou espaço de E/S da função de adaptador. Por exemplo, um deslocamento provido em uma instrução para acessar a função de adaptador é adicionado para o valor no registro de endereço de base associado com o espaço de endereço designado na instrução para obter o endereço a ser usado para acessar a função de adaptador. O identificador de espaço de endereço provido na instrução identifica o espaço de endereço dentro da função de adaptador a ser acessado e o correspondente BAR a ser usado;
[0060] Tamanho l....n: Este campo inclui uma pluralidade de inteiros não sinalizados, designados como SIZEQ- SIZEn. O valor de um campo de Tamanho, quando diferente de zero, representa o tamanho de cada espaço de endereço com cada entrada correspondendo com um BAR descrito anteriormente.
[0061] Detalhes adicionais com relação a BAR e Tamanho são descritos abaixo. 1. Quando um BAR não é implementado para uma função de adaptador, o campo de BAR e o seu correspondente campo de tamanho são ambos armazenados como zeros. 2. Quando um campo de BAR representa tanto um espaço de endereço de E/S ou um espaço de endereço de memória de 32 bit, o correspondente campo de tamanho é diferente de zero e representa o tamanho do espaço de endereço. 3. Quando um campo de BAR representa um espaço de endereço de memória de 64 bit, a. O campo de BARn representa os bits de endereço menos significativos. b. O próximo campo de BARn+i consecutivo representa os bits de endereço mais significativos. c. O correspondente campo de SIZEn é diferente zero e representa o tamanho do espaço de endereço. d. O correspondente campo SIZEn+í não tem significado e é armazenado como zero.
[0062] Informação de roteamento interno: Esta informação é usada para realizar particular roteamento para o adaptador. Ela inclui, por exemplo, nó, chip de processador, e informação de endereçamento de hub, como os exemplos.
[0063] Indicação de status: Isto provê uma indicação de, por exemplo, se operações de carregamento/armazenamento são bloqueadas ou o adaptador está no estado de erro, bem como outras indicações.
[0064] Em um exemplo, o indicador de ocupado, o indicador de estado de erro permanente, e o indicador iniciado por recuperação são definidos com base no monitoramento realizado pelo firmware. Adicionalmente, o indicador de permissão está definido, por exemplo, com base na política; e a informação de BAR é baseada na informação de configuração descoberta durante uma caminhada de barramento pelo processador (por exemplo, firmware do processador). Outros campos podem ser definidos com base na configuração, inicialização e/ ou eventos. Em outras concretizações, a entrada de tabela de função pode incluir mais, menos ou diferente informação. A informação incluida pode depender das operações suportadas pelo ou habilitadas para a função de adaptador.
[0065] Em referência à figura 7C, em um exemplo, Campo 2 designa um endereço lógico 720 de o bloco de informação de função (FIB) de PCI, que inclui informação com relação a uma função de adaptador associada. O bloco de informação de função é usado para atualizar uma entrada de tabela de dispositivo e/ou entrada de tabela de função (ou outra localização) associada com a função de adaptador. A informação é armazenada em FIB durante a inicialização e/ou configuração do adaptador e/ou em resposta a eventos particulares.
[0066] Detalhes adicionais com relação a um bloco de informação de função (FIB) são descritos com referência à figura 7D. Em uma concretização, um bloco de informação de função 750 incluem os seguintes campos: Formato 751: Este campo especifica o formato do FIB. Controle de Interceptação 752: Este campo é usado para indicar se a execução de convidado de instruções especificas por um convidado de modo paginável resulta em interceptação de instrução; Indicação de Erro 754: Este campo inclui o estado de indicação de erro para o acesso direto à memória e interrupções de adaptador. Quando o bit é definido (por exemplo, 1), um ou mais erros foram detectados enquanto se realiza acesso direto à memória ou interrupção de adaptador para a função de adaptador; Carregamento/armazenamento bloqueado 756: Este campo indica se operações de carregamento/armazenamento são bloqueadas; Função de PCI Válida 758: Este campo inclui um controle de habilitação para a função de adaptador. Quando o bit é definido (por exemplo, 1), a função de adaptador é considerada como estando habilitada para as operações de E/S; Espaço de Endereço Registrado 760: Este campo inclui um controle de habilitação de acesso direto à memória para uma função de adaptador. Quando o campo é definido (por exemplo, 1) acesso direto à memória é habilitada; Tamanho de página 761: Este campo indica o tamanho da página ou outra unidade de memória a ser acessada por um acesso de memória de DMA; Endereço de Base de PCI (PBA) 7 62: Este campo é um endereço de base para um espaço de endereço na memória de sistema designado para a função de adaptador. Ele representa o menor endereço virtual em que uma função de adaptador é permitida de usar para o acesso direto à memória para o espaço de endereço de DMA especificado; Limite de Endereço de PCI (PAL) 764: Este campo representa o maior endereço virtual que uma função de adaptador é permitida de acessar dentro do espaço de endereço de DMA especificado; Ponteiro de tradução de Endereço de entrada/saida (10 AT) 766: O ponteiro de tradução de endereço de entrada/saida designa a primeira de quaisquer tabelas de tradução usadas por uma tradução de endereço virtual de PCI, ou pode designar diretamente o endereço absoluto de um quadro de armazenamento que é o resultado da tradução; Subclasse de Interrupção (ISC) 768: Este campo inclui a subclasse de interrupção usada para apresentar interrupções de adaptador para a função de adaptador; Número de Interrupções (NOI) 770: Este campo designa o número de códigos de interrupção distintos aceitos por uma função de adaptador. Este campo também define o tamanho, em bits, do vetor de bit de interrupção de adaptador designado por um endereço de vetor de bit de interrupção de adaptador e campos de deslocamento de vetor de bit de interrupção de adaptador; Endereço de vetor de bit de interrupção de adaptador (AIBV) 772: Este campo especifica um endereço do vetor de bit de interrupção de adaptador para a função de adaptador. Este vetor é usado no processamento de interrupção; Deslocamento (offset) de vetor de bit de interrupção de adaptador 774: Este campo especifica o deslocamento do primeiro bit de vetor de bit de interrupção de adaptador para a função de adaptador; Endereço de sumário de interrupção de adaptador de bit (AISB) 776: Este campo provê um endereço designando o bit de sumário de interrupção de adaptador, que é opcionalmente usado no processamento de interrupção; Deslocamento de bit de sumário de interrupção de adaptador 778: Este campo provê o deslocamento para o vetor de bit de sumário de interrupção de adaptador; Endereço de Bloco de Medição de Função (FMB) 780: Este campo provê um endereço de um bloco de medição de função usado para coletar medições com relação à função de adaptador; Chave de Bloco de Medição de Função 7 82: Este campo inclui uma chave de acesso para acessar o bloco de medição de função; Controle de Notificação de Bit de sumário 784: Este campo indica se existe um vetor de bit de sumário está sendo usado; Token de Autorização de Instrução 786: Este campo é usado para determinar se um convidado de modo de armazenamento paginável está autorizado a executar instruções de PCI sem a intervenção do host.
[0067] Em um exemplo, na z/Architecture®, um convidado paginável é executado de maneira interpretativa através da instrução de Execução Interpretativa Inicial (SIE), no nivel 2 de interpretação. Por exemplo, o hipervisor de partição lógica (LPAR) executa a instrução de SIE para iniciar a partição lógica na memória fixa fisica. Se z/VM® é o sistema operacional naquela partição lógica, ele emite a instrução de SIE para executar as suas máquinas (virtuais) de convidados no seu armazenamento de V=V (virtual). Portanto, o hipervisor de LPAR usa SIE nivel 1, e o hipervisor z/VM® usa SIE nivel 2; e Formato de Tradução de Endereço 787: Este campo indica um formato selecionado para tradução de endereço da tabela de tradução de maior nivel a ser usada na tradução (por exemplo, tabela de segmento, 3a região, etc.).
[0068] O bloco de informação da informação designada na instrução de Controles de Função de PCI de Modificação é usado para modificar uma entrada de tabela de dispositivo selecionada, uma entrada de tabela de função e/ou outros controles de firmware associados com a função de adaptador designada na instrução. Através da modificação da entrada de tabela de dispositivo, entrada de tabela de função e/ou outros controles de firmware, certos serviços são providos para o adaptador. Estes serviços incluem, por exemplo, interrupções de adaptador; traduções de endereço; estado de erro reiniciado; carregamento/armazenamento bloqueado reiniciado; parâmetros de medição de função de ajuste; e controle de interceptação de ajuste.
[0069] Uma concretização da lógica associada com a instrução de Controles de Função de PCI de Modificação é descrita com referência à figura 8. Em um exemplo, a instrução é emitida por um sistema operacional (ou outra configuração) e executado pelo processador (por exemplo, firmware) que executa o sistema operacional. Nos exemplos aqui, a instrução e as funções de adaptador são baseadas em PCI. No entanto, em outros exemplos, uma arquitetura de adaptador diferente e instruções correspondentes podem ser usadas.
[0070] Em um exemplo, o sistema operacional provê os seguintes operandos para a instrução (por exemplo, em um ou mais registros designados pela instrução): a habilitação de função de PCI; o identificador de espaço de endereço de DMA; um controle de operação; e um endereço do bloco de informação de função.
[0071] Em referência à figura 8, inicialmente, uma determinação é feita como se a instalação que permite para uma instrução de Controles de Função de PCI de Modificação está instalada, CONSULTA 800. Esta determinação é feita, por exemplo, através da verificação de um indicador armazenado, por exemplo, em um bloco de controle. Se a instalação não está instalada, uma condição de exceção é provida, ETAPA 802. Caso contrário, uma determinação é feita como se a instrução fosse emitida por um convidado de modo de armazenamento paginável (ou outro convidado), CONSULTA 804. Se sim, o sistema operacional de host vai emular a operação para este convidado, ETAPA 806.
[0072] Caso contrário, uma determinação é feita como se um ou mais dos operandos estão alinhados, CONSULTA 808. Por exemplo, uma determinação é feita como se o endereço do bloco de informação de função está em um limite de palavra dupla. Em um exemplo, isto é opcional. Se os operandos não estão alinhados, então uma condição de exceção é provida, ETAPA 810.
[0073] Caso contrário, uma determinação é feita como se o bloco de informação de função é acessivel, CONSULTA 812. Se não for, então uma condição de exceção é provida, ETAPA 814. Caso contrário, uma determinação é feita como se o identificador provido nos operandos da instrução de Controles de Função de PCI de Modificação é habilitado, CONSULTA 816. Em um exemplo, esta determinação é feita através da verificação de um indicador de habilitação no identificador. Se o identificador não está habilitado, então uma condição de exceção é provida, ETAPA 818.
[0074] Se o identificador está habilitado, então o identificador é usado para localizar uma entrada de tabela de função, ETAPA 820. Ou seja, pelo menos uma porção do identificador é usado como um indice para a tabela de função para localizar a entrada de tabela de função correspondendo com a função de adaptador para a qual os parâmetros operacionais devem ser estabelecidos.
[0075] Uma determinação é feita como se a entrada de tabela de função foi encontrada, CONSULTA 822. Se não for, então uma condição de exceção é provida, ETAPA 824. Caso contrário, se a configuração que emite a instrução é um convidado, CONSULTA 826, então uma condição de exceção (por exemplo, interceptação para o host) é provida, ETAPA 828. Esta solicitação pode ser ignorada se a configuração não é um convidado ou outras autorizações podem ser verificadas, se forem designadas.
[0076] Uma determinação então é feita como se a função está habilitada, CONSULTA 830. Em um exemplo, esta determinação é feita através da verificação de um indicador de habilitação na entrada de tabela de função. Se ela não está habilitada, então uma condição de exceção é provida, ETAPA 832.
[0077] Se a função está habilitada, então uma determinação é feita como se a recuperação está ativa, CONSULTA 834. Se a recuperação está ativa como é determinado por um indicador de recuperação na entrada de tabela de função, então uma condição de exceção é provida, ETAPA 836. No entanto, se a recuperação não está ativa, então uma determinação adicional é feita como se a função está ocupada, CONSULTA 838. Esta determinação é feita através da verificação do indicador de ocupado na entrada de tabela de função. Se a função está ocupada, então uma condição de ocupado é provida, ETAPA 840. Com a condição de ocupado, a instrução pode ser tentada novamente, em vez de deixada.
[0078] Se a função não está ocupada, então uma determinação adicional é feita como se o formato de bloco de informação de função é válido, CONSULTA 842. Por exemplo, o campo de formato do FIB é verificado para determinar se este formato é suportado pelo sistema. Se ele é inválido, então uma condição de exceção é provida, ETAPA 844. Se o formato de bloco de informação de função é válido, então uma determinação adicional é feita como se o controle da operação especificado nos operandos da instrução é válido, CONSULTA 846. Ou seja, é o controle da operação um dos controles de operação especificados para esta instrução. Se ele é inválido, então uma condição de exceção é provida, ETAPA 848. No entanto, se o controle da operação é válido, então o processamento continua com o controle de operação especifico que é especificado.
[0079] Em um exemplo, o controle da operação é uma operação de interrupções de adaptador de registro, que é usado para controlar interrupções de adaptador. Em resposta a este controle de operação, os parâmetros de função de adaptador relevantes para as interrupções de adaptador são definidos na entrada de tabela de dispositivo com base nos conteúdos apropriados do bloco de informação de função.
[0080] Uma concretização da lógica associada com esta operação é descrita com referência à figura 9. Como um exemplo, os operandos para esta operação, que são obtidos a partir do bloco de informação de função, incluem, por exemplo: uma subclasse de interrupção (ISC); número de interrupções permitido (NOI); um deslocamento de vetor de bit de interrupção de adaptador (AIBVO); uma notificação de sumário (S) ; um deslocamento de vetor de bit de sumário de interrupção de adaptador (ABVSO); um endereço de vetor de bit de interrupção de adaptador (AIBV); e um endereço de vetor de bit de sumário de interrupção de adaptador (AISB).
[0081] Em referência à figura 9, inicialmente, uma determinação é feita como se o número de interrupções (NOIs) especificado no FIB é maior do que um máximo dependente do modelo, CONSULTA 900. Se for assim, então uma condição de exceção é provida, ETAPA 902. No entanto, se o número de interrupções não é maior do que o máximo dependente do modelo, então uma determinação adicional é feita como se o número de interrupções adicionado para o vetor de bit de interrupção de adaptador offset (NOI + AIBVO) é maior do que um máximo dependente do modelo, CONSULTA 904. Se for assim, então uma condição de exceção é provida, ETAPA 906. Se o NOI mais o AIBVO não é maior do que um máximo dependente do modelo, então uma determinação adicional é feita como se o Endereço de AIBV mais o NOI cobre um limite de 4k, CONSULTA 908. Se ele cobre o limite de 4k, então uma condição de exceção é provida, ETAPA 910.
[0082] Caso contrário, uma determinação é feita como se recursos suficientes estão disponíveis para quaisquer recursos necessários, ETAPA 912. Se não existem recursos suficientes, então uma condição de exceção é provida, ETAPA 914 .
[0083] Caso contrário, uma determinação é feita como se interrupções de adaptador já são registradas para esta função, ETAPA 916. Em uma concretização, isto pode ser determinado através da verificação de um ou mais dos parâmetros (por exemplo, em DTE/FTE). Em particular, parâmetros associados com as interrupções, tal como NOI, são verificados. Se os campos são povoados, então o adaptador é registrado para as interrupções. Se o adaptador já é registrado, então uma condição de exceção é provida, ETAPA 918. Caso contrário, os parâmetros de interrupção são obtidos a partir de FIB e posicionados na entrada de tabela de dispositivo e opcionalmente, na correspondente entrada de tabela de função (FTE) (ou outra localização especificada). Ainda, um indicador de habilitação de MSI é definido em DTE, ETAPA 920. Ou seja, os parâmetros de função de PCI relevantes para a interrupção de adaptador são definidos em DTE e opcionalmente, em FTE com base na informação recuperada a partir do bloco de informação de função. Estes parâmetros incluem, por exemplo, a ISC, NOI, AIBVO, S, AIBVSO, Endereço de AIBV e o Endereço de AISB.
[0084] Em adição ao dito acima, outro controle de operação que pode ser especificado é uma operação de interrupções de adaptador de cancelamento de registro, um exemplo do qual é descrito com referência à figura 10. Com esta operação, os parâmetros de função de adaptador relevantes para a interrupção de adaptador são redefinidos.
[0085] Em referência à figura 10, inicialmente, uma determinação é feita como se o adaptador especificado pelo identificador de função é registrado para as interrupções, CONSULTA 1000. Se não for, então uma condição de exceção é provida, ETAPA 1002. Caso contrário, os parâmetros de interrupção na entrada de tabela de função (ou outra localização) e entrada de tabela de dispositivo correspondente são definidos para zeros, CONSULTA 1004. Em um exemplo, estes parâmetros incluem a ISC, NOT, AIBVO, S, AIBSO, Endereço de AIBV e Endereço de AISB.
[0086] Como descrito acima, em uma concretização, para obter a informação com relação a uma função de adaptador, uma instrução de Processador Lógico de Chamada é usada. Uma concretização desta instrução é representada na figura 11A. Como mostrado, em um exemplo, uma instrução de Processador Lógico de Chamada (CLP) 1100 inclui um código de operação 1102 indicando que é a instrução de Processador Lógico de Chamada; e uma indicação para um comando 1104. Em um exemplo, esta indicação é um endereço de um bloco de requisito que descreve o comando a ser realizado, e a informação no bloco de requisito é dependente do comando. Exemplos de blocos de requisitos e correspondentes blocos de resposta para vários comandos são descritos com referência às figuras 11B-13B.
[0087] Em referência inicialmente à figura 11B, um bloco de requisito para um comando de funções de PCI de lista é provido. O comando de funções de PCI de lista é usado para obter uma lista de funções de PCI que são designadas para a configuração de requisito (por exemplo, o sistema operacional de requisição). Um bloco de requisito 1120 inclui um número de parâmetros, tais como, por exemplo: Campo de comprimento 1122: Este campo indica o comprimento do bloco de requisito; Código de Comando 1124: Este campo indica o comando de funções de PCI de lista; e Token de Continuação 1126: Este campo é um inteiro que é usado tanto para iniciar um novo comando de funções de PCI de lista ou resumir um comando de funções de PCI de lista anterior, como descrito em detalhe adicional abaixo.
[0088] Quando o campo de token de continuação no bloco de requisito de comando inclui, por exemplo, um valor de zero, uma nova lista de funções de PCI é solicitada. Quando o campo de token de continuação inclui, por exemplo, um valor diferente de zero, que foi retornado a partir de um comando de funções de PCI de lista anterior, uma continuação de uma lista anterior de funções de PCI é solicitada.
[0089] Em resposta à emissão e ao processamento da instrução de Processador Lógico de Chamada para um comando de funções de PCI de lista, um bloco de resposta é retornado. Uma concretização do bloco de resposta é representada na figura 11C. Em um exemplo, um bloco de resposta 1150 para um comando de funções de PCI de lista inclui: Campo de comprimento 1152: Este campo indica o comprimento do bloco de resposta; Código de Resposta 1154: Este campo indica um status do comando; Lista de Função de PCI 1156: Este campo indica uma lista de uma ou mais funções de PCI disponível para o sistema operacional de requisição; Token de continuação 1158: Este campo indica se uma continuação de uma lista anterior de funções de PCI é solicitada. Em um exemplo, quando o ato de Token de continuação no bloco de requisito e o ato de Token de continuação no bloco de resposta são zero, todas as funções de PCI designadas para a configuração de requisito são representadas na lista de função de PCI; se o ato de Token de continuação no bloco de requisito é zero e o ato de Token de continuação no bloco de resposta não é zero, funções de PCI adicionais designadas para a configuração de requisito podem existir que não foram representadas na lista; se o ato de Token de continuação no bloco de requisito não é zero e o ato de Token de continuação no bloco de resposta é zero, a partir do ponto de resumo, remanescentes funções de PCI designadas para a configuração de requisito são representadas na lista; quando ambos os atos de Token de continuação no requisito e bloco de resposta não são zero a partir do ponto de resumo, funções de PCI adicionais designadas para a configuração de requisito podem existir que não foram representadas em qualquer lista de função de PCI associada. O ato de Token de continuação permanece válido para um periodo indefinido de tempo após ser retornado, mas pode ser inválido devido a uma variedade de razões dependentes do modelo, incluindo tempo decorrido da carga do sistema; Dados Dependentes do Modelo 1160: Este campo inclui dados que dependem do sistema; Número de funções de PCI 1162: Este campo indica o número máximo de funções de PCI suportado pela instalação; e Tamanho de Entrada 1164: Este campo indica o tamanho de cada entrada na lista de função de PCI.
[0090] Detalhes adicionais com relação à lista de função de PCI são descritos com referência à figura 11D. Em um exemplo, a lista de função de PCI inclui uma pluralidade de entradas e cada entrada 1156 inclui a seguinte informação, como um exemplo: ID de dispositivo 1170: Este campo indica o adaptador de E/S associado com a correspondente função de PCI; ID de Fornecedor 1172: Este campo identifica o fabricante do adaptador de E/S associado com a correspondente função de PCI; Identificador de Função 1174: Este campo inclui um identificador persistente da função de PCI; Identificador de função 1176: Este campo identifica a função de PCI. A habilitação de função de PCI armazenada é um identificador geral quando um bit especificado do identificador é zero, e é um identificador habilitado quando aquele bit é um. Se a função de PCI é desabilitada, uma habilitação de função de PCI geral é armazenada. Se a função de PCI é habilitada, uma habilitação de função de PCI habilitada é armazenada. A habilitação de função de PCI não é, em um exemplo, persistente além de um IPL, que difere da ID de função de PCI, que é persistente e é definido para a vida da definição de configuração de definição de configuração de E/S; e Estado de Configuração 1178: Este campo indica o estado da função de PCI. Quando este indicador é, por exemplo, zero, o estado está em espera, e quando, por exemplo, um, o estado está configurado. Quando está em espera, a habilitação de função de PCI é a habilitação de função de PCI geral, e quando configurado, é tanto a habilitação de função de PCI geral quanto à habilitada dependendo de se a função de PCI é habilitada.
[0091] Subsequente à obtenção da lista de funções de adaptador, informação pode ser obtida com relação aos atributos de uma função selecionada como designado por uma habilitação de função de PCI especificada. Esta informação pode ser obtida emitindo uma instrução de CLP com um comando de função de solicitação.
[0092] Uma concretização do bloco de requisito para um comando de função de PCI de solicitação é descrita com referência à figura 12A. Em um exemplo, bloco de pedido 1200 inclui, por exemplo: Campo de comprimento 1202: Este campo indica o comprimento do bloco de requisito; Código de comando 1204: Este campo indica o comando de função de PCI de solicitação; e Identificador de função 1206: Este campo inclui a habilitação de função de PCI (por exemplo, geral ou habilitada) que designa a função de PCI a ser solicitada.
[0093] Em resposta à emissão da instrução de Processador Lógico de Chamada para o comando de função de PCI de solicitação, um bloco de resposta é retornado. Uma concretização do bloco de resposta é representada na figura 12B. Em um exemplo, um bloco de resposta 1250 inclui os seguintes: Comprimento 1252: Este campo indica o comprimento do bloco de resposta; Código de Resposta 1254: Este campo indica um status do comando; ID de Grupo de Função 1256: Este campo indica o identificador de grupo de função de PCI. O identificador de grupo de função de PCI é usado para associar um grupo de funções de PCI com um conjunto de atributos (também referido aqui como características) . Cada função de PCI com o mesmo identificador de grupo de função de PCI possui o mesmo conjunto de atributos; ID de Função 1258: um id de função de PCI é um identificador persistente da função de PCI originalmente especificado pela habilitação de função de PCI e é definido para a vida da definição de configuração de E/S; Adaptador de Canal Fisico 1260: Este valor representa uma identificação dependente do modelo da localização do adaptador de E/S fisico que corresponde com a função de PCI; Registros de endereço de base (BARs) 1 ...n 1262: Este campo inclui uma pluralidade de inteiros não sinalizados, designada como BARo - BARn, que estão associados com a função de PCI originalmente especificada, e em que os valores também são armazenados nos registros de endereço de base associados com a função de PCI. Cada BAR especifica o endereço de partida de um espaço de memória ou espaço de E/S dentro do adaptador, e também indica o tipo de espaço de endereço, ou seja, se é um espaço de memória de 64 ou 32 bits, ou um espaço de E/S de 32 bits, como os exemplos; Tamanho 1 ....n 1264: Este campo inclui uma pluralidade de inteiros não sinalizados, designado como SIZEo - SIZEn. O valor de um campo de Tamanho, quando diferente de zero, representa o tamanho de cada espaço de endereço com cada entrada correspondendo com um BAR descrito anteriormente. DMA Disponível Inicial 1266: Este campo inclui um endereço que indica o início de uma faixa de endereços de PCI que estão disponíveis para operações de DMA; DMA Disponível Final 1268: Este campo inclui um valor que indica o fim de uma faixa de endereços de PCI que estão disponíveis para operações de DMA.
[0094] Em adição à obtenção de atributos com relação à função de adaptador específica, atributos também podem ser obtidos com relação ao grupo que inclui esta função. Estes atributos comuns podem ser obtidos a partir da emissão de uma instrução de CLP com um comando de grupo de função de PCI de solicitação. Este comando é usado para obter um conjunto de características que são suportadas para um grupo de uma ou mais funções de PCI designadas pelo identificador de grupo de função de PCI especificado. O identificador de grupo de função de PCI é usado para associar um grupo de funções de PCI com o mesmo conjunto de características. Uma concretização de um bloco de requisito para o comando de grupo de função de PCI de solicitação é descrito com referência à figura 13A. Em um exemplo, o bloco de pedido 1300 inclui os seguintes: Campo de comprimento 1302: Este campo indica o comprimento do bloco de requisito; Código de comando 1304: Este campo indica o comando de grupo de função de PCI de solicitação; e ID de grupo de função 1306: Este campo especifica o identificador de grupo de função de PCI para o qual os atributos devem ser obtidos.
[0095] E resposta à emissão e ao processamento da instrução de Processador Lógico de Chamada com um comando de grupo de função de PCI de consulta, um bloco de resposta é retornado. Uma concretização do bloco de resposta é representada na figura 13B. Em um exemplo, um bloco de resposta 1350 inclui: Campo de comprimento 1352: Este campo indica o comprimento do bloco de resposta; Código de resposta 1354: Este campo indica um status do comando; Número de Interrupções 1356: Este campo indica o número máximo de consecutivos números de vetor de MSI (isto é, indicadores de evento de interrupção) que são suportados pela instalação de PCI para cada função de PCI no grupo de função de PCI especificado. Os valores válidos possíveis do número de interrupções estão na faixa de zero a 2.048, em um exemplo; Versão 1358: Este campo indica a versão da especificação de PCI que é suportada pela instalação de PCI em que o grupo de funções de PCI designadas pelo identificador de grupo de PCI especificado está anexado; Quadro 1362: Este campo indica os tamanhos de quadro (ou página) suportados para a tradução de endereço de E/S; Intervalo de Atualização de Bloco de Medição 1364: Este é um valor indicando o intervalo de tempo aproximado (por exemplo, em milissegundos) em que o bloco de medição da função de PCI está atualizando; Máscara de Espaço de Endereço de DMA 1366: Este é um valor usado para indicar quais bits em um endereço de PCI são usados para identificar um espaço de endereço de DMA; e Endereço de MSI 1368: Este é um valor que é para ser usado para requisitos de interrupção de sinal de mensagem.
[0096] Os comandos de função e de lista de solicitação descritos acima recuperam informação a partir de, por exemplo, a tabela de função. No momento de inicialização, ou após um uma conexão à quente de um adaptador, firmware realiza uma caminhada de barramento para determinar a localização do adaptador e determina as suas características básicas. Esta informação é armazenada pelo firmware para a entrada de tabela de função (FTE) para cada adaptador. Acessibilidade para o adaptador é determinada com base na politica definida por um administrador de sistema e também é definida por firmware para o FTE. Os comandos de função e lista de solicitação então podem recuperar esta informação e armazenar a mesma nos seus respectivos blocos de resposta acessíveis para o sistema operacional.
[0097] Adicionalmente, a informação de grupo está baseada em uma dada infraestrutura de E/S de sistema e as capacidades do firmware e do hub de E/S. Esta pode ser armazenada em FTE ou qualquer outra localização conveniente para a recuperação posterior durante o processamento de solicitação. Em particular, o comando de grupo de solicitação recupera a informação e armazena a mesma no seu bloco de resposta acessível para o sistema operacional.
[0098] Descrita em detalhe acima está uma capacidade para converter uma interrupção de sinal de mensagem de PCI para uma notificação de evento de adaptador de E/S para um sistema operacional. Isto provê para um requisito de interrupção de latência baixa; uma distribuição de MSIs a partir de um número relativamente grande de funções de PCI para o sistema operacional; e a retenção da variante da designação de vetor de MSI que ajusta a MSI para a arquitetura de notificação de evento de adaptador. Se ela se adapta para permitir que o hub de E/S se conecte com um número relativamente grande de funções de PCI e elimina o problema de cada escrita para um vetor de MSI que gera uma interrupção única.
[0099] Nas concretizações descritas aqui, os adaptadores são adaptadores de PCI. PCI, como usado aqui, se refere a quaisquer adaptadores implementados de acordo com uma especificação com base no PCT como definida pelo Grupo de Interesse Especial de Interconexão de Componente Periférico (PCI-SIG) (www.pcisig.com/home), incluindo, mas não limitado a, PCI ou PCIe. Em um particular exemplo, a Interconexão de Componente Periférico Expressa (PCIe) é um padrão de interconexão de nivel de componente que define um protocolo de comunicação bidirecional para as transações entre adaptadores de E/S e sistemas de host. Comunicações de PCIe estão encapsuladas em pacotes de acordo com o padrão de PCIe para a transmissão em um barramento de PCIe. Transações que se originam em adaptadores de E/S e que terminam em sistemas de host são referidas como transações ascendentes. Transações que se originam em sistemas de host e terminam em adaptadores de E/S são referidas como transações descendentes. A topologia de PCIe está baseada em ligações unidirecionais de ponto a ponto que são pareadas (por exemplo, uma ligação ascendente, uma ligação descendente) para formar o barramento de PCIe. 0 padrão de PCIe é mantido e publicado por PCI-SIG.
[0100] Como será percebido por um perito na técnica, aspectos da presente invenção podem ser incorporados como um sistema, método ou produto de programa de computador. De maneira apropriada, aspectos da presente invenção podem tomar a forma de uma concretização inteiramente de hardware, uma concretização inteiramente de software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização que combina aspectos de software e de hardware que podem todos ser referidos aqui em geral como um "circuito,""módulo"ou "sistema". Adicionalmente, aspectos da presente invenção podem tomar a forma de um produto de programa de computador incorporado em um ou mais meios legíveis por computador tendo código de programa legivel por computador incorporado no mesmo.
[0101] Qualquer combinação de um ou mais meios legiveis por computador pode ser usada. O meio de armazenamento legivel por computador pode ser um meio de armazenamento legivel por computador. Um meio de armazenamento legivel por computador pode ser, por exemplo, mas não é limitado a um dispositivo, aparelho ou sistema de armazenamento eletrônico, um dispositivo, aparelho ou sistema de armazenamento magnético, um dispositivo, aparelho ou sistema de armazenamento óptico, um dispositivo, aparelho ou sistema de armazenamento eletromagnético, um dispositivo, aparelho ou sistema de armazenamento de semicondutor, ou qualquer combinação adequada dos anteriores. Exemplos mais específicos (uma lista não exaustiva) de mais exemplos específicos do meio de armazenamento legivel por computador inclui a sequência: um disquete de computador portátil, um disco rigido, uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória somente de leitura apagável programável (EPROM ou memória de Flash), uma fibra óptica, uma memória somente de leitura de disco compacto portátil (CD-ROM), um dispositivo de armazenamento óptico, um dispositivo de armazenamento magnético, e qualquer combinação adequada dos anteriores. No contexto deste documento, um meio de armazenamento legivel por computador pode ser qualquer meio tangível que pode conter ou armazenar um programa para o uso por ou em conjunto com um dispositivo, aparelho ou sistema de execução de instrução.
[0102] Em referência agora à figura 14, em um exemplo, um produto de programa de computador 1400 inclui, por exemplo, um ou mais meios de armazenamento legíveis por computador 1402 para armazenar meios de código de programa legivel por computador ou lógica 1404 nos mesmos para prover e facilitar um ou mais aspectos da presente invenção.
[0103] O código de programa incorporado em um meio legivel por computador pode ser transmitido usando um meio apropriado, incluindo, mas não limitado a sem fio, cabeado, cabo de fibra óptica, RE, etc., ou qualquer combinação adequada dos anteriores.
[0104] O código de programa de computador para realizar operações para aspectos da presente invenção pode ser escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objeto tal como Smalltalk, C++ ou semelhantes, e linguagens de programação de procedimento convencional, tal como a linguagem de programação "C", Assembler ou linguagens de programação similares. O código de programa pode executar inteiramente no computador de usuário, parcialmente no computador de usuário, como um pacote de software remoto, parcialmente no computador de usuário e parcialmente em um computador remoto ou inteiramente no computador remoto ou servidor. No último cenário, o computador remoto pode ser conectado com o computador de usuário através de qualquer tipo de rede, incluindo uma rede de área local (LAN) ou uma rede de longa distância (WAN) , ou a conexão pode ser feita para um computador externo (por exemplo, através da Internet usando um Provedor de Serviço de Internet).
[0105] Aspectos da presente invenção são descritos aqui com referência às ilustrações de fluxograma e/ou diagramas de bloco de métodos, aparelho (sistemas), e produtos de programa de computador de acordo com concretizações da invenção. Será entendido que cada bloco das ilustrações de fluxograma e/ou diagramas de bloco, e combinações de blocos nas ilustrações de fluxograma e/ou diagramas de bloco, podem ser implementadas pelas instruções de programa legivel por computador. Estas instruções de programa legivel por computador podem ser providas para um processador de um computador de uso geral, computador de aplicação especifica, ou outro aparelho de processamento de dados programável para produzir uma máquina, tal que as instruções, que executam através do processador do computador ou outro aparelho de processamento de dados programável, criar meios para implementar as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[0106] Estas instruções de programa legivel por computador também podem ser armazenadas em um meio de armazenamento legivel por computador que pode levar um computador, um aparelho de processamento de dados programável, e/ou outros dispositivos a funcionar de uma maneira particular, tal que o meio de armazenamento legivel por computador tendo instruções armazenadas no mesmo compreende um artigo de fabricação incluindo instruções que implementam aspectos da função/ato especificado no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[0107] As instruções de programa legiveis por computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável, ou outro dispositivo para causar uma série de etapas operacionais a ser realizadas no computador, outro aparelho programável ou outro dispositivo para produzir um processo implementado por computador, tal que as instruções que executam no computador, outro aparelho programável, ou outro dispositivo implementa as funções/atos especificados no fluxograma e/ou bloco ou blocos do diagrama de bloco.
[0108] O fluxograma e os diagramas de blocos nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programa de computador de acordo com várias concretizações da presente invenção. Neste sentido, cada bloco no fluxograma ou diagramas de blocos pode representar um módulo, segmento, ou porção de instruções, que compreende uma ou mais instruções executáveis para implementar as funções lógicas especificadas. Em algumas implementações alternativas, as funções observadas no bloco podem ocorrer fora da ordem observada nas figuras. Por exemplo, dois blocos mostrados em sucessão, de fato, podem ser executados substancialmente concorrentemente, ou os blocos algumas vezes podem ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também será notado que cada bloco dos diagramas de bloco e/ou ilustração de fluxograma, e combinações de blocos nos diagramas de bloco e/ou ilustração de fluxograma, podem ser implementados por sistemas com base em hardware de aplicação especifica que realizam as funções especificadas ou atos especificados ou realizar combinações de instruções de computador e hardware de aplicação especifica.
[0109] Em adição ao dito acima, um ou mais aspectos podem ser providos, oferecidos, distribuídos, gerenciados, servidos, etc. por um serviço provido que oferece o gerenciamento de ambientes de consumidor. Por exemplo, o provedor de serviço pode criar, manter, suportar, etc. código de computador e/ou uma infraestrutura de computador que realiza um ou mais aspectos para um ou mais consumidores. No retorno, o provedor de serviço pode receber pagamento a partir de um consumidor sob uma assinatura e/ou acordo de taxa, como exemplos. Adicionalmente ou alternativamente, o provedor de serviço pode receber pagamento a partir da venda de conteúdo de propaganda para uma ou mais terceiras partes.
[0110] Em um aspecto da presente invenção, um aplicativo pode ser distribuído para realizar um ou mais aspectos da presente invenção. Como um exemplo, a distribuição de um aplicativo compreende prover infraestrutura de computador operável para realizar um ou mais aspectos da presente invenção.
[0111] Como um aspecto adicional da presente invenção, uma infraestrutura de computação pode ser distribuída compreendendo integrar código legivel por computador em um sistema de computação, em que o código em combinação com o sistema de computação é capaz de realizar um ou mais aspectos da presente invenção.
[0112] Como mais um aspecto adicional da presente invenção, um processo para integrar infraestrutura de computação compreendendo integrar código legivel por computador em um sistema de computador pode ser provido. O sistema de computador compreende um meio legivel por computador, em que o meio de computador compreende uma ou mais concretizações. O código em combinação com o sistema de computador é capaz de realizar um ou mais aspectos da presente invenção.
[0113] Apesar de várias concretizações serem descritas acima, estas são apenas exemplos. Por exemplo, ambientes de computação de outras arquiteturas podem incorporar e usar um ou mais aspectos da presente invenção. Como os exemplos, servidores diferentes do que servidores do tipo System z®, tais como servidores Power Systems ou outros servidores oferecidos por International Business Machines Corporation, ou servidores de outras companhias podem incluir, usar e/ou beneficiar a partir de um ou mais aspectos da presente invenção. Adicionalmente, apesar de no exemplo aqui, os adaptadores e o hub de PCI são considerados uma parte do servidor, em outras concretizações, eles não precisam ser necessariamente considerados uma parte do servidor, mas simplesmente podem ser considerados como sendo acoplados com a memória de sistema e/ou outros componentes de um ambiente computacional. O ambiente computacional não precisam ser um servidor. Adicionalmente, apesar de os adaptadores serem com base em PCI, um ou mais aspectos da presente invenção são utilizáveis com outros adaptadores ou outros componentes de E/S. O adaptador e o adaptador de PCI são apenas exemplos. Adicionalmente, um ou mais aspectos da presente invenção são aplicáveis aos esquemas de interrupção diferentes do que MSI de PCI. Ainda adicionalmente, apesar de os exemplos serem descritos em que bits são definidos, em outras concretizações, bytes ou outros tipos de indicadores devem ser definidos. Além disso, o DTE pode incluir mais, menos ou diferente informação. Muitas outras variações são possíveis.
[0114] Adicionalmente, outros tipos de ambientes de computação podem se beneficiar dos um ou mais aspectos da presente invenção. Como um exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa é útil que inclui pelo menos dois processadores acoplados diretamente ou indiretamente com elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, memória local empregada durante a execução atual do código de programa, armazenamento fisico, e memória de cache que proveem armazenamento temporário de pelo menos some código de programa de maneira a reduzir o número de vezes que o código deve ser recuperado a partir do armazenamento fisico durante a execução.
[0115] Dispositivos de entrada/saida ou E/S (incluindo, mas não limitado a teclados, monitores, dispositivos ponteiros, DASD, fita, CDs, DVDs, pen drives e outros meios de memória, etc.) podem ser acoplados com o sistema tanto diretamente quanto através de controladores de E/S intervenientes. Adaptadores de rede também podem ser acoplados com o sistema para permitir que o sistema de processamento de dados seja acoplado com outros sistemas de processamento de dados ou impressoras remotas ou dispositivos de armazenamento através de redes públicas ou privadas intervenientes. Modems, modems de cabo, e placas Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[0116] Em referência à figura 15, componentes representativos de um sistema de computador de host 5000 para implementar um ou mais aspectos da presente invenção são retratados. O computador de host representativo 5000 compreende uma ou mais CPUs 5001 em comunicação com memória de computador (isto é, armazenamento central) 5002, bem como interfaces de E/S para dispositivos de meio de armazenamento 5011 e redes 5010 para comunicar com outros computadores ou SANs e semelhantes. A CPU 5001 está em conformidade com uma arquitetura tendo um conjunto de instrução arquitetada e funcionalidade arquitetada. A CPU 5001 pode ter tradução dinâmica de endereço (DAT) 5003 para transformar endereços de programa (endereços virtuais) para endereços reais de memória. Um DAT tipicamente inclui um translation lookaside buffer (TLB) 5007 para armazenar temporariamente traduções de forma que acessos posteriores ao bloco de memória de computador 5002 não necessitem do atraso de tradução de endereço. Tipicamente, um cache 5009 é empregado entre a memória de computador 5002 e o processador 5001. O cache 5009 pode ser hierárquico tendo um cache grande disponível para mais do que uma CPU e caches menores mais rápidos (de menor nivel) entre o grande cache e cada CPU. Em algumas implementações, os caches de menor nivel são divididos para prover caches de menor nivel separados para buscar instrução e acessos de dados. Em uma concretização, uma instrução é buscada a partir de memória 5002 por uma unidade de busca de instrução 5004 através de um cache 5009. A instrução é decodificada em uma unidade de decodificação de instrução 5006 e despachada (com outras instruções em algumas concretizações) para unidade ou unidades de execução de instrução 5008. Tipicamente várias unidades de execução 5008 são empregadas, por exemplo, uma unidade de execução de aritmética, uma unidade de execução de ponto flutuante e uma unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução, acessando os operandos a partir dos registros especificados de instrução ou memória como for necessário. Se um operando deve ser acessado (carregado ou armazenado) a partir de memória 5002, uma unidade de carregamento/armazenamento 5005 tipicamente indica o acesso sob controle da instrução sendo executada. Instruções podem ser executadas nos circuitos de hardware ou no microcódigo interno (firmware) ou por uma combinação de ambos.
[0117] Como notado, um sistema de computador inclui informação no armazenamento local (ou principal), bem como endereçamento, proteção, e referência e gravação de alteração. Alguns aspectos de endereçamento inclui o formato dos endereços, o conceito dos espaços de endereço, os vários tipos de endereços, e a maneira em que um tipo de endereço é traduzido para outro tipo de endereço. Parte do armazenamento principal inclui permanentemente localizações de armazenamento designadas. O armazenamento principal provê o sistema com armazenamento de dados de acesso rápido diretamente endereçável. Ambos os dados e programas devem ser carregados no armazenamento principal (a partir dos dispositivos de entrada) antes de eles poderem ser processados.
[0118] O armazenamento principal pode incluir um ou mais armazenamentos temporários de acesso rápido menores, algumas vezes chamados de caches. Um cache tipicamente é associado fisicamente com a CPU ou um processador de E/S. Os efeitos, exceto no desempenho, da construção fisica e o uso de meios de armazenamento distintos em geral não podem ser observados pelo programa.
[0119] Cachês separados podem ser mantidos para instruções e para operandos de dados. Informação dentro do cache é mantida nos bytes contíguos em um limite integral chamado de um bloco de cache ou linha de cache (ou linha, por abreviação). Um modelo pode prover uma instrução de EXTRACT CACHE ATTRIBUTE que retorna o tamanho de uma linha de cache em bytes. Um modelo também pode prover PREFETCH DATA e instruções PREFETCH DATA RELATIVE LONG que efetuam a busca prévia de armazenamento para os dados ou cache de instrução ou a liberação de dados a partir do cache.
[0120] O armazenamento é observado como uma string horizontal longa de bits. Para a maioria das operações, acessos para o armazenamento prosseguem em uma sequência da esquerda para direita. A string de bits é subdividida nas unidades de oito bits. Uma unidade de oito bits é chamada de um byte, que é o bloco de construção básico de todos os formatos de informação. Cada localização de byte no armazenamento é identificada por um inteiro não negativo único, que é o endereço daquela localização de byte ou, simplesmente, o endereço de byte. Adjacentes localizações de byte possuem consecutivos endereços, partindo com 0 na esquerda e prosseguindo em uma sequência da esquerda para direita. Endereços são inteiros binários não assinados e são 24, 31 ou 64 bits.
[0121] Informação é transmitida entre o armazenamento e a CPU ou um subsistema de canal um byte, ou um grupo de bytes, em um momento. A menos que seja especificado de outra maneira, por exemplo, na z/Architecture®, um grupo de bytes no armazenamento é endereçado pelo byte mais da esquerda do grupo. O número de bytes no grupo é tanto implicado ou explicitamente especificado pela operação a ser realizado. Quando usado em uma operação de CPU, um grupo de bytes é chamado de um campo. Dentro de cada grupo de bytes, por exemplo, na z/Architecture®, bits são numerados em uma sequência da esquerda para direita. Na z/Architecture®, os bits mais da esquerda algumas vezes são referidos como os bits de "maior ordem" e os bits mais da direita como os bits de "menor ordem". Números de bit não são endereços de armazenamento, no entanto. Apenas bytes podem ser endereçados. Para operar nos bits individuais de um byte no armazenamento, todo o byte é acessado. Os bits em um byte são numerados 0 a 7, a partir da esquerda para direita (por exemplo, na z/Architecture®) . Os bits em um endereço podem ser numerados 8-31 ou 40-63 para endereços de 24 bit, ou 1- 31 ou 33-63 para endereços de 31 bit; eles são numerados 0- 63 para endereços de 64 bits. Dentro de qualquer outro formato de comprimento fixado de múltiplos bytes, os bits que compõem o formato são numerados consecutivamente partindo de 0. Para os propósitos de detecção de erro, e preferivelmente para correção, um ou mais bits de verificação podem ser transmitidos com cada byte ou com um grupo de bytes. Tais bits de verificação são gerados automaticamente pela máquina e não podem ser controlados diretamente pelo programa. Capacidades de armazenamento são expressas no número de bytes. Quando o comprimento de um campo de operando de armazenamento é implicado pelo código de operação de uma instrução, o campo é dito de ter um comprimento fixo, que pode ser um, dois, quatro, oito, ou dezesseis bytes. Maiores campos podem ser implicados para algumas instruções. Quando o comprimento de um campo de operando de armazenamento não é implicado, mas é declarado explicitamente, o campo é dito de ter um comprimento variável. Operandos de comprimento variável podem variar no comprimento pelos incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando informação é colocada no armazenamento, os conteúdos apenas destas localizações de byte são substituídos que são incluídas no campo designado, mesmo que a largura do caminho fisico para o armazenamento pode ser maior do que o comprimento do campo sendo armazenado.
[0122] Certas unidades de informação devem estar em um limite integral no armazenamento. Um limite é chamado de integral para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo do comprimento da unidade em bytes. Nomes especiais são dados para os campos de 2, 4, 8 e 16, bytes em um limite integral. Uma meia palavra é um grupo de dois bytes consecutivos em um limite de dois bytes e é o bloco de construção básico das instruções. Uma palavra é um grupo de quatro bytes consecutivos em um limite de quatro bytes. Uma palavra dupla é um grupo de oito bytes consecutivos em um limite de oito bytes. Uma palavra quádrupla é um grupo de 16 bytes consecutivos em um limite de 16 bytes. Quando endereços de armazenamento designam meias palavras, palavras, palavras duplas, e palavras quádruplas, a representação binária do endereço contém um, dois, três ou quatro, bits zero mais a direita, respectivamente. Instruções devem estar em limites integrais de dois bytes. Os operandos de armazenamento da maioria das instruções não possuem requisitos de alinhamento limite.
[0123] Nos dispositivos que implementam caches separados para instruções e operandos de dados, um atraso significativo pode ocorrer se o programa se armazena em uma linha de cache a partir da qual as instruções são subsequentemente buscadas, independentemente de se o armazenamento altera as instruções que são buscadas subsequentemente.
[0124] Em uma concretização, a invenção pode ser praticada por software (algumas vezes referido como código interno licenciado, firmware, microcódigo, milicódigo, pico- código e semelhantes, qualquer um dos quais pode ser consistente com a presente invenção). Em referência à figura 15, código de programa de software que incorpora a presente invenção tipicamente é acessado pelo processador 5001 do sistema de host 5000 a partir de dispositivos de meio de armazenamento de longo prazo 5011, tal como um drive de CD- ROM, drive de fita ou disco rigido. O código de programa de software pode ser incorporado em qualquer de uma variedade de meios conhecidos para o uso com um sistema de processamento de dados, tal como um disquete, disco rigido, ou CD-ROM. O código pode ser distribuído em tal meio, ou pode ser distribuído para usuários a partir de memória de computador 5002 ou armazenamento de um sistema de computador sobre uma rede 5010 para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[0125] O código de programa de software inclui um sistema operacional que controla a função e a interação de vários componentes de computador e um ou mais programas de aplicativo. Código de programa normalmente é paginado a partir do dispositivo de midia de armazenamento 5011 para o armazenamento de computador de velocidade relativamente maior 5002 onde está disponível para processar pelo processador 5001. As técnicas e métodos para incorporar o código de programa de software na memória, no meio fisico, e/ou distribuir código de software através das redes são bem conhecidos e não será adicionalmente discutido aqui. Código de programa, quando criado e armazenado em um meio tangível (incluindo, mas não limitado aos módulos de memória eletrônica (RAM), memória de flash, discos compactos (CDs), DVDs, fita magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legivel por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[0126] A figura 16 ilustra uma estação de trabalho representativa ou sistema de hardware de servidor em que uma ou mais concretizações podem ser praticadas. O sistema 5020 da figura 16 compreende um representativo sistema de computador de base 5021, tal como um computador pessoal, uma estação de trabalho ou um servidor, incluindo dispositivos periféricos opcionais. O sistema de computador de base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar e permitir a comunicação entre os processadores 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 com a memória 5025 e armazenamento de longo prazo 5027 que pode incluir um disco rigido (incluindo qualquer um de um meio magnético, CD, DVD e memória flash, por exemplo) ou um drive de fita, por exemplo. O sistema 5021 também deve incluir um adaptador de interface de usuário, que conecta o microprocessador 5026 através do barramento com um ou mais dispositivos de interface, tal como um teclado 5024, um mouse 5023, uma impressora/scanner 5030 e/ou outros dispositivos de interface, que podem ser qualquer dispositivo de interface de usuário, tal como uma tela sensível ao toque, bloco de entrada digitalizado, etc. O barramento também conecta um dispositivo de exibição 5022, tal como uma tela de LCD ou monitor, com o microprocessador 5026 através de um adaptador de exibição.
[0127] O sistema 5021 pode se comunicar com outros computadores ou redes de computadores por meio de um adaptador de rede capaz de se comunicar 5028 com uma rede 5029. Exemplos de adaptadores de rede são canais de comunicações, token ring, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar usando uma interface sem fio, tal como um cartão de CDPD (dados de pacote digital de celular). O sistema 5021 pode estar associado com tais outros computadores em uma rede de área local (LAN) ou uma rede de longa distância (WAN), ou o sistema 5021 pode ser um cliente em um arranjo de cliente/servidor com outro computador, etc. Todas estas configurações, bem como o hardware e o software de comunicações apropriados, são conhecidos na técnica.
[0128] A figura 17 ilustra uma rede de processamento de dados 5040 em que uma ou mais concretizações podem ser praticadas. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tal como uma rede sem fios e uma rede com fios, cada uma das quais pode incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Adicionalmente, como os versados na técnica vão perceber, uma ou mais LANs podem estar incluídas, onde a LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas com um processador de host.
[0129] Ainda em referência à figura 17, as redes também podem incluir computadores ou servidores mainframe, tais como um computador gateway (servidor de cliente 5046) ou servidor de aplicativo (servidor remoto 5048 que pode acessar um repositório de dados e também pode ser acessado diretamente a partir de uma estação de trabalho 5045). Um computador gateway 5046 serve como um ponto de entrada para cada rede individual. Um gateway é necessário quando se conecta um protocolo de rede com outro. O gateway 5046 pode ser preferivelmente acoplado com outra rede (a Internet 5047, por exemplo) por meio de uma ligação de comunicações. O gateway 5046 também pode ser acoplado diretamente com uma ou mais estações de trabalho 5041, 5042, 5043, 5044 usando uma ligação de comunicações. O computador gateway pode ser implementado usando um servidor de z System® de IBM eServer disponível a partir de International Business Machines Corporation.
[0130] Em referência concorrentemente à figura 16 e figura 17, código de programação de software 5031 que pode incorporar um ou mais aspectos pode ser acessado pelo processador 5026 do sistema 5020 a partir da midia de armazenamento de longo prazo 5027, tal como um drive de CD- ROM ou disco rigido. O código de programação de software pode ser incorporado em qualquer um de uma variedade de meios conhecidos para o uso com um sistema de processamento de dados, tal como um disquete, disco rigido, ou CD-ROM. O código pode ser distribuído em tal meio, ou pode ser distribuído para os usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador sobre uma rede para outros sistemas de computador para o uso pelos usuários de tais outros sistemas.
[0131] Alternativamente, o código de programação pode ser incorporado na memória 5025, e acessado pelo processador 5026 usando o barramento de processador. Tal código de programação inclui um sistema operacional que controla a função e interação dos vários componentes de computador e um ou mais programas de aplicativo 5032. Código de programa normalmente é paginado a partir da midia de armazenamento 5027 para memória de alta velocidade 5025 onde está disponível para processar pelo processador 5026. As técnicas e métodos para incorporar código de programação de software na memória, no meio fisico, e/ou distribuir código de software através de redes são bem conhecidos e não serão adicionalmente discutidos aqui. Código de programa, quando criado e armazenado em um meio tangivel (incluindo, mas não limitado aos módulos de memória eletrônica (RAM), memória de flash, discos compactos (CDs), DVDs, fita magnética e semelhantes geralmente é referido como um "produto de programa de computador". O produto de programa de meio de computador tipicamente é legivel por um circuito de processamento preferivelmente em um sistema de computador para a execução pelo circuito de processamento.
[0132] O cache que está mais prontamente disponível para o processador (normalmente mais rápido e menor do que outras caches do processador) é o menor cache (LI ou de nivel um) e armazenamento principal (memória principal) é o cache de nivel mais alto (L3 se existem 3 niveis). O cache de menor nivel geralmente é dividido em um cache de instrução (I- Cache) que retém instruções de máquina a ser executada e um cache de dados (D-Cache) que retém operandos de dados.
[0133] Em referência à figura 18, uma concretização de processador de exemplo é representada para o processador 5026. Tipicamente um ou mais niveis de cache 5053 são empregados para armazenar temporariamente blocos de memória de maneira a aprimorar o desempenho do processador. O cache 5053 é um armazenamento temporário de alta velocidade que retém linhas de cache dos dados de memória que são prováveis de ser usados. As linhas de cache tipicas são 64, 128 ou 256 bytes dos dados de memória. Caches separadas geralmente são empregadas para armazenar em cache instruções em vez de armazenar os dados em cache. Coerência de cache (sincronização de cópias de linhas na memória e as caches) geralmente é provida por vários algoritmos "snoop"bem conhecidos na técnica. Armazenamento de memória principal 5025 de um sistema de processador geralmente é referido como um cache. Em um sistema de processador tendo 4 niveis de cache 5053, armazenamento principal 5025 algumas vezes é referido como o cache de nivel 5 (L5) já que tipicamente é mais rápido e apenas retém uma porção do armazenamento não volátil (DASD, fita etc.) que está disponível para um sistema de computador. O armazenamento principal 5025 "armazena em cache"páginas de dados paginadas no e fora do armazenamento principal 5025 pelo sistema operacional.
[0134] Um contador de programa (contador de instrução) 5061 mantém registro do endereço da instrução atual a ser executada. Um contador de programa no processador da z/Architecture® é 64 bits e pode ser truncado para 31 ou 24 bits para suportar os limites de endereçamento anteriores. Um contador de programa tipicamente é incorporado em uma PSW (palavra de estado de programa) de um computador tal que persiste durante comutação de contexto. Assim, um programa em progresso, tendo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema operacional (comutação de contexto a partir do programa ambiente para o sistema operacional ambiente). A PSW do programa mantém o valor de contador de programa enquanto o programa não está ativo, e o contador de programa (na PSW) do sistema operacional é usado enquanto o sistema operacional está executando. Tipicamente, o contador de programa é incrementado por uma quantidade igual ao número de bytes da instrução corrente. As instruções RISC (Computação de Conjunto de Instruções Reduzida) tipicamente tem comprimento fixo enquanto instruções CISC (Computação de Conjunto de Instruções Complexa) tipicamente são de comprimento variável. Instruções de z/Architecture® de IBM são instruções de CISC tendo um comprimento de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado tanto pela operação de comutação de contexto ou uma operação tomada por ramificação de uma instrução de ramificação por exemplo. Na operação de comutação de contexto, o valor de contador de programa corrente é economizado na palavra de estado de programa junto com outra informação de estado sobre o programa sendo executado (tal como códigos de condição) , e um novo valor de contador de programa é carregado apontando para uma instrução de um novo módulo de programa a ser executado. Uma operação tomada por ramificação é realizada de maneira a permitir que o programa tome decisões ou faca ciclo dentro do programa carregando o resultado da instrução de ramificação para o contador de programa 5061.
[0135] Tipicamente uma unidade de busca de instrução 5055 é empregada para buscar instruções em nome do processador 5026. A unidade de busca tanto busca "próximas instruções sequenciais", instruções alvo de instruções tomadas por ramificação, ou primeiras instruções de um programa que segue a comutação de contexto. Unidades de busca de Instrução Moderna geralmente empregam técnicas de pré-busca para buscar previamente de maneira especulativa instruções com base na propensão que as instruções pré-buscadas devem ser usadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui os bytes adicionais e próxima instrução sequencial de instruções sequenciais adicionais.
[0136] As instruções buscadas então são executadas pelo processador 5026. Em uma concretização, as instruções buscadas são passadas para uma unidade de envio 5056 da unidade de busca. A unidade de envio decodifica as instruções e direciona informação sobre as instruções decodificadas para unidades apropriadas 5057, 5058, 5060. Uma unidade de execução 5057 tipicamente vai receber informação sobre instruções aritméticas decodificadas a partir da unidade de busca de instrução 5055 e vai realizar operações aritméticas nos operandos de acordo com o código op da instrução. Operandos são providos para a unidade de execução 5057 preferivelmente tanto a partir da memória 5025, registros arquitetados 5059 ou a partir de um campo imediato da instrução sendo executada. Resultados da execução, quando armazenados, são armazenados tanto na memória 5025, quanto nos registros 5059 tanto em outro hardware de máquina (tal como registros de controle, registros de PSW e semelhantes).
[0137] Um processador 5026 tipicamente possui uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Em referência à figura 19A, uma unidade de execução 5057 pode se comunicar com registros gerais arquitetados 5059, uma unidade de envio/decodificação 5056, uma unidade de carregamento/armazenamento 5060, e outras 5065 unidades de processador por meio de lógica de interface 5071. Uma unidade de execução 5057 pode empregar vários circuitos de registro 5067, 5068, 5069 para reter informação que a unidade de lógica aritmética (ALU) 5066 vai operar ligada. A ALU realiza operações aritméticas tais como adição, subtração, multiplicação e divisão bem como função lógica tal como E, OU e OU-Exclusivo (XOR), girar e deslocar. Preferivelmente a ALU suporta operações especializadas que são dependentes do projeto. Outros circuitos podem prover outras instalações arquitetadas 5072 incluindo códigos de condição e recuperar lógica de suporte por exemplo. Tipicamente o resultado de uma operação de ALU é mantida em um circuito de registro de saida 5070 que pode direcionar o resultado para uma variedade de outras funções de processamento. Existem muitos arranjos de unidades de processador, a presente descrição está intencionada apenas a prover um entendimento representativo de uma concretização preferida da presente invenção.
[0138] Uma instrução de ADD por exemplo, pode ser executada em uma unidade de execução 5057 tendo funcionalidade lógica e aritmética enquanto uma instrução de ponto flutuante por exemplo, pode ser executada em uma execução de ponto flutuante tendo capacidade de ponto flutuante especializada. Preferivelmente, uma unidade de execução opera nos operandos identificados por uma instrução realizando uma função definida por código de operação nos operandos. Por exemplo, uma instrução de ADD pode ser executada por uma unidade de execução 5057 nos operandos encontrados em dois registros 5059 identificados pelos campos de registro da instrução.
[0139] A unidade de execução 5057 realiza a adição aritmética nos dois operandos e armazena o resultado em um terceiro operando onde o terceiro operando pode ser um terceiro registro ou um dos dois registros de origem. A unidade de execução preferivelmente usa uma Unidade Lógica Aritmética (ALU) 5066 que é capaz de realizar uma variedade de função lógicas tal como Deslocamento, Rotação, E, OU e Ou- exclusivo bem como uma variedade de funções algébricas incluindo qualquer um de adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são projetadas para operações escalares e algumas para ponto flutuante. Dados podem ser Big Endian (onde o byte menos significativo está no endereço de byte mais alto) ou Little Endian (onde o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. A Arquitetura Z de IBM é Big Endian. Campos sinalizados podem ser em sinal e magnitude, complemento de 1 ou complemento de 2 dependendo da arquitetura. Um número em complemento de 2 é vantajoso pelo fato de que a ALU não precisa projetar uma capacidade de subtração já que tanto um valor negativo ou um valor positivo no complemento de 2 necessita apenas de uma adição dentro de ALU. Números são comumente descritos de antemão, onde um campo de 12 bits define um endereço de um bloco de 4.096 bytes e é comumente descrito como um bloco de 4 Kbytes (Kilobytes), por exemplo.
[0140] Em referência à figura 19B, informação de instrução de ramificação para executar uma instrução de ramificação tipicamente é enviada para uma unidade de ramificação 5058 que geralmente emprega um algoritmo de predição de ramificação tal como uma tabela histórica de ramificação 5082 para prever o resultado da ramificação antes de outras operações condicionais estarem completas. O alvo da instrução de ramificação atual será buscado e especulativamente executado antes das operações condicionais estarem completas. Quando as operações condicionais são completadas as instruções de ramificação especulativamente executadas são tanto completadas ou descartadas com base nas condições da operação condicional e o resultado especulado. Uma instrução de ramificação tipica pode testar códigos de condição e ramificação para um endereço de destino se os códigos de condição satisfazem o requisito de ramificação da instrução de ramificação, um endereço de destino pode ser calculado com base nos vários números incluindo aqueles encontrados nos campos de registro ou um campo imediato da instrução por exemplo. A unidade de ramificação 5058 pode empregar um ALU 5074 tendo uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saida 5080. A unidade de ramificação 5058 pode comunicar com registros gerais 5059, unidade de envio/ decodificação 5056 ou outros circuitos 5073, por exemplo.
[0141] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões incluindo a comutação de contexto iniciada por um sistema operacional, uma exceção de programa ou erro causando a comutação de contexto, um sinal de interrupção de E/S causando a comutação de contexto ou atividade de threading múltipla de uma pluralidade de programas (em um ambiente multi-threaded) , por exemplo. Preferivelmente a ação de comutação de contexto economiza informação de estado sobre um programa em execução corrente e então carrega informação de estado sobre outro programa sendo invocado. Informação de estado pode ser economizada em registros de hardware ou na memória por exemplo. Informação de estado preferivelmente compreende um valor de contador de programa apontando para uma próxima instrução a ser executada, códigos de condição, informação de tradução de memória e conteúdo de registro arquitetado. A atividade de comutação de contexto pode ser exercitada pelos circuitos de hardware, programas de aplicativo, programas de sistema operacional ou código de firmware (microcódigo, picocódigo ou código interno licenciado (LIC)) sozinho ou em combinação.
[0142] Um processador acessa operandos de acordo com métodos definidos pela instrução. A instrução pode prover um operando imediato usando o valor de uma porção da instrução, pode prover um ou mais campos de registro explicitamente apontando tanto para registros de propósito geral quanto para registros de propósito especial (ponto flutuante registros por exemplo). A instrução pode usar registros implicados identificados por um campo de código op como operandos. A instrução pode usar localizações de memória para os operandos. Uma localização de memória de um operando pode ser provida por um registro, um campo imediato, ou uma combinação de registros e campo imediato como exemplificado por uma instalação de deslocamento longo de z/Architecture® em que a instrução define um registro de base, um registro de indice e um campo imediato (campo de deslocamento) que são adicionados juntos para prover o endereço do operando na memória por exemplo. A localização aqui tipicamente implica uma localização na memória principal (armazenamento principal) a menos que seja indicado de outra forma.
[0143] Em referência à figura 19C, um processador acessa o armazenamento usando uma unidade de carregamento/ armazenamento 5060. A unidade de carregamento/ armazenamento 5060 pode realizar uma operação de carga obtendo o endereço do operando alvo na memória 5053 e carregar o operando em um registro 5059 ou outra localização de memória 5053, ou pode realizar uma operação de armazenamento obtendo o endereço do operando alvo na memória 5053 e armazenar dados obtidos a partir de um registro 5059 ou outra localização de memória 5053 na localização de operando alvo na memória 5053. A unidade de carregamento/armazenamento 5060 pode ser especulativa e pode acessar a memória em uma sequência que está fora de ordem com relação à sequência de instrução, no entanto a unidade de carregamento/armazenamento 5060 é para manter a aparência para programas em que as instruções foram executadas na ordem. Uma unidade de carregamento/ armazenamento 5060 pode comunicar 5084 com general registros 5059, unidade de envio/decodificação 5056, interface de cache/memória 5053 ou outros 5083 elementos e compreende vários circuitos de registro 5086, 5087, 5088 e 5089, ALUs 5085 e lógica de controle 5090 para calcular endereços de armazenamento e para prover sequenciamento em linha para manter as operações na ordem. Algumas operações podem estar fora de ordem, mas a unidade de carregamento/armazenamento provê funcionalidade para fazer as operações fora de ordem aparecerem para o programa como tendo sigo realizado na ordem, como é bem conhecido na técnica.
[0144] Preferivelmente endereços que um programa de aplicativo "vê" geralmente são referidos como endereços virtuais. Endereços virtuais algumas vezes são referidos como "endereços lógicos" e "endereços eficazes". Estes endereços virtuais são virtuais pelo fato de que eles são redirecionados para localização de memória fisica por uma dentre uma variedade de tecnologias de tradução dinâmica de endereço (DAT) incluindo, mas não limitado a, simplesmente prefixar um endereço virtual com um valor de deslocamento, traduzir o endereço virtual através de uma ou mais tabelas de tradução, as tabelas de tradução preferivelmente compreendendo pelo menos uma tabela de segmento e uma tabela de página sozinha ou em combinação, preferivelmente, a tabela de segmento tendo uma entrada que aponta para a tabela de página. Na Arquitetura Z, uma hierarquia de tradução é provida incluindo uma primeira tabela de região, uma segunda tabela de região, uma terceira tabela de região, uma tabela de segmento e uma tabela de página opcional. O desempenho da tradução de endereço geralmente é aprimorado usando um translation lookaside buffer (TLB) que compreende entradas que mapeiam um endereço virtual para uma localização de memória fisica associada. As entradas são criadas quando o DAT traduz um endereço virtual usando as tabelas de tradução. Subsequente ao uso do endereço virtual então pode usar a entrada de TLB rápido em vez do que os acessos de tabela de tradução sequencial lenta. O conteúdo de TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Menos Recentemente usado).
[0145] No caso onde o processador é um processador de um sistema de múltiplos processadores, cada processador possui responsabilidade para manter recursos divididos, tal como E/S, caches, TLBs e memória, intertravados para a coerência. Tipicamente, tecnologias "snoop"serão usadas na manutenção de coerência de cache. Em um ambiente de snoop, cada linha de cache pode ser marcada como estando em qualquer um de um estado dividido, um estado exclusivo, um estado alterado, um estado inválido e semelhantes de maneira a facilitar a divisão.
[0146] As unidades de E/S 5054 (figura 18) proveem o processador com meios para anexação com dispositivos periféricos incluindo fita, disco, impressoras, monitores, e redes por exemplo. As unidades de E/S geralmente são apresentadas para o programa de computador por drivers de software. Nos mainframes, tais como o z System a partir de IBM®, adaptadores de canal e adaptadores de sistema aberto são unidades de E/S do mainframe que proveem as comunicações entre o sistema operacional e os dispositivos periféricos.
[0147] Adicionalmente, outros tipos de ambientes de computação podem se beneficiar a partir de um ou mais aspectos. Como um exemplo, um ambiente pode incluir um emulador (por exemplo, software ou outros mecanismos de emulação), em que uma arquitetura particular (incluindo, por exemplo, execução de instrução, funções arquitetadas, tais como tradução de endereço, e registros arquitetados) ou um subconjunto das mesmas é emulado (por exemplo, em um sistema de computador nativo tendo um processador e memória). Em tal ambiente, uma ou mais funções de emulação do emulador podem implementar uma ou mais concretizações, mesmo que um computador que executa o emulador possa ter uma arquitetura diferente do que as capacidades sendo emuladas. Como um exemplo, no modo de emulação, a operação ou instrução especifica sendo emulada é decodificada, e uma função de emulação apropriada é embutida para implementar a operação ou instrução individual.
[0148] Em um ambiente de emulação, um computador de host inclui, por exemplo, uma memória para armazenar instruções e dados; uma unidade de busca de instrução para buscar instruções a partir da memória e opcionalmente, para prover armazenamento temporário local para a instrução buscada; uma unidade de decodificação de instrução para receber as instruções buscadas e para determinar o tipo de instruções que devem ser buscadas; e uma instrução unidade de execução para executar as instruções. A execução pode incluir dados de carregamento para um registro a partir da memória; armazenamento de dados de volta para a memória a partir de um registro; ou realização de algum tipo de operação lógica ou aritmética, como determinado pela unidade de decodificação. Em um exemplo, cada unidade é implementada em software. Por exemplo, as operações sendo realizadas pelas unidades são implementadas como uma ou mais subrotinas dentro de software emulador.
[0149] Mais particularmente, em um mainframe, instruções arquitetadas de máquina são usadas pelos programadores, comumente programadores "C" da atualidade, geralmente por meio de um aplicativo compilador. Estas instruções armazenadas no meio de armazenamento podem ser executadas de maneira nativa no Servidor de IBM® de Arquitetura Z, ou alternativamente nas máquinas que executam outras arquiteturas. Eles podem ser emulados nos servidores existentes e em futuro servidores de mainframe de IBM® e nas outras máquinas da IBM® (por exemplo, servidores Power Systems e Servidores de Sistema x). Eles podem ser executados em máquinas que rodam Linux em uma grande variedade de máquinas usando hardware fabricado por IBM®, Intel®, AMD, e outros. Além da execução daquele hardware sob Arquitetura Z, Linux pode ser usado bem como as máquinas que usam a emulação por Hercules, UMX ou ESI (Fundamental Software, Inc.), onde em geral a execução está em um modo de emulação. No modo de emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado.
[0150] O processador nativo tipicamente executa software de emulação compreendendo tanto firmware quanto um sistema operacional nativo para realizar emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura de processador emulada. O software de emulação mantém um contador de programa emulado para manter registro de limites de instrução. O software de emulação pode buscar uma ou mais instruções de máquina emulada em um momento e converter as uma ou mais instruções de máquina emulada para um correspondente grupo de instruções nativas de máquina para a execução pelo processador nativo. Estas instruções convertidas podem ser armazenadas em cache tal que uma conversão mais rápida pode ser alcançada. Não obstante, o software de emulação é para manter as regras de arquitetura da arquitetura de processador emulada de forma a garantir que os sistemas operacionais e aplicativos escritos para o processador emulado operem corretamente. Adicionalmente, o software de emulação é para prover recursos identificados pela arquitetura de processador emulado incluindo, mas não limitado a, registros de controle, registros de uso geral, registros de ponto flutuante , função de tradução dinâmica de endereço incluindo tabelas de segmento e tabelas de página, por exemplo, mecanismos de interrupção, mecanismos de comutação de contexto, relógios de Hora do Dia (TOD) e interfaces arquitetadas para subsistemas de E/S tal que um sistema operacional ou um programa de aplicativo projetado para rodar no processador emulado, podem ser rodados no processador nativo tendo o software de emulação.
[0151] Uma instrução especifica sendo emulada é decodificada, e uma subrotina é chamada para realizar a função da instrução individual. Uma função de software de emulação que emula uma função de um processador emulado é implementada, por exemplo, em um driver ou subrotina "C", ou algum outro método de provisão de um driver para o hardware especifico como estará dentro da pericia daqueles peritos na técnica após o entendimento da descrição da concretização preferida. Várias patentes de emulação de software e hardware incluindo, mas não limitado a Carta Patente U.S. No. 5.551.013, intitulada "Multiprocessor for Hardware Emulation", de Beausoleil et al; e carta Patente U.S. No. 6.009.261, intitulada "Preprocessing of Stored Target Routines to emulate Incompatible Instructions on a Target Processor", de Scalzi et al; e Carta Patente U.S. No. 5.574.873, intitulada "Decoding Guest Instruction to Directly Access Emulation Routines emulating the Guest Instructions", de Davidian et al; e Carta Patente U.S. No. 6.308.255, intitulada "Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System",de Gorishek et al; e Carta Patente U.S. No. 6.463.582, intitulada "Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method",de Lethin et al; e Carta Patente U.S. No. 5.790.825, intitulada "Method to emulate Guest Instructions on a host computer Through Dynamic Recompilation of Host Instructions",de Eric Traut; e muitos outros, ilustram uma variedade de modos conhecidos para alcançar a emulação de um formato de instrução arquitetada para uma diferente máquina para uma máquina alvo disponível para o perito na técnica.
[0152] Na figura 20, um exemplo de um sistema de computador host emulado 5092 é provido que emula um sistema de computador host 5000'de uma arquitetura de host. No sistema de computador host emulado 5092, o processador de host (CPU) 5091 é um processador de host emulado (ou processador de host virtual) e compreende um processador de emulação 5093 tendo uma diferente arquitetura de configuração de instrução nativa do que aquela do processador 5091 do computador de host 5000' . 0 sistema de computador host emulado 5092 possui memória 5094 acessível para o processador de emulação 5093. Na concretização de exemplo, a memória 5094 é particionada para uma porção de memória de computador de host 5096 e uma porção de rotinas de emulação 5097. A memória de computador host 5096 está disponível para programas do computador de host emulado 5092 de acordo com arquitetura de computador de host. O processador de emulação 5093 executa instruções nativas de um conjunto de instrução arquitetada de uma arquitetura diferente do que aquela do processador emulado 5091, as instruções nativas obtidas a partir da memória de rotinas de emulação 5097, e pode acessar uma instrução de host para a execução a partir de um programa na memória de computador de host 5096 empregando uma ou mais instruções obtidas em uma sequência e rotina de acesso/decodificação que pode decodificar as instruções de host acessadas para determinar uma rotina de execução de instrução nativa para emular a função do instrução de host acessada. Outras instalações que são definidas para a arquitetura do sistema de computador host 5000' podem ser emuladas pelas rotinas de instalações arquitetadas, incluindo tais instalações como registros de propósito geral, registros de controle, tradução dinâmica de endereço e suporte de subsistema de E/S e cache de processador, por exemplo. As rotinas de emulação também podem tomar uma vantagem de funções disponíveis no processador de emulação 5093 (tal como registros gerais e tradução dinâmica de endereços virtuais) para aprimorar o desempenho das rotinas de emulação. Hardware especial e mecanismos de descarga também podem ser providos para ajudar o processador 5093 na emulação da função do computador de host 5000'.
[0153] A terminologia usada aqui é para o propósito de descrever concretizações particulares apenas e não está intencionada a ser limitante. Como usado aqui, as formas singulares "um", "uma", "a"e "o"também estão intencionadas a incluir as formas plurais, a menos que o contexto indique claramente de outra forma. Será entendido adicionalmente que os termos "compreende"e/ou "compreendendo", quando usados nesta especificação, especificam a presença de funcionalidades, integrantes, etapas, operações, elementos, e/ou componentes declarados, mas não impedem a presença ou a adição de uma ou mais outras funcionalidades, integrantes, etapas, operações, elementos, componentes e/ou grupos dos mesmos.
[0154] As correspondentes estruturas, materiais, atos, e equivalentes de todos os meios ou etapa mais elementos de função nas reivindicações abaixo, se existe algum, estão intencionados a incluir qualquer estrutura, material, ou ato para realizar a função em combinação com outros elementos reivindicados como reivindicado especificamente. A descrição de uma ou mais concretizações foi apresentada para os propósitos de ilustração e descrição, mas não está intencionada a ser exaustiva ou limitada na forma divulgada. Muitas modificações e variações serão aparentes para os peritos na técnica na técnica. A concretização foi escolhida e descrita de maneira a explicar melhor vários aspectos e a aplicação prática, e para permitir que outros peritos na técnica entendam várias concretizações com várias modificações como são adequadas para o uso particular contemplado.
Claims (10)
1. Método de gerenciamento de requisições de interrupção em um ambiente computacional, o método caracterizado pelo fato de que compreende: com base na execução de uma operação de interrupção de registro de uma instrução MPFC (Modify PCI Function Controls) que especifica um identificador de função de um adaptador, especificando um local na memória do sistema de um vetor de bits de interrupção do adaptador (AIBV) do adaptador, o AIBV incluído em um matriz de um ou mais AIBVs e um local na memória do sistema de um bit de resumo de interrupção do adaptador (AISB) de uma matriz AISB; receber do adaptador uma requisição de interrupção; e com base na requisição recebida, configurar, por um hub de entrada/saida (E/S) acoplado ao adaptador, um indicador no AIBV indicando um tipo de evento do adaptador e configurando o AISB indicando que um indicador está definido no AIBV, em que a configuração do indicador na AIBV compreende: determinar se um número de vetor fornecido na requisição está dentro de um número de interrupções permitidas para o adaptador; e com base na determinação do número do vetor está dentro do número permitido de interrupções, usar o número do vetor, um deslocamento de AIBV e um endereço de AIBV para determinar o indicador no AIBV a ser definido.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende ainda apresentar uma interrupção a um sistema operacional, a interrupção com base na requisição de interrupção.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a requisição de interrupção representa uma pluralidade de interrupções sinalizadas por mensagem e a interrupção no sistema operacional faz parte de uma notificação de evento do adaptador de entrada/saida para o sistema operacional.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende ainda a obtenção, com base na apresentação, de uma ou mais indicações de AIBV para um ou mais adaptadores, especificando pelo menos um motivo para interrupção por adaptador.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que compreende ainda a obtenção de uma pluralidade de indicações de AIBV, especificando uma pluralidade de razões para interrupção, a pluralidade de razões para interrupção correspondente à pluralidade de requisições de interrupção.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que a obtenção compreende o uso do AISB na obtenção de uma ou mais indicações de AIBV em um ou mais AIBVs.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a configuração do indicador na AIBV compreende: usar um identificador da requisição do adaptador para obter uma entrada da tabela de dispositivos, a entrada da tabela de dispositivos compreendendo um valor que especifica o número de interrupções permitidas para o adaptador; e com base na determinação do número do vetor está dentro do número permitido de interrupções, usando um ou mais parâmetros da entrada da tabela de dispositivos para localizar uma posição inicial do AIBV.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o AIBV para o adaptador compreende uma pluralidade de indicadores para o adaptador, a pluralidade de indicadores indicando uma pluralidade de tipos de eventos associados ao adaptador.
9. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a matriz de um ou mais AIBVs inclui outro AIBV para outro adaptador e em que um número de indicadores no AIBV para o adaptador é diferente do número de indicadores no outro AIBV para o outro adaptador.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o identificador de função inclui um indicador de habilitação que indica se o identificador está ativado, um número que identifica o adaptador e um número de instância para indicar uma instância especifica do identificador.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/821,175 US8572635B2 (en) | 2010-06-23 | 2010-06-23 | Converting a message signaled interruption into an I/O adapter event notification |
US12/821,175 | 2010-06-23 | ||
PCT/EP2010/067023 WO2011160707A1 (en) | 2010-06-23 | 2010-11-08 | Converting a message signaled interruption into an i/o adapter event notification |
Publications (2)
Publication Number | Publication Date |
---|---|
BR112012033821A2 BR112012033821A2 (pt) | 2017-10-24 |
BR112012033821B1 true BR112012033821B1 (pt) | 2020-11-03 |
Family
ID=43982256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR112012033821-8A BR112012033821B1 (pt) | 2010-06-23 | 2010-11-08 | método de gerenciamento de requisições de interrupção em um ambiente computacional |
Country Status (22)
Country | Link |
---|---|
US (2) | US8572635B2 (pt) |
EP (1) | EP2430558B1 (pt) |
JP (1) | JP5719435B2 (pt) |
KR (1) | KR101455011B1 (pt) |
CN (1) | CN102906722B (pt) |
AU (1) | AU2010355798B2 (pt) |
BR (1) | BR112012033821B1 (pt) |
CA (1) | CA2800629C (pt) |
DK (1) | DK2430558T3 (pt) |
ES (1) | ES2535333T3 (pt) |
HK (1) | HK1180796A1 (pt) |
HR (1) | HRP20150385T1 (pt) |
HU (1) | HUE024981T2 (pt) |
IL (1) | IL223589B (pt) |
MX (1) | MX2012014861A (pt) |
PL (1) | PL2430558T3 (pt) |
PT (1) | PT2430558E (pt) |
RU (1) | RU2546561C2 (pt) |
SG (1) | SG186080A1 (pt) |
SI (1) | SI2430558T1 (pt) |
WO (1) | WO2011160707A1 (pt) |
ZA (1) | ZA201209699B (pt) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9037768B2 (en) * | 2008-04-28 | 2015-05-19 | Hewlett-Packard Development Company, L.P. | Virtual-interrupt-mode interface and method for virtualizing an interrupt mode |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8510599B2 (en) * | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8468284B2 (en) * | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8621112B2 (en) | 2010-06-23 | 2013-12-31 | International Business Machines Corporation | Discovery by operating system of information relating to adapter functions accessible to the operating system |
US8504754B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Identification of types of sources of adapter interruptions |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
US8495217B2 (en) * | 2010-09-30 | 2013-07-23 | International Business Machines Corporation | Mechanism for preventing client partition crashes by removing processing resources from the client logical partition when an NPIV server goes down |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103253A2 (en) * | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
US8966148B2 (en) * | 2012-06-01 | 2015-02-24 | International Business Machines Corporation | Providing real-time interrupts over Ethernet |
US8984201B2 (en) | 2012-06-01 | 2015-03-17 | International Business Machines Corporation | Providing I2C bus over Ethernet |
US9152588B2 (en) | 2012-10-16 | 2015-10-06 | Apple Inc. | Race-free level-sensitive interrupt delivery using fabric delivered interrupts |
US9009377B2 (en) * | 2012-11-01 | 2015-04-14 | Apple Inc. | Edge-triggered interrupt conversion in a system employing level-sensitive interrupts |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
CN105122206B (zh) | 2013-03-15 | 2018-11-09 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
US9465768B2 (en) * | 2014-03-14 | 2016-10-11 | International Business Machines Corporation | PCI function measurement block enhancements |
US10187323B2 (en) * | 2016-09-02 | 2019-01-22 | Pivotal Software, Inc. | On-demand resource provisioning |
DE102017108219A1 (de) | 2017-04-18 | 2018-10-18 | Infineon Technologies Ag | Steuersystem und Verfahren des Speicherzugriffs |
DE102017108216A1 (de) * | 2017-04-18 | 2018-10-18 | Infineon Technologies Ag | Steuersystem und Verfahren des Speicherzugriffs |
CN110597537B (zh) * | 2019-08-29 | 2022-12-13 | 桂林理工大学南宁分校 | 一种物联网节点安全更新升级方法 |
US11782685B2 (en) | 2020-06-17 | 2023-10-10 | Bank Of America Corporation | Software code vectorization converter |
US11347500B2 (en) | 2020-06-17 | 2022-05-31 | Bank Of America Corporation | Software code converter for resolving conflicts during code development |
US11573775B2 (en) | 2020-06-17 | 2023-02-07 | Bank Of America Corporation | Software code converter for resolving redundancy during code development |
Family Cites Families (229)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4028668A (en) | 1975-12-22 | 1977-06-07 | Honeywell Information Systems, Inc. | Apparatus for selectively addressing sections and locations in a device controller's memory |
US4323963A (en) | 1979-07-13 | 1982-04-06 | Rca Corporation | Hardware interpretive mode microprocessor |
US4271468A (en) | 1979-11-06 | 1981-06-02 | International Business Machines Corp. | Multiprocessor mechanism for handling channel interrupts |
WO1983001524A1 (en) | 1981-10-13 | 1983-04-28 | Cormier, Roger, Louis | Method and apparatus for measurements of channel operation |
US5053952A (en) | 1987-06-05 | 1991-10-01 | Wisc Technologies, Inc. | Stack-memory-based writable instruction set computer having a single data bus |
US5282274A (en) | 1990-05-24 | 1994-01-25 | International Business Machines Corporation | Translation of multiple virtual pages upon a TLB miss |
US5170472A (en) | 1991-03-28 | 1992-12-08 | International Business Machines Corp. | Dynamically changing a system i/o configuration definition |
US5465355A (en) | 1991-09-04 | 1995-11-07 | International Business Machines Corporation | Establishing and restoring paths in a data processing I/O system |
JPH05165715A (ja) | 1991-12-12 | 1993-07-02 | Nec Corp | 情報処理装置 |
JPH0821015B2 (ja) | 1992-01-20 | 1996-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータならびにそのシステム再構成化装置および方法 |
US5617554A (en) | 1992-02-10 | 1997-04-01 | Intel Corporation | Physical address size selection and page size selection in an address translator |
US5600805A (en) | 1992-06-15 | 1997-02-04 | International Business Machines Corporation | Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems |
US5265240A (en) | 1992-07-24 | 1993-11-23 | International Business Machines Corporation | Channel measurement method and means |
US5465332A (en) | 1992-09-21 | 1995-11-07 | International Business Machines Corporation | Selectable 8/16 bit DMA channels for "ISA" bus |
JP2500101B2 (ja) | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
AU6629894A (en) | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5535352A (en) | 1994-03-24 | 1996-07-09 | Hewlett-Packard Company | Access hints for input/output address translation mechanisms |
US5551013A (en) | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
JPH10502197A (ja) | 1994-06-28 | 1998-02-24 | インテル・コーポレーション | Pci−isa割込みプロトコルコンバータ及び選択機構 |
US5748950A (en) | 1994-09-20 | 1998-05-05 | Intel Corporation | Method and apparatus for providing an optimized compare-and-branch instruction |
US5802590A (en) | 1994-12-13 | 1998-09-01 | Microsoft Corporation | Method and system for providing secure access to computer resources |
US5901312A (en) | 1994-12-13 | 1999-05-04 | Microsoft Corporation | Providing application programs with unmediated access to a contested hardware resource |
US5586268A (en) | 1995-03-03 | 1996-12-17 | Advanced System Products, Inc. | Multiple peripheral adapter device driver architecture |
JPH08263424A (ja) | 1995-03-20 | 1996-10-11 | Fujitsu Ltd | コンピュータ装置 |
US5671365A (en) * | 1995-10-20 | 1997-09-23 | Symbios Logic Inc. | I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events |
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 |
US5960213A (en) | 1995-12-18 | 1999-09-28 | 3D Labs Inc. Ltd | Dynamically reconfigurable multi-function PCI adapter device |
US5974440A (en) | 1996-03-25 | 1999-10-26 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for interrupt handling during virtual task operation |
US5819053A (en) | 1996-06-05 | 1998-10-06 | Compaq Computer Corporation | Computer system bus performance monitoring |
US5761448A (en) | 1996-08-30 | 1998-06-02 | Ncr Corporation | Physical-to-logical bus mapping scheme for computer systems having multiple PCI bus configuration |
US5838960A (en) | 1996-09-26 | 1998-11-17 | Bay Networks, Inc. | Apparatus for performing an atomic add instructions |
US5995745A (en) | 1996-12-23 | 1999-11-30 | Yodaiken; Victor J. | Adding real-time support to general purpose operating systems |
US5826084A (en) | 1997-03-25 | 1998-10-20 | Texas Instruments Incorporated | Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation |
US6272257B1 (en) | 1997-04-30 | 2001-08-07 | Canon Kabushiki Kaisha | Decoder of variable length codes |
KR100263672B1 (ko) | 1997-05-08 | 2000-09-01 | 김영환 | 가변적인 페이지 크기를 지원하는 어드레스 변환장치 |
US5914730A (en) | 1997-09-09 | 1999-06-22 | Compaq Computer Corp. | System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests |
US6067595A (en) | 1997-09-23 | 2000-05-23 | Icore Technologies, Inc. | Method and apparatus for enabling high-performance intelligent I/O subsystems using multi-port memories |
US5864703A (en) | 1997-10-09 | 1999-01-26 | Mips Technologies, Inc. | Method for providing extended precision in SIMD vector arithmetic operations |
US6078970A (en) | 1997-10-15 | 2000-06-20 | International Business Machines Corporation | System for determining adapter interrupt status where interrupt is sent to host after operating status stored in register is shadowed to host memory |
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 |
US6023736A (en) | 1997-12-19 | 2000-02-08 | International Business Machines Corporation | System for dynamically configuring I/O device adapters where a function configuration register contains ready/not ready flags corresponding to each I/O device adapter |
US6021458A (en) | 1998-01-21 | 2000-02-01 | Intel Corporation | Method and apparatus for handling multiple level-triggered and edge-triggered interrupts |
US6223299B1 (en) | 1998-05-04 | 2001-04-24 | International Business Machines Corporation | Enhanced error handling for I/O load/store operations to a PCI device via bad parity or zero byte enables |
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 |
US6460094B1 (en) | 1998-07-08 | 2002-10-01 | Microsoft Corporation | Peripheral device configured to detect the type of interface to which it is connected and configuring itself accordingly |
US6615305B1 (en) | 1998-08-27 | 2003-09-02 | Intel Corporation | Interrupt pacing in data transfer unit |
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 |
US6408347B1 (en) | 1998-12-10 | 2002-06-18 | Cisco Technology, Inc. | Integrated multi-function adapters using standard interfaces through single a access point |
US6397350B1 (en) | 1999-02-19 | 2002-05-28 | International Business Machines Corporation | Method of providing direct data processing access using a queued direct input-output device |
US6519645B2 (en) | 1999-02-19 | 2003-02-11 | International Business Machine Corporation | Method and apparatus for providing configuration information using a queued direct input-output device |
US6349380B1 (en) | 1999-03-12 | 2002-02-19 | Intel Corporation | Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor |
US6557035B1 (en) | 1999-03-30 | 2003-04-29 | International Business Machines Corporation | Rules-based method of and system for optimizing server hardware capacity and performance |
US6330656B1 (en) | 1999-03-31 | 2001-12-11 | International Business Machines Corporation | PCI slot control apparatus with dynamic configuration for partitioned systems |
US6578191B1 (en) | 1999-05-17 | 2003-06-10 | International Business Machines Corporation | Method and apparatus for dynamic generation of adapters |
US6330647B1 (en) | 1999-08-31 | 2001-12-11 | Micron Technology, Inc. | Memory bandwidth allocation based on access count priority scheme |
US6772097B1 (en) | 1999-09-30 | 2004-08-03 | Intel Corporation | Retrieving I/O processor performance monitor data |
US6493741B1 (en) | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6970992B2 (en) | 1999-10-04 | 2005-11-29 | Intel Corporation | Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto |
US6651126B1 (en) | 1999-10-29 | 2003-11-18 | Texas Instruments Incorporated | Snapshot arbiter mechanism |
US7509391B1 (en) | 1999-11-23 | 2009-03-24 | Texas Instruments Incorporated | Unified memory management system for multi processor heterogeneous architecture |
US6529978B1 (en) | 2000-02-23 | 2003-03-04 | International Business Machines Corporation | Computer input/output (I/O) interface with dynamic I/O adaptor processor bindings |
US6963940B1 (en) | 2000-03-30 | 2005-11-08 | International Business Machines Corporation | Measuring utilization of individual components of channels |
US6581130B1 (en) | 2000-04-04 | 2003-06-17 | Hewlett Packard Development Company, L.P. | Dynamic remapping of address registers for address translation between multiple busses |
US6629175B1 (en) | 2000-04-14 | 2003-09-30 | International Business Machines Corporation | Efficient adapter context switching |
US6772264B1 (en) | 2000-05-22 | 2004-08-03 | International Business Machines Corporation | Enabling a docking station for ISA adapters |
US6715011B1 (en) | 2000-05-31 | 2004-03-30 | International Business Machines Corporation | PCI/PCI-X bus bridge with performance monitor |
US6654818B1 (en) | 2000-06-22 | 2003-11-25 | International Business Machines Corporation | DMA access authorization for 64-bit I/O adapters on PCI bus |
US6704831B1 (en) | 2000-11-16 | 2004-03-09 | Sun Microsystems, Inc. | Method and apparatus for converting address information between PCI bus protocol and a message-passing queue-oriented bus protocol |
US6611883B1 (en) | 2000-11-16 | 2003-08-26 | Sun Microsystems, Inc. | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system |
US6658521B1 (en) | 2000-12-22 | 2003-12-02 | International Business Machines Corporation | Method and apparatus for address translation on PCI bus over infiniband network |
US6721839B1 (en) | 2000-12-27 | 2004-04-13 | International Business Machines Corporation | Method of mapping multiple address spaces into single PCI bus |
RU2195013C2 (ru) * | 2001-02-01 | 2002-12-20 | Научно-исследовательский институт химического машиностроения | Способ многоуровневой обработки запросов прерывания и многоуровневая система для его осуществления |
TW499795B (en) | 2001-03-19 | 2002-08-21 | Realtek Semiconductor Corp | PCI extended function interface and the PCI device using the same |
US6792492B1 (en) | 2001-04-11 | 2004-09-14 | Novell, Inc. | System and method of lowering overhead and latency needed to service operating system interrupts |
US6820164B2 (en) | 2001-04-17 | 2004-11-16 | International Business Machines Corporation | Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices |
US20020161907A1 (en) | 2001-04-25 | 2002-10-31 | Avery Moon | Adaptive multi-protocol communications system |
US6968446B1 (en) | 2001-08-09 | 2005-11-22 | Advanced Micro Devices, Inc. | Flags handling for system call instructions |
US6842870B2 (en) | 2001-09-20 | 2005-01-11 | International Business Machines Corporation | Method and apparatus for filtering error logs in a logically partitioned data processing system |
US6801993B2 (en) | 2001-09-28 | 2004-10-05 | International Business Machines Corporation | Table offset for shortening translation tables from their beginnings |
US6880021B2 (en) * | 2001-09-28 | 2005-04-12 | International Business Machines Corporation | Intelligent interrupt with hypervisor collaboration |
US20040025166A1 (en) | 2002-02-02 | 2004-02-05 | International Business Machines Corporation | Server computer and a method for accessing resources from virtual machines of a server computer via a fibre channel |
US6901537B2 (en) | 2002-02-27 | 2005-05-31 | International Business Machines Corporation | Method and apparatus for preventing the propagation of input/output errors in a logical partitioned data processing system |
US6907510B2 (en) | 2002-04-01 | 2005-06-14 | Intel Corporation | Mapping of interconnect configuration space |
US7302692B2 (en) | 2002-05-31 | 2007-11-27 | International Business Machines Corporation | Locally providing globally consistent information to communications layers |
US7197585B2 (en) | 2002-09-30 | 2007-03-27 | International Business Machines Corporation | Method and apparatus for managing the execution of a broadcast instruction on a guest processor |
US7054972B2 (en) | 2002-12-13 | 2006-05-30 | Lsi Logic Corporation | Apparatus and method for dynamically enabling and disabling interrupt coalescing in data processing system |
US7065598B2 (en) | 2002-12-20 | 2006-06-20 | Intel Corporation | Method, system, and article of manufacture for adjusting interrupt levels |
US20040139304A1 (en) | 2003-01-09 | 2004-07-15 | International Business Machines Corporation | High speed virtual instruction execution mechanism |
US7073002B2 (en) | 2003-03-13 | 2006-07-04 | International Business Machines Corporation | Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system |
US7107382B2 (en) | 2003-04-03 | 2006-09-12 | Emulex Design & Manufacturing Corporation | Virtual peripheral component interconnect multiple-function device |
US7139940B2 (en) | 2003-04-10 | 2006-11-21 | International Business Machines Corporation | Method and apparatus for reporting global errors on heterogeneous partitioned systems |
US7281075B2 (en) | 2003-04-24 | 2007-10-09 | International Business Machines Corporation | Virtualization of a global interrupt queue |
US7130938B2 (en) | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Method, system and program products for identifying communications adapters of a computing environment |
US7174550B2 (en) | 2003-05-12 | 2007-02-06 | International Business Machines Corporation | Sharing communications adapters across a plurality of input/output subsystem images |
US7127599B2 (en) | 2003-05-12 | 2006-10-24 | International Business Machines Corporation | Managing configurations of input/output system images of an input/output subsystem, wherein a configuration is modified without restarting the input/output subsystem to effect a modification |
US7000036B2 (en) | 2003-05-12 | 2006-02-14 | International Business Machines Corporation | Extended input/output measurement facilities |
US7177961B2 (en) | 2003-05-12 | 2007-02-13 | International Business Machines Corporation | Managing access, by operating system images of a computing environment, of input/output resources of the computing environment |
US6996638B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Method, system and program products for enhancing input/output processing for operating system images of a computing environment |
US7290070B2 (en) | 2003-05-12 | 2007-10-30 | International Business Machines Corporation | Multiple logical input/output subsystem facility |
US7130949B2 (en) | 2003-05-12 | 2006-10-31 | International Business Machines Corporation | Managing input/output interruptions in non-dedicated interruption hardware environments |
US7134052B2 (en) | 2003-05-15 | 2006-11-07 | International Business Machines Corporation | Autonomic recovery from hardware errors in an input/output fabric |
US6931460B2 (en) | 2003-05-19 | 2005-08-16 | Emulex Design & Manufacturing Corporation | Dynamically self-adjusting polling mechanism |
US7991918B2 (en) | 2003-06-05 | 2011-08-02 | Nvidia Corporation | Transmitting commands and information between a TCP/IP stack and an offload unit |
US7420931B2 (en) | 2003-06-05 | 2008-09-02 | Nvidia Corporation | Using TCP/IP offload to accelerate packet filtering |
EP1489491A1 (en) | 2003-06-19 | 2004-12-22 | Texas Instruments Incorporated | Dynamically changing the semantic of an instruction |
US7013358B2 (en) | 2003-08-09 | 2006-03-14 | Texas Instruments Incorporated | System for signaling serialized interrupts using message signaled interrupts |
US7979548B2 (en) | 2003-09-30 | 2011-07-12 | International Business Machines Corporation | Hardware enforcement of logical partitioning of a channel adapter's resources in a system area network |
US7146482B2 (en) | 2003-11-25 | 2006-12-05 | International Business Machines Corporation | Memory mapped input/output emulation |
US7552436B2 (en) | 2003-11-25 | 2009-06-23 | International Business Machines | Memory mapped input/output virtualization |
US7277968B2 (en) | 2004-01-23 | 2007-10-02 | International Business Machines Corporation | Managing sets of input/output communications subadapters of an input/output subsystem |
US7107384B1 (en) | 2004-03-01 | 2006-09-12 | Pericom Semiconductor Corp. | Dynamic PCI-bus pre-fetch with separate counters for commands of commands of different data-transfer lengths |
US7530071B2 (en) | 2004-04-22 | 2009-05-05 | International Business Machines Corporation | Facilitating access to input/output resources via an I/O partition shared by multiple consumer partitions |
US7209994B1 (en) | 2004-05-11 | 2007-04-24 | Advanced Micro Devices, Inc. | Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests |
US20050289271A1 (en) | 2004-06-29 | 2005-12-29 | Martinez Alberto J | Circuitry to selectively produce MSI signals |
US7496706B2 (en) | 2004-06-30 | 2009-02-24 | Intel Corporation | Message signaled interrupt redirection table |
US20060005083A1 (en) | 2004-06-30 | 2006-01-05 | International Business Machines Corporation | Performance count tracing |
US7418572B2 (en) | 2004-08-18 | 2008-08-26 | International Business Machines Corporation | Pretranslating input/output buffers in environments with multiple page sizes |
TWI252397B (en) | 2004-09-17 | 2006-04-01 | Ind Tech Res Inst | Method and apparatus of built-in self-diagnosis and repair in a memory with syndrome identification |
US7340582B2 (en) | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
US7444493B2 (en) | 2004-09-30 | 2008-10-28 | Intel Corporation | Address translation for input/output devices using hierarchical translation tables |
US7334107B2 (en) | 2004-09-30 | 2008-02-19 | Intel Corporation | Caching support for direct memory access address translation |
US7373446B2 (en) | 2004-11-05 | 2008-05-13 | Microsoft Corporation | Method and system for dynamically patching an operating system's interrupt mechanism |
US7296120B2 (en) | 2004-11-18 | 2007-11-13 | International Business Machines Corporation | Mechanism that provides efficient multi-word load atomicity |
US7188346B2 (en) | 2004-11-29 | 2007-03-06 | International Business Machines Corporation | Method, system and program product for correlating data between operating environments |
US7284112B2 (en) | 2005-01-14 | 2007-10-16 | International Business Machines Corporation | Multiple page size address translation incorporating page size prediction |
US7886086B2 (en) | 2005-02-03 | 2011-02-08 | International Business Machines Corporation | Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability |
US7562366B2 (en) | 2005-02-03 | 2009-07-14 | Solarflare Communications, Inc. | Transmit completion event batching |
US7260664B2 (en) | 2005-02-25 | 2007-08-21 | International Business Machines Corporation | Interrupt mechanism on an IO adapter that supports virtualization |
US7464191B2 (en) | 2005-02-25 | 2008-12-09 | International Business Machines Corporation | System and method for host initialization for an adapter that supports virtualization |
US7493425B2 (en) | 2005-02-25 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization |
US20060195617A1 (en) | 2005-02-25 | 2006-08-31 | International Business Machines Corporation | Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification |
US7475166B2 (en) | 2005-02-28 | 2009-01-06 | International Business Machines Corporation | Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request |
US7567567B2 (en) | 2005-04-05 | 2009-07-28 | Sun Microsystems, Inc. | Network system including packet classification for partitioned resources |
US7260663B2 (en) | 2005-04-07 | 2007-08-21 | International Business Machines Corporation | System and method for presenting interrupts |
US7200704B2 (en) | 2005-04-07 | 2007-04-03 | International Business Machines Corporation | Virtualization of an I/O adapter port using enablement and activation functions |
US7478178B2 (en) | 2005-04-22 | 2009-01-13 | Sun Microsystems, Inc. | Virtualization for device sharing |
US7225287B2 (en) | 2005-06-01 | 2007-05-29 | Microsoft Corporation | Scalable DMA remapping on a computer bus |
US7516252B2 (en) | 2005-06-08 | 2009-04-07 | Intel Corporation | Port binding scheme to create virtual host bus adapter in a virtualized multi-operating system platform environment |
US20060288130A1 (en) | 2005-06-21 | 2006-12-21 | Rajesh Madukkarumukumana | Address window support for direct memory access translation |
US7631097B2 (en) | 2005-07-21 | 2009-12-08 | National Instruments Corporation | Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark |
US8028154B2 (en) | 2005-07-29 | 2011-09-27 | Broadcom Corporation | Method and system for reducing instruction storage space for a processor integrated in a network adapter chip |
US7546487B2 (en) | 2005-09-15 | 2009-06-09 | Intel Corporation | OS and firmware coordinated error handling using transparent firmware intercept and firmware services |
US20070073955A1 (en) | 2005-09-29 | 2007-03-29 | Joseph Murray | Multi-function PCI device |
US7882489B2 (en) | 2005-11-22 | 2011-02-01 | International Business Machines Corporation | Integrated code generation for adapter-specific property template |
US20070136554A1 (en) | 2005-12-12 | 2007-06-14 | Giora Biran | Memory operations in a virtualized system |
US7475183B2 (en) | 2005-12-12 | 2009-01-06 | Microsoft Corporation | Large page optimizations in a virtual machine environment |
US7328296B1 (en) | 2006-01-03 | 2008-02-05 | Emc Corporation | Interrupt processing system |
US7398343B1 (en) | 2006-01-03 | 2008-07-08 | Emc Corporation | Interrupt processing system |
US7548999B2 (en) | 2006-01-17 | 2009-06-16 | Advanced Micro Devices, Inc. | Chained hybrid input/output memory management unit |
US7673116B2 (en) | 2006-01-17 | 2010-03-02 | Advanced Micro Devices, Inc. | Input/output memory management unit that implements memory attributes based on translation data |
US7653803B2 (en) | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
US7849232B2 (en) | 2006-02-17 | 2010-12-07 | Intel-Ne, Inc. | Method and apparatus for using a single multi-function adapter with different operating systems |
US7739422B2 (en) | 2006-03-21 | 2010-06-15 | International Business Machines Corporation | Method to improve system DMA mapping while substantially reducing memory fragmentation |
US7412589B2 (en) | 2006-03-31 | 2008-08-12 | International Business Machines Corporation | Method to detect a stalled instruction stream and serialize micro-operation execution |
US8621120B2 (en) | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US7613847B2 (en) | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
US7954099B2 (en) | 2006-05-17 | 2011-05-31 | International Business Machines Corporation | Demultiplexing grouped events into virtual event queues while in two levels of virtualization |
JP4961833B2 (ja) | 2006-05-19 | 2012-06-27 | 日本電気株式会社 | クラスタシステム、負荷分散方法、最適化クライアントプログラム、及び調停サーバプログラム |
TW200801952A (en) | 2006-06-02 | 2008-01-01 | Via Tech Inc | Method for setting up a peripheral component interconnect express (PCIE) |
US7546398B2 (en) | 2006-08-01 | 2009-06-09 | International Business Machines Corporation | System and method for distributing virtual input/output operations across multiple logical partitions |
US7496707B2 (en) | 2006-08-22 | 2009-02-24 | International Business Machines Corporation | Dynamically scalable queues for performance driven PCI express memory traffic |
US8725914B2 (en) | 2006-08-28 | 2014-05-13 | International Business Machines Corporation | Message signaled interrupt management for a computer input/output fabric incorporating platform independent interrupt manager |
US7627723B1 (en) | 2006-09-21 | 2009-12-01 | Nvidia Corporation | Atomic memory operators in a parallel processor |
US20080126652A1 (en) | 2006-09-27 | 2008-05-29 | Intel Corporation | Managing Interrupts in a Partitioned Platform |
US7552298B2 (en) | 2006-09-28 | 2009-06-23 | Broadcom Corporation | Method and system for deferred pinning of host memory for stateful network interfaces |
JP2008090375A (ja) | 2006-09-29 | 2008-04-17 | Hitachi Ltd | 割込み制御システム、およびこれを利用した記憶制御システム |
US9135951B2 (en) | 2006-10-10 | 2015-09-15 | Qualcomm Incorporated | System and method for dynamic audio buffer management |
US20080091868A1 (en) | 2006-10-17 | 2008-04-17 | Shay Mizrachi | Method and System for Delayed Completion Coalescing |
US7587575B2 (en) | 2006-10-17 | 2009-09-08 | International Business Machines Corporation | Communicating with a memory registration enabled adapter using cached address translations |
US20080098197A1 (en) | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Method and System For Address Translation With Memory Windows |
JP2008123298A (ja) | 2006-11-13 | 2008-05-29 | Canon Inc | 情報処理方法及びシステム |
US7849287B2 (en) | 2006-11-13 | 2010-12-07 | Advanced Micro Devices, Inc. | Efficiently controlling special memory mapped system accesses |
US7624235B2 (en) | 2006-11-30 | 2009-11-24 | Apple Inc. | Cache used both as cache and staging buffer |
US7984454B2 (en) | 2006-12-19 | 2011-07-19 | International Business Machines Corporation | Migration of single root stateless virtual functions |
US7529860B2 (en) | 2006-12-19 | 2009-05-05 | International Business Machines Corporation | System and method for configuring an endpoint based on specified valid combinations of functions |
US7617340B2 (en) | 2007-01-09 | 2009-11-10 | International Business Machines Corporation | I/O adapter LPAR isolation with assigned memory space |
US20080168208A1 (en) | 2007-01-09 | 2008-07-10 | International Business Machines Corporation | I/O Adapter LPAR Isolation In A Hypertransport Environment With Assigned Memory Space Indexing a TVT Via Unit IDs |
JP5119686B2 (ja) | 2007-03-06 | 2013-01-16 | 日本電気株式会社 | 情報処理装置および設定方法 |
EP2075696A3 (en) | 2007-05-10 | 2010-01-27 | Texas Instruments Incorporated | Interrupt- related circuits, systems and processes |
US7617345B2 (en) | 2007-07-02 | 2009-11-10 | International Business Machines Corporation | Prioritization of interrupts in a storage controller based on interrupt control directives received from hosts |
US20090024823A1 (en) | 2007-07-20 | 2009-01-22 | Wenjeng Ko | Overlayed separate dma mapping of adapters |
US8127296B2 (en) | 2007-09-06 | 2012-02-28 | Dell Products L.P. | Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration |
US8762999B2 (en) | 2007-09-27 | 2014-06-24 | Oracle America, Inc. | Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement |
JP2009088962A (ja) | 2007-09-28 | 2009-04-23 | Panasonic Corp | 通信アダプタ、通信装置および通信方法 |
US8141094B2 (en) | 2007-12-03 | 2012-03-20 | International Business Machines Corporation | Distribution of resources for I/O virtualized (IOV) adapters and management of the adapters through an IOV management partition via user selection of compatible virtual functions |
US7913030B2 (en) | 2007-12-28 | 2011-03-22 | Sandisk Il Ltd. | Storage device with transaction logging capability |
US8151083B2 (en) | 2008-01-11 | 2012-04-03 | International Business Machines Corporation | Dynamic address translation with frame management |
US8037221B2 (en) | 2008-01-16 | 2011-10-11 | International Business Machines Corporation | Dynamic allocation of DMA buffers in input/output adaptors |
US7996628B2 (en) | 2008-02-14 | 2011-08-09 | International Business Machines Corporation | Cross adapter shared address translation tables |
US8332846B2 (en) | 2008-02-28 | 2012-12-11 | Sony Mobile Communications Ab | Selective exposure to USB device functionality for a virtual machine by filtering descriptors |
US20090276774A1 (en) | 2008-05-01 | 2009-11-05 | Junji Kinoshita | Access control for virtual machines in an information system |
US7743189B2 (en) | 2008-05-05 | 2010-06-22 | International Business Machines Corporation | PCI function south-side data management |
US8032680B2 (en) | 2008-06-27 | 2011-10-04 | Microsoft Corporation | Lazy handling of end of interrupt messages in a virtualized environment |
US8359408B2 (en) | 2008-06-30 | 2013-01-22 | Intel Corporation | Enabling functional dependency in a multi-function device |
US9262357B2 (en) | 2008-09-29 | 2016-02-16 | International Business Machines Corporation | Associating process priority with I/O queuing |
JP5352848B2 (ja) * | 2008-11-28 | 2013-11-27 | 株式会社日立製作所 | 仮想計算機の制御方法及び計算機装置 |
US8645596B2 (en) | 2008-12-30 | 2014-02-04 | Intel Corporation | Interrupt techniques |
US8321615B2 (en) | 2009-12-18 | 2012-11-27 | Intel Corporation | Source core interrupt steering |
US8850166B2 (en) | 2010-02-18 | 2014-09-30 | International Business Machines Corporation | Load pair disjoint facility and instruction therefore |
US20110314263A1 (en) | 2010-06-22 | 2011-12-22 | International Business Machines Corporation | Instructions for performing an operation on two operands and subsequently storing an original value of operand |
US8914619B2 (en) | 2010-06-22 | 2014-12-16 | International Business Machines Corporation | High-word facility for extending the number of general purpose registers available to instructions |
US8572635B2 (en) | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
US8677180B2 (en) | 2010-06-23 | 2014-03-18 | International Business Machines Corporation | Switch failover control in a multiprocessor computer system |
US8615622B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Non-standard I/O adapters in a standardized I/O architecture |
US8510599B2 (en) | 2010-06-23 | 2013-08-13 | International Business Machines Corporation | Managing processing associated with hardware events |
US8656228B2 (en) | 2010-06-23 | 2014-02-18 | International Business Machines Corporation | Memory error isolation and recovery in a multiprocessor computer system |
US8478922B2 (en) | 2010-06-23 | 2013-07-02 | International Business Machines Corporation | Controlling a rate at which adapter interruption requests are processed |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9213661B2 (en) | 2010-06-23 | 2015-12-15 | International Business Machines Corporation | Enable/disable adapters of a computing environment |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8549182B2 (en) | 2010-06-23 | 2013-10-01 | International Business Machines Corporation | Store/store block instructions for communicating with adapters |
US8918573B2 (en) | 2010-06-23 | 2014-12-23 | International Business Machines Corporation | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment |
US8468284B2 (en) | 2010-06-23 | 2013-06-18 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification to a guest operating system |
US8650337B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US8621112B2 (en) | 2010-06-23 | 2013-12-31 | International Business Machines Corporation | Discovery by operating system of information relating to adapter functions accessible to the operating system |
US8626970B2 (en) | 2010-06-23 | 2014-01-07 | International Business Machines Corporation | Controlling access by a configuration to an adapter function |
US8417911B2 (en) | 2010-06-23 | 2013-04-09 | International Business Machines Corporation | Associating input/output device requests with memory associated with a logical partition |
US8745292B2 (en) | 2010-06-23 | 2014-06-03 | International Business Machines Corporation | System and method for routing I/O expansion requests and responses in a PCIE architecture |
US8639858B2 (en) | 2010-06-23 | 2014-01-28 | International Business Machines Corporation | Resizing address spaces concurrent to accessing the address spaces |
US8505032B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Operating system notification of actions to be taken responsive to adapter events |
US8645767B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Scalable I/O adapter function level error detection, isolation, and reporting |
US8645606B2 (en) | 2010-06-23 | 2014-02-04 | International Business Machines Corporation | Upbound input/output expansion request and response processing in a PCIe architecture |
US9195623B2 (en) | 2010-06-23 | 2015-11-24 | International Business Machines Corporation | Multiple address spaces per adapter with address translation |
US8683108B2 (en) | 2010-06-23 | 2014-03-25 | International Business Machines Corporation | Connected input/output hub management |
US8566480B2 (en) | 2010-06-23 | 2013-10-22 | International Business Machines Corporation | Load instruction for communicating with adapters |
US8650335B2 (en) | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Measurement facility for adapter functions |
US8504754B2 (en) | 2010-06-23 | 2013-08-06 | International Business Machines Corporation | Identification of types of sources of adapter interruptions |
US8635430B2 (en) | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US9851969B2 (en) | 2010-06-24 | 2017-12-26 | International Business Machines Corporation | Function virtualization facility for function query of a processor |
-
2010
- 2010-06-23 US US12/821,175 patent/US8572635B2/en active Active
- 2010-11-08 MX MX2012014861A patent/MX2012014861A/es active IP Right Grant
- 2010-11-08 HU HUE10781635A patent/HUE024981T2/en unknown
- 2010-11-08 CN CN201080066996.6A patent/CN102906722B/zh active Active
- 2010-11-08 RU RU2012147704/08A patent/RU2546561C2/ru not_active IP Right Cessation
- 2010-11-08 DK DK10781635T patent/DK2430558T3/en active
- 2010-11-08 SI SI201030914T patent/SI2430558T1/sl unknown
- 2010-11-08 BR BR112012033821-8A patent/BR112012033821B1/pt active IP Right Grant
- 2010-11-08 JP JP2013515720A patent/JP5719435B2/ja active Active
- 2010-11-08 EP EP10781635.7A patent/EP2430558B1/en active Active
- 2010-11-08 WO PCT/EP2010/067023 patent/WO2011160707A1/en active Application Filing
- 2010-11-08 PT PT107816357T patent/PT2430558E/pt unknown
- 2010-11-08 KR KR1020137001068A patent/KR101455011B1/ko active IP Right Grant
- 2010-11-08 AU AU2010355798A patent/AU2010355798B2/en active Active
- 2010-11-08 SG SG2012087300A patent/SG186080A1/en unknown
- 2010-11-08 ES ES10781635.7T patent/ES2535333T3/es active Active
- 2010-11-08 PL PL10781635T patent/PL2430558T3/pl unknown
- 2010-11-08 CA CA2800629A patent/CA2800629C/en active Active
-
2012
- 2012-05-02 US US13/462,152 patent/US8601497B2/en active Active
- 2012-12-12 IL IL223589A patent/IL223589B/en active IP Right Grant
- 2012-12-20 ZA ZA2012/09699A patent/ZA201209699B/en unknown
-
2013
- 2013-07-09 HK HK13108053.2A patent/HK1180796A1/xx unknown
-
2015
- 2015-04-02 HR HRP20150385TT patent/HRP20150385T1/hr unknown
Also Published As
Publication number | Publication date |
---|---|
EP2430558A1 (en) | 2012-03-21 |
IL223589B (en) | 2018-02-28 |
ES2535333T3 (es) | 2015-05-08 |
US20120221757A1 (en) | 2012-08-30 |
CN102906722A (zh) | 2013-01-30 |
RU2546561C2 (ru) | 2015-04-10 |
US8601497B2 (en) | 2013-12-03 |
ZA201209699B (en) | 2015-06-24 |
HUE024981T2 (en) | 2016-02-29 |
AU2010355798A1 (en) | 2012-12-20 |
BR112012033821A2 (pt) | 2017-10-24 |
AU2010355798B2 (en) | 2014-05-15 |
PT2430558E (pt) | 2015-05-20 |
JP5719435B2 (ja) | 2015-05-20 |
CA2800629C (en) | 2018-03-13 |
US20110321061A1 (en) | 2011-12-29 |
EP2430558B1 (en) | 2015-03-25 |
KR20130032358A (ko) | 2013-04-01 |
JP2013533543A (ja) | 2013-08-22 |
RU2012147704A (ru) | 2014-05-20 |
SG186080A1 (en) | 2013-01-30 |
CA2800629A1 (en) | 2011-12-29 |
MX2012014861A (es) | 2013-01-25 |
KR101455011B1 (ko) | 2014-10-27 |
SI2430558T1 (sl) | 2015-07-31 |
US8572635B2 (en) | 2013-10-29 |
HRP20150385T1 (en) | 2015-06-19 |
DK2430558T3 (en) | 2015-04-27 |
HK1180796A1 (en) | 2013-10-25 |
CN102906722B (zh) | 2015-07-08 |
PL2430558T3 (pl) | 2015-06-30 |
WO2011160707A1 (en) | 2011-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR112012033821B1 (pt) | método de gerenciamento de requisições de interrupção em um ambiente computacional | |
US8626970B2 (en) | Controlling access by a configuration to an adapter function | |
US8631222B2 (en) | Translation of input/output addresses to memory addresses | |
US9134911B2 (en) | Store peripheral component interconnect (PCI) function controls instruction | |
AU2010355800B2 (en) | Runtime determination of translation formats for adapter functions | |
AU2010355805B2 (en) | Enable/disable adapters of a computing environment | |
US20110320664A1 (en) | Controlling a rate at which adapter interruption requests are processed | |
US20110320663A1 (en) | Converting a message signaled interruption into an i/o adapter event notification to a guest operating system | |
US20110320637A1 (en) | Discovery by operating system of information relating to adapter functions accessible to the operating system | |
BR112012033818B1 (pt) | método para execução dentro de um circuito de processamento e sistema de computador para executar uma instrução |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 08/11/2010, OBSERVADAS AS CONDICOES LEGAIS. |