CPU vs. GPU — HackZona.Ru

CPU vs. GPU

CPU vs. GPU

Тип статьи:
Со старой ХакЗоны.
Источник:
Итак, сегодня я расскажу немного о GPU, что это такое, с чем его едят, и постараюсь выявить ЗА и ПРОТИВ вычислений на графических процессорах. Ну, и для начала немного определений. Если вы знакомы с общими понятиями, то смело можете пропускать этот абзац.

Графический процессор (англ. Graphics Proccesing Unit, GPU) отдельное устройство персонального компьютера, выполняющее графический рендеринг. Современные графические процессоры очень эффективно обрабатывают и изображают компьютерную графику, благодаря специализированной конвейерной архитектуре они намного эффективнее в обработке графической информации, чем типичный центральный процессор.
Центральный процессор (ЦП; CPU англ. central processing unit, дословно центральное вычислительное устройство) исполнитель машинных инструкций, часть аппаратного обеспечения компьютера или программируемого логического контроллера, отвечающий за выполнение операций, заданных программами.
GPGPU (англ. General-purpose graphics processing units «GPU общего назначения») техника использования графического процессора видеокарты для общих вычислений, которые обычно проводит центральный процессор.

Вот именно о последнем определении и пойдет речь в моем обзоре.

Я думаю, если вы следите за новостями мира IT, то уже возможно слышали о том, что в настоящее время внедряются способы вычислений с помощью GPU. Так почему же появилось такое стремление использовать графические процессоры для общих вычислений?

С развитием технологий, производители стремятся увеличить скорость обработки данных/выполнения команд, ну и в целом повысить производительность, при этом уменьшая размеры самих обрабатывающих устройств. При этом рассматриваются все возможные методы увеличения производительности.
Рост производительности современных CPU ограничивается физически (размеры) и энергопотреблением. В настоящее время, по большому счету, рост производительности CPU увеличивается за счет размещения нескольких ядер на одном чипе. Каждое ядро работает отдельно, выполняя команды отдельного процесса. CPU используют технологию MIMD — (Multiple Instruction stream, Multiple Data stream) множественный поток команд и данных.

И вот тут как раз проявляется первое отличие CPU от GPU. GPU использует технологию SIMD (Single Instruction, Multiple Data) одиночный поток команд, множество потоков данных. В видео чипах основным блоком является мультипроцессор с восьмью-десятью ядрами. На основе этого выходит другое принципиальное отличие CPU от GPU.

Ядра CPU созданы для исполнения одного потока последовательных инструкций с максимальной производительностью, а GPU используются для быстрого исполнения большого числа параллельно выполняемых потоков инструкций. CPU оптимизированы для достижения максимальной производительности отдельного алгоритма, инструкций. У видеочипов работа распараллелена изначально. На входе принимаются полигоны, проводятся необходимые операции, и на выходе получаем пиксели. При чем обработка полигонов никак не связана между собой.

Также отличие GPU от CPU проявляется и в принципе доступа к памяти. То есть, в GPU при записи пикселя в буфер через некоторое время будет записан и соседний с ним пиксель. В следствии такой организации памяти, чипу просто не нужна кэш-память большого размера (до 256 кБ).

Да и сама по себе работа с памятью у GPU и CPU несколько отличается. Так, не все центральные процессоры имеют встроенные контроллеры памяти, а у всех GPU обычно есть по несколько контроллеров, вплоть до восьми 64-битных. Кроме того, на видеокартах применяется более быстрая память, и в результате видеочипам доступна в разы большая пропускная способность памяти.

Также есть и отличия в кэшировании. CPU используют кэш для увеличения производительности за счёт снижения задержек доступа к памяти, а GPU используют кэш для увеличения полосы пропускания. CPU снижают задержки доступа к памяти при помощи кэш-памяти большого размера, а также предсказания ветвлений кода. Эти аппаратные части занимают большую часть площади чипа и потребляют много энергии. Видеочипы обходят проблему задержек доступа к памяти при помощи одновременного исполнения тысяч потоков в то время, когда один из потоков ожидает данных из памяти, видеочип может выполнять вычисления другого потока без ожидания и задержек.

В итоге, основой для эффективного использования мощи GPU в неграфических расчётах является распараллеливание алгоритмов на сотни исполнительных блоков, имеющихся в видеочипах.

На графике представлена тенденция роста производительности CPU и GPU:


Итак, теперь давайте подумаем, какую выгоду мы модем получить используя мощь GPU. В настоящее время мощность GPU рассматривается в таких темах, как расшифровка данных локально. Так, компания Elcomsoft уже давно заявила о том, что с помощью параллельных вычислений скорость расшифровки восьмисимвольного пароля составляет пять дней, когда CPU справляется с задачей за два месяца. И есть уже готовый софт.

Для примера приведу некоторые технологии GPGPU.
CUDA технология GPGPU, позволяющая реализовывать на С алгоритмы, выполнимые на графических процессорах ускорителей GeForce восьмого поколения и старше. Технология CUDA разработана компанией nVidia. Проще говоря, графическая подсистема компьютера с поддержкой CUDA может быть использована, как вычислительная.
Close To Metal (CTM) технология GPGPU, использующая низкоуровневое программирование на графических процессорах ATI (AMD Graphics Products Group). CTM является виртуальной машиной, исполняющей ассемблерный код, в то время как CUDA своеобразное расширение С. Две эти платформы несовместимы между собой.

В заключении хочу добавить свое личное мнение по поводу развития и применения GPU для неграфических процедур. Думаю, что со временем графические процессоры вытеснят ЦП, так как действительно, преимущества GPU налицо. Конечно, ЦП никуда от нас не денутся, но с развитием мира IT усложняются выполняемые операции, требуется большие возможности за меньшее время исполнения. Так что CPU бесспорно уступает GPU в данных вопросах.

В статье были взяты материалы со следующих источников:
www.wikipedia.org
www.ixbt.com
головы.net :)

Надеюсь, вы узнали кое что новое и интересное для себя.

© Ex0rcist from GR TeaM
www.getroot.ru
Нравится
Не нравится

3 комментария

22:20
Насчет вытеснения - вряд ли. Слишком мал список видеокарт, поддерживающих CUDA =) Да и к тому же нужно и управлять системой + устройствами. Но за счет свободного места на кристалле GPU действительно может наращивать производительность до определенного момента.
23:30
Думаю в будущем список видеокарт будет только расти.
p.s. Блин, не в том разделе оформили статейку=
23:35
Шур, если мона, перемести в раздел железо, а то с законом никак не вяжется :D