- NUMA
-
Non-Uniform Memory Access o Non-Uniform Memory Architecture (NUMA) es un diseño de memoria utilizado en multiprocesadores donde la memoria se accede en posiciones relativas de otro procesador o memoria compartida entre procesadores. Bajo NUMA, un procesador puede acceder a su propia memoria local de forma más rápida que a la memoria no local (memoria local de otro procesador o memoria compartida entre procesadores).
Contenido
Historia
Incialmente las CPU de ordenadores y superordenadores eran más lentos que sus respectivas memorias, siendo superado su rendimiento en 1970. Desde entonces las CPUs debían esperar mientras los accesos a memoria eran completados. Algunos ordenadores diseñados de 1980-1990 se centraban en proporcionar memoria de alta velocidad en los accesos frente a los procesadores más rápidos, lo que les permitía trabajar con grandes volúmenes de datos que otros sistemas no podían. Entre los precursores de dicha tecnología tenemos a Data General, con AViiON y Sequent Computer Systems, actualmente parte de IBM, con la misma estrategia al mismo tiempo. El sistema con nombre clave "Manx" fue el primer esfuerzo, basado originalmente en hardware Pentium y Zenith, pero nunca se vendió en el mercado. Dentro de los equipos desarrollados por Data General podemos mencionar el servidor AV/9500 de 16 CPU y su sucesor, el modelo AV 1000, con 32 en 1995, y los AV 20000 ("Audubon") que conectaban hasta 32 procesadores Pentium Pro, y AV 25000 ("Audubon 2") hasta 64 Pentium II, (luego Pentium III) Xeons.
Conceptos básicos
Limitar el número de accesos a memoria es la clave de un alto rendimiento en un ordenador moderno. Para los procesadores esto significa el incremento de alta velocidad de la memoria caché y el uso de algoritmos más sofisticados para evitar los errores de caché. Aunque el drástico aumento del tamaño de los sistemas operativos y las aplicaciones que se ejecutan en ellos han abrumado las mejoras del procesamiento de la caché. Los sistemas de multiprocesamiento hacen que el problema sea peor. Ahora el sistema debe bloquear varios procesadores a la vez, porque solo un procesador puede acceder a la memoria a la vez.
NUMA intenta resolver este problema ofreciendo memoria distribuida para cada procesador, evitando así que afecte al rendimiento del sistema cuando varios procesadores intentan acceder a la misma memoria. Para los problemas de la propagación de datos (comunes en servidores y aplicaciones similares), NUMA puede mejorar el rendimiento utilizando una única memoria compartida por un factor de aproximadamente el número de procesadores (o separando bancos de memoria).
Véase también
Enlaces externos
- NUMA FAQ (en inglés)
- Page-based distributed shared memory (en inglés)
- A NUMA API for LINUX - a technical white paper from Novell (en inglés)
- OpenSolaris NUMA Project (en inglés)
- Introduction video for the Alpha EV7 system architecture (en inglés)
- More videos related to EV7 systems: CPU, IO, etc (en inglés)
- NUMA optimization in Windows Applications (en inglés)
- NUMA Support in Linux at SGI (en inglés)
- Intel Tukwila (en inglés)
- Intel CSI explained (en inglés)
- current Itanium NUMA systems (en inglés)
Categoría:- Memorias informáticas
Wikimedia foundation. 2010.