aplicaciones intensivas de memoria o aplicaciones que requieren mucha memoria están restringidas por:
- velocidad de RAM fuera del procesador
- velocidad de caché dentro del procesador
- Número de entidades que comparten la memoria
bus
- memoria virtual
Desafortunadamente, Ts Las limitaciones no son jugadores importantes en el desempeño de un programa. Los efectos más grandes son: Cantidad de CPU, operaciones de E/S y otras tareas que se ejecutan con su programa. Cambiar estos elementos afectará su programa más que cambiar elementos que afectan el ancho de banda de la memoria.
1. Velocidad de RAM fuera del procesador
El procesador debe salir fuera de sus instrucciones y datos de concha y de agarre de la RAM. La RAM tiene velocidades diferentes a las que puede acceder a las celdas y devolver los bits al procesador. En general, esto está marcado en unidades de Hz. Cuanto más rápida sea la memoria, menos tiempo invertirá su proceso en cargar instrucciones e información, y más rápido se ejecutará su programa.
Nota: Aumentar la velocidad de la memoria más allá de las capacidades del procesador no aumentará el rendimiento. Cambia el cuello de botella de la RAM al procesador. Ver también # 3.
2. Velocidad de caché dentro de la memoria caché del procesador reside dentro de la cáscara del procesador. Este es uno de los tipos de memoria más rápidos disponibles. Los procesadores buscarán esta memoria antes de buscar RAM. La mejora de la velocidad y la cantidad de esta memoria mejorará el rendimiento de su procesador, , a menos que otros núcleos también accedan a esta memoria. Para múltiples núcleos que acceden a la memoria, es necesario que haya resolución de conflictos, lo que puede ralentizar el rendimiento de las aplicaciones.
Nota: No hay nada que pueda hacer para acelerar o cambiar el tamaño de la memoria caché, excepto obtener otro procesador. La memoria caché no es algo que pueda ser cambiado fácilmente por manos humanas o robóticas.
3. Número de entidades que comparten el bus de memoria bus
La memoria es como una carretera que utilizan las entidades para llegar a la RAM. Al igual que con una carretera, más carriles significa un rendimiento más rápido (por ejemplo, ancho de 16 bits frente a 32 bits). Muchos autobuses también tienen un límite de velocidad; una vez más, cuanto mayor sea el límite, más rápido será el acceso. Probablemente el concepto más notable es la cantidad de entidades conectadas al autobús. Al igual que con las carreteras, más usuarios ralentizan el tráfico. En la mayoría de los buses de memoria, solo una entidad puede usarlo a la vez; otras entidades deben esperar. Reducir el número de entidades que necesitan usar el bus de memoria acelerará su programa.
Algunas entidades comunes que comparten el bus de memoria: CPU, controladores DMA, procesadores de video, procesadores de sonido y procesadores de red o E/S.
4. Memoria virtual. Muchas computadoras modernas emplean memoria virtual. Si el programa requiere más memoria de la que está disponible en la memoria RAM, el sistema operativo intercambiará secciones de la memoria con áreas en el disco duro. Esto cuesta más tiempo de rendimiento que la reducción de la velocidad de funcionamiento de la memoria. Un programa de memoria intensiva es más eficiente al usar solo la memoria asignada que toda la memoria que podría necesitar. Reducir estos intercambios de memoria virtual acelerará un programa.
En resumen, hay una velocidad máxima a la que se puede ejecutar su aplicación. La memoria, tanto el caché interno como la RAM externa, son factores que contribuyen al límite superior. Hay factores más grandes que impiden que las aplicaciones lleguen a este límite. Algunos de estos factores son operaciones de E/S y otras tareas concurrentes. El diseño e implementación de un programa también puede contribuir a la lentitud. Se puede obtener más rendimiento al eliminar las operaciones de E/S, las tareas concurrentes y el rediseño del software que al cambiar el límite superior de la velocidad de acceso a la memoria. Cambiar estos límites aumentará el rendimiento de su programa, pero no tan drástico como las otras técnicas.
Lamentablemente, no puede evitar entrar en problemas de caché complicados si quiere una respuesta a su pregunta – erikkallen
Hm, supongamos que inicializo toda la memoria con 1.0s. Luego multiplico cada elemento con un número constante. Y repita ese proceso ... – hanno
Acceder a toda la memoria va a causar que esté limitado por el ancho de banda de la memoria, a menos que el intervalo entre los elementos accedidos sea muy largo. Que, por lo que parece, no lo será. –