¿Por qué no se coloca RAM en el chip de la CPU?

Las CPU modernas son muy rápidas en comparación con todo lo externo, incluida la memoria (RAM).

Es comprensible, ya que la frecuencia del reloj de la CPU ha llegado a un punto en el que se necesitan varios tics de reloj para que una señal eléctrica simplemente se ejecute desde la CPU a través del bus hasta los chips de RAM y viceversa.

También complica la vida en muchos niveles: las jerarquías de caché de varios niveles están diseñadas para entregar datos más cerca de la CPU, lo que a su vez requiere una lógica de sincronización compleja en el chip. Los programas deben estar escritos de manera compatible con la memoria caché para evitar ciclos de espera mientras se recuperan los datos.

Muchos de estos problemas podrían evitarse si se ubicara una cantidad significativa de RAM directamente en el chip de la CPU. No tiene que ser un arreglo exclusivo: tal vez poner 1-4 GB en el chip, dependiendo de su clase y permitir que la memoria adicional se instale por separado.

Estoy seguro de que hay buenas razones por las que Intel, AMD y similares no están haciendo esto. ¿Cuáles son estas razones? ¿Es que no hay espacio de sobra en el chip?

El caché es RAM. El espacio y los pines en el troquel son escasos.
@copper.hat El caché es RAM, pero el tamaño del caché es una pequeña fracción de la RAM instalada (por lo general, estamos hablando de rangos de MBytes frente a Gbytes). Me pregunto por qué no poner 1 GB en el chip de la CPU.
Por lo general, está optimizado para alguna combinación de flujo de instrucciones/datos. Además, no todos los datos desde/hacia la RAM pasan por la CPU.
Cuanto más simple es un dado, más barato es. También significa que puede usar diferentes tamaños de proceso y métodos de proceso.
@LesserHedgehog Hay un límite en la tasa de aciertos de su caché en general, por lo que agregar más caché realmente no ayuda en nada. Además, muchas CPU en realidad SÍ tienen DRAM integrada ahora, especialmente en el espacio móvil/integrado (muchos SoC basados ​​en ARM, por ejemplo).
El caché es RAM, memoria superrápida para almacenamiento temporal.
Bueno, en una "CPU" SoC, el ram está en el chip. Eso funciona razonablemente bien, así que tal vez veamos chips de Intel que hagan eso en el futuro (cuando las computadoras de escritorio y los dispositivos móviles converjan)
¿Qué crees que está haciendo L1/L2/L3 Cache? Además, ¿qué crees que es GDDR para tarjetas gráficas discretas?
cuando tienes que expandir tu memoria, tienes que comprar una nueva CPU. no vale la pena para la mayoría de la gente. imagínese si Intel comienza a lanzar Core i3 4GB, Core i3 8GB, Core i3 16GB, etc. Entonces, si desea expandir su memoria de 4GB a 16GB, debe comprar una nueva CPU. Así que mejor mantenlos separados. De hecho, Intel/AMD también debería implementar la GPU lejos de la CPU si reduce los costos adicionales.

Respuestas (10)

Haswell de Intel (o al menos aquellos productos que incorporan la GPU Iris Pro 5200) y POWER7 y POWER8 de IBM incluyen DRAM integrada, "eDRAM".

Un problema importante que ha llevado a eDRAM a no ser común hasta hace poco es que el proceso de fabricación de DRAM no es intrínsecamente compatible con los procesos lógicos, por lo que se deben incluir pasos adicionales (que aumentan el costo y disminuyen el rendimiento) cuando se desea eDRAM. Por lo tanto, debe haber una razón de peso para querer incorporarlo con el fin de compensar esta desventaja económica. Alternativamente, la DRAM se puede colocar en un troquel separado que se fabrica independientemente, pero luego se integra en el mismo paquete que la CPU. Esto proporciona la mayoría de los beneficios de la localidad sin las dificultades de fabricar los dos de una manera verdaderamente integrada.

