¿Podemos ejecutar Linux en algo más rápido que la RAM?

21

Esta es quizás una pregunta tonta, y puede ser el resultado de un malentendido. Estoy estudiando CPU en este momento, y la memoria en particular. Estaba leyendo sobre cuánto más rápido es SRAM que DRAM pero más caro. La SRAM es muy costosa: compré un poco y encontré una tarjeta SRAM a batería con 16 MB por alrededor de $ 400.

Recientemente, un amigo mencionó que ha estado ejecutando cachorro Linux en RAM, y que es rápido. Sin embargo, noté que el núcleo pequeño de Linux puede ser aún más pequeño ... ¡tan pequeño como 8 MB! Esto me hizo pensar: ¿podemos ejecutar Linux en SRAM? ¿Esa pregunta está bien formada?

Buscar en Google esta pregunta resultó ineficaz, pero generó aún más preguntas. ¿Se podría ejecutar Linux en L3 Cache? Intel Core i7 puede tener un caché L3 lo suficientemente grande como para caber los 8 MB ... pero ¿estoy cometiendo un error categórico? ¿Cuál es la diferencia entre esto y Linux 'incrustado'?

Esa es la pregunta: ¿podemos ejecutar Linux en SRAM o L3 Cache? ¿Hay algo más rápido? ¿Qué tan rápido podemos linux?

z.

Ziggy
fuente
3
Los Linux integrados a menudo se ejecutan en memoria RAM o memoria no volátil. Los linux embebidos a menudo se simplifican para ejecutarse solo en hardware específico, o usan algunas opciones de kernel menos comunes como baja latencia
Journeyman Geek
2
Me pregunto si hay algún uso práctico para esta pregunta.
Robert Niestroj
44
¡+1 por usar "linux" como verbo (en la última oración)!
Vorac

Respuestas:

20

Linux o cualquier otro sistema operativo no sabe cómo funciona la RAM. Siempre que el controlador de memoria esté configurado correctamente (p. Ej., Tasas de actualización establecidas para no SRAM), al sistema operativo no le importa si se ejecuta en memoria dinámica simple (RAM simple), RAM en modo de página rápida (RAM RAM, desde el C64-ish veces), RAM de modo de salida de datos extendida (EDO), RAM sincronizada (SDRAM), cualquiera de las SDRAMS de doble velocidad de datos (DDR 1/2/3), lo que sea.

Todos ellos apoyan la lectura y la escritura desde lugares al azar. Todo funcionará

Ahora el caché es un poco diferente. No tiene que escribir para que los contenidos cambien. Eso se interpondrá en el camino. Aún así, es algo utilizable. Sé que coreboot usa el caché como una especie de memoria durante el arranque, antes de que el controlador de memoria esté configurado correctamente. (Para los detalles, mira los videos de las charlas de coreboot durante FOSDEM 2011).

Entonces, en teoría, sí, podrías usarlo.

PERO : Para tareas prácticas, un sistema con 1 GB de memoria 'normal' de 'velocidad media' funcionará mucho mejor que con solo unos pocos MB de memoria súper rápida. Lo que significa que tienes tres opciones:

  1. Construye las cosas de la manera "barata" normal. Si necesita más velocidad, agregue algunas docenas de computadoras adicionales (todas con memoria 'lenta')
  2. O construya una sola computadora con una docena de veces el precio y significativamente menos de una docena de veces el rendimiento.

Excepto en casos muy raros, el último no es sensible.

Hennes
fuente
66
Muchas CPU admiten un modo "caché como RAM" a través de los registros específicos del modelo (MSR) de la CPU. También tenga en cuenta que SRAM consume más energía que DRAM y eso también es un factor de diseño. Si el caché de la CPU era lo suficientemente grande o el kernel lo suficientemente pequeño, podría habilitar este modo de caché como RAM y mantenerlo ejecutándose completamente en SRAM en la CPU. Sin embargo, tendría una cantidad limitada de RAM para ejecutar programas, etc. porque AFAIK cache-as-RAM y el modo normal no funcionarán simultáneamente. Aunque podría estar equivocado sobre eso. Incluso si lo hiciera, la mayor parte de la velocidad de una CPU en estos días se debe usar el caché L2, L3.
LawrenceC
@Hennes, ¿es que Linux solo se preocupa por las direcciones de memoria (mapeadas)?
Alvin Wong
SDRAM es RAM síncrona D (ynamic), mientras que SRAM es RAM estática. No sé a qué se refería en el primer párrafo y no tengo el representante para hacer ediciones "triviales", pero ¿tal vez podría solucionarlo? Aparte de eso, buena respuesta.
un CVn
No me importa aclarar, pero no estoy seguro de lo que quiere aclarar. ¿Puedes agregar eso en un comentario y lo editaré?
Hennes
Cuando leí este comentario por primera vez, vi: "Linux o cualquier otro sistema operativo muere sin saber cómo funciona la RAM". Su desglose es bueno: creo que no me hice ilusiones de que esto sería "mejor". Me preguntaba si podría hacerse.
Ziggy
8

Sí, puede, y de hecho así es como ya se hace, automáticamente. Las partes de RAM utilizadas con mayor frecuencia se copian en caché. Si su uso total de RAM es menor que el tamaño de su caché (como supone), el mecanismo de almacenamiento en caché existente habrá copiado todo en la RAM.

