NVIDIA випустила процесор Vera окремою SoC, доступну стороннім виробникам як Arm-конкурент Intel Xeon та AMD EPYC. Але під час роботи з GPU AMD або іншими можуть виникнути негаразди.
Апаратний баг викликає помилки при поєднанні з відеокартами або прискорювачами ШІ інших виробників. Проблема виникає через те, як контролери PCIe в процесорів Vera генерують адреси пам’яті. За певних умов вони створюють недійсні адреси, які порушують надійний зв’язок зі сторонніми пристроями. Це відбувається під час операцій запису PCIe Memory-Mapped I/O (MMIO), коли процесор намагається записати дані з частковим байтовим дозволом в області MMIO.
Проблема посилюється, коли ці області відображаються за допомогою атрибута Arm Normal Non-Cacheable пам’яті “MT_NORMAL_NC”, що створює значні проблеми сумісності. Оскільки Arm використовує більш вільний порядок пам’яті для звичайних атрибутів, що не кешуються, це може спричинити помилку, яка призведе до неправильної генерації адрес, пошкодження даних і навіть збою пристроїв PCIe під час виконання робочих навантажень з інтенсивним DMA, як навчання штучного інтелекту або масштабне моделювання HPC. GPU NVIDIA розроблені з урахуванням особливостей Vera та їхнього специфічного доступу до пам’яті, тому жодних проблем не виникає.
Як пише TechPoverUp, NVIDIA може розв’язувати цю проблему за допомогою своїх апаратно-специфічних ядер Linux, які містять обхідні шляхи для таких сценаріїв. У NV-Kernels, які NVIDIA зберігає в окремому репозиторії для розгортання свого обладнання, є патч для ядра Linux, який перетворює MT_NORMAL_NC на Device-nGnRE (non-Gathering, non-Reordering, Early acknowledgement), що забезпечує суворіше впорядкування. Продуктивність в основному зберігається, але можуть виникати підвищені затримки, які можуть призвести до впливу на продуктивність у деяких робочих навантаженнях, чутливих до вводу/виводу.
Ця проблема виникає не тільки з процесорами NVIDIA. Контролери PCIe систем Ampere Computing Altra на базі Arm теж генерують недійсні адреси під час запису MMIO за певних навантажень. Ampere вирішує це схожим способом, що свідчить про те, що основною причиною може бути обробка пам’яті Arm під час підключення зовнішніх пристроїв. Однак поки не повідомлялося про погіршення продуктивності.

Повідомити про помилку
Текст, який буде надіслано нашим редакторам: