Onde estão as forças históricas em ação, as compensações a serem tomadas, ao decidir usar grupos de oito bits como unidade fundamental?
Havia máquinas, uma vez, usando outros tamanhos de palavras, mas hoje, para quem não tem oito anos, deve procurar peças de museu, chips especializados para aplicativos incorporados e DSPs. Como o byte evoluiu do caos e da criatividade dos primeiros dias do design de computadores?
Posso imaginar que menos bits seriam ineficazes para manipular dados suficientes para viabilizar a computação, enquanto muitos teriam levado a hardware caro. Havia outras influências em jogo? Por que essas forças se equilibram em oito bits?
(BTW, se eu pudesse viajar no tempo, voltaria quando o "byte" fosse declarado como 8 bits e convenceria a todos a torná-lo 12 bits, subornando-os com algumas bugigangas do início do século XXI.)
Respostas:
Muito trabalho inicial foi feito com códigos baudot de 5 bits, mas esses rapidamente se tornaram bastante limitantes (apenas 32 caracteres possíveis, basicamente apenas letras maiúsculas e alguns sinais de pontuação, mas não há espaço suficiente para dígitos) .
A partir daí, algumas máquinas passaram a caracteres de 6 bits. No entanto, isso ainda era bastante inadequado - se você quisesse letras e dígitos em maiúsculas e minúsculas (em inglês), isso deixava apenas mais dois caracteres para pontuação, portanto, 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 também formou a base da maioria dos conjuntos de caracteres mais recentes (ISO 646, ISO 8859, Unicode, ISO 10646 etc.)
Os computadores binários motivam os designers a criar tamanhos 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 a potência de 2 (e, nessa época, o armazenamento estava se tornando mais barato do que "desperdiçar" um pouco para a maioria dos caracteres). era mais aceitável também).
Desde então, os conjuntos de caracteres passaram para 16 e 32 bits, mas a maioria dos computadores convencionais se baseia amplamente no PC IBM original. Por outro lado, o suficiente do mercado está suficientemente satisfeito com os caracteres de 8 bits que, mesmo que o PC não tivesse atingido seu nível atual de domínio, não tenho certeza se todo mundo faria tudo com caracteres maiores de qualquer maneira.
Devo acrescentar também que o mercado mudou bastante. No mercado atual, o tamanho dos caracteres é definido menos pelo hardware que pelo software. Windows, Java etc. foram movidos para caracteres de 16 bits há muito tempo.
Agora, o obstáculo ao suportar caracteres de 16 ou 32 bits é minimamente das dificuldades inerentes aos próprios caracteres de 16 ou 32 bits e, em grande parte, da dificuldade de suportar o i18n em geral. Em ASCII (por exemplo), detectar se uma letra é maiúscula ou minúscula ou converter entre as duas é incrivelmente trivial. No Unicode / ISO 10646 completo, é basicamente indescritivelmente complexo (a ponto de os padrões nem tentarem - eles fornecem tabelas, não descrições). Em seguida, você adiciona o fato de que, para alguns idiomas / conjuntos de caracteres, mesmo a idéia básica de maiúsculas / minúsculas não se aplica. Depois, você adiciona o fato de que até a exibição de caracteres em alguns deles é muito mais complexa ainda.
Tudo isso é suficientemente complexo que a grande maioria dos softwares nem tenta. A situação está melhorando lentamente, mas lentamente é a palavra operativa.
fonte
Sete bits para informações ASCII e um para paridade de detecção de erros.
fonte
Dê uma olhada na página da Wikipedia sobre arquitetura de 8 bits . Embora os conjuntos de caracteres pudessem ter 5, 6 e 7 bits, a arquitetura subjacente de barramento de CPU / memória sempre usava potências de 2. O primeiro microprocessador (por volta de 1970) tinha barramento de 4 bits, o que significa que uma instrução poderia se mover 4- bits de dados entre a memória externa e a CPU.
Então, com o lançamento do processador 8080, a arquitetura de 8 bits se tornou popular e foi isso que deu o início do conjunto de instruções de montagem do x86 que é usado até hoje em dia. Se eu tivesse que adivinhar, o byte veio desses processadores antigos, onde o grande público começou a aceitar e brincar com PCs e 8 bits, sendo considerado o tamanho padrão de uma única unidade de dados.
Desde então, o tamanho do barramento dobrou, mas sempre manteve uma potência de 2 (ou seja, 16, 32 e agora 64 bits). Na verdade, tenho certeza de que as partes internas do barramento de hoje são muito mais complicadas do que simplesmente 64 fios paralelos, mas A arquitetura atual da CPU convencional é de 64 bits.
Eu diria que sempre dobrando (em vez de aumentar 50%) era mais fácil criar um novo hardware que coexistisse com aplicativos existentes e outros componentes herdados. Por exemplo, quando eles passaram de 8 bits para 16, cada instrução agora pode mover 2 bytes em vez de 1, para que você economize um ciclo de clock, mas o resultado final seja o mesmo. No entanto, se você passasse da arquitetura de 8 para 12 bits, acabaria dividindo os dados originais em metades e gerenciando isso poderia se tornar irritante. Essas são apenas suposições, eu não sou realmente um especialista em hardware.
fonte
Um byte tem vários (pelo menos) 1, 4, 6, 7, 8, 9, 12, 18, 20 e possivelmente 36 bits, dependendo do computador que você está visualizando. Estou usando "byte" aqui para significar "menor unidade de memória endereçável", em vez de usar qualquer tipo de interpretação centrada em texto. (Por exemplo, a CPU Saturn, uma CPU de 64 bits usada na popular linha da calculadora HP48SX / GX endereça a memória em petiscos - 4 bits.)
Os bytes de 20 bits eram extremamente comuns nas "máquinas IAS", nos anos 50. 6, 12, 18 (e talvez 36) eram bastante populares em uma variedade de arquiteturas nos anos 60, 70 e, até certo ponto, nos anos 80.
No final, ter uma boa correspondência entre "potências de 2" e "bits em uma unidade endereçável" parece ter vencido.
fonte
Primeiro, um pouco de esclarecimento: os octetos (unidades de 8 bits) não são realmente uma unidade fundamental nas arquiteturas modernas de computadores. Pelo menos não mais fundamental do que outras potências de dois - 2, 4, 16, 32, 64, 128 etc. Os octetos eram a unidade fundamental para processadores de 8 bits (daí o nome!), Mas as arquiteturas modernas geralmente trabalham com bit maior -configura internamente. Por exemplo, o x86_64 possui registradores inteiros de 64 bits e registradores de ponto flutuante de 80 bits. A RAM é lida e escrita em partes de 64 bits, e o processador usa apenas um pouco de mágica para parecer que você pode endereçar bytes de 8 bits individuais.
Para arquiteturas mais antigas, "byte" indicava o tamanho do barramento de dados e, como afirma a pergunta original, existiam muitos tamanhos de barramento diferentes (4, 5, 6, 8, 12 etc.). Porém, desde 1993, um byte é definido como 8 bits, para ter uma unidade SI padronizada para tamanhos de dados. Portanto, o significado de "byte" mudou de uma unidade dependente da arquitetura para uma unidade padronizada independente da arquitetura.
Atualmente, os bytes são a unidade padrão para endereçar e quantificar dados, mas não são realmente fundamentais.
A unidade de octetos se tornou o padrão de fato de armazenamento principalmente devido a preocupações com o armazenamento de texto. Para armazenar texto, o ideal é que você deseje um byte para armazenar um caractere. Dois fatores foram importantes:
É 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 nesse momento os bits eram caros e a maioria dos textos digitais era o intervalo ASCII de qualquer maneira.
Hoje em dia, o texto é normalmente armazenado em codificações de largura variável como UTF-8 e, com coisas que combinam caracteres Unicode, o "um byte é igual a um caractere" faz parte do passado. Hoje, o byte é realmente apenas o padrão por razões históricas.
fonte
De acordo com minhas informações, a palavra byte em si foi derivada da frase by-oito, que era de oito (8) bits. a conveniência que encontramos em palavras de 8 bits é a conversão para valores hexadecimais, já que o valor 00000000 = 00 & 11111111 = FF (255 de dezembro para não assinado e -127 para assinado) é fácil de executar todas as operações aritméticas nessa estrutura, inclusive em termos de bits operações.
Vejo bytes (palavras de 8 bits) como uma evolução natural do tamanho das palavras, de catastroficamente pequenas de 3 bits a ridiculamente grandes palavras de 60 bits
fonte
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 no Stack Overflow menciona alguns sistemas em que 1 byte não é 8 bits.
fonte
CHAR_BITS
macro)