El único momento en que la memoria caché se volvería a copiar en la RAM normal es cuando la PC pasa al modo de suspensión S3. Esto es necesario porque los cachés se apagan en modo S3.

MSalters
fuente
1
No todos pueden / serán copiados. Para la estructura de caché Intel / x86: si tengo 256 KB de caché y 1024 KB de caché, puedo leer la dirección 0. Se almacenará en el caché en la ubicación 0. Entonces puedo leer la dirección 1, y se almacenará en el caché en la ubicación 1 Sin embargo, si leo la dirección de (256Kib + 1), también se almacenará en la dirección 1 en el caché. El caché utiliza una SRAM (etiqueta) adicional para indicar cuál de los dos está almacenado. Esto significa que la lectura de múltiplos del tamaño de cachés no funcionará bien. (Tenga en cuenta que esto sería algo raro y generalmente puede ignorarse).
Hennes
Esto es perspicaz! ¿Por qué habría de poner torpemente lo que creo que es importante en el caché L3 cuando podría permitir que un ejército de genios determine lo óptimo para hacer y programar una CPU para que haga lo óptimo? ¿Derecho?
Ziggy
3

Muchas CPU permiten que la caché se use como RAM. Por ejemplo, la mayoría de las CPU x86 más nuevas pueden configurar ciertas regiones como reescritura sin lectura en las lecturas a través de MTRR. Esto se puede utilizar para designar una región del espacio de direcciones como, efectivamente, caché como ram.

Si esto sería beneficioso es otra cuestión: bloquearía el núcleo en la RAM, pero al mismo tiempo reduciría el tamaño efectivo de la memoria caché. También podría haber efectos secundarios (como tener que deshabilitar el almacenamiento en caché para el resto del sistema) que lo haría mucho más lento.

Marc Lehmann
fuente
2

"¿Podemos ejecutar Linux en L3 Cache?"

No , esto no es posible porque la memoria caché no está direccionada directa / linealmente.
Debido a la forma en que está diseñada la memoria caché, el registro del contador de programas de CPU (IP) no puede apuntar a una ubicación en la memoria caché.

Un caché de CPU tiene su propia "asociatividad" y esta asociatividad define la forma en que la memoria "normal" se "asigna" a la memoria caché. Esta característica de la memoria caché es una de las razones por las que las memorias caché son tan rápidas.

Max
fuente
1

"¿Podemos ejecutar Linux en L3 Cache?"

No, Cache está allí para un trabajo específico de mantener los datos del programa y las instrucciones listas para cuando el procesador las necesite. Encontrarás el sistema operativo en el caché de todos modos porque se usa constantemente. Cargar todo el sistema operativo en la memoria caché no es eficiente ya que no está utilizando todas las rutas de código en el núcleo a la vez.

"¿podemos ejecutar Linux en SRAM?"

Ciertamente, podría usar SRAM respaldado por batería como partición de arranque, luego podría usar el indicador incrustado de ejecución en su lugar. Eso podría conducir a tiempos de arranque más rápidos y operaciones un poco más rápidas. Sin embargo, un factor importante es el ancho de banda entre la caché L3 y dónde está el núcleo (una unidad de arranque o RAM).

"¿Hay algo más rápido? ¿Qué tan rápido podemos linux?"

En general, los fabricantes de hardware y los desarrolladores de sistemas operativos están trabajando para que el procesamiento sea lo más rápido posible. Sin embargo, su pregunta es muy general: ¿desea acelerar los tiempos de arranque, optimizar el acceso al sistema de archivos, acelerar los cálculos o algo más? Una vez que tenga una pregunta más específica, puede comenzar a encontrar el cuello de botella y eliminarlo. Su unidad SRAM ciertamente aceleraría su proceso de arranque. Llegar a una GUI en 3 segundos sería muy bueno de ver.

Phil Hannent
fuente
1

En los días de 486es solía haber máquinas donde toda la RAM era SRAM. Esto fue cuando 8MB era mucho, pero parece coincidir con sus limitaciones. Estoy seguro de que 8 MB de SRAM es mucho más barato ahora que en aquel entonces.

Por lo tanto, podría ejecutar Linux en SRAM si la máquina se hizo de esa manera. No es teórico; Se ha hecho.

Pero, no en caché. La memoria caché está conectada de manera diferente y, lo que es más importante, se aborda de manera diferente. No puedes abordarlo de la misma manera. Los fragmentos se asignan de manera diferente, no como un fragmento continuo. Y el contenido no es necesariamente lo que ve en el disco: los nuevos chips Intel hacen una especie de "compilación" justo a tiempo (más de una codificación CISC => RISC-micro-op) donde las micro-ops son las cosas que terminan en caché. En resumen, lo que está en la memoria caché no es su programa, sino una vista cambiada de la misma, por lo que ya no puede usarlo como una representación de memoria de su programa.

La pregunta es por qué. Aparte de "porque puedo", no hay muchas razones para esto. El sistema de caché le brinda la mayor parte del beneficio de velocidad con mucho menos costo. Y recuerde que el costo no es solo dólares ... SRAM toma más transistores, lo que significa más electricidad.

Rich Homolka
fuente