На этой неделе Microsoft в своем блоге представила программный интерфейс DirectStorage из семейства DirectX, призванный значительно ускорить операции ввода-вывода информации. Технология берет свое начало из архитектуры Xbox Velocity для консоли нового поколения Xbox Series X, но в будущем появится и на ПК под управлением Windows 10. Вполне очевидно, основной целью DirectStorage является значительное сокращение времени загрузки в играх и возможность создания огромных бесшовных виртуальных миров.

За последние годы резко возросли объёмы данных для компьютерных игр и меняются принципы их загрузки в оперативную и видеопамять. Если раньше за раз загружались большие куски информации очень небольшим количеством запросов ввода-вывода, то теперь среди разработчиков используется подход разбивки массива данных на много мелких частей с постоянной подгрузкой необходимых фрагментов. Этот подход намного более эффективен с точки зрения менеджмента памяти и может обеспечить более качественные сцены, хотя он генерирует гораздо больше запросов ввода-вывода.

К сожалению, текущие API хранения данных не оптимизированы для такого большого количества запросов ввода-вывода. И если мы видим постоянную эволюцию твердотельных накопителей с точки зрения железа, то программная часть операционной системы «застряла» в прошлом десятилетии. Фактически, актуальные API не способны масштабироваться под современные NMVe-накопители с интерфейсом PCIe и полностью заполнять пропускной канал ввода-вывода.

Именно здесь на помощь приходит DirectStorage. Этот API является ответом на современные требования к системам хранения и конвейеру ввода-вывода в компьютерных играх. DirectStorage будет поддерживаться в «некоторых системах» с накопителями NVMe. Microsoft не уточняет, но вероятно понадобится совместимые материнская плата и SSD, настроенные для работы с DirectStorage.

Существующие API требуют, чтобы приложение управляло и обрабатывало каждый из запросов ввода-вывода по одному. Проблема заключается в том, что количество этих запросов возрастает с сотен в секунду для игр предыдущего поколения до десятков тысяч в будущих проектах. Более того, пакеты данных зачастую сжаты и требуют время и ресурсы на распаковку.

API DirectStorage спроектирован таким образом, чтобы учитывать эти нюансы и максимизировать производительность на протяжении всего конвейера от NVMe-диска до графического процессора. Его механизмы делают это несколькими способами: сокращение необходимых вычислительных ресурсов на каждый запрос, одновременную группировку и обработку многих параллельных запросов ввода-вывода, и обеспечение более точного контроля над приоритетами.

Таким образом, разработчики получают чрезвычайно эффективный способ управления на порядки большим количеством запросов ввода-вывода, чем когда-либо прежде. В конечном итоге это сводит к минимуму время ожидания входа в игру, а также предоставляет игрокам более крупные и подробные виртуальные миры с мгновенной подгрузкой контента во время путешествия по ним.

Учитывая скорый релиз Xbox Series X, наработки по DirectStorage уже используются разработчиками. Что касается ПК и Windows 10, то предварительная версия API DirectStorage выйдет в следующем году. Можно предположить, что фактическая реализация доберется до ПК не ранее конца 2021 года или, скорее, с 2022 года в некоторых кроссплатформенных играх.

Источник:
DirectX Developer Blog