Otro problema es que la DRAM no es como la SRAM en el sentido de que no almacena su contenido de forma indefinida mientras se aplica energía, y al leerla también se destruyen los datos almacenados, que deben volver a escribirse después. Por lo tanto, debe actualizarse periódicamente y después de cada lectura. Y, debido a que una celda DRAM se basa en un capacitor, cargarla o descargarla lo suficiente como para que la fuga no corrompa su valor antes de que la próxima actualización tome una cantidad de tiempo finita. Este tiempo de carga no se requiere con SRAM, que es solo un pestillo; en consecuencia, se puede sincronizar a la misma velocidad que la CPU, mientras que la DRAM está limitada a aproximadamente 1 GHz mientras se mantiene un consumo de energía razonable. Esto hace que la DRAM tenga una latencia inherente más alta que la SRAM, lo que hace que no valga la pena usarla para todas las cachés excepto las más grandes, donde la tasa de fallas reducida será rentable.

Además, en lo que respecta a la latencia, una gran parte de la dificultad es la distancia física que deben recorrer las señales. La luz solo puede viajar 10 cm en el período de reloj de una CPU de 3 GHz. Por supuesto, las señales no viajan en línea recta a través de la matriz y tampoco se propagan a una velocidad cercana a la de la luz debido a la necesidad de almacenamiento en búfer y despliegue, lo que genera demoras en la propagación. Por lo tanto, la distancia máxima entre una memoria y una CPU para mantener 1 ciclo de reloj de latencia es de unos pocos centímetros como máximo, lo que limita la cantidad de memoria que se puede acomodar en el área disponible. El procesador Nehalem de Intel en realidad redujo la capacidad de la caché L2 en comparación con Penryn en parte para mejorar su latencia, lo que condujo a un mayor rendimiento.* Si no nos importa tanto la latencia, entonces no hay razón para poner la memoria en el paquete,

También se debe tener en cuenta que la tasa de aciertos de caché es muy alta para la mayoría de las cargas de trabajo: muy por encima del 90 % en casi todos los casos prácticos, y no pocas veces incluso por encima del 99 %. Por lo tanto, el beneficio de incluir memorias más grandes en el dado se limita inherentemente a reducir el impacto de este pequeño porcentaje de fallas. Los procesadores destinados al mercado de servidores empresariales (como POWER) suelen tener enormes cachés y pueden incluir eDRAM de manera rentable porque es útil para acomodar los grandes conjuntos de trabajo de muchas cargas de trabajo empresariales. Haswell lo tiene para admitir la GPU, porque las texturas son grandes y no se pueden acomodar en la memoria caché. Estos son los casos de uso de eDRAM en la actualidad, no las típicas cargas de trabajo de escritorio o HPC, que están muy bien atendidas por las típicas jerarquías de caché.

Para abordar algunos problemas planteados en los comentarios:

Estos cachés de eDRAM no se pueden usar en lugar de la memoria principal porque están diseñados como cachés de víctima L4. Esto significa que son volátiles y efectivamente direccionables por contenido, por lo que los datos almacenados en ellos no se tratan como si residieran en una ubicación específica y se pueden descartar en cualquier momento. Estas propiedades son difíciles de conciliar con el requisito de que la RAM sea persistente y de mapeo directo, pero cambiarlas haría que los cachés fueran inútiles para el propósito previsto. Por supuesto, es posible incrustar memorias de un diseño más convencional, como se hace en los microcontroladores, pero esto no es justificable para sistemas con grandes memorias, ya que la baja latencia no es tan beneficiosa en la memoria principal como lo es en un caché, por lo que la ampliación o agregar un caché es una propuesta más valiosa.

