¿Cómo cambiaría el software si la memoria RAM se volviera súper barata, rápida y abundante?

Veamos cómo funciona tu programa. La CPU quiere obtener una instrucción, por lo que la busca en el i-cache, pero no está allí. Por lo tanto, espera 500 ciclos, o más, para los cachés L2, L3 y luego la memoria. Son 500 ciclos durante los cuales miles de operaciones podrían haberse ejecutado.

Ahora, recibió varias instrucciones en la misma línea de caché. ¡Excelente! Pero ahora quiere preparar datos de una matriz, ¡vaya! Tiene que esperar 500 ciclos más. Finalmente llega a los datos y comienza a procesarlos. En algún momento, querrá leer más datos, que aún no están en la memoria caché. Otros 500 ciclos desperdiciados.

Para minimizar estos ciclos perdidos, los proveedores de CPU, como Intel, han desarrollado una serie de trucos. Entonces, ahora tiene un caché L1 pequeño (i-cache, d-cache), un caché L2 más grande y un caché L3 mucho más grande. Toda esta complejidad, con la esperanza de almacenar todos sus datos / instrucciones útiles en una memoria rápida, lejos de su RAM. No funciona tan bien, especialmente en el código orientado a objetos, donde tiene muchos objetos pequeños por todo el lugar. Creo que afecta a los lenguajes más duros que tratan todo como un objeto, como Python (pero no tengo pruebas de eso).

Solo eche un vistazo a esto (tomado de The Secrets of PC Memory: Part 1):

Esta imagen aparece en un artículo de 2007, que no es muy nuevo. Supongo que en los procesos más nuevos las cosas no son mejores.

Si la RAM era 500 veces más rápida, con una conectividad 500 veces más rápida a la CPU, ya no necesitará caché. El caché es enorme y desperdicia mucho espacio en el dado (chip). En lugar de desperdiciar todo este espacio y energía en la RAM, podría agregar más núcleos de CPU. También podría simplemente hacer que su CPU sea más pequeña, sin núcleos adicionales.

Si hace que la CPU sea más pequeña, la hará mucho más barata, ya que habrá menos defectos de producción. Si hay menos defectos de producción, se tiran menos chips (un rendimiento más alto) o se desactivan parcialmente y se los califica como una CPU diferente. Cuando las CPU se vuelven más pequeñas, necesitan menos energía, menos enfriamiento y baterías más pequeñas para dispositivos móviles.

No solo esas computadoras serán más baratas y consumirán menos energía, sino que también serán más rápidas. Serán mucho más rápidos que necesitará menos núcleos para hacer el mismo trabajo, lo que nuevamente conduce a un software más económico, ya que habrá que paralelizar menos.

Una RAM significativamente más rápida y económica revolucionará la informática, nada menos.

El software de computadora moderno ya “funciona” bajo la premisa de RAM prácticamente ilimitada, pero intercambia RAM en el disco según sea necesario para mantener esta ilusión.

Si tuviera más RAM, se produciría menos intercambio, y el software generalmente se ejecutaría un poco más rápido.

Técnicamente, podría rediseñar las CPU para no tener esta lógica de memoria virtual; eso aceleraría un poco el acceso a la RAM y, por supuesto, la memoria caché L1–2–3 que usan las CPU modernas podría mejorarse, pero no creo que revolucione nada.

Su pregunta es realmente “¿el software moderno está limitado por la cantidad de RAM en las computadoras típicas?”, La respuesta generalmente no es, con la excepción de sistemas computacionales masivos, bases de datos, etc.

Las tareas cotidianas que realiza en una computadora hogareña no tienen realmente RAM limitada.

Por lo tanto, haría que las computadoras fueran un poco más baratas, pero en general no mejoraría mucho las cosas.

La capacidad de calcular es el principal cuello de botella, no la cantidad física de RAM.

Como ya uso una PC y una computadora portátil con cada 32 GB de RAM, la respuesta es “no mucho”. El software podrá almacenar más datos en la memoria, pero las aplicaciones que necesitan esta cantidad de datos generalmente son bastante raras. Lo necesito porque regularmente renderizo imágenes CGI a altas resoluciones. (fácilmente 25 megapíxeles y más).

El uso de la memoria tiende a superar los 20 GB mientras se procesa y, de vez en cuando, el proceso de procesamiento lo consumirá todo, por lo que requiere el disco de intercambio para aún más almacenamiento. Esto puede tomar desde media hora hasta varios días.

Pero las aplicaciones básicas como Word, Excel o su navegador web no notarán mucho.

También tenga en cuenta que grandes cantidades de RAM requerirán que sus aplicaciones se desarrollen de manera que le permitan tomar tanta memoria. Pero una aplicación de 32 bits generalmente está limitada a 4 GB y el sistema operativo puede reducir esto aún más a 2 GB o 3 GB. Entonces, incluso con 150 TB de RAM, su aplicación no podría usarlo todo. Sería similar a todo el espacio en disco vacío que tiene.

Este límite de memoria puede ser una desventaja para los desarrolladores de software. Por ejemplo, Visual Studio 2015 sigue siendo una aplicación de 32 bits y, por lo tanto, tiene esta limitación de memoria. Puede crear aplicaciones de 64 bits, pero la herramienta en sí es limitada. Pero a pesar de tener una memoria limitada, aún puede funcionar en grandes proyectos.

Pero recuerdo el momento en que un megabyte de RAM le costaría un brazo y una pierna, si lo deseara. La memoria RAM ya se ha vuelto extremadamente barata, ya que una vez en el pasado tuve que lidiar con solo 640 KB de RAM. (Y antes de eso, 16 KB de RAM).

En general, una memoria más barata y abundante ha significado un software más grande y complejo. Eso no es necesariamente algo bueno. Más grande y más complejo a menudo se traduce en más difícil de mantener.

Algunos tipos selectos de software, como las aplicaciones de representación de video, podrían beneficiarse de un mayor espacio RAM, pero muchas aplicaciones en realidad no verían ningún aumento real en el rendimiento. Un usuario podría cargar más aplicaciones en la memoria, pero una vez más, para la mayoría de las aplicaciones eso no importaría, ya que están más restringidas por la necesidad de entrada humana que por la necesidad de más memoria.

Bueno, la memoria * es * súper barata. En mi primera computadora, la memoria era de aproximadamente 75 centavos por byte y tenía un tiempo de acceso de 3 microsegundos. ahora es aproximadamente un millón de veces más barato y mil veces más rápido. Todo lo que sucedió es que los programadores se han vuelto más descuidados y ahora usan gigabytes para resolver problemas que solían hacerse en kilobytes. El software siempre se expande para adaptarse al espacio disponible. Si tuviéramos un terabyte de memoria, comenzaríamos a usarlo como memoria direccionable por contenido en lugar de usar hash o listas ordenadas.

Si la RAM se vuelve más barata, los programadores escribirán programas más grandes.

Esto es absolutamente predecible, porque ya ha sucedido varias veces en la historia de la informática.