Pergunta

Nós temos 8 bits, 16 bits, 32 bits e 64 bits arquiteturas de hardware e sistemas operacionais. Mas não, digamos, uns 42 bits ou 69 bits.

Por quê? É algo fundamental que faz com que 2 ^ n bits de uma melhor escolha, ou é apenas sobre a compatibilidade com os sistemas existentes? (É óbvio que é conveniente que a 64-bit de registro pode conter dois ponteiros de 32 bits, ou que uma unidade de dados de 32 bits pode armazenar 4 bytes).

Foi útil?

Solução

Isso é principalmente uma questão de tradição. Ele nem mesmo sempre é verdade. Por exemplo, as unidades de ponto flutuante em processadores (mesmo aqueles contemporâneos) tem 80 bits de registos. E não há nada que nos obrigaria a ter 8-bit bytes em vez de bytes de 13 bits.

Às vezes, isso tem o raciocínio matemático. Por exemplo, se você decidir ter um N bits de byte e querem fazer a multiplicação inteiro que você precisa exatamente 2N bits para armazenar os resultados. Então você também deseja adicionar / subtrair / multiplicar essas 2N-bits inteiros e agora você precisa de 2N-bits registradores de uso geral para armazenar os resultados adição / subtração e 4N-bits registradores para armazenar os resultados de multiplicação.

Outras dicas

http://en.wikipedia.org/wiki/Word_%28computer_architecture % 29 # Word_size_choice

Diferentes quantidades de memória são usados ??para armazenar valores de dados com diferentes graus de precisão. Os tamanhos vulgarmente usados ??são geralmente uma potência de 2 múltiplo da unidade de resolução de endereços (byte ou palavra). Convertendo o índice de um item de uma matriz para o endereço do item, em seguida, requer apenas uma operação de mudança, em vez de uma multiplicação. Em alguns casos, essa relação também pode evitar o uso de operações de divisão. Como resultado, a maioria dos modernos designs de computador têm tamanhos de palavra (e outros tamanhos operando) que são uma potência de 2 vezes o tamanho de um byte.

Em parte, é uma questão de abordar. Tendo N bits de endereço permite que você endereço 2 ^ N bits de memória, no máximo, e os designers de hardware preferem utilizar ao máximo essa capacidade. Assim, você pode usar 3 bits para o endereço barramento de 8 bits etc ...

O PDP-10 era 36 bits.

Muitos (a maioria?) No início pré-microprocessador CPUs têm algum número de bits por palavra que não são uma potência de dois.

Em particular, Seymour Cray e sua equipe construíram muitas máquinas altamente influentes com não-potência de dois tamanhos de palavra e tamanhos de endereço - 12 bits, 48 ??bits, 60 bits, etc

.

Um número surpreendentemente grande de primeiros computadores teve palavras de 36 bits, inteiramente devido ao fato de que os seres humanos têm 10 dedos. A Wikipedia "36-bit" artigo tem mais detalhes sobre a relação entre os 10 dedos e 36 bits, e links para artigos sobre muitos outros tamanhos historicamente importantes, mas não mais populares bit, a maioria deles não é uma potência de dois.

I especular que

(a) 8 bit de memória endereçável tornou-se popular porque era um pouco mais conveniente para armazenar ASCII 7-bit e de 4 bits BCD, sem qualquer embalagem estranha ou desperdiçar vários bits por caractere; e nenhuma outra memória largura teve qualquer grande vantagem.

(b) Como Stephen C. Aço aponta, que ligeira vantagem é multiplicado por economias de escala forças e de mercado - memórias mais de 8-bits de largura são usadas, e assim economias de escala torná-los um pouco mais barato, levando a memórias ainda mais de 8-bits de largura sendo usado em novos projetos, etc.

(c) mais amplas larguras de ônibus em teoria feita uma CPU mais rápida, mas colocando toda a CPU em um único chip tornou muito mais barato e talvez um pouco mais rápido do que qualquer sistema de CPU multi-parte anterior de qualquer largura de ônibus. No início havia apenas o suficiente transistores para uma CPU de 4 bits, então uma CPU de 8 bits. Mais tarde, houve transistores apenas o suficiente para uma CPU de 16 bits, a uma enorme fanfarra e campanha de marketing "16 bit". Bem na época que seria de esperar de uma CPU de 24 bits ...

(d) a revolução RISC atingido. Os dois primeiros chips RISC eram 32 bits, por qualquer motivo, e as pessoas tinham sido condicionados a pensar que "mais bits são melhores", de modo que cada fabricante saltaram no movimento de 32 bits. Além disso, IEEE 754-1985 foi padronizado com números de ponto de 32 bits e de 64 bits flutuantes. Havia cerca de 24 CPUs bit, mas a maioria das pessoas nunca ouviu falar deles.

(e) Por razões de compatibilidade de software, fabricantes mantida a ilusão de um 32-bit databus mesmo em processadores com um front-side bus de 64 bits (como o Intel Pentium ea AMD K5, etc.) ou em placas-mãe com um 4 bits de largura de ônibus (LPC ônibus).

Seu sistema de memória quer ser um múltiplo byte, o que torna o cache querer ser um múltiplo byte, o que torna todo o seu sistema quer ser um múltiplo de bytes.

Falando como um designer HW, você geralmente quer projetar CPU é a limites de byte de algum tipo, ou seja, múltiplos de 8. Caso contrário você tem que adicionar um monte de circuitos estranho para um sistema de 49 bits para torná-lo utilizar o mod -8 pedaços, ou você acaba ignorando os bits extras, caso em que era um desperdício, a menos que você precisava do bit extra para obter instruções, o que nunca é o caso em sistemas de 16 bits ou mais.

