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.
fuente
Respuestas:
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:
Excepto en casos muy raros, el último no es sensible.
fuente
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.
fuente
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.
fuente
"¿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.
fuente
"¿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.
fuente
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.
fuente