Comments 8
Кстати, а что вы думаете про архитектуры типа 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 никак не отменяет необходимости думать о доступе к памяти, просто меняет точку где надо думать.
Охохох... И ничего про Playstation Portable не сказали...(
Не вдаваясь в детали железа, я могу сказать, что там есть SRAM (Scratchpad: по адресу 0x10000, длиной 0x4000 байт), EDRAM aka VRAM (0x0400_0000, 0x20_0000 байт, где можно выделить 0xCC000 байт там на два 16-битных фреймбуфера и 16-битный z-буфер, а остальное использовать в своё удовольствие), Kernel RAM (от 0x08000000 до 0x08400000, потом ещё до 0x08800000 т.н. Volatile RAM, который можно попросить у ядра) и пользовательская оператива до 0x0A000000. Есть ещё система зеркал с флагами (cached/uncached, kernel/user) и какие-то специальные адреса для работы с железом. Разумеется, играм в жезело низя лезть, но оно есть. На GE (Graphics engine) дисплей лист с гпушными инструкциями пересылается через сискол sceGeListEnqueue. Есть понятие "vblank callback", который можно зарегать тоже через сискол.
NES: CHR ROM/RAM: 8 KB на картридже (тайлы)
Картридж PRG/ROM: до 512 KB
Откуда взялась цифра 512 KB? Максимальный объем PRG ROM безмапперного картриджа 32Кб, если же использовать мапперы то лимит зависит от маппера, а теоретического предела вообще нет - хоть гигабайт поставь (то же относится и к CHR ROM).
Спасибо. Это то, что нужно.
У дримкаста был GPU с интересными фичами, а не только лишь рисованием треугольников. Чего только стоит аппаратная сортировка прозрачных полигонов (нормально эмулировать это стало возможно с выходом dx11), или 32-битный z-буфер
Да и на горизонте была наоми2, но увы, не срослось.
PowerVR Series2 Features and Specifications
100 MHz clock rate
100 Mpixels/sec (200 to 300 Mpixels/sec deferred rendering rate)
7 million fully textured, lit and shadowed polygons per second
geometry can be triangles, quads, and polygon strips
full CPU load balancing
tile accelerator
full floating-point geometry and texture setup engine
performance that scales up with faster CPUs
32-bit accurate floating point z-buffering with no RAM accesses
unified frame buffer and texture memory
VQ (vector quantization) texture compression with 5:1 compression ratio (average for a set of mip-mapped textures)
full alpha blending modes supported
image super-sampling for full scene anti-aliasing
perspective correct bilinear, trilinear, and anisotropic texture filtering
perspective correct ARGB gouraud shading
specular highlighting with offset colours
hardware translucency sorter
volumetric effects (shadows, lens flare, etc)
multiple fog modes
bump mapping
full DirectX and OpenGL blending modes (back-end multi-pass rendering with micro-tile accumulation buffers)
3D in a Window
max resolution of 1600 by 1200 in 24-bit color
RAMDAC (230Mhz)
manufactured in NEC’s leading 0.25-micron process
2 to 32 MB of 100 MHz SDRAM
К слову https://www.youtube.com/playlist?list=PL9h9wwPDkj-4_DEP5WDNfZDWCw8OZK8_v
Как работают с памятью в игровых консолях