Qual é a história de porque os bytes são oito bits?

78
O que, onde as forças históricas em ação, as compensações a fazer, ao decidir usar grupos de oito bits como a unidade fundamental?

Havia máquinas, antigamente, usando outros tamanhos de palavras, mas hoje, para não-oito bits, você deve procurar peças de museu, chips especializados para aplicativos embarcados e DSPs. Como o byte evoluiu para fora do caos e da criatividade dos primeiros dias do design do computador?

Eu posso imaginar que menos bits seriam ineficazes para manipular dados suficientes para tornar a computação viável, enquanto muitos levariam a hardware caro. Outras influências estavam em jogo? Por que essas forças se equilibraram em oito bits?

(BTW, se eu pudesse viajar no tempo, eu voltaria a quando o "byte" foi declarado como 8 bits, e convenci a todos a fazer 12 bits, subornando-os com algumas bugigangas do início do século 21). / p>     

por DarenW 16.11.2011 / 20:48
fonte

7 respostas

69

Muito trabalho inicial foi feito com códigos baudot de 5 bits, mas eles rapidamente se tornaram bastante limitantes (apenas 32 caracteres possíveis, basicamente, apenas letras maiúsculas e poucos sinais de pontuação) , mas não "espaço" suficiente para dígitos.

De lá, algumas máquinas foram para caracteres de 6 bits. Isso ainda era bastante inadequado - se você quisesse letras maiúsculas e minúsculas (em inglês) e dígitos, que deixavam apenas mais dois caracteres para pontuação, então a maioria ainda tinha apenas um caso de letras em um conjunto de caracteres.

ASCII definiu um conjunto de caracteres de 7 bits. Isso foi "bom o suficiente" para muitos usos por um longo tempo, e formou a base dos conjuntos de caracteres mais recentes também (ISO 646, ISO 8859, Unicode, ISO 10646, etc.)

Os computadores binários motivam os designers a fazerem o tamanho dos poderes de dois. Como o conjunto de caracteres "padrão" exigia 7 bits de qualquer maneira, não era muito difícil adicionar mais um bit para obter uma potência de 2 (e, então, o armazenamento estava ficando mais barato que "desperdiçar" um pouco para a maioria dos caracteres foi mais aceitável também).

Desde então, os conjuntos de caracteres foram movidos para 16 e 32 bits, mas a maioria dos computadores mainstream é baseada em grande parte no IBM PC original (um design que terá 30 anos nos próximos meses). ). Então, novamente, o suficiente do mercado está suficientemente satisfeito com personagens de 8 bits que, mesmo que o PC não tivesse chegado ao seu nível atual de dominância, eu não tenho certeza se todos fariam tudo com personagens maiores de qualquer maneira.

Devo acrescentar também que o mercado mudou bastante. No mercado atual, o tamanho dos caracteres é definido menos pelo hardware do que pelo software. Windows, Java, etc., mudaram para caracteres de 16 bits há muito tempo.

Agora, o obstáculo no suporte a caracteres de 16 ou 32 bits é apenas minimamente a partir das dificuldades inerentes aos próprios caracteres de 16 ou 32 bits e, em grande parte, da dificuldade de suportar i18n em geral. Em ASCII (por exemplo), detectar se uma letra é maiúscula ou minúscula, ou converter entre as duas, é incrivelmente trivial. Na íntegra Unicode / ISO 10646, é basicamente indescritivelmente complexo (ao ponto que os padrões nem sequer tentam - eles dão tabelas, não descrições). Em seguida, você adiciona o fato de que, para alguns conjuntos de caracteres / idiomas, até mesmo a idéia básica de letras maiúsculas / minúsculas não se aplica. Então você adiciona o fato de que mesmo exibir caracteres em alguns deles é muito mais complexo ainda.

Tudo isso é suficientemente complexo e a grande maioria dos softwares nem tenta. A situação está melhorando lentamente, mas lentamente é a palavra operativa.

    
por 16.11.2011 / 21:13
fonte
10

Sete bits para informações ASCII e um para paridade de detecção de erros.

    
por 16.11.2011 / 21:03
fonte
5

Dê uma olhada na página da Wikipédia na arquitetura de 8 bits . Embora os conjuntos de caracteres possam ter sido de 5, 6 e 7 bits, a arquitetura de barramento de memória / CPU subjacente sempre usou potências de 2. O primeiro microprocessador (por volta de 1970) tinha um barramento de 4 bits, o que significa que bits de dados entre a memória externa e a CPU.

Depois, com o lançamento do processador 8080, a arquitetura de 8 bits tornou-se popular e foi isso que deu o início do conjunto de instruções de montagem x86 que é usado até hoje. Se eu tivesse que adivinhar, o byte veio desses primeiros processadores, onde o público mainstream começou a aceitar e brincar com PCs e 8 bits foi considerado o tamanho padrão de uma única unidade de dados.

Desde então, o tamanho do barramento foi duplicado, mas permaneceu sempre uma potência de 2 (ie 16-, 32- e agora 64-bits). Na verdade, tenho certeza que os internos do barramento de hoje são muito mais complicados do que simplesmente 64 paralelos fios, mas a arquitetura atual da CPU convencional é de 64 bits.

