Endianness - Arquitetura de computadores

O que é Endianness? Como funciona a ordenação e organização dos bytes nos "data word"? Quando o Endianness interfere na migração entre plataformas?

[ Hits: 7.160 ]

Por: Carlos Henrique Y Furushima em 28/07/2014 | Blog: http://dbafurushima.com.br/index.html


Introdução



Há diversos sistemas computacionais existentes no mercado. É de extrema importância destacar um ponto de diferenciação entre eles, que são as plataformas e arquiteturas.
  • Plataforma: é um conjunto de elementos físicos e lógicos que constroem um sistema computacional, esses elementos são hardware, sistema operacional e biblioteca de tempo de execução (aplicação).
  • Exemplo: Plataforma RISC IBM PPC (IBM PowerPC), Plataforma Intel Itanium, Plataforma CISC Intel X86, etc.

  • Arquitetura: é uma característica de uma determinada plataforma, que descreve a arquitetura de uma CPU e ULA baseadas em registradores e barramentos de dados, ou seja, isso refere-se no poder de endereçamento entre processador x memória principal.
  • Exemplo: 32 bits e 64 bits

  • Plataforma x Arquitetura: é a característica do sistema computacional como um todo, esse casamento ditará o funcionamento do computador em relação a software e hardware.
  • Exemplo: IBM PPC PowerPC 64 bits, Intel X86 32 bits, Oracle SPARC M-Series 64 bits, etc.

O que é Endianness?

É uma convenção usada por uma plataforma computacional, cujo objetivo é interpretar um conjunto de bytes que formam um data word, que, por sua vez, é armazenado de forma temporária na memória principal e de forma permanente em disco.

Os dados são temporariamente armazenados em memória principal em forma de dados binários organizados em unidades de 8 bits, chamado de bytes. Ao ler ou escrever um data word, a ordem dos bytes armazenados em memoria principal determina a interpretação de um data word, ou seja, é neste cenário que nos deparamos com incompatibilidade entre plataformas.

Por exemplo, um banco de dados que está instalado em GNU/Linux com Intel 64 bits e deve migrar para um AIX PowerPC 64 bits.

A ideia de um sistema computacional é semelhante a uma função matemática, implicando várias situações de entrada e saída de resultados. Para atingir um determinado objetivo, dois tipos de entrada e saída são primordiais quando falamos de Endianness, são eles:

Entrada e saída de dados entre registradores de CPU e memória principal:

- Denomina-se Load/Store:
  • O registrador é destino no Load e a memória principal é origem.
  • O registrador é origem no Store e a memória principal é destino.

Entrada e saída entre memória principal e disco:

- Denomina-se Disk Read/Write (I/O):
  • A memória principal é destino no Read (input) e o disco é origem.
  • A memória principal é origem no Write (output) e o disco é destino.


Neste cenário, a forma de ordenar e organizar os dados, é crucial para o processamento de entrada e saída. Podemos presumir, então, que uma conversão de plataforma implica em uma nova forma de ordenação e organização dos bytes.

Assim, conversões de plataformas sem o devido tratamento, implica inevitavelmente na corrupção dos dados ou na ininteligência na interpretação dos data word a serem processados.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Funcionamento / Interferência entre migração
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando uma placa DWL-520+ no kernel 2.6.x

Instalação da placa PXE Intelbras

MP3 Player USB no Slackware

Instalando a multifuncional Epson Stylus TX210 no Ubuntu 9.10

Configurando impressora HP692C no Slackware

  
Comentários
[1] Comentário enviado por phoemur em 28/07/2014 - 12:40h

Muito bom.

Para saber seu endianness eu uso:

lscpu | grep -i byte

ou em python:

python -c 'import sys; print(sys.byteorder)'


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts