En una aplicación multiproceso, tendrían un multi-núcleo o multiprocesador disposición de ser mejor?

StackOverflow https://stackoverflow.com/questions/2767795

Pregunta

He leído mucho sobre este tema ya tanto aquí (por ejemplo, stackoverflow.com/questions/1713554/threads-processes-vs-multithreading-multi-core-multiprocessor-how-they-are o multi-CPU, multi-núcleo y la hiper-hilo ) y en otros lugares (por ejemplo, ixbtlabs .com / artículos2 / cpu / rmmt-L2-cache.html o software.intel.com/en-us/articles/multi-core-introduction/), pero todavía no estoy seguro acerca de un par de cosas que parecen muy sencillo. Así que pensé que simplemente pediría.

(1) es un procesador multi-núcleo en la que cada núcleo tiene caché dedicada efectivamente lo mismo que un sistema multiprocesador (equilibrada por supuesto, para la velocidad del procesador, tamaño de la caché, y así sucesivamente)? ??

(2) Vamos a decir que tengo algunas imágenes para analizar (es decir, la visión artificial), y tengo estas imágenes cargadas en la memoria RAM. Mi aplicación genera un subproceso para cada imagen que necesita ser analizado. Will esta aplicación en una carrera procesador de caché compartida de varios núcleos más lento que en una caché dedicada procesador multi-núcleo, y sería la última carrera en la misma velocidad que en una máquina con varios procesadores de un solo núcleo equivalente?

Gracias por la ayuda!

¿Fue útil?

Solución

El tamaño de la memoria caché es importante. Por el bien de este Asumo procesadores x86 y sólo utilizando la caché L2, que se comparte en procesadores de doble núcleo.

Si está comparando 2 procesadores de un solo núcleo con 1 procesador de doble núcleo y los procesadores de un solo núcleo ambos tienen la misma cantidad de memoria caché de datos (que se ejecuta a la misma velocidad), entonces usted tiene más caché, de modo más porciones de las imágenes pueden cabe en la memoria caché, y es muy probable que si el procesamiento de los datos de la imagen tuvo que cargar y / o almacenar estos datos en repetidas ocasiones que esto iría más rápidamente a las velocidades de reloj misma.

Si está comparando 2 procesadores de un solo núcleo con 1 procesador de doble núcleo cuya memoria caché de datos es dos veces el tamaño de caché de datos de cada procesador de núcleo único, a continuación, alrededor de la mitad de la caché de datos será utilizado para el trabajo de cada procesador. Es probable que dejar de fumar, además de los datos de imagen que cada hilo independiente tiene que utilizar que habrá algunos datos compartidos. Si estos datos compartida se almacena en caché los datos compartidos, entonces se puede compartir más fácilmente entre los dos núcleos que en el núcleo 2xSingle establecido. En la configuración del núcleo 2xSingle para cada fragmento de datos compartidos uno de los cachés se almacenaría y no habría un poco de sobrecarga cuando el otro procesador necesaria para utilizar esos datos.

máquinas de doble núcleo también hacen que sea más fácil para los hilos para migrar de un núcleo a otro en el mismo módulo del procesador, ya que el caché del nuevo procesador de la rosca no necesita ser llenado, mientras que el otro tiene datos que no necesita ya ocupar espacio.

Me gustaría sugerir que todo lo que se termina con que experimente con la limitación del número de hilos de 3 a 10 por núcleo en cualquier momento para su uso general. Los hilos serán todos compitiendo entre sí para que el espacio de caché, por lo que muchos lo hará de modo que todos los datos de 1 hilo es empujado hacia fuera antes de que se reprograma hilo. Además, si cada bucle de hilo de lata durante unos cuantos archivos de imagen a ganar un poco de espacio mediante el fomento de pila de cada hilo de permanecer en la memoria caché porque tiene un menor número de pilas. También reduce la cantidad de memoria que el sistema operativo tiene que utilizar para mantenerse al día con las discusiones.

Esta victoria más importante es cuando se puede solapar con el procesamiento de acceso lento, tales como el disco, red o la interacción humana, así, es demasiado hilos para mantener las CPU de procesamiento de ocupados es lo que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top