Простой ответ

Простой ответ

В 2014 году я слышал, как многие языки программирования хвалили за их параллелизм. Параллелизм, как говорят, имеет решающее значение для повышения производительности.

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

Некоторые ключевые цитаты:

Мы привыкли видеть, как процессоры с частотой 500 МГц уступают место процессорам с частотой 1 ГГц, затем процессорам с частотой 2 ГГц и т. д. Сегодня мы находимся в диапазоне 3 ГГц на обычных компьютерах.

Ключевой вопрос: когда это закончится? В конце концов, закон Мура предсказывает экспоненциальный рост, а очевидно, что экспоненциальный рост не может продолжаться вечно, пока мы не достигнем жестких физических пределов; свет не становится быстрее. Рост должен в конечном итоге замедлиться и даже прекратиться.

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

... Будущее Intel и большинства производителей процессоров лежит в другой плоскости, поскольку компании-производители микросхем активно развивают те же новые направления многоядерности.

...Многоядерность подразумевает работу двух или более реальных процессоров на одном кристалле.

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

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

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

Почему «добавление большего количества ядер» не сталкивается с теми же физическими ограничениями, что и «ускорение процессора»?

Пожалуйста, объясните как можно проще. :)

решение1

Краткое содержание

  • Экономика. Дешевле и проще разработать процессор с большим количеством ядер, чем с более высокой тактовой частотой, потому что:

  • Значительное увеличение энергопотребления. Потребление энергии процессором быстро увеличивается по мере увеличения тактовой частоты — можно удвоить количество ядер, работающих на более низкой скорости в тепловом пространстве, необходимом для увеличения тактовой частоты на 25%. Учетверить для 50%.

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


Я собираюсь в значительной степени опираться на прекрасные ответы наэтот вопросна одном из наших дочерних сайтов SE. Так что идите и голосуйте за них!


Ограничения тактовой частоты

Существует несколько известных физических ограничений тактовой частоты:

  • Время передачи

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

    Однако мы пока не достигли этой точки. 1 ГГц означает одну наносекунду за такт. За это время свет может пройти 30 см. При 10 ГГц свет может пройти 3 см. Ширина одного ядра ЦП составляет около 5 мм, поэтому мы столкнемся с этими проблемами где-то после 10 ГГц. 2

  • Задержка переключения

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

    К сожалению, я не уверен в подробностях и не могу предоставить никаких цифр.

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

  • Тепловыделение/потребление энергии

    Это самое главное. Цитата изответ fuzzyhair2:

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

    Есть несколько замечательных измерений наэта ветка форума AnandTech, и они даже вывели формулу для расчета потребляемой мощности (которая идет рука об руку с вырабатываемым теплом):

    Формула
    Кредит дляМне все равно

    Мы можем визуализировать это на следующем графике:

    График
    Кредит дляМне все равно

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

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


Больше ядер?

Так зачем больше ядер? Ну, я не могу ответить на этот вопрос однозначно. Вам нужно спросить людей из Intel и AMD. Но вы можете видеть выше, что с современными процессорами в какой-то момент становится непрактично увеличивать тактовую частоту.

Да, многоядерность также увеличивает потребляемую мощность и тепловыделение. Но она аккуратно избегает проблем со временем передачи и задержкой переключения. И, как вы можете видеть на графике, вы можете легко удвоить количество ядер в современном ЦП с теми же тепловыми издержками, что и 25%-ное увеличение тактовой частоты.

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

Вот где вступает в дело экономика - вероятно, было дешевле (меньше времени на проектирование, менее сложно в производстве) пойти по многоядерному пути. И его легко продавать - кто не любит новенькийвосьмиядерныйчип? (Конечно, мы знаем, что многоядерность бесполезна, если программное обеспечение ее не использует...)

ТамявляетсяНедостаток многоядерности: вам нужно больше физического пространства для размещения дополнительного ядра. Однако размеры процессорных процессов постоянно сильно уменьшаются, поэтому остается достаточно места для размещения двух копий предыдущего проекта — реальный компромисс заключается в невозможности создания более крупных, более сложных, отдельных ядер. С другой стороны, увеличение сложности ядра — этоплохос точки зрения дизайна - больше сложности = больше ошибок/багов и производственных дефектов. Кажется, мы нашли золотую середину с эффективными ядрами, которые достаточно просты, чтобы не занимать слишком много места.

