BR112021015075A2 - Manipulação de uma instrução de armazenamento de entrada/saída - Google Patents

Manipulação de uma instrução de armazenamento de entrada/saída Download PDF

Info

Publication number
BR112021015075A2
BR112021015075A2 BR112021015075-7A BR112021015075A BR112021015075A2 BR 112021015075 A2 BR112021015075 A2 BR 112021015075A2 BR 112021015075 A BR112021015075 A BR 112021015075A BR 112021015075 A2 BR112021015075 A2 BR 112021015075A2
Authority
BR
Brazil
Prior art keywords
input
data
data processing
output
nest
Prior art date
Application number
BR112021015075-7A
Other languages
English (en)
Inventor
Christoph Raisch
Marco Kraemer
Frank Lehnert
Matthias Klein
Jonathan Bradbury
Christian Jacobi
Brenton Belmar
Peter Driever
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 BR112021015075A2 publication Critical patent/BR112021015075A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

manipulação de uma instrução de armazenamento de entrada/saída. um sistema de processamento de dados (210) e um método para lidar com uma instrução de armazenamento de entrada/saída (30), compreendendo um ninho de sistema (18) acoplado comunicativamente a pelo menos um barramento de entrada/saída (22) por um controlador de barra de entrada/saída (20). o sistema de processamento de dados (210) compreende ainda pelo menos uma unidade de processamento de dados (216) composta por um núcleo (12), um firmware do sistema (10) e uma interface de ninho de núcleo assíncrono (14). a unidade de processamento de dados (216) é acoplada comunicativamente ao ninho do sistema (18) através de um buffer de agregação (16). o ninho do sistema (18) é configurado para carregar assincronamente e/ou armazenar dados para um dispositivo externo (214) que é acoplado comunicativamente ao barramento de entrada/saída (22). a unidade de processamento de dados (216) está configurada para completar a instrução de armazenamento de entrada/saída (30) antes que uma execução da instrução de armazenamento de entrada/saída (30) no ninho do sistema (18) seja concluída.

Description