En cuanto a la posibilidad de cachés muy grandes con una capacidad del orden de gigabytes, sólo se requiere un caché que tenga como máximo el tamaño del conjunto de trabajo para la aplicación. Las aplicaciones de HPC pueden manejar conjuntos de datos de terabytes, pero tienen una buena localidad temporal y espacial, por lo que sus conjuntos de trabajo no suelen ser muy grandes. Las aplicaciones con grandes conjuntos de trabajo son, por ejemplo, bases de datos y software ERP, pero solo existe un mercado limitado para procesadores optimizados para este tipo de carga de trabajo. A menos que el software realmente lo necesite, agregar más caché proporciona rendimientos decrecientes muy rápidamente. Recientemente, hemos visto que los procesadores obtienen instrucciones de captación previa, por lo que las memorias caché se pueden usar de manera más eficiente: se pueden usar estas instrucciones para evitar errores causados ​​por la imprevisibilidad de los patrones de acceso a la memoria, en lugar del tamaño absoluto del conjunto de trabajo.

*La mejora en la latencia no se debió solo al menor tamaño físico de la caché, sino también a que se redujo la asociatividad. Hubo cambios significativos en toda la jerarquía de caché en Nehalem por varios motivos diferentes, no todos enfocados en mejorar el rendimiento. Entonces, si bien esto es suficiente como ejemplo, no es una cuenta completa.

Bien explicado, @Oleksandr R. En resumen, parece que hay algo así como una "desigualdad de impedancia" entre la CPU y la DRAM, lo que dificulta el acoplamiento de los dos.
Y, por supuesto, la SRAM sigue siendo bastante grande: incluso las cachés diminutas (en comparación con la RAM) ocupan alrededor de la mitad del área de la matriz en las CPU modernas (bueno, excepto en las CPU con GPU integradas: D).
Me pregunto si hay una manera de ejecutar sin memoria principal. 128 MB deberían ser suficientes para ejecutar una distribución de Linux reducida (o una versión anterior de Windows).
Se llama 'GPU-on-die', no 'GPU-on-package'.
@immibis Teóricamente, sí, pero necesitaría un nuevo diseño de CPU. El ciclo buscar-ejecutar obtiene el programa de la memoria principal, si lo cambia de MBR <- [Main Memory]a MBR <- [Cache Memory], entonces funcionaría. Algún día tendremos GB completos de memoria caché en el chip, tal vez incluso TB.
@OleksandrR. La GPU está en la CPU, se llama GPU-on-die, lo que significa que la GPU está en el paquete de la CPU. Nunca nadie lo ha llamado GPU-on-package. Búscalo en Google, encontrarás resultados para GPU-on-diepero no para GPU-on-package.
@cybermonkey tienes razón; la GPU está en la matriz de la CPU incluso en GT3, y la eDRAM es un dispositivo separado en el mismo paquete. Corregiré la respuesta. Tenga en cuenta, sin embargo, que tampoco lo he llamado "GPU-on-package". Simplemente dije que la GPU estaba en el paquete.
@cybermonkey: de hecho, las instrucciones se obtienen de la memoria caché L1, no de la memoria principal. Sería terrible obtenerlos de la memoria principal: un tiempo de ciclo de 60 ns más o menos, lo que limita su CPU a 16 Mhz para un diseño de un solo núcleo.
muy bien explicado y pensado a través de la respuesta. Gracias por publicar.
El argumento de la tasa de aciertos de caché del 99 % me parece una pista falsa. Acceder a la RAM lleva alrededor de 100 veces más que a un caché, por lo que incluso con una tasa de error del 1 %, duplicaría el rendimiento de su programa si pudiera eliminar esa búsqueda adicional. Definitivamente no es algo que pueda contar como insignificante, a menos que su tasa de aciertos de caché sea mayor que, digamos, 99.95%.
@Mehrdad, el número real es más como una diferencia de 10 × en la latencia de LLC a la memoria principal. Véase, por ejemplo , aquí . Si las memorias caché más grandes fueran tan beneficiosas como usted sugiere, los procesadores se diseñarían teniendo esto en cuenta. En su lugar, los diseñadores adoptan un enfoque más equilibrado de proporcionar una cantidad suficiente de caché mientras minimizan la latencia, especialmente para L1 y L2.
@LeoUfimtsev: Ah, tienes razón, obtuve mis números de aquí y comparé L1 con una referencia de memoria principal. Debería haber comparado un caché de nivel superior, gracias por el comentario.
@Mehrdad, muchos procesadores PA-RISC tenían grandes cachés L1 y ningún otro nivel. PA-RISC fue (en la mayoría de las encarnaciones) una arquitectura de alto nivel diseñada para un buen rendimiento con grandes conjuntos de trabajo. Por lo tanto, dependiendo de la tasa de fallas esperada, incluir cachés muy grandes con una latencia moderadamente alta puede ser un enfoque razonable.
@user253751 recientemente (hace 10 años) configuré algunas plataformas de juegos con Windows XP sin Internet ni servicios de impresión. El sistema de carga limpia requiere 64 MB de RAM.

