Резюме
Экономика. Дешевле и проще спроектировать процессор с большим количеством ядер, чем с более высокой тактовой частотой, потому что:
Значительное увеличение энергопотребления. Энергопотребление процессора быстро увеличивается при увеличении тактовой частоты - вы можете удвоить количество ядер, работающих с меньшей скоростью, в тепловом пространстве, необходимом для увеличения тактовой частоты на 25%. Четырехместный на 50%.
Есть и другие способы увеличить скорость последовательной обработки, и производители процессоров используют их.
Я собираюсь опираться на превосходные ответы на этот вопрос на одном из наших дочерних сайтов SE. Так что иди голосуй!
Ограничение тактовой частоты
Есть несколько известных физических ограничений тактовой частоты:
Время передачи
Время прохождения электрического сигнала по цепи ограничено скоростью света. Это жесткий предел, и не существует известного способа его обойти 1. В гигагерцовых часах мы приближаемся к этому пределу.
Тем не менее, мы еще не там. 1 ГГц означает одну наносекунду за такт. За это время свет может пройти 30см. На частоте 10 ГГц свет может перемещаться на 3 см. Ширина одного ядра составляет около 5 мм, поэтому мы столкнемся с этими проблемами где-то за 10 ГГц. 2
Задержка переключения
Недостаточно просто учитывать время, необходимое для прохождения сигнала от одного конца к другому. Нам также нужно учитывать время, которое требуется логическому вентилю в ЦП для переключения из одного состояния в другое! Поскольку мы увеличиваем тактовую частоту, это может стать проблемой.
К сожалению, я не уверен в специфике и не могу предоставить какие-либо цифры.
Очевидно, что подача в него большего количества энергии может ускорить переключение, но это приводит как к потреблению энергии, так и к проблемам с отводом тепла. Кроме того, большая мощность означает, что вам нужны более массивные кабелепроводы, способные обращаться с ним без повреждений.
Тепловыделение / энергопотребление
Это большой. Цитата из ответа fuzzyhair2:
Последние процессоры производятся с использованием технологии CMOS. Каждый раз, когда есть тактовый цикл, мощность рассеивается. Следовательно, более высокие скорости процессора означают большее рассеивание тепла.
В этой ветке форума AnandTech есть несколько прекрасных измерений, и они даже вывели формулу для потребления энергии (которая идет рука об руку с выработанным теплом):
Кредит на Idontcare
Мы можем представить это на следующем графике:
Кредит на Idontcare
Как вы можете видеть, энергопотребление (и вырабатываемое тепло) растет очень быстро, так как тактовая частота увеличивается выше определенной точки. Это делает нецелесообразным неограниченное увеличение тактовой частоты.
Причина быстрого увеличения потребления энергии, вероятно, связана с задержкой переключения - недостаточно просто увеличить мощность, пропорциональную тактовой частоте; напряжение также должно быть увеличено, чтобы поддерживать стабильность на более высоких тактовых частотах. Это может быть не совсем правильно; не стесняйтесь указывать исправления в комментарии или вносить изменения в этот ответ.
Больше ядер?
Так почему же больше ядер? Ну, я не могу ответить на этот вопрос окончательно. Вы должны были бы спросить людей в Intel и AMD. Но вы можете видеть выше, что с современными процессорами в какой-то момент становится непрактичным увеличивать тактовую частоту.
Да, многоядерный также увеличивает требуемую мощность и тепловыделение. Но это аккуратно избегает вопросов о времени передачи и задержке переключения. И, как видно из графика, вы можете легко удвоить количество ядер в современном процессоре с такими же тепловыми затратами, как и увеличение тактовой частоты на 25%.
Некоторые люди сделали это - текущий мировой рекорд по разгону составляет всего 9 ГГц. Но это является серьезной инженерной задачей при сохранении энергопотребления в допустимых пределах. В какой-то момент дизайнеры решили, что добавление большего количества ядер для параллельной работы в большинстве случаев обеспечит более эффективное повышение производительности.
Вот тут-то и приходит экономика - скорее всего, дешевле (меньше времени на разработку, проще в изготовлении) идти по многоядерному маршруту. И это легко продать - кто не любит новый чип с восьмиядерным ядром ? (Конечно, мы знаем, что многоядерный довольно бесполезен, когда программное обеспечение не использует его ...)
У многоядерной системы есть и обратная сторона: вам нужно больше физического пространства для установки дополнительного ядра. Тем не менее, объемы процессов ЦП постоянно сильно уменьшаются, поэтому есть достаточно места для размещения двух копий предыдущего проекта - реальный компромисс не в том, чтобы создать более крупные, более сложные одноядерные процессоры. Опять же, увеличение сложности ядра - это плохо с точки зрения дизайна - больше сложности = больше ошибок / ошибок и производственных ошибок. Кажется, мы нашли счастливую среду с эффективными ядрами, которые достаточно просты, чтобы не занимать слишком много места.
Мы уже достигли предела количества ядер, которое мы можем разместить на одном кристалле при текущих размерах процесса. Мы могли бы достичь предела того, насколько скоро мы сможем уменьшить количество вещей. Ну и что дальше? Нам нужно больше? Это трудно ответить, к сожалению. Кто-нибудь здесь ясновидящий?
Другие способы улучшить производительность
Таким образом, мы не можем увеличить тактовую частоту. И еще у ядер есть дополнительный недостаток, а именно: они помогают только тогда, когда программное обеспечение, работающее на них, может их использовать.
Итак, что еще мы можем сделать? Как современные процессоры намного быстрее, чем старые на той же тактовой частоте?
Тактовая частота на самом деле является лишь очень приблизительным приближением внутренней работы процессора. Не все компоненты процессора работают с такой скоростью - некоторые могут работать раз в два тика и т.д.
Что более важно, так это количество инструкций, которые вы можете выполнить за единицу времени. Это гораздо лучший показатель того, сколько может достичь одно ядро процессора. Некоторые инструкции; некоторые займут один такт, некоторые займут три. Например, деление происходит значительно медленнее, чем сложение.
Таким образом, мы могли бы повысить производительность процессора, увеличив число команд, которые он может выполнять в секунду. Как? Что ж, вы могли бы сделать инструкцию более эффективной - возможно, теперь деление занимает всего два цикла. Тогда есть конвейерная инструкция. Разбивая каждую инструкцию на несколько этапов, можно выполнять инструкции "параллельно", но каждая инструкция по-прежнему имеет четко определенный, последовательный порядок, соответствующий инструкциям до и после нее, поэтому для нее не требуется программная поддержка, например многоядерная. делает.
Есть другой способ: более специализированные инструкции. Мы видели такие вещи, как SSE, которые предоставляют инструкции для обработки больших объемов данных за один раз. Постоянно вводятся новые наборы инструкций с похожими целями. Это, опять же, требует программной поддержки и увеличивает сложность аппаратного обеспечения, но обеспечивает хороший прирост производительности. Недавно появился AES-NI, который обеспечивает аппаратно-ускоренное шифрование и дешифрование AES, гораздо быстрее, чем куча арифметических программ, реализованных в программном обеспечении.
1 Не без получения достаточно глубоко в теоретической квантовой физики, так или иначе.
2 Это может быть на самом деле ниже, поскольку распространение электрического поля не так быстро, как скорость света в вакууме. Кроме того, это только для расстояния по прямой линии - вероятно, что есть хотя бы один путь, который значительно длиннее прямой.