Como hobby de engenharia geral, estou aprendendo mais sobre o mundo dos microcontroladores todos os dias. Uma coisa que ainda não entendi é o significado da versão bit de um microcontrolador.
Uso o ATmega8 há vários meses e parece funcionar muito bem para meus propósitos. Sei como coisas como velocidade do relógio, memória, número de pinos de E / S, tipos de barramentos de comunicação etc. diferenciam um microcontrolador de outro. Mas não entendo bem o significado de, digamos, 8 bits vs. 16 bits vs. 32 bits. Entendo que uma versão de bit superior permite que o dispositivo armazene números maiores, mas, novamente, como isso afeta minha decisão? Se eu estiver projetando um produto, em que cenário hipotético eu decidirei que um processador de 8 bits simplesmente não funciona e que preciso de algo mais alto.
Existe alguma razão para acreditar que uma variante teórica de 32 bits do ATmega8 (todas as outras coisas iguais) seria superior a uma versão de 8 bits (se tal dispositivo fosse possível)?
Eu posso estar falando bobagem, mas acho que isso é resultado da minha confusão.
fonte
Respostas:
Não é a largura do número que pode armazenar, é a largura com a qual pode trabalhar em uma única operação. Normalmente (mas não necessariamente), isso também tem um grau de correlação com a largura do endereçamento de memória nativa e, portanto, a quantidade de armazenamento que pode ser facilmente mapeada sem soluções feias, como segmentação ou troca de banco.
Os núcleos de 32 bits de hoje são superiores aos projetos de 8 na maioria dos aspectos (flexibilidade, modelo de memória plana e, é claro, desempenho), com as principais exceções sendo sistemas legados, aplicativos com extrema pressão de volume e preço (caso contrário, os preços tendem a se correlacionar melhor com no tamanho da memória do chip do que na largura do núcleo) e efeitos colaterais do processo / densidade. O posterior pode fornecer coisas como operação de 5v, ou possivelmente em alguns casos maior dureza de radiação ou uma vantagem de simplicidade se tentar provar que o próprio design da CPU está livre de erros lógicos. Um efeito colateral final do processo / idade do valor para muitos entusiastas é que os núcleos de 8 bits nos pacotes DIP são comuns, enquanto os dispositivos de 32 bits nesses pacotes são mais raros (embora existam).
fonte
O valor do bit é o tamanho do barramento de dados ou do canal de dados, o que significa que um MCU de 8 bits pode (na maior parte) trabalhar apenas com valores de 0 a 255 a cada ciclo de clock. Pense nisso como o processador tem 8 linhas digitais em paralelo. E um 16 bits tem 16 linhas e 32 bits tem 32 linhas. Portanto, para cada ciclo de clock, ele lê essas linhas de dados e, quanto mais linhas, maior o valor com o qual você pode trabalhar por ciclo de clock.
Barramentos de dados maiores também permitem que o processador acesse endereços de memória maiores.
Isso faz uma grande diferença durante operações matemáticas. Um número de 16 bits oferece muito mais precisão do que números de 8 bits. Os microcontroladores de 16 bits também são mais eficientes no processamento de operações matemáticas em números com mais de 8 bits. Um microcontrolador de 16 bits pode operar automaticamente em dois números de 16 bits, como a definição comum de um número inteiro. Mas quando você está usando um microcontrolador de 8 bits, o processo não é tão simples. As funções implementadas para operar com esses números levarão ciclos adicionais. Dependendo da intensidade do processamento da sua aplicação e de quantos cálculos você faz, isso pode afetar o desempenho do circuito.
Diferença entre microcontrolador de 8 e 16 bits
fonte