"MANIPULAÇÃO DE UMA INSTRUÇÃO DE ARMAZENAMENTO DE ENTRADA/SAÍDA"
[0001] A presente invenção refere-se, em geral, a sistemas de processamento de dados, em particular a um método para lidar com uma instrução de armazenamento de entrada/saída para um dispositivo externo, bem como um produto de programa de computador e um sistema de processamento de dados.
ANTECEDENTES
[0002] Um ambiente de computação pode incluir um ou mais tipos de dispositivos de entrada/saída, incluindo vários tipos de adaptadores. Um tipo de adaptador é um adaptador de Interconexão de Componente Periférico (PCI) ou Interconexão de Componente Periférico Expresso (PCIe).Este adaptador inclui um ou mais espaços de endereço usados na comunicação de dados entre o adaptador e o sistema ao qual o adaptador está conectado.
[0003] Em alguns sistemas, uma parte de um espaço de endereço da unidade de processamento central (CPU) acoplado ao adaptador é mapeada a um espaço de endereço do adaptador que permite instruções de CPU que acessam o armazenamento para manipular diretamente os dados no espaço de endereço do adaptador.
[0004] A comunicação com adaptadores, como adaptadores PCI ou PCIe, pode ser facilitada por instruções de controle especificamente projetadas para comunicação de e para adaptadores e usadas para comunicação.
[0005] No estado da técnica, uma instrução de armazenamento para armazenar dados em um adaptador inclui, por exemplo, obter uma instrução de máquina para execução, a instrução da máquina sendo definida para execução de computador de acordo com uma arquitetura de computador, a instrução da máquina incluindo, por exemplo, um campo opcode identificando uma armazenamento para instrução de adaptador. Um primeiro campo identifica um primeiro local que inclui dados a serem armazenados em um adaptador. Um segundo campo identifica um segundo local, cujo conteúdo inclui uma alça de função identificando o adaptador, uma designação de um espaço de endereço dentro do adaptador no qual os dados devem ser armazenados e um deslocamento dentro do espaço de endereço. A instrução da máquina é executada, incluindo o uso da alça de função para obter uma entrada de tabela de função associada ao adaptador. Um endereço de dados do adaptador é obtido usando pelo menos uma das informações na entrada da tabela de funções e no deslocamento. Os dados são armazenados a partir do primeiro local em um local específico no espaço de endereço identificado pela designação do espaço de endereço, o local específico identificado pelo endereço de dados do adaptador.
[0006] Um recurso existente em um grande sistema multiprocessador é a capacidade de quiesce todos os processadores dentro de uma zona de destino. As funções quiesce operam para pausar ou alterar temporariamente o estado de um processador ou grupo de processadores para perfoml, por exemplo, atualizações ou backups do sistema. Em alguns casos, uma interrupção de quiesce é aplicável apenas a um subconjunto dos recursos do sistema. Nesses casos, o sistema pode ser dividido em diferentes zonas. Para uma operação quiesce aplicável a uma zona (uma zona de destino), os processadores fora da zona de destino podem continuar em execução, embora novas traduções possam ser bloqueadas. Normalmente, pelo menos um controlador de sistema ou outro mecanismo transmite o quiesce para todos os processadores físicos no sys-tern, lida com a coleta de informações do estado quiesce e indica para um processador solicitante quando todos os processadores foram iniciados, ou estão ignorando (filtragem) a solicitação de quiesce.
[0007] Um controlador quiesce pode ser acoplado comunicativamente a um processador em um sistema de vários processadores, e uma máquina de estado quiesce configurada para receber uma solicitação quiesce. O sistema de computador é configurado para executar um método que inclui receber uma solicitação de quiesce no controlador quiesce de um processador solicitante, sendo o processador solicitante uma de uma pluralidade de processadores em um sistema multi-processador, e determinar que a solicitação quiesce não é aceita com base em um estado da máquina do estado de quiesce. O método também inclui, com base na solicitação não ser aceita, gerar uma mensagem de rejeição configurada para indicar que o pedido de quiesce foi rejeitado, manter a mensagem de rejeição lmtil um comando quiesce é transmitido para o sistema multiprocessador, o comando quiesce baseado em uma solicitação de quiesce diferente, e enviando a mensagem de rejeição para o processador solicitante com base na transmissão do comando quiesce sendo detectado pelo controlador quiesce.
SUMÁRIO
[0008] Um sistema de processamento de dados é proposto para lidar com uma instrução de armazenamento de entrada/saída, compreendendo um ninho de sistema acoplado comunicativamente a pelo menos um barramento de entrada/saída por um controlador de barra de entrada/saída. O sistema de processamento de dados compreende ainda pelo menos uma unidade de processamento de dados composta por um núcleo, um firmware de sistema e uma interface de ninho de núcleo assíncrono. A unidade de processamento de dados é acoplada comunicativamente ao ninho do sistema através de um buffer de agregação. O ninho do sistema é configurado para carregar assíncronamente e/ou armazenar dados para pelo menos um dispositivo externo que é acoplado comunicativamente ao barramento de entrada/saída.
[0009] O sistema de processamento de dados está configurado para executar: (i) um sistema operacional em execução no sistema de processamento de dados emite a instrução de armazenamento de entrada/saída especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados está configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída; (iii) a unidade de processamento de dados está configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados; (iv) a unidade de processamento de dados está configurada para completar a instrução do armazenamento de entrada/saída antes que uma execução da instrução do armazenamento de entrada/saída no ninho do sistema seja concluída; e (v) o firmware do sistema é configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída for detectado pela unidade de processamento de dados, transmitindo os dados da execução assíncrona falha.
[0010] Favoravelmente, uma série de ciclos por instrução pode ser melhorada substituindo uma instrução de PCI síncrocro por uma instrução e mecanismo de envio assíncrono confiável. Uma instrução de armazenamento PCI com execução assíncrona do efeito da armazenamento PCIe e manuseio assíncrono de status assíncrono pode ser realizada. A execução confiável assíncrono é baseada em mecanismos de encaminhamento confiáveis na microarquitetura.
[0011] O sistema de processamento de dados de acordo com uma primeira concretização da invenção compreende instruções de carregamento e armazenamento de pelo menos um dispositivo externo do sistema de processamento de dados através de um barramento de entrada/saída. Instruções assíncronas concluídas antes os dados foram armazenados no dispositivo externo enquanto as instruções síncronias são concluídas após o armazenamento dos dados no dispositivo externo. Dentro das personificações aqui descritas, o PCI será usado intercambiavelmente para qualquer outra tecnologia de entrada/saída, não restringindo assim a concretização da invenção ao PCI.
[0012] Personificações da invenção descrevem uma execução de instrução de armazenamento de entrada/saída de forma estritamente ordenada como observável acima do limite da arquitetura, enquanto a execução real pode estar fora de ordem dentro do hardware da unidade de processamento de dados (CPU).
[0013] De acordo com personificações da invenção, uma instrução de armazenamento PCI pode ser executada com uma execução assíncrona do efeito da armazenamento PCIe e um manuseio assíncrono de status assíncrono. A execução confiável assíncrono baseia-se em mecanismos de encaminhamento confiáveis na microarquitetura do sistema inventivo de processamento de dados.
[0014] Uma instrução de armazenamento e bloqueio de armazenamento existente é geralmente síncrono até o ponto em que os dados da armazenamento PCI foram entregues à interface PCIe e a conclusão devolvida a uma unidade de processamento.
[0015] O padrão PCI requer apenas um comando de envio assíncrona de informações PCI, que normalmente é implementado através de uma fila de armazenamento no processador agregando dados com envio assíncrona.
[0016] Vantajosamente, de acordo com as personificações da invenção, uma melhoria em relação aos ciclos por instrução pode ser alcançada substituindo uma instrução de PCI síncrona por um processo de envio assíncrono confiável de uma instrução de armazenamento de entrada/saída.
[0017] Alternativamente ou adicionalmente de dados a serem transferidos, a instrução de armazenamento de acordo com uma concretização da invenção também pode especificar um ponteiro para uma memória principal que deve ser usada para obter dados, em vez de conter os dados diretamente.
[0018] O nível de ocorrência de hóspedes também pode significar que um único hóspede ou host pode estar sendo executado no sistema de processamento de dados.
[0019] O endereço do deslocamento da função de entrada/saída em si pode ser um endereço virtual, físico e lógico. Endereços virtuais e lógicos geralmente são traduzidos através de uma unidade de gerenciamento de memória (MMU) em um endereço físico e o endereço físico permite identificar qual função e deslocamento significa.
[0020] Endereço físico neste contexto significa "endereço mais baixo na hierarquia de tradução de endereço acessível dentro de um sistema de hóspedes/operacionais".
[0021] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, o buffer de agregação pode ser acoplado comunicativamente à interface assíncrona do ninho de núcleo. Assim, o buffer de agregação pode lidar com dados enviados diretamente pela interface ninho central ninho de núcleo assíncrona consecutivamente até que todos os dados a serem transferidos para o dispositivo externo sejam armazenados no buffer de agregação.
[0022] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, os dados podem ser transferidos pela instrução de armazenamento de entrada/saída através de um mecanismo de transmissão assíncrona com uma mensagem de conclusão antecipada em vários pacotes de dados para o buffer de agregação, se o comprimento dos dados de origem exceder oito bytes, caso outro os dados podem ser transferidos em um pacote de dados. O mecanismo de transmissão assíncrono é favorável porque o dispositivo de envio é livre para reutilização em um estado anterior.
[0023] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, o firmware do sistema pode incluir um código de driver de entrada/saída assíncroo para lidar com a instrução de armazenamento de entrada/saída. Assim, um mecanismo de transmissão assíncrono pode ser usado para transferir dados da unidade de processamento de dados para o dispositivo externo.
[0024] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, o núcleo pode incluir um código de configuração assíncrono para lidar com requisitos de memória para informações de status do código de driver de entrada/saída assíncrono. Este código de configuração assíncrona pode facilitar ainda mais o mecanismo de transmissão assíncrona através do buffer de agregação para o ninho do sistema e o controlador de barramento de entrada/saída.
[0025] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, a interface assíncrona do ninho de núcleo pode incluir um ninho de núcleo assíncrono componente de encaminhamento de interface para encaminhamento dos dados com conclusão local. Este componente pode ser implementado em hardware na interface assíncrona ninho de núcleo. Assim, um modo de transmissão assíncrona favorável para o envio dos dados em pacotes de dados para o buffer de agregação pode ser suportado.
[0026] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, o buffer de agregação pode incluir uma lógica de conclusão antecipada para fornecer uma mensagem gratuita para reutilização após o envio de uma solicitação. Isso permite uma continuação antecipada do processo de transmissão dos dados através do buffer de agregação para o ninho do sistema e o controlador de barramento de entrada/saída.
[0027] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, o buffer de agregação pode ser acoplado à interface assíncrona do ninho central através de um barramento assíncrona. Desta forma, o mecanismo de transmissão assíncrono para transferência de dados da interface assíncrona do ninho central pode ser apoiado favoravelmente.
[0028] De acordo com uma concretização favorável, o sistema de processamento de dados inventivo pode incluir ainda um buffer de status de entrada/saída coletando estados retornados do ninho do sistema e/ou do controlador de barramento de entrada/saída, em particular uma mensagem de conclusão do ninho do sistema. Este buffer de status de entrada/saída coleta os estados retornados agindo como um buffer de mensagem de sistema assíncrono, suportando o processo de transmissão assíncrono.
[0029] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, a interface assíncrona do ninho de núcleo pode incluir o buffer de status de entrada/saída. Vantajosamente, o buffer de status de entrada/saída é integrado diretamente na interface ninho de núcleo assíncrona para resposta rápida.
[0030] De acordo com uma concretização favorável do sistema inventivo de processamento de dados, uma mensagem de sistema pode ser composta por um endereço de destino físico hierárquico, fornecimento de um segmento SMT (multithreading simultâneo) ou um identificador de buffer agregado, -um comprimento de dados, um endereço de barramento de entrada/saída ou - um número de sequência para um algoritmo de recuperação. Assim, pode ser garantida uma passagem vantajosa de informações relevantes através do sistema de processamento de dados.
[0031] Mais um método é proposto para lidar com uma instrução de armazenamento de entrada/saída para pelo menos um dispositivo externo de um sistema de processamento de dados, o sistema de processamento de dados que compreende um ninho de sistema acoplado comunicativamente a pelo menos um barramento de entrada/saída por um controlador de barra de entrada/saída. O sistema de processamento de dados compreende ainda pelo menos uma unidade de processamento de dados composta por um núcleo, um firmware de sistema e uma interface de ninho de núcleo assíncrono. A unidade de processamento de dados é acoplada comunicativamente ao ninho do sistema através de um buffer de agregação. O dispositivo externo é acoplado comunicativamente ao barramento de entrada/saída.
[0032] O método compreende: (i) um sistema operacional em execução no sistema de processamento de dados emitindo a instrução de armazenamento de entrada/saída especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados que está sendo configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída; (iii) a unidade de processamento de dados que está sendo configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o convidado executando no sistema de processamento de dados; (iv) a unidade de processamento de dados que está sendo configurada para completar a instrução do armazenamento de entrada/saída antes que uma execução da instrução do armazenamento de entrada/saída no ninho do sistema seja concluída; e (v) o firmware do sistema que está sendo configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída for detectado pela unidade de processamento de dados, transmitindo os dados da execução assíncrona falha.
[0033] Favoravelmente, uma série de ciclos por instrução pode ser melhorada substituindo uma instrução de PCI síncrono por uma instrução e mecanismo de envio assíncrono confiável. Uma instrução de armazenamento PCI com execução assíncrona do efeito da armazenamento PCIe e manuseio assíncrono de status assíncrono pode ser realizada. A execução confiável assíncrono é baseada em mecanismos de encaminhamento confiáveis na microarquitetura.
[0034] O método de acordo com uma nova concretização da invenção compreende instruções de carregamento e armazenamento de pelo menos um dispositivo externo do sistema de processamento de dados através de um barramento de entrada/saída. Instruções assíncronas são concluídas antes que os dados foram armazenados no dispositivo externo, enquanto instruções síncronas são concluídas após o armazenamento dos dados no dispositivo externo. Dentro das personificações aqui descritas, o PCI será usado intercambiavelmente para qualquer outra tecnologia de entrada/saída, não restringindo assim a concretização da invenção ao PCI.
[0035] Personificações do método inventivo descrevem uma execução de instrução de armazenamento de entrada/saída de forma estritamente ordenada como observável acima do limite da arquitetura, enquanto a execução real pode estar fora de ordem dentro do hardware da unidade de processamento de dados (CPU).
[0036] De acordo com personificações do método inventivo, uma instrução de armazenamento PCI pode ser executada com uma execução assíncrona do efeito da armazenamento PCIe e um manuseio assíncrono de status. A execução confiável assíncrona baseia-se em mecanismos de encaminhamento confiáveis na microarquitetura do sistema inventivo de processamento de dados.
[0037] Uma instrução de armazenamento e bloqueio de armazenamento existente é geralmente síncrona até o ponto em que os dados da armazenamento PCI foram entregues à interface PCIe e a conclusão devolvida a uma unidade de processamento.
[0038] O padrão PCI requer apenas um comando de envio assíncrono de informações PCI, que normalmente é implementado através de uma fila de armazenamento no processador agregando dados com envio assíncrono.
[0039] Vantajosamente, de acordo com personificações do método inventivo, uma melhoria em relação aos ciclos por instrução pode ser alcançada substituindo uma instrução de PCI síncrona por um processo de envio assíncrono confiável de uma instrução de armazenamento de entrada/saída.
[0040] Alternativamente ou adicionalmente de dados a serem transferidos, a instrução de armazenamento de acordo com uma concretização da invenção também pode especificar um ponteiro para uma memória principal que deve ser usada para obter dados, em vez de conter os dados diretamente.
[0041] O nível de ocorrência de hóspedes também pode significar que um único hóspede ou host pode estar sendo executado no sistema de processamento de dados.
[0042] O endereço da compensação da função de entrada/saída em si pode ser endereço virtual, físico e lógico. Endereços virtuais e lógicos geralmente são traduzidos através de uma unidade de gerenciamento de memória (MMU) em um endereço físico e o endereço físico permite identificar qual função e deslocamento significa.
[0043] O endereço físico neste contexto significa "endereço mais baixo na hierarquia de tradução de endereço acessível dentro de um sistema de hóspedes/operacionais".
[0044] De acordo com uma concretização favorável, o método pode incluir ainda: (i) o sistema operacional que emite a instrução de armazenamento de entrada/saída; (ii) dependendo da duração dos dados: se um comprimento dos dados exceder oito bytes, o firmware do sistema emitindo repetidamente uma mensagem do sistema para enviar um pacote de dados para o buffer de agregação até que todos os dados de um bloco de armazenamento tenham sido encaminhados para o buffer de agregação, enquanto o firmware do sistema aguarda até que os dados sejam enviados pela mensagem do sistema; outra forma o firmware do sistema emitindo uma mensagem do sistema para enviar os dados para o buffer de agregação; ainda independente do comprimento dos dados, (iii) o firmware do sistema emitindo uma mensagem do sistema para o buffer de agregação para encaminhar os dados assincronamente como uma única mensagem de ninho para o controlador de barra de entrada/saída, enquanto aguarda o buffer de agregação para enviar uma mensagem de conclusão; (iv) o buffer de agregação injetando a mensagem do ninho no ninho do sistema, no qual o buffer de agregação está livre para reutilização logo após a operação de envio, sinalizando de volta para o firmware do sistema; em seguida, o buffer de agregação enviando uma mensagem gratuita para reutilização; v O ninho do sistema encaminhando a mensagem para o local alvo; (vi) o controlador de barramento de entrada/saída recebendo a mensagem e encaminhando dados em um quadro de dados para o barramento de entrada/saída; (vii) o controlador de barramento de entrada/saída enviando uma mensagem de conclusão para o ninho do sistema; (viii) o ninho do sistema encaminhando a mensagem de conclusão para o buffer de agregação originário; (ix) o buffer de agregação encaminhando a conclusão para a interface assíncrona do ninho de núcleo; (x) a interface de ninho de núcleo assíncrono sinalizando a conclusão da operação para o firmware do sistema; e (xi) a sinalização do firmware do sistema defeitos assincronamente no sistema operacional em caso de erro.
[0045] Apenas o passo (ii) depende do comprimento dos dados e é diferente para o comprimento dos dados superiores a oito bytes do comprimento dos dados não superiores a oito bytes.
[0046] De acordo com a concretização do método inventivo, os dados são transmitidos em fatias para o buffer de agregação até que todos os dados de um bloco de armazenamento sejam encaminhados para o buffer de agregação, no qual o firmware do sistema está esperando até que os dados sejam enviados pela interface de ninho central assíncrona.
[0047] Assim, se os dados forem inferiores a oito bytes, o processo de enchimento do buffer de agregação em fatias com pacotes de dados pode ser ignorado e o processo de transmissão dos dados para o dispositivo externo pode ser concluído em uma única etapa.
[0048] De acordo com uma concretização favorável do método inventivo, os dados podem ser transferidos pela instrução de armazenamento de entrada/saída através de um mecanismo de transmissão assíncrona com uma mensagem de conclusão antecipada em vários pacotes de dados para o buffer de agregação, se o comprimento dos dados exceder oito bytes. O mecanismo de transmissão assíncrono é favorável porque o dispositivo de envio é livre para reutilização em um estado anterior.
[0049] De acordo com uma concretização favorável do método inventivo, o firmware do sistema pode usar um código de driver de entrada/saída assíncrona para lidar com a instrução de armazenamento de entrada/saída. Assim, um mecanismo de transmissão assíncrono pode ser usado para transferir dados da unidade de processamento de dados para o dispositivo externo.
[0050] De acordo com uma concretização favorável do método inventivo, o núcleo pode usar um código de configuração assíncrono para lidar com requisitos de memória para status informações do código do driver de entrada/saída assíncrono. Este código de configuração assíncrona pode facilitar ainda mais o mecanismo de transmissão assíncrona através do buffer de agregação para o ninho do sistema e o controlador de barramento de entrada/saída.
[0051] De acordo com uma concretização favorável do método inventivo, a interface assíncrona do ninho de núcleo pode usar um componente de encaminhamento assíncrono de interface de ninho de núcleo para encaminhar os dados com conclusão local. Assim, um modo de transmissão assíncrona favorável para o envio dos dados em pacotes de dados para o buffer de agregação pode ser suportado.
[0052] De acordo com uma concretização favorável do método inventivo, o buffer de agregação pode usar uma lógica de conclusão antecipada para fornecer uma mensagem gratuita para reutilização após o envio de uma solicitação. Isso permite uma continuação antecipada do processo de transmissão dos dados através do buffer de agregação para o ninho do sistema e o controlador de barramento de entrada/saída.
[0053] De acordo com uma concretização favorável do método inventivo, um buffer de status de entrada/saída pode coletar estados retornados do ninho do sistema e/ou do controlador de barramento de entrada/saída, em particular uma mensagem de conclusão do ninho do sistema. Este buffer de status de entrada/saída coleta os estados retornados agindo como um buffer de mensagem de sistema assíncrono, suportando o processo de transmissão assíncrono.
[0054] De acordo com uma concretização favorável do método inventivo, uma mensagem de sistema pode ser composta por um de - um endereço de destino físico hierárquico, - fornecendo um segmento SMT ou um identificador de buffer agregado, - um comprimento de dados, - um endereço de barramento de entrada/saída, ou - um número de sequência para um algoritmo de recuperação. Assim, pode ser garantida uma passagem vantajosa de informações relevantes através do sistema de processamento de dados.
[0055] Além disso, um produto favorável do programa de computador é proposto para lidar com uma instrução de armazenamento de entrada/saída para pelo menos um dispositivo externo de um sistema de processamento de dados, o sistema de processamento de dados que compreende um sistema ninho comunicativamente acoplado a pelo menos um barramento de entrada/saída por um controlador de barra de entrada/saída. O sistema de processamento de dados compreende ainda pelo menos uma unidade de processamento de dados composta por um núcleo, um firmware de sistema e uma interface de ninho de núcleo assíncrono. A unidade de processamento de dados é acoplada comunicativamente ao ninho do sistema através de um buffer de agregação. O dispositivo externo é acoplado comunicativamente ao barramento de entrada/saída.
[0056] O produto do programa de computador compreende um meio de armazenamento legível de computador com instruções de programa incorporadas, as instruções do programa executáveis pelo sistema de computador para fazer com que o sistema de computador execute um método que compreende: (i) um sistema operacional em execução no sistema de processamento de dados emitindo a instrução de armazenamento de entrada/saída especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para os dados a serem transferidos, e um comprimento dos dados; (ii) a unidade de processamento de dados que está sendo configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída; (iii) a unidade de processamento de dados que está sendo configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o convidado executando no sistema de processamento de dados; (iv) a unidade de processamento de dados que está sendo configurada para completar a instrução do armazenamento de entrada/saída antes que uma execução da instrução do armazenamento de entrada/saída no ninho do sistema seja concluída; e (v) o firmware do sistema que está sendo configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída for detectado pela unidade de processamento de dados, transmitindo os dados da execução assíncrona falha.
[0057] Além disso, é proposto um sistema de processamento de dados para execução de um programa de processamento de dados, compreendendo instruções de programa legível por computador para executar o método descrito acima.
BREVE DESCRIÇÃO DOS DESENHOS
[0058] A presente invenção juntamente com os objetos e vantagens acima mencionados pode ser mais bem compreendida a partir da descrição detalhada a seguir das personificações, mas não restrita às personificações.
[0059] A Figura 1 retrata um diagrama de bloco de um sistema de processamento de dados para lidar com uma instrução de armazenamento de entrada/saída para um dispositivo externo de acordo com uma concretização da invenção.
[0060] A Figura 2 retrata um gráfico de sequência de mensagens de um método para lidar com uma instrução de armazenamento de entrada/saída para um dispositivo externo de acordo com uma concretização da invenção.
[0061] A Figura 3 retrata um fluxograma para lidar com uma instrução de armazenamento de entrada/saída em um dispositivo externo de acordo com uma concretização da invenção.
[0062] A Figura 4 retrata um exemplo de concretização de um sistema de processamento de dados para a execução de um método de acordo com a invenção.
DESCRIÇÃO DETALHADA
[0063] Nos desenhos, elementos parecidos são referidos com numerais de referência iguais. Os desenhos são meramente representações esquemáticas, não destinadas a retratar parâmetros específicos da invenção. Além disso, os desenhos destinam-se a retratar apenas personificações típicas da invenção e, portanto, não devem ser considerados como limitantes ao escopo da invenção.
[0064] As personificações ilustrativas descritas aqui fornecem um sistema de processamento de dados e um método para lidar com uma instrução de armazenamento de entrada/saída, compreendendo um ninho de sistema acoplado comunicativamente a pelo menos um barramento de entrada/saída por um controlador de barra de entrada/saída. O sistema de processamento de dados compreende ainda pelo menos uma unidade de processamento de dados composta por um núcleo, um firmware de sistema e uma interface de ninho de núcleo assíncrono. A unidade de processamento de dados é acoplada comunicativamente ao ninho do sistema através de um buffer de agregação. O ninho do sistema é configurado para carregar assincronamente e/ou armazenar dados para pelo menos um dispositivo externo que é acoplado comunicativamente ao barramento de entrada/saída.
[0065] As personificações ilustrativas podem ser usadas para o método que compreende: (i) um sistema operacional em execução no sistema de processamento de dados emite a instrução de armazenamento de entrada/saída especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados está configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída; (iii) a unidade de processamento de dados está configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados; (iv)
a unidade de processamento de dados está configurada para completar a instrução do armazenamento de entrada/saída antes que uma execução da instrução do armazenamento de entrada/saída no ninho do sistema seja concluída; e (v) o firmware do sistema é configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída for detectado pela unidade de processamento de dados, transmitindo os dados da execução assíncrona falha.
[0066] Alternativamente ou adicionalmente de dados a serem transferidos, a instrução de armazenamento de acordo com uma concretização da invenção também pode especificar um ponteiro para a memória principal que deve ser usado para obter dados, em vez de conter os dados diretamente.
[0067] O nível de ocorrência de hóspedes também pode significar que um único hóspede ou host pode estar sendo executado no sistema de processamento de dados.
[0068] O endereço da compensação da função de entrada/saída em si pode ser endereço virtual, físico e lógico. Endereços virtuais e lógicos geralmente são traduzidos através de uma unidade de gerenciamento de memória (MMU) em um endereço físico e o endereço físico permite identificar qual função e deslocamento significa.
[0069] O endereço físico neste contexto significa "endereço mais baixo na hierarquia de tradução de endereço acessível dentro de um sistema de hóspedes/operacionais".
[0070] A Figura 1 retrata um diagrama de bloco de um sistema de processamento de dados 210 para lidar com uma instrução de armazenamento de entrada/saída 30 para pelo menos um dispositivo externo 214 de acordo com uma concretização da invenção. O sistema de processamento de dados 210 compreende um sistema ninho 18 acoplado comunicativamente a um barramento de entrada/saída 22 por um controlador de barramento de entrada/saída 20, uma unidade de processamento de dados 216 composta por um núcleo 12, um firmware de sistema 10 e uma interface de ninho de núcleo assíncrona 14.
[0071] A unidade de processamento de dados 216 é acoplada comunicativamente ao sistema ninho 18 através de um buffer de agregação 16. O sistema ninho 18 é configurado para carregar assincronamente de e/ou armazenar dados para o dispositivo externo 214 que é acoplado comunicativamente ao barramento de entrada/saída 22 através de uma interface de controlador de barra de entrada/saída buffer 28 como parte do sistema ninho 18 e do controlador de barra de entrada/saída 28.
[0072] O buffer de agregação 16 é acoplado comunicativamente à interface assíncrona ninho de núcleo 14. O firmware do sistema 10 compreende um código de driver de entrada/saída assíncrono 32 para lidar com a instrução de armazenamento de entrada/saída 30. O núcleo 12 compreende um código de configuração assíncrono 34 para lidar com requisitos de memória para informações de status do código de driver de entrada/saída assíncrono 32. A interface de ninho de núcleo assíncrono 14 compreende um componente de encaminhamento de interface de ninho de núcleo assíncrono 36 para encaminhamento dos dados com conclusão local. O buffer de agregação 16 compreende uma lógica de conclusão antecipada 26 para fornecer uma mensagem gratuita para reutilização após o envio de uma solicitação. O buffer de agregação 16 é acoplado à interface assíncrona ninho de núcleo 14 através de um barramento assíncrona 38. Um buffer de status de entrada/saída 24 é composto, coletando estados retornados do sistema ninho 18 e/ou do controlador de barramento de entrada/saída 20, em particular uma mensagem de conclusão do sistema ninho 18. O buffer de status de entrada/saída 24 está integrado diretamente na interface ninho de núcleo assíncrona 14.
[0073] De acordo com uma concretização do método inventivo, um sistema operacional em execução no sistema de processamento de dados 210 emite a instrução de armazenamento de entrada/saída 30 especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para dados a serem transferidos e um comprimento dos dados. A unidade de processamento de dados 216 está configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída 30. A unidade de processamento de dados 216 é configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados 210. A unidade de processamento de dados 216 está configurada para completar a instrução de armazenamento de entrada/saída 30 antes que uma execução da instrução de armazenamento de entrada/saída 30 no sistema ninho 18 seja concluída. O firmware do sistema 10 é configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída 30 um erro for detectado pela unidade de processamento de dados 216, transmitindo os dados da execução assíncrona falha.
[0074] A instrução de armazenamento de entrada/saída 30 está localizada no sistema de processamento de dados 210 na lateral da interface do usuário 40 através do limite de arquitetura que separa o hardware/firmware do sistema 50 do lado do usuário 40.
[0075] Assim, os dados são transferidos pela instrução de armazenamento de entrada/saída 30 através de um mecanismo de transmissão assíncrona com uma mensagem de conclusão antecipada em vários pacotes de dados para o buffer de agregação 16, se o comprimento dos dados de origem exceder oito bytes, caso outro os dados sejam transferidos em um pacote de dados.
[0076] Uma mensagem de sistema de acordo com uma concretização do sistema inventivo de processamento de dados compreende um de um endereço de destino físico hierárquico, fornecendo um segmento SMT ou um identificador de buffer agregado, um comprimento de dados, um endereço de barramento de entrada/saída ou um número de sequência para um algoritmo de recuperação.
[0077] A Figura 2 retrata um quadro de sequência de mensagens do método para lidar com uma instrução de armazenamento de entrada/saída 30 para um dispositivo externo 214 de acordo com uma concretização da invenção.
[0078] Como mostrado na Figura 2 o método começa com o sistema operacional emitindo a instrução de armazenamento de entrada/saída 30. Em seguida, como é indicado pelas etapas S100 e S104, o firmware do sistema 10 emite repetidamente, se um comprimento dos dados exceder oito bytes, uma mensagem do sistema para enviar um pacote de dados para o buffer de agregação 16 até que todos os dados de um bloco de armazenamento tenham sido encaminhados para o buffer de agregação 16, enquanto a empresa do sistema 10 está esperando até que os dados sejam enviados pelo sistema. Nas etapas SI 02 e SI 06 uma mensagem de conclusão local é enviada de volta para o firmware do sistema 10.
[0079] Em seguida, na etapa SI 08, o firmware do sistema 10 emite uma mensagem de sistema para o buffer de agregação 16 para encaminhar os dados assincronamente como uma única mensagem de ninho para o controlador de barra de entrada/saída 20, enquanto espera o buffer de agregação 16 para enviar uma mensagem de conclusão.
[0080] Em seguida, na etapa S110, o buffer de agregação 16 injeta a mensagem do ninho no ninho do sistema 18, onde o buffer de agregação 16 é livre para reutilização logo após a operação de envio, sinalizando de volta para o firmware do sistema 10. Em seguida, o buffer de agregação 16 envia uma mensagem gratuita para reutilização.
[0081] Na etapa S112, o sistema ninho 18 encaminha a mensagem para o local alvo, seguido pela etapa S114, o controlador de barramento de entrada/saída 20 recebendo a mensagem e encaminhando dados em um quadro de dados para o barramento de entrada/saída, seguido pelo controlador de barramento de entrada/saída 20 enviando uma mensagem de conclusão para o sistema ninho 18 na etapa S116.
[0082] Em seguida, na etapa S118, o sistema ninho 18 encaminha a mensagem de conclusão para o buffer de agregação originário 16, seguido pelo buffer de agregação 16 encaminhando a conclusão para a interface ninho de núcleo assíncrona 14 na etapa S120. Em seguida, na etapa S122, a interface ninho de núcleo assíncrona 14 sinaliza a conclusão da operação para o firmware do sistema 10.
[0083] No caso de um erro ocorrido durante a transferência de dados, o firmware do sistema 10 sinaliza defeitos assincronamente para o sistema operacional.
[0084] No caso de transferir os dados são inferiores a oito bytes, o preenchimento repetido do buffer de agregação 16 é ignorado.
[0085] A Figura 3 retrata um fluxograma para lidar com uma instrução de armazenamento de entrada/saída 30 para um dispositivo externo 214 de acordo com uma concretização da invenção.
[0086] O firmware do sistema da unidade de processamento de dados começa na etapa S200. Na etapa S202, o firmware do sistema recebe uma instrução de bloqueio de armazenamento de entrada/saída.
[0087] Em seguida, na etapa S204 é verificado se os mais de 8 bytes devem ser transferidos. Se este for o caso, a interface ninho de núcleo preenche o buffer de agregação com uma mensagem de até 16 bytes na etapa S206. O firmware do sistema está esperando, passo S208, até que uma mensagem de conclusão local seja enviada na etapa S210, retornando à etapa S204. Se restar menos de 8 bytes na verificação da etapa S204, o fluxo continua na etapa S212 com a interface ninho de núcleo enviando uma mensagem de entrada/saída assíncrona, seguida de espera na etapa S214 para uma resposta buffer na etapa S216. Em seguida, na etapa S218 uma instrução de bloco de armazenamento de acabamento é executada e o fluxo termina na etapa S220 com um final no firmware do sistema.
[0088] Na etapa S228, a lógica assíncrona da interface ninho de núcleo inicia um loop de processo de saída, seguido de receber uma mensagem de conclusão de buffer de agregação na etapa S222 e uma mensagem de dados para o buffer de agregação na etapa S224, seguida por uma mensagem de conclusão de envio de volta ao firmware do sistema na etapa S226. Na etapa S230, uma mensagem de envio assíncrona de entrada/saída é recebida seguida por uma mensagem de envio de entrada/saída para o buffer de agregação.
[0089] Na etapa S238, a lógica do buffer de agregação inicia um loop de processo de saída seguido de um dado de recebimento na etapa S234 e dados agregadores no buffer de agregação na etapa S236. O buffer de agregação também está recebendo uma mensagem de envio de entrada/saída na etapa S240,
seguido pelo encaminhamento de dados do buffer de agregação com uma mensagem de envio de entrada/saída na etapa S242. Em seguida, na etapa S244 uma mensagem de resposta do buffer de agregação é enviada através da interface ninho de núcleo para o firmware do sistema.
[0090] Referindo-se agora à Figura 4, um esquema de um exemplo de um sistema de processamento de dados 210 é mostrado. O sistema de processamento de dados 210 é apenas um exemplo de um sistema adequado de processamento de dados e não se destina a sugerir qualquer limitação quanto ao escopo de uso ou funcionalidade das personificações da invenção aqui descrita. Independentemente disso, o sistema de processamento de dados 210 é capaz de ser implementado e/ou executar qualquer uma das funcionalidades aqui estabelecidas acima.
[0091] No sistema de processamento de dados 210 há um sistema/servidor de computador 212, que está operacional com vários outros ambientes ou configurações de sistema de computação de uso geral ou de propósito especial. Exemplos de sistemas de computação, ambientes e/ou configurações bem conhecidos que podem ser adequados para uso com o sistema/servidor 212 do computador incluem, mas não se limitam a sistemas de computadores pessoais, sistemas de computador de servidor, clientes finos, clientes grossos, dispositivos portáteis ou laptops, sistemas multiprocessadores, sistemas baseados em microprocessadores, caixas superiores, eletrônicos de consumo programáveis, PCs de rede, sistemas de minicomputador, sistemas de computador de mainframe e ambientes distribuídos de computação em nuvem que incluem qualquer um dos sistemas ou dispositivos acima, e afins.
[0092] O sistema/servidor de computador 212 pode ser descrito no contexto geral das instruções executáveis do sistema de computador, como módulos de programa, sendo executados por um sistema de computador. Geralmente, os módulos do programa podem incluir rotinas, programas, objetos, componentes, lógica, estruturas de dados e assim por diante que executam tarefas específicas ou implementam determinados tipos de dados abstratos. O sistema/servidor de computador 212 pode ser praticado em ambientes distribuídos de computação em nuvem, onde as tarefas são executadas por dispositivos de processamento remoto que são vinculados através de uma rede de comunicações. Em um ambiente de computação em nuvem distribuída, os módulos do programa podem estar localizados em mídia de armazenamento de sistema de computador local e remota, incluindo dispositivos de armazenamento de memória.
[0093] Como mostrado na Fig. 4, o sistema/servidor de computador 212 no sistema de processamento de dados 210 é mostrado na forma de um dispositivo de computação de uso geral. Os componentes do sistema/servidor de computador 212 podem incluir, mas não se limitam a, um ou mais processadores ou unidades de processamento 216, uma memória de sistema 228 e um barramento 218 que acopla vários componentes do sistema, incluindo memória do sistema 228 ao processador 216.
[0094] O barramento 218 representa um ou mais de qualquer um dos vários tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta gráfica acelerada e um processador ou barramento local usando qualquer uma das várias arquiteturas de barramento. A título de exemplo, e não limitação, tais arquiteturas incluem barramento de Arquitetura Padrão Industrial (ISA), barramento de Arquitetura de Canal Micro (MCA), barramento de ISA Aprimorado (EISA), barramento local de Associação de Canal Padrão Eletrônico(VESA) e barramento de Interconexão de Componente Periférico (PCI).
[0095] O sistema/servidor de computador 212 normalmente inclui uma variedade de mídia legível do sistema de computador. Essas mídias podem ser qualquer mídia disponível que seja acessível pelo sistema/servidor 212 do computador, e inclui mídia volátil e não volátil, mídia removível e não removível.
[0096] A memória do sistema 228 pode incluir mídia legível do sistema do computador na forma de memória volátil, como memória de acesso aleatório (RAM) 230 e/ou memória de cache
232. O sistema/servidor do computador 212 pode incluir ainda outras mídias de armazenamento do sistema de computador removíveis/não removíveis, voláteis/não voláteis. Apenas por exemplo, o sistema de armazenamento 234 pode ser fornecido para leitura e escrita para uma mídia magnética não removível e não volátil (não mostrada e tipicamente chamada de "disco rígido"). Embora não seja mostrado, uma unidade de disco magnético para leitura e escrita para um disco magnético removível e não volátil (por exemplo, um "disquete"), e uma unidade de disco óptico para leitura ou gravação para um disco óptico removível e não volátil, como um CD-ROM, DVD-ROM ou outras mídias ópticas podem ser fornecidas. Nesses casos, cada um pode ser conectado ao barramento 218 por uma ou mais interfaces de mídia de dados. Como será ainda mais retratado e descrito abaixo, a memória 228 pode incluir pelo menos um produto do programa tendo um conjunto (por exemplo, pelo menos um) de módulos de programa que são configurados para realizar as funções de personificações da invenção.
[0097] O programa/utilitário 240, com um conjunto (pelo menos um) dos módulos de programa 242, pode ser armazenado na memória 228 por exemplo, e não limitação, bem como um sistema operacional, um ou mais programas de aplicação, outros módulos de programa e dados do programa. Cada um dos sistemas operacionais, um ou mais programas de aplicação, outros módulos de programa e dados do programa ou alguma combinação dele, podem incluir a implementação de um ambiente de rede. Os módulos do programa 242 geralmente realizam as funções e/ou metodologias de personificações da invenção conforme descrito aqui descrito.
[0098] O sistema/servidor de computador 212 também pode se comunicar com um ou mais dispositivos externos 214, como um teclado, um dispositivo apontando, um display 224, etc.; um ou mais dispositivos que permitem ao usuário interagir com o sistema/servidor de computador 212; e/ou quaisquer dispositivos (por exemplo, cartão de rede, modem, etc.) que permitem que o sistema de computador/servidor 212 se comunique com um ou mais outros dispositivos de computação. Essa comunicação pode ocorrer através das interfaces De Entrada/Saída (E/S) 222. Ainda assim, o sistema/servidor de computador 212 pode se comunicar com uma ou mais redes, como uma rede local de área (LAN), uma rede de área ampla geral (WAN) e/ou uma rede pública (por exemplo, a Internet) via adaptador de rede 220. Como descrito, o adaptador de rede 220 se comunica com os outros componentes do sistema/servidor de computador 212 via barramento 218. Deve-se entender que, embora não mostrados, outros componentes de hardware e/ou software poderiam ser usados em conjunto com o sistema/servidor de computador 212. Exemplos, incluem, mas não se limitam a: microcódigo, drivers de dispositivos, unidades de processamento redundantes, matrizes de unidade de disco externo, sistemas RAID, unidades de fita e sistemas de armazenamento de arquivamento de dados, etc.
[0099] A invenção atual pode ser um sistema, um método e/ou um produto de programa de computador. O produto do programa de computador pode incluir um meio de armazenamento legível (ou mídia) do computador com instruções de programa legíveis por computador para fazer com que um processador realize aspectos da presente invenção.
[00100] O meio de armazenamento legível do computador pode ser um dispositivo tangível que pode reter e armazenar instruções para uso por um dispositivo de execução de instruções. O meio de armazenamento legível do computador pode ser, por exemplo, mas não se limita a um dispositivo de armazenamento eletrônico, um dispositivo de armazenamento magnético, um dispositivo de armazenamento óptico, um dispositivo de armazenamento eletromagnético, um dispositivo de armazenamento de semicondutores ou qualquer combinação adequada do anterior. Uma lista não exaustiva de exemplos mais específicos do meio de armazenamento legível do computador inclui o seguinte: um disquete portátil do computador, um disco rígido, uma memória de acesso aleatório (RAM), uma memória somente de leitura (ROM), uma memória programável somente de leitura (memória EPROM ou Flash), uma memória de acesso aleatória estática (SRAM), uma memória compacta portátil somente de leitura de disco (CD-ROM), um disco versátil digital (DVD) , um cartão de memória, um disquete, um dispositivo mecanicamente codificado, como cartões de perfuração ou estruturas elevadas em uma ranhura com instruções gravadas nela, e qualquer combinação adequada do anterior. Um meio de armazenamento legível para computador, como aqui usado, não deve ser interpretado como sendo sinais transitórios em si, como ondas de rádio ou outras ondas eletromagnéticas livremente propagadas, ondas eletromagnéticas propagando através de um guia de ondas ou outras mídias de transmissão (por exemplo, pulsos de luz passando por um cabo de fibra óptica), ou sinais elétricos transmitidos através de um fio.
[00101] As instruções do programa legível para computadores descritas aqui podem ser baixadas para respectivos dispositivos de computação/processamento de um meio de armazenamento legível para um computador ou dispositivo de armazenamento externo através de uma rede, por exemplo, a
Internet, uma rede local, uma rede de ampla área e/ou uma rede sem fio. A rede pode incluir cabos de transmissão de cobre, fibras de transmissão óptica, transmissão sem fio, roteadores, firewalls, comutadores, computadores gateway e/ou servidores de borda. Uma placa adaptador de rede ou interface de rede em cada dispositivo de computação/processamento recebe instruções de programa legível de computador da rede e encaminha as instruções do programa legível para armazenamento em um meio de armazenamento legível no computador dentro do respectivo dispositivo de computação/processamento.
[00102] As instruções do programa legível para o computador para a realização das operações da presente invenção podem ser instruções de montadora, instruções de instrução- set-architecture (ISA), instruções de máquina, instruções de máquina, microcódigo, instruções de firmware, dados de definição de estado ou código-fonte ou código de objeto escrito em qualquer combinação de uma ou mais linguagens de programação, incluindo uma linguagem de programação orientada a objetos, como Smalltalk , C++ ou similares, e linguagens de programação processual convencionais, como a linguagem de programação "C" ou linguagens de programação similares. As instruções do programa legível pelo computador podem ser executadas inteiramente no computador do usuário, em parte no computador do usuário, como um pacote de software autônomo, em parte no computador do usuário e em parte em um computador remoto ou inteiramente no computador ou servidor remoto. Neste último cenário, o computador remoto pode ser conectado ao computador do usuário através de qualquer tipo de rede, incluindo uma rede local (LAN) ou uma rede de área ampla (WAN), ou a conexão pode ser feita a um computador externo (por exemplo, através da Internet usando um Provedor de Serviços de Internet). Em algumas personificações, circuitos eletrônicos, incluindo, por exemplo, circuitos lógicos programáveis, matrizes de portas programáveis em campo (FPGA) ou matrizes lógicas programáveis (PLA) podem executar as instruções do programa legível pelo computador utilizando informações estaduais do programa legível para personalizar os circuitos eletrônicos, a fim de executar aspectos da invenção atual.
[00103] Aspectos da presente invenção são descritos aqui com referência a ilustrações de fluxogramas e/ou diagramas de blocos de métodos, aparelhos (sistemas) e produtos de programas de computador de acordo com personificações da invenção. Será entendido que cada bloco das ilustrações do fluxograma e/ou diagramas de blocos, e combinações de blocos nas ilustrações do fluxograma e/ou diagramas de bloco, podem ser implementados por instruções de programa legível por computador.
[00104] Essas instruções de programa legíveis pelo computador podem ser fornecidas a um processador de um computador de uso geral, computador de uso especial ou outro aparelho de processamento de dados programável para produzir uma máquina, de modo que as instruções, que executam através do processador do computador ou outro aparelho de processamento de dados programável, criam meios para implementar as funções/atos especificados no fluxograma e/ou bloquear o bloco ou blocos de diagrama. Essas instruções de programa legível pelo computador também podem ser armazenadas em um meio de armazenamento legível para computador que pode direcionar um computador, um aparelho de processamento de dados programável e/ou outros dispositivos a funcionar de uma maneira particular, de modo que o meio de armazenamento legível do computador com instruções armazenadas nela compreende um artigo de fabricação, incluindo instruções que implementam aspectos da função/ato especificados no fluxograma e/ou blocos de diagrama de blocos.
[00105] As instruções do programa legível para computador também podem ser carregadas em um computador, outro aparelho de processamento de dados programável ou outro dispositivo para fazer com que uma série de etapas operacionais sejam executadas no computador, outro aparelho programável ou outro dispositivo para produzir um processo implementado por computador, de modo que as instruções que executam no computador, outro aparelho programável ou outro dispositivo implementem as funções/atos especificados no fluxograma e/ou bloqueiem o diagrama ou blocos.
[00106] Os fluxogramas e blocos de diagramas nas Figuras ilustram a arquitetura, funcionalidade e operação de possíveis implementações de sistemas, métodos e produtos de programas de computador de acordo com várias personificações da presente invenção. A este respeito, cada bloco no fluxograma ou diagramas de bloco pode representar um módulo, segmento ou porção de instruções, que compreende uma ou mais instruções executáveis para implementar a função lógica especificada(s).
Em algumas implementações alternativas, as funções observadas no bloco podem ocorrer fora da ordem observada nos números. Por exemplo, dois blocos mostrados em sucessão podem, de fato, ser executados substancialmente simultaneamente, ou os blocos podem às vezes ser executados na ordem inversa, dependendo da funcionalidade envolvida. Também será observado que cada bloco dos diagramas de bloco e/ou ilustração do fluxograma, e combinações de blocos nos diagramas de bloco e/ou ilustração de fluxograma, podem ser implementados por sistemas baseados em hardware de uso especial que executam as funções ou atos especificados ou realizam combinações de instruções de hardware e computador de propósito especial.
[00107] As descrições das várias personificações da presente invenção foram apresentadas para fins de ilustração, mas não se destinam a ser exaustivas ou limitadas às personificações divulgadas. Muitas modificações e variações serão aparentes para as de habilidade comum na arte sem se afastar do escopo e espírito das personificações descritas. A terminologia aqui utilizada foi escolhida para explicar melhor os princípios das personificações, a aplicação prática ou o aprimoramento técnico sobre as tecnologias encontradas no mercado, ou para permitir que outras de habilidade comum na arte entendam as personificações aqui divulgadas.
NUMERAIS DE REFERÊNCIA 10 sistema FW 12 núcleo 14 IF de ninho de núcleo assíncrono
16 buffer de agregação 18 ninho de sistema 20 Controlador de barramento de E/S 22 Barramento de E/S 24 buffer de status de E/S 26 lógica de conclusão antecipada 28 IF de controlador de barramento buffer-E/S 30 instruções de armazenamento de E/S 32 código de driver de E/S assíncrono 24 Código de configuração de E/S 36 encaminhamento assíncrono 38 Barramento assíncrono 40 IF de usuário 42 44 46 48 50 sistema HW/FW 210 sistemas de processamento de dados 212 sistema/servidor de computador 214 dispositivos externos 216 CPU / unidade de processamento de dados 218 Barramento de E/S 220 Adaptador de rede 222 Interfaces de E/S 224 display 228 memória
230 RAM 232 cache 234 sistema de armazenamento 240 programa/utilitário 242 módulos de programa

