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.