¿Cuál es la relación entre la velocidad del procesador y el número de núcleos al manejar o responder a diferentes gigabytes de RAM?

Buena respuesta de Joe Zbiciak cubre casi todo. Yo diría que en sistemas más grandes que los sistemas integrados, ya no hay una relación entre RAM y CPU. Esto se basa en el hecho de que ahora hay, comúnmente, 3 cachés diferentes en un procesador,

  • Nivel 1 pequeño, muy muy rápido, justo al lado de un núcleo.
  • Caché de nivel 2, generalmente compartido con un segundo núcleo, que es bastante más grande
  • Nivel 3 Masivo en comparación con los otros 2 compartidos en todos los núcleos.

El caché de nivel 3 a menudo se denomina caché de sacrificio, la última oportunidad del salón antes de salir realmente a esa RAM horriblemente lenta. Ahora hay un hardware específico en los procesadores para intentar mover los datos que la CPU necesitará de la RAM al caché L3. Tiene buses de memoria amplia para ayudar a mover los datos hacia y desde L3, la última vez que verifiqué 384 bits de ancho, datos de 6 × 64 bits de longitud o palabras de instrucciones en un solo put o fetch. Algunos sistemas tienen buses de memoria duales para que puedan mover datos a 2 tarjetas de memoria separadas al mismo tiempo, permitiendo movimientos de 12 × 64 bits por ciclo de memoria.

Mantener la caché L3 cargada es un trabajo que no realizan los núcleos de procesamiento y creo que es ese hardware el que realmente desconecta la relación entre la RAM y la CPU.

Como dice la respuesta de Thomas Rush, no existe una relación directa entre la velocidad del procesador, el número de núcleos y los gigabytes de RAM.

Eso no significa que no haya relación.

La Ley de Amdahl demuestra matemáticamente por qué es difícil acelerar una tarea que tiene elementos secuenciales al arrojarle más paralelismo. Por lo tanto, si arroja el doble de núcleos a un problema, es posible que no reduzca el tiempo de ejecución de algo que ya está haciendo a la mitad, porque tendrá un cuello de botella en los aspectos seriales del problema.

La Ley de Gustafson-Barsis, sin embargo, sugiere que una mejor manera de usar la potencia de cálculo adicional es trabajar en problemas más grandes . Los problemas más grandes podrían significar una combinación de un conjunto de trabajo más grande o realizar más cálculos por elemento . En la medida en que significa un conjunto de trabajo más grande , sugiere que aumentar el rendimiento exige aumentar la memoria.

Sin embargo, la relación depende mucho de la carga de trabajo y se vuelve más importante cuando construye y optimiza máquinas para roles bien definidos.

Por ejemplo, cuando trabajé en un entorno embebido en chips que ingresaron a las redes de teléfonos celulares, hubo una relación muy directa entre la cantidad de RAM requerida y la cantidad de canales paralelos (es decir, llamadas telefónicas paralelas) que un procesador determinado podía manejar. Duplica la densidad del canal en un procesador dado y duplicaría el requisito de RAM. Pero, si aparecía un protocolo que requería mucha CPU, el requisito de RAM podría disminuir incluso si obtuviéramos una CPU más rápida, porque nuestro recuento de canales disminuyó.

Para una computadora de escritorio / estación de trabajo / computadora portátil de gama alta típica, el tamaño de la RAM corresponde al tamaño del mayor problema que tiene la intención de abordar. ¿Estás editando video? ¿O estás jugando juegos? ¿Estás abordando algoritmos de aprendizaje profundo? ¿O simplemente estás navegando por la web?

Observe todas las tareas que pretende ejecutar y considere la cantidad de memoria que cada una requiere para ejecutarse realmente bien. Según su presupuesto y prioridades, selecciona una cantidad de RAM que ejecuta sus cosas más importantes lo suficientemente bien. Todo lo que necesita menos RAM viene para el viaje gratis; todo lo que necesita más RAM experimenta un rendimiento degradado.

Al final, ajusta el tamaño de la RAM a lo que requiere su conjunto de trabajo, dentro de su presupuesto.

No existe una correlación directa entre las CPU modernas y la cantidad de RAM en un sistema.

Los procesadores manejan hilos. Cuantos más núcleos tenga, más hilos podrá manejar con menos cambios de contexto. Esto es bueno, porque los cambios de contexto (de un subproceso a otro) toman tiempo y hacen que sea más probable que la memoria caché del procesador se invalide o sea necesaria para el nuevo subproceso.

Los procesos están compuestos de hilos. Un procesador de textos (hablando libremente) es un ejemplo de un proceso. Los procesos necesitan RAM para funcionar, tanto para almacenar el ejecutable del programa como para almacenar los datos que se están creando o procesando. Un proceso puede usar mucha RAM (por ejemplo, una base de datos en memoria) o muy poca RAM (un simple contador basado en texto). Cuanta más RAM tenga (hasta el total que necesitan sus programas), menos tendrá que pasar la memoria al disco, y más rápido se ejecutarán sus programas.

Entonces, si ejecuta algunos programas típicos que no requieren mucha memoria en Windows, y 4GB probablemente es suficiente, 8GB es casi seguro, y más allá de eso, no verá un beneficio de 12GB o 16GB.

Otros sistemas operativos pueden necesitar menos RAM física. Otros programas pueden necesitar más RAM. Las computadoras de servidor pueden contener y usar grandes cantidades de RAM. ¡El HP ProLiant DL580 escala hasta 6 TB de RAM!

Ampliando con Joe Zbiciak, la buena respuesta es: – Una vez que alcanza el rendimiento óptimo para el sistema, donde el conjunto de trabajo en cada nivel se encuentra cómodamente justo debajo del recurso disponible, al encender núcleos adicionales generalmente el sistema comenzará a sacudirse y el el rendimiento general para comenzar a caer dramáticamente en picada porque (típicamente) cada conjunto de trabajo de núcleos es razonablemente independiente.

Duplicar la velocidad del procesador solo puede aumentar el rendimiento general al doble, pero duplicar la memoria puede aumentar fácilmente el rendimiento entre 10 y 100 veces si el sistema está sometido a una gran agitación. Duplicar el número de núcleos también solo podría aumentar el rendimiento al doble en el mejor de los casos. Si su sistema está cerca del punto en el que comienza a agitarse, entonces agregar núcleos de hecho puede ralentizar el sistema porque el efecto de la agitación puede abrumar cualquier beneficio bruto de instrucciones por segundo.

El primer ejemplo que experimenté fue en Uni: teníamos un proyecto para simular el almacenamiento en caché del procesador y generar estadísticas para que pudiéramos optimizar el tamaño y las estrategias de la página de caché utilizando un seguimiento de ejecución real dado. El conjunto de trabajo de ese programa era tan grande que el sistema BSD4.2 se detuvo cuando la quinta persona comenzó su programa (era tan malo que se podía ver el retraso en el eco del carácter rs232 retrasado).

La velocidad del procesador le indica qué tan rápido se ejecuta una instrucción, la cantidad de núcleos se relaciona con los diferentes tipos de tareas que puede realizar una computadora y la memoria le da espacio para ejecutar diferentes aplicaciones al mismo tiempo. Este último se puede complementar con espacio en el disco duro si se ejecutan demasiadas aplicaciones al mismo tiempo.

Existe una relación simbiótica entre los tres y, si se optimiza, la computadora funciona como está clasificada.

Por supuesto, esto es teóricamente. Si alguno de los componentes de una operación de computadora no funciona tan rápido como los demás (lo cual es siempre el caso), las cosas se bloquean. En la mayoría de los casos y para la mayoría de las personas esto no se nota.