Por que dispositivos relativamente mais simples, como microcontroladores, são muito mais lentos que as CPUs?

25

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?

Michael
fonte
8
Uma boa parte dos microcontroladores é fabricada com tecnologia obsoleta limítrofe, porque a fábrica é paga.
Matt Young
18
Poder. Considere o consumo de energia de ambas as CPUs e elas estarão muito próximas do mesmo desempenho / watt, ou a micro vencerá.
Brian Drummond
34
A ideia de que mais simples == mais rápido está simplesmente errada. Uma boa parte da complexidade de uma CPU CISC moderna entra em recursos para torná-lo mais rápido, como caches multi nível, oleodutos e previsão de desvios
PlasmaHH
11
esse velho processador não funciona com uma bateria pequena por meses / anos. usou tecnologia de ponta (leia-se: cara) para o seu dia. não teve que esperar no flash lento / barato para todas as instruções. raramente é necessário que um mcu corra rápido, eles podem pegar um novo verilog para o bem dos desenvolvedores e implementá-lo em qualquer fundição. Eu gosto mais do comentário de bicicleta vs carro de fórmula 1, acho que resume tudo.
old_timer
14
20 MHz não é lento. Somos mimados pelas velocidades de GHz dos PCs, onde a maioria dos recursos é usada para renderizar gráficos sofisticados. Você pode voar para a Lua com um processador Kilohertz ...
vsz

Respostas:

66

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.

Adam Haun
fonte
11
Não se esqueça da robustez: uma CPU típica falhará se a tensão de alimentação mudar mais de 5% ou mais, enquanto um ATMega roda de qualquer coisa na faixa de 1,8-5,5V a 4MHz.
Dmitry Grigoryev
11
@DmitryGrigoryev Good point! Eu atualizei minha resposta.
Adam Haun
25

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.

compumike
fonte
4
Além disso, a potência (e, portanto, o calor) aumenta mais do que linearmente com a frequência.
Kimberly W
11
Eu não acho que a leitura do flash esteja perto de 100 ns, é? IIRC é duas ordens de magnitude maior. No entanto, se o seu controlador flash contiver um cache DRAM pequeno e o código não for muito ramificado, a taxa de acertos do cache poderá ser muito alta (90% +), portanto, a latência média poderá ser muito menor.
MSalters
2
Esta folha de dados da AT91SAM7S que eu abri diz sobre seu flash interno "Tempo de acesso rápido, acesso de ciclo único de 30 MHz nas piores condições" para seu flash interno. Isso é 33ns. E possui uma dword de buffer de pré-busca. Flash off-die pode realmente ter maior latência.
Pjc50
11
@ Jamil Não me lembro da fórmula exata, mas acredito que era um quadrado de frequência.
Jan Dorniak
22

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.

AndrejaKo
fonte
12
@ Michael De onde você tira a ideia = rápido?
Matt Young
3
@ Michael Uma bicicleta é muito mais simples que um carro, mas ainda é mais lenta. De qualquer forma, Matt está certo. Algo simples não é automaticamente rápido. Ou seja, algo rápido será complicado, apenas devido a considerações necessárias para frequências mais altas.
precisa saber é o seguinte
2
Os processadores CISC de alto desempenho tendem a emitir muito mais instruções do que os processadores embarcados simples. Eles estão trabalhando muito mais em paralelo, por isso são mais complexos e mais rápidos.
Kimberly W
2
@ Michael $ 1 poderia ser luxuosamente caro para algumas aplicações, eu li que os micro-controladores em cartões micro SD custar cerca de 19 centavos
Xen2050
2
@ Michael "essa é a idéia por trás das arquiteturas RISC: tarefas simples podem ser tratadas mais rapidamente do que as complicadas" Não! As arquiteturas modernas do RISC são extremamente complexas porque precisam introduzir mais instruções (como SIMD) e oferecer suporte a mais recursos como superescalar, hyperthreading, execução fora de ordem ... Sua complexidade pode facilmente exceder as arquiteturas CISC. Atualmente, o MIPS tem centenas ou milhares de instruções. "CISC / RISC é em grande parte um debate histórico"
phuclv 13/04/16
13

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

Spehro Pefhany
fonte
350 nm? Isso explicaria isso. Não sabia que alguém fabricaria algo usando tecnologia de 20 anos.
Michael
3
Alguns de nós ainda estão projetando (não apenas usando) o CMOS da série 4000, que é algo como 3000nm.
Spehro Pefhany
6
Os processos mais antigos também são potencialmente úteis para as pessoas que lidam com ambientes de radiação ou sistemas de alta confiabilidade que exigem rastreabilidade.
Krunal Desai
5
O jogo ainda não acabou - o Parallax Propeller é uma continuação desse conceito.
Dave Tweed
3
@ Michael: Não é apenas a era da tecnologia. O tamanho também importa. Um tamanho de processo maior tem taxas mais baixas de defeitos, o que significa rejeições mais baixas e, portanto, maior rendimento - o que leva a um menor custo por chip. Se você estiver disposto a pagar US $ 100 por uma CPU (como desktops), o custo mais alto devido ao menor rendimento é justificado. Se você está disposto a pagar apenas 50 centavos, isso não se justifica.
slebetman
3

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.

supercat
fonte
2
Desculpe se eu perdi, mas que relevância isso tem para as CPUs versus microcontroladores 'mais lentos'? Parece focar apenas em CPUs vs (normalmente ainda mais rápidos) processadores especializados.
underscore_d
11
@underscore_d: O primeiro parágrafo cobre os microcontroladores mais simples - eles são como a pequena loja que constrói um carro de cada vez. O segundo parágrafo observa que existem alguns controladores baratos que podem executar muitas operações muito rapidamente, mas são limitados nos tipos de operações que eles podem executar. O difícil é ser capaz de executar uma mistura arbitrária de operações enquanto as sobrepõe a um grau significativo (mas altamente variável). Se alguém tem um subsistema que em cada ciclo pode aceitar dois números e saída será o produto de dois números que foram apresentados quatro ciclos atrás, e ...
supercat
11
... outro que em cada ciclo aceita dois números e gera a soma dos que foram enviados há dois ciclos atrás, tentando descobrir quando os valores precisam ser enviados, quando os resultados estarão disponíveis, quando as coisas devem ser carregadas e salvas registros, etc., pode ficar muito complicado, especialmente se alguém quiser evitar o preenchimento de todos os pipelines para coincidir com o mais longo.
Supercat
Obrigado; isso esclarece tudo. Sim, faz sentido que CPUs rápidas de uso geral incorram na maioria de seus custos, tanto financeiros quanto de energia, em 'andaimes' - pipelining, cache, programação, controle de RAM, etc. para micros. Da mesma forma, nunca deixa de me surpreender o que pode ser feito com uma freqüência de clock relativamente pequena em um processador especificamente projetado para um aplicativo. Coisas fascinantes de ambos os lados!
underscore_d
@underscore_d: A arquitetura MIPS foi projetada com a premissa de que os compiladores seriam responsáveis ​​por alguns dos problemas de agendamento, permitindo assim que o hardware fosse simplificado. Acho que o conceito nunca pegou, porque os processadores mais novos geralmente exigem mais estágios de pipeline do que os mais antigos, mas o código escrito para um processador com pipelines mais curtos não funciona em um processador com pipeline mais longo na ausência de intertravamentos de hardware.
Supercat