¿Por qué los dispositivos relativamente más simples, como los microcontroladores, son mucho más lentos que las CPU?

25

Dado el mismo número de etapas de la tubería y el mismo nodo de fabricación (por ejemplo, 65 nm) y el mismo voltaje, los dispositivos simples deberían funcionar más rápido que los más complicados. Además, la fusión de varias etapas de canalización en una sola no debería reducirse en un factor mayor que el número de etapas.

Ahora tome una CPU de cinco años, ejecutando 14 etapas de tubería a 2.8 GHz. Supongamos que uno fusiona las etapas; eso disminuiría a menos de 200 MHz. Ahora aumente el voltaje y reduzca el número de bits por palabra; eso realmente aceleraría las cosas.

Es por eso que no entiendo por qué muchos microcontroladores fabricados actualmente, como AVL, funcionan a una velocidad abismal (como 20 MHz a 5 V), aunque las CPU mucho más complicadas fabricadas hace años eran capaces de funcionar 150 veces más rápido o 10 veces más rápido si enrolla todas las etapas de la tubería en una, a 1.2 V-ish. De acuerdo con los cálculos más burdos, los microcontroladores, incluso si se fabrican con tecnología obsoleta límite, deberían funcionar al menos 10 veces más rápido a una cuarta parte del voltaje que reciben.

Por lo tanto, la pregunta: ¿Cuáles son las razones de las bajas velocidades de reloj del microcontrolador?

Miguel
fuente
8
Una buena parte de los microcontroladores se fabrican con tecnología obsoleta bordline porque el fab está pagado.
Matt Young
18
Poder. Tenga en cuenta el consumo de energía de ambas CPU y estarán muy cerca del mismo rendimiento / vatio, o el micro ganará.
Brian Drummond el
34
La idea de que más simple == más rápido es simplemente incorrecta. Gran parte de la complejidad de una CPU cisc moderna entra en funciones para hacerla más rápida, como cachés de varios niveles, tuberías y predicción de ramificaciones
PlasmaHH
1
esa vieja CPU no funciona con una batería pequeña durante meses / años. utiliza tecnología punta (léase: costosa) para su día. no tuve que esperar en flash lento / barato para cada instrucción. rara vez es necesario que un mcu se ejecute rápido, pueden tomar un nuevo verilog por el bien de los desarrolladores e implementarlo en cualquier fundición. Me gusta el comentario de la bicicleta versus el auto de fórmula 1, creo que eso lo resume todo.
old_timer
14
20 MHz no es lento en absoluto. Simplemente nos miman las velocidades de GHz para PC, donde la mayoría de los recursos se utilizan para renderizar gráficos sofisticados. Puedes volar a la Luna con un procesador Kilohertz ...
vsz

Respuestas:

66

Hay otros factores que contribuyen a la velocidad.

  • Memoria: el rendimiento real a menudo está limitado por la latencia de la memoria. Las CPU Intel tienen grandes cachés para compensar esto. Los microcontroladores generalmente no lo hacen. La memoria flash es mucho más lenta que la DRAM.

  • Consumo de energía: esto suele ser un gran problema en aplicaciones integradas. Las CPU Intel reales de 200 MHz consumieron más de 10 vatios (a menudo mucho más) y necesitaban un gran disipador de calor y un ventilador. Eso requiere espacio y dinero, y ni siquiera cuenta la lógica externa y la memoria que lo acompañan. Un AVR de 20 MHz toma aproximadamente 0.2 vatios, que incluye todo lo que necesita. Esto también está relacionado con el proceso: los transistores más rápidos tienden a tener fugas.

  • Condiciones de funcionamiento: como Dmitry señala en los comentarios, muchos microcontroladores pueden operar en un amplio rango de voltaje y temperatura. Ese ATMega que mencioné anteriormente funciona de -40C a 85C, y puede almacenarse en cualquier lugar de -65C a 150C. (Otras MCU funcionan hasta 125C o incluso 155C.) El voltaje VCC puede ser de 2.7V a 5.5V (5V +/- 10% para un rendimiento máximo). Esta hoja de datos de Core i7 es difícil de leer ya que recortan el VCC permitido durante la fabricación, pero las tolerancias de voltaje y temperatura son ciertamente más estrechas: ~ 3% de tolerancia de voltaje y temperatura de unión máxima de 105C. (5C mínimo, pero cuando está tirando> 100 amperios, las temperaturas mínimas no son realmente un problema).

  • Recuento de puertas: Más simple no siempre es más rápido. ¡Si así fuera, Intel no necesitaría arquitectos de CPU! No se trata solo de tuberías; También necesita cosas como una FPU de alto rendimiento. Eso aumenta el precio. Muchas MCU de gama baja tienen CPUs enteras solo por ese motivo.

  • Presupuesto del área del troquel: los microcontroladores tienen que encajar una gran cantidad de funcionalidades en un troquel, que a menudo incluye toda la memoria utilizada para la aplicación. (La SRAM y el flash NOR confiable son bastante grandes). Las CPU de PC se comunican con periféricos y memoria sin chip.

  • Proceso: Esos AVR de 5V se realizan en un antiguo proceso de bajo costo. Recuerde, fueron diseñados desde cero para ser baratos. Intel vende productos de consumo a altos márgenes utilizando la mejor tecnología que el dinero puede comprar. Intel también vende CMOS puro. Los procesos MCU necesitan producir memoria flash en chip, lo cual es más difícil.

