Comparación de UMA y NUMA

Servidor Origin de SGI - Introducción

Comparación de ccNUMA y COMA

En el actual mundo de arquitecturas de memoria distribuida compartida, hay dos arquitecturas dominantes: El más popular es un diseño llamado Cache-Coherent Non-Uniform Memory Access ( "ccNUMA"). El otro diseño emergente es el Cache Only Memory Architecture ( "COMA"). Asi como UMA difiere de estas ya que tiene una memoria uniforme para todos los procesadores, ccNUMA y COMA se diferencian por la forma de uso del caché (ya que las dos usan memoria distribuida).

En una máquina ccNUMA, la dirección (física) en un bus de memoria de un nodo de proceso se usa para determinar la ubicación de memoria del nodo hogar de un dato particular. La jerarquía de cache en cada nodo de proceso se construye para reproducir y mantener copias de los datos de no sólo la memoria local, sino también de la memoria de nodos remotos. La coherencia del hardware y mecanismo de directorios sirven para mantener éstas copias de cachés consistentes. Mientras el caché ayuda a reducir la latencia de acceso a una memoria remota, el total disponible es restringido al tamaño del caché en cada nodo. Además, si los datos estan ubicados en un nodo remoto entonces hay un causa para emigrarlos localmente. De cualquier modo, tal migración es una operación costosa implicando la sincronización del sistema operativo entre todos los nodos compartidos.

En una máquina COMA, hardware adicional incluyendo etiquetas (tags) y estado de memoria se agragan a la DRAM de cada nodo de proceso para convertirlo en un tipo de caché que llamamos memoria de atracción. Este hardware adicional habilita la desasociación de la ubicación actual de los datos en la máquina de las direcciones físicas producidas por los procesadores. Haciendo esto habilita los datos para ser reproducidos y emigrados automáticamente según demanda alrededor de la máquina, creando una plataforma mucho más flexible para las aplicaciones. En resumen, una máquina COMA provee una plataforma muy flexible para una procesar una aplicación, pero sobre un gasto en memoria adicional de sobreuso del sistema y quizás más importantemente, una implementación del controlador de la coherencia de la atracción de la memoria complejo. Por contraste, una arquitectura ccNUMA es más fácil de implementar, (posiblemente porque ya esta implementada), pero da fuerza a ser más firme en cuanto al grado de replicación de los datos que una aplicación usaría, y el significante costo más alto de ubicar los datos incorrectamente y la migración (si es posible por la aplicación).

COMA simple (Simple COMA)

COMA simple es un intento para superar los problemas de los convencionales ccNUMAs y COMAs, proveyendo una máquina que tiene las ventajas del hardware COMA, que son replicación automática y migración de datos, pero con una simplicidad de hardware comparable a un CC-NUMA, así reduce el costo general y el tiempo de mercado de la máquina.

Una máquina COMA Simple es una arquitectura hibrida de hardware/software en que muchas de las operaciones complejas del harware COMA convencional se han movido a software, pero con hardware suficiente para operaciones de funcionamiento críticas, como la coherencia de datos.

La realisación más importante en COMA Simple es que la Unidad del Manejo de la Memoria (MMU: Memory Management Unit) en un procesador puede ejecutar la misma función que el hardware requerido para construir la memoria de atracción en un COMA contemporáneo: En un hardware COMA una referencia a la memoria es mostrada al sistema de atracción de memoria y la dirección se etiqueta para ubicar (si hay) datos correspondientes en la memoria del nodo local. En el sistema de memoria virtual de una estación de trabajo, (por ejemplo), se presenta una referencia de la memoria al MMU; el MMU ubica los datos correspondientes en la memoria física local - ejecutando el equivalente a la etiqueta (tag) de COMA - o page faulting si los datos no estan presente (es decir, no hay mapeo de página física a virtual). Por eso el MMU es usado para hacerle a la memoria física un caché de un espacio de direcciones virtual más grande.