Dada la misma cantidad de etapas de 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 no debería ralentizarse en un factor mayor que el número de etapas.
Ahora tome una CPU de cinco años, ejecutando 14 etapas de canalización a 2,8 GHz. Supongamos que uno fusiona las etapas; eso reduciría la velocidad por debajo 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 reúne todas las etapas de la tubería en una, a 1,2 V-ish. De acuerdo con los cálculos más básicos, los microcontroladores, incluso si se fabrican con tecnología casi obsoleta, deberían funcionar al menos 10 veces más rápido con una cuarta parte del voltaje con el que se les suministra.
Por lo tanto, la pregunta: ¿Cuáles son las razones de las velocidades de reloj lentas del microcontrolador?
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 las aplicaciones integradas. Las CPU Intel reales de 200 MHz consumían 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 consume alrededor de 0,2 vatios, lo que incluye todo lo que necesita. Esto también está relacionado con el proceso: los transistores más rápidos tienden a tener más fugas.
Condiciones de funcionamiento: como señala Dmitry en los comentarios, muchos microcontroladores pueden funcionar en un amplio rango de voltaje y temperatura. Ese ATMega que mencioné anteriormente funciona desde -40C a 85C, y puede almacenarse a cualquier temperatura desde -65C a 150C. (Otros MCU funcionan hasta 125C o incluso 155C). El voltaje VCC puede oscilar entre 2,7 V y 5,5 V (5 V +/- 10 % para un rendimiento máximo). Esta hoja de datos del 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 105 °C. (5C mínimo, pero cuando estás 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 lo fuera, ¡Intel no necesitaría arquitectos de CPU! No se trata solo de canalización; también necesita cosas como una FPU de alto rendimiento. Eso eleva el precio. Muchas MCU de gama baja tienen CPU de solo números enteros por ese motivo.
Presupuesto del área del troquel: los microcontroladores tienen que incluir una gran cantidad de funciones en un solo troquel, que a menudo incluye toda la memoria utilizada para la aplicación. (SRAM y flash NOR confiable son bastante grandes). Las CPU de PC se comunican con la memoria y los periféricos fuera del chip.
Proceso: Esos AVR de 5V se fabrican con 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 de 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 ). Eso sí, 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 la economía, no para la velocidad.
Una de las principales razones técnicas subyacentes de las velocidades lentas es que las MCU económicas/pequeñas solo usan memoria flash en el chip para el almacenamiento de programas (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 la memoria 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 de desbordamiento de búfer, etc.
La latencia de lectura de la memoria flash (del orden de 50-100 ns) es mucho más lenta que la lectura de SRAM o DRAM (del orden de 10 ns o menos), y esa latencia debe incurrir en cada ciclo, lo que limita la velocidad del reloj del parte.
¿Por qué la gente anda en bicicleta o en moto pequeña, cuando tienes un coche de Fórmula 1? Seguramente debe ser mejor conducir, digamos, a 300 km/h y llegar a todas partes al instante.
En pocas palabras, no hay necesidad de ser más rápido que ellos. Quiero decir, seguro que hay microcontroladores un poco más rápidos que permiten algunas cosas, pero ¿qué vas a hacer, por ejemplo, con una máquina expendedora que está en uso continuo durante tal vez 1 hora al día? ¿Qué vas a hacer en un control remoto, por ejemplo, para un televisor?
Por otro lado, tienen otras capacidades importantes, como el bajo consumo de energía, ser MUCHO más simples de programar, etc. Básicamente, no son procesadores y hacen cosas diferentes.
Hay muchos controladores ARM que funcionan 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 casi de última generación?
Según los informes, el popular ATmega328 está hecho con tecnología de 350 nm, que está bastante por detrás de las CPU Intel de última producción (14 nm para Skylake ).
Incluso los controladores económicos de 8 bits han ido aumentando lentamente en velocidad, y puede obtener controladores PIC de 32 y 64 MHz (por ejemplo, PIC18F14K22) que aún 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 que está optimizada para espacios de memoria pequeños y velocidades de reloj lentas. Una vez que comienzas a alcanzar altas velocidades de reloj, tienes que reajustar las cosas con preescaladores, etc.
Hubo un intento (finales de la década de 1990) de producir controladores similares a PIC muy rápidos, con la idea de que el firmware podría sustituir a los periféricos si el microcontrolador era lo suficientemente rápido. Por ejemplo, podría hacer un bit-bang en un UART. No creo que hayan tenido tanto éxito comercial: Scenix->Ubicom->Qualcomm (game over).
Imagine que uno quiere producir automóviles. Un enfoque sería usar un montón de equipos en la fábrica de forma secuencial, construyendo un automóvil a la vez. Este enfoque se puede realizar con una cantidad modesta de equipo moderadamente complicado, por lo que se pueden utilizar muchos equipos para realizar más de un paso. Por otro lado, gran parte del equipo en la fábrica aún estarí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 iniciar la operación correspondiente en el próximo automóvil. Tratar de reutilizar una pieza de equipo en varias etapas del 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, cada una optimizada para realizar una tarea muy específica (por ejemplo, si es necesario taladrar 50 orificios de 10 tamaños diferentes, entonces una configuración de equipo mínimo incluiría un taladro con 10 brocas y un mecanismo de cambio rápido, pero una línea de ensamblaje 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 lograr velocidades muy altas de manera relativamente económica porque la naturaleza del trabajo a realizar es muy consistente. Desafortunadamente, muchas CPU necesitan poder manejar variaciones arbitrarias 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.
Tus deseos se hicieron realidad :) Parallax Propeller 2 funciona a 300 MHz, tiene 8 núcleos, 512 kB de RAM compartida, 2 kB de RAM de núcleo local + otros 2 kB compartidos por pares de núcleos, la mayoría de las instrucciones se ejecutan en 2 ciclos de reloj, por lo que 150 MIPS por núcleo o 1,2 GIPS pico por chip, 64 pines inteligentes muy flexibles: puede tener 64 ADC de 15 bits de 1 MSPS si puede usarlos, creados con un proceso moderno de TSMC (35 nm, pero no me citen al respecto; no pude encontrar las publicaciones del foro donde que se discutió).
Entonces, en cuanto a la pregunta de “por qué no lo hacen”: ¡pero lo hacen! Y es una parte increíble, si se me permite decirlo.
mate joven
usuario_1818839
PlasmaHH
viejo contador de tiempo
viejo contador de tiempo
pjc50
pjc50
vsz
nick t
Ingeniero invertido
Flujo de Fourier
DKNguyen
Flujo de Fourier