Мы уже достигли предела по количеству ядер, которые мы можем разместить на одном кристалле при текущих размерах процесса. Мы можем достичь предела того, насколько мы можем уменьшить все это вскоре. Так что же дальше? Нужно ли нам больше? На это трудно ответить, к сожалению. Есть ли здесь ясновидящие?


Другие способы повышения производительности

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

Итак, что еще мы можем сделать? Как современные процессоры настолько быстрее старых при той же тактовой частоте?

Тактовая частота на самом деле является лишь очень грубым приближением внутренней работы ЦП. Не все компоненты ЦП работают на этой скорости — некоторые могут работать раз в два тика и т. д.

Что еще более важно, так это количествоинструкциивы можете выполнить за единицу времени. Это гораздо лучшая мера того, сколько может выполнить одно ядро ​​ЦП. Некоторые инструкции; некоторые займут один такт, некоторые — три. Деление, например, значительно медленнее сложения.

Итак, мы могли бы заставить процессор работать лучше, увеличив количество инструкций, которые он может выполнить в секунду. Как? Ну, вы могли бы сделать инструкцию более эффективной — возможно, деление теперь занимает всего два цикла. Затем естьконвейеризация инструкций. Разбивая каждую инструкцию на несколько этапов, можно выполнять инструкции «параллельно», но каждая инструкция по-прежнему имеет четко определенный последовательный порядок относительно инструкций до и после нее, поэтому она не требует программной поддержки, как многоядерные процессоры.

Естьдругойway: более специализированные инструкции. Мы видели такие вещи, как SSE, которые предоставляют инструкции для обработки больших объемов данных за один раз. Постоянно вводятся новые наборы инструкций с похожими целями. Они, опять же, требуют поддержки программного обеспечения и увеличивают сложность оборудования, но они обеспечивают хороший прирост производительности. Недавно появился AES-NI, который обеспечивает аппаратно-ускоренное шифрование и дешифрование AES, намного быстрее, чем куча арифметики, реализованной в программном обеспечении.


1 По крайней мере, без глубокого погружения в теоретическую квантовую физику.

2 На самом деле она может быть ниже, поскольку распространение электрического поля не так быстро, как скорость света в вакууме. Кроме того, это только для расстояния по прямой — вполне вероятно, что есть по крайней мере один путь, который значительно длиннее прямой линии.

решение2

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

Чистые тактовые частоты ничего не значат. Мой старый Pentium M имел примерно половину тактовой частоты современного настольного процессора (и все же во многих отношенияхБыстрее) – и современные системыедваприближаясь к скоростям систем 10-летней давности (и явно быстрее). В основном, «просто» увеличение тактовой частоты не дает реального прироста производительности во многих случаях. Это может помочь внекоторыйоднопоточные операции, но лучше потратить бюджет на проектирование на повышение эффективности с точки зрения всего остального.

Несколько ядер позволяют вам делатьдва или несколько вещей одновременно, так что вам не нужно ждать, пока одна вещь завершится для следующей. В краткосрочной перспективе вы можете просто вставить два существующих ядра в один и тот же пакет (например, сПентиум Дs, и их MCM, который был переходным дизайном) и у вас есть система, которая в два раза быстрее. Большинство современных реализаций, конечно, разделяют такие вещи, как контроллер памяти.

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

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

В какой-то момент «больше» ядер может не работать – хотя у графических процессоров естьсотниКонечно.

Многоядерность как таковая позволяет компьютерам работатьумнеевсеми этими способами.

решение3

Простой ответ

Самый простой ответ на вопрос

Почему «добавление большего количества ядер» не сталкивается с теми же физическими ограничениями, что и «ускорение процессора»?

на самом деле находится в другой части вашего вопроса:

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

По сути, наличие нескольких ядер — это как наличие нескольких «компьютеров» на одном устройстве.

Сложный ответ