La principal razón por la que no se incluye una memoria más grande (GB de DRAM) en la matriz de la CPU es principalmente por el costo. El espacio de matriz de la CPU es significativamente más caro debido al proceso de fabricación requerido para hacer las características muy pequeñas. Es posible que tampoco sea posible fabricar los dos en el mismo troquel, aunque no sé lo suficiente sobre los detalles para dar una respuesta definitiva aquí.

Evaluemos la factibilidad de colocar una gran cantidad de DRAM directamente en la matriz de la CPU.

Para dar una comparación de escala, una matriz de CPU moderna podría ser de ~180 mm 2 (tamaño aproximado de los troqueles Intel Haswell). No tengo cifras precisas para los tamaños de matriz DRAM de CPU, pero supongamos que 1 GB de DRAM tradicional ocupa 140 mm 2 (calculado a partir de los tamaños de GPU DRAM). En una aproximación de primer orden, está duplicando aproximadamente el tamaño de la matriz de la CPU, lo que significa al menos duplicar el costo de una CPU, y probablemente más solo por 1 GB de DRAM en la misma matriz... No estoy pagando varios cientos de dólares solo para obtener 1 GB de DRAM, y no creo que nadie lo haría.

Sin embargo, la idea de acercar la memoria a la CPU no es completamente una causa perdida. Es probable que la memoria se mueva en el futuro porque el hecho es que la velocidad de la luz es finita y solo es posible comunicarse tan rápido a cierta distancia.

Técnicas realistas para acercar la memoria a la CPU (tenga en cuenta que estas también tienen ventajas y desventajas con las técnicas tradicionales):

  1. Apílelos encima de la propia CPU. Esto ya se hace en Raspberry Pi y es parte del estándar de memoria Wide I/O. La memoria sigue siendo un troquel separado fabricado en un proceso separado. Sin embargo, esto tiene el problema de que cualquier calor disipado en la CPU debe pasar por la memoria antes de llegar a un disipador de calor. Esto significa que no funcionará para procesadores de alta potencia, y por qué las principales aplicaciones de esta tecnología se encuentran en procesadores móviles/otras aplicaciones integradas donde su CPU no consume muchas decenas o cientos de vatios.

  2. Pégalos muy cerca en un sustrato de menor costo. Así es como HBM está diseñado para funcionar, con un bus muy grande fabricado en un troquel de "interposición" de menor costo, y es la dirección en la que se dirige la memoria GPU de gama alta porque el ancho de banda es significativamente mayor. Los chips de memoria y el intercalador todavía se fabrican en diferentes matrices del procesador real.

Esperaría que los rendimientos cayeran a medida que intenta meter más miles de millones de transistores en un dado grande: la probabilidad de una falla o falla aumenta con cada dispositivo adicional. Si divide el sistema en varias piezas más pequeñas, la posibilidad de que aparezca una falla en una sola pieza se reduce enormemente, y el costo de descartar esa pieza defectuosa también es menor. Me imagino que un troquel muy grande también sería mucho más difícil de fabricar, en igualdad de condiciones.
@JohnU Es difícil decir cómo escalará el precio porque la tasa real de defectos es un secreto comercial. Las GPU ya usan troqueles en ~ 440 mm 2 el rango se vende por alrededor de $ 550, por lo que, en una aproximación de primer orden, escalar el precio con el tamaño del troquel no parece demasiado fuera de lugar. Los dispositivos Plus con defectos aún pueden venderse como dispositivos de gama baja con ciertas funciones desactivadas. Esta es una práctica común en muchas empresas.
@JohnU: poner una gran cantidad de módulos repetidos en un dado tiene la ventaja de que cuando ocurre un defecto, puede simplemente deshabilitar el módulo en el que ocurre y liberar el dado conforme a un estándar de menor costo (esto sucede mucho con DRAM, volviendo a los años 80 cuando muchas máquinas que tenían módulos de 32 KB en realidad usaban chips de 64 K con una sección defectuosa deshabilitada). En realidad, esto puede significar que el rendimiento aumenta cuando integra DRAM con procesadores...

Hay varias razones por las que agregar grandes cantidades de DRAM a una CPU podría ser inviable.

  1. Es posible que el proceso y la fábrica no estén configurados para DRAM. DRAM requiere elementos de circuito especiales que requieren pasos de fabricación adicionales para producir. Esto aumenta el costo de fabricación.

  2. Toda esa memoria tiene que ser probada. Las pruebas de memoria aumentan el tiempo de prueba. Ese es otro aumento de costos.

  3. Ampliar el troquel es en sí mismo un aumento de costos, ya que significa menos troqueles por oblea. También afecta el rendimiento: un defecto elimina una fracción mayor de su oblea. Para un ejemplo extremo de esto, mire el costo de los sensores de imagen de fotograma completo (35 mm) en las cámaras.

  4. Desarrollar un proceso que pueda manejar tipos especiales de memoria requiere más tiempo, dinero y trabajo, y tiene un mayor riesgo de falla. Cualquier problema con la DRAM retrasaría el lanzamiento de la CPU. Las CPU de escritorio están a la vanguardia de la fabricación de semiconductores, por lo que un retraso puede ser una gran desventaja competitiva. (Ver: AMD vs. Intel durante los últimos años).

  5. DRAM requiere detección analógica para lecturas, así como actualizaciones periódicas. No soy un experto en DRAM, pero dudo que alguna vez pueda ser tan rápido como una CPU de gama alta, independientemente de si está dentro o fuera del chip. Por lo tanto, probablemente todavía esté atascado con el almacenamiento en caché de SRAM.

  6. Incluso si puede superar los problemas anteriores y meter un par de gigabytes de DRAM en una matriz de CPU, aún no será suficiente para ejecutar una PC de escritorio, una computadora portátil o un servidor, por lo que tendrá que tener memoria fuera del chip de todos modos. .

La mayoría de las cachés se implementan con ECC y algunos procesadores Intel recientes incorporan chipkill y redundancia de bloques para la caché. Esto reduce los requisitos de prueba y mejora significativamente los rendimientos para los troqueles más grandes. Por el contrario, con un sensor de imagen, no hay posibilidad de corrección de errores porque la información no se conoce a priori , y tampoco podemos decidir, cuando un bloque de píxeles no funciona correctamente, simplemente ignorarlo y usar uno de repuesto en su lugar.
Es cierto que es más fácil obtener un mayor rendimiento con las memorias. Como dije, fue un ejemplo extremo.

