Microcontroladores / microprocessadores e diferentes versões de bits, qual é a diferença?

20

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.

Capcom
fonte

Respostas:

24

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).

Chris Stratton
fonte
3
A largura que ele pode suportar em uma única operação pode ser importante ao sincronizar partes assíncronas do programa. Se você precisar ler atomicamente um valor de 16 bits em um micro de 8 bits, provavelmente precisará desativar as interrupções primeiro, o que pode ser evitado para manter o tempo de resposta do ISR baixo.
Ndim 21/01
Outra característica em que alguns micros de 8 bits podem ser superiores ao ARM (a arquitetura de 32 bits mais popular) é com o ajuste de bits de E / S. Um PIC 18Fxx (8 bits) pode definir ou limpar qualquer bit no espaço de E / S com uma única instrução, independentemente do que os registros contenham, enquanto um ARM geralmente requer um processo de várias etapas. Os chips ARM podem executar mais instruções por segundo do que os chips PIC atualmente disponíveis (alguns pequenos chips compatíveis com PIC de 100MHz costumavam estar disponíveis na Scenix, mas acho que foram descontinuados), mas mesmo os PICs disponíveis ainda podem fazer algum tipo de troca de bits Mais rápido.
Supercat
11
Embora menos universais, alguns dispositivos ARM possuem coisas como os registros GPIOx_BSRR / GPIOx_BRR que podem ser gravados para definir ou limpar bits GPIO individuais.
Chris Stratton
8

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.

28256

21665,536

232.4,294,967,296

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

Garrett Fogerlie
fonte