«Ядро» — это часть компьютера, которая фактически обрабатывает инструкции (сложение, умножение, «и» и т. д.). Ядро может выполнять только одну инструкцию за раз. Если вы хотите, чтобы ваш компьютер был «мощнее», есть две основные вещи, которые вы можете сделать:

  1. Увеличение пропускной способности (увеличение тактовой частоты, уменьшение физического размера и т. д.)
  2. Используйте больше ядер на одном компьютере

Физические ограничения для #1 в первую очередь связаны с необходимостью отвода тепла, вызванного обработкой и скоростью электрона в цепи. Как только вы разделяете некоторые из этих транзисторов на отдельное ядро, вы в значительной степени облегчаете проблему тепла.

У пункта 2 есть важное ограничение: вы должны уметь разбивать свою проблему на несколько частей.независимыйпроблемы, а затем объединить ответ. На современном персональном компьютере это не проблема, так как есть множество независимых проблем, которые в любом случае соревнуются за вычислительное время с ядром(ями). Но при решении интенсивных вычислительных задач несколько ядер действительно помогают только в том случае, если проблема поддается параллелизму.

решение4

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

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

  1. Физические ограничения (накладываемые реальной физикой): например, скорость света, квантовая механика и все такое.
  2. Проблемы производства: Как нам производить все меньшие конструкции с необходимой точностью? Проблемы, связанные с сырьем, материалы, используемые для создания схем, например, долговечность.
  3. Архитектурные проблемы: тепло, вывод, энергопотребление и т. д.
  4. Экономические проблемы: какой самый дешевый способ предоставить пользователю большую производительность?
  5. Варианты использования и восприятие производительности пользователями.

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

Спросите себя, какое приложение вы используете обычно? Возможно: 25 вкладок Firefox, каждая из которых проигрывает рекламу в фоновом режиме, пока вы слушаете музыку, и все это в ожидании завершения вашей работы по сборке, которую вы начали около 2 часов назад. Это большая работа, которую нужно сделать, и вы все равно хотите, чтобы все было гладко. Но ваш процессор может обрабатывать ОДНУ задачу за раз! На одну вещь. Поэтому вы разделяете все и создаете длинную очередь, и каждый получает свою долю, и все счастливы. Кроме вас, потому что все становится лагающим и не гладким вообще.

Итак, вы ускоряете свой процессор, чтобы выполнить больше операций за то же время. Но, как вы сказали: тепло и энергопотребление. И вот тут мы подходим к части сырья. Кремний становится более проводящим, когда он нагревается, что означает, что больше тока протекает через материал, когда вы его нагреваете. Транзисторы потребляют больше энергии, так как вы переключаете их быстрее. Кроме того, высокие частоты ухудшают перекрестные помехи между короткими проводами. Так что, как видите, подход ускорения приведет к «расплавлению». Пока у нас нет лучшего сырья, чем кремний, или гораздо лучших транзисторов, мы застряли там, где мы есть, со скоростью одного ядра.

Это возвращает нас к тому, с чего мы начали. Делать все параллельно. Давайте добавим еще одно ядро. Теперь мы можем делать две вещи одновременно. Так что давайте немного успокоимся и просто напишем программное обеспечение, которое может разделить свою работу между двумя менее мощными, но более функциональными ядрами. У этого подхода есть две основные проблемы (помимо того, что нужно время, чтобы мир программного обеспечения к нему приспособился): 1. Сделать чип больше или сделать отдельные ядра меньше. 2. Некоторые задачи просто невозможно разделить на две части, которые выполняются одновременно. Продолжайте добавлять ядра до тех пор, пока вы можете их уменьшить или сделать чип больше и не допустить проблемы с нагревом. О, и давайте не забывать о клиенте. Если мы изменим наши варианты использования, отрасли должны будут адаптироваться. Посмотрите на все блестящие «новые» вещи, которые придумал мобильный сектор. Вот почему мобильный сектор считается таким важным, и все хотят заполучить его.

Да, эта стратегия ДОСТИГНЕТ своих ограничений! И Intel это знает, поэтому они говорят, что будущее где-то в другом месте. Но они будут продолжать это делать, пока это дешево, эффективно и осуществимо.

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

Связанный контент