Arquitectura de varios núcleos de PC, programación de acceso de los núcleos a la memoria del sistema

1

La computadora de mi oficina tiene 8 núcleos. Recientemente actualicé el sistema de 4 Gb de RAM (en dos módulos) a 24 Gb de RAM (en seis módulos) y noté un aumento considerable en el rendimiento cuando hay varios núcleos activos. En particular, cuando todos los núcleos (o casi todos) están activos y ejecutando programas que exigen más de lo que proporciona el caché de cada núcleo (8Mb).

La memoria RAM antigua y la nueva tienen la misma velocidad (FSB 1333MHz). Así que sospecho que eso no es lo que está pasando.

¿Es posible que (algunas?) Las arquitecturas de PC permitan que los núcleos accedan simultáneamente a la RAM del sistema si la memoria que están usando está suficientemente "alejada"? No estoy seguro de lo que podría significar "lejos" pero puede que haya un modo de que un núcleo lea / escriba en la tarjeta 1 (o el chip 3 en la tarjeta 1), mientras que otro núcleo pueda leer / escribir en la tarjeta 2 (o el chip 1 en la tarjeta 1)? ¿Son las arquitecturas de PC (y quizás los sistemas operativos) tan inteligentes?

Ryan Budney
fuente

Respuestas:

2

Suponiendo que la placa base soporta triple canal operación, entonces el aumento de rendimiento se debe, al menos en parte, a que se pasa de canal doble a canal triple.

sblair
fuente
Gracias. ¿Hay una forma fácil en Linux para verificar si la especificación DDR3 está activa en una computadora determinada o no? Su explicación suena plausible. "sudo lshw -c memory" no parece tener ese tipo de información.
Ryan Budney
@Ryan Una forma de averiguarlo sería buscar la especificación de la placa base. Si la placa base admite tres canales, entonces probablemente esté activa porque ha llenado las seis ranuras de memoria (suponiendo que hay seis en total). El BIOS también podría confirmar que el triple canal está habilitado.
sblair
Ah, está bien, eso lo confirma. Las 6 tarjetas de memoria son idénticas y admiten DDR3, y la placa base también.
Ryan Budney
3

Bueno hay NUMA . Cuando se usa, cada núcleo recibe un RAM asignado. De esta manera sucede exactamente lo que usted describió. Un procesador funcionará con la memoria RAM asignada y otro funcionará con una parte diferente de la memoria RAM. Algunas placas base ni siquiera detectarán la RAM a menos que haya suficientes CPU presentes para usarlo todo. No sé si este es el caso de la computadora que se menciona aquí, pero si es una computadora de nivel de estación de trabajo, entonces es posible.

Otra opcion es entrelazado de memoria . Algunas computadoras pueden acceder a la memoria más rápido si la memoria se "separa". El principio es que mientras un módulo está ejecutando la operación de escritura, otro puede aceptar comandos, por lo que no es necesario esperar a que la operación de escritura finalice en un módulo antes de comenzar en otro.

Así que imagina una serie de números. Cada número representa una ubicación de memoria. Digamos que en este ejemplo se simplificó en exceso cada ubicación tiene un byte de tamaño. Entonces, si el procesador necesita escribir 4 bytes, escribirá datos en las primeras 4 ubicaciones de memoria. Normalmente los wold estarán en el mismo módulo de memoria y probablemente en el mismo chip de memoria. La computadora debería esperar a que se complete cada operación de escritura antes de enviar el siguiente dato a la memoria. Si se utiliza el intercalado, las direcciones se asignan de forma diferente. Si tenemos una computadora con 4 ranuras de memoria, la dirección 1 estará en la primera ranura, 2 en la segunda, 3 en la tercera y 4 en la cuarta. De esta manera, cuando el procesador necesita escribir 4 bytes, los enviará a las primeras 4 direcciones de memoria, pero como están en módulos diferentes, no es necesario esperar a que se complete cada operación de escritura. En su lugar, enviará datos a la primera ubicación y luego a la segunda y así sucesivamente. De esta manera, para cuando termina la primera operación de escritura, otros 3 están llegando a su fin, por lo que los datos se pueden escribir más rápido en la memoria.

AndrejaKo
fuente
Ah, está bien, entonces NUMA es de lo que estaba hablando. Y a partir de los enlaces en la página de Wikipedia que proporciona, parece que Intel i7 (la computadora de mi oficina) implementa algunos protocolos tipo NUMA.
Ryan Budney