Claims (22)

REIVINDICAÇÕES
1. Sistema de processamento de dados (210) para manipular uma instrução de armazenamento de entrada/saída (30), caracterizado pelo fato de que compreende um ninho de sistema (18) acoplado comunicativamente a pelo menos um barramento de entrada/saída (22) por um controlador de barramento de entrada/saída (20), compreendendo ainda pelo menos uma unidade de processamento de dados (216) compreendendo um núcleo (12), um firmware de sistema (10) e uma interface assíncrona de ninho de núcleo (14), em que a unidade de processamento de dados (216) é acoplada comunicativamente ao ninho do sistema (18) através de um buffer de agregação (16), em que o ninho do sistema (18) é configurado para carregar assincronamente e/ou armazenar dados para pelo menos um dispositivo externo (214) que é acoplado comunicativamente ao barramento de entrada/saída (22), e em que (i) um sistema operacional em execução no sistema de processamento de dados (210) emitindo a instrução de armazenamento de entrada/saída (30) especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para os dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados (216) sendo configurada para identificar a função entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída (30); (iii) a unidade de processamento de dados (216) sendo configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados (210); (iv) a unidade de processamento de dados (216) sendo configurada para concluir a instrução de armazenamento de entrada/saída (30) antes de uma execução da instrução de armazenamento de entrada/saída (30) no ninho do sistema (18) ser concluída; (v) o firmware do sistema (10) sendo configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída (30) for detectado um erro pela unidade de processamento de dados (216), transmitindo os dados da execução assíncrona falha.
2. Sistema de processamento de dados, de acordo com a reivindicação 1, caracterizado pelo fato de que o buffer de agregação (16) é acoplado comunicativamente à interface assíncrona do ninho de núcleo (14).
3. Sistema de processamento de dados, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que os dados são transferidos pela instrução de armazenamento de entrada/saída (30) através de um mecanismo de transmissão assíncrona com uma mensagem de conclusão antecipada em vários pacotes de dados para o buffer de agregação (16), se o comprimento dos dados de origem exceder oito bytes, se não os dados são transferidos em um pacote de dados.
4. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que o firmware do sistema (10) compreende um código de driver de entrada/saída assíncrono (32) para lidar com a instrução de armazenamento de entrada/saída (30).
5. Sistema de processamento de dados, de acordo com a reivindicação 4, caracterizado pelo fato de que o núcleo (12) compreende um código de configuração assíncrono (34) para manipular requisitos de memória para informações de status do código de driver de entrada/saída assíncrono (32).
6. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que a interface assíncrona ninho de núcleo (14) compreendendo um componente de encaminhamento assíncrono de interface de ninho de núcleo (36) para encaminhamento dos dados com conclusão local.
7. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que o buffer de agregação (16) compreende uma lógica de conclusão antecipada (26) para a entrega de uma mensagem gratuita para reutilização após o envio de uma solicitação.
8. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 7, caracterizado pelo fato de que o buffer de agregação (16) sendo acoplado à interface assíncrona ninho de núcleo (14) através de um barramento assíncrona (38).
9. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 8, caracterizado pelo fato de que compreende ainda um buffer de status de entrada/saída (24) coletando estados retornados do ninho do sistema (18) e/ou do controlador de barramento de entrada/saída (20), em particular uma mensagem de conclusão do ninho do sistema (18).
10. Sistema de processamento de dados, de acordo com a reivindicação 9, caracterizado pelo fato de que a interface assíncrona ninho de núcleo (14) compreende o buffer de status de entrada/saída (24).
11. Sistema de processamento de dados, de acordo com qualquer uma das reivindicações 1 a 10, caracterizado pelo fato de que uma mensagem do sistema que compreende um de - um endereço de alvo físico hierárquico, - fornecer um segmento SMT ou um identificador de buffer agregado, - um comprimento de dados, - um endereço de barramento de entrada/saída, - um número de sequência para um algoritmo de recuperação.
12. Método para manipular uma instrução de armazenamento de entrada/saída (30) para pelo menos um dispositivo externo (214) de um sistema de processamento de dados (210), o sistema de processamento de dados (210) caracterizado pelo fato de que compreende um ninho de sistema (10) acoplado comunicativamente a pelo menos um barramento de entrada/saída (22) por um controlador de barramento de entrada/saída (14), e ainda compreendendo pelo menos uma unidade de processamento de dados (216) composta por um núcleo (12), um firmware de sistema (10) e uma interface de ninho de núcleo assíncrona (14), em que a unidade de processamento de dados (216) é comunicativamente acoplada ao ninho do sistema (18) através de um buffer de agregação (16), em que o dispositivo externo (214) é acoplado comunicativamente ao barramento de entrada/saída (22), o método compreendendo (i) um sistema operacional em execução no sistema de processamento de dados (210) emitindo a instrução de armazenamento de entrada/saída (30) especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para os dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados (216) sendo configurada para identificar a função entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída (30); (iii) a unidade de processamento de dados (216) sendo configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados (210);
(iv) a unidade de processamento de dados (216) sendo configurada para concluir a instrução de armazenamento de entrada/saída (30) antes de uma execução da instrução do armazenamento de entrada/saída (30) no ninho do sistema (18) ser concluída; (v) o firmware do sistema (10) sendo configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída (30) for detectado um erro pela unidade de processamento de dados (216), transmitindo os dados da execução assíncrona falha.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende ainda (i) o sistema operacional que emite a instrução de armazenamento de entrada/saída (30); (ii) dependendo da duração dos dados: se um comprimento dos dados exceder oito bytes, o firmware do sistema (10) emitir repetidamente uma mensagem do sistema para enviar um pacote de dados para o buffer de agregação (16) até que todos os dados de um bloco de armazenamento tenham sido encaminhados para o buffer de agregação (16), enquanto o firmware do sistema (10) aguarda até que os dados tenham sido enviados pela mensagem do sistema; se não o firmware do sistema (10) emite uma mensagem do sistema para enviar os dados para o buffer de agregação (16); (iii) o firmware do sistema (10) emitindo uma mensagem do sistema para o buffer de agregação (16) para encaminhar os dados assincronamente como uma única mensagem de ninho para o controlador de barramento de entrada/saída (20), enquanto aguarda o buffer de agregação (16) para enviar uma mensagem de conclusão; (iv) o buffer de agregação (16) injetando a mensagem do ninho no ninho do sistema (18), em que o buffer de agregação (16) é livre para reutilização logo após a operação de envio, sinalizando de volta para o firmware do sistema (10); em seguida, o buffer de agregação (16) enviando uma mensagem gratuita para reutilização; (v) o ninho do sistema (18) encaminhando a mensagem para o local alvo; (vi) o controlador de barramento de entrada/saída (20) recebendo a mensagem e encaminhando dados em um quadro de dados para o barramento de entrada/saída; (vii) o controlador de barramento de entrada/saída (20) enviando uma mensagem de conclusão para o ninho do sistema (18); (viii) o ninho do sistema (18) encaminhando a mensagem de conclusão para o buffer de agregação originário (16); (ix) o buffer de agregação (16) encaminhando a conclusão para a interface assíncrona do ninho de núcleo (14); (x) a interface assíncrona do ninho de núcleo (14) sinalizando a conclusão de operação para o firmware do sistema (10); (xi) o firmware do sistema (10) sinalizando defeitos assíncronos para o sistema operacional em caso de erro.
14. Método, de acordo com a reivindicação 12 ou 13, caracterizado pelo fato de que transferindo ainda mais os dados pela instrução de armazenamento de entrada/saída (30) através de um mecanismo de transmissão assíncrona com uma mensagem de conclusão antecipada em vários pacotes de dados para o buffer de agregação (16), se o comprimento dos dados exceder oito bytes.
15. Método, de acordo com qualquer uma das reivindicações 12 a 14, caracterizado pelo fato de que além do firmware do sistema (10) utilizando um código de driver de entrada/saída assíncrono (32) para lidar com a instrução de armazenamento de entrada/saída (30).
16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que o núcleo (12) adicionalmente utiliza um código de configuração assíncrono (34) para lidar com requisitos de memória para informações de status do código de driver de entrada/saída assíncrono (32).
17. Método, de acordo com qualquer uma das reivindicações 12 a 16, caracterizado pelo fato de que promoverá a interface assíncrona do ninho de núcleo (14) utilizando um componente de encaminhamento de interface de ninho de núcleo assíncrono (36) para encaminhamento dos dados com conclusão local.
18. Método, de acordo com qualquer uma das reivindicações 12 a 17, caracterizado pelo fato de que o buffer de agregação (16) ainda usa uma lógica de conclusão antecipada (26) para entregar uma mensagem gratuita para reutilização após o envio de uma solicitação.
19. Método, de acordo com qualquer uma das reivindicações 12 a 18, caracterizado pelo fato de que um buffer de status de entrada/saída (24) adicionalmente coleta estados retornados do ninho do sistema (18) e/ou do controlador de barramento de entrada/saída (20), em particular uma mensagem de conclusão do ninho do sistema (18).
20. Método, de acordo com qualquer uma das reivindicações 12 a 19, caracterizado pelo fato de que uma mensagem do sistema compreende um de - um endereço de alvo físico hierárquico, - fornecer um segmento SMT ou um identificador de buffer agregado, - um comprimento de dados, - um endereço de barramento de entrada/saída, - um número de sequência para um algoritmo de recuperação.
21. Produto de programa de computador para manipular uma instrução de armazenamento de entrada/saída (30) para pelo menos um dispositivo externo (214) de um sistema de processamento de dados (210), caracterizado pelo fato de que o sistema de processamento de dados (210) compreende um ninho de sistema (10) acoplado comunicativamente a pelo menos um barramento de entrada/saída (22) por um controlador de barramento de entrada/saída (14), e ainda compreendendo pelo menos uma unidade de processamento de dados (216) composta por um núcleo (12), um firmware de sistema (10) e uma interface de ninho de núcleo assíncrona (14), em que a unidade de processamento de dados
(216) é comunicativamente acoplada ao ninho do sistema (18) através de um buffer de agregação (16), em que o dispositivo externo (214) é acoplado comunicativamente ao barramento de entrada/saída (22), o produto do programa de computador que compreende um meio de armazenamento legível do computador tendo instruções de programa incorporadas com ele, as instruções do programa executáveis pelo sistema de computador (212) para fazer com que o sistema de computador (212) execute um método compreendendo (i) um sistema operacional em execução no sistema de processamento de dados (210) emitindo a instrução de armazenamento de entrada/saída (30) especificando pelo menos uma função de entrada/saída com um deslocamento através de um endereço, dados a serem transferidos e/ou um ponteiro para os dados a serem transferidos e um comprimento dos dados; (ii) a unidade de processamento de dados (216) configurada para identificar a função de entrada/saída pelo endereço especificado na instrução de armazenamento de entrada/saída (30); (iii) a unidade de processamento de dados (216) sendo configurada para verificar se o acesso à função de entrada/saída é permitido em um espaço de endereço e em um nível de instância de hóspedes, o hóspede executando no sistema de processamento de dados (210); (iv) a unidade de processamento de dados (216) sendo configurada para concluir a instrução de armazenamento de entrada/saída (30) antes de uma execução da instrução de armazenamento de entrada/saída (30) no ninho do sistema (18) ser concluída; (v) o firmware do sistema (10) sendo configurado para notificar o sistema operacional através de uma interrupção, se durante a execução assíncrona da instrução de armazenamento de entrada/saída (30) for detectado um erro pela unidade de processamento de dados (216), transmitir os dados da execução assíncrona falha.
22. Sistema de processamento de dados (210) para execução de um programa de processamento de dados (240) caracterizado pelo fato de que compreende instruções de programa legível por computador para a realização de um método de acordo com qualquer uma das reivindicações 12 a 20.
BR112021015075-7A 2019-01-31 2020-01-14 Manipulação de uma instrução de armazenamento de entrada/saída BR112021015075A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19154733.0 2019-01-31
EP19154733 2019-01-31
PCT/EP2020/050755 WO2020156796A1 (en) 2019-01-31 2020-01-14 Handling an input/output store instruction

