False Sharing

Actualmente todas las computadoras están formadas por varios procesadores, por esta razón el desarrollo software está evolucionando hacia el procesamiento en paralelo con la finalidad de explotar al máximo posible estas máquinas. Este tipo de procesamiento nos permite utilizar cada una de las CPUs de nuestra máquina de forma simultánea para realizar un conjunto de operaciones independientes unas de otras. Pero no siempre ejecutar una aplicación de forma concurrente significa que se vaya a ganar rendimiento de forma inmediata, incluso en ciertas ocasiones se puede perder si el procesamiento concurrente no se gestiona de forma correcta.

Una de las principales causas que provocan una disminución de rendimiento es la sincronización entre los distintos procesadores. Esto es debido a que los procesadores generalmente tienen entre dos y tres niveles (L1, L2,…) de memoria caché en los cuales se va replicando la información de la memoria del sistema cuyo acceso suele ser lento mientras que el acceso a estos tipos de memoria es mucho más rápido. La velocidad de acceso va aumentando en función del nivel de la caché, a mayor proximidad a la CPU (L1) mayor velocidad.

figure1 Sigue leyendo

Anuncios