Muchos de los factores anteriores están relacionados.

Puede comprar microcontroladores de 200 MHz hoy ( aquí hay un ejemplo ). Por supuesto, cuestan diez veces más que esos ATMegas de 20 MHz ...

La versión corta es que la velocidad es más complicada que la simplicidad, y los productos baratos están optimizados para el bajo costo, no la velocidad.

Adam Haun
fuente
11
No olvide la robustez: una CPU típica fallará si el voltaje de suministro cambia en más de un 5% más o menos, mientras que un ATMega funciona desde cualquier cosa en el rango de 1.8-5.5V a 4MHz.
Dmitry Grigoryev
1
@DmitryGrigoryev Buen punto! He actualizado mi respuesta.
Adam Haun
25

Una razón técnica subyacente importante para las velocidades lentas es que las MCU baratas / pequeñas solo usan memoria flash en chip para el almacenamiento del programa (es decir, no se ejecutan desde la RAM).

Las MCU pequeñas generalmente no almacenan en caché la memoria del programa, por lo que siempre necesitan leer una instrucción de flash antes de ejecutarla, en cada ciclo. Esto proporciona un rendimiento determinista y # ciclos / operación, es simplemente más barato / más simple y evita problemas similares a los de una PC donde el código y los datos se mezclan creando un nuevo conjunto de amenazas por desbordamientos del búfer, etc.

La latencia de lectura de la memoria flash (del orden de 50-100ns) es mucho más lenta que la lectura de SRAM o DRAM (del orden de 10ns o menos), y esa latencia se debe incurrir en cada ciclo, limitando la velocidad del reloj de parte.

compumike
fuente
44
También la potencia (y por lo tanto el calor) aumentan más que linealmente con la frecuencia.
Kimberly W
1
No creo que leer desde flash esté cerca de 100 ns, ¿verdad? IIRC es dos órdenes de magnitud más grande. Sin embargo, si su controlador flash contiene una pequeña memoria caché DRAM y el código no es demasiado ramificado, la tasa de aciertos de la memoria caché puede ser muy alta (90% +), por lo que su latencia promedio puede ser mucho menor.
MSalters
2
Esta hoja de datos AT91SAM7S que he abierto dice por su flash interno "Tiempo de acceso rápido, acceso de ciclo único de 30 MHz en las peores condiciones" para su flash interno. Eso es 33ns. Y tiene una palabra de búfer de captación previa. Off-die Flash puede tener una latencia más alta.
pjc50
1
@Jamil No recuerdo la fórmula exacta, pero creo que era un cuadrado de frecuencia.
Jan Dorniak
22

¿Por qué la gente monta una bicicleta o una moto pequeña cuando tienes un auto de Fórmula 1? ¿Seguramente debe ser mejor conducir, digamos 300 km / hy llegar a todas partes al instante?

En pocas palabras, no hay necesidad de ser más rápido de lo que son. Quiero decir, seguro que hay microcontroladores un poco más rápidos que permiten algunas cosas, pero ¿qué vas a hacer en una máquina expendedora que está en uso continuo durante aproximadamente 1 hora al día? ¿Qué vas a hacer en un control remoto para un televisor?

Por otro lado, tienen otras capacidades importantes, como bajo consumo de energía, son MUCHO más simples de programar, etc. Básicamente, no son procesadores y hacen cosas diferentes.

AndrejaKo
fuente
12
@Michael ¿De dónde sacas la idea simple = rápido?
Matt Young
3
@Michael Una bicicleta es mucho más simple que un automóvil, pero sigue siendo más lenta. En cualquier caso, Matt tiene razón. Algo simple no es automáticamente rápido. Es decir, algo rápido va a ser complicado, solo debido a las consideraciones necesarias para frecuencias más altas.
AndrejaKo
2
Los procesadores CISC de alto rendimiento tienden a emitir muchas más instrucciones que los procesadores integrados simples. Están haciendo mucho más trabajo en paralelo, por lo que son más complejos y más rápidos.
Kimberly W
2
@Michael $ 1 podría ser lujosamente costoso para algunas aplicaciones, he leído que los microcontroladores en tarjetas micro SD cuestan alrededor de 19 centavos
Xen2050
2
@Michael "esa es toda la idea detrás de las arquitecturas RISC: las tareas simples se pueden manejar más rápido que las complicadas" ¡No! Las arquitecturas RISC modernas son extremadamente complejas porque tienen que introducir más instrucciones (como SIMD) y admitir más funciones como superescalar, hyperthreading, ejecución fuera de orden ... Su complejidad puede exceder fácilmente las arquitecturas CISC. MIPS hoy en día tiene cientos o miles de instrucciones. "CISC v RISC es en gran parte un debate histórico"
phuclv
13

Hay muchos controladores ARM que se ejecutan a cientos de MHz o más. ¿Quién necesita un PIC de 500 MHz y está dispuesto a pagar lo suficiente por parte para justificar máscaras de un millón de dólares para un proceso cercano al estado de la técnica?

Según los informes, el popular ATmega328 está hecho con tecnología de 350 nm, que está bastante por detrás de las últimas CPU Intel de producción (14 nm para Skylake ).

Incluso los controladores más baratos de 8 bits han aumentado lentamente en velocidad, y puede obtener controladores PIC de 32 y 64 MHz (por ejemplo, PIC18F14K22) que todavía funcionan a 5 V (este último es una consideración en el costo total del sistema).

Una consideración es que estos controladores tienen una arquitectura optimizada para espacios de memoria pequeños y velocidades de reloj lentas. Una vez que comience a alcanzar altas velocidades de reloj, debe cambiar las cosas con preescaladores, etc.

Hubo un intento en el pasado (finales de la década de 1990) para producir controladores tipo PIC muy rápidos, con la idea de que el firmware podría sustituir a los periféricos si el microcontrolador fuera lo suficientemente rápido. Por ejemplo, podría golpear un UART. No creo que hayan tenido tanto éxito comercial: Scenix-> Ubicom-> Qualcomm (juego terminado).

Spehro Pefhany
fuente
350 nm? Eso lo explicaría. No sabía que alguien fabricaría algo usando tecnología de 20 años.
Michael
3
Algunos de nosotros todavía estamos diseñando (no solo usando) CMOS de la serie 4000, que es algo así como 3000nm.
Spehro Pefhany
66
Los procesos más antiguos también son potencialmente útiles para personas que trabajan con entornos de radiación o sistemas de alta confiabilidad que exigen trazabilidad.
Krunal Desai
55
El juego no ha terminado: la Parallax Propeller es una continuación de ese concepto.
Dave Tweed
3
@ Michael: No es solo la era de la tecnología. El tamaño también importa. Los procesos de mayor tamaño tienen tasas de defectos más bajas, lo que significa menores rechazos y, por lo tanto, un mayor rendimiento, lo que conduce a un menor costo por chip. Si está dispuesto a pagar $ 100 por una CPU (como las computadoras de escritorio), entonces el mayor costo debido a un menor rendimiento está justificado. Si solo está dispuesto a pagar 50 centavos, entonces no está justificado.
slebetman
3

