BR112012032857B1 - método e equipamento para carregar dados de um adaptador - Google Patents

método e equipamento para carregar dados de um adaptador Download PDF

Info

Publication number
BR112012032857B1
BR112012032857B1 BR112012032857-3A BR112012032857A BR112012032857B1 BR 112012032857 B1 BR112012032857 B1 BR 112012032857B1 BR 112012032857 A BR112012032857 A BR 112012032857A BR 112012032857 B1 BR112012032857 B1 BR 112012032857B1
Authority
BR
Brazil
Prior art keywords
adapter
data
address
processor
instruction
Prior art date
Application number
BR112012032857-3A
Other languages
English (en)
Other versions
BR112012032857A2 (pt
Inventor
Dan Greiner
David Craddock
Thomas Gregg
Mark Farrell
Original Assignee
International Business Machines Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corporation filed Critical International Business Machines Corporation
Publication of BR112012032857A2 publication Critical patent/BR112012032857A2/pt
Publication of BR112012032857B1 publication Critical patent/BR112012032857B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

MÉTODO, EQUIPAMENTO, PROGRAMA DE COMPUTADOR E PRODUTO DE PROGRAMA DE COMPUTADOR PARA EXECUÇÃO DE INSTRUÇÃO DE CARGA PARA CARREGAR DADOS DE UM ADAPTADOR A invenção trata de facilitar a comunicação de um ambiente computacional com adaptadores. São fornecidas instruções que orientam estritamente os adaptadores. As informações fornecidas numa instrução são utilizadas para conduzir a instrução a uma locação apropriada dentro do adaptador.

Description

MÉTODO E EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR ANTECEDENTES
[001] Esta invenção se relaciona, de forma geral, ao processamento de entrada/saída de um ambiente computacional e, em particular, à facilitação da comunicação com adaptadores do ambiente computacional.
[002] O ambiente computacional pode incluir um ou mais tipos de dispositivos de entrada/saída, inclusive vários tipos de adaptadores. Um tipo de adaptador é o adaptador PCI - Interconexão de Componentes Periféricos ou o adaptador PCIe - Interconexão de Componentes Periféricos Expressa. Este adaptador inclui um ou mais espaços de endereço utilizados em dados de comunicação entre o adaptador e o sistema ao qual o adaptador está anexado. A especificação PCI está disponível na rede de alcance mundial em www.pcisig.com/home.
[003] A Patente norte-americana N° 6.704.831, emitida em 09 de março de 2004, de Avery, "Method and Apparatus for Converting Address Information Between PCI Bus Protocol and a Message-Passing Queue-Oriented Bus Protocol” (Método e Dispositivo para Conversão de Informação de Endereço entre Protocolo de Barramento PCI e Protocolo de Barramento de Transmissão de Mensagem Orientado por Fila), descreve operações PCI de carga/armazenamento e são implementadas operações de acesso direto à memória (DMA) via pares de filas de trabalho numa transmissão de mensagem, em arquitetura de barramento orientada por fila. O espaço do endereço PCI é dividido em segmentos e cada segmento, por sua vez, é dividido em regiões. É atribuída uma fila de trabalho separada a cada segmento. Uma primeira parte do endereço PCI é combinada com as faixas de endereço representadas pelos segmentos e utilizada para selecionar um segmento de memória e a sua fila de trabalho correspondente. Uma entrada na fila de trabalho armazena uma segunda parte do endereço PCI que especifica uma região dentro do segmento especificado atribuída a um dispositivo PCI específico. Numa concretização, as operações de carga/armazenamento de entrada/saída programadas - PIO são implementadas mediante a seleção de uma fila de trabalho atribuída às operações PIO e a criação de uma entrada de fila de trabalho com o endereço PCI de um registro num dispositivo PCI e um indicador para os dados PIO. A entrada da fila de trabalho é enviada a uma ponte PCI onde o endereço PCI é extraído e utilizado para programar o registro do dispositivo apropriado com os dados utilizando o orientador de dados. As transferências DMA também são implementadas mediante a seleção de uma fila de trabalho por meio de comparação de uma parte do endereço PCI gerado pelo dispositivo PCI para uma tabela de faixas de endereço e a seleção da fila de trabalho que serve à faixa de endereços. É criada uma entrada de fila de trabalho com os endereços PCI restantes e o orientador de dados DMA. É utilizada uma operação de DMA remoto (RDMA) para realizar a transferência DMA. A página e a região de dados são utilizadas em conexão com uma tabela de proteção de tradução no adaptador de canal hospedeiro para acessar a memória física e realizar a transferência DMA.
[004] A Patente norte-americana N° 7.613.847, emitida em 3 de novembro de 2009, de Kjos et al, “Partially Virtualizing na I/O Device for Use by Virtual Machines” (Virtualização Parcial de um Dispositivo E/S para Utilização em Máquinas Virtuais), descreve um sistema computacional compreendendo um computador físico e um monitor virtual executável no computador físico e configurado para criar uma emulação de no mínimo um sistema operacional convidado adaptado para controlar o computador físico. O sistema computacional compreende ainda um executável hospedeiro no computador físico que gerencia recursos físicos acoplados ao computador físico em nome do monitor virtual e de, no mínimo, um sistema operacional convidado. O hospedeiro é adaptado para virtualizar a configuração do espaço de endereçamento da PCI pelo qual o(s) sistema(s) operacional(is) convidado(s) controla(m) diretamente os dispositivos E/S da PCI e na ausência da emulação E/S.
[005] Em alguns sistemas, a parte do espaço de endereçamento da unidade central de processamento (CPU) acoplada ao adaptador é mapeada a um espaço de endereçamento do adaptador permitindo que instruções da CPU que acessam armazenamento manipulem diretamente os dados no espaço de endereçamento do adaptador.
BREVE SUMÁRIO
[006] De acordo com um aspecto da presente invenção, é fornecida uma capacidade para facilitar a comunicação com adaptadores, tais como adaptadores PCI ou PCIe. São fornecidas instruções de controle projetadas especificamente para dados de comunicação de e para adaptadores e utilizadas para comunicação.
[007] O fornecimento de um método e equipamento para o carregamento de dados de um adaptador supera as deficiências da técnica anterior e traz vantagens. O equipamento inclui uma mídia de armazenamento de leitura que pode ser lida por um circuito de processamento e armazenar instruções para execução pelo circuito de processamento para realizar um método. O método inclui, por exemplo, a obtenção de instrução da máquina para execução, sendo a instrução da máquina definida para a execução do computador de acordo com a arquitetura do computador, e a instrução da máquina compreendendo um campo de código de operação identificando uma carga da instrução do adaptador; um primeiro campo identificando uma primeira localização na qual os dados buscados no adaptador serão carregados; um segundo campo identificando uma segunda localização, cujo conteúdo inclui um identificador de função identificando o adaptador, uma designação do espaço de endereçamento dentro do adaptador do qual os dados devem ser carregados, eu m desvio dentro do espaço de endereçamento; e a execução das instruções da máquina, execução essa incluindo a utilização do identificador de função para obter uma entrada de tabela de funções; a obtenção do endereço de dados do adaptador utilizando, no mínimo, uma das informações na entrada da tabela de funções e o desvio; e busca de dados de uma localização específica no espaço de endereçamento identificado pela designação do espaço de endereçamento, a localização específica identificada pelos dados de endereço do adaptador.
[008] Métodos e equipamentos relativos a um ou mais aspectos da presente invenção estão descritos nas reivindicações contidas neste documento.
[009] Características e vantagens adicionais são concretizadas mediante as técnicas da presente invenção. Outras concretizações e aspectos da invenção estão descritos em detalhe neste documento e são considerados como parte da invenção reclamada.
BREVE DESCRIÇÃO DOS VÁRIOS ASPECTOS DOS DESENHOS
[0010] Descreveremos agora uma concretização preferencial da presente invenção, somente por meio de exemplo, com referência aos desenhos anexos, na qual:
[0011] A FIG. 1A retrata uma concretização de um ambiente computacional para incorporar e utilizar um ou mais aspectos da presente invenção;
[0012] A FIG. 1B retrata uma concretização de um dispositivo de entrada de tabela localizado no hub de E/S da FIG. 1A e utilizada de acordo com um aspecto da presente invenção;
[0013] A FIG. 1C retrata outra concretização de um ambiente computacional para incorporar e utilizar um mais aspectos da presente invenção;
[0014] A FIG. 2 retrata um exemplo de espaços de endereçamento de uma função adaptador, de acordo com um aspecto da presente invenção;
[0015] A FIG. 3A retrata um exemplo de uma entrada de tabela de função utilizada de acordo com um aspecto da presente invenção;
[0016] A FIG. 3B retrata uma concretização de um identificador de função utilizado de acordo com um aspecto da presente invenção;
[0017] A FIG. 4A retrata uma concretização de uma instrução de Carga PCI utilizada de acordo com um aspecto da presente invenção;
[0018] A FIG. 4B retrata uma concretização de um campo utilizado pela instrução de Carga PCI da FIG. 4A, de acordo com um aspecto da presente invenção;
[0019] A FIG. 4C retrata uma concretização de outro campo utilizado pela instrução de Carga PCI da FIG. 4A, de acordo com um aspecto da presente invenção;
[0020] As FIGs. 5A-5B retratam uma concretização da lógica para realizar uma operação de Carga PCI, de acordo com um aspecto da presente invenção;
[0021] A FIG. 6A retrata uma concretização de uma instrução de Armazenamento PCI utilizada de acordo com um aspecto da presente invenção;
[0022] A FIG. 6B retrata uma concretização de um campo utilizado pela instrução de Armazenamento PCI da FIG. 6A, de acordo com um aspecto da presente invenção;
[0023] A FIG. 6C retrata uma concretização de outro campo utilizado pela instrução de Armazenamento PCI da FIG. 6A. de acordo com um aspecto da presente invenção;
[0024] As FIGs. 7A-7B retratam uma concretização da lógica para realizar a operação de Armazenamento PCI, de acordo com um aspecto da presente invenção;
[0025] A FIG. 8A retrata uma concretização de uma instrução de Bloco de Armazenamento PCI utilizada de acordo com um aspecto da presente invenção;
[0026] A FIG. 8B retrata uma concretização de um campo utilizado pela instrução de Bloco de Armazenamento PCI da FIG. 8A, de acordo com um aspecto da presente invenção;
[0027] A FIG. 8C retrata uma concretização de outro campo utilizado pela instrução de Bloco de Armazenamento PCI da FIG. 8A, de acordo com um aspecto da presente invenção;
[0028] A FIG. 8D retrata uma concretização de ainda outro campo utilizado pela instrução de Bloco de Armazenamento PCI da FIG. 8A, de acordo com um aspecto da presente invenção;
[0029] As FIGs. 9A-9B retratam uma concretização da lógica para realizar a operação de Bloco de Armazenamento PCI, de acordo com um aspecto da presente invenção;
[0030] A FIG. 10 retrata uma concretização de um produto programa de computador incorporando um ou mais aspectos da presente invenção;
[0031] A FIG. 11 retrata uma concretização de um sistema de computador hospedeiro para incorporar e utilizar um mais aspectos da presente invenção;
[0032] A FIG. 12 retrata um outro exemplo de um sistema de computador para incorporar e utilizar um mais aspectos da presente invenção;
[0033] A FIG. 13 retrata um outro exemplo de um sistema de computador compreendendo uma rede de computadores para incorporar e utilizar um mais aspectos da presente invenção;
[0034] A FIG. 14 retrata uma concretização de vários elementos de um sistema de computador para incorporar e utilizar um mais aspectos da presente invenção;
[0035] A FIG. 15A retrata uma concretização da unidade de execução do sistema de computador da FIG. 14 para incorporar e utilizar um mais aspectos da presente invenção;
[0036] A FIG. 15B retrata uma concretização da unidade de desvio do sistema do computador da FIG. 14 para incorporar e utilizar um mais aspectos da presente invenção;
[0037] A FIG. 15C retrata uma concretização da unidade de carga/armazenamento do sistema do computador da FIG. 14 para incorporar e utilizar um mais aspectos da presente invenção; e
[0038] A FIG. 16 retrata uma concretização de um sistema de computador hospedeiro emulado para incorporar e utilizar um mais aspectos da presente invenção.
DESCRIÇÃO DETALHADA
[0039] De acordo com um aspecto da presente invenção, uma ou mais instruções de controle são fornecidas para facilitar a comunicação com os adaptadores de um ambiente computacional. As instruções de controle são projetadas especificamente para comunicar dados de e para os espaços de endereçamento dos adaptadores.
[0040] Conforme utilizado aqui, o termo adaptador inclui qualquer tipo de adaptador (e.g., adaptador de armazenamento, adaptador de rede de trabalho, adaptador de processamento, adaptador PCI, adaptador criptográfico, outros tipos de adaptadores de entrada/saída, etc.). Numa concretização, um adaptador pode incluir uma pluralidade de funções de adaptador. Um ou mais aspectos da presente invenção são aplicáveis quer o adaptador inclua uma função adaptador ou uma pluralidade de funções de adaptador. Numa concretização, caso o adaptador inclua uma pluralidade de funções adaptadoras, cada função pode ser comunicada de acordo com um aspecto da presente invenção. Além disso, nos exemplos aqui apresentados, o adaptador é utilizado intercambiavelmente com função adaptador (e.g., função PCI) salvo observação em contrário.
[0041] Uma concretização de um ambiente computacional para incorporar ou utilizar um ou mais aspectos da presente invenção está descrita com referência à FIG. 1A. Num exemplo, um ambiente computacional 100 num servidor de Sistema z® fornecido pela International Business Machines Corporation. O Sistema z® é baseado na z/Architecture® fornecida pela International Business Machines Corporation. Os detalhes referentes à z/Architecture® estão descritos numa publicação da IBM® intitulada "z/Architecture Principles of Operation” (Princípios de Operação da z-Architecture), publicação da IBM N° SA22-7832-07, fevereiro de 2009. A IBM®, o Sistema z® e a z/Architecture® são marcas registradas da International Business Machines Corporation, Armonk, Nova York. Outros nomes aqui utilizados podem ser marcas registradas ou nomes de produtos da International Business Machines Corporation ou de outras empresas.
[0042] Num exemplo, o ambiente computacional 100 inclui uma ou mais unidades de processamento central (CPUs) 102 acopladas a um sistema de memória 104 (também chamado memória principal) através de um controlador de memória 106. Para acessar a memória de sistema 104, a unidade de processamento central 102 emite uma solicitação escrita ou de leitura que inclui um endereço utilizado para acessar a memória do sistema. O endereço incluído na solicitação é tipicamente não utilizável diretamente para acessar a memória do sistema, e portanto, é traduzido para um endereço diretamente utilizável para acessar a memória do sistema. O endereço é traduzido através de um mecanismo de tradução (XLATE) 108. Por exemplo, o endereço é traduzido de um endereço virtual para um endereço real ou absoluto, utilizando-se, por exemplo, tradução dinâmica de endereços (DAT).
[0043] A solicitação, inclusive o endereço (traduzido, se necessário), é recebida pelo controlador de memória 106. Num exemplo, o controlador de memória 106 se compõe de hardware e é utilizado para mediar para acesso à memória do sistema e para manter a consistência da memória. Essa mediação é realizada para as solicitações recebidas das CPUs 102, bem como para as solicitações recebidas de um ou mais adaptadores 110. Similarmente às unidades de processamento central, os adaptadores emitem solicitações à memória do sistema 104 para obter acesso à memória do sistema.
[0044] Num exemplo, o adaptador 110 é um adaptador Interconexão de Componentes Periféricos (PCI) ou Interconexão de Componentes Periféricos Expressa (PCIe) que inclui uma ou mais funções PCI. A função PCI emite uma solicitação que é encaminhada para um hub de entrada/saída 112 (e.g., um hub PCI) por um ou mais switches (e.g., switches PCIe) 114. Num exemplo, o hub de entrada/saída se compõe de hardware, inclusive uma ou mais máquinas de estado, e está acoplado ao controlador de memória 106 através de um barramento para memória E/S 120.
[0045] O hub de entrada/saída inclui, por exemplo, um complexo de raiz 116 que recebe a solicitação de um switch. A solicitação inclui um endereço de entrada/saída que é fornecido a uma unidade de tradução e proteção de endereço 118 que acessa as informações usadas para a solicitação. Como exemplos, a solicitação pode incluir um endereço de entrada/saída utilizado para realizar uma operação de acesso direto à memória (DMA) ou para solicitar Interrupção Sinalizada por Mensagens (MSI). A unidade de tradução e proteção de endereço 118 acessa as informações utilizadas para a solicitação DMA ou MSI. Como um exemplo particular, para uma operação DMA, as informações podem ser obtidas para traduzir o endereço. O endereço traduzido é então encaminhado ao controlador de memória para acessar a memória do sistema.
[0046] Num exemplo, como descrito em referência à FIG. 1B, a informação utilizada para a solicitação DMA ou MSI emitida por um adaptador é obtida de uma entrada de tabela de dispositivo 130 de uma tabela de dispositivo localizada no hub E/S (e.g., na unidade de tradução e proteção do endereço). A entrada da tabela de dispositivo inclui informações para o adaptador, e cada adaptador possui pelo menos uma entrada de tabela de dispositivo associada a ele. Por exemplo, existe uma entrada da tabela de dispositivo por espaço de endereçamento (na memória do sistema) atribuído ao adaptador. Para uma solicitação emitida de um adaptador (e.g., função PCI 138), uma entrada da tabela de dispositivo é alocada utilizando uma ID solicitante fornecida na solicitação.
[0047] Com referência agora à FIG. 1C, numa concretização adicional de um ambiente computacional, além, ou em vez de uma ou mais CPUS 102, é acoplado um complexo de processamento central ao controlador de memória 106. Neste modelo, um complexo de processamento central 150 inclui, por exemplo, uma ou mais partições ou zonas 152 (e.g., partições lógicas LP1-LPn), um ou mais processadores centrais (e.g., CP1-CPn) 154, e um hipervisor 156 (e.g., um gerenciador de partição lógica), cada um deles descrito abaixo.
[0048] Cada partição lógica 152 é capaz de funcionar como um sistema separado, isto é, cada partição lógica pode ser zerada de forma independente, carregada inicialmente com um sistema operacional ou um hipervisor (como o z/VM®, fornecido pela International Business Machines Corporation, Armonk, Nova York), se desejado, e operar com programas diferentes. Um sistema operacional, um hipervisor, ou um programa aplicativo rodando numa partição lógica parece ter acesso a um sistema integral e completo, mas apenas uma parte dele está disponível. A combinação de hardware e Código Interno Licenciado (também chamado de microcódigo ou milicódigo) impede que um programa numa partição lógica interferira com o programa numa partição lógica diferente. Isso permite que várias partições lógicas diferentes operem em processador físico único ou múltiplo em modo fração de tempo. Neste exemplo particular, cada partição lógica possui um sistema operacional residente 158, que pode diferir para uma ou mais partições lógicas. Numa concretização, o sistema operacional 158 é o z/OS® ou o sistema operacional zLinus, oferecido pela International Business Machines Corporation, Armonk, Nova York. z/OS® e z/VM® são marcas registradas da International Business Machines Corporation, Armonk, Nova York.
[0049] Os processadores centrais 154 são recursos físicos processadores que são alocados às partições lógicas. Por exemplo, uma partição lógica 152 inclui um ou mais processadores lógicos, cada qual representando o todo de uma parte do recurso físico processador 154 alocado à partição. O recurso processador fundamental tanto pode ser dedicado àquela partição ou compartilhado com outra partição.
[0050] As partições lógicas 152 são gerenciadas por um hipervisor 156 implementado por firmware rodando nos processadores 154. Tanto as partições lógicas 152 como o hipervisor 156 compreendem um ou mais programas residentes na respectiva parte da central de armazenamento associada com os processadores centrais. Um exemplo do hipervisor 156 é o Processor Resource/Systems Manager (PR/SM) da International Business Machines Corporation, Armonk, Nova York.
[0051] De acordo com a utilização neste documento, firmware inclui, e.g., o microcódigo, milicódigo ou o macrocódigo do processador. Inclui, por exemplo, as instruções em nível de hardware e/ou as estruturas de dados utilizadas na implementação de código de máquina de nível mais alto. Numa concretização, inclui, por exemplo, o código proprietário que é tipicamente fornecido como microcódigo que inclui software confiáveis ou microcódigos específicos ao hardware básico e controla o acesso ao sistema operacional ao hardware do sistema.
[0052] Embora, neste exemplo, seja descrito um complexo de processamento central com partições lógicas, um ou mais aspectos da presente invenção podem ser incorporados e utilizados em quaisquer outras unidades processadoras, incluindo unidades de processamento de processador único ou multiprocessadoras que não sejam particionadas, dentre outras. O complexo de processamento central aqui descrito é somente um exemplo.
[0053] Como descrito acima, os adaptadores podem emitir solicitações aos processadores requisitando várias operações, tais como acessos à memória direta, interrupções sinalizadas por mensagem, etc. Além disso, os processadores podem emitir solicitações aos adaptadores. Por exemplo, voltando à FIG. 1B, um processador pode emitir uma solicitação para acessar uma função adaptador 138. A solicitação é roteada do processador para a função adaptador via hub E/S 112 e um ou mais switches 114. Nesta concretização, o controlador de memória não está demonstrado. Entretanto, o hub E/S pode ser acoplado ao processador diretamente ou por controlador de memória.
[0054] Como exemplo, um sistema operacional 140 sendo executado no processador emite uma instrução para a função adaptador solicitando uma operação em particular. Neste exemplo, as instruções emitidas pelo sistema operacional são específicas para a infraestrutura E/S. Assim, uma vez que a infraestrutura E/S é baseada em PCI ou PCIe (ambas referidas aqui como PCI, salvo observação em contrário), as instruções são instruções PCI. Os exemplos de instruções PCI incluem Carga PCI, Armazenamento PCI e PCI Bloco de Armazenamento, para citar alguns. Embora, neste exemplo, a infraestrutura E/S e as instruções sejam baseadas em PCI, em outras concretizações podem ser utilizadas outras infraestruturas e instruções correspondentes.
[0055] Num exemplo particular, as instruções são direcionadas a uma localização específica no espaço de endereçamento da função adaptador. Por exemplo, conforme mostrado na FIG. 2, a função adaptador 138 inclui armazenamento 200, que é definida como uma pluralidade de espaços de endereçamento, incluindo, por exemplo: um espaço de configuração 202 (e.g., espaço de configuração PCI para uma função PCI); um espaço E/S 204 (e.g., espaço PCI E/S); e um ou mais espaços de memória 206 (e.g., espaço de memória PCI). Em outras concretizações podem ser fornecidos mais, menos ou diferentes espaços de endereçamento. As instruções são endereçadas a um espaço de endereçamento particular e a uma localização particular dentro do espaço de endereçamento. Isso garante que a configuração (e.g., sistema operacional, partição lógica (LPAR), processador, convidado, etc.) emitindo a instrução está autorizada a acessar a função adaptador.
[0056] Para facilitar o processamento das instruções, são utilizadas informações armazenadas em uma ou mais estruturas de dados. Uma dessas estruturas de dados que inclui informações relativas a adaptadores é uma tabela de funções 300 armazenada, por exemplo, em memória segura. Conforme demonstrado na FIG. 3A, num exemplo, a tabela de funções 300 inclui uma ou mais entradas de tabela de funções (FTEs) 302. Num exemplo, existe uma entrada de tabela de função por função adaptador. Cada entrada de tabela de função 302 inclui informações a serem utilizadas no processamento associado à função adaptador. Num dos exemplos, a entrada de tabela de função 302, inclui:
[0057] Número de Instância 308: Este campo indica uma instância particular do identificador de função associado com a entrada da tabela de função;
[0058] Entrada da tabela de dispositivo (DTE) Índice 1 ... n 310: Pode haver um ou mais índices de tabela de dispositivo, e cada índice é um índice na tabela de dispositivo para localizar uma entrada de tabela de dispositivo (DTE). Há uma ou mais entradas de tabela de dispositivo por função adaptador, e cada entrada inclui informações associadas à função adaptador, incluindo informações utilizadas para processar solicitações da função adaptador (e.g., solicitações DMA, solicitações MSI) e informações relativas a solicitações à função adaptador (e.g., instruções PCI). Cada entrada de tabela de dispositivo está associada a um espaço de endereçamento dentro da memória do sistema atribuída à função adaptador. A função adaptador pode possuir um ou mais espaços de endereçamento dentro da memória de sistema atribuída à função adaptador.
[0059] Indicador de Ocupado 312: Este campo indica se a função adaptador está ocupada;
[0060] Indicador de Estado de Erro Permanente 314: Este campo indica se a função adaptador está em estado de erro permanente;
[0061] Indicador de Recuperação Iniciada 316: Este campo indica se a recuperação da função adaptador foi iniciada;
[0062] Indicador de Permissão 318: Este campo indica se o sistema operacional que está tentando ativar a função adaptador tem autorização para fazê-lo;
[0063] Indicador de Ativação 320: Este campo indica se a função adaptador está ativada (e.g., 1=ativada, 0=desativada);
[0064] Identificador do Solicitante (RID) 322: Este é um identificador da função adaptador e pode incluir, por exemplo, um número de barramento, número de dispositivo e número de função. Este campo é utilizado, por exemplo, para acessos do espaço de configuração da função adaptador.
[0065] Por exemplo, o espaço de configuração pode ser acessado mediante a especificação do espaço de configuração numa instrução emitida pelo sistema operacional (ou outra configuração) à função adaptador. Especificados na instrução estão um desvio no espaço de configuração e um identificador de função utilizado para localizar a entrada da tabela de função apropriada que inclua o RID. O firmware recebe a instrução e determina que ela é para o espaço de configuração. Portanto, ele utiliza o RID para gerar uma solicitação para o hub E/S, e o hub E/S cria uma solicitação para acessar o adaptador. A localização da função adaptador é baseada no RID, e o deslocamento especifica um desvio no espaço de configuração da função adaptador. Por exemplo, o deslocamento especifica um número de registro no espaço de configuração.
[0066] Registro de Endereço Base (BAR) (1 a n) 324: Este campo inclui uma pluralidade de números inteiros sem sinal, designados BAR0 - BARn, que são associados à função adaptador originalmente especificada, e cujos valores também são armazenados nos registros de endereço base associados à função adaptador. Cada BAR especifica o endereço inicial de um espaço de memória ou espaço E/S dentro da função adaptador, e também indica o tipo de espaço de endereçamento, isto é, se é um espaço de memória de 64 ou 32 bits, ou um espaço E/S de 32 bits, como exemplos;
[0067] Num exemplo, ele é utilizado para acessos ao espaço de memória e/ou espaço E/S da função adaptador. Por exemplo, um deslocamento fornecido numa instrução para acessar a função adaptador é adicionado ao valor no registro de endereço base associado ao espaço de endereçamento designado na instrução para obter o endereço a ser utilizado para acessar a função adaptador. O identificador do espaço de endereçamento fornecido na instrução identifica o espaço de endereçamento na função adaptador a ser acessado e o BAR correspondente a ser utilizado;
[0068] Tamanho 1 ... n 326: Este campo inclui uma pluralidade de números inteiros sem sinal, designados TAMANHO0 - TAMANHOn. O valor do campo de Tamanho, quando diferente de zero, representa o tamanho de cada espaço de endereçamento com cada entrada correspondendo a um BAR previamente descrito.
[0069] Mais detalhes sobre BAR e Tamanho encontram-se descritos abaixo.
1. Quando um BAR não está implementado para uma função adaptador, o campo BAR e o campo Tamanho correspondente são ambos armazenados como zero.
2. Quando um campo BAR representa ou um espaço de endereçamento E/S ou um espaço de endereçamento de memória de 32 bits, o campo Tamanho correspondente é diferente de zero e representa o tamanho do espaço de endereçamento.
3. Quando um campo BAR representa um espaço de endereçamento de memória de 64 bits,
  • a. O campo BARn representa o endereço de bits menos significativo.
  • b. O próximo campo consecutivo BARn+1 representa o endereço de bits mais significativo.
  • c. O campo TAMANHOn correspondente é diferente de zero e representa o tamanho do espaço de endereçamento.
  • d. O campo TAMANHOn+1 correspondente não é significativo e é armazenado como zero.
[0070] Informação de Roteamento Interno 328: Essa informação é utilizada para realizar um roteamento específico ao adaptador. Inclui, por exemplo, informação de endereçamento de nó, chip processador e hub E/S.
[0071] Indicador de Status 330: Fornece a indicação se as operações de carga/armazenamento estão bloqueadas, além de outras indicações.
[0072] Num exemplo, o indicador de ocupado, o indicador de estado de erro permanente, e o indicador de recuperação iniciada estão configurados com base em monitoramento realizado pelo firmware. Além disso, o indicador de permissão está configurado, por exemplo, com base em política. A informação do BAR está baseada em informações de configuração descobertas durante a passagem do barramento pelo processador (e.g., firmware ou o processador). Outros campos podem ser estabelecidos com base na configuração, inicialização e/ou eventos. Em outras concretizações, a entrada da tabela de função pode incluir mais ou menos informações ou informações diferentes. As informações incluídas podem depender das operações suportadas ou ativadas da função adaptador.
[0073] Para localizar uma entrada da tabela de função numa tabela de função que inclui uma ou mais entradas, numa concretização, é utilizado um identificador de função. Por exemplo, um ou mais bits do identificador de função são utilizados como um índice na tabela de função para localizar uma entrada específica da tabela de função.
[0074] Com referência à FIG. 3B, são descritos detalhes adicionais relativos ao identificador de função. Num exemplo, um identificador de função 350 inclui um indicador de ativação 352 que indica se o identificador da função PCI está ativado; um número de função PCI 354 que identifica a função (este é um identificador estático e, numa concretização, é um índice na tabela de função); e um número de instância 356 que indica a instância específica deste identificador de função. Por exemplo, cada vez que a função é ativada, o número da instância é aumentado para fornecer um novo número de instância.
[0075] De acordo com um aspecto da presente invenção, para acessar uma função adaptador, a configuração emite uma solicitação à função adaptador, que é executada pelo processador. Nos exemplos aqui fornecidos, a configuração é um sistema operacional, mas em outros exemplos, pode ser um sistema, um processador, uma partição lógica, um convidado, etc. Essas solicitações ocorrem por meio de instruções específicas, que acessam o adaptador. Exemplos de instruções incluem instruções de Carga PCI, Armazenamento PCI, e Bloco de Armazenamento PCI. Essas instruções são específicas para a arquitetura do adaptador (e.g., PCI). Descrevemos abaixo mais detalhes relativos a essas instruções. Por exemplo, uma concretização de uma instrução de Carga PCI está descrita nas FIGs. 4A-5B; uma concretização de uma instrução de Armazenamento PCI está descrita nas FIGs 6A-7B; e uma concretização de uma instrução de Bloco de Armazenamento PCI está descrita com relação às FIGs. 8A-9B.
[0076] Fazendo referência inicialmente à FIG. 4A, retratamos uma concretização de uma instrução de Carga PCI. Conforme mostrado, a instrução de Carga PCI 400 inclui, por exemplo, um código de operação 402 indicando a instrução de Carga PCI; um primeiro campo 404 especificando a localização na qual os dados trazidos de uma função adaptador serão carregados; e um segundo campo 406 especificando a localização na qual estão incluídas várias informações relativas à função adaptador da qual os dados devem ser carregados. Os conteúdos das localizações designadas pelos Campos 1 e 2 estão descritas mais abaixo.
[0077] Num exemplo, o Campo 1 designa um registro geral e, conforme retratado na FIG. 4B, os conteúdos 404 desse registro incluem uma faixa contígua de um ou mais bytes carregados da localização da função adaptador especificada na instrução. Em outro exemplo, os dados são carregados nas posições de byte mais à direita do registro.
[0078] Numa concretização, o Campo 2 designa um par de registros gerais que incluem várias informações. Conforme mostrado na FIG. 4B, os conteúdos dos registros incluem, por exemplo:
Identificador Ativado 410: Este campo é um identificador de função ativado da função adaptador do qual os dados devem ser carregados;
Espaço de Endereçamento 412: Este campo identifica o espaço de endereçamento dentro da função adaptador do qual os dados devem ser carregados;
Deslocamento Dentro do Espaço de Endereçamento 414: Este campo especifica o deslocamento dentro do espaço de endereçamento do qual os dados devem ser carregados;
Campo Extensão 416: Este campo especifica a extensão da operação de carga (e.g., o número de bytes a ser carregado); e
Campo Status 418: Este campo fornece um código de status aplicável quando a instrução se completa com uma condição de código predefinida.
[0079] Numa concretização, os bytes carregados da função adaptador devem estar contidos dentro de um limite integral no espaço de endereçamento PCI designado da função adaptador. Quando o espaço de endereçamento designa um espaço de endereçamento de memória, o tamanho do limite integral é, por exemplo, duas palavras. Quando o espaço de endereçamento designa um espaço de endereçamento E/S ou um espaço de endereçamento de configuração, o tamanho do limite integral é, por exemplo, uma palavra.
[0080] Uma concretização da lógica associada a uma instrução de Carga PCI está descrita com referência às FIGs. 5A-5B. Num exemplo, a instrução é emitida por um sistema operacional (ou outra configuração) e executada pelo processador (e.g., firmware) executando o sistema operacional. Nos exemplos aqui contidos, as instruções e as funções do adaptador são baseadas em PCI. Entretanto, em outros exemplos, podem ser usadas uma arquitetura diferente de adaptador e as instruções correspondentes.
[0081] Para emitir a instrução, o sistema operacional fornece os seguintes operandos para a instrução (e.g.; em um ou mais registros designados pela instrução): o identificador da função PCI, o espaço de endereçamento PCI (PCIAS), o deslocamento no espaço de endereçamento PCI, e a extensão dos dados a serem carregados. Mediante à conclusão bem sucedida da Instrução de Carga PCI, os dados são carregados no local (e.g., registro) designado pela instrução.
[0082] Com referência à FIG. 5A, inicialmente é feita uma determinação para verificar se o recurso que permite a instrução de Carga PCI está instalado, CONSULTA 500. Essa determinação é feita, por exemplo, pela verificação de um indicador armazenado, como um bloco de controle. Se o recurso não estiver instalado, é fornecida uma condição de exceção, PASSO 502. De outra forma, é feita uma determinação para verificar se os operandos estão alinhados, CONSULTA 504. Por exemplo, se determinados operandos precisam ser em pares de registros par/ímpar, é feita uma verificação se esses requisitos estão atendidos. Se os operandos não estiverem alinhados, é então fornecida uma exceção, PASSO 506. Por outro lado, se o recurso estiver instalado e os operandos estiverem alinhados, é preciso determinar se o identificador fornecido nos operandos da instrução de Carga PCI está ativado, CONSULTA 508. Num exemplo, esta determinação é feita pela verificação de um indicador de ativação no identificador. Se o identificador não estiver ativado, é fornecida uma condição de exceção, PASSO 510.
[0083] Se o identificador estiver ativado, então ele é usado para localizar uma entrada de tabela de função, PASSO 512. Pelo menos uma parte do identificador é utilizada como índice dentro da tabela de função para localizar a entrada da tabela de função correspondente à função adaptador da qual os dados devem ser carregados.
[0084] Em seguida, se a configuração emitindo a instrução for um convidado, se determina se a função está configurada para uso de um convidado, CONSULTA 514. Se não estiver autorizado, então é fornecida uma condição de exceção, PASSO 516. Esta CONSULTA pode ser ignorada caso a configuração não seja um convidado ou podem ser verificadas outras autorizações, caso designadas. (Num exemplo, na z/Architecture®, um convidado rastreável é executado interpretativamente através da instrução de Execução Interpretativa Inicial (SIE), no nível 2 de interpretação. Por exemplo, o hipervisor de partição lógica (LPAR) executa a instrução SIE para iniciar a partição lógica na memória física, fixa. Se o z/VM® for o sistema operacional nessa partição lógica, ele emite a instrução SIE para executar suas máquinas convidadas (virtuais) no seu armazenamento V=V (virtual). Portanto o hipervisor LPAR usa o nível SIE 1, e o hipervisor z/VM® usa o nível SIE 2.)
[0085] É feita então uma determinação para verificar se a função está ativada, CONSULTA 518. Num exemplo, esta determinação é feita pela verificação do indicador de ativação na entrada da tabela de função. Se não estiver ativado, é fornecida então uma condição de exceção, PASSO 520.
[0086] Se a função estiver ativada, verifica-se então se o espaço de endereçamento é válido, CONSULTA 522. Por exemplo, o espaço de endereçamento especificado é um espaço de endereçamento designado da função adaptador e adequado para esta instrução. Caso o espaço de endereçamento seja inválido, então é fornecida uma condição de exceção, PASSO 524. De outra forma, verifica-se se a carga/armazenamento está bloqueado, CONSULTA 526. Num exemplo, essa determinação é feita pela verificação do indicador de status na entrada da tabela de função. Se carga/armazenamento estiver bloqueado, então é fornecida uma condição de exceção, PASSO 528.
[0087] Entretanto, caso carga/armazenamento não esteja bloqueado, verifica-se se a recuperação está ativa, CONSULTA 530. Num exemplo, essa determinação é feita pela verificação do indicador de recuperação iniciada na entrada da tabela de função. Se a recuperação estiver ativa, então é fornecida uma condição de exceção, PASSO 532. Do contrário, é feita uma verificação se a função está ocupada, CONSULTA 534. Essa determinação é feita pela verificação do indicador de ocupado na entrada da tabela de função. Se a função estiver ocupada, é fornecida uma condição de ocupado, PASSO 536. Com a condição de ocupado, a instrução pode ser repetida, em vez de ser derrubada.
[0088] Se a função não estiver ocupada, então é feita uma verificação adicional se o deslocamento especificado na instrução é válido, CONSULTA 538, isto é, se o deslocamento está em combinação com a extensão da operação dentro da base e extensão do espaço de endereçamento, conforme especificado na entrada da tabela de função. Caso não esteja, é fornecida uma condição de exceção, PASSO 540. Entretanto, se o deslocamento for válido, é feita uma verificação se a extensão é válida, CONSULTA 542, isto é, levando em conta o tipo de espaço de endereçamento, o deslocamento dentro do espaço de endereçamento, e o tamanho do limite integral, a extensão é válida. Caso não seja, é fornecida uma condição de exceção, PASSO 544. De outra forma, o processamento continua com a instrução de carga. (Numa concretização, o firmware realiza as verificações acima.)
[0089] Continuando com a FIG. 5B, é feita uma verificação pelo firmware se a carga é para um espaço de endereçamento de configuração da função adaptador, CONSULTA 550, isto é, com base na configuração da memória da função adaptador, se o espaço de endereçamento especificado fornecido na instrução está no espaço de configuração. Se estiver, o firmware realiza vários processamentos para fornecer a solicitação a um hub acoplado à função adaptador; o hub então encaminha a solicitação para a função, PASSO 552.
[0090] Por exemplo, o firmware obtém a ID do solicitante da entrada da tabela de função indicada pelo identificador de função fornecida nos operandos da instrução. Além disso, o firmware determina, com base nas informações da entrada da tabela de função (e.g., as informações de encaminhamento interno), o hub que receberá esta solicitação. Isso quer dizer que um ambiente pode possuir um ou mais hubs e o firmware determina o hub acoplado à função adaptador. Em seguida encaminha a solicitação ao hub. O hub gera um pacote de solicitação de leitura de configuração, que sai pelo barramento PCI para a função adaptador identificada pela RID na entrada da tabela de função. A solicitação de leitura de configuração inclui o RID e o deslocamento (i.e., endereço dos dados) que são utilizados para buscar os dados, como descrito abaixo.
[0091] Voltando à CONSULTA 550, se o espaço de endereçamento designado não for um espaço de configuração, então o firmware realiza mais uma vez vários processamentos para fornecer a solicitação ao hub, PASSO 554. O firmware usa o identificador para selecionar uma entrada da tabela de função e, a partir dessa entrada, obtém informações para localizar o hub adequado. Também calcula um endereço dos dados que será utilizado na operação de carga. Esse endereço é calculado adicionando o endereço inicial BAR (com o BAR associado com o identificador de espaço de endereçamento fornecido na instrução) obtido da entrada da tabela de função ao deslocamento fornecido na instrução. O endereço dos dados assim calculado é fornecidos ao hub. O hub então pega o endereço e o inclui num pacote de solicitação , como um pacote de solicitação de leitura DMA, que passa do barramento PCI para a função adaptador.
[0092] Em resposta ao recebimento da solicitação através do PASSO 552 ou do PASSO 554, a função adaptador busca os dados solicitados da localização especificada (i.e., o endereço dos dados) e devolve aqueles dados em resposta à solicitação, PASSO 556. A resposta é encaminhada da função adaptador para o hub E/S. Ao receber a resposta, o hub a encaminha ao processador inicial. O processador inicial pega então os dados do pacote de resposta e os carrega no local designado especificado na instrução (e.g., campo 1 404).
[0093] A operação de Carga PCI é então concluída com uma indicação de sucesso (e.g., estabelecendo um código de condição zero).
[0094] Além da instrução de carga que recupera dados de uma função adaptador e os armazena num local designado, outra instrução que pode ser executada é a instrução de armazenamento. A instrução de armazenamento armazena dados num local especificado na função adaptador. Uma concretização da instrução de Armazenamento PCI está descrita em referência à FIG. 6A. Conforme mostrado, uma instrução de Armazenamento PCI 600 inclui, por exemplo, um código de operação 602 indicando a instrução de Armazenamento PCI; um primeiro campo 604 especificando o local que inclui os dados a serem armazenados na função adaptador; e um segundo campo 606 especificando a localização na qual várias informações são incluídas relativas à função adaptador na qual os dados deverão ser armazenados. Os conteúdos das localizações designadas pelos Campos 1 e 2 são descritas mais abaixo.
[0095] Num exemplo, o Campo 1 designa um registro geral e, conforme retratado na FIG. 6B, os conteúdos 604 desse registro incluem uma faixa contígua de um ou mais bytes de dados a serem armazenados na localização da função adaptador especificada na instrução. Em outro exemplo, os dados nas posições de byte mais à direita do registro são armazenados.
[0096] Numa concretização, o Campo 2 designa um par de registros gerais que incluem várias informações. Conforme mostrado na FIG. 6B, os conteúdos dos registros incluem, por exemplo:
Identificador Ativado 610: Este campo é um identificador de função ativado da função adaptador no qual os dados devem ser armazenados;
Espaço de Endereçamento 612: Este campo identifica o espaço de endereçamento dentro da função adaptador para o qual os dados devem ser armazenados;
Deslocamento Dentro do Espaço de Endereçamento 614: Este campo especifica o deslocamento dentro do espaço de endereçamento para o qual os dados devem ser armazenados;
Campo Extensão 616: Este campo especifica a extensão da operação de armazenamento (e.g., o número de bytes a ser armazenado); e
Campo Status 618: Este campo fornece um código de status aplicável quando a instrução se completa com uma condição de código predefinida.
[0097] Uma concretização da lógica associada a uma instrução de Armazenamento PCI está descrita em referência às FIGs. 7A-7B. Num exemplo, a instrução é emitida por um sistema operacional, e executada pelo processador (e.g., firmware) executando o sistema operacional.
[0098] Para emitir a instrução, o sistema operacional fornece os seguintes operandos à instrução (e.g., em um ou mais registros designados pela instrução): o identificador da função PCI, o espaço de endereçamento PCI (PCIAS), o deslocamento no espaço do endereçamento PCI, a extensão dos dados a serem armazenados e um ponteiro para os dados a serem armazenados. Mediante a conclusão bem sucedida da instrução do Armazenamento PCI, os dados são armazenados no local designado pela instrução.
[0099] Com referência à FIG. 7A, inicialmente, é feita uma verificação se o recurso que permite a instrução de Armazenamento PCI está instalado, CONSULTA 700. Essa determinação é feita, por exemplo, pela verificação de um indicador armazenado, tal como um bloco de controle. Se o recurso não estiver instalado, é fornecida uma condição de exceção, PASSO 702. Por outro lado, é feita uma verificação se os operandos estão alinhados, CONSULTA 704. Por exemplo, se determinados operandos precisam ser em pares de registros par/ímpar, é feita uma verificação se esses requisitos estão atendidos. Se os operandos não estiverem alinhados, é então fornecida uma exceção, PASSO 706. Por outro lado, se o recurso estiver instalado e os operandos estiverem alinhados, é preciso determinar se o identificador fornecido nos operandos da instrução de Armazenamento PCI está ativado, CONSULTA 708. Num exemplo, esta determinação é feita pela verificação de um indicador de ativação no identificador. Se o identificador não estiver ativado, é fornecida uma condição de exceção, PASSO 710.
[00100] Se o identificador estiver ativado, então ele é usado para localizar uma entrada de tabela de função, PASSO 712. Pelo menos uma parte do identificador é utilizada como índice dentro da tabela de função para localizar a entrada da tabela de função correspondente à função adaptador na qual os dados devem ser armazenados.
[00101] Em seguida, se a configuração emitindo a instrução for um convidado, se determina se a função está configurada para uso de um convidado, CONSULTA 714. Se não estiver autorizado, então é fornecida uma condição de exceção, PASSO 716. Esta CONSULTA pode ser ignorada caso a configuração não seja um convidado ou podem ser verificadas outras autorizações, caso designadas.
[00102] É feita então uma determinação para verificar se a função está ativada, CONSULTA 718. Num exemplo, esta determinação é feita pela verificação do indicador de ativação na entrada da tabela de função. Se não estiver ativado, é fornecida então uma condição de exceção, PASSO 720.
[00103] Se a função estiver ativada, verifica-se então se o espaço de endereçamento é válido, CONSULTA 722. Por exemplo, o espaço de endereçamento especificado é um espaço de endereçamento designado da função adaptador e adequado para esta instrução. Caso o espaço de endereçamento seja inválido, então é fornecida uma condição de exceção, PASSO 724. De outra forma, verifica-se se a carga/armazenamento está bloqueado, CONSULTA 726. Num exemplo, essa determinação é feita pela verificação do indicador de status na entrada da tabela de função. Se carga/armazenamento estiver bloqueado, então é fornecida uma condição de exceção, PASSO 728.
[00104] Entretanto, caso carga/armazenamento não esteja bloqueado, verifica-se se a recuperação está ativa, CONSULTA 730. Num exemplo, essa determinação é feita pela verificação do indicador de recuperação iniciada na entrada da tabela de função. Se a recuperação estiver ativa, então é fornecida uma condição de exceção, PASSO 732. Do contrário, é feita uma verificação se a função está ocupada, CONSULTA 734. Essa determinação é feita pela verificação do indicador de ocupado na entrada da tabela de função. Se a função estiver ocupada, é fornecida uma condição de ocupado, PASSO 736. Com a condição de ocupado, a instrução pode ser repetida, em vez de ser derrubada.
[00105] Se a função não estiver ocupada, então é feita uma verificação adicional se o deslocamento especificado na instrução é válido, CONSULTA 738, isto é, se o deslocamento está em combinação com a extensão da operação dentro da base e extensão do espaço de endereçamento, conforme especificado na entrada da tabela de função. Caso não esteja, é fornecida uma condição de exceção, PASSO 740. Entretanto, se o deslocamento for válido, é feita uma verificação se a extensão é válida, CONSULTA 742, isto é, levando em conta o tipo de espaço de endereçamento, o deslocamento dentro do espaço de endereçamento, e o tamanho do limite integral a extensão é válida. Caso não seja, é fornecida uma condição de exceção, PASSO 744. De outra forma, o processamento continua com a instrução de armazenamento. (Numa concretização, o firmware realiza as verificações acima.)
[00106] Continuando com a FIG. 7B, é feita uma verificação pelo firmware se o armazenamento é para um espaço de endereçamento de configuração da função adaptador, CONSULTA 750, isto é, com base na configuração da memória da função adaptador, se o espaço de endereçamento especificado fornecido na instrução é o espaço de configuração. Se for, o firmware realiza vários processamentos para fornecer a solicitação a um hub acoplado à função adaptador; o hub então encaminha a solicitação para a função, PASSO 752.
[00107] Por exemplo, o firmware obtém a ID do solicitante da entrada da tabela de função indicada pelo identificador de função fornecida nos operandos da instrução. Além disso, o firmware determina, com base nas informações da entrada da tabela de função (e.g., as informações de encaminhamento interno), que hub receberá esta solicitação. Isso quer dizer que um ambiente pode possuir um ou mais hubs e o firmware determina o hub acoplado à função adaptador. Em seguida encaminha a solicitação ao hub. O hub gera um pacote de solicitação de escrita de configuração, que sai pelo barramento PCI para a função adaptador identificada pela RID na entrada da tabela de função. A solicitação de escrita de configuração inclui o RID e o deslocamento (i.e., endereço dos dados) que são utilizados para armazenar os dados, como descrito abaixo.
[00108] Voltando à CONSULTA 750, se o espaço de endereçamento designado não for um espaço de configuração, então o firmware realiza mais uma vez vários processamentos para fornecer a solicitação ao hub, PASSO 754. O firmware usa o identificador para selecionar uma entrada da tabela de função e, a partir dessa entrada, obtém informações para localizar o hub adequado. Também calcula um endereço dos dados que será utilizado na operação de armazenamento. Esse endereço é calculado adicionando o endereço inicial BAR obtido da entrada da tabela de função ao deslocamento fornecido na instrução. Os dados de endereço assim calculados são fornecidos ao hub. O hub então pega o endereço e o inclui num pacote de solicitação , tal como um pacote de solicitação de escrita DMA, que passa do barramento PCI para a função adaptador.
[00109] Em resposta ao recebimento da solicitação através do PASSO 752 ou do PASSO 754, a função adaptador armazena os dados solicitados na locação especificada (i.e., o endereço dos dados), PASSO 756. A operação de Armazenamento PCI é concluída com uma indicação de sucesso (e.g., estabelecendo um código de condição zero).
[00110] Além das instruções de carga e armazenamento, que tipicamente carregam ou armazenam o máximo de, e.g., 8 bytes, outra instrução que pode ser executada é a instrução de bloco de armazenamento. A instrução de bloco de armazenamento armazena blocos maiores de dados (e.g., 16, 32, 64, 128 ou 256 bytes) num local especificado na função adaptador; o tamanho dos blocos não são necessariamente limitados a potências de dois. Num exemplo, o local especificado é num espaço de memória da função adaptador (não em espaço E/S ou de configuração).
[00111] Uma concretização de uma instrução de Bloco de Armazenamento PCI está descrita em referência à FIG. 8A. Conforme mostrado, uma instrução de Bloco de Armazenamento PCI 800 inclui, por exemplo, um código de operação 802 indicando a instrução de Bloco de Armazenamento PCI; um primeiro campo 804 especificando a localização na qual várias informações relativas à função adaptador a qual os dados devem ser armazenados estão incluídas; um segundo campo 806 especificando a localização que inclui um deslocamento dentro do espaço de endereçamento especificado no qual os dados devem ser armazenados; e um terceiro campo 808 especificando a localização que inclui um endereço na memória do sistema dos dados a serem armazenados na função adaptador. Os conteúdos das localizações designadas nos Campos 1, 2 e 3 estão descritos mais abaixo.
[00112] Numa configuração, o Campo 1 designa um registro geral que inclui várias informações. Conforme mostrado na FIG. 8B, os conteúdos do registro incluem, por exemplo:
Identificador Ativado 810: Este campo é um identificador de função ativado da função adaptador no qual os dados devem ser armazenados;
Espaço de Endereçamento 812: Este campo identifica o espaço de endereçamento dentro da função adaptador no qual os dados devem ser armazenados;
Campo Extensão 814: Este campo especifica a extensão da operação de armazenamento (e.g., o número de bytes a ser armazenado); e
Campo Status 816: Este campo fornece um código de status aplicável quando a instrução se completa com uma condição de código predefinida.
[00113] Num exemplo, o Campo 2 designa um registro geral, e conforme retratado na FIG. 8C, os conteúdos do registro incluem um valor (e.g., 64-bit número inteiro sem sinal) que especifica o deslocamento dentro do espaço de endereçamento especificado no qual os dados devem ser armazenados.
[00114] Num exemplo, o Campo 3, conforme retratado na FIG. 8D, inclui um endereço lógico na memória do sistema do primeiro byte de dados 822 a ser armazenado na função adaptador.
[00115] Uma concretização da lógica associada a uma instrução de Bloco de Armazenamento PCI está descrita em referência às FIGs. 9A-9B. Num exemplo, a instrução é emitida por um sistema operacional, e executada pelo processador (e.g., firmware) executando o sistema operacional.
[00116] Para emitir a instrução, o sistema operacional fornece os seguintes operandos à instrução (e.g., em um ou mais registros designados pela instrução): o identificador da função PCI, o espaço de endereçamento PCI (PCIAS), o deslocamento no espaço do endereçamento PCI, a extensão dos dados a serem armazenados e um apontador para os dados a serem armazenados. O operando apontador pode incluir um registro e um deslocamento assinalado ou não. Mediante a conclusão bem sucedida da instrução do Bloco de Armazenamento PCI, os dados são armazenados no local do adaptador designado pela instrução.
[00117] Com referência à FIG. 9A, inicialmente, é feita uma verificação se o recurso que permite a instrução de Bloco de Armazenamento PCI está instalado, CONSULTA 900. Essa determinação é feita, por exemplo, pela verificação de um indicador armazenado, tal como um bloco de controle. Se o recurso não estiver instalado, é fornecida uma condição de exceção, PASSO 902. Por outro lado, se o recurso estiver instalado, é feita uma verificação se o identificador fornecido nos operandos da instrução do Bloco de Armazenamento PCI está ativado, CONSULTA 904. Num exemplo, esta determinação é feita pela verificação de um indicador de ativação no identificador. Se o identificador não estiver ativado, é fornecida uma condição de exceção, PASSO 906.
[00118] Se o identificador estiver ativado, então ele é usado para localizar uma entrada de tabela de função, PASSO 912. Pelo menos uma parte do identificador é utilizada como índice dentro da tabela de função para localizar a entrada da tabela de função correspondente à função adaptador na qual os dados devem ser armazenados.
[00119] Em seguida, se a configuração emitindo a instrução for um convidado, se determina se a função está configurada para uso de um convidado, CONSULTA 914. Se não estiver autorizado, então é fornecida uma condição de exceção, PASSO 916. Esta CONSULTA pode ser ignorada caso a configuração não seja um convidado ou podem ser verificadas outras autorizações, caso designadas.
[00120] É feita então uma determinação para verificar se a função está ativada, CONSULTA 918. Num exemplo, esta determinação é feita pela verificação do indicador de ativação na entrada da tabela de função. Se não estiver ativado, é fornecida então uma condição de exceção, PASSO 920.
[00121] Se a função estiver ativada, verifica-se então se o espaço de endereçamento é válido, CONSULTA 922. Por exemplo, o espaço de endereçamento especificado é um espaço de endereçamento designado da função adaptador e adequado para esta instrução (i.e., um espaço de memória). Caso o espaço de endereçamento seja inválido, então é fornecida uma condição de exceção, PASSO 924. De outra forma, verifica-se se a carga/armazenamento está bloqueado, CONSULTA 926. Em outro exemplo, essa determinação é feita pela verificação do indicador de status na entrada da tabela de função. Se carga/armazenamento estiver bloqueado, então é fornecida uma condição de exceção, PASSO 928.
[00122] Entretanto, caso carga/armazenamento não esteja bloqueado, verifica-se se a recuperação está ativa, CONSULTA 930. Num exemplo, essa determinação é feita pela verificação do indicador de recuperação iniciada na entrada da tabela de função. Se a recuperação estiver ativa, então é fornecida uma condição de exceção, PASSO 932. Do contrário, é feita uma verificação se a função está ocupada, CONSULTA 934. Essa determinação é feita pela verificação do indicador de ocupado na entrada da tabela de função. Se a função estiver ocupada, é fornecida uma condição de ocupado, PASSO 936. Com a condição de ocupado, a instrução pode ser repetida, em vez de ser derrubada.
[00123] Se a função não estiver ocupada, então é feita uma verificação adicional se o deslocamento especificado na instrução é válido, CONSULTA 938, isto é, se o deslocamento está em combinação com a extensão da operação dentro da base e extensão do espaço de endereçamento, conforme especificado na entrada da tabela de função. Caso não esteja, é fornecida uma condição de exceção, PASSO 940. Entretanto, se o deslocamento for válido, é feita uma verificação se a extensão é válida, CONSULTA 942, isto é, levando em conta o tipo de espaço de endereçamento, o deslocamento dentro do espaço de endereçamento, e o tamanho do limite integral, a extensão é válida. Caso não seja, é fornecida uma condição de exceção, PASSO 944. De outra forma, o processamento continua com a instrução de bloco de armazenamento. (Numa concretização, o firmware realiza as verificações acima.)
[00124] Continuando com a FIG. 9B, é feita uma verificação pelo firmware se o local que inclui os dados a serem armazenados está acessível, CONSULTA 950, Caso não esteja, é fornecida uma condição de exceção, PASSO 952 Se estiver, então o firmware realiza vários processamentos para fornecer a solicitação a um hub acoplado à função adaptador; o hub então encaminha a solicitação para a função, PASSO 954.
[00125] Por exemplo, o firmware usa o identificador para selecionar uma entrada da tabela de função e, a partir dessa entrada, obtém informações para localizar o hub adequado. Também calcula um endereço dos dados que será utilizado na operação de bloco de armazenamento. Esse endereço é calculado adicionando o endereço inicial BAR (com o BAR sendo identificado pelo identificador de espaço de endereçamento) obtido da entrada da tabela de função ao deslocamento fornecido na instrução. Os dados de endereço assim calculados são fornecidos ao hub. Além disso, os dados referenciados pelo endereço fornecido na instrução são trazidos da memória do sistema e fornecidos ao hub E/S. O hub então pega o endereço e o inclui num pacote de solicitação, tal como um pacote de solicitação de escrita DMA, que passa do barramento PCI para a função adaptador.
[00126] Em resposta ao recebimento da solicitação, a função adaptador armazena os dados solicitados na locação especificada (i.e., o endereço dos dados), PASSO 956. A operação de Bloco de Armazenamento PCI é concluída com uma indicação de sucesso (e.g., estabelecendo um código de condição zero).
[00127] Encontra-se descrita em detalhes acima a capacidade de comunicação com adaptadores de um ambiente computacional utilizando instruções de controle especificamente projetadas para essa comunicação. A comunicação é realizada sem utilizar memória mapeada E/S e não é limitada ao controle de registros na função adaptador. Essas instruções garantem que a configuração que emite a instrução está autorizada a acessar a função adaptador. Além disso, para a instrução do Bloco de Armazenamento, garantem que o local de armazenamento principal especificado está dentro da memória da configuração.
[00128] Na concretização aqui descrita, os adaptadores são adaptadores PCI. PCI, conforme utilizado neste documento, se refere a qualquer adaptador implementado de acordo com uma especificação baseada em PCI conforme definição do PCI-SIG Peripheral Component Interconnect Special Interest Group (Grupo PCI-SIG, grupo de interesse especial que supervisiona o padrão PCI), incluindo, mas sem restrição a, PCI ou PCIe. Num exemplo particular, a Interconexão de Componentes Periféricos Expressa (PCIe) é um padrão de nível de componente de interconexão que define um protocolo de comunicação bidirecional para transações entre adaptadores de E/S e sistemas hospedeiros. As comunicações PCIe são encapsuladas em pacotes de acordo com o padrão PCIe para transmissão num barramento PCIe. As transações originadas de adaptadores de E/S e terminadas em sistemas hospedeiros são chamadas de transações upbound (de subida). Transações originadas de sistemas hospedeiros e terminadas em adaptadores de E/S são chamadas de transações downbound (de descida). A topologia PCIe é baseada em links unidirecionais ponto a ponto dispostos em pares (e.g., um link upbound, um link downbound) para formar o barramento PCIe. O padrão PCI é mantido e publicado pelo PCI-SIG, conforme descrito acima na seção Antecedentes.
[00129] Como poderá ser reconhecido pelos especialistas, aspectos da presente invenção podem ser concretizados como um sistema, um método ou um produto programa de computador. Dessa forma, aspectos da presente invenção podem ter a forma de uma concretização inteiramente hardware, uma concretização inteiramente software (incluindo firmware, software residente, microcódigo, etc.) ou uma concretização combinando aspectos de software e de hardware que podem ser chamados neste documento de "circuito”, "módulo” ou "sistema”. Além disso, aspectos da presente invenção podem ter forma de um produto programa de computador incorporado em uma ou mais mídias de leitura em computador, com código de programa de leitura em computador incorporado nele.
[00130] Qualquer combinação de uma ou mais mídias de leitura em computador pode ser utilizada. A mídia de leitura em computador pode ser uma mídia de armazenamento. A mídia de armazenamento de leitura em computador pode ser, por exemplo, mas sem limitação a, um sistema, aparelho ou dispositivo eletrônico, magnético, ótico, eletromagnético, infravermelho ou semicondutor, ou qualquer combinação adequada dos citados. Exemplos mais específicos (uma lista não exaustiva) de mídias de armazenamento de leitura em computador incluem: conexão elétrica possuindo um ou mais cabos, disquete de computador portátil, disco rígido, memória de acesso aleatório (RAM), memória somente de leitura (ROM), memória somente de leitura programável e apagável (EPROM ou memória Flash), fibra ótica, disco compacto portátil de memória somente de leitura (CD-ROM), dispositivo de armazenamento ótico, ou qualquer combinação adequada dos antecedentes. No contexto deste documento, a mídia de armazenamento de leitura em computador pode ser qualquer mídia tangível que contenha ou armazene um programa para uso por ou em conexão a um sistema, aparelho ou dispositivo de execução de instrução.
[00131] Com referência agora à FIG. 10, num exemplo, um produto programa de computador 1000 inclui uma ou mais mídias de armazenamento de leitura por computador 1002 para armazenar meios ou lógica de código de programa de leitura por computador 1004 para fornecer e facilitar um ou mais aspectos da presente invenção.
[00132] O código de programa incorporado numa mídia de leitura em computador pode ser transmitido usando um meio apropriado, incluindo, sem limitação a, sem fio, com fio, cabo de fibra ótica, RF, etc., ou qualquer combinação deles.
[00133] 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, inclusive linguagem de programação orientada a objeto, tais como Java, Smalltalk, C++ ou semelhantes, e linguagens de programação convencionais procedurais, tais como a linguagem de programação "C”, assembler ou linguagens de programação similares. O código de programa pode executar inteiramente no computador do usuário, parcialmente no computador do usuário, como um pacote de software autônomo, parcialmente no computador do usuário e parcialmente num computador remoto ou inteiramente num computador remoto ou servidor. No último cenário, o computador remoto pode estar conectado ao computador do usuário através de qualquer tipo de rede, inclusive uma rede local (LAN) ou uma rede ampla (WAN), ou a conexão pode ser feita com um computador externo (por exemplo, pela Internet, utilizando um Provedor de Serviços de Internet).
[00134] São descritos aqui aspectos da presente invenção com referência a ilustrações em fluxogramas e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos programa de computador de acordo com concretizações da invenção. Fica entendido que cada bloco da ilustração dos fluxogramas e/ou dos diagramas de blocos, e combinações de blocos nas ilustrações dos fluxogramas e/ou diagramas de blocos podem ser implementados por instruções de programa de computador. As instruções do programa de computador podem ser fornecidas para um processador de um computador de propósito geral, computador de propósito especial, ou outro dispositivo programável de processamento de dados para produzir uma máquina, de modo que as instruções, executadas via processador do computador ou outro dispositivo programável de processamento de dados, crie meios para implementar as funções/ações especificadas no fluxograma e/ou diagrama de blocos ou blocos.
[00135] Essas instruções de programa de computador podem também ser armazenadas numa mídia de leitura em computador que pode direcionar o computador, outros sistemas programáveis de processamento de dados , ou outros dispositivos para funcionar de um modo particular, de tal forma que as instruções armazenadas na mídia de leitura em computador produzam um artigo de manufatura incluindo instruções que implementem a função/ação especificada no fluxograma e/ou diagrama de blocos ou blocos.
[00136] As instruções de programa de computador podem também ser carregadas para um computador, outros sistemas programáveis de processamento de dados, ou outros dispositivos para executar uma série de passos operacionais a serem realizados no computador, em outros sistemas programáveis de processamento de dados ou outros dispositivos para produzir um processo implementado no computador tal que as instruções executadas no computador ou em outros sistemas programáveis de processamento de dados forneçam processos para implementação das funções/ações especificadas no fluxograma e/ou diagrama de bloco ou blocos.
[00137] Os fluxogramas e os diagramas de bloco nas figuras ilustram a arquitetura, funcionalidade e operação das possíveis implementações de sistemas, métodos e produtos programa de computador de acordo com várias concretizações da presente invenção. A este respeito, cada bloco no fluxograma ou diagramas de blocos podem representar um módulo, segmento, ou parte do código, que compreende uma ou mais instruções executáveis para implementação da função(ões) lógica(s) especificada(s). Deve-se notar também que, em algumas concretizações alternativas, as funções observadas no bloco podem ocorrer fora da ordem indicada nas figuras. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados mais concorrentemente, ou os blocos podem, às vezes, ser executados na ordem reversa, dependendo da funcionalidade envolvida. Deve-se também notar que cada ilustração do bloco dos diagramas de blocos e/ou dos fluxogramas, bem como combinações de blocos na ilustração dos diagramas de bloco e/ou fluxogramas, podem ser implementados por sistemas de propósito especial baseados em hardware que realizam as funções ou ações especificadas, ou combinações de hardware de propósito especial e instruções de computador.
[00138] Além do exposto acima, um ou mais aspectos da presente invenção podem ser providenciados, oferecidos, distribuídos, gerenciados, fornecidos, etc., por um provedor de serviço que ofereça gerenciamento de ambientes do cliente. Por exemplo, o provedor de serviço pode criar, manter, suportar, etc., código de computador e/ou uma infraestrutura computacional que execute um ou mais aspectos da presente invenção para um ou mais clientes. Em contrapartida, o provedor de serviço poderá ser pago pelo cliente mediante assinatura e/ou uma taxa contratada, por exemplo. Além disso, ou alternativamente, o provedor de serviço poderá ser pago mediante a venda de conteúdo de propaganda para terceiros.
[00139] Num aspecto da presente invenção, pode ser disponibilizado um aplicativo para realizar um ou mais aspectos da presente invenção. Como exemplo, a disponibilização de um aplicativo compreende o fornecimento de infraestrutura computacional operável para realizar um ou mais aspectos da presente invenção.
[00140] Como um aspecto adicional da presente invenção, pode ser disponibilizada uma estrutura computacional compreendendo a integração de um código de leitura em computador num sistema de computador, na qual o código em combinação com o sistema de computador seja capaz de executar um ou mais aspectos da presente invenção.
[00141] Ainda como um outro aspecto da presente invenção, pode ser fornecido um processo para integração da infraestrutura computacional compreendendo a integração de código de leitura em computador com um sistema de computador. O sistema de computador engloba uma mídia de leitura em computador, na qual a mídia de computador compreende um ou mais aspectos da presente invenção. O código em combinação com o sistema de computador é capaz de realizar um ou mais aspectos da presente invenção.
[00142] Embora tenham sido descritos acima várias concretizações, trata-se de exemplos apenas. Ambientes computacionais de outras arquiteturas podem incorporar e usar um ou mais aspectos da presente invenção. Como exemplos, servidores diferentes do System z®, tais como os servidores Power Systems ou outros servidores fornecidos pela International Business Machines Corporation, ou servidores de outras empresas, podem incluir, usar e/ou se beneficiar de um ou mais aspectos da presente invenção. Além disso, embora nos exemplos deste documento, os adaptadores e o hub PCI sejam considerados uma parte do servidor, em outras concretizações eles não precisam necessariamente ser considerados uma parte do servidor, mas sim considerados como acoplados à memória do sistema e/ou a outros componentes de um ambiente computacional. O ambiente computacional não precisa ser um servidor. Embora os adaptadores sejam de base PCI, um ou mais aspectos da presente invenção podem ser utilizados com outros adaptadores ou outros componentes E/S. Adaptador e adaptador PCI são meramente exemplos. Ademais, A FTE ou os parâmetros da FTE podem ser alocados e mantidos em local diferente da memória protegida, incluindo, por exemplo, no hardware (e.g., função PCI do hardware). A DTE, a FTE e/ou o identificador podem incluir mais ou menos informação ou informações diferentes, bem como quaisquer das instruções ou campos de instrução. São possíveis muitas outras variações.
[00143] Além disso, outros tipos de ambientes computacionais podem se beneficiar de um ou mais aspectos da presente invenção. Como exemplo, um sistema de processamento de dados adequado para armazenar e/ou executar código de programa pode ser usado que inclua pelo menos dois processadores acoplados direta ou indiretamente aos elementos de memória através de um barramento de sistema. Os elementos de memória incluem, por exemplo, a memória local empregada durante a real execução do código do programa, armazenamento em massa, e memória cache que fornece armazenamento temporário de pelo menos alguns códigos de programa a fim de reduzir o número de vezes que o código tem que ser recuperado da armazenagem em massa durante a execução.
[00144] Dispositivos de Entrada/Saída ou E/S (inclusive, mas sem limitação a, teclados, visores, dispositivos indicadores, dispositivos de armazenamento de acesso direto-DASD, fitas, CDs, DVDs, pen drives e outras mídias de memória, etc.) podem ser acoplados ao sistema quer diretamente ou com a intervenção de controladores de E/S. Adaptadores de rede podem também ser acoplados ao sistema para permitir que o processamento de dados se acople a outros sistemas de processamento de dados ou a impressoras remotas ou a dispositivos de armazenamento mediante a intervenção de redes públicas ou privadas. Modems, modems a cabo e cartões Ethernet são apenas alguns dos tipos disponíveis de adaptadores de rede.
[00145] Com referência à FIG. 11, são retratados componentes representativos de um sistema de Computador Hospedeiro 5000 para implementar um ou mais aspectos da presente invenção. O representante do computador hospedeiro 5000 compreende uma ou mais CPUs 5001 em comunicação com a memória do computador (i.e., armazenamento central) 5002, bem como interfaces de E/S para armazenar dispositivos de mídia 5011 e redes 5010 para comunicação com outros computadores ou redes de área de armazenamento (SAN) e similares. A CPU 5001 é compatível com uma arquitetura que possui configuração de instrução arquitetada e funcionalidade arquitetada. A CPU 5001 pode possuir tradução dinâmica de endereço (DAT) 5003 para transformação de endereços de programa (endereços virtuais) em endereços reais de memória. Uma DAT tipicamente inclui um buffer de tradução lookaside (TLB) 5007 para salvar traduções de modo que os últimos acessos aos blocos de memória do computador 5002 não precisem de atraso da tradução do endereço. Tipicamente, uma cache 5009 é empregada entre a memória do computador 5002 e o processador 5001. A cache 5009 pode ter uma grande cache hierárquica disponível para mais de uma CPU e caches menores, mais rápidas (níveis mais baixos) entre a cache maior e cada CPU. Em algumas implementações, as caches de nível mais baixo são divididas para fornecer caches de nível baixo para busca de instrução e acessos de dados. Numa concretização, uma instrução e trazida da memória 5002 por uma unidade de busca de instrução 5004 via uma cache 5009. A instrução é decodificada numa unidade de decodificação de instrução 5006 e enviada (com outras instruções em algumas concretizações) para a unidade ou as unidades de execução de instrução 5008. Tipicamente, são utilizadas várias unidades de execução 5008, por exemplo, unidade de execução aritmética, unidade de execução de ponto flutuante e unidade de execução de instrução de ramificação. A instrução é executada pela unidade de execução, acessando operandos dos registros da instrução especificada ou da memória, conforme a necessidade. Se um operando precisa ser acessado (carregado ou armazenado) da memória 5002, uma unidade de carga/armazenamento 5005 tipicamente indica o acesso sob controle da instrução que está sendo executada. As instruções podem ser executadas em circuitos de hardware ou em microcódigo interno (firmware) ou por uma combinação de ambos.
[00146] Conforme observado, um sistema de computador inclui informações em armazenamento local (ou primário), bem como endereçamento, proteção, e gravação de referência e alteração. Alguns aspectos de endereçamento incluem o formato de endereços, o conceito de espaços de endereçamento, os vários tipos de endereço, e o modo no qual um tipo de endereço é traduzido para outro tipo de endereço. Alguns dos armazenamentos primários incluem locais de armazenamento atribuídos permanentemente. O armazenamento primário fornece ao sistema armazenamento de dados diretamente endereçáveis de acesso rápido. Tanto os dados como os programas devem ser carregados em armazenamento primário (a partir de dispositivos de entrada) antes que possam ser processados.
[00147] O armazenamento primário pode incluir um ou mais armazenamentos menores, de buffer de acesso mais rápido, às vezes chamados caches. Uma cache é, de forma geral, associada fisicamente a uma CPU ou a um processador E/S. Os efeitos, exceto no desempenho, da construção física e utilização de mídia de armazenamento diferente geralmente não são observáveis pelo programa.
[00148] Caches separadas podem ser mantidas para instruções e para operandos de dados. Informações dentro de uma cache são mantidas em bytes contíguos num limite integral chamado bloco de cache ou linha de cache (ou linha, para encurtar). Um modelo pode fornecer uma instrução de ATRIBUTO DE EXTRAÇÃO DE CACHE que devolve o tamanho da linha de cache em bytes. Um modelo pode também fornecer DADOS DE PRÉ-BUSCA e instruções de DADOS DE PRÉ-BUSCA RELATIVAMENTE LONGOS que efetuam a pré-busca de armazenamento nos dados ou cache de instrução ou a liberação de dados da cache.
[00149] O armazenamento é visualizado como uma longa cadeia horizontal de bits. Para a maioria das operações, os acessos ao armazenamento se processa numa sequência da esquerda para a direita. A cadeia de bits é subdividida em unidades de oito bits. A unidade de oito bits é chamada byte, que é bloco básico de construção de todos os formatos de informação. Cada locação de byte em armazenamento é identificada por um único número inteiro não negativo, que é o endereço da localização daquele byte ou, simplesmente, o endereço do byte. Localizações de bytes adjacentes possuem endereços consecutivos, começando com 0 à esquerda e continuando em sequência da esquerda para a direita. Endereços são números inteiros binários sem sinal e são 24, 31 ou 64 bits.
[00150] A informação é transmitida entre o armazenamento e a CPU ou um subsistema de canal de um byte, ou um grupo de bytes, de cada vez. Salvo especificação em contrário, por exemplo, no z/Architecture®, um grupo de bytes em armazenamento está endereçado pelo byte mais à esquerda do grupo. O número de bytes no grupo é especificado implícita ou explicitamente pela operação a ser executada. Quando utilizada numa operação de CPU, um grupo de bytes é chamado de campo. Dentro de cada grupo de bytes, por exemplo no z/Architecture®, os bits são numerados numa sequência da esquerda para a direita. No z/Architecture®, os bits mais à esquerda são às vezes chamados de bits de "ordem superior” e os bits mais à direita são os bits de "ordem inferior”. Os números de bits, entretanto, não são endereços de armazenamento. Somente os bytes podem ser endereçados. Para operar com bits individuais de um byte em armazenamento, o byte é acessado por inteiro. Os bits num byte são numerados de 0 a 7, da esquerda para a direita (e.g., no z/Architecture®). Os bits num endereço podem ser numerados 8-31 ou 40-63 para 24 endereços bit, ou 1-31 ou 33-63 para 31 endereços bit; eles são numerados 0-63 para 64 endereços bit. Dentro de qualquer outro formato de extensão fixa de múltiplos bytes, os bits que compõem o formato são numerados consecutivamente iniciando em 0. Para fins de detecção de erros, e de preferência para correção, podem ser transmitidos um ou mais bits de verificação 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. As capacidades de armazenamento são expressas em número de bytes. Quando a extensão de um campo de operando de armazenamento é sugerida pelo código de operação de uma instrução, o campo é dito como possuindo extensão fixa, que pode ser de um, dois, quatro, oito ou dezesseis bytes. Campos maiores podem ser sugeridos por algumas instruções. Quando a extensão de um campo de operando de armazenamento não é sugerida, mas determinada explicitamente, diz-se que o campo possui extensão variável. Operandos de extensão variável podem variar em extensão por incrementos de um byte (ou com algumas instruções, em múltiplos de dois bytes ou outros múltiplos). Quando a informação é colocada em armazenamento, apenas os conteúdos dessas locações de bytes são substituídos e incluídos no campo designado, ainda que a largura do caminho físico para armazenamento possa ser maior do que a extensão do campo sendo armazenado.
[00151] Certas unidades de informação devem estar em armazenamento em faixa integral. Chama-se integral a faixa para uma unidade de informação quando o seu endereço de armazenamento é um múltiplo da extensão da unidade em bytes. Nomes especiais foram dados aos campos de 2, 4, 8 e 16 bytes em faixa integral. Meia-palavra é um grupo de dois bytes consecutivos numa faixa de dois bytes e é o bloco de construção de instruções básico. Palavra é um grupo de quatro bytes consecutivos numa faixa de quatro bytes. A palavra dupla é um grupo de oito bytes consecutivos numa faixa de oito bytes. A palavra quádrupla é um grupo de 16 bytes consecutivos numa faixa de 16 bytes. Quando os 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 à direita, respectivamente. As instruções devem estar em limites integrais de 2 bytes. Os operandos de armazenamento da maioria das instruções não possuem requisitos de alinhamento de limite.
[00152] Em dispositivos que implementam caches separadas para instruções e operandos de dados, pode ser experimentada uma demora significativa se o programa armazena numa linha de cache da qual as instruções são buscadas subsequentemente, independentemente se o armazenamento altera as instruções buscadas subsequentemente.
[00153] Numa concretização, a invenção pode ser realizada por software (às vezes referido como código interno licenciado, firmware, microcódigo, milicódigo, picocódigo e similares, qualquer deles é consistente com a presente invenção). Com referência à FIG. 8, o código de programa de software que concretiza a presente invenção é tipicamente acessado pelo processador 5001 do sistema hospedeiro 5000 a partir de dispositivos de mídia de armazenamento de longa duração 5011, tais como unidade de CD-ROM, disco de fita ou disco rígido. O código de programa de software pode ser concretizado em qualquer das variedades de mídias conhecidas para sistemas de processamento de dados, tais como disquete, disco rígido ou CD-ROM. O código pode ser distribuído nessa mídia, ou pode ser distribuído a usuários a partir da memória do computador 5002 ou armazenamento de um sistema de computador numa rede 5010 para outros sistemas de computador para utilização por usuários desses outros sistemas.
[00154] 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 aplicativos. O código de programa é normalmente paginado a partir de um dispositivo de mídia de armazenamento 5011 para armazenamento de computador de velocidade relativamente superior 5002 em que esteja disponível para processamento pelo processador 5001. As técnicas e métodos para concretizar o código de programa de software na memória, na mídia física e/ou no código do software distribuidor via redes são bem conhecidos e não serão mais discutidos neste documento. O código de programa, quando criado e armazenado em mídia tangível (incluindo, mas sem se limitar a, módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, Fita Magnética e similares), é sempre referenciado como um "produto programa de computador”. A mídia do produto programa de computador é tipicamente legível por um circuito processador, de preferência num sistema de computador para execução pelo circuito processador.
[00155] A FIG. 12 ilustra a representação de uma estação de trabalho ou sistema de hardware servidor onde a presente invenção pode ser executada. O sistema 5020 da FIG. 12 compreende um sistema representativo de computador base 5021, como um computador pessoal, uma estação de trabalho ou um servidor, incluindo os dispositivos periféricos opcionais. O sistema de computador base 5021 inclui um ou mais processadores 5026 e um barramento empregado para conectar e ativar a comunicação entre o(s) processador(es) 5026 e os outros componentes do sistema 5021 de acordo com técnicas conhecidas. O barramento conecta o processador 5026 à memória 5025 e ao armazenamento de longo prazo 5027 que pode incluir um disco rígido (inclusive qualquer mídia magnética, CD, DVD e memória flash, por exemplo) ou um drive de fita. O sistema 5021 pode também incluir um adaptador de interface de usuário, que conecta o microprocessador 5026 pelo barramento para um ou mais dispositivos de interface, tais como teclado 5024, mouse 5023, impressora/scanner 5030 e/ou outros dispositivos de interface, que pode ser qualquer dispositivo de interface de usuário, como tela sensível ao toque, plataforma de entrada digitalizada, etc. O barramento também conecta um dispositivo de vídeo 5022, como uma tela LCD ou um monitor, ao microprocessador através de um adaptador de vídeo.
[00156] 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ção, "Token Ring”, Ethernet ou modems. Alternativamente, o sistema 5021 pode se comunicar utilizando uma interface sem fio, como um cartão CDPD (pacote de dados digital e celular). O sistema 5021 pode estar associado com outros computadores numa rede local (LAN) ou numa rede ampla (WAN), ou o sistema 5021 pode ser um cliente num arranjo cliente/servidor com outro computador, etc. Todas essas configurações, bem como os hardware e software de comunicação apropriados, são conhecidas dos especialistas.
[00157] A FIG. 13 ilustra uma rede de processamento de dados 5040 na qual a presente invenção pode ser utilizada. A rede de processamento de dados 5040 pode incluir uma pluralidade de redes individuais, tais como rede sem fio e rede com fio, cada uma podendo incluir uma pluralidade de estações de trabalho individuais 5041, 5042, 5043, 5044. Além disso, como os especialistas poderão notar, uma ou mais LANs podem ser incluídas, e cada LAN pode compreender uma pluralidade de estações de trabalho inteligentes acopladas a um processador hospedeiro.
[00158] Ainda com referência à FIG. 13, as redes podem também incluir computadores mainframe ou servidores, como computador intermediário (servidor cliente 5046) ou servidor de aplicativo (servidor remoto 5048 que pode acessar um repositório de dados e pode também ser acessado diretamente de uma estação de trabalho 5045). Um computador intermediário 5046 serve como ponto de entrada em cada rede individual. A máquina intermediária (gateway) é necessária quando se conecta um protocolo de rede a outro. A máquina intermediária 5046 pode ser acoplada de forma preferencial a outra rede (por exemplo, Internet 5047) por meio de um link de comunicação. A máquina intermediária 5046 pode também ser acoplada diretamente a uma ou mais estações de trabalho 5041, 5042, 5043, 5044 utilizando um link de comunicação. O computador intermediário pode ser implementado utilizando um servidor de Sistema IBM eServer™ do Sistema z® fornecido pela International Business Machines Corporation.
[00159] Com referência ao mesmo tempo à FIG. 12 e à FIG. 13, o código de programação do software que pode concretizar a presente invenção pode ser acessado pelo processador 5026 do sistema 5020 a partir de uma mídia de armazenamento de longa duração 5027, como uma unidade de CD-ROM ou um disco rígido. O código de programa de software pode ser concretizado em qualquer das variedades de mídias conhecidas para sistemas de processamento de dados, tais como disquete, disco rígido ou CD-ROM. O código pode ser distribuído nessa mídia, ou pode ser distribuído a usuários 5050, 5051 a partir da memória ou armazenamento de um sistema de computador numa rede para outros sistemas de computador para utilização por usuários desses outros sistemas.
[00160] Alternativamente, o código de programação pode ser incorporado à memória 5025, e acessado pelo processador 5026 utilizando o barramento do processador. Esse código de programação inclui um sistema operacional que controla a função e interação de vários componentes do computador e ou mais programas aplicativos 5032. O código de programa é normalmente paginado da mídia de armazenamento 5027 para a memória de alta velocidade 5025 onde fica disponível para processamento pelo processador 5026. As técnicas e métodos para incorporação do código de programação de software na memória, em mídia física, e/ou código de distribuição de software via redes são bem conhecidos e não serão mais discutidos neste documento. O código de programa, quando criado e armazenado em mídia tangível (incluindo, mas sem se limitar a, módulos de memória eletrônica (RAM), memória flash, Discos Compactos (CDs), DVDs, Fita Magnética e similares), é sempre referenciado como um "produto programa de computador”. A mídia do produto programa de computador é tipicamente legível por um circuito processador, de preferência num sistema de computador para execução pelo circuito processador.
[00161] A cache que está mais prontamente disponível para o processador (normalmente mais rápida e menor do que outras caches no processador) é a cache mais inferior (L1 ou nível 1) e o armazenamento primário (memória principal) é a cache de nível mais alto (L3 se houver 3 níveis). A cache de nível mais inferior é com frequência dividida em cache de instrução (I-Cache) armazenando as instruções da máquina a serem executadas e em cache de dados (D-Cache) armazenando operandos de dados.
[00162] Com referência à FIG. 14, uma exemplificação de concretização do processador está retratada para o processador 5026. Tipicamente um ou mais níveis de cache 5053 são empregados para fazer buffer nos blocos de memória a fim de aperfeiçoar o desempenho do processador. A cache 5053 são linhas de cache de armazenamento de buffer de alta velocidade de dados de memória possíveis de serem utilizados. As linhas de cache típicas são de 64, 128 ou 256 bytes de dados de memória. Caches separadas são empregadas com frequência mais para armazenar instruções do que para armazenar dados. A coerência da cache (sincronização de cópias de linhas em memória e as caches) é fornecida frequentemente por vários algoritmos snooping bem conhecidos nesta especialidade. Normalmente se refere à cache como o armazenamento da memória principal 5025 de um sistema processador. Num sistema processador que possui 4 níveis de cache 5053, o armazenamento primário 5025 é algumas vezes chamado de cache nível 5 (L5), uma vez que é geralmente mais rápido e armazena somente uma parte do armazenamento não volátil (DASD - Dispositivo de Armazenamento de Acesso Direto, fita, etc.) que está disponível no sistema de computador. O armazenamento primário 5025 armazena páginas de dados paginadas dentro e fora do armazenamento primário 5025 pelo sistema operacional.
[00163] Um contador do programa (contador de instruções) 5061 mantém a trilha do endereço da instrução atual a ser executada. Um contador de programa num processador z/Architecture® é de 64 bits e pode ser cortado para 31 ou 24 bits para suportar limites de endereçamento anteriores. O contador de programa tipicamente é incorporado à PSW (palavra de estado do programa) de um computador de forma que ele continue durante a alternância do contexto. Assim, um programa em execução, possuindo um valor de contador de programa, pode ser interrompido, por exemplo, pelo sistema operacional (alternância do contexto de ambiente de programa para ambiente do sistema operacional). A PSW do programa mantém o valor do contador do programa enquanto o programa não está ativo, e o contador de programa (na PSW) do sistema operacional é utilizado enquanto o programa operacional está executando. De forma típica, o contador de programa é incrementado por um valor igual ao número de bytes da instrução atual. As instruções RISC (simplificadas) são tipicamente de extensão fixa enquanto as instruções CISC (complexas) são tipicamente de extensão variável. As instruções do z/Architecture®, da IBM, são instruções CISC com uma extensão de 2, 4 ou 6 bytes. O contador de programa 5061 é modificado ou por uma operação de alternância de contexto ou por uma operação de desvios tomados (branch taken) de uma instrução de desvio (branch instruction), por exemplo. Num contexto de operação de alternância, o valor atual do contador de programa é salvo na palavra de estado de programa junto com outras informações de estado sobre o programa sendo executado (tais 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. É realizada uma operação de desvios tomados a fim de permitir ao programa tomar decisões ou fazer loops dentro do programa mediante a carga do resultado da instrução de desvio no contador do programa 5061.
[00164] Tipicamente, uma unidade de busca de instrução 5055 é empregada para buscar instruções em nome do processador 5026. A unidade de busca traz ou "as próximas instruções da sequência”, instruções de destino das instruções de desvios tomados, ou as primeiras instruções de um programa seguinte à alternância de contexto. As unidades de busca de instrução modernas com utilizam com frequência técnicas de pré-busca para especular instruções de pré-busca com base na similaridade que as instruções pré-buscadas poderiam ser utilizadas. Por exemplo, uma unidade de busca pode buscar 16 bytes de instrução que inclui a instrução sequencial seguinte e bytes adicionais de instruções sequenciais mais adiante.
[00165] As instruções buscadas são então executadas pelo processador 5026. Numa concretização, as instruções buscadas são passadas para uma unidade de despacho 5056 da unidade de busca. A unidade de despacho decodifica a(s) instrução(ões) e encaminha as informações sobre ela(s) para as unidades apropriadas 5057, 5058, 5060. Uma unidade de execução 5057 receberá tipicamente informações sobre instruções aritméticas decodificadas da unidade de busca de instrução 5055 e realizará operações aritméticas em operandos de acordo com o código de operação da instrução. Os operandos são fornecidos para a unidade de execução 5057 de preferência ou da memória 5025, dos registros arquitetados 5059 ou de um campo imediato da instrução sendo executada. Os resultados da execução, quando armazenados, são armazenados ou na memória 5025, nos registros 5059 ou em outros hardware de máquina (tais como registro de controle, registros PSW e similares).
[00166] Um processador 5026 possui tipicamente uma ou mais unidades 5057, 5058, 5060 para executar a função da instrução. Com referência à FIG. 15A, a unidade de execução 5057 pode se comunicar com registros gerais arquitetados 5059, unidade de decodificação/despacho 5056, unidade de armazenamento de carga 5060, e outras 5065 unidades processadoras por meio de interface lógica 5071. A unidade de execução 5057 pode empregar vários circuitos de registro 5067, 5068, 5069 para guardar informações sobre as quais a unidade lógica e aritmética (ALU) 5066 vai trabalhar. A ALU realiza operações aritméticas, tais como soma, subtração, multiplicação e divisão, bem como funções lógicas, tais como e, ou, ou-exclusivo (XOR), rotação e mobilidade. A ALU suporta, preferencialmente, operações especializadas que são dependentes de desenho. Outros circuitos podem fornecer outros recursos 5072, inclusive códigos de condição e recuperação do suporte lógico, por exemplo.
[00167] Tipicamente, o resultado de uma operação ALU é guardado num circuito de registro de saída 5070 que pode encaminhar o resultado para uma variedade de outras funções de processamento. Há vários arranjos de unidades de processador, a presente descrição pretende apenas fornecer uma representação compreensível de uma concretização.
[00168] Uma instrução ADD (soma), por exemplo, seria executada numa unidade de execução 5057 que possuísse funcionalidade aritmética e lógica, enquanto que uma instrução de ponto flutuante, por exemplo, seria executada numa unidade de ponto flutuante com capacidade especializada em ponto flutuante. De preferência, a unidade de execução opera com operandos identificados por uma instrução pela realização de uma função de código de operação definida nos operandos. Por exemplo, uma instrução ADD pode ser executada pela unidade de execução 5057 em operandos encontrados em dois registros 5059 identificados pelos campos de registro da instrução.
[00169] A unidade de execução 5057 realiza a adição aritmética de dois operandos e armazena o resultado num terceiro operando, em que o terceiro operando pode ser um terceiro registro ou um dos dois registros fonte. A unidade de execução, de preferência, utiliza uma Unidade Lógica e Aritmética (ALU) 5066 que é capaz de realizar uma variedade de funções lógicas, como Mobilidade, Rotação, E, OU e XOR, bem como uma variedade de funções algébricas, inclusive adição, subtração, multiplicação, divisão. Algumas ALUs 5066 são designadas para operações escalares e algumas para ponto flutuante. Os dados podem ser Big Endian (em que o byte menos significativo está no endereço de byte mais alto) ou Little Endian (em que o byte menos significativo está no endereço de byte mais baixo) dependendo da arquitetura. O z/Architecture® da IBM é Big Endian. Os campos sinalizados podem ser na forma sinal-magnitude, complemento de 1 ou complemento de 2, dependendo da arquitetura. Um número complemento de 2 é vantajoso na medida em que a ALU não precisa desenhar uma capacidade de subtração, uma vez que um valor negativo ou positivo no complemento de 2 requer somente a adição dentro da ALU. Os números são comumente descritos em shorthand, onde um campo de 12 bits define um endereço de um bloco de 4.096 byte e é descrito em geral como bloco 4 Kbyte (Kilobyte), por exemplo.
[00170] Com referência à FIG. 15B, a informação de instrução de desvio para executar uma instrução de desvio é tipicamente enviada para uma unidade de desvio 5058 que, com frequência, emprega um algoritmo de previsão de desvio, como uma tabela de história de desvio (BHT) 5082 para prever o resultado do desvio antes da conclusão de outras operações condicionais. Será buscado o destino da instrução de desvio atual e executado especulativamente antes da conclusão das operações condicionais. Quando as operações condicionais forem completadas as instruções de desvio executadas especulativamente também serão completadas ou descartadas com base nas condições da operação condicional e do resultado especulado. Uma instrução de desvio típica poderá testar códigos e desvio de condição para um endereço de destino se os códigos de condição combinarem com o requisito de desvio da instrução de desvio, pode ser calculado um endereço de destino com base em vários números incluindo os encontrados nos campos de registro ou num campo imediato da instrução, por exemplo. A unidade de desvio 5058 pode utilizar uma ALU 5074 que possua uma pluralidade de circuitos de registro de entrada 5075, 5076, 5077 e um circuito de registro de saída 5080. A unidade de desvio 5058 pode se comunicar com registros gerais 5059, unidade de despacho-decodificação 5056 ou outros circuitos 5073, por exemplo.
[00171] A execução de um grupo de instruções pode ser interrompida por uma variedade de razões, inclusive por uma alternância de contexto iniciada por um sistema operacional, uma exceção ou um erro de programa causando a alternância de contexto, um sinal de interrupção E/S causando uma alternância de contexto ou atividade multissegmento de uma pluralidade de programas (num ambiente multissegmento), por exemplo. De preferência, uma ação de alternância de contexto salva informação de estado sobre um programa em execução no momento e depois carrega informação de estado sobre um outro programa que está sendo chamado. A informação de estado pode ser salva em registros de hardware ou na memória, por exemplo. A informação de estado compreende, preferencialmente, um valor de contador de programa apontando para a 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 alternância de contexto pode ser praticada em circuitos de hardware, programas aplicativos, programas de sistema operacional ou código firmware (microcódigo, picocódigo ou código interno licenciado (LIC)) sozinhos ou em combinação.
[00172] O processador acessa operandos de acordo com métodos de instrução definidos. A instrução pode fornecer um operando imediato utilizando o valor de uma parte da instrução, pode fornecer um ou mais campos de registro apontando explicitamente para ou registros de propósito geral ou registros de propósito especial (registros de ponto de flutuação, por exemplo). A instrução pode utilizar registros implícitos identificados como operandos por um campo de código de operação. A instrução pode utilizar locações de memória para operandos. A locação de memória para um operando pode ser fornecida por um registro, um campo imediato, ou uma combinação de registros e campo imediato, conforme exemplificado pelo recurso de deslocamento longo do z/Architecture® em que a instrução define um registro base, um registro de índice e um campo imediato (campo de deslocamento) que são adicionados em conjunto para fornecer o endereço do operando na memória, por exemplo. A locação aqui mencionada implica tipicamente uma locação na memória principal (armazenamento primário) salvo se indicado de outra forma.
[00173] Com referência à FIG. 15C, um processador acessa o armazenamento utilizando uma unidade de carga/armazenamento 5060. A unidade de carga/armazenamento 5060 pode realizar uma operação de carga obtendo o endereço do operando de destino na memória 5053 e carregando o operando num registro 5059 ou em outra locação de memória 5053, ou pode realizar uma operação de armazenamento obtendo o endereço do operando de destino na memória 5053 e armazenando os dados obtidos de um registro 5059 ou de outra locação de memória 5053 na locação do operando de destino na memória 5053. A unidade de carga/armazenamento 5060 pode ser especulativa e pode acessar a memória numa sequência que está fora da ordem em relação à sequência de instrução, entretanto, a unidade de carga/armazenamento 5060 deve manter a aparência para os programas cujas instruções sejam executadas em ordem. A unidade de carga/armazenamento 5060 pode se comunicar com registros gerais 5059, unidade de decodificação/despacho 5056, interface cache/memória 5053 ou outros elementos 5083 e compreende vários circuitos de registro, ALUs 5085 e lógica de controle (CTL) 5090 para calcular os endereços de armazenamento e fornecer o sequenciamento pipeline para manter as operações em ordem. Algumas operações podem estar fora de ordem, mas a unidade de carga/armazenamento fornece a funcionalidade de fazer com que as operações fora de ordem apareçam no programa como sendo realizadas em ordem, como é bem conhecido pelos especialistas.
[00174] De preferência, os endereços que um programa aplicativo "vê” são em geral chamados endereços virtuais. Os endereços virtuais são algumas vezes chamados "endereços lógicos” e "endereços efetivos”. Esses endereços virtuais são virtuais na medida em que são redirecionados para locações físicas de memória por uma ou uma variedade de tecnologias de tradução dinâmica de endereços (DAT), incluindo, sem limitação a, pré-fixar simplesmente um endereço virtual com um valor de deslocamento, traduzir o endereço virtual por meio de uma ou mais tabelas de tradução, tabelas de tradução essas compreendendo, de preferência, pelo menos, uma tabela de segmento e uma tabela de página sozinhas ou em combinação, preferencialmente a tabela de segmento possuindo uma entrada apontando para a tabela de página. No z/Architecture®, é fornecida uma hierarquia de tradução 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 do endereço é com frequência aperfeiçoado pela utilização de um buffer de tradução lookaside (TLB) que compreende entradas mapeando um endereço virtual para uma locação de memória física associada. As entradas são criadas quando a DAT traduz um endereço virtual utilizando as tabelas de tradução. O uso subsequente do endereço virtual pode então utilizar a entrada do TLB rápido em vez dos acessos da tabela de tradução sequencial lenta. O conteúdo do TLB pode ser gerenciado por uma variedade de algoritmos de substituição incluindo LRU (Menos Usado Recentemente).
[00175] No caso em que o processador pertence a um sistema multiprocessador, cada processador tem responsabilidade de manter recursos compartilhados, tais como E/S, caches, TLBs e memória, integrados para coerência. Tipicamente, as tecnologias snooping serão utilizadas na manutenção da coerência de cache. Num ambiente snooping, cada linha de cache pode ser marcada como estando em qualquer estado compartilhado, estado exclusivo, estado modificado, estado inválido e similares a fim de facilitar o compartilhamento.
[00176] As unidades E/S 5054 (FIG. 14) fornecem ao processador os meios para se anexar aos dispositivos periféricos incluindo fita, disco, impressoras, vídeos, e estações de trabalho, por exemplo. As unidades E/S são frequentemente apresentadas ao programa de computador por drivers de software. Em mainframes, tais como o Sistema z® da IBM, adaptadores de canal e adaptadores de sistema aberto são unidades E/S do mainframe que fornece as comunicações entre o sistema operacional e os dispositivos periféricos.
[00177] Além disso, outros tipos de ambientes computacionais podem se beneficiar de um ou mais aspectos da presente invenção. Como exemplo, um ambiente pode incluir um emulador (e.g., software ou outros mecanismos de emulação), no qual uma arquitetura particular (incluindo, por exemplo, instrução de execução, funções arquitetadas, tais como tradução de endereço, e registros arquitetados) ou um subconjunto dela é emulado (e.g., num sistema de computador nativo com processador e memória). Nesse ambiente, uma ou mais funções de emulação do emulador podem implantar um ou mais aspectos da presente invenção, mesmo que o computador executando a emulação tenha arquitetura diferente das capacidades sendo emuladas. Como exemplo, no modo emulação, a instrução ou a operação específica sendo emulada é decodificada, e é construída uma função de emulação apropriada para implementar a instrução ou operação individual.
[00178] Num ambiente de emulação, um computador hospedeiro inclui, por exemplo, memória para armazenar instruções e dados, unidade de busca de instruções para buscar instruções da memória e para, opcionalmente, fornecer a retenção local para a instrução buscada; unidade de decodificação de instrução para receber a instrução buscada e para determinar o tipo de instruções que foram buscadas; e unidade de execução de instrução para executar as instruções. A execução pode incluir carregamento de dados num registro da memória; armazenando os dados de volta na 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. Num exemplo, cada unidade está implementada em software. Por exemplo, as operações sendo executadas pelas unidades são implementadas como uma ou mais sub-rotinas dentro do software emulador.
[00179] Mais particularmente, num mainframe, instruções arquitetadas de máquina são utilizadas pelos programadores, usualmente hoje programadores de "C”, com frequência por meio de um aplicativo compilador. Essas instruções armazenadas na mídia de armazenamento podem ser executadas originariamente num Servidor IBM z/Architecture®, ou alternativamente em máquinas executando outras arquiteturas. Podem ser emuladas nos servidores mainframe IBM® existentes ou futuros e em outras máquinas da IBM® (e.g., servidores Power Systems e System x®). Podem ser executadas em máquinas que rodam Linux numa ampla variedade de máquinas usando hardware fabricado pela IBM®, Intel®, AMD™, e outros. Além da execução nesse hardware no z/Architecture®, o Linux pode ser utilizado assim como máquinas que usam emulação por Hercules ou FSI (Fundamental Software, Inc.), em que a execução geralmente é em modo de emulação. No modo emulação, o software de emulação é executado por um processador nativo para emular a arquitetura de um processador emulado. As informações sobre os produtos de emulação acima referidos estão disponíveis na Rede de Alcance Mundial, respectivamente em www.hercules-390.org e www.funsoft.com.
[00180] O processador nativo executa tipicamente o software de emulação compreendendo ou firmware ou um sistema operacional nativo para realizar a emulação do processador emulado. O software de emulação é responsável por buscar e executar instruções da arquitetura do processador emulado. O software de emulação mantém um contador de programa emulado para manter o rastreamento dos limites da instrução. O software de emulação pode buscar uma ou mais instruções de máquina emulada de cada vez e convertê-las para um grupo correspondente de instruções de máquinas de origem para execução pelo processador de origem. Essas instruções convertidas podem ser armazenadas de forma que pode ser conseguida uma conversão mais rápida. Não obstante, o software de emulação deve manter as regras de arquitetura da arquitetura do processador emulado de forma a assegurar a correta operação dos sistemas operacionais e aplicativos escritos para o processador emulado. Além disso, o software de emulação deve prover recursos identificados pela arquitetura do processador emulado, incluindo, sem limitação a, registros de controle, registros de propósito geral, registros de ponto flutuante, função de tradução dinâmica de endereços incluindo tabelas de segmento e tabelas de página, por exemplo, mecanismos de interrupção, mecanismos de alternância de contexto, relógios TOD e interfaces arquitetadas para subsistemas E/S de forma que um sistema operacional ou um programa aplicativo designados para rodar no processador emulado possam rodar no processador de origem que possui o software de emulação.
[00181] Uma instrução específica sendo emulada é decodificada, e uma sub-rotina é convocada para realizar a função da instrução individual. Uma função do software de emulação emulando uma função de um processador emulado é implementada, por exemplo, numa sub-rotina ou num driver "C”, ou algum outro método de fornecimento de driver para o hardware específico, conforme poderá ser feito pelos especialistas, após o entendimento da descrição da concretização preferencial. Várias patentes de emulação de software e de hardware incluindo, mas sem limitação a, Carta-Patente dos EUA N° 5.551.013, intitulado “Multiprocessor for Hardware Emulation” (Multiprocessador para Emulação de Hardware), de Beausoleil et al.; e Carta-Patente dos EUA N° 6.009.261, intitulado “Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor” (Pré-processamento de Rotinas de Destino Armazenadas Emulando Instruções Incompatíveis num Processador de Destino), de Scalzi et al; e Carta-Patente dos EUA N° 5.574.873, intitulado “Decoding Guest Instruction on Directly Access Emulation Routines that Emulate the Guest Instructions” (Decodificando Instrução Convidada nas Rotinas de Emulação de Acesso Direto que Emulam Instruções Convidadas), de Davidian et al; e Carta-Patente dos EUA N° 6.308.255, intitulado “Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” (Barramentos e Circuitos Integrados de Multiprocessamento Simétrico Utilizados para Suporte de Coprocessador Permitindo que um Código não Nativo seja Executado num Sistema), de Gorishek et al; e Carta-Patente dos EUA n° 6.463.582, intitulado “Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” (Tradutor Dinâmico de Código de Otimização de Objeto para Emulação de Arquitetura e Método de Tradução Dinâmica de Código de Otimização de Objeto), de Lethin et al; e Carta-Patente dos EUA N° 5.790.825, intitulado “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” (Método para Emulação de Instruções Convidadas num Computador Hospedeiro através da Recompilação Dinâmica de Instruções Hospedeiras), de Eric Traut; e muitas outras, disponíveis para os especialistas, ilustram uma variedade de maneiras conhecidas de obter emulação de um formato de instrução arquitetada para uma máquina diferente para uma máquina de destino.
[00182] Na FIG. 16, temos um exemplo de um sistema de computador hospedeiro emulado 5092 que emula um sistema de computador hospedeiro 5000’ de uma arquitetura hospedeira. No sistema de computador hospedeiro emulado 5092, o processador hospedeiro (CPU) 5091 é um processador hospedeiro emulado (ou processador hospedeiro virtual) e compreende um processador hospedeiro 5093 que possui arquitetura do conjunto de instruções de origem diferente da do processador 5091 do computador hospedeiro 5000’. O sistema de computador hospedeiro emulado 5092 possui memória 5094 acessível ao processador de emulação 5093. Na concretização exemplificada, a memória 5094 é particionada em uma parte de memória de computador hospedeiro 5096 e em uma parte de rotinas de emulação 5097. A memória do computador hospedeiro 5096 está disponível para programas do computador hospedeiro emulado 5092 de acordo com a arquitetura do computador hospedeiro. O processador de emulação 5093 executa instruções de origem de um conjunto de instruções arquitetadas de uma arquitetura diferente daquela do processador emulado 5091, as instruções de origem sendo obtidas da memória de rotinas de emulação 5097, e podem acessar uma instrução hospedeira para execução a partir de um programa na memória do computador hospedeiro 5096 mediante a utilização de uma ou mais instruções obtidas numa rotina de sequência & acesso/decodificação que pode decodificar as instruções hospedeiras acessadas para determinar uma rotina de execução de instrução de origem para emulação da função da instrução hospedeira acessada. Outros recursos que estão definidos para a arquitetura do sistema de computador hospedeiro 5000’ podem ser emulados por rotinas de recursos arquitetados, incluindo recursos como registros de propósito geral, registros de controle, tradução dinâmica de endereço e suporte de subsistema E/S e cache de processamento, como exemplo. As rotinas de emulação podem também tirar vantagem de funções disponíveis no processador de emulação 5093 (tais como registros gerais e tradução dinâmica de endereços virtuais) para aperfeiçoar o desempenho das rotinas de emulação. Hardware especial e máquinas de redução de carga podem ser também fornecidas para auxiliar o processador 5093 na emulação da função do computador hospedeiro 5000’.
[00183] A terminologia aqui utilizada serve ao propósito apenas de descrever concretizações particulares e não pretende ser limitadora da invenção. Conforme utilizado neste documento, as formas "um”, "uma” e "o”, "a” incluem também as formas plurais, salvo se o contexto claramente indicar o contrário. Fica entendido ainda que os termos "compreende” e/ou "compreendendo”, quando utilizados nesta especificação, determinam a presença de certas características, números inteiros, passos, operações, elementos, e/ou componentes, mas não excluem a presença ou adição de uma ou mais outras características, inteiros, passos, operações, elementos componentes e/ou grupos delas.
[00184] As estruturas, materiais, ações e equivalentes de todos os modos ou passos mais os elementos de função correspondentes nas reivindicações abaixo, se houver, pretendem incluir qualquer estrutura, material ou ação para o desempenho da função em combinação com outros elementos reivindicados conforme especificamente reivindicados. A descrição da presente invenção está sendo apresentada com o propósito de ilustração e de descrição, mas não pretende ser exaustiva ou limitada à invenção na forma revelada. Muitas modificações e variações serão evidentes para os especialistas no assunto sem partir do escopo da invenção. A concretização foi escolhida e descrita a fim de melhor explicar os princípios da invenção e as aplicações práticas, e para permitir que outros versados na matéria apreendam a invenção para várias concretizações com várias modificações conforme adequadas ao uso particular contemplado.

Claims (11)

  1. MÉTODO PARA CARREGAR DADOS DE UM ADAPTADOR caracterizado pelas etapas de:
    • - obtenção, por um processador configurado para estar acoplado a um adaptador, de um campo de código de operação identificando uma carga de instrução do adaptador;
    • - obtenção, pelo processador, de um primeiro campo identificando uma primeira localização na qual os dados trazidos do adaptador serão carregados;
    • - obtenção, pelo processador, de um segundo campo identificando uma segunda localização, cujo conteúdo inclui um identificador de função identificando o adaptador, uma designação de um espaço de endereçamento no adaptador do qual os dados devem ser carregados, e um deslocamento no espaço de endereçamento;
    • - obtenção, pelo processador e através do identificador de função, de uma entrada de tabela de função associada ao adaptador a entrada de tabela de função estando armazenada na memória associada ao processador;
    • - determinação, pelo processador, de um endereço de dados do adaptador utilizando pelo menos uma das informações da entrada de tabela de função e do deslocamento; e
    • - busca de dados, pelo processador, de uma localização específica no espaço de endereçamento identificado pela designação do espaço de endereçamento, sendo a localização específica identificada pelo endereço dos dados.
  2. MÉTODO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 1, caracterizado por:
    o espaço de endereçamento é ou um espaço de memória ou um espaço E/S, e a determinação do endereço dos dados compreende a utilização de um ou mais parâmetros da entrada da tabela de função para determinar o endereço de dados.
  3. MÉTODO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 2 caracterizado por:
    a obtenção de uma entrada de tabela de função compreender a adição de um valor de um registro de endereço base da entrada da tabela de função ao deslocamento para determinar o endereço dos dados.
  4. MÉTODO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 1, caracterizado por:
    o espaço de endereçamento é um espaço de configuração, e o endereço dos dados é o deslocamento obtido pelo processador, o deslocamento identificando um número de registro no espaço de configuração.
  5. MÉTODO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 1, caracterizado por compreender ainda:
    colocação dos dados na primeira localização obtida pelo processador, e os conteúdos da segunda localização incluírem uma quantidade de dados a ser buscada.
  6. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR caracterizado por:
    uma memória; e
    um processador em comunicação com a memória;
    onde o equipamento está configurado para efetuar um método, o método compreendendo as etapas de:
    • - obtenção, por um processador, de um campo de código de operação identificando uma carga de instrução do adaptador;
    • - obtenção, pelo processador, de um primeiro campo identificando uma primeira localização na qual os dados trazidos do adaptador serão carregados;
    • - obtenção, pelo processador, de um segundo campo identificando uma segunda localização, cujo conteúdo inclui um identificador de função identificando o adaptador, uma designação de um espaço de endereçamento no adaptador do qual os dados devem ser carregados, e um deslocamento no espaço de endereçamento;
    • - obtenção, pelo processador e através do identificador de função, de uma entrada de tabela de função associada ao adaptador a entrada de tabela de função estando armazenada na memória associada ao processador;
    • - determinação, pelo processador, de um endereço de dados do adaptador utilizando pelo menos uma das informações da entrada de tabela de função e do deslocamento; e
    • - busca de dados, pelo processador, de uma localização específica no espaço de endereçamento identificado pela designação do espaço de endereçamento, sendo a localização específica identificada pelo endereço dos dados.
  7. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 6, caracterizado por:
    o espaço de endereçamento é ou um espaço de memória ou um espaço E/S, e a determinação do endereço dos dados compreende a utilização de um ou mais parâmetros da entrada da tabela de função para determinar o endereço de dados.
  8. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 7, caracterizado por:
    a obtenção de uma entrada de tabela de função compreender a adição de um valor de um registro de endereço base da entrada da tabela de função ao deslocamento para determinar o endereço dos dados.
  9. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 6, caracterizado por:
    o espaço de endereçamento é um espaço de configuração, e o endereço dos dados é o deslocamento obtido pelo processador, o deslocamento identificando um número de registro no espaço de configuração.
  10. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 6, caracterizado por compreender ainda a etapa de colocação dos dados na primeira localização obtida pelo processador.
  11. EQUIPAMENTO PARA CARREGAR DADOS DE UM ADAPTADOR, de acordo com a reivindicação 6, caracterizado por:
    os conteúdos da segunda localização incluírem uma quantidade de dados a ser buscada.
BR112012032857-3A 2010-06-23 2010-11-08 método e equipamento para carregar dados de um adaptador BR112012032857B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/821,182 2010-06-23
US12/821,182 US8566480B2 (en) 2010-06-23 2010-06-23 Load instruction for communicating with adapters
PCT/EP2010/067035 WO2011160716A1 (en) 2010-06-23 2010-11-08 Load instruction for communicating with adapters

Publications (2)

Publication Number Publication Date
BR112012032857A2 BR112012032857A2 (pt) 2018-02-27
BR112012032857B1 true BR112012032857B1 (pt) 2021-01-12

Family

ID=43596845

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112012032857-3A BR112012032857B1 (pt) 2010-06-23 2010-11-08 método e equipamento para carregar dados de um adaptador

Country Status (8)

Country Link
US (1) US8566480B2 (pt)
EP (1) EP2430523B1 (pt)
JP (1) JP5680194B2 (pt)
CN (1) CN102906694B (pt)
BR (1) BR112012032857B1 (pt)
HK (1) HK1180802A1 (pt)
PL (1) PL2430523T3 (pt)
WO (1) WO2011160716A1 (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8615645B2 (en) * 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an 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
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
US8510599B2 (en) * 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US9798631B2 (en) * 2014-02-04 2017-10-24 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
US10375167B2 (en) * 2015-11-20 2019-08-06 Microsoft Technology Licensing, Llc Low latency RDMA-based distributed storage
WO2017127631A1 (en) * 2016-01-22 2017-07-27 Sony Interactive Entertainment Inc Spoofing cpuid for backwards compatibility
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
TWI773959B (zh) * 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
TWI767175B (zh) * 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction

Family Cites Families (201)

* Cited by examiner, † Cited by third party
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
JPS5498138A (en) * 1978-01-20 1979-08-02 Toshiba Corp Input/output control system
US4323963A (en) 1979-07-13 1982-04-06 Rca Corporation Hardware interpretive mode microprocessor
JPS58501921A (ja) 1981-10-13 1983-11-10 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション チヤネル動作の測定のための方法及び装置
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
JPH01156856A (ja) * 1987-12-14 1989-06-20 Hitachi Ltd データ転送制御方式
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 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用変数の値を更新する方法
WO1994027215A1 (en) 1993-05-07 1994-11-24 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
US5901312A (en) 1994-12-13 1999-05-04 Microsoft Corporation Providing application programs with unmediated access to a contested hardware resource
US5802590A (en) 1994-12-13 1998-09-01 Microsoft Corporation Method and system for providing secure access to computer resources
JPH08263424A (ja) 1995-03-20 1996-10-11 Fujitsu Ltd コンピュータ装置
EP0747872B1 (en) 1995-06-07 1999-03-03 International Business Machines Corporation Video processor with addressing mode control
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
JPH09237246A (ja) * 1995-12-25 1997-09-09 Hitachi Ltd Pciエージェント制御カードおよびpciエージェント制御方法
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
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
US6195674B1 (en) * 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
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
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
US6615305B1 (en) 1998-08-27 2003-09-02 Intel Corporation Interrupt pacing in data transfer unit
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6408347B1 (en) 1998-12-10 2002-06-18 Cisco Technology, Inc. Integrated multi-function adapters using standard interfaces through single a access point
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
WO2001093032A1 (fr) * 2000-05-31 2001-12-06 Hitachi, Ltd. Systeme informatique, procede de commande d'ordinateur et support stockant un programme de commande
US6654818B1 (en) 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6658599B1 (en) 2000-06-22 2003-12-02 International Business Machines Corporation Method for recovering from a machine check interrupt during runtime
US6751752B1 (en) 2000-09-01 2004-06-15 Intel Corporation Checking events generated by a device
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
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
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
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
US6880021B2 (en) 2001-09-28 2005-04-12 International Business Machines Corporation Intelligent interrupt with hypervisor collaboration
US6801993B2 (en) 2001-09-28 2004-10-05 International Business Machines Corporation Table offset for shortening translation tables from their beginnings
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
US7299266B2 (en) 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
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
US20040139305A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation Hardware-enabled instruction tracing
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
US7130949B2 (en) 2003-05-12 2006-10-31 International Business Machines Corporation Managing input/output interruptions in non-dedicated interruption hardware environments
US7174550B2 (en) 2003-05-12 2007-02-06 International Business Machines Corporation Sharing communications adapters across a plurality of input/output subsystem images
US7000036B2 (en) 2003-05-12 2006-02-14 International Business Machines Corporation Extended input/output measurement facilities
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
US7290070B2 (en) 2003-05-12 2007-10-30 International Business Machines Corporation Multiple logical input/output subsystem facility
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
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
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
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
US7420931B2 (en) 2003-06-05 2008-09-02 Nvidia Corporation Using TCP/IP offload to accelerate packet filtering
US7613109B2 (en) 2003-06-05 2009-11-03 Nvidia Corporation Processing data for a TCP connection using an offload unit
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
US7506214B2 (en) 2004-04-22 2009-03-17 International Business Machines Corporation Application for diagnosing and reporting status of an adapter
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
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
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support 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
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
US7562366B2 (en) 2005-02-03 2009-07-14 Solarflare Communications, Inc. Transmit completion event batching
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
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
US7260664B2 (en) 2005-02-25 2007-08-21 International Business Machines Corporation Interrupt mechanism on an IO 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
US7464191B2 (en) 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
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
US7502872B2 (en) 2005-05-23 2009-03-10 International Bsuiness Machines Corporation Method for out of user space block mode I/O directly between an application instance and an I/O adapter
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
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
US7657662B2 (en) * 2005-08-31 2010-02-02 International Business Machines Corporation Processing user space operations directly between an application instance and an I/O adapter
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
US7474623B2 (en) 2005-10-27 2009-01-06 International Business Machines Corporation Method of routing I/O adapter error messages in a multi-host environment
US7882489B2 (en) 2005-11-22 2011-02-01 International Business Machines Corporation Integrated code generation for adapter-specific property template
US7475183B2 (en) 2005-12-12 2009-01-06 Microsoft Corporation Large page optimizations in a virtual machine environment
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized 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)
US20070174723A1 (en) 2006-01-18 2007-07-26 Omar Cardona Sub-second, zero-packet loss adapter failover
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
US9135951B2 (en) 2006-10-10 2015-09-15 Qualcomm Incorporated System and method for dynamic audio buffer management
US7587575B2 (en) 2006-10-17 2009-09-08 International Business Machines Corporation Communicating with a memory registration enabled adapter using cached address translations
US20080091868A1 (en) 2006-10-17 2008-04-17 Shay Mizrachi Method and System for Delayed Completion Coalescing
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 日本電気株式会社 情報処理装置および設定方法
US20080263391A1 (en) 2007-04-20 2008-10-23 International Business Machines Corporation Apparatus, System, and Method For Adapter Card Failover
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
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
US10341804B2 (en) 2009-10-28 2019-07-02 International Business Machines Corporation System, method and computer program product for accessing data from a source by a variety of methods to improve performance and ensure data integrity
US8713350B2 (en) 2009-12-08 2014-04-29 Hewlett-Packard Development Company, L.P. Handling errors in a data processing system
EP2510439B1 (en) 2009-12-08 2022-05-04 Hewlett Packard Enterprise Development LP Managing errors in a data processing system
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses

Also Published As

Publication number Publication date
US20110320764A1 (en) 2011-12-29
HK1180802A1 (en) 2013-10-25
BR112012032857A2 (pt) 2018-02-27
CN102906694B (zh) 2015-06-03
WO2011160716A1 (en) 2011-12-29
EP2430523B1 (en) 2015-01-14
CN102906694A (zh) 2013-01-30
JP5680194B2 (ja) 2015-03-04
US8566480B2 (en) 2013-10-22
EP2430523A1 (en) 2012-03-21
JP2013536487A (ja) 2013-09-19
PL2430523T3 (pl) 2015-05-29

Similar Documents

Publication Publication Date Title
JP5629373B2 (ja) コンピューティング環境においてアダプタへのアクセスを制御する方法、プログラム、および、コンピュータ・システム
RU2556418C2 (ru) Определение форматов трансляции для функций адаптера во время выполнения
JP5731642B2 (ja) アダプタのアドレス・スペースへのゲスト・アクセスのための方法、システム、およびコンピュータ・プログラム
BR112012032857B1 (pt) método e equipamento para carregar dados de um adaptador
JP5669938B2 (ja) コンピューティング環境のアダプタを使用可能にするための方法、システム、およびコンピュータ・プログラム
BR112012033821B1 (pt) método de gerenciamento de requisições de interrupção em um ambiente computacional
KR101464899B1 (ko) 어댑터와 통신하기 위한 저장/저장 차단 명령
BR112012033815B1 (pt) tradução de endereços de entrada/saída para endereços de memória
WO2011160715A1 (en) Discovery by operating system of information relating to adapter functions accessible to the operating system

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]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 12/01/2021, OBSERVADAS AS CONDICOES LEGAIS.