Además de las otras respuestas, se puede decir más sobre dicho sistema. Mover la memoria al troquel principal incluiría una serie de otros problemas de ingeniería. Tendría que redirigir los buses, construir un controlador DMA en el procesador principal, reestructurar el bus IRQ y determinar cómo deshacerse de todo ese calor adicional que estaría emitiendo en un área concentrada. Esto significa que el fabricante de la placa base también tendría que involucrarse para respaldar un cambio tan sustancial. Si bien los sistemas de gama baja probablemente se beneficiarían de dicho cambio, los sistemas de gama alta probablemente requerirían una refrigeración sustancial. Dudo que la computadora portátil promedio pueda manejar un chip así, por ejemplo.

Tal chip sería mucho más caro, aunque la placa base principal bajaría de precio (aunque probablemente no de manera apreciable). Si ha visto los paquetes para un controlador DMA, además de los paquetes de RAM, le resultará difícil creer que toda esa lógica se podría presionar en un solo troquel que no sería sustancialmente más grande. Recuerde también que las CPU se cortan a partir de obleas grandes que tienen un tamaño particular. Esto significa que el fabricante también tendría muchos menos procesadores por oblea, lo que también aumentaría el costo total.

Tenga en cuenta que no estamos hablando del uso de vataje en todo el sistema, que disminuiría, sino que habría aún más concentración de vataje (y, por lo tanto, de calor) en una sola área, lo que probablemente aumentaría la probabilidad de falla.

Finalmente, aquí hay otra desventaja, y es la capacidad de proporcionar sistemas personalizados. En este momento, los fabricantes pueden optar por sacar sistemas con procesadores idénticos pero diferentes cantidades de memoria, o diferentes procesadores pero la misma cantidad de memoria, según las preferencias del cliente. Para ofrecer la multitud de configuraciones diferentes, tendrían que construir diferentes troqueles, cada uno en una línea de montaje diferente.

AMD está utilizando activamente tecnología que realmente funciona de esa manera, donde cada parte del procesador es una unidad lógica discreta que se puede intercambiar para diferentes configuraciones. En el futuro, si un diseño de este tipo es viable, es muy posible que veamos CPU que ofrezcan memoria en el chip como una actualización de módulo costosa, tal vez intercambiando algo de potencia de procesamiento a cambio u otros ajustes. Por ejemplo, un día podríamos elegir entre 256 núcleos sin memoria integrada o 128 núcleos con memoria integrada, o tal vez incluso otras configuraciones como parte GPU, parte CPU, parte RAM.

El principal problema con esta respuesta es que los diseños de SoC para teléfonos inteligentes en realidad contienen RAM. Esos no son mucho más caros, de hecho son más baratos.
@MSalters Excepto que no están integrados en el mismo dado. Los troqueles de memoria están separados, después de haber sido probados y confirmados para funcionar correctamente, y simplemente están empaquetados junto con el troquel del microprocesador.

Casi todo lo anterior + un problema adicional más: el calor.

Las celdas DRAM son esencialmente capacitores con fugas. Y el dieléctrico aquí es la propia capa de SiO2. A medida que aumenta la temperatura, las corrientes de fuga aumentan proporcionalmente. Estos descargan las celdas DRAM mucho más rápido, lo que requeriría frecuencias de actualización mucho más rápidas, lo que aumentaría la complejidad, la corriente requerida y, por supuesto, agregaría algo más de calor.

Además de las respuestas ya dadas hay un aspecto adicional: El desperdicio por fallas en la producción:

Digamos que 1/100 de todas las CPU de un cierto modelo producido están defectuosas (en realidad es menos, por supuesto, 1/100 es más fácil de calcular) y 1/100 de todas las RAM producidas están defectuosas.

Si ambos componentes se combinaran en un solo chip, 1/100 de todos los chips tendrían una CPU defectuosa y 1/100 de todos los chips tendrían una RAM defectuosa.

Esto significaría:

  • 1 de 10000 chips tendría RAM y CPU defectuosas
  • 99 chips tendrían RAM defectuosa
  • 99 chips tendrían una CPU defectuosa
  • En total, 199 de 10000 piezas producidas serían residuos

