Почему частоты процессоров не растут выше нескольких гигагерц

Егор
windows-processor-cores-optimize.jpg
Самым первым процессором от Intel можно считать 4004 — он вышел в 1971 году и имел частоту всего 740 кГц. Частоты тогда росли достаточно быстро — уже в 1989 году появился процессор i486 с частотой больше 100 МГц, а Pentium 3 в 2000 году взял планку в 1 ГГц. Но с того времени рост частоты резко замедлился: сейчас, в 2017 году, самые топовые решения от Intel имеют частоту всего около 4-4.5 ГГц, разгон позволяет взять 5 ГГц. То есть за 17 лет частоты выросли всего в 5 раз, когда с 1971 по 1989 год, за почти то же время, рост частоты составил два порядка.  

Тепловыделение

Почему же рост так сильно замедлился? Самое банальное ограничение — это тепловыделение: в домашних условиях, без применения жидкого азота и прочих дорогих и ненадежных ухищрений, реально отвести от процессора 200-250 Вт.

Теперь же залезем немного в физику: Q ~ V2F, где Q это тепловыделение процессора, V — напряжение на нем, а F — его частота. Теперь нужно связать между собой частоту процессора и напряжение на нем. Процессор состоит из огромного числа транзисторов, которые по сути являются переключателями: для того, чтобы он переключился, нужно накопить определенный заряд, а его время накопления пропорционально току, который, в свою очередь, пропорционален напряжению. А вот частота процессора напрямую связана со временем скорости переключения транзистора, отсюда мы получаем, что F ~ V, и, подставляя это в пропорцию для Q, мы получаем, что Q ~ F3! То есть, иными словами, если мы имеем процессор с частотой в 4 ГГц и тепловыделением около 100 Вт, при его разгоне до 8 ГГц от него нужно будет отвести аж 800 Вт тепла — сделать это можно только с помощью интенсивного охлаждения жидким азотом, и, разумеется, ни о каком домашнем использовании речи тут не идет. 

Отсюда же кстати хорошо виден потолок в разгоне в виде 5 ГГц — при росте частоты на 25% мы получаем рост тепловыделения в 1.253 = 2 раза, то есть тепловыделение процессора будет порядка 200 Вт — почти предел в домашних условиях.

Оптимизация конвейера

Как видно, повышать частоты в лоб — плохая идея. Но может тогда имеет смысл заняться оптимизацией конвейера? Суть конвейера состоит в том, что исполнение каждой инструкции (операции) разбивается на несколько стадий, причем каждая стадия выполняется на отдельном вычислительном блоке процессора. Как только одна стадия была сделана — освободившийся блок может начать выполнять аналогичную стадию, но уже другой инструкции. В идеале это выглядит так:
1.png
То есть, как видно, к четвертому такту (отрезку времени) на конвейере будет выполняться одновременно уже 4 инструкции. Однако это — идеальный случай. Проблема в том, что каждая стадия выполняется за свое время, и так как размер такта всегда постоянен и привязывается к времени выполнения самой долгой стадии, то получается, что в какие-то моменты времени конвейер будет просто простаивать (красное — время простоя):
2.png
Тогда в голову приходит простая мысль — почему бы не привязать время такта к времени выполнения самой короткой стадии, и тогда более длинные будут просто дробиться на несколько тактов, и большая часть простоев уйдет. Увы — идея хорошая, но вот на деле это ничего не даст.

Разберем случай как на картинке выше: стадии 1, 3 и 4 одинаковые по длине и вдвое короче стадии 2. То есть время такта сократим вдвое — это же приведет к росту частоты процессора так же вдвое: к примеру, время выполнение 1 такта на процессоре с частотой 4 ГГц занимает 1/4 ГГц = 250 пс. Если мы уменьшим такт вдвое, до 125 пс, то мы получим частоту 1/125 пс = 8 ГГц. Однако на деле производительность процессора не возрастет — простои все так же будут, и в том же количестве:
2.png
Так что в итоге наш гипотетический процессор с длиной такта 125 пс не будет работать быстрее процессора с длиной такта 250 пс. 

