Un mesetto fa un collega mi dice «Nei nuovi server Xxx i banchi RAM sono dedicati ad un singolo processore». La cosa mi sembrava un po’ strana e, infatti, dopo qualche giorno il medesimo collega mi dice «Lascia perdere il fatto della RAM dedicata ai processori».
In realtà c’era un fondo di verità in quello che mi aveva detto, anche se le cose sono un pochino differenti: l’architettura hardware dei PC (nella più ampia accezione del termine) è passata da UMA a NUMA.
Quando è stata introdotta la tecnologia a più processori nel mondo PC, è stata scelta l’architettura SMP/UMA:
In questa architettura tutte le CPU accedono a tutta la RAM con lo steso percorso e con tempi uniformi. Tutte le CPU devono passare dal bus (e da quello che ci sta attorno) per accedere alla RAM. Questa tecnologia è considerata in questo momento obsoleta ed è utilizzata principalmente nei sistemi a singolo processore con più core.
L’evoluzione è la tecnologia NUMA:
Qui abbiamo un accesso preferenziale (ma non esclusivo!) ad un gruppo di banchi di RAM da parte di ogni processore. Questa strategia permette di porre un freno alla necessità sempre crescente di cache RAM (con tutto quello che ne consegue) tipica della tecnologia UMA. Con questa tecnologia ogni CPU (o core) riesce ad accedere ad una certa quantità di RAM in modo più veloce rispetto al resto della memoria. L’accesso al resto della RAM è sempre possibile attraverso il bus, ma con tempi maggiori. Ecco perché alcune system board hanno un ordine di riempimento dei banchi RAM apparentemente assurdo: su macchine critiche come i server conviene documentarsi su quali banchi siano preferenziali per quali socket per bilanciare il più possibile la RAM per ogni processore. Questa architettura è stata introdotta a partire dai chip AMD Opteron e Intel Nehalem.
Per approfondire gli aspetti della tecnologia NUMA, si può leggere questo pezzo di Ulrich Drepper.
Lascia un commento