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?
Respuestas:
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.
fuente
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.
fuente
¿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.
fuente
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).
fuente
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.
fuente