Пределы производительности


В последнее время сильно разочаровывает производительность вычислительной техники. Если смартфоны реально радуют ростом производительности и уже не так далеко по параметрам от ноутбуков, то компьютеры как-то не аллё. Наверху Вы можете видеть тренды последних 40 лет. Мы видим как линейно, подчиняясь закону Мура, растёт количество транзисторов. Мы видим, как с 2005 практически перестала расти тактовая частота. Одновременно с этим прервался и стал более пологим рост однопоточной производительности. И правда, мы можем наблюдать, как ставшие популярными благодаря китайцам древние списанные ксеоны (даже копеечный X3440, не говоря уже о 6-ядерном монстре с разблокированным множителем e1650, который способен разогнаться до 4,8 ГГц) вполне себе "тащат" и "раскрывают" любые игры на любых видеокартах. Не сильно отставая в реальных приложениях от текущих флагманов. Тока жрут побольше, да. Ну и видим попытку удержать энергопотребление в разумных пределах около 100 ватт и рост количества ядер, иначе чем ещё можно удваивать-то транзисторы. Как видим, рост застопорился. Давайте посмотрим, до каких пределов он вообще возможен в принципе. Чтобы не было потом мучительно смешно читать фантастику о компьютерах в миллионы ГГц. В помощь научному фантасту, так сказать)) Мы за твёрдую научную фантастику!
Теоретический потолок частоты.
Скорость света = 299 792 458 м\с, пусть будет 300 000 000 м\с для упрощения.
Допустим, у нас есть процессор, работающий на частоте 3 ГГц= 3 000 000 000 Гц. Не так уж много, правда? Какой теоретический максимальный размер чипа может быть? За время одного такта электрический сигнал (распространяющийся со скоростью света) может пробежать... Разделим скорость света на частоту... Итого 0.1 м. 10 см. Но на практике чип - довольно хитрое устройство. И сигналы там идут не по прямой. Так что это отнюдь не означает, радиус в 10 см. А значительно меньше.
Тут надо чуть отвлечься и упомянуть, что это размер функционального блока, то есть ядра процессора, а не самого процессора в целом. Ибо сами процессоры между собой общаются не в пределах одного такта. Ядра практически представляют собой разные компы, объединённые сетью. Но в пределах ядра всё должно укладываться в 1 такт.
А теперь прикинем, что у нас алмазные процессоры. С частотами под ТераГерц. Ладно, пусть 300 ГГц. Иначе зачем переходить на алмазы? Это означает, что 10 см для 3 ГГЦ надо поделить на 100, чтобы получить расстояние для 300 ГГЦ. А это один мм, Карл! Один грёбанный мм всего! И то чисто теоретический! А у нас ядро Скайлейка имеет площадь 49 кв мм. А это квадрат со стороной 7мм. А значит, даже с алмазами это ядро не разогнать выше 43 ГГЦ! Что не так уж уже и впечатляет. И это чисто теоретически, так что поделите реально достижимые скорости надвое\натрое. А если на порядок, то это мы и сейчас имеем)) Ибо законы физики. Правда, какой-нибудь кортекс А-53 умещается в 6 кв мм, то есть имеет сторону менее 3 мм. Но это всего-то в два раза частоту задрать можно.
В общем, мечты о террагерцевых компьютерах можно откинуть, как ненаучную фантастику.
Тут есть только две вещи, способные повысить удельную производительность ядра:
1. Процессор, как зд-структура. Многослойный пирог. То есть, не квадрат 49 кв мм, а куб 49 куб мм. То есть у нашего ядра сторона 7 мм. Либо теперь это будет более сложный процессор, для которого есть 343 кв мм общей площади. Могут возразить, что слои значительно тоньше одного мм, но ведь нам нужна максимальная длина проводника, так что это значение что в 2д, что в 3д не изменится, сколько слоёв не делай. Или можно уменьшить площадь кристалла приблизительно тоже в 7 раз за счёт трёхмерности. И увеличить тактовую частоту с 43 ГГц до 300, например. Что уже интересней. Многослойность ведёт к инженерной проблеме перегрева, ибо греющихся транзисторов в разы больше, а площадь для охлаждения таже. Но алмазные процессоры должны разрулить проблему отвода тепла.
2. Дальнейшее уменьшение техпроцесса позволит на той же площади\объёме либо выстраивать более сложные структуры, либо уменьшить площадь\объём и поднять частоты.
Предидущие рассчёты показывали пределы для текущего ядра скайлейк (или райзен, он чуть меньше) по текущему техпроцессу.
Предел миниатирюзации.
Фотолитография давно исчерпала свои возможности (60 нм) из-за размеров длины волны. Ухищрения с двойным-тройным экспонированием и тд позволили добиться лучших результатов. Ультрафиолет с длиной волны 13,5 нм позволил продвинуться дальше. Это литография в глубоком ультрафиолете.
Рентгеновское излучение для X-ray литографии имеет длину волны 0,5-5 нм и позволит добиться большего. Но пока что, в отличии от ультрафиолета, это не на слуху.
Кроме того, есть нанопечатная литография, при которой формируются прессформы с наноструктурой.
Это были технологии массового производства процессоров. Однако, эти технологии требуют создания дорогущих фотошаблонов (или нанопрессформы) и подходят только для
Кроме того, есть технологии единичного производства. Например, учёные делают это с помощью электронного микроскопа, где структуры в 1 нм - далеко не предел. Электронная литография позволяет, на нынешнем уровне развития технологии, получать структуры с разрешением менее 1 нм, благодаря более короткой Де-Бройлевской длине волны электронов по сравнению со светом. Этим способом и производят нанопрессформы и фотошаблоны. Одна проблема - скорость производства. Для типичных хороших электрон-резистов — экспозиция получается порядка 30 микрокулон на квадратный сантиметр. Это значит, что один луч с током 10nA (10 нанокулон в секунду) засветит 300мм пластину площадью 706 см2 за 706*30/(10*0.001) = 24 дня. 24 дня одна вафля, Карл! А нормальное производство - сто вафель в час! А не 10 в год! Впрочем, выход есть, Mapper litograpy предлагает устанавливать специальные насадки для параллельности процесса и обещают скорость до 10 вафель в час(рекомендую почитать по ссылке подробней, технология очень интересная и перспективная). Но уже на 22 нм, а не на 1. Впрочем, коммерческие системы - это около 5 нм. Кроме того, данная технология не требует изготовления дорогостоящих шаблонов и масок и размер серии абсолютно не важен, что неимоверно круто.
Кроме того, существует ионно-лучевая литография, где вместо электронов по тому же принципу используются ионы. Она куда быстрей производит засветку резиста, кроме того, угловое рассеяние там меньше. Особенностью такого подхода является то, что с помощью ионного луча, наряду с экспонированием, можно выполнять технологические операция: очистку поверхности, травление, нанесение пленок; а также совмещать в одном технологическом оборудовании все эти операции с другими сухими процессами, например с проявлением. Кроме того в некоторых случаях этот подход позволяет отказаться от полимерного резиста. Ионные пучки имеют длину волны 10-200 нм. А значит, предел техпроцесса - 10 нм. Зато перспективная технологичность процесса. Кстати, с фотошаблонами ионно-лучевая литография тоже работать может, так что это весьма перспективный вариант.
Сейчас минимальный размер транзистора около 14 нм. Теоретическим пределом из-за туннельного эффекта считалось 5 нм. Однако учёным удалось создать транзистор размером с 1 нм с помощью нанотрубок.
Интел считает, что пределы для улучшения техпроцесса будут достигнуты лет через 5. Пока что достигнут техпроцесс 10 нм (первый процессор на нём - мобильный снапдрагон 835), в планах 7 нм. Думаю, интел рассчитывает одолеть и 5 нм.
Но дальше в будущее уже никто не смотрит.
Да и куда особо смотреть-то?
Диаметр атома кремния около 0,25 нм.
Диаметр атома углерода (алмазный процессор) около 0,15 нм.
Эти величины уже не так чтобы и далеко... Мы же не сможем сделать транзистор МЕНЬШЕ атома, правда?
Пределы параллельности.
Если уж мы упёрлись в потолок из скорости света и размера атомов, и нам нельзя больше наращивать производительность отдельного функционального блока-ядра, может нарастить количество ядер? Ну что ж, посмотрим, насколько это поможет. А оценить это поможет закон Амдала.
«В случае, когда задача разделяется на несколько частей, суммарное время её выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента». Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.
Часть кода почти всегда будет последовательной. А это задаёт общую планку производительности. Пока она не выполнится - программа не будет выполнена. Если параллельная программа содержит 1% последовательного кода, то максимальное ускорение на 10 процессорах будет равно 9, а на 1024 процессорах — только 91. Как-то хило так. Тыща ядер, а ускорение на порядок меньшее... При этом 1% ставит чёткий потолок, что программу можно ускорить максимум в сто раз. Хоть тысяча тысяч ядер. Хоть десять тысяч. Последовательная часть всё равно будет выполняться на одном ядре и пока она не выполнится - программа не завершится. Все ядра будут ждать последовательную часть. А если 5% последовательного кода? То ускорение возможно всего в 20 раз. 10%? В 10 раз. При туче ядер.

