BR112016011256B1 - Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático - Google Patents

Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático Download PDF

Info

Publication number
BR112016011256B1
BR112016011256B1 BR112016011256-3A BR112016011256A BR112016011256B1 BR 112016011256 B1 BR112016011256 B1 BR 112016011256B1 BR 112016011256 A BR112016011256 A BR 112016011256A BR 112016011256 B1 BR112016011256 B1 BR 112016011256B1
Authority
BR
Brazil
Prior art keywords
data
interface
alignment
misaligned
consumer
Prior art date
Application number
BR112016011256-3A
Other languages
English (en)
Other versions
BR112016011256A2 (pt
Inventor
Anil Vasudevan
Eric Geisler
Marshall Marc Millier
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112016011256A2 publication Critical patent/BR112016011256A2/pt
Publication of BR112016011256B1 publication Critical patent/BR112016011256B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

ALINHAMENTO DE DADOS DE ENTRADA/SAÍDA. São aqui descritas técnicas para o tratamento de dados desalinhados em um sistema informático. As técnicas podem incluir a recepção de dados provenientes de um dispositivo de entrada/saída (I/O), através de uma interface de I/O. Os dados podem ser preenchidos adicionando valores aos dados na interface de I/O se os dados estiverem desalinhados em relação a esse sistema informático de modo que um consumidor dos dados associados ao dispositivo de I/O ignore os valores adicionados.

Description

Campo Técnico
[001] Esta divulgação refere-se, em geral, a técnicas de tratamento de dados desalinhados. Especificamente, esta divulgação refere-se ao tratamento de dados desalinhados a partir de um dispositivo de entrada/saída recebidos em uma interface de entrada/saída destinada para um dispositivo informático.
Técnica Antecedente
[002] Os dispositivos informáticos podem ser configurados para receber dados provenientes de dispositivos, tais como dispositivos de entrada/saída (I/O). Os dispositivos de I/O são dispositivos que podem comunicar com uma plataforma do dispositivo informático, incluindo processadores de dispositivos informáticos, memória e similares via interfaces de I/O. Os dispositivos de I/O podem incluir teclados, mouses, telas, controladores de interface de rede (NICs), unidades de processamento de gráficos (GPUs) e similares. Os dados recebidos provenientes de um dispositivo de I/O podem ser destinados para processamento por um sistema informático. Um dispositivo informático pode otimizar a sua hierarquia de memória através da implementação de uma estrutura que particiona dados em segmentos ou "linhas" de tamanho uniforme. Cada "linha" é uma unidade dos dados disponíveis para processamento pelo dispositivo informático. O sistema informático pode organizar os dados provenientes de um dispositivo de I/O, alinhando o endereço e o tamanho do segmento de dados com a estrutura das linhas. Em alguns cenários, os dados recebidos de um dispositivo de I/O podem ser destinados a um buffer na memória do dispositivo informático. Essa memória pode ser otimizada por um cache que fornece acesso de alto desempenho aos segmentos de memória recentemente usados, conhecidos como linhas de cache. Os dados provenientes do dispositivo de I/O podem não estar em uma fronteira de linha de cache ou os dados podem não ser um múltiplo do tamanho da linha de cache. Estes dados são designados dados "desalinhados". Por exemplo, os dados que estão desalinhados podem incluir dados recebidos que são menores do que um determinado tamanho de linha de cache. Os dados desalinhados recebidos de um dispositivo de I/O podem aumentar a latência do dispositivo informático, necessitando que sejam executadas operações adicionais, tal como uma operação de leitura-modificação-gravação para mesclar os novos dados de entrada com os que já se encontram em memória.
Breve Descrição dos Desenhos
[003] A Figura 1 é um diagrama de blocos ilustrando um sistema informático incluindo a lógica de alinhamento;
[004] A Figura 2 é um diagrama de blocos ilustrando um disposi tivo de I/O ligado a uma plataforma de sistema por uma interface de I/O, incluindo a lógica de alinhamento;
[005] A Figura 3 é um diagrama de blocos ilustrando um disposi tivo de I/O ligado a uma plataforma de sistema por uma interface de I/O, incluindo as indicações de alinhamento em um cabeçalho de pacote;
[006] A Figura 4 é um diagrama de blocos ilustrando um método para o tratamento de dados desalinhados; e
[007] A Figura 5 é um diagrama de blocos ilustrando um método alternativo para o tratamento de dados desalinhados.
[008] Os mesmos números são utilizados em toda a divulgação e Figuras para referenciar componentes e funcionalidades semelhantes. Os números na série 100 se referem a funcionalidades originalmente encontradas na Figura 1; os números na série 200 se referem a funcionalidades originalmente encontradas na Figura 2; e assim por diante.
Descrição das Modalidades
[009] A presente invenção refere-se, em geral, a técnicas para o tratamento de dados desalinhados em um sistema informático. Um sistema informático pode receber dados a partir de diversos dispositivos de entrada/saída (I/O). Por exemplo, um controlador de interface de rede (NIC) recebe dados de uma rede e fornece os dados a uma plataforma do sistema informático, incluindo unidades de memória persistentes, unidades de processamento, e semelhantes, através de uma interface de I/O. Em alguns cenários, os dados provenientes de um dispositivo de I/O estão desalinhados em relação ao sistema de memória do sistema informático quando são recebidos na interface de I/O. Por exemplo, um sistema informático pode receber dados de um dispositivo de I/O que tem fronteiras de linha de cache de 64 bytes. No entanto, se os dados do dispositivo de I/O forem de 65 bytes, os dados têm de ser escritos em dois segmentos: uma solicitação de linha completa de 64 bytes e uma solicitação de linha parcial de 1 byte. Os dados desalinhados, tal como aqui referido, são dados que não estão em uma solicitação de linha completa, mas em vez disso é uma solicitação de linha parcial baseada em uma estrutura de alinhamento de dados associada a um determinado sistema informático, tal como uma estrutura de alinhamento de dados de 64 bytes de uma linha de cache. Solicitações parciais podem exigir que sejam executadas operações adicionais, tal como uma leitura-modificação-gravação (RMW) em que o cache é necessário para mesclar uma solicitação de linha parcial com a memória no interior do sistema informático.
[0010] As técnicas aqui descritas recebem dados que estão desalinhados. Em vez de executar uma RMW, as técnicas incluem preenchimento dos dados, adicionando valores aos dados quando estão de- salinhados. Controladores de software associados a um determinado dispositivo de I/O são configurados para ignorar os valores adicionados ao ler os dados desalinhados no cache, evitando assim operações RMW e qualquer aumento na latência associada a essas operações. Um contrato de serviço entre o sistema informático, incluindo o seu software de dispositivo e o dispositivo de I/O, permite que o sistema informático adicione e ignore de forma eficiente dados preenchidos. O sistema informático é o consumidor dos dados transferidos pelo dispositivo de I/O, em que o dispositivo de I/O está atuando como produtor.
[0011] A Figura 1 é um diagrama de blocos ilustrando um sistema informático incluindo a lógica de alinhamento. O sistema informático 100 inclui um dispositivo informático 101 tendo um processador 102, um dispositivo de armazenamento 104, compreendendo um meio legível por computador não transitório, e um dispositivo de memória 106. O dispositivo informático 101 inclui controladores de dispositivo 108, uma interface de I/O 110, e dispositivos I/O 112, 114, 116.
[0012] Os dispositivos de I/O 112, 114, 116 podem incluir uma variedade de dispositivos configurados para fornecer dados à interface de I/O 110, tal como um dispositivo gráfico que inclui uma unidade de processamento gráfico, um drive de disco, um controlador de interface de rede (NIC), e semelhantes. Em algumas modalidades, um dispositivo de I/O, tal como o dispositivo de I/O 112 está ligado a dispositivos remotos 118 por meio de uma rede 120, tal como ilustrado na Figura 1.
[0013] Os dispositivos de I/O 112, 114, 116 são configurados para fornecer dados à interface de I/O 110. Como discutido acima, os dados fornecidos a partir dos dispositivos de I/O podem estar desalinhados com uma estrutura de cache do dispositivo informático 101. A estrutura de alinhamento de cache, tal como aqui referido, é a forma como os dados são organizados e acessados no cache para a memória do computador e podem variar de sistema para sistema. Vários tipos de estruturas de alinhamento de cache podem incluir uma estrutura de alinhamento de cache de 64 bytes, uma estrutura de alinhamento de cache de 128 bytes, entre outras estruturas de alinhamento de cache. Por exemplo, o cache para o dispositivo de memória 106 do dispositivo informático 101 pode ser configurado com uma estrutura de alinhamento de cache de 64 bytes. Tal como ilustrado na Figura 1, a memória 106 inclui um cache 122 com linhas de cache de um número de bytes longo que são mantidas coerentes com os dados contidos no dispositivo de memória 106.
[0014] Em algumas modalidades, a interface de I/O 110 inclui uma lógica de alinhamento indicada pela caixa a tracejado 124 configurada para processar dados desalinhados recebidos a partir dos dispositivos de I/O 112, 114, 116. Em algumas modalidades, a lógica de alinhamento 126 está disposta no interior dos dispositivos de I/O, tal como indicado pela caixa a tracejado 126 do dispositivo de I/O 112, em que a lógica de alinhamento 126 se destina a configurar pacotes de dados com instruções relativas para que o preenchimento de dados desalinhados seja realizado na interface de I/O 110, tal como discutido abaixo com mais detalhe. Em qualquer modalidade, a lógica de alinhamento, tanto a 124 como a 126, inclui, pelo menos parcialmente, lógica de hardware para tratar dados desalinhados. Em algumas modalidades, a lógica de hardware está integrada em circuitos configurados para tratar dados desalinhados recebidos de um dispositivo de I/O. Em algumas modalidades, a lógica de alinhamento inclui outros tipos de lógica de hardware, tais como código de programa executável por um processador, microcontrolador, e semelhantes, em que o código de programa é armazenado em um meio de leitura por computador não transitório. O tratamento de dados desalinhados inclui o preenchimento de dados desalinhados adicionando valores aos dados desalinhados de forma que os valores adicionados serão ignorados pelos componentes do sistema informático, tais como os controladores 108, enquanto dados válidos dentro dos dados preenchidos serão lidos pelos componentes do sistema informático. A interface de I/O 110 pode utilizar recursos de roteamento de uma interconexão, indicados por 130 na Figura 1, para classificar o tráfego de dados proveniente de um dispositivo de I/O que requer o alinhamento. Uma interconexão, tal como aqui referido, é um acoplamento comunicativo definido para uma ampla variedade de futuras plataformas informáticas e de comunicação, tais como uma Inter- conexão de Componentes Periféricos expresso (PCIe), ou quaisquer outras tecnologias de tecido de interligação. Nas técnicas aqui descritas, a interconexão 130 pode classificar o tráfego de dados através de, por exemplo, ligações físicas únicas, canais virtuais, IDs de dispositivos, ou IDs de transmissão de dados para indicar que a lógica de ali-nhamento deve ser realizada na interface de I/O 110 sobre os dados recebidos exclusivamente da fonte identificada. A interface de I/O 110 pode ser configurada com identificadores únicos para identificar quando é estabelecido o contrato de serviço entre o dispositivo informático 101 e o dispositivo de I/O 112.
[0015] O processador 102 do dispositivo informático 101 pode ser um processador principal que está adaptado para executar as instruções armazenadas. O processador 102 pode ser um processador central com um núcleo único, um processador de vários núcleos, um cluster informático, ou qualquer número de outras configurações. O processador 102 pode ser implementado como um processador de computador de conjunto de instruções complexo (CISC) ou como um processador de computador de conjunto de instruções reduzido (RISC), processadores compatíveis com conjuntos de instruções x86, múltiplos núcleos, ou qualquer outro microprocessador ou unidade de processamento central (CPU).
[0016] O dispositivo de memória 106 pode incluir memória de acesso aleatório (RAM) (por exemplo, a memória estática de acesso aleatório (SRAM), memória dinâmica de acesso aleatório (DRAM), memória de condensador zero RAM, memória de silício-óxido-nitrito- óxido-silício SONOS, memória embebida DRAM, memória de dados estendida RAM, memória de taxa de dados dupla (DDR) RAM, memória de acesso aleatório resistiva (RRAM), memória de acesso aleatório de parâmetro (PRAM), etc.), memória exclusiva para leitura (ROM) (por exemplo, memória exclusiva de leitura de máscara ROM, memória exclusiva de leitura programável (PROM), memória exclusiva de leitura programável apagável (EPROM), memória exclusiva de leitura programável eletricamente apagável (EEPROM), etc.), memória flash, ou quaisquer outros sistemas de memória adequados. O processador principal 102 pode ser ligado através de um bus de sistema 128 (por exemplo, Interconexão de Componentes Periféricos (PCI), Arquitetura de Padrão Industrial (ISA), PCI-Express, HyperTransport®, NuBus, etc.) a componentes, incluindo a memória 106, o dispositivo de armazenamento 104, os controladores 108, a interface de I/O 110 e os dispositivos de I/O 112, 114, 116.
[0017] O diagrama de blocos da Figura 1 não se destina a indicar que o dispositivo informático 101 se destina a incluir todos os componentes mostrados na Figura 1. Além disso, o dispositivo informático 101 pode incluir qualquer número de componentes adicionais não mostrados na Figura 1, dependendo dos detalhes da implementação específica.
[0018] A Figura 2 é um diagrama de blocos ilustrando um dispositivo de I/O ligado a uma plataforma de sistema por uma interface de I/O, incluindo a lógica de alinhamento. Uma plataforma de sistema 202 pode incluir unidades de memória, dispositivos de armazenamento, processadores, software de sistema incluindo controladores de dispositivo, e semelhantes, tal como discutido acima em referência à Figura 1. A plataforma de sistema 202 é configurada para utilizar operações de memória coerentes através de uma memória cache 122. A caixa a tracejado 204 da Figura 2 representa o espaço de memória coerente em que os dados de memória são alinhados de acordo com uma estrutura de alinhamento de dados da plataforma de sistema 202. Para fins de discussão, presume-se que a plataforma de sistema 202 na Figura 2 tem uma estrutura de alinhamento de dados de 64 bytes, embora possam ser implementadas outras estruturas de alinhamento de dados. A caixa a tracejado 206 representa a ligação a uma interface de I/O, tal como a interface de I/O 110 da Figura 1, associada à plataforma de sistema 202. As transferências de dados de, ou para o dis-positivo de I/O podem ser de ou para endereços que estão desalinhados em relação à memória cache da plataforma 122.
[0019] Tal como acima discutido, a interface de I/O 110 pode re ceber dados desalinhados provenientes de um dispositivo de I/O, tal como o controlador de interface de rede (NIC) 208 ilustrado na Figura 2. Os dados desalinhados do NIC 208 podem ser recebidos na lógica de alinhamento 124 da interface de I/O 110. A interface de I/O 110 pode ser configurada para reconhecer uma identificação única, tal como uma função do dispositivo bus (BDF) do dispositivo de I/O, tal como o NIC 208 na Figura 2, de modo que antes de armazenar quaisquer dados desalinhados no cache 122, a lógica de alinhamento 124 é instruída para preencher os dados desalinhados adicionando os valores para conformarem-se com a estrutura de alinhamento de dados para a memória cache 122 na plataforma de sistema 202. Neste exemplo, o cache 122 inclui linhas de cache que têm uma estrutura de alinhamento de dados de 64 bytes. A utilização de uma identificação única é um mecanismo para registrar um dispositivo de I/O com uma interface de I/O. O registro do dispositivo de I/O, tal como O NIC 208, com a interface de I/O 110 é parte do estabelecimento do con- trato de serviço de alinhamento discutido acima em referência à Figura 1.
[0020] O preenchimento dos dados desalinhadas pela lógica de alinhamento 124 é tal que o sistema de software que está sendo executado na plataforma informática, tal como um controlador de dispositivo NIC 210 da Figura 2, pode ser configurado para ler os dados desalinhados e ignorar os valores adicionados. Em modalidades, um controlador lê os dados desalinhados e ignora os valores adicionados com base em um acordo predefinido entre a interface de I/O 110 e o controlador de dispositivo, tal como o controlador NIC 210. Por exemplo, O NIC 208 pode proporcionar 65 bytes de dados à interface de I/O 110. Os primeiros 64 bytes de dados são armazenados na memória cache 122, uma vez que a linha de cache é de 64 bytes de comprimento de acordo com a estrutura de alinhamento de dados do cache 122 neste exemplo. O 1 byte extra dos dados é preenchido pela lógica de alinhamento com os valores adicionados, tais como zeros para preencher mais 63 bytes de dados. O acordo entre o controlador NIC 210 e a interface de I/O 110 permite que o controlador NIC 210 leia o primeiro byte de dados e ignore os 63 bytes de valores adicionados sem necessidade de executar uma operação de RMW para sincronizar o cache com a memória 106.
[0021] Note-se que o alinhamento não está limitado ao tamanho da linha de cache. Em modalidades, a lógica de alinhamento 124 preenche dados de acordo com a maior granularidade de alinhamento aceitável para uma dada estrutura de alinhamento de dados de uma plataforma de sistema, tal como a granularidade do tamanho de linha de cache, a granularidade de tamanho da página, e semelhantes.
[0022] A Figura 3 é um diagrama de blocos ilustrando um dispositivo de I/O ligado a uma plataforma de sistema via uma interface de I/O, incluindo as indicações de alinhamento em um cabeçalho de pa- cote. Tal como discutido em referência à Figura 2 acima, a plataforma de sistema 202 pode ser configurada dentro do espaço de memória coerente 204 tendo uma estrutura de alinhamento de cache de 64 bytes, embora possam ser implementadas outras estruturas de alinhamento de dados. A caixa a tracejado 206 ilustra a ligação a uma interface de I/O, tal como a interface de I/O 110 da Figura 1, associada à plataforma de sistema 202. As transferências de dados de ou para o dispositivo de I/O podem ser de ou para endereços que estão desalinhados em relação à memória cache da plataforma 122.
[0023] Em algumas modalidades, um dispositivo de I/O, tal como o NIC 302 ilustrado na Figura 3, fornece dados de alinhamento dentro de um cabeçalho de um pacote de dados 304. O pacote 304 inclui blocos, tal como um bloco de cabeçalho de controlo 306, um bloco de endereço 308 e um bloco de dados 310. Tipicamente, os cabeçalhos de pacotes incluem cabeçalhos de rede que identificam um comprimento válido dos dados sem ter em conta o alinhamento. Nas modalidades aqui discutidas, o bloco de cabeçalho de controlo 306 inclui dados de alinhamento 312, tal como ilustrado na Figura 3. Nesta modalidade, um dispositivo de I/O, tal como o NIC 302, inclui a lógica de alinhamento 126 configurada para incluir os dados 312 de alinhamento dentro do bloco de cabeçalho de controlo 306. Os dados de alinhamento 312 indicam à interface de I/O 110 que o pacote de dados 304 contém dados desalinhados de modo que a interface de I/O 110 preenche os dados via a lógica de alinhamento 124. Neste cenário, os dados de alinhamento 312 estão incorporados dentro do pacote de dados 304 de modo que os dados de alinhamento 312 são processados pela interface de I/O 110 e pode ocorrer um preenchimento inferido e o alinhamento desejado. Em algumas modalidades, a implementação de dados de alinhamento 312 no interior do pacote 304 é processada na interface de I/O 110 sem a lógica de alinhamento 124 pela configuração apro- priada da interface de I/O 110 para interpretar os dados de alinhamento 312.
[0024] A Figura 4 é um diagrama de blocos ilustrando um método para o tratamento de dados desalinhados. No bloco 402, os dados são recebidos a partir de um dispositivo de entrada/saída (I/O) em um cache de uma interface de I/O. Os dados desalinhados são preenchidos no bloco 404 de forma que um controlador associado ao dispositivo de I/O ignora os valores adicionados.
[0025] Em algumas modalidades, o preenchimento é realizado sem realizar uma operação de RMW. Por outras palavras, ao invés de receber dados desalinhados e realizar uma RMW para dados desalinhados, a interface de I/O preenche os dados com valores que são ignorados por um controlador associado ao dispositivo de I/O, bem como o software do sistema informático que acessa os dados preenchidos. Em algumas modalidades os valores adicionados são ignorados com base em um contrato estabelecido entre o dispositivo de I/O e o controlador. O contrato pode ser implementado como lógica, compreendendo pelo menos parcialmente lógica de firmware, software ou qualquer sua combinação, de modo que bytes válidos de dados desa-linhados podem ser lidos quando preenchidos pelos valores adicionados que são ignorados. Em algumas modalidades, os bytes válidos dos dados recebidos são indicados por um campo de comprimento em um cabeçalho de pacote fornecido a partir do dispositivo de I/O.
[0026] A Figura 5 é um diagrama de blocos ilustrando um método alternativo para o tratamento de dados desalinhados. Tal como discutido acima em relação à Figura 3, em algumas modalidades, os dados são recebidos, no bloco 502 na interface de I/O através de uma interligação que transfere dados como uma sequência de pacotes. Cada pacote é constituído por um segmento de cabeçalho e por um segmento de dados. O cabeçalho indica, no bloco 504, que os dados de- salinhados são preenchidos na interface de I/O, de modo que o preenchimento é realizado em resposta à indicação no cabeçalho, no bloco 506. Nesta modalidade, o cabeçalho de pacote é configurado no dispositivo de I/O antes de fornecer o pacote à interface de I/O.
[0027] Nas modalidades aqui descritas, são fornecidos dados para ou a partir da interface de I/O ou a partir do dispositivo de I/O via uma arquitetura de tecido de interligação. Uma arquitetura de tecido de in- terconexão inclui a arquitetura (PCI) Interconexão de Componentes Periféricos expressos (PCIe). Um objetivo principal da PCIe é permitir que os componentes e dispositivos de diferentes fornecedores intero- perem em uma arquitetura aberta, abrangendo vários segmentos de mercado; Clientes (Desktops e Portáteis), Servidores (Standard e de Empresa), e dispositivos Incorporados e de Comunicação. Uma PCI Expresso é uma interconexão de alto desempenho, de objetivos genéricos definida para uma ampla variedade de futuras plataformas informáticas e de comunicação. Alguns atributos de PCI, tal como o seu modelo de uso, arquitetura de carga-armazenamento, e interfaces de software, têm sido mantidos através de suas revisões, enquanto anteriores implementações de bus paralelo foram substituídas por uma in-terface altamente escalável, totalmente serial. As versões mais recentes de PCI Expresso tiram vantagem dos avanços em interconexões ponto-a-ponto, a tecnologia baseada em switch e protocolo em pacotes para oferecer novos níveis de desempenho e características. Gerenciamento de Energia, Qualidade de Serviço (QoS), suporte Hot- Plug/Hot-Swap, Integridade de Dados, e Tratamento de Erro estão entre alguns dos recursos avançados suportados pela PCI Express.
[0028] Com referência à Figura 6, é ilustrada uma modalidade de um tecido composto por ligações ponto-a-ponto que interligam um conjunto de componentes. O sistema 600 inclui o processador 605 e a memória de sistema 610 acoplada ao hub controlador 615. O proces- sador 605 inclui qualquer elemento de processamento, tal como um microprocessador, um processador central, um processador incorporado, um coprocessador, ou outro processador. O processador 605 é acoplado ao hub controlador 615 através de um bus front-side (FSB) 606. Numa modalidade, o FSB 606 é uma interconexão em série ponto-a-ponto, tal como descrito abaixo. Em outra modalidade, a ligação 606 inclui uma arquitetura serial, de interconexão diferencial que é compatível com diferentes padrões de interconexão.
[0029] A memória do sistema 610 inclui qualquer dispositivo de memória, tal como a memória de acesso aleatório (RAM), memória não volátil (NV), ou outra memória acessível por dispositivos no sistema 600. A memória do sistema 610 é acoplada ao hub controlador 615 através da interface de memória 616. Exemplos de uma interface de memória incluem uma interface memória de taxa de dados dupla (DDR), uma interface de memória DDR de duplo canal, e uma interface de memória RAM dinâmica (DRAM).
[0030] Em uma modalidade, o hub controlador 615 é um hub raiz,complexo de raiz, ou controlador de raiz em uma hierarquia de inter- conexão de Componentes Periféricos Interligados Expressos (PCIe ou PCIE). Exemplos de hub controlador 615 incluem um chipset, um hub controlador de memória (MCH), um northbridge, um hub controlador de interconexão (ICH), um southbridge, e um controlador de raiz/hub. Muitas vezes, o termo chipset se refere a dois hubs controladores fisicamente separados, ou seja, um hub controlador de memória (MCH) acoplado a um hub controlador de interconexão (ICH). Note-se que os atuais sistemas incluem muitas vezes o MCH integrado com o processador 605, enquanto controlador 615 é para comunicar com dispositivos de I/O, de um modo semelhante ao descrito abaixo. Em algumas modalidades, o encaminhamento ponto-a-ponto é opcionalmente apoiado através do complexo de raiz 615.
[0031] Aqui, o hub controlador 615 é acoplado ao switch/bridge 620 através da ligação serial 619. Os módulos de entrada/saída 617 e 621, que também podem ser referidos como interfaces/portos 617 e 621, incluem/implementam uma pilha de protocolos em camadas para fornecer comunicação entre o hub controlador 615 e switch 620. Em uma modalidade, vários dispositivos podem ser acoplados ao switch 620.
[0032] O switch/bridge 620 encaminha pacotes/mensagens do dispositivo 625 a montante, ou seja, uma hierarquia para um complexo de raiz, ao hub controlador 615 e a jusante, ou seja, uma hierarquia longe de um controlador de raiz, a partir do processador 605 ou memória de sistema 610 para o dispositivo 625. O switch 620, em uma modalidade, é referido como um conjunto lógico de múltiplos dispositivos de ponte PCI para PCI virtuais. O dispositivo 625 inclui um dispositivo ou componente interno ou externo para ser acoplado a um sistema eletrônico, tal como um dispositivo de I/O, um Controlador de Interface de Rede (NIC), uma placa adicional, um processador de áudio, um processador de rede, um disco rígido, um dispositivo de armazenamento, um CD-ROM/DVD, um monitor, uma impressora, um mouse, um teclado, um roteador, um dispositivo de armazenamento portátil, um dispositivo Firewire, um dispositivo Universal Serial Bus (USB), um scanner, e outros dispositivos de entrada/saída. Muitas vezes, no vernáculo PCIe, um tal dispositivo é referido como um endpoint. Embora não especificamente mostrado, o dispositivo 625 pode incluir uma PCIe para ponte PCI/PCI-X para suportar versões de dispositivos PCI "legado" ou outras versões de dispositivos PCI. Os dispositivos endpoint em PCIe são geralmente classificadas como "legado", PCIe, ou endpoints integrados de complexo de raiz.
[0033] O acelerador de gráficos 630 é também acoplado ao hub controlador 615 através da ligação serial 632. Em uma modalidade, o acelerador de gráficos 630 é acoplado a um MCH, o qual é acoplado a um ICH. O switch 620, e consequentemente o dispositivo de I/O 625, é em seguida acoplado ao ICH. Os módulos de I/O 631 e 618 são também para implementar uma pilha de protocolos em camadas para comunicar entre o acelerador de gráficos 630 e o hub controlador 615. Tal como em relação à discussão de MCH acima, um controlador de gráficos ou o acelerador de gráficos 630 pode ele mesmo ser integrado no processador 605.
[0034] Voltando à Figura 7, é ilustrada uma modalidade de uma pilha de protocolo em camadas. A pilha de protocolos em camadas 700 inclui qualquer forma de uma pilha de comunicação em camadas, tal como uma pilha de Interligação de Caminho Rápido (QPI), uma pilha PCIe, uma pilha de interconexão informática de elevado desempenho de próxima geração, ou outra pilha em camadas. Embora a discussão imediatamente abaixo em referência às Figuras 6 a 9 seja referente a uma pilha PCIe, os mesmos conceitos podem ser aplicados a outras pilhas de interligação. Em uma modalidade, a pilha de protocolo 700 é uma pilha de protocolo PCIe incluindo a camada de transação 705, a camada de ligação 710, e a camada física 720. Uma interface, tal como as interfaces 617, 618, 621, 622, 626, e 631 na Figura 6, pode ser representada como a pilha de protocolo de comunicação 700. Pode também ser referida a representação como uma pilha de protocolo de comunicação como um módulo ou interface de implementa- ção/incluindo uma pilha de protocolo.
[0035] A PCI Express utiliza pacotes para comunicar informações entre componentes. Os pacotes são formados na Camada de Transação 705 e na Camada de Ligação de Dados 710 para transportar a informação do componente de transmissão para o componente de recepção. Como os pacotes transmitidos fluem através das outras camadas, são estendidos com informação adicional necessária para tra- tar pacotes nessas camadas. No lado de recepção ocorre o processo inverso e os pacotes são transformados a partir da sua representação de Camada Física 720 para a representação de Camada de Ligação de Dados 710 e finalmente (para Pacotes de Camada de Transação) para a forma que pode ser processada pela Camada de Transação 705 do dispositivo de recepção.
Camada de Transação
[0036] Em uma modalidade, a camada de transação 705 se destina a proporcionar uma interface entre o núcleo de processamento de um dispositivo e a arquitetura de interconexão, tal como a camada de ligação de dados 710 e a camada física 720. A este respeito, a responsabilidade primária da camada de transação 705 é a montagem e desmontagem de pacotes (ou seja, pacotes de camada de transação, ou TLPs). A camada de translação 705 normalmente gerencia o controle de fluxo de base de crédito para TLPs. A PCIe implementa transações split, ou seja, transações com solicitação e resposta separadas pelo tempo, permitindo que uma ligação realize outros tipos de tráfego, enquanto o dispositivo de destino reúne dados para a resposta.
[0037] Além disso a PCIe utiliza controle de fluxo baseado em crédito. Neste esquema, um dispositivo anuncia um montante inicial de crédito para cada um dos buffers de recepção na Camada de Transação 705. Um dispositivo externo na extremidade oposta da ligação, tal como o hub controlador 615 na Figura 6, conta o número de créditos consumidos por cada TLP. Uma transação pode ser transmitida, se a operação não exceder um limite de crédito. Ao receber uma resposta é restaurado um montante de crédito. Uma vantagem de um regime de crédito é que a latência de retorno de crédito não afeta o desempenho, desde que o limite de crédito não seja encontrado.
[0038] Em uma modalidade, quatro espaços de endereço de transação incluem um espaço de endereço de configuração, um espaço de endereço de memória, um espaço de endereço de entrada/saída, e um espaço de endereço da mensagem. Transações de espaço de memória incluem uma ou mais das solicitações de leitura e solicitações escritas de transferência de dados de/para um local de memória mapeada. Em uma modalidade, as transações de espaço de memória podem usar dois formatos diferentes de endereço, por exemplo, um formato de endereço curto, como um endereço de 32 bits, ou um formato de endereço longo, tal como um endereço de 64 bits. São utilizadas transações de espaço de configuração para acessar o espaço de configuração dos dispositivos PCIe. As transações para o espaço de configuração incluem solicitações de leitura e solicitações de gravação. São definidas transações de espaço de mensagem (ou, simplesmente mensagens) para apoiar a comunicação em banda entre os agentes PCIe.
[0039] Portanto, em uma modalidade, a camada de transação 705 monta o cabeçalho de pacote/carga útil 706. O formato para cabeçalhos de pacote/cargas úteis atuais pode ser encontrado na especificação PCIe no site da especificação PCIe. Como discutido acima, em uma modalidade, o cabeçalho de pacote é configurado com instruções de configuração de modo que os dados contidos no pacote estão desalinhados e são preenchidos na interface de I/O.
[0040] Fazendo rapidamente referência à Figura 8, é ilustrada uma modalidade de um descritor de transação PCIe. Em uma modalidade, o descritor de transação 800 é um mecanismo para transportar informações de transação. A este respeito, o descritor de transação 800 suporta identificação de transações em um sistema. Outras utilizações potenciais incluem modificações de rastreamento de ordenação de transação padrão e associação de transação com canais.
[0041] O descritor de transação 800 inclui o campo de identificador global 802, o campo de atributos 804 e o campo identificador de canal 806. No exemplo ilustrado, o campo identificador global 802 é descrito compreendendo o campo identificador de transação local 808 e o campo identificador de fonte 810. Em uma modalidade, o identificador de transação global 802 é único para todas as solicitações pendentes.
[0042] De acordo com uma implementação, o campo identificador de transação local 808 é um campo gerado por um agente solicitante, e é único para todas as solicitações pendentes que requerem uma finalização para aquele agente solicitante. Além disso, neste exemplo, o identificador de fonte 810 identifica apenas o agente solicitante dentro de uma hierarquia PCIe. Assim, juntamente com o ID de fonte 810, o campo 808 de identificador de transação local fornece a identificação global de uma transação dentro de um domínio de hierarquia.
[0043] O campo de atributos 804 especifica as características e as relações da transação. A este respeito, o campo de atributos 804 é po-tencialmente usado para fornecer informações adicionais que permitem a modificação do tratamento padrão de transações. Em uma modalidade, o campo de atributos 804 inclui o campo de prioridade 812, o campo reservado 814, o campo de ordenação 816, e o campo nosnoop 818. Aqui, o subcampo de prioridade 812 pode ser modificado por um iniciador para atribuir uma prioridade à transação. O campo de atributo reservado 814 é deixado reservado para o futuro, ou para uso definido pelo fornecedor. Modelos de uso possível usando atributos prioritários ou de segurança podem ser implementados utilizando o campo de atributo reservado.
[0044] Neste exemplo, o campo de atributo de ordenação 816 é usado para fornecer informações opcionais que transmitem o tipo de ordenação que pode modificar as regras de ordenação padrão. De acordo com um exemplo de implementação, um atributo de ordenação de "0" denota regras de ordenação padrão a aplicar, em que um atributo de ordenação de "1" denota ordenação relaxada, no qual grava- ções podem passar gravações na mesma direção, e finalizações de leitura podem passar gravações na mesma direção. O campo de atributo snoop 818 é utilizado para determinar se as transações são interceptadas. Tal como mostrado, o campo ID de canal 806 identifica um canal a que uma transação está associada.
Camada de Ligação
[0045] A camada de ligação 710, também referida como camada de ligação de dados 710, atua como uma fase intermédia entre a camada de operação 705 e a camada física 720. Em uma modalidade, uma responsabilidade da camada de ligação de dados 710 é fornecer um mecanismo fiável para troca de Pacotes de Camada de Transação (TLPs) entre dois componentes de uma ligação. Um dos lados da Camada de Ligação de Dados 710 aceita TLPs montados pela Camada Transação 705, aplica o identificador de sequência de pacote 711, ou seja, um número de identificação ou número de pacote, calcula e aplica um código de detecção de erro, ou seja, CRC 712, e submete os TLPs modificados à Camada Física 720 para transmissão através de um dispositivo físico para um dispositivo externo.
Camada Física
[0046] Em uma modalidade, a camada física 720 inclui o sub-bloco lógico 721 e o sub-bloco elétrico 722 para transmitir fisicamente um pacote para um dispositivo externo. Aqui, o sub-bloco lógico 721 é responsável pelas funções "digitais" da Camada Física 721. A este respeito, o sub-bloco lógico inclui uma seção de transmissão para preparar informações de saída para transmissão pelo sub-bloco físico 722, e um módulo receptor para identificar e preparar as informações recebidas antes de passá-las para a Camada de Ligação 710.
[0047] O bloco físico 722 inclui um transmissor e um receptor. O transmissor é alimentado pelo sub-bloco lógico 721 com símbolos, que o transmissor serializa e transmite para um dispositivo externo. O re- ceptor é alimentado com símbolos serializados provenientes de um dispositivo externo e transforma os sinais recebidos em um fluxo de bits. O fluxo de bits é desserializado e alimentado ao sub-bloco lógico 721. Em uma modalidade, é utilizado um código de transmissão 8b/10b, em que os símbolos de dez bits são transmitidos/recebidos. Aqui, são utilizados símbolos especiais para enquadrar um pacote com frames 723. Além disso, em um exemplo, o receptor também proporciona um relógio de símbolo recuperado a partir da corrente serial de entrada.
[0048] Tal como acima referido, embora a camada de transação 705, a camada de ligação 710 e a camada física 720 sejam discutidas em referência a uma modalidade específica de uma pilha de protocolos PCIe, uma pilha de protocolos de camadas não está limitada a isso. Na verdade, qualquer protocolo em camadas pode ser incluí- do/implementado. Como um exemplo, uma porta/interface que é representada como um protocolo em camadas inclui: (1) uma primeira camada de montagem pacotes, isto é, uma camada de transação; uma segunda camada para sequenciar pacotes, isto é, uma camada de ligação; e uma terceira camada para transmitir os pacotes, isto é uma camada física. Como um exemplo específico, é utilizado um protocolo em camadas de interface padrão comum (CSI).
[0049] Referindo-nos agora à Figura 9, é ilustrada uma modalidade de um tecido serial ponto-a-ponto PCIe. Embora seja ilustrada uma modalidade de uma ligação serial ponto-a-ponto PCIe, uma ligação ponto-a-ponto não está limitada a isso, uma vez que inclui qualquer caminho de transmissão para a transmissão de dados em série. Na modalidade mostrada, uma ligação básica PCIe inclui dois pares de sinais acionados diferencialmente de baixa tensão: um par de transmissão 906/911 e um par de recepção 912/907. Consequentemente, o dispositivo 905 inclui uma lógica de transmissão 906 para transmitir dados para o dispositivo 910 e uma lógica de recepção 907 para receber dados do dispositivo 910. Por outras palavras, dois caminhos de transmissão, isto é, os caminhos 916 e 917, e dois caminhos de recepção, isto é, os caminhos 918 e 919, são incluídos em uma ligação PCIe.
[0050] Um caminho de transmissão se refere a qualquer caminho para a transmissão de dados, tal como uma linha de transmissão, uma linha de cobre, uma linha óptica, um canal de comunicação sem fios, uma ligação de comunicação de infravermelhos, ou outro caminho de comunicação. Uma conexão entre dois dispositivos, tal como o dispositivo 905 e o dispositivo 910, é referida como uma ligação, tal como a ligação 415. Uma ligação pode suportar um corredor - cada corredor representando um conjunto de pares de sinais diferenciais (um par para transmissão, um par para recepção). Para a largura de banda escala, uma ligação pode agregar vários corredores indicados por xN, em que N é qualquer largura de ligação suportada, tal como 1, 2, 4, 8, 12, 16, 32, 64, ou mais larga.
[0051] Um par diferencial se refere a dois caminhos de transmissão, tais como as linhas 416 e 417, para transmitir sinais diferenciais. Como um exemplo, quando a linha 416 passa de um nível de baixa tensão para um nível de alta tensão, ou seja, um flanco ascendente, a linha 417 conduz de um nível lógico alto para um nível lógico baixo, isto é, um flanco descendente. Sinais diferenciais potencialmente demonstram melhores características elétricas, tais como uma melhor integridade do sinal, ou seja, acoplamento cruzado, sobre passagem de tensão/redução de tensão, oscilações, etc. Isto permite uma melhor janela de temporização, o que permite frequências de transmissão mais rápidas.
[0052] Uma modalidade é uma implementação ou exemplo. A referência na especificação a "uma modalidade", "algumas modalidades" "várias modalidades", ou "outras modalidades" significa que uma determinada funcionalidade, estrutura, ou característica descrita em relação a modalidades está incluída em pelo menos algumas modalidades, mas não necessariamente em todas as modalidades, das presentes técnicas. As várias apresentações de "uma modalidade", ou "algumas modalidades" não se referem todas necessariamente às mesmas modalidades.
[0053] Nem todos os componentes, funcionalidades, estruturas,características, etc. aqui descritas e ilustradas têm de estar incluídas em uma modalidade ou modalidades particulares. Se a especificação refere que um componente, funcionalidade, estrutura ou característica "pode", ou "poderia", estar incluído, por exemplo, aquele determinado componente, funcionalidade, estrutura ou característica não tem obrigatoriamente de estar incluído. Se a especificação ou a reivindicação se refere a "um" elemento, isso não significa que existe apenas um elemento. Se a especificação ou reivindicações se referem a um elemento "adicional", isso não impede que haja mais do que um elemento adicional.
[0054] É de notar que, embora algumas modalidades tenham sido descritas em referência a implementações particulares, são possíveis outras implementações de acordo com algumas modalidades. Além disso, a disposição e/ou a ordem dos elementos de circuito ou outras funcionalidades ilustradas nos desenhos e/ou aqui descritos não têm de ser dispostas na forma particular ilustrada e descrita. São possíveis muitas outras disposições de acordo com algumas modalidades.
[0055] Em cada sistema mostrado em uma figura, os elementos podem ter, cada um, em alguns casos, um mesmo número de referência ou um número de referência diferente para sugerir que os elementos representados poderiam ser diferentes e/ou semelhantes. No entanto, um elemento pode ser suficientemente flexível para ter diferen- tes implementações e trabalhar com alguns ou com todos os sistemas aqui mostrados ou descritos. Os vários elementos mostrados nas Figuras podem ser os mesmos ou diferentes. Qual o elemento referido como um primeiro elemento e qual o que é chamado um segundo elemento, é arbitrário.
[0056] Deverá reconhecer-se que especificidades nos exemplos acima mencionados podem ser utilizadas em qualquer lugar em uma ou mais modalidades. Por exemplo, todas as funcionalidades opcionais do dispositivo informático acima descrito também podem ser aplicadas em relação a qualquer um dos métodos ou meio legível por computador aqui descritos. Além disso, embora os fluxogramas e/ou diagramas de estado possam ter sido aqui utilizados para descrever modalidades, as técnicas não estão limitadas a esses diagramas ou descrições correspondentes aqui incluídas. Por exemplo, o fluxo não tem de se mover através de cada caixa ou estado ilustrado ou exatamente na mesma ordem como aqui ilustrado e descrito.
[0057] As técnicas atuais não estão limitadas aos detalhes especí ficos aqui listados. Com efeito, os versados na técnica tendo o benefício desta descrição apreciarão que podem ser feitas muitas outras variações a partir da descrição anterior e dos desenhos no âmbito das técnicas atuais. Por conseguinte, são as reivindicações seguintes, incluindo as suas eventuais alterações, que definem o escopo das técnicas atuais.

Claims (24)

1. Método de processamento de dados desalinhados em um sistema informático compreendendo: receber dados a partir de um dispositivo de entrada/saída (I/O) (114, 116) através de meios para interface de I/O (110); e preencher os dados do dispositivo de entrada/saída (I/O) (114, 116) adicionando valores aos dados nos meios para interface de I/O (110) através de uma lógica de alinhamento em resposta aos dados que estão desalinhados, em que um consumidor dos dados preenchidos associados com o dispositivo de I/O (114, 116) ignora os valores adicionados, os meios para interface de I/O (110) são configurados para reconhecer um identificador único do dispositivo de I/O (114, 116), o método compreendendo indicar pelo identificador único do dispositivo de I/O (114, 116) que dados desalinhados podem ser preenchidos nos meios para interface de I/O (110), em que o preenchimento é realizado em resposta à indicação pelo identificador único do dispositivo de I/O (114, 116) caracterizado pelo fato de que: os dados desalinhados são os dados que são solicitados do dispositivo de I/O (114, 116) usando uma solicitação de linha parcial e a lógica de alinhamento é configurada para configurar os dados desalinhados para estarem em conformidade com a estrutura de alinhamento de dados de um consumidor.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o identificador único é um ID de dispositivo do dispositivo de I/O (114, 116).
3. Método, de acordo com a reivindicação 1 ou 2, caracterizado pelo fato de que o identificador único é usado para registrar o dispositivo de I/O (114, 116) com a interface de I/O (110).
4. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que registar o dispositivo de I/O (114, 116) com a interface de I/O (110) é parte de estabelecer um contrato de serviço de alinhamento entre o consumidor e a interface de I/O (110).
5. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que a interface de I/O (110) é configurada com identificadores únicos para identificar quando o contrato de serviço de alinhamento entre o consumidor e a interface de I/O (110) para adicionar e ignorar valores preenchidos é estabelecido.
6. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que preencher os dados adicionando valores é realizado para se conformar a uma estrutura de alinhamento de dados para um cache de memória antes de armazenar os dados.
7. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o preenchimento é realizado sem a realização de uma operação de leitura-modificação-gravação para os dados desalinhados.
8. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o identificador único do dispositivo I/O (114, 116) é proporcionado pelo dispositivo de I/O (114, 116).
9. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que o consumidor ignora os valores adicionados com base no contrato de serviço de alinhamento entre o consumidor e os meios para interface de I/O (110).
10. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que compreende determinar bytes válidos dos dados recebidos com base em um campo de comprimento nos dados.
11. Método, de acordo com qualquer uma das reivindicações anteriores, caracterizado pelo fato de que um cache é associado com uma granularidade de alinhamento, a granularidade de alinhamento compreendendo: granularidade de fronteira de linha de cache; granularidade de fronteira de página; uma granularidade configurável; ou qualquer combinação das mesmas.
12. Meio legível por máquina caracterizado pelo fato de que inclui código que, quando executado, faz uma máquina realizar o método de qualquer combinação do método definido em qualquer uma das reivindicações 1 a 11.
13. Sistema compreendendo: uma interface de entrada/saída (I/O) (110) para receber dados provenientes de um dispositivo de I/O (114, 116); e lógica, compreendendo pelo menos parcialmente lógica de hardware da interface de I/O; meios para preencher os dados do dispositivo de I/O (114, 116) adicionando valores aos dados na interface de I/O (110) através de uma lógica de alinhamento em resposta aos dados que estão desalinhados, em que um consumidor dos dados preenchidos associados com o dispositivo de I/O (114, 116) ignore os valores adicionados; a interface de I/O (110) é configurada para reconhecer um identificador único do dispositivo de I/O (114, 116), e o identificador único do dispositivo de I/O (114, 116) indica que dados desalinhados podem ser preenchidos na interface de I/O (110), em que meios para preencher são configurados para preencher os dados em resposta à indicação pelo identificador único do dispositivo de I/O (114, 116) caracterizado pelo fato de que: os dados desalinhados são os dados que são solicitados do dispositivo de I/O (114, 116) usando uma solicitação de linha parcial e a lógica de alinhamento é configurada para configurar os dados desalinhados para estarem em conformidade com a estrutura de alinhamento de dados de um consumidor.
14. Sistema, de acordo com a reivindicação 13, caracterizado pelo fato de que o identificador único é um ID de dispositivo do dispositivo de I/O (114, 116).
15. Sistema, de acordo com a reivindicação 13 ou 14, caracterizado pelo fato de que o identificador único é usado para registrar o dispositivo de I/O (114, 116) com a interface de I/O (110).
16. Sistema, de acordo com qualquer uma das reivindicações 13 a 15, caracterizado pelo fato de que registar o dispositivo de I/O (114, 116) com a interface de I/O (110) é parte de estabelecer um contrato de serviço de alinhamento entre o consumidor e a interface de I/O (110).
17. Sistema, de acordo com qualquer uma das reivindicações 13 a 16, caracterizado pelo fato de que a interface de I/O (110) é configurada com identificadores únicos para identificar quando um contrato de serviço de alinhamento entre o consumidor e a interface de I/O (110) para adicionar e ignorar valores preenchidos é estabelecido.
18. Sistema, de acordo com qualquer uma das reivindicações 13 a 17, caracterizado pelo fato de que preencher os dados adicionando valores é realizado para se conformar a uma estrutura de alinhamento de dados para um cache de memória antes de armazenar os dados.
19. Sistema, de acordo com qualquer uma das reivindicações 13 a 18, caracterizado pelo fato de que o preenchimento é realizado sem a realização de uma operação de leitura-modificação-gravação para os dados desalinhados.
20. Sistema, de acordo com qualquer uma das reivindicações 13 a 19, caracterizado pelo fato de que o dispositivo de I/O (114, 116) é configurado para proporcionar o identificador único do dispositivo de I/O (114, 116).
21. Sistema, de acordo com qualquer uma das reivindicações 13 a 20, caracterizado pelo fato de que o consumidor ignora os valores adicionados com base no contrato de alinhamento de serviço entre o consumidor e os meios para a interface de I/O (110).
22. Sistema, de acordo com qualquer uma das reivindicações 13 a 21, caracterizado pelo fato de que o driver determina bytes válidos dos dados recebidos com base em um campo de comprimento nos dados.
23. Sistema, de acordo com qualquer uma das reivindicações 13 a 22, caracterizado pelo fato de que o cache é associado com uma granularidade de alinhamento, a granularidade de alinhamento compreendendo: granularidade de fronteira de linha de cache; granularidade de fronteira de página; uma granularidade configurável; ou qualquer combinação das mesmas.
24. Dispositivo informático caracterizado pelo fato de que compreende: uma interface de entrada/saída (I/O) (110) para receber dados desalinhados provenientes de um dispositivo de I/O (114, 116); lógica, compreendendo pelo menos parcialmente lógica de hardware da interface de I/O (110), para adicionar valores para preencher os dados desalinhados na interface de I/O (110) através de uma lógica de alinhamento, os dados desalinhados são os dados que são solicitados do dispositivo de I/O (114, 116) usando uma solicitação de linha parcial e a lógica de alinhamento é configurada para configurar os dados desalinhados para estarem em conformidade com a estrutura de alinhamento de dados de um consumidor, em que um consumidor dos dados preenchidos associados ao dispositivo de I/O (114, 116) ignora os valores adicionados.
BR112016011256-3A 2013-12-23 2013-12-23 Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático BR112016011256B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077577 WO2015099676A1 (en) 2013-12-23 2013-12-23 Input output data alignment

Publications (2)

Publication Number Publication Date
BR112016011256A2 BR112016011256A2 (pt) 2017-08-08
BR112016011256B1 true BR112016011256B1 (pt) 2022-07-05

Family

ID=53479351

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112016011256-3A BR112016011256B1 (pt) 2013-12-23 2013-12-23 Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático

Country Status (8)

Country Link
US (1) US20160350250A1 (pt)
EP (1) EP3087454A4 (pt)
JP (1) JP6273010B2 (pt)
KR (1) KR101865261B1 (pt)
CN (1) CN105765484B (pt)
BR (1) BR112016011256B1 (pt)
DE (1) DE112013007700T5 (pt)
WO (1) WO2015099676A1 (pt)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437667B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Raid system performance enhancement using compressed data
US9760514B1 (en) * 2016-09-26 2017-09-12 International Business Machines Corporation Multi-packet processing with ordering rule enforcement
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10372603B2 (en) * 2017-11-27 2019-08-06 Western Digital Technologies, Inc. Handling of unaligned writes
JP2023027970A (ja) 2021-08-18 2023-03-03 キオクシア株式会社 メモリシステム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
KR100445542B1 (ko) * 1995-09-01 2004-11-20 필립스 일렉트로닉스 노쓰 아메리카 코포레이션 프로세서의커스텀오퍼레이션들을위한방법및장치
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
JP2003308206A (ja) * 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US8190796B2 (en) * 2004-11-02 2012-05-29 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
US7302525B2 (en) * 2005-02-11 2007-11-27 International Business Machines Corporation Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
US7296108B2 (en) * 2005-05-26 2007-11-13 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
JP4740766B2 (ja) * 2006-02-27 2011-08-03 富士通株式会社 データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム
US7681102B2 (en) * 2006-04-03 2010-03-16 Qlogic, Corporation Byte level protection in PCI-Express devices
JP4343923B2 (ja) 2006-06-02 2009-10-14 富士通株式会社 Dma回路およびデータ転送方法
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8230125B2 (en) * 2007-10-30 2012-07-24 Mediatek Inc. Methods for reserving index memory space in AVI recording apparatus
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
US20120089765A1 (en) * 2010-10-07 2012-04-12 Huang Shih-Chia Method for performing automatic boundary alignment and related non-volatile memory device
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US9304898B2 (en) * 2011-08-30 2016-04-05 Empire Technology Development Llc Hardware-based array compression
JP5857735B2 (ja) * 2011-12-27 2016-02-10 株式会社リコー 画像処理方法、画像処理装置、及び制御プログラム
WO2014038070A1 (ja) * 2012-09-07 2014-03-13 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Also Published As

Publication number Publication date
WO2015099676A1 (en) 2015-07-02
KR20160077110A (ko) 2016-07-01
KR101865261B1 (ko) 2018-06-07
JP2017503237A (ja) 2017-01-26
CN105765484B (zh) 2019-04-09
JP6273010B2 (ja) 2018-01-31
CN105765484A (zh) 2016-07-13
EP3087454A4 (en) 2017-08-02
DE112013007700T5 (de) 2016-09-08
EP3087454A1 (en) 2016-11-02
US20160350250A1 (en) 2016-12-01
BR112016011256A2 (pt) 2017-08-08

Similar Documents

Publication Publication Date Title
US11507528B2 (en) Pooled memory address translation
US11755486B2 (en) Shared buffered memory routing
KR101689998B1 (ko) 고성능 인터커넥트 링크 계층
EP3274861B1 (en) Reliability, availability, and serviceability in multi-node systems with disaggregated memory
US9189441B2 (en) Dual casting PCIE inbound writes to memory and peer devices
US11366773B2 (en) High bandwidth link layer for coherent messages
US10061707B2 (en) Speculative enumeration of bus-device-function address space
BR112016011256B1 (pt) Método de processamento de dados desalinhados, meio legível por máquina, sistema e dispositivo informático
US20210112132A1 (en) System, apparatus and method for handling multi-protocol traffic in data link layer circuitry
US10275388B2 (en) Simultaneous inbound multi-packet processing

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 23/12/2013, OBSERVADAS AS CONDICOES LEGAIS