¿Puede una CPU funcionar con nada más que una fuente de alimentación y una ROM, utilizando solo el caché interno como RAM?

61

¿Puede una CPU (como Intel i3 / i5 / i7 / Xeon) con RAM de caché en chip usar eso como su única RAM funcional, sin ningún banco de memoria externo conectado?

¿O debe haber RAM externa y no se puede acceder a la caché o usarla sola?

Las CPU de escritorio / servidor modernas a menudo tienen más RAM de caché interna que la que tenían muchas computadoras de 1990 en toda la memoria del sistema, por lo que debería haber suficiente para ejecutar código simple.

Las CPU de antes de la caché existían, como el 6502 no podría hacer nada, ya que la RAM interna de la CPU solo ascendía a unos pocos bytes para el contador de direcciones y los acumuladores.

No se trata de ejecutar ningún tipo de sistema operativo moderno, sino de ejecutar un código simple programado en una ROM personalizada o ingresado manualmente con un teclado de entrada hexadecimal.

Dale Mahalko
fuente
1
Depende completamente de la CPU y de lo que quiere decir exactamente con "caché", ya que algunas CPU tienen su ram incorporado y no necesitan chips externos.
PlasmaHH
42
Básicamente, si incluye memoria direccionable en el propio procesador, construye lo que llamamos un microcontrolador. Estos existen
Marcus Müller
1
¿Quién dice que necesitas algo de RAM?
Chris Stratton
1
Depende de cómo se defina la "función". Apuesto a que un i7 es perfectamente capaz de producir calor con solo una batería conectada.
Dmitry Grigoryev
2
Hay varias cosas que puede hacer con solo unos pocos registros y sin RAM adicional. Por ejemplo, un generador de funciones.
David Schwartz

Respuestas:

67

Vea esta cuenta extremadamente detallada de la secuencia de arranque de la PC: http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2

Como no hay DRAM disponible en este momento, el código opera inicialmente en un entorno sin pila. La mayoría de los procesadores modernos tienen una memoria caché interna que se puede configurar como RAM para proporcionar una pila de software. Los desarrolladores deben escribir código extremadamente estricto cuando usan esta función de caché como RAM porque un desalojo sería inaceptable para el sistema en este punto de la secuencia de arranque; No hay memoria para mantener la coherencia. Es por eso que los procesadores operan en "Modo sin desalojo" (NEM) en este punto del proceso de arranque, cuando operan en una memoria caché como RAM. En NEM, una falta de línea de caché en el procesador no causará un desalojo. Desarrollar código con una pila de software disponible es mucho más fácil, y el código de inicialización a menudo realiza la configuración mínima para usar una pila incluso antes de la inicialización de DRAM.

Puede observar esto ejecutando una PC sin RAM: reproducirá una serie de pitidos. El programa que los reproduce se ejecuta desde la BIOS Flash ROM.

También he visto este comportamiento en algunos procesadores ARM. Habrá registros de configuración dentro del SoC que le permitirán usar la memoria caché como RAM al principio de la secuencia de arranque, para ejecutar un programa que encuentre, enumere y configure la DRAM.

pjc50
fuente
1
Continuemos esta discusión en el chat .
vaxquis
2
Más detalles sobre cómo funciona el modo "cache-as-ram" (CAR) de x86 , en una respuesta que lo presenta como un caso de uso para INVD(al salir del modo CAR, invalidar la memoria caché en lugar de tener datos inútiles escritos en la memoria, potencialmente sobre algo valioso).
Peter Cordes
¿Qué hay de malo en desalojar cuando DRAM no está disponible? ¿No es el problema leer en lugar de escribir en la RAM?
Mehrdad
14

Generalmente, la memoria caché no es direccionable. Un programa no puede almacenar ni recuperar datos intencionalmente de él.

Lior Bilia
fuente
2
+1 Esta es una respuesta muy astuta. Las caché se cargan y retiran a voluntad de los accesos direccionables desde la memoria principal, de manera casi aleatoria.
Ale..chenski
17
Sí, es por eso que requiere un modo especial (como en la respuesta de pjc), o algún tipo de truco especial. Otra opción (además de la respuesta aceptada) podría ser hacer que el sistema piense que tiene algo de DRAM, pero las escrituras de memoria reales simplemente arrojan los datos y las lecturas producen todos ceros (o datos reales de una ROM para alguna región de direcciones). Mientras todas las cargas lleguen a la memoria caché, el sistema se comportará correctamente. IDK suficiente sobre cómo arranca x86 para saber si es posible ingresar al modo largo de 64 bits sin necesidad de ningún vaciado de caché real.
Peter Cordes
3
Sin embargo, las CPU Skylake con caché eDRAM en el paquete lo usan como caché del lado de la memoria (entre el controlador de memoria y todo lo demás, a diferencia de Broadwell), por lo que incluso puede almacenar en caché los accesos DMA desde dispositivos del sistema que no sean CPU, o cargas de CPU / se almacena en regiones de memoria "no almacenables en caché" (que omiten L1 / L2 / L3).
Peter Cordes
3
@PeterCordes Sin embargo, la respuesta no es "no" solo porque se necesita un modo especial; la pregunta es si existe el modo especial.
user253751
1
La pregunta es: ¿qué sucede si usa el caché y se asegura de que nunca se pierda o se vacíe? Se vuelve direccionable en el momento en que algo se escribe en una dirección en la RAM inexistente, ¿no? ¿La escritura real se cae al suelo, pero la lectura se sirve de la caché de todos modos?
rackandboneman
9

Si bien esto no aborda directamente las familias de procesadores especificadas en la pregunta, el esquema a continuación funcionaría en los procesadores x86 anteriores, por lo que sí, es posible operar sin RAM o caché, aunque este enfoque requiere algunas habilidades creativas de programación.

En la década de 1980, me encontré con un diseño para un receptor de radio que decodificaba las señales horarias de MSF transmitidas en el Reino Unido. Este diseño utilizaba un procesador Z80 y solo tenía una ROM para el almacenamiento del programa. Todo el procesamiento y almacenamiento de datos se realizó utilizando los registros internos dentro del procesador. Obviamente, esto significaba que no podía haber llamadas de subrutina ya que había memoria disponible para contener la pila.

En aquel entonces, el costo de la RAM era alto y, dado que se trataba de un proyecto de pasatiempo, era importante mantener los costos bajos, además de ser un ejercicio académico interesante. Esto también fue antes de los días de microcontroladores ampliamente disponibles (un 8751 con un costo de eprom superior a £ 100 IIRC).

uɐɪ
fuente
Restringirse a los datos que se pueden guardar en los registros realmente limita las funciones útiles que puede realizar. Creo que la pregunta era más sobre la memoria caché en los procesadores modernos.
Mark Ransom
Por supuesto, no hace falta decir que no usar RAM limita la funcionalidad que es posible. La aplicación citada muestra cuánto es posible con recursos de almacenamiento de datos muy limitados, una interfaz de radio y una pantalla LCD.
uɐɪ
-3

Por lo general, una CPU requerirá un reloj externo. Pero con eso, sí puede.

John Hamilton
fuente
1
Sería apropiado explicar por qué y responder a la pregunta de los usuarios. Esta respuesta está en el lado débil.
Voltaje pico