Eu diria que, ao sempre dobrar (em vez de aumentar 50%), era mais fácil criar um novo hardware que coexistisse com aplicativos existentes e outros componentes herdados. Então, por exemplo, quando eles passaram de 8 bits para 16, cada instrução poderia agora mover 2 bytes ao invés de 1, então você economiza um ciclo de clock mas o resultado final é o mesmo. No entanto, se você passasse da arquitetura de 8 para 12 bits, acabaria quebrando os dados originais em metades e o gerenciamento poderia se tornar irritante. Estes são apenas palpites, eu não sou realmente um especialista em hardware.

    
por 17.11.2011 / 03:37
fonte
4

Um byte tem sido diferente (pelo menos) 1, 4, 6, 7, 8, 9, 12, 18, 20 e possivelmente 36 bits, dependendo de qual computador você está olhando. Eu estou tomando "byte" aqui para significar "menor unidade endereçável de memória", ao invés de usar qualquer tipo de interpretação centrada em texto. (Por exemplo, a CPU Saturn, uma CPU de 64 bits usada na popular linha de calculadoras HP48SX / GX, endereça a memória em nibbles - 4 bits.)

Os bytes de 20 bits foram extremamente comuns nas "máquinas IAS", nos anos 50. 6, 12, 18 (e talvez 36) foram bastante populares em uma variedade de arquiteturas nos anos 60, 70 e até 80s.

No final, ter uma boa correspondência entre "potências de 2" e "bits em uma unidade endereçável" parece ter vencido.

    
por 23.09.2013 / 16:55
fonte
1

De acordo com minhas informações, o próprio byte palavra foi derivado da frase by-eight, que era oito (8) palavras de bits. a conveniência que encontramos nas palavras de 8 bits é a conversão para valores hexadecimais, pois o valor 00000000 = 00 & 11111111 = FF (Dez 255 para unsigned e -127 para assinado) é fácil fazer todas as operações aritméticas em tal estrutura, incluindo operações bit a bit.

Eu vejo bytes (palavras de 8 bits) como uma evolução natural de tamanhos de palavras de pequenos e catastróficos 3 bits até palavras ridiculamente grandes de 60 bits

    
por 17.11.2011 / 05:54
fonte
1

Primeiro, um pouco de esclarecimento: os octetos (unidades de 8 bits) não são realmente uma unidade fundamental em arquiteturas de computadores modernos. Pelo menos não mais fundamentais do que outros poderes de dois - 2, 4, 16, 32, 64, 128 etc. Octetos eram a unidade fundamental para processadores de 8 bits (daí o nome!), Mas as arquiteturas modernas normalmente trabalham com bits maiores -conjuntos internamente. Por exemplo. o x86_64 tem registradores de inteiros de 64 bits e registradores de ponto flutuante de 80 bits. A RAM é lida e escrita em pedaços de 64 bits, e o processador usa apenas um pouco de mágica para fazer parecer que você pode endereçar bytes individuais de 8 bits.

Para arquiteturas mais antigas, "byte" indicava o tamanho do barramento de dados e, como a pergunta original indica, existiam muitos tamanhos diferentes de barramento (4, 5, 6, 8, 12 etc.). Mas desde 1993, um byte foi definido como 8 bits, a fim de ter uma unidade SI padronizada para tamanhos de dados. Portanto, o significado de "byte" mudou de uma unidade dependente de arquitetura para uma unidade padronizada independente de arquitetura.

Portanto, atualmente, os bytes são a unidade padrão para endereçar e quantificar dados, mas não são realmente fundamentais de outra forma.

A unidade Octets tornou-se o padrão de fato para armazenamento, principalmente devido a preocupações com o armazenamento de texto. Para armazenar o texto, você deseja, idealmente, que um byte armazene um caractere. Dois fatores foram importantes:

  • Ter unidades com potência de dois (2, 4, 8, 16, 32 etc.) é mais conveniente ao projetar sistemas digitais.
  • 8 bits é suficiente para armazenar um único caractere no conjunto de caracteres ASCII (com espaço de sobra para estender o conjunto de caracteres para suportar, digamos, cirílico).

É claro que 8-bits não são suficientes para suportar todos os scripts - algo como o japonês requer pelo menos 16 bits (e para o que vale, Unicode é 21 bits), mas naquele momento os bits eram caros e mais digitais texto estavam na faixa ASCII de qualquer maneira.

Hoje em dia, o texto é normalmente armazenado em codificações de largura variável, como UTF-8, e com coisas como caracteres combinados Unicode, o "um byte é igual a um caractere" tem sido uma coisa do passado. O byte de hoje é realmente apenas o padrão por razões históricas.

    
por 30.07.2018 / 17:17
fonte
0

Um byte não precisa ter 8 bits , mas parece que C e C ++ definem um byte como sendo pelo menos 8 bits (embora possa ser mais). Esta pergunta sobre estouro de pilha menciona alguns sistemas em que 1 byte não é 8 bits .

    
por 16.11.2011 / 21:02
fonte