Комментарии 2
Кстати, а что вы думаете про архитектуры типа apple m5 и ryzen ai, где память общая для всего? И в стимдеке тоже так.
Там, с одной стороны, процессор, gpu и npu могут конкурировать за память, а с другой - шина памяти более широкая и в итоге и процессору веселее, и необходимость перекладывать данные между gpu и cpu пропадает, только синхронизацию сделал и читай?
Так для справки - у райзена память 8 Ггц и 4 канала (в сумме вроде 256 ГБ/сек), у маков зависит от объёма оперативки (у модели на 128 ГБ вроде 600 ГБ/сек).
А тут все очень интересное начинается, физически память одна, но это не значит что ВСЕ читают из одного места одинаково. У текущего Xbox каждый "читатель" cpu, gpu, декомпрессор, h264 модуль подключен своим каналом к единому мемори контроллеру. Это уже получается больше "звезда", чем шина, но исторически просто консоли более оптимизированы с точки зрения латенси, да и шишки уже все набили и знают чего делать не надо.
На стимдек другая проблема, приходится агрессивно сжимать таргет рендер и текстуры чтобы выдавать стабильные 60фпс, но экран маленький и игрок этого попросту не видит.
Опять же на всех консолях с единой памятью вылазит другая проблема overhead memory visibilty, на дискретной карточке как было, видяхе данные отправил, сабмит или как там его вызвал и они там сами както варятся, про них можно забыть.
А с единой памятью gpu и cpu могут смотреть на одну страницу, и cpu уже положил туда данные, т.е. они там физически изменились, а вот когда их "увидит" gpu теперь полностью зависит от протокола когерентности кешей. И получается что если ты хочешь быть уверен что gpu сразу увидит эти данные, то приходится либо флашить кеш, либо использовать когерентные области, которые гпу/цпу видят одинаково, что сильно дороже обычной аллокации.
Как обычно бесплатный сыр бывает только мышке ловкой, так что unified memory никак не отменяет необходимости думать о доступе к памяти, просто меняет точку где надо думать.

Как работают с памятью в игровых консолях