Последние статьи и обзоры
Новости
Microsoft DirectStorage API — механизм ускорения загрузки данных для Windows 10
-
AngelMira
Member
В слайде описания Xbox Series X указано, что SSD используется x2 c PCI-E Gen4 (еще 2 линии оставили для внешней карты расширения).
Как понимаю, в пк хватит ссд на обычном x4 PCI-E Gen3, главное, чтобы карта висела на Gen4?
Как понимаю, в пк хватит ссд на обычном x4 PCI-E Gen3, главное, чтобы карта висела на Gen4?
-
_Slavko_
Member
- Откуда: Виноградов
Lingamer
В таскменеджере указано не время загрузки в целом, а время инициализации.
В таскменеджере указано не время загрузки в целом, а время инициализации.
-
dead_rat
Member
- Откуда: Берлін
А разве бывает, чтобы ссд был на пси3, а карта на пси4?AngelMira: в пк хватит ссд на обычном x4 PCI-E Gen3, главное, чтобы карта висела на Gen4?
-
yuriy8
Member
- Откуда: Львів
Швидкість буде обмежена PCI-E Gen3, але ніхто не обіцяє що на старих відяхах буде працювати.AngelMira:В слайде описания Xbox Series X указано, что SSD используется x2 c PCI-E Gen4 (еще 2 линии оставили для внешней карты расширения).
Как понимаю, в пк хватит ссд на обычном x4 PCI-E Gen3, главное, чтобы карта висела на Gen4?
Відправлено через 3 хвилини 19 секунди:
На 550 один з ссд на пси4, а другий на на пси3 (через чіпсет). Карта на на пси4.dead_rat:А разве бывает, чтобы ссд был на пси3, а карта на пси4?AngelMira: в пк хватит ссд на обычном x4 PCI-E Gen3, главное, чтобы карта висела на Gen4?
-
AngelMira
Member
Кстати, вспомнил, nvidia подтвердила (http://disq.us/p/2bl4qco) RTX I/O на серии Turing - получается вообще gen4 не обязателенyuriy8: Швидкість буде обмежена PCI-E Gen3, але ніхто не обіцяє що на старих відяхах буде працювати.
-
yuriy8
Member
- Откуда: Львів
Я про це давно і кажу. Фішка саме в перенесені обчислень з процесора на графічний чіп, та використання переваг nvme і не має значення який тип PCI-E, просто на 4.0 буде найбільший приріст швидкості (а для сата ссд швидкість взагалі не зміниться). Але враховуючиAngelMira:Кстати, вспомнил, nvidia подтвердила (http://disq.us/p/2bl4qco) RTX I/O на серии Turing - получается вообще gen4 не обязателенyuriy8: Швидкість буде обмежена PCI-E Gen3, але ніхто не обіцяє що на старих відяхах буде працювати.
- спойлер
- Leveraging the advanced architecture of our new GeForce RTX 30 Series graphics cards, we’ve created NVIDIA RTX IO
-
Dark_Diver
Member
Earanak всё правильно написал.
Весь смысл технологии и есть в том, что данные напрямую будут гоняться по шине PCIe между устройствами (между видеокартой и накопителем, в данном случае), минуя и чипсет, и процессор, и оперативку. Процессор будет только управлять этим процессом.
Потому, как раз, важно, чтобы оба устройства, и GPU, и накопитель, были подключены напрямую к шине PCe. А её версия, как раз, уже вторична.
А сейчас играм приходится читать текстуры по шине в оперативную память (а HD-текстуры занимают [не] прилично много места), возможно напрягая, при этом процессор на их распаковку, а потом, так же по шине, уже загружая эти самые текстуры в видеокарту по мере необходимости.
А можно будет напрямую загружать те же текстуры сразу в видеопамять, возможно, с какой-то обработкой - но уже в самой видеокарте. Прямо по шине, с гораздо большей скоростью, не нагружая процессор и не занимая оперативную память, т.е. гораздо быстрее и с меньшей латентностью всего.
Відправлено через 24 хвилини 9 секунди:
В общем, хорошая технология, не требующая, по сути, никаких особых архитектурных изменений.
Ну, очень желательно, чтобы накопитель был NVMe, подключенный прямо к шине PCIe, (не чипсетной).
Но технология для PC "из будущего", потому, думаю, ко времени её реализации, имплементации в играх и распространения все производители примут за правило подключение как минимум одного NVMe к свободным линиям PCIe, по крайней мере в материнках начиная со среднего уровня.
Придётся немного напрячься производителям матерей и некоторым производителям процессоров.
Весь смысл технологии и есть в том, что данные напрямую будут гоняться по шине PCIe между устройствами (между видеокартой и накопителем, в данном случае), минуя и чипсет, и процессор, и оперативку. Процессор будет только управлять этим процессом.
Потому, как раз, важно, чтобы оба устройства, и GPU, и накопитель, были подключены напрямую к шине PCe. А её версия, как раз, уже вторична.
А сейчас играм приходится читать текстуры по шине в оперативную память (а HD-текстуры занимают [не] прилично много места), возможно напрягая, при этом процессор на их распаковку, а потом, так же по шине, уже загружая эти самые текстуры в видеокарту по мере необходимости.
А можно будет напрямую загружать те же текстуры сразу в видеопамять, возможно, с какой-то обработкой - но уже в самой видеокарте. Прямо по шине, с гораздо большей скоростью, не нагружая процессор и не занимая оперативную память, т.е. гораздо быстрее и с меньшей латентностью всего.
Відправлено через 24 хвилини 9 секунди:
В общем, хорошая технология, не требующая, по сути, никаких особых архитектурных изменений.
Ну, очень желательно, чтобы накопитель был NVMe, подключенный прямо к шине PCIe, (не чипсетной).
Но технология для PC "из будущего", потому, думаю, ко времени её реализации, имплементации в играх и распространения все производители примут за правило подключение как минимум одного NVMe к свободным линиям PCIe, по крайней мере в материнках начиная со среднего уровня.
Придётся немного напрячься производителям матерей и некоторым производителям процессоров.
-
yuriy8
Member
- Откуда: Львів
Якщо у Вас буде встановлено DirectStorage for Windows і RTX відеокарта то все буде працювати і на інтелі теж, і ніхто спеціально не буде напружуватись. А, і саме основне забув - Ваше ПО, має бути готовим використовувати ці фішки. Ні Відьмак, ні тим Метро не будуть в 10 швидше завантажуватись (хіба що вийдуть патчі).Dark_Diver:Earanak всё правильно написал.
Весь смысл технологии и есть в том, что данные напрямую будут гоняться по шине PCIe между устройствами (между видеокартой и накопителем, в данном случае), минуя и чипсет, и процессор, и оперативку. Процессор будет только управлять этим процессом.
Потому, как раз, важно, чтобы оба устройства, и GPU, и накопитель, были подключены напрямую к шине PCe. А её версия, как раз, уже вторична.
А сейчас играм приходится читать текстуры по шине в оперативную память (а HD-текстуры занимают [не] прилично много места), возможно напрягая, при этом процессор на их распаковку, а потом, так же по шине, уже загружая эти самые текстуры в видеокарту по мере необходимости.
А можно будет напрямую загружать те же текстуры сразу в видеопамять, возможно, с какой-то обработкой - но уже в самой видеокарте. Прямо по шине, с гораздо большей скоростью, не нагружая процессор и не занимая оперативную память, т.е. гораздо быстрее и с меньшей латентностью всего.
Відправлено через 24 хвилини 9 секунди:
В общем, хорошая технология, не требующая, по сути, никаких особых архитектурных изменений.
Ну, очень желательно, чтобы накопитель был NVMe, подключенный прямо к шине PCIe, (не чипсетной).
Но технология для PC "из будущего", потому, думаю, ко времени её реализации, имплементации в играх и распространения все производители примут за правило подключение как минимум одного NVMe к свободным линиям PCIe, по крайней мере в материнках начиная со среднего уровня.
Придётся немного напрячься производителям матерей и некоторым производителям процессоров.
-
Dark_Diver
Member
Я так и написав:yuriy8: Якщо у Вас буде встановлено DirectStorage for Windows і RTX відеокарта то все буде працювати і на інтелі теж, і ніхто спеціально не буде напружуватись. А, і саме основне забув - Ваше ПО, має бути готовим використовувати ці фішки. Ні Відьмак, ні тим Метро не будуть в 10 швидше завантажуватись (хіба що вийдуть патчі).
Працювати буде, але максимальна швидкість та мінімальній вплив на систему взагалі, буде, коли GPU та накопичувач будуть на одній шині, без зайвих "прокладок" та вузьких місць типу чипсету.Dark_Diver:... технология, не требующая, по сути, никаких особых архитектурных изменений ... ко времени её реализации, имплементации в играх ...
Саме для цього і потрібна достатня кількість ліній PCIe процесора. 16 ліній на відеокарту та 4 на NVMe. Плюс ще кілька на чипсет та інше обладнання, за потреби.
-
yuriy8
Member
- Откуда: Львів
Так я з Вами і не сперечаюсь, просто багато людей думає що це буде працювати на 1080 і зі старими іграми.Dark_Diver:Я так и написав:yuriy8: Якщо у Вас буде встановлено DirectStorage for Windows і RTX відеокарта то все буде працювати і на інтелі теж, і ніхто спеціально не буде напружуватись. А, і саме основне забув - Ваше ПО, має бути готовим використовувати ці фішки. Ні Відьмак, ні тим Метро не будуть в 10 швидше завантажуватись (хіба що вийдуть патчі).Працювати буде, але максимальна швидкість та мінімальній вплив на систему взагалі, буде, коли GPU та накопичувач будуть на одній шині, без зайвих "прокладок" та вузьких місць типу чипсету.Dark_Diver:... технология, не требующая, по сути, никаких особых архитектурных изменений ... ко времени её реализации, имплементации в играх ...
Саме для цього і потрібна достатня кількість ліній PCIe процесора. 16 ліній на відеокарту та 4 на NVMe. Плюс ще кілька на чипсет та інше обладнання, за потреби.
-
Dark_Diver
Member
Згоден, тільки з новими відеокартами від обох виробників - NVidia вже зробила необхідну підтримку в RTX 3000, AMD - в консолях, тобто в нових картах від них це теж буде, Microsoft вже реалізувала це у ПО для нових XBOX.yuriy8:Так я з Вами і не сперечаюсь, просто багато людей думає що це буде працювати на 1080 і зі старими іграми.
Та тільки у проектах, де це реалізували розробники, тобто - у нових.
-
yuriy8
Member
- Откуда: Львів
Dark_Diver:Згоден, тільки з новими відеокартами від обох виробників - NVidia вже зробила необхідну підтримку в RTX 3000, AMD - в консолях, тобто в нових картах від них це теж буде, Microsoft вже реалізувала це у ПО для нових XBOX.yuriy8:Так я з Вами і не сперечаюсь, просто багато людей думає що це буде працювати на 1080 і зі старими іграми.
Та тільки у проектах, де це реалізували розробники, тобто - у нових.
-
Scoffer
Member
Маркетологи такі персонажі, що можуть обмежити технологію і лише 3090ю, але об'єктивних технічних причин чому не завезти на всі підтримувані останнім драйвером відяхи я не бачу.
-
yuriy8
Member
- Откуда: Львів
Яскравий приклад - RTX VOICE, працює тільки на RTXсах. А потім бацScoffer:Маркетологи такі персонажі, що можуть обмежити технологію і лише 3090ю, але об'єктивних технічних причин чому не завезти на всі підтримувані останнім драйвером відяхи я не бачу.
- спойлер
-
avuremybe
Member
Подождать еще 5 лет до выхода программных продуктов с полноценным использованием этой технологии.TJ-ua:Если все таки реализуют, то будет смысл
Но Вы покупку не откладывайте на завтра, конечно. Продавцы тоже жрать хотят.
-
Dark_Diver
Member
Нет никакого смысла реализовывать это для каких-то одних карт и не реализовывать для других - скорее всего это будет реализовано во всех продуктах, начиная с какого-то времени. Это как с блоком декодирования видео. Там, по большому счёту, просто нужна поддержка видеокартой специального протокола, по которому она принимает управляющие команды, связанные с данным API.
Для полноценной работы данной технологии необходимо несколько условий (упрощённо, как я вижу - я ни разу не касаюсь разработки, связанной с GPU):
1) Возможность прямого обмена данными по шине PCIe между устройствами, подключенными к ней, минуя центральный процессор.
Сама шина это уже позволяет, правильно разработанные PCIe устройства тоже должны это уметь - это низкоуровневый базовый протокол.
2) Должна быть подсистема ОС, которая предоставляет API для этого. Программы (игры, игровые движки, другие программы, работающие с GPU) используют этот API. Тот самый DirectStorage. В разработке, M$ скоро обещает (в начале следующего года). В XBOX это уже реализовано в виде API, но там есть свой нюанс.
На этом уровне вызывается API типа "Загрузи в видеопамять такую-то текстуру из такого файла" (текстурами не ограничивается). Система даёт команду драйверу видеокарты, поддерживающему DirectStorage API, принять блок данных определённого типа от PCIe устройства с определённым адресом на шине (NVMe-накопителя).
3) В процессе обработки этого запроса, выполнение спускается до уровня драйвера видеокарты. Драйвер, по специальному низкоуровневому проприетарному протоколу, передаёт команду видеокарте, чтобы она была готова принять данные по шине PCIe от устройства с определённым адресом, возможно прогнала это через специальный блок, уникальный для видеокарты этого производителя, возможно, "микропрограммный", не "железный", используя уже существующие блоки видеокарты, распаковала/как-то обработала и поместила в определённое место видеопамяти.
После чего ОС уже даёт команду накопителю на отправку данных определённому устройству PCIe (видеокарте).
Сами данные, при этом, до драйвера не доходят, они, минуя центральный процессор и оперативную память, напрямую получаются видеокартой по шине от накопителя, (возможно обрабатываются ей) и помещаются в видеопамять.
Сам процессор, в это время, может быть занят чем угодно другим, он этим не занимается, оперативная память не расходуется, шина памяти не занята. Когда данные будут загружены - драйвер узнает и сообщит системе о готовности.
Максимальная скорость, при этом, будет, если и видеокарта, и накопитель подключены прямо к процессорным линиям PCIe, потому, что если накопитель будет подключен к чипсетной шине, то данные будут прогоняться через чипсет, его кеши, буфера, мосты, будут дополнительные задержки, кроме того, к чипсету подключены другие устройства - другие карты расширения, USB-контроллеры, сетевая, звук и т.п. - всё это будет конкурировать между собой, ещё увеличивая задержки. А потом уже попадать на процессорную шину, к которой подключен сам чипсет и через неё - уже в видеокарту. Кроме того, чипсет вообще может быть подключен меньшим количеством линий к самому процессору, например, двумя.
У меня, например, в домашней рабочей станции, на чипсете, кроме встроенной сетевой и USB, стоит звуковая ASUS Xonar (мелочи) и интеловская четырёхпортовая сетевая карта для связи с домашним сервером (а вот тут бывают серьёзные потоки данных, более 500 МБ/с). А ещё у меня трёхдисковый HDD-рейд, ещё один HDD и два SSD.
Т.е. если накопитель подключен к чипсетным линиям шины, то работать будет. Но медленнее и будет конкурировать с другими устройствами. Но процессор и оперативка, при этом, заняты тоже не будут. Только будет нужно немного больше подождать, и не известно точно - сколько. Но всё равно гораздо быстрее, чем без DirectStorage, а через процессор и оперативку, "как обычно".
Ещё нюанс, насчёт "обработки" - вообще сами текстуры могут быть несильно сжаты по особому алгоритму, который понятен видеокарте, но у игры на диске они могут быть дополнительно как-нибудь упакованы, для уменьшения занимаемого места на диске и уменьшения количества файлов. Т.е. сейчас игра читает файлы с диска (гонит их по шине), использует центральный процессор для их обработки/распаковки, использует оперативную память для распакованных текстур, т.е. больший объём, чем они занимают на диске (занимая, при этом, шину памяти при распаковке), а потом опять по шине передаёт этот бОльший объём текстур (или других ассетов) в видеокарту (опять занимая шину памяти и шину PCIe).
С DirectStorage данные гонятся один раз, тот объём, который они занимают на диске.
4) Видеокарта должна уметь это, по идее. Т.е. понимать те команды, которые посылает ей драйвер. Просто поддержки драйвера - не достаточно. "Через драйвер" данные не прогонишь - это не будет DirectStorage, это будет "как раньше" (вернее, "как сейчас"), потому что драйвер выполняется на центральном процессоре, в оперативной памяти. Драйвер должен поддерживать это API, но вся его работа - управлять видеокартой по специальному протоколу.
И этот протокол видеокарта должна понимать "от рождения". Не знаю, насколько требуется изменение схемотехники для этого. Может (В ТЕОРИИ) это можно было бы реализовать в GBIOS для более старых видеокарт. Чего никто, естественно, делать не будет. Не из вредности, а потому что.
Т.е. "просто через драйвер" это не реализуешь.
Вообще технология красивая и умная и реализуется, насколько вижу, относительно легко. Просто нужно реализовать и отладить каждый уровень, требующийся для неё. Но ничего сложного или дорогого. Сама идея хорошая.
Поддержка в играх, думаю, не заставит себя ждать, поскольку выгода от технологии выглядит значительной. Да и поддержка, думаю, в основном появится через игровые движки. Epic'и, вроде пообещали в своём движке реализацию "как только, так сразу". Юнити тоже не задержится, скорее всего.
В новых консолях подобие этой технологии уже реализовано, потому разработчики уже её используют или скоро будут, особенно для мультиплатформы.
Відправлено через 1 хвилину 14 секунди:
P.S. Насчёт "нюанса с консолями" - там "видеопамять" - это та же оперативка, потому там чуть по другому, но смысл тот же - передача данных с накопителя в память, не загружая, при этом, CPU.
Не интересовался, чем там так хвастается Sony, но если сделать отдельный контроллер, который будет занят получением данных от накопителя, необходимой обработкой и загрузкой в [видео] память, да ещё по отдельной шине памяти - то может получиться, во-первых, ОЧЕНЬ быстро, и, во-вторых, не загружать, при этом, ни процессор, ни "обычную" шину памяти, ни видеокарту, как таковую - видеопамять же "не её", как таковая.
Т.е. загрузка требуемых текстур и уровней может происходить, буквально, "по щелчку пальцев", причём параллельно текущим задачам. Когда игра думает, что ей через долю секунды понадобится новый уровень/ новые текстуры, то она даёт такую команду и данные сами, в фоне, подготавливаются и помещаются в видеопамять, пока игра всё ещё занята текущей сценой, вообще не отвлекаясь на эти, традиционно ресурсоёмкие, задачи.
А когда данные понадобятся - они уже на месте.
Для полноценной работы данной технологии необходимо несколько условий (упрощённо, как я вижу - я ни разу не касаюсь разработки, связанной с GPU):
1) Возможность прямого обмена данными по шине PCIe между устройствами, подключенными к ней, минуя центральный процессор.
Сама шина это уже позволяет, правильно разработанные PCIe устройства тоже должны это уметь - это низкоуровневый базовый протокол.
2) Должна быть подсистема ОС, которая предоставляет API для этого. Программы (игры, игровые движки, другие программы, работающие с GPU) используют этот API. Тот самый DirectStorage. В разработке, M$ скоро обещает (в начале следующего года). В XBOX это уже реализовано в виде API, но там есть свой нюанс.
На этом уровне вызывается API типа "Загрузи в видеопамять такую-то текстуру из такого файла" (текстурами не ограничивается). Система даёт команду драйверу видеокарты, поддерживающему DirectStorage API, принять блок данных определённого типа от PCIe устройства с определённым адресом на шине (NVMe-накопителя).
3) В процессе обработки этого запроса, выполнение спускается до уровня драйвера видеокарты. Драйвер, по специальному низкоуровневому проприетарному протоколу, передаёт команду видеокарте, чтобы она была готова принять данные по шине PCIe от устройства с определённым адресом, возможно прогнала это через специальный блок, уникальный для видеокарты этого производителя, возможно, "микропрограммный", не "железный", используя уже существующие блоки видеокарты, распаковала/как-то обработала и поместила в определённое место видеопамяти.
После чего ОС уже даёт команду накопителю на отправку данных определённому устройству PCIe (видеокарте).
Сами данные, при этом, до драйвера не доходят, они, минуя центральный процессор и оперативную память, напрямую получаются видеокартой по шине от накопителя, (возможно обрабатываются ей) и помещаются в видеопамять.
Сам процессор, в это время, может быть занят чем угодно другим, он этим не занимается, оперативная память не расходуется, шина памяти не занята. Когда данные будут загружены - драйвер узнает и сообщит системе о готовности.
Максимальная скорость, при этом, будет, если и видеокарта, и накопитель подключены прямо к процессорным линиям PCIe, потому, что если накопитель будет подключен к чипсетной шине, то данные будут прогоняться через чипсет, его кеши, буфера, мосты, будут дополнительные задержки, кроме того, к чипсету подключены другие устройства - другие карты расширения, USB-контроллеры, сетевая, звук и т.п. - всё это будет конкурировать между собой, ещё увеличивая задержки. А потом уже попадать на процессорную шину, к которой подключен сам чипсет и через неё - уже в видеокарту. Кроме того, чипсет вообще может быть подключен меньшим количеством линий к самому процессору, например, двумя.
У меня, например, в домашней рабочей станции, на чипсете, кроме встроенной сетевой и USB, стоит звуковая ASUS Xonar (мелочи) и интеловская четырёхпортовая сетевая карта для связи с домашним сервером (а вот тут бывают серьёзные потоки данных, более 500 МБ/с). А ещё у меня трёхдисковый HDD-рейд, ещё один HDD и два SSD.
Т.е. если накопитель подключен к чипсетным линиям шины, то работать будет. Но медленнее и будет конкурировать с другими устройствами. Но процессор и оперативка, при этом, заняты тоже не будут. Только будет нужно немного больше подождать, и не известно точно - сколько. Но всё равно гораздо быстрее, чем без DirectStorage, а через процессор и оперативку, "как обычно".
Ещё нюанс, насчёт "обработки" - вообще сами текстуры могут быть несильно сжаты по особому алгоритму, который понятен видеокарте, но у игры на диске они могут быть дополнительно как-нибудь упакованы, для уменьшения занимаемого места на диске и уменьшения количества файлов. Т.е. сейчас игра читает файлы с диска (гонит их по шине), использует центральный процессор для их обработки/распаковки, использует оперативную память для распакованных текстур, т.е. больший объём, чем они занимают на диске (занимая, при этом, шину памяти при распаковке), а потом опять по шине передаёт этот бОльший объём текстур (или других ассетов) в видеокарту (опять занимая шину памяти и шину PCIe).
С DirectStorage данные гонятся один раз, тот объём, который они занимают на диске.
4) Видеокарта должна уметь это, по идее. Т.е. понимать те команды, которые посылает ей драйвер. Просто поддержки драйвера - не достаточно. "Через драйвер" данные не прогонишь - это не будет DirectStorage, это будет "как раньше" (вернее, "как сейчас"), потому что драйвер выполняется на центральном процессоре, в оперативной памяти. Драйвер должен поддерживать это API, но вся его работа - управлять видеокартой по специальному протоколу.
И этот протокол видеокарта должна понимать "от рождения". Не знаю, насколько требуется изменение схемотехники для этого. Может (В ТЕОРИИ) это можно было бы реализовать в GBIOS для более старых видеокарт. Чего никто, естественно, делать не будет. Не из вредности, а потому что.
Т.е. "просто через драйвер" это не реализуешь.
Вообще технология красивая и умная и реализуется, насколько вижу, относительно легко. Просто нужно реализовать и отладить каждый уровень, требующийся для неё. Но ничего сложного или дорогого. Сама идея хорошая.
Поддержка в играх, думаю, не заставит себя ждать, поскольку выгода от технологии выглядит значительной. Да и поддержка, думаю, в основном появится через игровые движки. Epic'и, вроде пообещали в своём движке реализацию "как только, так сразу". Юнити тоже не задержится, скорее всего.
В новых консолях подобие этой технологии уже реализовано, потому разработчики уже её используют или скоро будут, особенно для мультиплатформы.
Відправлено через 1 хвилину 14 секунди:
P.S. Насчёт "нюанса с консолями" - там "видеопамять" - это та же оперативка, потому там чуть по другому, но смысл тот же - передача данных с накопителя в память, не загружая, при этом, CPU.
Не интересовался, чем там так хвастается Sony, но если сделать отдельный контроллер, который будет занят получением данных от накопителя, необходимой обработкой и загрузкой в [видео] память, да ещё по отдельной шине памяти - то может получиться, во-первых, ОЧЕНЬ быстро, и, во-вторых, не загружать, при этом, ни процессор, ни "обычную" шину памяти, ни видеокарту, как таковую - видеопамять же "не её", как таковая.
Т.е. загрузка требуемых текстур и уровней может происходить, буквально, "по щелчку пальцев", причём параллельно текущим задачам. Когда игра думает, что ей через долю секунды понадобится новый уровень/ новые текстуры, то она даёт такую команду и данные сами, в фоне, подготавливаются и помещаются в видеопамять, пока игра всё ещё занята текущей сценой, вообще не отвлекаясь на эти, традиционно ресурсоёмкие, задачи.
А когда данные понадобятся - они уже на месте.
-
Aibolit25
Member
- Откуда: Харків
Можно Вам вопрос? Вы лицо компитентное и связанное с железом. Суть в чем. Была такая проблема, что старые досовские игрушки(в частности из-за звука) не запускались, или не было звука, если их запускать на каком-нибудь уровне железа, типа Tuallatin и Windows 98 или XP. А связано это было с тем, что у звуковухи не было прямого доступа к железу, а только через ядро Операционной системы. И еще на 80286 проц из-за этого ругались, что не было возможности какого-то виртуального обращения к железу, в результате чего на 80386 это уже пофиксили и можно было многозадачность использовать. А решение такое нужно было из-за банальной безопасности. Мол, какого железо само лезет в оперативку! Мало ли чего оно может начудить? (как-то так, точно уже не помню). И вот спустя 35 лет мы возвращаемся к истокам: видеокарта напрямую "лезет" в винчестер. Может быть такое, что из-за безопастности, придумают все равно какой-то костыль, который будет контролировать действия видеокарты, и тем самым эта вся затея не будет так работать, как затевалось?Scoffer:підтримувані останнім драйвером
- спойлер
- Видеокарте и так много власти дали: через нее и USB уже работает, и звук через нее идет, и у процессора она отобрала львиную долю работы - я же говорю, уже и столько фаз питания накидали, что осталось в нее проц вставить и материнка не нужна. Да и вообще, с таким объемом работ она справляется, что ей проц, как обуза, только контролирует ее и данные подкидывает - мешает ей работать лучше, одним словом... Ну это так, мысли в слух.
-
avuremybe
Member
Это заблуждение, на котором построены все 6 строк Вашего сообщения.Aibolit25:видеокарта напрямую "лезет" в винчестер
Видеокарта никуда не лезет. Игра (читай - thread, работающий в тех самых пределах ОС), как и раньше, читает свои файлы с накопителя. Просто новый API посылает их не в центральный процессор, а в графический.
Видеокарта ни про какой "винчестер" ни сном ни духом. Ей просто прилетают данные по шине (как это всегда и происходило).
-
yuriy8
Member
- Откуда: Львів
Все це так, просто дуже часто фірми свідомо обмежують функціонал. NVIDIA RTX IO будуть монетизовувати за рахунок продажу відеокарт, і тут не даром деякі експерти підкреслюють що NVIDIA явно ніде не сказала що буде підтримуватись RTX 2ххх (а чіпи вже не відвантажує). Тому як це все буде працювати буде залежати і як піде 3000 серія, і що відповість АМД і Інтел. Ну і саме основне, як пожартував пан Scoffer таймаути таки прописані - і на то немає ніякої ради.Dark_Diver:Нет никакого смысла реализовывать это для каких-то одних карт и не реализовывать для других - скорее всего это будет реализовано во всех продуктах, начиная с какого-то времени. Это как с блоком декодирования видео. Там, по большому счёту, просто нужна поддержка видеокартой специального протокола, по которому она принимает управляющие команды, связанные с данным API.
Для полноценной работы данной технологии необходимо несколько условий (упрощённо, как я вижу - я ни разу не касаюсь разработки, связанной с GPU):
1) Возможность прямого обмена данными по шине PCIe между устройствами, подключенными к ней, минуя центральный процессор.
Сама шина это уже позволяет, правильно разработанные PCIe устройства тоже должны это уметь - это низкоуровневый базовый протокол.
2) Должна быть подсистема ОС, которая предоставляет API для этого. Программы (игры, игровые движки, другие программы, работающие с GPU) используют этот API. Тот самый DirectStorage. В разработке, M$ скоро обещает (в начале следующего года). В XBOX это уже реализовано в виде API, но там есть свой нюанс.
На этом уровне вызывается API типа "Загрузи в видеопамять такую-то текстуру из такого файла" (текстурами не ограничивается). Система даёт команду драйверу видеокарты, поддерживающему DirectStorage API, принять блок данных определённого типа от PCIe устройства с определённым адресом на шине (NVMe-накопителя).
3) В процессе обработки этого запроса, выполнение спускается до уровня драйвера видеокарты. Драйвер, по специальному низкоуровневому проприетарному протоколу, передаёт команду видеокарте, чтобы она была готова принять данные по шине PCIe от устройства с определённым адресом, возможно прогнала это через специальный блок, уникальный для видеокарты этого производителя, возможно, "микропрограммный", не "железный", используя уже существующие блоки видеокарты, распаковала/как-то обработала и поместила в определённое место видеопамяти.
После чего ОС уже даёт команду накопителю на отправку данных определённому устройству PCIe (видеокарте).
Сами данные, при этом, до драйвера не доходят, они, минуя центральный процессор и оперативную память, напрямую получаются видеокартой по шине от накопителя, (возможно обрабатываются ей) и помещаются в видеопамять.
Сам процессор, в это время, может быть занят чем угодно другим, он этим не занимается, оперативная память не расходуется, шина памяти не занята. Когда данные будут загружены - драйвер узнает и сообщит системе о готовности.
Максимальная скорость, при этом, будет, если и видеокарта, и накопитель подключены прямо к процессорным линиям PCIe, потому, что если накопитель будет подключен к чипсетной шине, то данные будут прогоняться через чипсет, его кеши, буфера, мосты, будут дополнительные задержки, кроме того, к чипсету подключены другие устройства - другие карты расширения, USB-контроллеры, сетевая, звук и т.п. - всё это будет конкурировать между собой, ещё увеличивая задержки. А потом уже попадать на процессорную шину, к которой подключен сам чипсет и через неё - уже в видеокарту. Кроме того, чипсет вообще может быть подключен меньшим количеством линий к самому процессору, например, двумя.
У меня, например, в домашней рабочей станции, на чипсете, кроме встроенной сетевой и USB, стоит звуковая ASUS Xonar (мелочи) и интеловская четырёхпортовая сетевая карта для связи с домашним сервером (а вот тут бывают серьёзные потоки данных, более 500 МБ/с). А ещё у меня трёхдисковый HDD-рейд, ещё один HDD и два SSD.
Т.е. если накопитель подключен к чипсетным линиям шины, то работать будет. Но медленнее и будет конкурировать с другими устройствами. Но процессор и оперативка, при этом, заняты тоже не будут. Только будет нужно немного больше подождать, и не известно точно - сколько. Но всё равно гораздо быстрее, чем без DirectStorage, а через процессор и оперативку, "как обычно".
Ещё нюанс, насчёт "обработки" - вообще сами текстуры могут быть несильно сжаты по особому алгоритму, который понятен видеокарте, но у игры на диске они могут быть дополнительно как-нибудь упакованы, для уменьшения занимаемого места на диске и уменьшения количества файлов. Т.е. сейчас игра читает файлы с диска (гонит их по шине), использует центральный процессор для их обработки/распаковки, использует оперативную память для распакованных текстур, т.е. больший объём, чем они занимают на диске (занимая, при этом, шину памяти при распаковке), а потом опять по шине передаёт этот бОльший объём текстур (или других ассетов) в видеокарту (опять занимая шину памяти и шину PCIe).
С DirectStorage данные гонятся один раз, тот объём, который они занимают на диске.
4) Видеокарта должна уметь это, по идее. Т.е. понимать те команды, которые посылает ей драйвер. Просто поддержки драйвера - не достаточно. "Через драйвер" данные не прогонишь - это не будет DirectStorage, это будет "как раньше" (вернее, "как сейчас"), потому что драйвер выполняется на центральном процессоре, в оперативной памяти. Драйвер должен поддерживать это API, но вся его работа - управлять видеокартой по специальному протоколу.
И этот протокол видеокарта должна понимать "от рождения". Не знаю, насколько требуется изменение схемотехники для этого. Может (В ТЕОРИИ) это можно было бы реализовать в GBIOS для более старых видеокарт. Чего никто, естественно, делать не будет. Не из вредности, а потому что.
Т.е. "просто через драйвер" это не реализуешь.
Вообще технология красивая и умная и реализуется, насколько вижу, относительно легко. Просто нужно реализовать и отладить каждый уровень, требующийся для неё. Но ничего сложного или дорогого. Сама идея хорошая.
Поддержка в играх, думаю, не заставит себя ждать, поскольку выгода от технологии выглядит значительной. Да и поддержка, думаю, в основном появится через игровые движки. Epic'и, вроде пообещали в своём движке реализацию "как только, так сразу". Юнити тоже не задержится, скорее всего.
В новых консолях подобие этой технологии уже реализовано, потому разработчики уже её используют или скоро будут, особенно для мультиплатформы.
Відправлено через 1 хвилину 14 секунди:
P.S. Насчёт "нюанса с консолями" - там "видеопамять" - это та же оперативка, потому там чуть по другому, но смысл тот же - передача данных с накопителя в память, не загружая, при этом, CPU.
Не интересовался, чем там так хвастается Sony, но если сделать отдельный контроллер, который будет занят получением данных от накопителя, необходимой обработкой и загрузкой в [видео] память, да ещё по отдельной шине памяти - то может получиться, во-первых, ОЧЕНЬ быстро, и, во-вторых, не загружать, при этом, ни процессор, ни "обычную" шину памяти, ни видеокарту, как таковую - видеопамять же "не её", как таковая.
Т.е. загрузка требуемых текстур и уровней может происходить, буквально, "по щелчку пальцев", причём параллельно текущим задачам. Когда игра думает, что ей через долю секунды понадобится новый уровень/ новые текстуры, то она даёт такую команду и данные сами, в фоне, подготавливаются и помещаются в видеопамять, пока игра всё ещё занята текущей сценой, вообще не отвлекаясь на эти, традиционно ресурсоёмкие, задачи.
А когда данные понадобятся - они уже на месте.
-
Scoffer
Member
Aibolit25
Не треба сприймати їхні слова буквально. PCI-E - шина топології точка-точка. А між відяхою і ссд вже є проц. Не вийде з'єднати відео з ссд прям зовсім без участі процесора. Для цього довелось би що в відяху, що в ссд завезти виділені PCI-E лінії, а в саму відеокарту ще й завезти автономний PCI-E контролер для цього діла.
Ну і графіка в вінді ще з часів вісти в юзерспейсі і прямого апаратного доступа до заліза не має.
Просто схема "проц читає данні з диску, запихує в оперативу, а після засовує в відеокарту" зміниться на щось типу "проц чимось схожим на IOMMU, а то може і прямо через IOMMU, чого сутності вигадувати, ініціалізує канал передачі даних між ссд і відеокартою, а що саме передається його більше не парить". При цьому данні все одно будуть ганятись за допомогою CPU, але з меншою кількістю маніпуляцій зі сторони CPU над ними.
Не треба сприймати їхні слова буквально. PCI-E - шина топології точка-точка. А між відяхою і ссд вже є проц. Не вийде з'єднати відео з ссд прям зовсім без участі процесора. Для цього довелось би що в відяху, що в ссд завезти виділені PCI-E лінії, а в саму відеокарту ще й завезти автономний PCI-E контролер для цього діла.
Ну і графіка в вінді ще з часів вісти в юзерспейсі і прямого апаратного доступа до заліза не має.
Просто схема "проц читає данні з диску, запихує в оперативу, а після засовує в відеокарту" зміниться на щось типу "проц чимось схожим на IOMMU, а то може і прямо через IOMMU, чого сутності вигадувати, ініціалізує канал передачі даних між ссд і відеокартою, а що саме передається його більше не парить". При цьому данні все одно будуть ганятись за допомогою CPU, але з меншою кількістю маніпуляцій зі сторони CPU над ними.