Dado o mesmo número de estágios de tubulação e o mesmo nó de fabricação (digamos, 65 nm) e a mesma voltagem, os dispositivos simples devem funcionar mais rápido que os mais complicados. Além disso, a mesclagem de vários estágios do pipeline em um só deve diminuir a velocidade por um fator maior que o número de estágios.
Agora pegue uma CPU de cinco anos de idade, executando 14 estágios de pipeline em 2,8 GHz. Suponha que alguém mescla os estágios; isso diminuiria para menos de 200 MHz. Agora aumente a tensão e reduza o número de bits por palavra; isso realmente aceleraria as coisas.
É por isso que não entendo por que muitos microcontroladores atualmente fabricados, como o AVL, operam em velocidade abismal (como 20 MHz a 5 V), embora as CPUs muito mais complicadas fabricadas anos atrás fossem capazes de rodar 150x mais rápido ou 10x mais rápido se você rolar todos os estágios do pipeline em um, a 1,2 V-ish. De acordo com os cálculos mais grosseiros do verso do envelope, os microcontroladores - mesmo que fabricados com a tecnologia obsoleta limítrofe - devem rodar pelo menos 10 vezes mais rápido em um quarto da voltagem fornecida.
Assim, a pergunta: quais são as razões para as taxas de clock do microcontrolador lento?
Respostas:
Existem outros fatores que contribuem para a velocidade.
Memória: O desempenho real geralmente é limitado pela latência da memória. As CPUs Intel têm grandes caches para compensar isso. Microcontroladores geralmente não. A memória flash é muito mais lenta que a DRAM.
Consumo de energia: Isso costuma ser um grande problema em aplicativos incorporados. Os processadores Intel de 200 MHz reais consumiam mais de 10 watts (geralmente muito mais) e precisavam de um grande dissipador de calor e um ventilador. Isso requer espaço e dinheiro, e nem está contando a lógica e a memória externas que a acompanhavam. Um AVR de 20 MHz leva cerca de 0,2 watts, o que inclui tudo o que você precisa. Isso também está relacionado ao processo - transistores mais rápidos tendem a ser mais vazados.
Condições de operação: Como Dmitry aponta nos comentários, muitos microcontroladores podem operar em uma ampla faixa de tensão e temperatura. O ATMega que mencionei acima funciona de -40 ° C a 85 ° C e pode ser armazenado entre -65 ° C e 150 ° C. (Outros MCUs funcionam até 125 ° C ou 155 ° C). A tensão do VCC pode variar de 2,7V a 5,5V (5V +/- 10% para desempenho máximo). Esta folha de dados do Core i7 é difícil de ler, pois diminui o VCC permitido durante a fabricação, mas as tolerâncias de voltagem e temperatura são certamente mais estreitas - ~ 3% de tolerância de voltagem e temperatura de junção máxima de 105C. (Mínimo de 5 ° C, mas quando você está usando mais de 100 amperes, as temperaturas mínimas não são realmente um problema.)
Contagem de portas: mais simples nem sempre é mais rápido. Se fosse, a Intel não precisaria de nenhum arquiteto de CPU! Não é apenas pipelining; você também precisa de coisas como uma FPU de alto desempenho. Isso aumenta o preço. Muitos MCUs low-end têm CPUs somente inteiras por esse motivo.
Orçamento da área da matriz: Os microcontroladores precisam ajustar muita funcionalidade em uma matriz, o que geralmente inclui toda a memória usada para o aplicativo. (SRAM e flash NOR confiável são muito grandes.) As CPUs de PC conversam com memória e periféricos fora do chip.
Processo: Esses AVRs de 5V são feitos em um antigo processo de baixo custo. Lembre-se, eles foram projetados desde o início para serem baratos. A Intel vende produtos de consumo com margens altas, usando a melhor tecnologia que o dinheiro pode comprar. A Intel também está vendendo CMOS puro. Os processos de MCU precisam produzir memória flash no chip, o que é mais difícil.
Muitos dos fatores acima estão relacionados.
Hoje você pode comprar microcontroladores de 200 MHz ( aqui está um exemplo ). Claro, eles custam dez vezes mais do que os ATMegas de 20 MHz ...
A versão curta é que a velocidade é mais complicada do que a simplicidade, e os produtos baratos são otimizados para baixo preço, não velocidade.
fonte
Um dos principais motivos técnicos subjacentes às velocidades lentas é que os MCUs baratos / pequenos usam apenas memória flash no chip para armazenamento do programa (ou seja, eles não são executados a partir da RAM).
MCUs pequenos geralmente não armazenam em cache a memória do programa, portanto, sempre precisam ler uma instrução do flash antes de executá-la, a cada ciclo. Isso fornece desempenho determinístico e # ciclos / operação, é apenas mais barato / mais simples e evita problemas semelhantes ao PC, onde códigos e dados são misturados, criando um novo conjunto de ameaças por estouros de buffer, etc.
A latência de leitura da memória flash (da ordem de 50 a 100ns) é muito mais lenta que a leitura da SRAM ou DRAM (da ordem de 10ns ou menos), e essa latência deve ser incorrida a cada ciclo, limitando a velocidade do relógio. parte.
fonte
Por que as pessoas andam de bicicleta ou de moto pequena quando você tem um carro de Fórmula 1? Certamente deve ser melhor dirigir, digamos, 300 km / he chegar a qualquer lugar instantaneamente?
Simplificando, não há necessidade de ser mais rápido do que eles. Quero dizer, com certeza existem microcontroladores um pouco mais rápidos que permitem algumas coisas, mas o que você fará em uma máquina de venda automática em uso contínuo por talvez 1 hora por dia? O que você fará em um controle remoto, digamos, para uma TV?
Por outro lado, eles têm outros recursos importantes, como baixo consumo de energia, sendo MUITO mais simples de programar e assim por diante. Basicamente, eles não são processadores e fazem coisas diferentes.
fonte
Existem muitos controladores ARM que funcionam a centenas de MHz ou mais. Quem precisa de um PIC de 500 MHz e está disposto a pagar o suficiente por parte para justificar máscaras de milhões de dólares para um processo próximo do estado da arte?
O popular ATmega328 é fabricado com tecnologia de 350 nm, um pouco atrás das CPUs Intel de última geração (14 nm para Skylake ).
Até mesmo os controladores baratos de 8 bits têm aumentado lentamente, e você pode obter controladores PIC de 32 e 64 MHz (por exemplo, PIC18F14K22) que ainda operam a 5 V (o último é uma consideração no custo total do sistema).
Uma consideração é que esses controladores possuem uma arquitetura otimizada para pequenos espaços de memória e baixas velocidades de clock. Depois de começar a atingir altas velocidades de relógio, você deve rejeitar as coisas com pré-calibradores, etc.
Houve uma tentativa de voltar (final dos anos 90) para produzir controladores PIC muito rápidos, com a idéia de que o firmware poderia substituir os periféricos se o microcontrolador fosse rápido o suficiente. Por exemplo, você pode fazer um bit-UART. Eu não acho que eles tiveram tanto sucesso comercial - Scenix-> Ubicom-> Qualcomm (game over).
fonte
Imagine que alguém queira produzir automóveis. Uma abordagem seria usar um monte de equipamentos na fábrica sequencialmente, construindo um carro por vez. Essa abordagem pode ser feita com uma quantidade modesta de equipamento moderadamente complicado; muitas peças de equipamento podem ser usadas para executar mais de uma etapa. Por outro lado, grande parte do equipamento da fábrica continuaria ocioso a maior parte do tempo.
Outra abordagem é configurar uma linha de montagem, para que, assim que o equipamento que lidou com a primeira etapa da produção concluir a operação no primeiro carro, ele possa prosseguir para iniciar a operação correspondente no próximo carro. Tentar reutilizar uma peça de equipamento em vários estágios do processo de fabricação seria complicado; portanto, na maioria dos casos, seria melhor usar mais peças de equipamento otimizadas para executar uma tarefa muito específica (por exemplo, se for necessário perfurar). furos de 10 tamanhos diferentes, uma configuração de equipamento mínimo incluiria uma broca com 10 bits e um mecanismo de troca rápida, mas uma linha de montagem poderia ter 50 brocas cada uma com uma broca instalada permanentemente e sem necessidade de troca rápida) .
Para coisas como DSPs ou GPUs, é possível obter velocidades muito altas de forma relativamente barata, porque a natureza do trabalho a ser executado é muito consistente. Infelizmente, muitas CPUs precisam ser capazes de lidar com misturas arbitrárias de instruções de complexidade diferente. Fazer isso com eficiência é possível, mas requer lógica de agendamento muito complexa. Em muitas CPUs modernas, a lógica necessária para "fazer o trabalho" não é excessivamente complicada ou cara, mas a lógica necessária para coordenar todo o resto.
fonte