Недавний выход серверных процессоров NVIDIA Vera в формате самостоятельных SoC, ориентированных на конкуренцию с Intel Xeon и AMD EPYC, сопровождается неожиданным техническим нюансом. Как выяснилось, архитектура Vera оптимизирована прежде всего под экосистему NVIDIA и может работать некорректно при использовании графических карт и ускорителей сторонних производителей. Речь идёт не о программных ограничениях, а о выявленной аппаратной ошибке, затрагивающей работу PCIe-контроллеров в составе CPU.
Проблема проявляется в том, как процессоры Vera формируют адреса памяти при операциях записи в области PCIe Memory-Mapped I/O. В определённых сценариях, особенно при частичных записях с использованием байтовых масок, контроллер может генерировать некорректные адреса. Ситуация усугубляется, если MMIO-области отображаются с использованием атрибута Arm Normal Non-Cacheable, который допускает более свободный порядок операций с памятью. В результате возможны ошибки обмена данными, повреждение информации и даже отказ PCIe-устройств при нагрузках с интенсивным DMA, характерных для обучения ИИ-моделей и HPC-задач.
С графическими ускорителями NVIDIA таких проблем не возникает, поскольку они проектировались с учётом особенностей Vera и специфики её модели упорядочивания памяти. Для сторонних устройств NVIDIA предлагает обходной путь на уровне операционной системы. В фирменных NV-Kernel, распространяемых через отдельный репозиторий, используется патч ядра Linux, который во время выполнения преобразует проблемный атрибут Normal Non-Cacheable в Device-nGnRE, обеспечивающий более строгий порядок операций. Такой подход позволяет восстановить стабильность работы, хотя в отдельных I/O-чувствительных сценариях может приводить к росту задержек и снижению производительности по сравнению с исходным режимом.
Стоит отметить, что NVIDIA не является единственной компанией, столкнувшейся с подобной ситуацией. Ранее схожие проблемы фиксировались у Arm-процессоров Ampere Altra, где PCIe-контроллеры также могли выдавать некорректные адреса при определённых типах MMIO-доступа. Ampere решила вопрос за счёт модификаций ядра Linux, не сообщая о заметном падении производительности, что косвенно указывает на более общие особенности взаимодействия Arm-архитектуры с внешними устройствами.
В результате Vera формально остаётся универсальным серверным CPU, однако на практике его использование с ускорителями не от NVIDIA требует дополнительных программных обходных решений. Это может стать важным фактором для операторов дата-центров и интеграторов, планирующих гетерогенные системы с GPU и ускорителями разных вендоров.