Еще одна хорошая идея — это взять самую длинную стадию и разделить на несколько более мелких, тем самым сократив время такта, а значит подняв частоту. Звучит здраво, более того — это уже многократно делали, и уже почти зашли в тупик. Ну и вторая проблема — зачастую бывает так, что длинная стадия «цепляется» за несколько предыдущих. Выглядит это так: к примеру, у нас есть три операции:
  1. A + B = X
  2. C + D = Y
  3. X*Y = Z
Наша цель — получить Z, зная A, B, C и D. Первые две операции сложения делаются быстро, а вот третья стадия, умножение, достаточно долгая — ее неплохо было бы разбить. Но вот загвоздка — X и Y считаются на предыдущих стадиях, и пока они не посчитаются — разбить третью стадию увы никак нельзя. И такое при вычислении на процессоре встречается постоянно, и поэтому зачастую длинные стадии тормозят весь процесс, и ничего с этим не сделать.

Уменьшение техпроцесса

Раз мы не можем никак ни уменьшить стадии, ни толком увеличить частоту, остается только одно — уменьшать сам размер процессора. Тут все просто — электрические импульсы распространяются с одной фиксированной скоростью (равной скорости света в вакууме), и если мы уменьшим расстояние, которое импульс должен пройти — мы уменьшим затраченное на это время, и соответственно увеличим количество операций, которое сможет сделать процессор за то же время. И тут нас опять же останавливает физика — уменьшать техпроцесс вечно нельзя, предел для кремниевого транзистора — несколько нанометров. И чем ближе мы к пределу, чем труднее производство — к примеру, техпроцесс в 14 нм Intel «взяла» с опозданием почти в 2 года (и то сначала вышли низкочастотные кристаллы для мобильной техники). С 10 нм все еще хуже — пока что такую планку взяли только некоторые ARM-процессоры, Intel и AMD от этого еще достаточно далеки. 

Итог

Как видно, проблем увеличить частоту хотя бы еще вдвое — масса. Поэтому пока что производители остановились на нескольких гигагерцах, и стали расти «вширь» — уже давно никого не удивишь двухядерным процессором, совсем недавно AMD выпустила относительно дешевый пользовательский восьмиядерный CPU, а Intel через несколько дней должна представить аж двенадцатиядерные пользовательские процессоры! Однако и тут проблем хватает — далеко не все задачи можно распараллелить, но это, впрочем, уже материал для другой статьи.
34

Будь в курсе последних новостей из мира гаджетов и технологий

Мы в соцсетях

Комментарии

