Comprensión de ROM/RAM en MCU ARM

El ARM SAM3X8E de 32 bits tiene 512 KB de ROM y 96 KB de RAM integrados. Esto significa que si le muestro un binario que tiene, digamos, 400 KB de tamaño y consume, digamos, 80 KB de RAM (máx.) en tiempo de ejecución, entonces ese binario "encajará" en esa MCU. Sin embargo, no podría flashear un binario de 800 KB en el chip, ni podría ejecutar un binario que consuma 1 MB de RAM en tiempo de ejecución. Tiene sentido.

Luego está la última Raspberry Pi, con una ARM A7 de 32 bits que tiene 1 GB de RAM (no pude encontrar su tamaño de ROM). Esto me hace preguntarme qué tipo de vudú y hechicería están en juego con estos MCU ARM que están en el RPi:

  • ¿Es el ARM A7 realmente mucho más potente (1 GB frente a 96 KB ?!?!) que el SAM3X8E?; o
  • ¿El RPi tiene algún tipo de "hardware de soporte" integrado que ayude a escalar/extender el ARM A7 más allá de sus capacidades normales de escala de KB?; o
  • ¿Estoy malinterpretando por completo la capacidad de 1 GB del A7, y tal vez ese 1 GB proviene de una combinación de la memoria A& plus fuera de MCU del RPI, en algún otro lugar de la placa? En este caso, me pregunto cuáles son realmente los límites de ROM/RAM de la MCU de RPi y por qué no se podría haber usado un SAM3X8E en su lugar.

De todos modos, lo corté, simplemente no cuadra ni tiene sentido para mí. ¿ Cómo es que un producto ARM es aparentemente 10 000 veces más grande (en cuanto a capacidad de memoria) que otro?

Tenga en cuenta que toda esta RAM consume energía. Ejecutar una RaspberryPi desde la batería significa usar un banco de energía de teléfono móvil y agotarlo en cuestión de horas, mientras que los pequeños microcontroladores pueden funcionar con algunas celdas AAA durante semanas (obviamente, no toda la diferencia es la energía consumida por la RAM).

Respuestas (1)

La RAM en la Raspberry Pi está fuera de la CPU. En los modelos originales, esto estaba en un paquete sobre paquete : los modelos más nuevos lo tienen montado debajo de la CPU, en el otro lado de la placa.

Es posible que descubra que puede extender el SAM3X8E de la misma manera: la mayoría de las MCU tienen una interfaz de memoria externa para este tipo de cosas: busque EMIF en la hoja de datos.

La razón por la que no puede encontrar el tamaño de ROM de Raspberry Pi es que tiene una pequeña mancha binaria en la CPU que luego admite el arranque desde flash, nuevamente externo y en forma de tarjeta micro SD.

Ah, ¿y por qué la Raspberry Pi usa la CPU que usa? Eben Upton trabaja para Broadcom...

Gracias @stefandz (+1), entonces, ¿es justo decir que el ARM A7 es un microprocesador que tiene un pinout para un bus de memoria externo y, por eso, puede integrarse con RAM fuera del chip? ¿Y que el ARM SAM3X8E es un microcontrolador que no tiene tales capacidades de bus de memoria externa y, por lo tanto, está limitado a la memoria en el chip? Si ambos entendimientos son correctos, simplemente confírmelos y con gusto le daré el "cheque verde". Y si todavía estoy malinterpretando su diferencia, por favor aclare para mí. ¡Gracias de nuevo!
Técnicamente (y esta es una distinción fina, pero importante) el Broadcom BCM2835 es un SOC - en.wikipedia.org/wiki/System_on_a_chip Este artículo Wiki cubre la diferencia entre MCU y SOC, pero las líneas pueden ser borrosas. El SAM3X8E tiene un EMIF, por lo que puede interactuar con una memoria externa si lo desea. En general, el SAM3X8E tiene un propósito un poco más general, mientras que el BCM2835 está diseñado para una configuración tipo mini PC Linux con una pantalla de salida, ¡un poco como el Pi!
Gracias @stefandz (+1 nuevamente) - Perdón por las preguntas ignorantes aquí, los últimos 2 seguimientos (lo prometo): (1) ¿puedes confirmar que a lo que me refiero como "A7" es a lo que llamas " BCM2835"? Y (2) ¿Puede indicarme la dirección de la documentación que indica que el SAM3X8E tiene una interfaz de memoria externa (parece que no puedo encontrarla)? ¡Gracias de nuevo!
(1): Lo siento, en realidad es el BCM2836 que es un A7 (si se desplaza hacia abajo en la página wiki que vinculó, puede verlo mencionado, junto con la Raspberry Pi 2 como objetivo). Me sorprendió que mencionaras originalmente el Pi 1 (que tiene un núcleo ARM11). A7 y ARM11 son núcleos (implementaciones de tecnología de procesador central): BCM2835 y BCM2836 son partes específicas que usan esos núcleos. (2): atmel.com/devices/sam3x8e.aspx "La interfaz de bus externo de 16 bits admite SRAM, PSRAM, NOR y NAND Flash con corrección de código de error". SRAM / PSRAM son memoria, por lo tanto, la interfaz del bus es una EMIF.