Вычислительные возможности центральных процессоров общего назначения и графических процессоров
Со времени своего появления в начале 1980-х годов персональные компьютеры (ПК) развивались в основном как машины для выполнения «кибернетических» программ - сложных по структуре, обрабатывающих большое количество условий, интенсивно взаимодействующих с пользователем (интерактивных), но обычно не связанных с потоковой обработкой большого количества данных. Центральные процессоры ПК (CPU) оптимизировались для решения именно таких задач, так что характеризовались: · Большим количеством транзисторов для управления ветвлениями программы и сравнительно малым количеством транзисторов для вычислений; · Архитектурой, оптимизированной для программ со сложным потоком управления (т.е., с обработкой разнородных команд и данных, максимальная интерактивность); · Памятью, оптимизированной под минимальную латентность. В начале своей истории ПК не были достаточно мощными для быстрой обработки больших массивов данных, так что CPU вообще не поддерживали поточно-параллельных вычислений. Затем эти процессоры стали суперскалярными – в них была реализована возможность одновременного применения некоторых математических операций к нескольким числам (расширения SSE, 3DNow!). Тем не менее, поддержка поточно-параллельных вычислений центральными процессорами ПК и сейчас сильно ограничена. Вместе с тем, возможность проведения эффективных поточно-параллельных вычислений на ПК существует, она была реализована для обработки изображения и звука. Поскольку центральные процессоры ПК не оптимизированы для решения таких задач, стали развиваться звуковые карты и видеокарты, снабжённые собственными потоковыми процессорами и собственной памятью, оптимизированной под максимальную пропускную способность. Рис. 4.4. Архитектура ПК с одним центральным процессором и видеокартой На рис. 4.4 для иллюстрации показана архитектура персонального компьютера с одним центральным процессором и видеокартой с графическим процессором [13]. Видеокарта – это подсистема ПК, включающая в себя графический процессор (GPU) и специализированную оперативную память, с которой этот графический процессор может обмениваться данными. Эту специальную память называют видеопамятью. Центральный процессор также имеет доступ к видеопамяти, а кроме того – может загружать в GPU программы для исполнения и запустить исполнение этих программ. Схематичная модель взаимодействия центрального и графического процессоров с памятью (а посредством памяти – и между собой) показана на рис. 4.5. Рис. 4.5. Взаимодействие центрального и графического процессоров с памятью Графические процессоры (GPU), используемые в видеокартах, ориентировались на следующие характеристики: · Память оптимизирована под максимальную пропускную способность; · Большая часть транзисторов – вычислители; · Латентность скрывается вычислениями во время запросов к памяти (за счет потоковой обработки); · Управляющие блоки разделяются между вычислителями (обработка ветвлений менее эффективна); · Архитектура оптимизирована для программ с большим объемом вычислений (максимальная скорость вычислений). Современные графические процессоры допускают достаточно сложное программирование (см., например, [13]), так что могут быть использованы не только для отображения графики, но и для других расчётов. Задачи, хорошо распараллеливаемые по данным, на них можно решать во много раз быстрее, чем на центральных процессорах ПК.
|