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 PDFInfo
- 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
Links
- 238000003860 storage Methods 0.000 title claims description 114
- 238000012545 processing Methods 0.000 claims abstract description 151
- 230000002776 aggregation Effects 0.000 claims abstract description 76
- 238000004220 aggregation Methods 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 53
- 230000006870 function Effects 0.000 claims description 44
- 230000005540 biological transmission Effects 0.000 claims description 21
- 230000007246 mechanism Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 9
- 230000011664 signaling Effects 0.000 claims description 7
- 238000011084 recovery Methods 0.000 claims description 5
- 230000007547 defect Effects 0.000 claims description 2
- 230000002349 favourable effect Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000014616 translation Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
- G06F9/3871—Asynchronous instruction pipeline, e.g. using handshake signals between stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message 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
[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.
[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.
[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.
[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.
[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)
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.
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)
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)
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 |
-
2020
- 2020-01-13 TW TW109101028A patent/TWI773959B/zh active
- 2020-01-14 BR BR112021015075-7A patent/BR112021015075A2/pt unknown
- 2020-01-14 CN CN202080011206.8A patent/CN113366433A/zh active Pending
- 2020-01-14 JP JP2021532167A patent/JP7461693B2/ja active Active
- 2020-01-14 IL IL284334A patent/IL284334B2/en unknown
- 2020-01-14 CA CA3127852A patent/CA3127852A1/en active Pending
- 2020-01-14 AU AU2020214661A patent/AU2020214661B2/en active Active
- 2020-01-14 EP EP20700223.9A patent/EP3918466A1/en active Pending
- 2020-01-14 WO PCT/EP2020/050755 patent/WO2020156796A1/en unknown
- 2020-01-29 US US16/775,663 patent/US11163566B2/en active Active
-
2021
- 2021-09-21 US US17/480,337 patent/US11762659B2/en active Active
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 |