Почему мы все еще используем процессоры вместо графических процессоров?

199986
ell

Мне кажется, что в наши дни много вычислений делается на GPU. Очевидно, что графика выполняется там, но с использованием CUDA и тому подобного, AI, алгоритмов хеширования (например, биткойнов) и других также выполняются на GPU. Почему мы не можем просто избавиться от процессора и использовать его самостоятельно? Что делает GPU намного быстрее, чем процессор?

356
как узнать, какие ответы содержат правильную информацию? Должен ли я ждать, пока другие не дадут ответа? Я думаю, что я был слишком поспешным, чтобы принять ответ: O ell 12 лет назад 3
Сейчас есть несколько недавних ответов @ell, которые не содержат «дезинформации». Они постепенно поднимаются на вершину с ростом голосов благодаря эффективному рыночному механизму прекрасно разработанного StackExchange ;-) Я бы посоветовал подождать немного дольше, прежде чем принять ответ. Похоже, вы очень осторожно делаете именно это. Кстати, это хороший вопрос. Может показаться очевидным, но это не так. Спасибо, что спросили! Ellie Kesselman 12 лет назад 14
Нет причин, по которым нельзя, например, создать Java JITC для GPU с точки зрения генерации кода. И большая часть кода ОС теперь написана на C / C ++, который может быть легко перенастроен. Таким образом, никто не связан с наследием x86 каким-либо действительно важным способом (если вы не используете Windoze). Проблема в том, что немногие (если таковые имеются) графические процессоры вообще хороши в обработке общего назначения. Daniel R Hicks 12 лет назад 0
@DanH За исключением того, что Java - плохой язык, особенно для создания программ с высоким уровнем параллелизма. Нам нужны основные языки, такие как функциональное программирование, где параллелизм - это естественный способ выражения любой программы - более того, языки программирования должны хорошо подходить для работы с очень небольшим объемом памяти для каждой единицы вычислений, как тогда, когда ГПУ работает эффективно. Как упомянуто в вопросе, есть только несколько проблем, таких как AI и тому подобное, которые делают это естественно без нового языка программирования. Soren 12 лет назад 0
Но вам не нужно запускать Java. Дело в том, что вы не привязаны к архитектуре процессора. Что касается нового языка для параллельной обработки, люди пытались изобрести его уже около 30 лет и не достигли значительного прогресса. Тогда как после 30 лет разработки последовательных языков программирования у нас были Fortran, COBOL, Modula-2, C, Pascal, Ada, PL / I, C ++ и множество других. Daniel R Hicks 12 лет назад 0
Связанный вопрос от переполнения стека: [Почему мы не программируем на GPU?] (Http://stackoverflow.com/questions/2569797/why-arent-we-programming-on-the-gpu) Kobi 12 лет назад 1
Вроде как спрашивать: «Если Боинг 747 быстрее и экономичнее, почему мы до сих пор ездим на автомобилях»? vartec 12 лет назад 118
Звучит ли это знакомо (RISC против CISC)? Aki 12 лет назад 0
Нет, потому что это не RISC против CISC. Это одна из других основ информатики, слегка замаскированная. Это ** «Почему мы переносим работу с центрального процессора на процессоры ввода-вывода?» **. JdeBP 12 лет назад 7
@vartec как опытный разработчик CUDA, я думаю, что это может быть самой точной аналогией, которую я когда-либо видел, когда-либо. Я спасаю это :) Breakthrough 9 лет назад 0
@vartec: Я думаю, что немного лучшая аналогия может быть между автобусами и такси. Если есть сорок человек, которые хотят отправиться из одного места в одно и то же место, автобус будет гораздо эффективнее. Если есть сорок человек, желаемое происхождение и места назначения которых разбросаны, даже одно такси может быть таким же хорошим, как автобус, а за стоимость автобуса можно было бы иметь несколько такси. supercat 9 лет назад 4
Как и во всех важных технических вопросах, [Mybusters обратились к этому] (https://www.youtube.com/watch?v=-P28LKWTzrI) (И это неплохая аналогия) Basic 8 лет назад 0
Связанный: [Разница между GPU и CPU] (http://superuser.com/questions/100866/the-difference-between-gpu-and-cpu) Ƭᴇcʜιᴇ007 8 лет назад 0

15 ответов на вопрос

376
bwDraco

Ответ TL; DR: у графических процессоров гораздо больше процессорных ядер, чем у процессоров, но поскольку каждое ядро ​​графического процессора работает значительно медленнее, чем ядро ​​процессора, и не обладает функциями, необходимыми для современных операционных систем, они не подходят для выполнения большей части обработки в повседневной жизни. вычисления. Они больше всего подходят для вычислительных операций, таких как обработка видео и физическое моделирование.


GPGPU - все еще относительно новая концепция. Графические процессоры изначально использовались только для визуализации графики; По мере развития технологий большое количество ядер в графических процессорах по сравнению с процессорами использовалось для разработки вычислительных возможностей для графических процессоров, чтобы они могли обрабатывать множество параллельных потоков данных одновременно, независимо от того, какими могут быть эти данные. Хотя графические процессоры могут иметь сотни или даже тысячи потоковых процессоров, каждый из них работает медленнее, чем ядро ​​процессора, и имеет меньше возможностей (даже если они выполнены по Тьюрингу и могут быть запрограммированы для запуска любой программы, которую может запустить процессор). Функции, отсутствующие в графических процессорах, включают прерывания и виртуальную память, которые необходимы для реализации современной операционной системы.

Другими словами, процессоры и графические процессоры имеют существенно различную архитектуру, что делает их более подходящими для различных задач. Графический процессор может обрабатывать большие объемы данных во многих потоках, выполняя с ними относительно простые операции, но он не подходит для интенсивной или сложной обработки одного или нескольких потоков данных. Процессор намного быстрее для каждого ядра (с точки зрения количества команд в секунду) и может легче выполнять сложные операции с одним или несколькими потоками данных, но не может эффективно обрабатывать много потоков одновременно.

В результате, графические процессоры не подходят для выполнения задач, которые не приносят существенной выгоды или не могут быть распараллелены, включая многие распространенные потребительские приложения, такие как текстовые процессоры. Кроме того, графические процессоры используют принципиально другую архитектуру; для его работы нужно было бы запрограммировать приложение специально для графического процессора, и для программирования графических процессоров требуются существенно разные методы. Эти различные методы включают в себя новые языки программирования, модификации существующих языков и новые парадигмы программирования, которые лучше подходят для выражения вычислений как параллельной операции, выполняемой многими потоковыми процессорами. Для получения дополнительной информации о методах, необходимых для программирования графических процессоров, см. Статьи Википедии о потоковой обработке и параллельных вычислениях .

Современные графические процессоры способны выполнять векторные операции и арифметику с плавающей запятой, а новейшие карты способны манипулировать числами с плавающей запятой двойной точности. Фреймворки, такие как CUDA и OpenCL, позволяют писать программы для графических процессоров, а природа графических процессоров делает их наиболее подходящими для высокопараллелизируемых операций, таких как в научных вычислениях, где серия специализированных вычислительных карт на графических процессорах может быть жизнеспособной заменой небольшого размера. вычислительный кластер, как в NVIDIA Tesla Personal Supercomputers . Потребители с современными графическими процессорами, которые имеют опыт работы с Folding @ home, могут использовать их для взаимодействия с клиентами графических процессоров, которые могут выполнять моделирование свертывания белка на очень высоких скоростях и вносить больше работы в проект (обязательно прочитайте часто задаваемые вопросыво-первых, особенно те, которые связаны с графическими процессорами). Графические процессоры также могут обеспечить лучшее физическое моделирование в видеоиграх с использованием PhysX, ускорить кодирование и декодирование видео и выполнять другие задачи, требующие больших вычислительных ресурсов. Именно эти типы задач наиболее подходят для выполнения графических процессоров.

AMD является пионером в разработке процессоров под названием Accelerated Processing Unit (APU), которая сочетает в себе обычные процессорные ядра x86 с графическими процессорами. Этот подход обеспечивает графическую производительность, значительно превосходящую встроенные в материнскую плату графические решения (хотя и не подходит для более дорогих дискретных графических процессоров), и позволяет создать компактную недорогую систему с хорошей производительностью мультимедиа без необходимости использования отдельного графического процессора. Новейшие процессоры Intel также предлагают встроенную встроенную графику, хотя конкурентоспособная интегрированная производительность графического процессора в настоящее время ограничена несколькими чипами с Intel Iris Pro Graphics. Поскольку технология продолжает развиваться, мы увидим растущую степень сближения этих когда-то отдельных частей. AMD предусматриваетбудущее, где центральный процессор и графический процессор - одно целое, способное беспрепятственно работать вместе над одной и той же задачей .

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

Как и этот ответ, я думаю, что основная причина в том, что у нас нет хороших языков программирования основного потока для работы с параллельными архитектурами, подобными этой. Мы десятилетиями боролись за продвижение многопоточного программирования, и люди все еще называют многопоточность «злом». Несмотря на то, что многоядерные процессоры и графические процессоры являются реальностью, и нам придется придумать новые парадигмы программирования, чтобы справиться с этим. Soren 12 лет назад 39
Стоит отметить, что Intel работает над архитектурой [Larrabee] (http://en.wikipedia.org/wiki/Larrabee_ (microarchitecture)) (слишком долго), которая по сути является чипом с огромным количеством ядер x86. , Chris S 12 лет назад 0
Отличный ответ для обсуждения аппаратных причин и обсуждения APU и того, как они это изменят. Тем не менее, @Soren дает очень хорошую точку зрения на стороне программного обеспечения. На самом деле, это комбинация аппаратных проблем, программных проблем и того факта, что процессоры работают, и когда известно, что что-то работает, трудно заставить людей заменить это. Nich Del 12 лет назад 0
Все очень хорошие моменты, я хотел бы добавить, что большая часть всего этого сосредоточена на компьютерных решениях. Я хотел бы отметить, что производители процессоров для мобильных телефонов более или менее создают объединенный продукт, в котором графика и центральный процессор, помимо всего прочего, содержатся в одном чипе. Мой EVO 3D имеет двухъядерный процессор и довольно впечатляющую графическую поддержку. Вы можете поспорить, что, как только рутинг станет доступен, у меня будет установлена ​​двойная загрузка для настольной ОС (например, Ubuntu). Так что я утверждаю, что вместо того или другого, это больше просто размывание линии различий. CenterOrbit 12 лет назад 0
* «у нас нет хороших языков программирования основного потока, чтобы иметь дело с параллельными архитектурами, подобными этой». * - Haskell, OCaml, Scheme, F #, Erlang и почти любой другой язык функционального программирования очень хорошо справляются с многопоточностью. Все те, что я упомянул, являются мейнстримом. BlueRaja - Danny Pflughoeft 12 лет назад 3
Я бы включил здесь ответ Билли Онила, он добавляет очень важный (на сегодняшний день, когда происходит сближение, он исчезнет) аспект. Vinko Vrsalovic 12 лет назад 0
Я расширил свой ответ на основе ваших комментариев. Спасибо за ваш отзыв! bwDraco 12 лет назад 0
Я вижу, что никто еще не упомянул положение двух процессоров относительно видеопамяти как фактор, который является «более быстрым». JdeBP 12 лет назад 0
@BlueRaja - мы знаем об этих языках, ваше определение основного потока должно отличаться от моего :-) Soren 12 лет назад 1
@dlikhten: То, что вы предложили, носит в высшей степени технический характер, поскольку включает в себя микроархитектуру задействованных чипов. Я не хочу увязать читателя в этих деталях. bwDraco 12 лет назад 0
Я голосую против вас, потому что вы забыли упомянуть время перевода и разницу в стоимости. Вы можете заставить Tesla работать так же быстро, как один поток i3, но это не потратит денег. Время копирования означает, что задания должны быть достаточно большими, многие задания такого размера просто не существуют в обычных вычислительных заданиях. Mikhail 11 лет назад 0
246
Lie Ryan

Что делает GPU намного быстрее, чем процессор?

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

Графический процессор представляет собой специализированный процессор, разработанный таким образом, чтобы одна инструкция работала с большим блоком данных (SIMD / Single Instruction Multiple Data), причем все они применяли одну и ту же операцию. Работа с блоками данных, безусловно, более эффективна, чем работа с одной ячейкой за раз, поскольку при декодировании инструкций значительно сокращаются издержки, однако работа с большими блоками означает, что имеется больше параллельных рабочих блоков, поэтому в ней используется гораздо больше транзисторов. реализовать одну инструкцию GPU (вызывая ограничение физического размера, используя больше энергии и выделяя больше тепла).

ЦП предназначен для максимально быстрого выполнения одной инструкции по одному элементу данных. Поскольку ему нужно работать только с одним датумом, количество транзисторов, необходимых для реализации одной инструкции, намного меньше, поэтому процессор может позволить себе иметь больший набор команд, более сложный ALU, лучшее предсказание ветвления, лучшую виртуализацию архитектура и более сложные схемы кэширования / конвейера. Его циклы инструкций также быстрее.

Причина, по которой мы все еще используем CPU, не в том, что x86 является королем архитектуры CPU, а Windows написана для x86, а причина, по которой мы все еще используем CPU, заключается в том, что задачи, которые должна выполнять ОС, то есть принятие решений, работает более эффективно на архитектуре процессора. Операционная система должна смотреть на сотни различных типов данных и принимать различные решения, которые все зависят друг от друга; Такая работа не может быть легко распараллелена, по крайней мере, в архитектуру SIMD.

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

Это, наверное, лучший ответ здесь. Важно понимать фундаментальные различия между двумя парадигмами. Для графических процессоров, чтобы обогнать процессоры, учитывая сегодняшние рабочие нагрузки, по сути, означает, что графический процессор должен превратиться в процессор. И поэтому вопрос является ответом. surfasb 12 лет назад 21
+1 за то, что это лучший ответ. И этот, и принятый ответ верны, но этот объясняет это гораздо яснее. 12 лет назад 2
Я удивлен, что никто в этом потоке не упомянул о накладных расходах на отправку данных в GPU - ограниченная пропускная способность по шинам PCI-Express делает некоторые параллельные операции на GPU значительно медленнее, чем они выполнялись на CPU. Можно увидеть один простой случай, когда изменение размера БПФ существенно повлияло на производительность графического процессора и центрального процессора из-за накладных расходов, связанных с отправкой данных, настройкой контекста и чтением результатов: http://stackoverflow.com/a / 8687732/303612 Меньшие операции могут выполняться в кэш-памяти на процессорах, а пропускная способность памяти значительно превосходит текущую архитектуру PCI-E Dr. Andrew Burnett-Thompson 9 лет назад 0
@ Dr.AndrewBurnett-Thompson: это потому, что это не имеет отношения к вопросу. В настоящее время GPU считается вспомогательным процессором, поэтому перемещение данных с / на GPU необходимо и дорого. Если мы будем рассматривать GPU как первоклассный процессор, не будет необходимости маршалировать данные между основной памятью и памятью GPU. Lie Ryan 9 лет назад 1
О, хорошо, так что у GPU на борту CPU будет нулевая пропускная способность при перемещении данных между ними. Это оптимистично :) Dr. Andrew Burnett-Thompson 9 лет назад 0
Не оптимистично, это не нулевая пропускная способность. Если процессор с архитектурой GPU запускает все шоу, ничего перемещать не нужно, память GPU * является * основной памятью. Во-первых, нет затрат на передачу, о которых нужно говорить, потому что нет передач. Кстати, это не гипотетически, APU AMD использует HSA (гетерогенную системную архитектуру) с унифицированной основной памятью, которая позволяет копировать ноль между CPU и GPU. Lie Ryan 9 лет назад 1
Говорить о технологии маршрутизации VRAM вообще не по теме; если стандарт решит использовать графический процессор вместо центрального процессора, его память не будет передаваться через PCI-E. То же самое верно и для обратного. j riv 5 лет назад 0
75
Billy ONeal

Отсутствие графических процессоров:

  1. Виртуальная память (!!!)
  2. Средства адресации устройств, отличных от памяти (например, клавиатуры, принтеры, дополнительное хранилище и т. Д.)
  3. Прерывания

Они нужны для того, чтобы иметь возможность реализовать что-либо подобное современной операционной системе.

Они также (относительно) медленны при арифметике с двойной точностью (по сравнению с их арифметикой с одинарной точностью) * и намного больше (с точки зрения размера кремния). Старые архитектуры GPU не поддерживают косвенные вызовы (через указатели функций), необходимые для большинства программ общего назначения, и более поздние архитектуры, которые делают это медленно. Наконец, (как отмечалось в других ответах) для задач, которые нельзя распараллелить, графические процессоры проигрывают по сравнению с центральными процессорами при одинаковой рабочей нагрузке.

РЕДАКТИРОВАТЬ : Обратите внимание, что этот ответ был написан в 2011 году - технология графических процессоров постоянно меняется. Вещи могут быть очень разными в зависимости от того, когда вы читаете это: P

* Некоторые графические процессоры не медленны в арифметике двойной точности, например, линии NVidia Quadro или Tesla (поколение Fermi или новее), или линия AMD FirePro (поколение GCN или новее). Но это не в машинах большинства потребителей.

@Cicada: У вас есть ссылка на это? В любом случае, даже если это так, даже новейшее оборудование не будет работать хорошо в этом случае. (например, не будет иметь слишком много преимуществ по сравнению с процессором - и недостаток энергопотребления) Billy ONeal 12 лет назад 0
Да, устройства Fermi, как вы сказали (с CUDA 4.0 и sm_20), поддерживают косвенные переходы (и, следовательно, виртуальные методы C ++, наследование и т. Д.). Angry Lettuce 12 лет назад 3
[544 GigaFLOPS] (http://www.tomshardware.com/reviews/radeon-hd-5870,2422-3.html) из двухлетнего GPU за 300 долларов работает медленно? Ben Voigt 12 лет назад 0
@Ben: Вы получаете такую ​​производительность только в параллельных приложениях. Общие последовательные операции - это совершенно другая игра в мяч. (Это только при том, что все 1600 ядер на этом чипе работают параллельно, выполняя по существу одну и ту же инструкцию снова и снова ... и даже это скорее теоретический, чем реальный результат) Billy ONeal 12 лет назад 2
@Billy: Но это медлительность в конкретном классе алгоритмов, а не медлительность в арифметике с двойной точностью (как вы и утверждали). (И процессоры обычно тоже не достигают производительности) Ben Voigt 12 лет назад 0
@Ben: Ваша связанная статья не говорит ничего о двойной точности. Рекламируемые FLOP предназначены для одинарной точности. Операции с двойной точностью на большинстве графических процессоров в настоящее время по меньшей мере на одну шестую превышают скорость одинарной точности (за исключением примечательных устройств Quadro и Tesla Fermi). Я никогда не говорил, что процессоры достигают эталонной пропускной способности, поэтому я не уверен, в чем ваша точка зрения. Billy ONeal 12 лет назад 0
@Ben: Извините, сейчас я вижу комментарий с двойной точностью. В любом случае, когда я говорил «медленно с двойной точностью», я говорил о сравнении с одинарной точностью, а не о процессорах. Billy ONeal 12 лет назад 0
@Billy: Но весь этот вопрос касается GPU против CPU, а не двойной точности по сравнению с одинарной точностью (также, CPU видят одинаковые различия в скорости между одинарной и двойной точностью во многих операциях). Ben Voigt 12 лет назад 0
37
John Robertson

Процессор похож на работника, который работает очень быстро. Графический процессор похож на группу рабочих-клонов, которые работают быстро, но все они должны делать одно и то же в унисон (за исключением того, что некоторые клоны могут сидеть без дела, если хотите)

Что бы вы предпочли в качестве вашего коллеги-разработчика, одного суперскоростного парня или 100 быстрых клонов, которые на самом деле не такие быстрые, но все они должны выполнять одни и те же действия одновременно?

Для некоторых действий клоны довольно хороши, например, подметать пол - каждый может подмести часть этого.

Для некоторых действий клоны воняют, например, пишут еженедельный отчет - все клоны, кроме одного, простаивают, а один клон пишет отчет (в противном случае вы просто получаете 100 копий одного и того же отчета).

Могу ли я даже ... оба? Kevin Panko 12 лет назад 4
@Kevin: Да, но вам нужен компьютер с * и * процессором * и * графическим процессором! Если бы только была такая вещь! Joachim Sauer 12 лет назад 22
Отличная аналогия. Запомню это. Mayo 8 лет назад 3
23
Phoshi

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

Ваш процессор может вычислять хеш намного, намного быстрее, чем ваш графический процессор, но время, которое требуется вашему процессору, может составить часть пути через несколько сотен хешей. Графические процессоры предназначены для одновременного выполнения множества задач, а центральные процессоры предназначены для одновременного выполнения одной операции, но очень быстро.

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

Небольшое примечание, хотя, если бы можно было утилизировать процессор и иметь только графический процессор, не думаете ли вы, что мы его переименуем? :)

Я думаю, что большинство современных процессоров рассчитаны на 2, 4 или 8 вещей одновременно. danielcg 11 лет назад 0
@ danielcg25: И большинство современных графических процессоров предназначены для одновременной работы 256, 512, 1024 штук (GTX 680 имеет * 1536 * ядер CUDA). Каждое отдельное ядро ​​ЦП концептуально является отдельной сущностью, но это не относится к графическому процессору. Phoshi 11 лет назад 0
@ danielcg25: Я знаю, но комментарий с фундаментальным (хотя и преднамеренным) неправильным пониманием ответа может быть вредным, если кто-то читает его, не зная темы. «Быть ​​задницей» в этом смысле не очень ценится в SE, поскольку снижает отношение сигнал / шум. Phoshi 11 лет назад 0
Я просто предоставил некоторую информацию. В настоящее время большинство компьютеров способны обрабатывать 2-8 вещей одновременно. Некоторые процессоры могут сделать даже больше, чем это. Это все еще не близко к графическим процессорам, которые делают сотни вещей одновременно. danielcg 11 лет назад 0
@ danielcg25: Это другой вид обработки, о котором идет речь. Каждое ядро ​​ЦП эффективно отделено, работает со своими частями данных и своими собственными процессами. Каждое ядро ​​ЦП выполняет отдельную задачу, отличную друг от друга, и они не линейно масштабируются вверх - окто-ядро не в два раза полезнее, чем четырехъядерное, не в два раза полезнее, чем двухъядерное. С другой стороны, ядра графических процессоров выполняют одну и ту же задачу для разных частей данных и выполняют линейное масштабирование. Очевидно, что существуют многоядерные процессоры, но ** это не одно и то же **. Phoshi 11 лет назад 0
14
jkj

Вы действительно спрашиваете, почему мы не используем GPU-подобные архитектуры в CPU?

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

На самом деле мы используем разные (более графические) архитектуры ЦП. Например, процессоры Niagara довольно многозадачны. SPARC T3 будет работать 512 одновременных потоков.

Почему отрицательный голос? jkj 12 лет назад 0
Я думаю, последняя строка, так как это просто ложь. На самом деле, я могу думать только об одной основной операционной системе только для x86; и даже этот был портирован на процессоры alpha и ARM, но в данный момент коммерчески не предлагается. Javier 12 лет назад 3
Хорошо. Удален последний раздел, в котором, по моему мнению, поддержка основной операционной системы препятствовала переходу на новые архитектуры. Не может быть в рамках ответа. jkj 12 лет назад 0
11
LawrenceC

Я мог бы быть здесь ужасно ошибочным, и я говорю с небольшим или никаким авторитетом по этому вопросу, но здесь идет:

  • Я считаю, что каждый исполнительный блок GPU («ядро») имеет очень ограниченное адресное пространство по сравнению с процессором.

  • Исполнительные блоки GPU не могут эффективно справляться с ветвлением.

  • Исполнительные блоки GPU не поддерживают аппаратные прерывания так же, как центральные процессоры.

Я всегда думал, что такими, какими должны быть исполнительные блоки GPU, являются что-то вроде «SPE» Playstation 3, они хотят получить блок данных, выполнить ряд последовательных операций над ним, а затем выплюнуть еще один блок данные, промыть, повторить. У них не так много адресуемой памяти, как у основного «CPE», но идея состоит в том, чтобы посвятить каждый «SPE» определенной, последовательной задаче. Выход одного блока может питать вход другого блока.

Исполнительные блоки не работают хорошо, если они пытаются «проанализировать» данные и принять кучу решений, основанных на том, что это за данные.

Эти «блоки данных» могут быть частью потока, например, список вершин из таблицы состояний игры, данные MPEG с диска и т. Д.

Если что-то не соответствует этой «потоковой» модели, тогда у вас есть задача, которая не может быть эффективно параллелизирована, и GPU не обязательно является лучшим решением для нее. Хороший пример - обработка таких вещей, как «внешнее событие», таких как клавиатура, джойстик или сетевой ввод. Есть не так много вещей, которые не соответствуют этой модели, но всегда будет несколько.

Хорошая мысль об оптимизации предсказания ветвлений - я бы никогда не учел это, но вы правы. Jimmy Breck-McKye 10 лет назад 0
6
Silverfire

Это не имеет ничего общего с тактовой частотой или целью. Они оба одинаково способны выполнять большинство, если не все задачи; однако некоторые из них лучше подходят для некоторых задач, чем другие.

Был очень старый спор о том, лучше ли иметь много тупых ядер или небольшую группу очень умных ядер. Это легко восходит к 80-м годам.

Внутри процессора есть много возможных расчетов, которые можно сделать. Более умные ядра способны выполнять много разных вычислений одновременно (вроде как многоядерные, но не сложные, см. Параллелизм на уровне команд ). Интеллектуальное ядро ​​может выполнять несколько вычислений одновременно (сложение, вычитание, умножение, деление, операции с памятью), но только по одному за раз; из-за этого они физически больше (и, следовательно, намного дороже), чем более тупые ядра.

Тупое ядро ​​намного меньше, и поэтому к одному чипу можно добавить больше, но не в состоянии выполнять столько же одновременных вычислений. Существует хороший баланс между многими тупыми ядрами и несколькими умными ядрами.

Многоядерные архитектуры хорошо работают с графикой, поскольку расчеты можно легко разделить на сотни ядер, но это также зависит от качества кода и от того, полагается ли другой код на результат одного вычисления.

Это гораздо более сложный вопрос, чем может показаться. Для получения дополнительной информации прочитайте эту статью о дизайне процессора:

Современные микропроцессоры - руководство за 90 минут

http://www.lighterra.com/papers/modernmicroprocessors/

пожалуйста, извините за плохую грамматику и в целом стиль написания ниже среднего, использованный выше, у меня не было моего кофе. Это довольно сложная концепция, и ссылка на нее - то, куда вам следует обратиться, если вы хотите понять больше. не мое плохое объяснение Silverfire 12 лет назад 0
Я исправил это для вас, и добавил ссылку. bwDraco 12 лет назад 1
5
Andrew Neely

Я хотел бы затронуть один синтаксический момент: термины CPU и GPU являются функциональными именами, а не архитектурными.

Если бы компьютер использовал графический процессор в качестве основного процессора, он стал бы «центральным процессором» (ЦП) независимо от архитектуры и дизайна.

4
dmckee

Важно помнить, что в пространстве архитектуры нет волшебной разделительной линии, которая делает один процессор «центральным», а другой - «графическим». (Ну, некоторые графические процессоры могут быть слишком ограниченными, чтобы быть полностью общими, но это не те, о которых мы здесь говорим.)

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

Большинство хитрых приемов, которые использовались для того, чтобы заставить GPU выполнять свою работу очень быстро, были впервые разработаны людьми, пытающимися сделать более быстрые и лучшие процессоры. Оказывается, что Word, Excel, Netscape и многие другие вещи, для которых люди используют свои компьютеры, не только не в полной мере используют возможности, предлагаемые специализированными графическими чипами, но даже работают медленнее на этих архитектурах, потому что ветвление часто (очень дорого) и медленно) трубопровод очищает.

Я думаю, что издержки конвейера - это фундаментальная деталь, которой не хватает ответов с более высоким рейтингом. Steve 9 лет назад 1

Похожие вопросы