Почему чипы содержат все больше ядер? Почему бы не изготовить больший одноядерный процессор? Это проще в изготовлении? Разрешить ли программам многопоточность с использованием отдельных ядер?
Почему чипы содержат все больше ядер? Почему бы не изготовить больший одноядерный процессор? Это проще в изготовлении? Разрешить ли программам многопоточность с использованием отдельных ядер?
Ответы:
Тенденция к многоядерности - это инженерный подход, который помогает разработчикам ЦП избежать проблемы энергопотребления, которая сопровождается постоянно растущим масштабированием частоты. Когда скорость процессора выросла до диапазона 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 при сохранении постоянного энергопотребления.
Для однопоточных задач это проблема, но если ваши требования состоят в том, чтобы доставлять большие объемы совокупной мощности ЦП в кластер распределенной обработки или кластер виртуализации, то это разумный подход. Это означает, что для большинства серверных сред сегодня масштабирование числа ядер в каждом ЦП является гораздо лучшим подходом, чем попытка создать более быстрые \ лучшие одноядерные ЦП.
Эта тенденция будет продолжаться какое-то время, но есть проблемы, и непрерывное масштабирование числа ядер является нелегким делом (поддержание достаточно высокой пропускной способности памяти и управление кэшем становится намного сложнее по мере роста числа ядер). Это означает, что текущий довольно взрывной рост числа ядер на сокет должен замедлиться через пару поколений, и мы увидим другой подход.
Становилось слишком трудно сделать их полезными быстрее.
Проблема в том, что вам нужно работать над кучей инструкций одновременно, в текущем процессоре x86 одновременно работают 80 или более инструкций, и кажется, что это предел, так как он был достигнут P4, черт возьми Pentium Pro выполнил 40 в 1995 году. Типичные потоки инструкций непредсказуемы (вы должны угадать ветки, доступ к памяти и т. д.), чтобы выполнить сразу несколько инструкций (486 выполнило 5, Pentium выполнил 10, едва) ,
Таким образом, хотя вы можете сделать их шире (больше функциональных единиц для выполнения каждого фрагмента инструкции), длиннее (более глубокие конвейеры, чтобы скрыть задержку), похоже, это не очень полезно. И мы, кажется, также ударили в стену с тактовой частотой. И у нас до сих пор память обгоняет. Таким образом, разделение на множество процессоров кажется победой. Кроме того, они могут делиться кэшем.
Здесь есть кое-что еще, но все сводится к тому, что обычные программы не могут выполняться значительно быстрее на любом оборудовании, которое мы можем себе представить, как проектировать и создавать.
Теперь, если предсказуемость не является проблемой, например, многие научные проблемы и графики (они часто сводятся к умножению этого набора чисел на этот набор чисел), это не так, и, следовательно, популярность Intel IA64 ( Itanium и графические процессоры, которые продолжают работать быстрее, но они не помогут вам лучше запустить Word.
Вычислительная мощность и тактовая частота одного процессора достигли своего пика несколько лет назад, просто не так просто создать более мощные и / или более быстрые процессоры, чем нынешние; поэтому основные производители процессоров (Intel, AMD) сменили стратегию и стали многоядерными. Это, конечно, требует от разработчиков приложений гораздо больше работы, чтобы использовать все возможности многозадачности: программа, выполняемая в одной задаче, просто не получает никакой выгоды от многоядерного процессора (хотя система получает общий бонус, потому что он не блокируется, если один процесс использует один процессор до 100% использования).
О физической архитектуре (многоядерные процессоры вместо нескольких одноядерных) ... вы должны спросить Intel. Но я совершенно уверен, что это как-то связано с материнскими платами с одним сокетом процессора, которые гораздо проще проектировать и производить, чем с платами с несколькими.
Чтобы увеличить тактовые частоты, кремниевые транзисторы на чипе должны иметь возможность переключаться быстрее. Эти более высокие скорости требуют более высоких входных напряжений и процессов производства полупроводников, которые приводят к большей утечке , которые увеличивают потребление энергии и тепловыделение. В конечном итоге вы достигнете точки, когда вы не сможете увеличить тактовые частоты, не требуя чрезмерного количества энергии или не используя экзотические решения для охлаждения.
Чтобы проиллюстрировать эту проблему, я сравню два современных процессора AMD. AMD FX-9590 способен достигать тактовой частоты до 5 ГГц из коробки, но работает при напряжениях ядра до 1,912 В, что является чрезвычайно высоким для 32-нм чипа, и рассеивает безумные 220 Вт тепла. FX-8350, который основан на том же кристалле, работает с максимальной частотой 4,2 ГГц, но работает с максимальной мощностью 1,4 В и рассеивает 125 Вт.
В результате, вместо того, чтобы пытаться увеличивать тактовую частоту, инженеры стремились к тому, чтобы микросхемы работали быстрее другими способами, включая разработку их для одновременной работы нескольких процессов - отсюда многоядерных процессоров.
Закон Мура . По сути, процессоры не могут быть сделаны быстрее (частота достигла 3 ГГц 5 лет назад и никогда не выходили за рамки этого), поэтому они стали более мощными, получив больше ядер.