Los multiprocesadores se pueden dividir en tres categorías de modelos de memoria compartida: UMA (Acceso uniforme a la memoria), NUMA (Acceso no uniforme a la memoria) y COMA (Acceso a memoria solo en caché). Los modelos se diferencian en función de cómo se distribuyen los recursos de memoria y hardware. En el modelo UMA, la memoria física se comparte de manera uniforme entre los procesadores, que también tienen la misma latencia, mientras que NUMA proporciona un tiempo de acceso variable para que los procesadores accedan a la memoria.
El modelo UMA (memoria compartida) utiliza uno o dos controladores de memoria. Por el contrario, NUMA puede tener múltiples controladores de memoria para acceder a la memoria.
Los buses individuales, múltiples y de barra transversal se utilizan en la arquitectura UMA. Por el contrario, NUMA utiliza buses jerárquicos y de tipo árbol y conexión de red.
En UMA, el tiempo de acceso a la memoria para cada procesador es el mismo, mientras que en NUMA el tiempo de acceso a la memoria cambia.
Las aplicaciones de uso general y de tiempo compartido son adecuadas para las máquinas UMA. Por el contrario, la aplicación adecuada para NUMA es en tiempo real y centrada en el tiempo crítico.
Los sistemas paralelos basados en UMA funcionan más lentamente que los sistemas NUMA.
Cuando se trata de ancho de banda, UMA tiene un ancho de banda limitado. Por el contrario, NUMA tiene más ancho de banda que UMA.
En resumen, la arquitectura UMA proporciona la misma latencia general a los procesadores que acceden a la memoria. Esto no es muy útil cuando se accede a la memoria local porque la latencia sería uniforme. Por otro lado, en NUMA cada procesador tiene su memoria dedicada que elimina la latencia cuando se accede a la memoria local. La latencia cambia a medida que cambia la distancia entre el procesador y la memoria (es decir, no uniforme). Sin embargo, NUMA ha mejorado el rendimiento en comparación con la arquitectura UMA.