Publications (1)

Publication Number Publication Date
BR112021015075A2 true BR112021015075A2 (pt) 2021-09-28

Family

ID=65275982

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021015075-7A BR112021015075A2 (pt) 2019-01-31 2020-01-14 Manipulação de uma instrução de armazenamento de entrada/saída

Country Status (10)

Country Link
US (2) US11163566B2 (pt)
EP (1) EP3918466A1 (pt)
JP (1) JP7461693B2 (pt)
CN (1) CN113366433A (pt)
AU (1) AU2020214661B2 (pt)
BR (1) BR112021015075A2 (pt)
CA (1) CA3127852A1 (pt)
IL (1) IL284334B2 (pt)
TW (1) TWI773959B (pt)
WO (1) WO2020156796A1 (pt)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
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 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN112286466B (zh) * 2020-11-18 2024-05-07 合肥沛睿微电子股份有限公司 电子装置及空间复用方法
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1052278A (en) 1910-11-03 1913-02-04 George I Rockwood Pipe-hanger.
FR2273317B1 (pt) 1974-05-28 1976-10-15 Philips Electrologica
US4947316A (en) 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
JPH03288934A (ja) * 1990-04-05 1991-12-19 Fujitsu Ltd 仮想計算機システムにおけるデータ転送制御方式
JPH04195418A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd 磁気テープ記憶装置
US5317739A (en) * 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
US5548735A (en) * 1993-09-15 1996-08-20 International Business Machines Corporation System and method for asynchronously processing store instructions to I/O space
US5553302A (en) 1993-12-30 1996-09-03 Unisys Corporation Serial I/O channel having independent and asynchronous facilities with sequence recognition, frame recognition, and frame receiving mechanism for receiving control and user defined data
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5548788A (en) 1994-10-27 1996-08-20 Emc Corporation Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
DE19631289A1 (de) 1996-08-02 1998-02-05 Ibm Verfahren zum Testen eines Protokollumsetzers und Protokollumsetzer
US6072781A (en) * 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6496277B1 (en) * 1999-07-23 2002-12-17 Xerox Corporation Data flow control and storage facility for an image reproduction system
US6725348B1 (en) 1999-10-13 2004-04-20 International Business Machines Corporation Data storage device and method for reducing write misses by completing transfer to a dual-port cache before initiating a disk write of the data from the cache
US6490647B1 (en) * 2000-04-04 2002-12-03 International Business Machines Corporation Flushing stale data from a PCI bus system read prefetch buffer
US6578102B1 (en) * 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US7042881B1 (en) 2001-06-29 2006-05-09 Cisco Technology, Inc. Asynchronous transfer mode system and method to verify a connection
US7178019B2 (en) 2003-11-13 2007-02-13 Hewlett-Packard Development Company, L.P. Networked basic input output system read only memory
US7234004B2 (en) 2003-12-19 2007-06-19 International Business Machines Corporation Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US7200626B1 (en) 2004-01-22 2007-04-03 Unisys Corporation System and method for verification of a quiesced database copy
US7079978B2 (en) 2004-05-24 2006-07-18 International Business Machines Corporation Apparatus, system, and method for abbreviated library calibration
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
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
US7827433B1 (en) 2007-05-16 2010-11-02 Altera Corporation Time-multiplexed routing for reducing pipelining registers
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US7991981B2 (en) 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
US7941627B2 (en) 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
JP4623126B2 (ja) 2008-04-14 2011-02-02 株式会社日立製作所 データ処理システム
US8867344B2 (en) * 2008-07-21 2014-10-21 Mediatek Inc. Methods for bus data transmission and systems utilizing the same
US8650335B2 (en) * 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8566480B2 (en) * 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
JP5680466B2 (ja) 2011-03-29 2015-03-04 三菱重工業株式会社 並列処理システム及び並列処理システムの動作方法
US9652230B2 (en) 2013-10-15 2017-05-16 Mill Computing, Inc. Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US20150261535A1 (en) 2014-03-11 2015-09-17 Cavium, Inc. Method and apparatus for low latency exchange of data between a processor and coprocessor
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9588914B2 (en) 2014-04-09 2017-03-07 International Business Machines Corporation Broadcast and unicast communication between non-coherent processors using coherent address operations
US9460019B2 (en) * 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9477481B2 (en) 2014-06-27 2016-10-25 International Business Machines Corporation Accurate tracking of transactional read and write sets with speculation
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
GB2531011A (en) 2014-10-07 2016-04-13 Ibm Initializing I/O Devices
US9542201B2 (en) 2015-02-25 2017-01-10 Quanta Computer, Inc. Network bios management
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9965187B2 (en) * 2016-02-18 2018-05-08 Lawrence Livermore National Security, Llc Near-memory data reorganization engine
US9971545B1 (en) 2016-03-23 2018-05-15 Crossbar, Inc. Non-volatile write and read cache for storage media
US10248509B2 (en) 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
EP3812900B1 (en) 2016-12-31 2023-11-29 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US11748101B2 (en) * 2021-07-13 2023-09-05 Arm Limited Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations

Also Published As

Publication number Publication date
TWI773959B (zh) 2022-08-11
US11762659B2 (en) 2023-09-19
IL284334A (en) 2021-08-31
AU2020214661B2 (en) 2022-09-22
WO2020156796A1 (en) 2020-08-06
US20220004387A1 (en) 2022-01-06
TW202032378A (zh) 2020-09-01
AU2020214661A1 (en) 2021-06-10
CN113366433A (zh) 2021-09-07
JP7461693B2 (ja) 2024-04-04
EP3918466A1 (en) 2021-12-08
IL284334B1 (en) 2023-11-01
JP2022518340A (ja) 2022-03-15
US20200249943A1 (en) 2020-08-06
US11163566B2 (en) 2021-11-02
CA3127852A1 (en) 2020-08-06
IL284334B2 (en) 2024-03-01

Similar Documents

Publication Publication Date Title
BR112021015075A2 (pt) Manipulação de uma instrução de armazenamento de entrada/saída
US9152591B2 (en) Universal PCI express port
US9176799B2 (en) Hop-by-hop error detection in a server system
TWI767175B (zh) 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US9734081B2 (en) Thin provisioning architecture for high seek-time devices
US11593107B2 (en) Handling an input/output store instruction
US10884790B1 (en) Eliding redundant copying for virtual machine migration
US9965350B2 (en) Maintaining cyclic redundancy check context in a synchronous I/O endpoint device cache system
US11074203B2 (en) Handling an input/output store instruction
US9904654B2 (en) Providing I2C bus over ethernet
US10783134B2 (en) Polling process for monitoring interdependent hardware components
WO2015067157A1 (zh) 虚拟局域网接口的处理方法和网络设备
Campbell et al. Providing I 2 C bus over Ethernet
BR112016030978B1 (pt) Método e sistema implementado por computador para entregar eventos, e sistema compreendendo um ou mais dispositivos de computação