Почему чипы содержат все больше ядер? Почему бы не изготовить больший одноядерный процессор? Это проще в изготовлении? Разрешить ли программам многопоточность с использованием отдельных ядер?
5 ответов
Тенденция к многоядерности - это инженерный подход, который помогает разработчикам ЦП избежать проблемы энергопотребления, которая сопровождается постоянно растущим масштабированием частоты. Когда скорость процессора выросла до диапазона 3-4 ГГц, количество электроэнергии, необходимое для ускорения, стало запредельным. Технические причины этого сложны, но такие факторы, как тепловые потери и ток утечки (мощность, которая просто проходит по схеме, не делая ничего полезного), увеличиваются быстрее с ростом частот. Хотя, безусловно, возможно построить 6-ГГц универсальный процессор x86 общего назначения, экономически неэффективно это делать. Вот почему начался переход к многоядерности, и поэтому мы увидим, что эта тенденция будет продолжаться, по крайней мере, до тех пор, пока проблемы распараллеливания не станут непреодолимыми. На данный момент тенденция к виртуализации помогла на арене серверов, поскольку это позволяет нам эффективно распараллеливать совокупные рабочие нагрузки, на данный момент, во всяком случае.
В качестве практического примера E5640 Xeon (4 ядра при 2,66 ГГц) имеет огибающую мощность 95 Вт, в то время как L5630 (4 ядра при 2,13 ГГц) требуется всего 40 Вт. Это на 137% больше электроэнергии и на 24% больше мощности процессора для процессоров, которые по большей части совместимы между собой. X5677 увеличивает частоту до 3,46 ГГц с некоторыми дополнительными функциями, но это только на 60% больше вычислительной мощности и на 225% больше электроэнергии.
Теперь сравните X5560 (2,8 ГГц, 4 ядра, 95 Вт) с более новым X5660 (2,8 ГГц, 6 ядер, 95 Вт) и получите на 50% больше вычислительной мощности в сокете (потенциально, если предположить, что закон Амдаля нам нравится сейчас), не требуя дополнительной электроэнергии. Процессоры AMD серии 6100 демонстрируют аналогичное увеличение общей производительности по сравнению с сериями 2400\8400, сохраняя при этом потребление электроэнергии на одном уровне.
Для однопоточных задач это проблема, но если ваши требования состоят в том, чтобы доставлять большие объемы совокупной мощности ЦП в кластер распределенной обработки или кластер виртуализации, то это разумный подход. Это означает, что для большинства серверных сред сегодня масштабирование числа ядер в каждом ЦП является гораздо лучшим подходом, чем попытка создать более быстрые \ лучшие одноядерные ЦП.
Эта тенденция будет продолжаться некоторое время, но существуют проблемы, и непрерывное масштабирование числа ядер не является простым (поддержание достаточно высокой пропускной способности памяти и управление кэшем становится намного сложнее по мере роста числа ядер). Это означает, что текущий довольно взрывной рост числа ядер на сокет должен будет замедлиться через пару поколений, и мы увидим другой подход.
Вычислительная мощность и тактовая частота одного процессора достигли своего пика несколько лет назад, просто не так просто создать более мощные и / или более быстрые процессоры, чем нынешние; поэтому основные производители процессоров (Intel, AMD) сменили стратегию и стали многоядерными. Это, конечно, требует от разработчиков приложений гораздо больше работы, чтобы использовать все возможности многозадачности: программа, выполняемая в одной задаче, просто не получает никакой выгоды от многоядерного процессора (хотя система получает общий бонус, потому что он не блокируется, если один процесс использует один процессор до 100% использования).
О физической архитектуре (многоядерные процессоры вместо нескольких одноядерных)... вы должны спросить Intel. Но я совершенно уверен, что это как-то связано с материнскими платами с одним сокетом процессора, которые намного проще проектировать и производить, чем с платами с несколькими.
Становилось слишком сложно сделать их полезными быстрее.
Проблема в том, что вам нужно работать над кучей инструкций одновременно, в текущем процессоре x86 одновременно работают 80 или более инструкций, и кажется, что это предел, так как он был достигнут P4, черт возьми Pentium Pro сделал 40 в 1995 году. Типичные потоки инструкций непредсказуемы (вы должны угадать ветки, доступ к памяти и т.д.), Чтобы выполнить сразу несколько инструкций (486 выполнили 5, Pentium выполнил 10, едва).
Таким образом, хотя вы можете сделать их шире (больше функциональных единиц для выполнения каждого фрагмента инструкции), длиннее (более глубокие конвейеры, чтобы скрыть задержку), похоже, это не очень полезно. И мы, кажется, также ударили в стену с тактовой частотой. И у нас до сих пор память обгоняет. Так что расщепление на множество процессоров кажется победой. Кроме того, они могут делиться кешами.
Здесь есть кое-что еще, но все сводится к тому, что обычные программы не могут выполняться значительно быстрее на любом оборудовании, которое мы можем себе представить, как проектировать и создавать.
Теперь, если предсказуемость не является проблемой, например, многие научные проблемы и графики (они часто сводятся к умножению этого набора чисел на этот набор чисел), это не так, и, следовательно, популярность Intel IA64 (Itanium) и графические процессоры, которые продолжают работать быстрее, но они не помогут вам лучше запустить Word.
Чтобы увеличить тактовые частоты, кремниевые транзисторы на чипе должны иметь возможность переключаться быстрее. Эти более высокие скорости требуют более высоких входных напряжений и процессов производства полупроводников, которые приводят к большей утечке, которые увеличивают энергопотребление и тепловую мощность. Вы в конечном итоге достигнете точки, когда вы не сможете увеличить тактовые частоты, не требуя чрезмерного количества энергии или не используя экзотические решения для охлаждения.
Чтобы проиллюстрировать эту проблему, я сравню два современных процессора AMD. AMD FX-9590 способен достигать тактовой частоты до 5 ГГц из коробки, но работает при напряжениях ядра до 1,912 В, что является чрезвычайно высоким для 32-нм чипа, и рассеивает безумные 220 Вт тепла. FX-8350, который основан на том же кристалле, работает на максимальных частотах 4,2 ГГц, но работает на максимальных 1,4 В и рассеивает 125 Вт.
В результате, вместо того, чтобы пытаться увеличивать тактовую частоту, инженеры стремились к тому, чтобы микросхемы работали быстрее другими способами, включая разработку их для одновременной работы нескольких процессов - отсюда многоядерных процессоров.
Закон Мура. По сути, процессоры не могут быть сделаны быстрее (частота достигла 3 ГГц 5 лет назад и никогда не выходили за рамки этого), поэтому они стали более мощными, получив больше ядер.