Роман Капустин
–157
Недавно выпустили 8ядерный? Автор говорит о райзене? Удивлю автора, есть fx8000 и выше... у меня 8350й фикс. Он в два раза дешевле седьмого райзена, а может и в 3. Но, 8350 вышел несколько лет назад. Автор поясни что я не так понял, или твоя информация в конце текста — very old.
26 мая 2017 в 12:24
#
Егор Морозов
+1765
Fx-8xxx не является настоящим 8ядерным процессором — на деле он имеет 4 вычислительных кластера. За подробностями в гугл.
26 мая 2017 в 12:46
#
Роман Капустин
–157
Благодарю. Но на самом деле, для верстки видео/фото, он лучше даже чем ай5 интел, много обзоров смотрел... в данном вопросе он как раз 8ядерный))
26 мая 2017 в 13:25
#
Егор Морозов
+1765
Увы — нет: в обзоре по ссылке выше есть сравнение с i5 и i7 второго поколения, и там хорошо видно, что при обработке видео до i5 он не достает. Ну а с учетом того, что современные i5 и i7 все же значительно мощнее, чем 6летней давности — реальная производительность FX-8xxx сейчас на уровне высокочастотных i3.
26 мая 2017 в 13:30
#
Егор Морозов
+1765
Моя статья не относится к блогам, если вы об этом. Вы можете завести свой блог, и если вашу статью будут активно читать — она появится в разделе Популярное на сайте.
26 мая 2017 в 13:32
#
+189
спасибо за познавательную статью! продолжайте писать, очень интересно читать такое!
26 мая 2017 в 12:56
#
Daniil Rubaylov
0
я только сейчас узнал про 8 ядерный процессор, у меня стоит 2.4ггц
26 мая 2017 в 13:26
#
Daniil Rubaylov
0
у меня процессор intel core i3 2.4ггц а про 8 ядерный узнал только сейчас :D
26 мая 2017 в 13:28
#
+839
Спасибо , Егор ! С вашим приходом iguides стал более познавательным , а то кроме Фросиной то с Айфоном , то с Самсунгом и смотреть было не на что ! ;-)
26 мая 2017 в 13:26
#
+107
Одна из немногих реально стоящих и профессиональных статей
26 мая 2017 в 13:33
#
+35
Я так понимаю это морозов с канала новинки it если так то очень хорошо будет
26 мая 2017 в 16:44
#
Егор Морозов
+1765
Нет, мы просто однофамильцы). Свои статьи я публикую только здесь, и больше ни с какими информационными ресурсами не связан.
26 мая 2017 в 17:11
#
SithV
+1553
очень интересно пишите! у вас тут наверно самые интеллектуальные и оригинальные статьи, а не как обычно репосты слухов и сплетен, которые можно найти на всех сайтах, даже не специализирующихся на технологиях...)) продолжайте в том же духе!
26 мая 2017 в 20:03
#
Cowboy
+286
Спасибо за такую интересную статью! Вас здесь читать интереснее всего.
26 мая 2017 в 20:18
#
O. W. Grant
+166
Егор, большое спасибо, с вами ресурс прямо начал расцветать.
26 мая 2017 в 22:23
#
Валентин Салчак
+1
А будет ли статья, за счет чего (каких идей, технологий) растет производительность процессоров с каждым новым поколением, если частоту процессоров уже проблематично поднять?
26 мая 2017 в 23:10
#
+270
Спасибо. Узнал то, о чем задумывался!
26 мая 2017 в 23:51
#
+3
когда пишете "пропорционально", уточняйте: прямо или обратно
27 мая 2017 в 01:20
#
O. W. Grant
+166
Зачем? По умолчанию всегда прямо, указывают только в случае если обратно. Это все знают.
27 мая 2017 в 07:46
#
Cyberika
+365
Будищее за GPU.
28 мая 2017 в 00:09
#
+6
Уважаемые писатели и читатели, раз так откровенно пишем про законы физики и природу явлений, то стоит помнить что токи на частотах свыше 1 ГГц передаются по воздуху быстрее чем по проводам, дорожкам системных плат и прочее, здесь ни размеры кристалла, ни тепло не играет роли. Упёрлись в первую очередь в технологию, так как на простом повышении частоты, уже тупичёк. Тут надо другое в корне что-то придумывать...
Простите, в статье про это стоило бы упомянуть.
28 мая 2017 в 00:33
#
Егор Морозов
+1765
Погуглил — не нашел нигде связи частоты процессора со скоростью тока, и цифра в 1 ГГц тоже нигде не участвовала. Можете пояснить то, что вы написали?
28 мая 2017 в 09:58
#
+57
Товарищ наверное имел в виду, что при таких высоких частотах уже следует учитывать скорость распространения электрического поля, в данном случае, в меди, чтобы сигналы приходили во время.
29 мая 2017 в 15:07
#
betmen
+129
Чота ниасилил
28 мая 2017 в 10:54
#
+44
Зачем нужен жидкий азот, когда можно использовать тепловой насос для отвода тепла?
29 мая 2017 в 16:39
#
Дмитрий Курзин
+1
Скорость распространения сигнала не зависит от техпроцесса, а зависит только от диэлектрической проницаемости среды . Поэтому и для 65нм и для 10нм скорость распространения сигнала между транзисторами микросхемы одна и та же. А вот что действительно меняется при уменьшении техпроцесса, так это ёмкость затвора полевого транзистора (уменьшается) и пороговое напряжение транзистора (уменьшается).
1 июня 2017 в 01:09
#