Очевидные отличия:
- они поддерживают память с ECC (это аппаратно и для программиста прозрачно)
- они поддерживают NUMA (в смысле к своей памяти обращатся быстрее чем к чужой)
тут я не понимаю, как именно идёт доступ к чужой памяти вообще
- они поддерживают межпроцессорную синхронизацию
(ну так ядра одного сокета тоже между собой синхронизируются, не вижу разницы для ПО,
кроме алгоритмической - стараться соблюдать локальность а пределах сокетов)
Что в них такого ещё особенного-то?