Produciendo fichas separadas el cálculo es el siguiente:

  • 50 de 5000 RAM están defectuosas
  • 50 de 5000 CPU están defectuosas
  • 100 de 10000 piezas producidas serían residuos

Tenga en cuenta que un GB de RAM generalmente se fabrica en forma de un banco que consta de ocho chips, por lo que no tendrá que combinar dos sino 9 componentes en un solo chip si desea colocar RAM y CPU en el mismo chip. Esto daría lugar a unas 865 piezas defectuosas de las 10000 producidas en el sencillo ejemplo anterior.

Las CPU "IBM Cell" tenían exactamente este problema. La consola "Playstation" usaba chips parcialmente defectuosos; el software de Playstation se escribió de manera que no se usaron los núcleos defectuosos y las SRAM.

AMD ofreció CPU de 3 núcleos durante un tiempo por la misma razón. Creo que, en la práctica, las piezas generalmente se prueban a nivel de troquel antes de empaquetarlas, por lo que su preocupación es más aplicable a las combinaciones monolíticas de CPU y memoria.
Darpa obtuvo un premio por una eficiencia energética de 50x al superar el muro de la memoria utilizando 3dSoC, que es una tierra de fantasía en relación con los ingenieros de Intel y Qualcom, excepto que darpa es darpa. monolithic3d.com/blog/… Los SoC (sistema en un chip) son mejores para procesadores paralelos, lo que significa que hay 1000 ds de grupos en lugar de 2/16.

En realidad, hay dos tipos de RAM. Son RAM estática y RAM dinámica. La memoria estática es muy rápida pero tiene un costo más alto. Mientras tanto, la RAM dinámica es lenta en comparación con la RAM estática, pero tiene un costo económico en comparación con la RAM estática.

La memoria caché cae en la RAM estática. puede ver que vienen en tamaños de KB o MB. Ellos son rápidos. Pero alto costo.

No exactamente, sí, son rápidos, pero eso se debe principalmente a que la distancia que deben recorrer los datos es mucho menor que en DRAM.
En realidad, la celda SRAM es más rápida porque es más simple. Es un circuito biestable digital. Si accidentalmente lo configurara en el valor analógico 0.8, se arreglaría solo moviéndose a la posición estable 1.0. DRAM no tiene tales estados estables. No se aleja de los estados intermedios. Peor aún, se mueve hacia tales estados, por lo que necesita un circuito de "actualización" correctivo adicional.
@MSalters: la celda SRAM NO es más simple que una celda DRAM. Tiene razón en que es mucho más estable, lo que simplifica su uso (tanto en términos de circuitos de soporte como de diagramas de tiempo). Pero las celdas SRAM son aproximadamente 6 veces más circuitos por bit que las DRAM.
@BenVoigt: En el recuento de transistores, sí, 6T frente a 1T. Pero DRAM tiene un condensador que es un componente bastante extraño. SRAM son solo transistores conectados entre sí.
El capacitor en DRAM resulta estar implementado como un transistor también
La última vez que trabajé en la industria de los semiconductores fue en 1985 (Motorola, EKB). Sin embargo, ¡seguí cada paso de los argumentos anteriores y pude corroborar! (Nuestra DRAM más grande fue la 64k MK6665 y nuestra SRAM más grande la 4k MK2114). Esos eran los dias...

Además de las otras razones mencionadas, muchos sistemas tienen más de un núcleo de CPU. A veces, cuando la información que se almacena en la DRAM principal es consistente con todas las copias almacenadas en caché, todos los procesadores que no tienen la información almacenada en caché tendrán el mismo acceso a ella. Algunas arquitecturas están diseñadas en torno a la suposición de que cada núcleo de CPU "poseerá" un rango de espacio de direcciones, e incluso si una CPU es capaz de acceder a la memoria que es propiedad de otros procesadores, dichos accesos serán mucho más lentos que los accesos a su propia memoria. , pero x86 generalmente no se implementa de esa manera.

