Регистры цветовой таблицы и цифроаналоговый преобразователь
ЦАП, RAMDAC (Random Access Memory Digital-to-Analog Converter) — служит для преобразования изображения, формируемого видеоконтроллером, в уровни интенсивности цвета, подаваемые на аналоговый монитор. RAMDAC имеет четыре основных блока — три цифроаналоговых преобразователя, по одному на каждый цветовой канал (RGB), и SRAM для хранения данных о гамма-коррекции. Большинство ЦАП имеют разрядность 8 бит на канал — получается по 256 уровней яркости на каждый основной цвет, что в сумме дает 16,7 млн. цветов. Некоторые RAMDAC имеют разрядность по каждому каналу 10 бит (1024 уровня яркости), что позволяет сразу отображать более 1 млрд. цветов.
Видеопамять
Выполняет контроль кадрового буфера, в котором хранится изображение, генерируемое и постоянно изменяемое графическим процессором и выводимое на экран монитора (или нескольких мониторов). В видеопамяти хранятся также промежуточные невидимые на экране элементы изображения и другие данные. Видеопамять бывает нескольких типов, различающихся по скорости доступа и рабочей частоте. Современные видеокарты комплектуются памятью типа DDR, DDR2, GDDR3, GDDR4[7].
Видеоразъемы
На современных видеокартах для вывода информации на дисплей используется несколько типов графических разъемов.
D-Sub, он же VGA — устаревший аналоговый разъем, изначально предназначенный для вывода информации на ЭЛТ-мониторы.
DVI — цифровой разъем, предназначенный для подключения ЖК-дисплеев. Существуют переходники с DVI на VGA, позволяющие подсоединить ЭЛТ-монитор к DVI-выходу видеокарты.
HDMI — цифровой разъем, способный передавать одновременно видеосигнал и многоканальный звук. Существуют переходники с HDMI на DVI, однако при их использовании теряется возможность передачи звука.
DisplayPort — новый цифровой разъем, способный передавать одновременно видеосигнал и многоканальный звук. Существуют переходники с DisplayPort на DVI, VGA и HDMI, правда, в первых двух случаях происходит потеря звукового сигнала.
Система охлаждения
Система охлаждения предназначена для сохранения температурного режима видеопроцессора и (зачастую) видеопамяти в допустимых пределах[7].
Технология CUDA
Технология CUDA (Сompute Unified Device Architecture) — это программно-аппаратная вычислительная архитектура, разработанная фирмой NVIDIA. Основана на расширении языка Си, которая даёт возможность организации доступа к набору инструкций графического ускорителя и управления его памятью при организации параллельных вычислений. CUDA помогает реализовывать алгоритмы, выполнимые на графических процессорах видеоускорителей GeForce восьмого поколения и старше (серии GeForce 8, GeForce 9, GeForce 200), а также Quadro и Tesla.
CUDA строится на концепции, где GPU (называемый устройством, device) выступает в роли массивно – параллельного сопроцессора к CPU, называемому host. Программа на CUDA задействует как CPU, так и GPU. При этом обычный (последовательный, то есть непараллельный) код выполняется на CPU, а для массивно-параллельных вычислений соответствующий код выполняется на GPU, как набор одновременно выполняющихся нитей (потоков, threads).
Сам термин GPU (Graphics Processing Unit) был впервые использован компанией Nvidia для обозначения того, что графический ускоритель, первоначально используемый только для ускорения трехмерной графики, стал мощным программируемым устройством (процессором), пригодным для решения широкого класса задач, никак не связанных с графикой[9].
Основные характеристики CUDA:
· унифицированное программно-аппаратное решение для параллельных вычислений на графических картах NVIDIA;
· большой набор поддерживаемых решений, от мобильных до мультичиповых;
· стандартный язык программирования С++;
· стандартные библиотеки численного анализа FFT (быстрое преобразование Фурье) и BLAS (линейная алгебра);
· оптимизированный обмен данными между CPU и GPU;
· взаимодействие с графическими API OpenGL и DirectX;
· поддержка 32- и 64-битных операционных систем;
· возможность разработки на низком уровне.
Различия CPU и GPU
Центральные процессоры разрабатываются для получения максимальной производительности на потоке инструкций, которые обрабатывают разные данные (как целые числа, так и числа с плавающей запятой), производят случайный доступ к памяти и т.д. До сих пор разработчики пытаются обеспечить больший параллелизм инструкций - то есть выполнять как можно большее число инструкций параллельно[9].
Рисунок 16. Отличия архитектуры обработки данных CPU и GPU
Так, например, с Pentium появилось суперскалярное выполнение, когда при некоторых условиях можно выполнять до 20 инструкций за такт. Проблема заключается в том, что у параллельного выполнения последовательного потока инструкций есть очевидные ограничения по обращению к ОЗУ.
Основным различием между архитектурами CPU и GPU (Рисунок 16) является то, что ядро CPU создано для исполнения одного потока последовательных инструкций с максимальной производительностью, а GPU проектируются для быстрого исполнения большого числа параллельно выполняемых потоков инструкций[9].
Ядра видеосистемы CUDA исполняют одни и те же инструкции одновременно, такой стиль программирования является обычным для графических алгоритмов и многих научных задач, но требует специфического программирования. Зато такой подход позволяет увеличить количество исполнительных блоков за счёт их упрощения.
GPU отличается от CPU ещё и по принципам доступа к памяти. В отличие от универсальных процессоров, GPU просто не нужна кэш-память большого размера, а для текстур требуются лишь несколько (до 128-256 в нынешних GPU) килобайт[9].
Да и сама по себе работа с памятью у GPU и CPU несколько отличается. Так, не все центральные процессоры имеют встроенные контроллеры памяти, а у всех GPU обычно есть по несколько контроллеров, вплоть до восьми 64-битных каналов в чипе NVIDIA GT200. Кроме того, на видеокартах применяется более быстрая память, и в результате видеочипам доступна в разы большая пропускная способность памяти, что также весьма важно для параллельных расчётов, оперирующих с огромными потоками данных[9].