volatil velocidad tipos tabla sirven saber qué que procesadores procesador para núcleo nucleos multinucleo microprocesadores microprocesador memoria los impulso frecuencia evolucion cronologia controlador como celeron caracteristicas capacidad cache bueno 3mb performance x86 multiprocessing intel cpu-cache

performance - tipos - velocidad de la memoria cache



¿Cómo se comparten las memorias caché en CPU Intel multinúcleo? (4)

Tengo algunas preguntas con respecto a las memorias de caché utilizadas en CPU multinúcleo o sistemas multiprocesador. (Aunque no está directamente relacionado con la programación, tiene muchas repercusiones, mientras que uno escribe software para procesadores multinúcleo / sistemas multiprocesadores, ¡por lo tanto, pregunta aquí!)

  1. En un sistema multiprocesador o un procesador multinúcleo (Intel Quad Core, Core two Duo, etc.), ¿cada núcleo / procesador de la CPU tiene su propia memoria caché (datos y caché del programa)?

  2. ¿Puede un procesador / núcleo acceder a la memoria caché de los demás, porque si se les permite acceder a la caché mutua, entonces creo que puede haber menos errores de caché, en el caso de que ese caché de procesadores en particular no tenga algunos datos, pero algún otro segundo la memoria caché de los procesadores podría tenerlo evitando así una lectura de la memoria en la memoria caché del primer procesador? ¿Es esta suposición válida y verdadera?

  3. ¿Habrá algún problema al permitir que cualquier procesador acceda a la memoria caché de otro procesador?


En un sistema multiprocesador o un procesador multinúcleo (Intel Quad Core, Core two Duo, etc.), ¿cada núcleo / procesador de la CPU tiene su propia memoria caché (datos y caché del programa)?

  1. Sí. Varía según el modelo de chip exacto, pero el diseño más común es que cada núcleo de CPU tenga sus propias cavidades de datos e instrucciones L1 privadas. La memoria caché unificada L2 generalmente se comparte entre todos los núcleos.

¿Puede un procesador / núcleo acceder a la memoria caché de los demás, porque si se les permite acceder a la caché mutua, entonces creo que puede haber menos errores de caché, en el caso de que ese caché de procesadores en particular no tenga algunos datos, pero algún otro segundo la memoria caché de los procesadores podría tenerlo evitando así una lectura de la memoria en la memoria caché del primer procesador? ¿Es esta suposición válida y verdadera?

  1. No. Los cachés L1 de cada núcleo de CPU están en el mismo troquel que el núcleo y no pueden acceder a ellos otros núcleos. Los núcleos están conectados a la caché L2 a través del bus de datos compartido.

¿Habrá algún problema al permitir que cualquier procesador acceda a la memoria caché de otro procesador?

  1. Sí, simplemente no hay cables que conecten los diversos cachés de la CPU con los otros núcleos. Si un núcleo quiere acceder a los datos en el caché de otro núcleo, la única ruta de datos a través de la cual puede hacerlo es el bus del sistema.

Un problema relacionado muy importante es el problema de coherencia de caché . Considere lo siguiente: suponga que un núcleo de la CPU tiene una ubicación de memoria particular en su caché, y escribe en esa ubicación de la memoria. Luego, otro núcleo lee esa ubicación de memoria. ¿Cómo se asegura de que el segundo núcleo vea el valor actualizado? Ese es el problema de coherencia de caché. Hay una variedad de soluciones; ver Wikipedia et al.


Intel llama a la tecnología de intercambio de caché central Intel Smart Cache . Hay un resumen de la página wiki al respecto: https://en.wikipedia.org/wiki/Smart_Cache

Luego, por ejemplo, para el procesador i5-3210M, la página de arca tiene un campo "Intel Smart Cache: 3 MB".

Y la Hoja de datos Volumen 1 1.1 "Detalles de la función del procesador" dice:

  • Una instrucción de 32 KB y un caché de primer nivel de datos de 32 KB (L1) para cada núcleo
  • Un caché de segundo nivel de instrucción / datos compartido (L2) de 256 KB para cada núcleo
  • Hasta 8 MB de memoria compartida / datos de caché de tercer nivel (L3), compartida entre todos los núcleos

Para responder la primera, sé que Core 2 Duo tiene un sistema de almacenamiento en caché de dos niveles, en el que cada procesador tiene su propio caché de primer nivel y comparten un caché de segundo nivel. Esto ayuda tanto con la sincronización de datos como con la utilización de la memoria.

Para responder a su segunda pregunta, creo que su suposición es correcta. Si los procesadores pudieran acceder a la memoria caché de los demás, obviamente habría menos errores de caché, ya que habría más datos para que los procesadores pudieran elegir. Considere, sin embargo, la memoria caché compartida. En el caso de Core 2 Duo, tener memoria caché compartida permite a los programadores colocar las variables comúnmente utilizadas de forma segura en este entorno, de modo que los procesadores no tengan que acceder a sus cachés de primer nivel individuales.

Para responder a su tercera pregunta, podría haber un problema con el acceso a la memoria caché de otros procesadores, que va al principio "Escritura múltiple de lectura simple". No podemos permitir que más de un proceso escriba en la misma ubicación en la memoria al mismo tiempo.

Para obtener más información sobre el núcleo 2 duo, lea este artículo ordenado.

http://software.intel.com/en-us/articles/software-techniques-for-shared-cache-multi-core-systems/


Respuestas rápidas 1) Sí 2) No, pero todo puede depender de la instancia de memoria / recurso al que se refiera, los datos pueden existir en varias ubicaciones al mismo tiempo. 3) Sí.

Para una explicación completa del problema, debe leer el artículo de 9 partes "Lo que todo programador debe saber sobre la memoria" por Ulrich Drepper ( http://lwn.net/Articles/250967/ ), obtendrá la imagen completa del problemas sobre los que parece estar preguntando en un detalle bueno y accesible.