Si un sistema se diseñó en torno a la suposición de que los núcleos del procesador poseen ciertos rangos de direcciones, y el código debe intentar minimizar el uso de los rangos de direcciones de otros procesadores, entonces tendría sentido que cada código de procesador incluyera una cantidad generosa de memoria en el chip. Tal diseño podría reducir el tiempo requerido para que un núcleo de procesador acceda a su propia memoria, pero probablemente aumentaría el tiempo requerido para acceder a la memoria de otro procesador. Sin embargo, a menos que el sistema esté diseñado en torno a tal suposición, es probable que los datos se distribuyan entre los procesadores sin tener en cuenta quién los necesita y cuándo. Incluso si el tiempo extra requerido para acceder a los datos desde dentro de otra CPU (frente a un sistema de memoria externo) fuera solo la mitad del tiempo ahorrado en un acceso interno,

Si uno estuviera diseñando un sistema desde cero para adaptarse a las tecnologías actuales, una arquitectura de memoria no uniforme podría permitir una mayor rentabilidad que una que necesita permitir que todos los procesadores accedan a toda la memoria de manera eficiente. Sin embargo, dados los diseños de software de hoy en día, tener un sistema de memoria externa que se comparte entre los procesadores puede ser más eficiente que tratar de tener un almacenamiento masivo de datos dentro de los propios procesadores.

Las arquitecturas de memoria no uniformes ya se utilizan (e incluso son comunes) en la actualidad. Para una CPU con controladores de memoria integrados utilizados en un sistema de múltiples procesadores, los datos almacenados en la memoria física de otro procesador están más distantes y accesibles con una latencia más alta que los de su memoria RAM conectada localmente. En la práctica, lo que sucede en estos sistemas es que los procesadores están equipados con niveles adicionales de caché y el tráfico de coherencia es manejado en parte por el tejido de conexión. POWER7 y POWER8 son de este tipo.

Si bien todas las respuestas anteriores son correctas al señalar por qué es tan difícil agregar más memoria a la CPU, también es cierto que hay bastante memoria en las CPU modernas.

En las operaciones en tiempo real, cuando los retrasos deterministas son importantes, no es extraño utilizar la memoria caché en el chip como memoria direccionable, para código y/o datos. La ventaja es un tiempo de acceso rápido y constante, y la desventaja es que la memoria en el chip es bastante limitada.

Los problemas que describe en su pregunta original solo podrían evitarse si TODA la memoria de la máquina se incluyera en la CPU. Cualquier memoria adicional agregada a la máquina a través de ranuras en la placa principal estaría sujeta a los mismos retrasos que usted describe y requeriría dispositivos de control lógico y de clasificación entre la CPU/RAM y la RAM integrada.

La memoria RAM es barata y los usuarios normalmente la amplían una o incluso dos veces entre la actualización de su CPU.

Recuerde también que una llamada típica de "Obtener", incluso si la RAM está funcionando a la velocidad del reloj de la CPU, dará lugar a una serie de tics inactivos en la CPU.

La organización tradicional de la memoria en una máquina es una pirámide con los registros de la CPU en la parte superior, luego el caché, luego la RAM y finalmente el disco. Por lo general, las máquinas que funcionan bien tienen una combinación de una velocidad de reloj decente, una cantidad razonable de caché, una buena cantidad de RAM y un disco duro (o matriz) de alta velocidad. En los últimos años, el rendimiento del disco suele ofrecer la mejor mejora del rendimiento en la mayoría de las PC y los discos de altas RPM, los discos con memoria caché y los discos de estado sólido ofrecen una buena mejora del rendimiento.

Sí, una máquina con toda su RAM en el chip funcionaría bien en las aplicaciones modernas, pero una máquina con parte de su RAM en el chip que ejecuta un sistema operativo estándar probablemente no proporcione el aumento de rendimiento que podría pensar.