Imagine que uno quiere producir automóviles. Un enfoque sería utilizar un montón de equipos en la fábrica de forma secuencial, construyendo un automóvil a la vez. Este enfoque se puede hacer con una cantidad modesta de equipos moderadamente complicados, tales equipos se pueden usar para realizar más de un paso. Por otro lado, gran parte del equipo en la fábrica permanecería inactivo la mayor parte del tiempo.

Otro enfoque es establecer una línea de ensamblaje, de modo que tan pronto como el equipo que manejó el primer paso de producción haya terminado esa operación en el primer automóvil, pueda proceder a comenzar la operación correspondiente en el próximo automóvil. Intentar reutilizar una pieza de equipo en múltiples etapas en el proceso de fabricación sería complicado, por lo que en la mayoría de los casos sería mejor usar más piezas de equipo que estén optimizadas para realizar una tarea muy específica (por ejemplo, si es necesario perforar 50). orificios de 10 tamaños diferentes, luego una configuración de equipo mínimo incluiría un taladro con 10 bits y un mecanismo de cambio rápido, pero una línea de montaje podría tener 50 taladros cada uno con una broca instalada permanentemente y sin necesidad de un cambio rápido) .

Para cosas como DSP o GPU, es posible alcanzar velocidades muy altas de manera relativamente económica porque la naturaleza del trabajo a realizar es muy consistente. Desafortunadamente, muchas CPU necesitan poder manejar errores arbitrarios de instrucciones de diferente complejidad. Hacer eso de manera eficiente es posible, pero requiere una lógica de programación muy compleja. En muchas CPU modernas, la lógica necesaria para "hacer el trabajo" no es demasiado complicada o costosa, pero la lógica necesaria para coordinar todo lo demás sí lo es.

Super gato
fuente
2
Lo siento si me lo perdí, pero ¿qué relevancia tiene esto para las CPU frente a los microcontroladores "más lentos"? Parece que solo se enfoca en CPUs versus procesadores especializados (típicamente incluso más rápidos).
underscore_d
1
@underscore_d: El primer párrafo cubre los microcontroladores más simples: son como la pequeña tienda que construye un automóvil a la vez. El segundo párrafo señala que hay algunos controladores baratos que pueden realizar muchas operaciones muy rápidamente, pero están limitados en el tipo de operaciones que pueden realizar. Lo difícil es poder realizar una combinación arbitraria de operaciones mientras se superponen en un grado significativo (pero muy variable). Si uno tiene un subsistema que en cada ciclo puede aceptar dos números y generará el producto de dos números que se enviaron hace cuatro ciclos, y ...
supercat
1
... otro que aceptará en cada ciclo dos números y generará la suma de los que se enviaron hace dos ciclos, tratando de averiguar cuándo deben enviarse los valores, cuándo estarán disponibles los resultados, cuándo se deben cargar y guardar las cosas para registros, etc. puede ser muy complicado, especialmente si se quiere evitar rellenar todas las tuberías para que coincidan con la más larga.
supercat
Gracias; eso lo aclara. Sí, tiene sentido que las CPU rápidas de uso general incurran en la mayoría de sus costos, tanto financieros como energéticos, en 'andamios': canalización, caché, programación, control de RAM, etc. Cosas que no solo son prohibitivamente costosas sino que a menudo no se requieren para micros. Del mismo modo, nunca deja de sorprenderme lo que se puede hacer con una frecuencia de reloj relativamente pequeña en un procesador diseñado específicamente para una aplicación. Cosas fascinantes en ambos lados!
underscore_d
@underscore_d: La arquitectura MIPS se diseñó bajo la premisa de que los compiladores serían responsables de algunos de los problemas de programación, lo que permitiría simplificar el hardware. Creo que el concepto nunca se entendió realmente porque los procesadores más nuevos a menudo requieren más etapas de canalización que las anteriores, pero el código escrito para un procesador con tuberías más cortas no funcionará en un procesador con conexiones más largas en ausencia de enclavamientos de hardware.
supercat