Como já foi apontado, nos primeiros dias, as coisas não eram tão clara: palavras vieram em todos os tipos de tamanhos de excêntrico.

Mas o esforço para padronizar 8bit bytes também foi impulsionada pela tecnologia de chips de memória. Nos primeiros dias, muitos chips de memória foram organizados como 1bit por endereço. Memória para palavras de m-bit foi construído utilizando chips de memória em grupos de n (com linhas de endereço amarrados correspondente, e cada fichas de dados de bit único, contribuindo para um bit da palavra de n bits).

Como densidades de chips de memória ficou maior, os fabricantes embalado múltiplos chips em um único pacote. Porque os tamanhos de palavra populares a maioria em uso eram múltiplos de 8 bits, memória de 8 bits era particularmente popular: isso significava era também o mais barato. Como mais e mais arquiteturas saltou para o movimento byte de 8 bits, o preço premium para chips de memória que não usavam bytes de 8 bits ficou maior e maior. Argumentos semelhantes são responsáveis ??por movimentos de 8-> 16, 16-> 32, 32-> 64.

Você ainda pode projetar um sistema com memória de 24 bits, mas que a memória será, provavelmente, muito mais caro do que um projeto similar usando a memória de 32 bits. A menos que haja uma boa razão para vara em 24 bits, a maioria dos designers optaria por 32 bits quando o seu mais barato e mais capaz.

Ao mesmo tempo, palavra comprimentos computador tende a ser um múltiplo de 6 bits, porque os computadores normalmente utilizados conjuntos de caracteres de 6 bits, sem suporte para letras minúsculas.

IBM fez um computador de alta performance, o trecho, para Los Alamos, que tinha uma palavra de 64 bits. Ele teve a característica incomum que bits individuais na memória do computador pode ser diretamente abordados, o que obrigou o comprimento da palavra para ser uma potência de dois. Ele também um conjunto de caracteres mais alargado, o que permitiu símbolos matemáticos (em adição a diminuir caso) a ser incluído; eles foram usados ??em um nível mais alto linguagem chamada COLASL especial.

Quando a IBM saiu com o muito popular mainframe System / 360, mesmo que ele não tinha bits de endereçamento, manteve o byte de oito bits, principalmente para permitir o armazenamento eficiente de quantidades decimais embalados em quatro bits para o dígito decimal. Porque essa máquina era tão popular, foi muito influente, e o computador PDP-11 da DEC foi projetado com uma palavra de 16-bit e 8-bit caracteres. O PDP-11 também foi a primeira máquina little-endian verdade, e ele também era muito popular e influente.

Mas não é só por causa da seguinte forma. caracteres de 8 bits permitir que o texto minúscula e, como computadores ficaram mais baratos, sendo capaz de usá-los facilmente para processamento de texto foi valorizado. E assim como o trecho necessário para ter uma palavra que tinha uma potência de dois tamanho em bits para permitir que os bits para ser facilmente tratadas, os computadores de hoje precisava ter uma palavra que era um múltiplo potência de dois dos 8 (que passa a ser dois para o terceiro poder em si) para permitir caracteres para ser facilmente tratadas.

Se ainda usado 6 caracteres bit, computadores tendem a ter 24, 48 ou 96 bits palavras.

relacionados, mas possivelmente não a razão, ouvi dizer que a convenção de 8 bits em um byte é porque é como IBM montaram o IBM System / 360 arquitetura.

Uma razão comum é que você pode numerar seus bits em binário. Isto vem a ser útil em algumas situações. Por exemplo, em bitshift ou operações de rotação. Você pode girar um valor de 16 bits mais de 0 a 15 bits. Uma tentativa de rodar mais de 16 bits também é trivial: isso é equivalente a uma rotação mais de 0 bits. E uma rotação mais de 1027 pedaços é igual a uma rotação mais de 3 bits. Em geral, uma rotação de um registo de bits de largura W por cima n é igual a uma rotação ao longo do módulo N W, e o "módulo W" operação é trivial quando W é uma potência de dois.

A 80186, 8086, 8088 e "Modo Real" em 80286 e processadores posteriores usou um 20-bit segmentado sistema de endereçamento de memória. O 80286 tinha 24 linhas de endereço nativas e, em seguida, a 386 e mais tarde tinha 32 ou 64.

Outra contra-exemplo:. Os microcontroladores da série PIC16C8X ter um 14 bit conjunto de instruções de largura

Byte está relacionada com a codificação de caracteres na maior parte do mundo ocidental, portanto, de 8 bits. Palavra não está relacionada com que o codifica relacionada com a largura de endereço, portanto, é variado 4-80 etc etc

Meu bom e velho calculadora HP 32S era 12-bits.

Como o espaço reservado para o endereço é sempre um número fixo de bits. Depois de ter definido o tamanho endereço fixo (ou ponteiro), então você quer fazer o melhor possível, então você tem que usar todos os seus valores até que o maior número que pode armazenar. O número mais alto que você pode obter de um múltiplo de um bit (0 ou 1) é sempre uma potência de dois

Pode ser que você pode encontrar alguma coisa aqui: Binary_numeral_system

A ICL 1900 eram todos de 24 bits (palavras). Bet não há um monte de pessoas se lembram deles. Você fazer ??

Temos, basta olhar para microcontroladores PIC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top