Иметь много ядер - явно неадекватно выхлопу. И если для дата-центра, нагруженного разными задачами, которые он может выполнять одновременно, это ещё куда не шло, то для компьютера, который занимается одной задачей(как бы она не была распараллелена) множество ядер уже явный избыток.
И какой-нибудь 32х-ядерный оптерон уже не кажется слишком уж днищем для будущего. Ну ладно, 64 тоже покатит. Ну больше 128 точно смысла нет. Ибо 128 увеличат 5% код в 17 раз, а 1024 ядра в 20. При этом транзисторный бюджет в 10 раз больше. Для прироста скорости в 10% это как-то совсем не катит.
Тут нужно отметить прекрасную распараллеливаемость графических задач. В средней видюшке gtx1060 1152 потоковых процессора. А в gtx1080ti 3584 и между ними, чёрт побери, есть заметная разница в производительности. То есть распараллеливаемость рендеринга в играх просто феноменальная. Что, кстати, и позволяет развиваться видеокартам, в отличии от процессоров. Можно просто наращивать мясо.
А для роста производительности у нас остаются только архитектурные ухищрения, вроде всяких заточенных на определённые алгоритмы dsp-процессоров и прочих специализированных заточек, что будет усложнять ядро, но даст и прирост. Например, ядро может иметь в составе блок для квантовых вычислений, ускоряющий некоторые алгоритмы, спинтроника и тд - туда же. Но частотный потолок останется. И оптимизация программного обеспечения. Где поля непаханные. И, конечно, на подложку можно будет встроить и память (думаю, в будущем не будет разницы между оперативной и долговременной) и чипсет и прочие ништяки. Тенденция к интегрированию всего и вся уже наметилась.
Итак, не ошибусь, если через сто лет мы будем иметь алмазный компьютер SOC который может быть использован как карманный коммуникатор-смартфон, так и рабочая станция\сервер, если включить его в розетку и дать ему электрическую мощу)) Выполнен он будет по технологии 1 нм, достигать частоты в 50 ГГц(если сложность и длина конвейера ядра останется на уровне скайлейка, а техпроцесс снизится раз в 10(как раз 1 нм) + 3д-структура, которая уменьшит длину "проводников", то, может, и 500 ГГц) и иметь максимум 128 ядер общего назначения.
Впрочем, я уверен, что инженеры доведут гетерогенные вычисления до ума, а недоядра ГПУ станут более универсальными(и заодно быть "нейронами"), и параллельные вычисления будут выполнятся на упрощённых ГПУ-ядрах (которые могут, кстати, работать на более высоких частотах, так как они меньше). И всем хватит 32 ядра. Просто потому что больше ядер не будут давать роста производительности. Как в суперкомпьютерах, так и в смартфонах. Впрочем, особых суперкомпьютеров не будет. Ибо не возможно сделать комп мощнее. Только распараллеливать алгоритмы дальше, чтобы можно было поставить несколько таких компов)) Впрочем, обычно задачи для суперкомпьютеров прекрасно параллелятся. Ибо в основном это моделирование частиц.
И эти параметры будут актуальными как через сто лет, так и через тысячу. А о тысячах ГГц и тысячах ядер забудьте. Тысячи ГГц невозможны, в тысячах ядер нет смысла(прирост неадекватен затратам).
Ибо, к сожалению, потолок.
|
</> |