Хотя некоторые ответы уже были даны здесь, и это старая ветка, я просто подумал, что добавлю это для потомков, а что нет:
Основная причина того, что процессоры и графические процессоры сильно различаются по производительности для определенных задач, заключается в проектных решениях, касающихся распределения ресурсов чипа. Процессоры отводят большую часть своего чипового пространства большим кэшам, декодерам команд, управлению периферийными устройствами и системами и т. Д. Их ядра намного сложнее и работают на гораздо более высоких тактовых частотах (что выделяет больше тепла на ядро, которое должно рассеиваться). Графические процессоры выделяют свое чиповое пространство для упаковки на чип такого количества ALU с плавающей запятой, насколько это возможно. Первоначальная цель графических процессоров состояла в том, чтобы как можно быстрее умножать матрицы (потому что это основной тип вычислений, используемых при визуализации графики). Поскольку умножение матриц представляет собой смущающе параллельную проблему (например, каждое выходное значение вычисляется полностью независимо от любого другого выходного значения). ) и путь кода для каждого из этих вычислений идентичен, пространство чипа можно сэкономить, если несколько ALU следуют инструкциям, декодированным одним декодером команд, поскольку все они выполняют одни и те же операции в одно и то же время. Напротив, каждое из ядер ЦП должно иметь свой собственный отдельный декодер команд, поскольку ядра не следуют одинаковым путям кода, что делает каждое из ядер ЦП на кристалле намного больше, чем ядра ГП. Поскольку первичные вычисления, выполняемые в матричном умножении, представляют собой умножение с плавающей запятой и сложение с плавающей запятой, графические процессоры реализованы таким образом, что каждая из них является операцией с одним циклом и, фактически, даже содержит слитую команду умножения и сложения, которая умножает два номера и добавляет результат к третьему числу в одном цикле. Это намного быстрее, чем типичный процессор, где умножение с плавающей запятой часто является многоцикловой операцией. Опять же, компромисс здесь заключается в том, что пространство микросхемы отведено математическому оборудованию с плавающей запятой, а другие инструкции (такие как поток управления) часто выполняются намного медленнее на ядро, чем на процессоре, а иногда даже просто не существуют на GPU вообще.
Кроме того, поскольку ядра GPU работают на гораздо более низких тактовых частотах, чем обычные ядра ЦП, и не содержат столь сложной схемы, они не выделяют столько тепла на ядро (или не используют столько энергии на ядро). Это позволяет большее количество из них может быть упаковано в одно и то же пространство без перегрева чипа, а также позволяет GPU с 1000+ ядрами иметь такие же требования к питанию и охлаждению, что и CPU с 4 или 8 ядрами.