> > > > AMD рассказала о Delta Color Compression в архитектуре GCN 1.2

AMD рассказала о Delta Color Compression в архитектуре GCN 1.2

Опубликовано:

amd radeon 2013AMD и NVIDIA реализуют технологии сжатия данных в видеопамяти. Они называются Delta Color Compression или DCC, сегодня подобные технологии являются важной прослойкой между "железом" и программным кодом. В случае Delta Color Compression хранится только разница (дельта) цветового значения пикселей относительно окружающих пикселей в матрице 8x8. Поскольку для хранения значений разности требуется меньше пространства, уменьшается расход памяти, а также ускоряется обмен данными. В видеопамять приходится записывать и считывать меньше данных, разработчики GPU говорят об эффективной пропускной способности до 297 Гбайт/с вместо 224 Гбайт/с. По крайней мере, такие числа NVIDIA привела для Delta Color Compression в архитектуре Maxwell.

AMD опубликовала пост в своем блоге, разъясняя Delta Color Compression, а также дала ряд рекомендаций для разработчиков, касающиеся архитектуры Graphics Core Next. AMD для последних GPU Fiji использует память High Bandwidth Memory с шириной шины памяти 4.096 бит, но пропускная способность составляет «всего» 512 Гбайт/с из-за тактовой частоты 500 МГц. Более высокая тактовая частота ожидается только с памятью HBM2. Но даже с пропускной способностью 512 Гбайт/с очень важно минимизировать объемы данных, считываемых и записываемых в память.

Сжатие памяти в архитектуре Maxwell от NVIDIA Сжатие памяти в архитектуре Maxwell от NVIDIA

Сжатие памяти в архитектуре Maxwell от NVIDIA

Delta Color Compression поддерживается на всех дискретных GPU AMD на архитектуре GCN 1.2 или новее. То есть поддерживаются все видеокарты на GPU Tonga и Fiji. К ним относятся Radeon R9 285 и Radeon R9 Fury X, Radeon R9 Fury и Radeon R9 Nano. Также все будущие GPU на архитектуре Polaris будут поддерживать Delta Color Compression. Что касается APU, то здесь поддерживается платформа Carrizo и новее.

Принцип Delta Color Compression кажется не таким сложным, но с реализацией все сложнее, поскольку требуется внести множество оптимизаций, чтобы ускорить доступ к данным. Например, размер блока данных Delta Color Compression определяется динамически, в зависимости от паттернов доступа и самих данных. В архитектуре GCN реализован блок сжатия данных внутри Color Block, который работает схожим образом с Depth Block, обеспечивающим сжатие данных глубины и трафарета в процессе рендеринга.

Со стороны разработчика не требуется специально готовить данные. Если целевая поверхность сжата, то процесс рендеринга проходит через блок сжатия. Если сжатых данных нет, то конвейер рендеринга не изменится. Но сжатие данных – только один аспект оптимизации. Большинство данных считываются чаще, чем они записываются. Поэтому у шейдеров имеется возможность напрямую обращаться к несжатым данным. Если данные требуются часто, то они будут напрямую храниться в памяти. А данные, которые используются не так часто, остаются сжатыми. Все это позволяет предотвратить некоторые ненужные процессы.

Диаграмма GPU Fiji на архитектуре GCN 1.2
Диаграмма GPU Fiji на архитектуре GCN 1.2

AMD приводит пример сжатия данных. Полностью черный и белый блоки будут храниться в памяти как {1.0, 0.0, 0.0, 0.0} или {0.0, 1.0, 1.0, 1.0}. Но здесь можно сэкономить ресурсы, сохраняя только 0.0 или 1.0 в качестве значения поверхности ARGB. AMD дает и другие советы разработчикам, чтобы предотвратить расход ресурсов. Скажем, задавать цели рендеринга как shader-readable следует только при действительной работе этой функции. Поскольку цели shader-readable сжимаются хуже. В частности, информация глубины MSAA хорошо сжимается в памяти. Но если цель указана как shader-readable, подобное сжатие не выполняется.

Также следует выбирать формат хранения данных. AMD рекомендует использовать 32-битный формат с плавающей запятой (D32F) вместо 16-битного (D16). Данные D32F могут сжиматься существенно лучше, что экономит место в памяти. 24-битную информацию глубины можно легко хранить в 32-битном формате вместо двух 16-битных блоков.

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

AMD также дает и другие советы в блоге, с которыми могут ознакомиться разработчики.