nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

Про эпоху тёмного кремния

В какой-то момент тема была на слуху: выходили статьи научно-популярные и не очень, что-то на русский переводили и на хабре публиковали - а потом как-то стихло. Как говорится, "граждане устали бояться!".

Если кратко: закон Мура всё ещё на последнем издыхании работает - транзисторов становится всё больше и больше, хотя по техпроцессам "количество нанометров" стало величиной исключительно маркетинговой - по сути, "сколько транзисторов умещается на определённой площади", хотя дело во многом не в том, что эти транзисторы стали меньше, а в том, что их поставили "на ребро" (FinFET). Уменьшать уже не получается особо - начинаются "квантовые" эффекты.

Но вот масштабирование Деннарда приказало жить уже давно... Согласно нему, при каждом удвоении числа транзисторов на той же площади кристалла, тактовую частоту можно было повысить на 40%, при этом мощность, потребляемая вдвое большим числом транзисторов, работающих на бОльшей частоте, оставалась ТОЙ ЖЕ САМОЙ! Для этого нужно было снижать питающее напряжение - самые древние КМОП схемы (561 серия) можно было питать от 15 вольт, затем оно снизилось до 5 вольт, до 3,3, до 1,8, затем и до 1,2 и даже 0,9 вольта. А потом опять же "упёрлись" в физические ограничения - если толщину диэлектрика сделать слишком маленькой (чтобы столь низкое напряжение создавало необходимую напряжённость поля), то и здесь начнётся туннелирование, и в какой-то момент потребление, с ним связанное, станет определяющим фактором.

И получилась забавная ситуация: мы можем напихать сотни миллионов транзисторов на небольшой кристалл, но включи их все одновременно на максимальной частоте - и они сгорят, и никакой жидкий азот не поможет, до него теплу ещё добраться надо!

Так что чем "тоньше" становится техпроцесс - тем бОльшая доля транзисторов должны оставаться "в покое" - если и переключаться, то лишь изредка. Такие "инертные" транзисторы и обозвали "Тёмным кремнием". Соответственно, "эпоха тёмного кремния" уже наступила, хотя может это пока не очень заметно...


В конце концов, одно применение "тёмным транзисторам" приходит сходу - СТАТИЧЕСКАЯ ПАМЯТЬ ДЛЯ КЭША! Если её мегабайты, и в каждый момент времени записывается 1-2 значения по 64 бита (да пусть даже целая строка кэша за раз), значит только 128 транзисторов из миллионов переключаются (ну и всякие дешифраторы, мультиплексоры и пр), а львиная доля сидят почти без потребления.

С этим тоже не всё так гладко - как говорилось, теперь и утечки вносят существенный вклад в потребление, и даже не переключающиеся транзисторы, но находящиеся ПОД НАПРЯЖЕНИЕМ, будут жрать. Но это вроде решаемо (и скорее всего решено) - на время хранения напряжение можно и снизить, "держать будет".

Так что повышение размеров кэша всех уровней - "наше всё"!

Но с каждым годом ситуация будет усугубляться (если только и по числу транзисторов окончательно не "упрёмся") - наступит момент, когда рост кэша уже не приводит к существенному росту производительности, а транзисторы "девать куда-то надо", раз уж их дают!

Можно понизить частоту, чтобы снизить энергопотребление, считая, что 10 медленных ядер лучше одного быстрого (тогда напряжение всё-таки можно понизить - и получить общую производительность на том же уровне, но потребление меньше, чем на одном быстром ядре), но тут закон Амдала дышит в затылок - далеко не всё можно распараллелить, и если хотя бы 10% программы распараллеливанию не поддаётся, то что у тебя будет 10 ядер, что 100 - очень быстро львиная доля времени будет съедаться этими 10% программы, и ядра становятся практически бесполезными.
Хотя, здесь явственно проглядывает принцип - "если мы не можем удовлетворить имеющиеся потребности - давайте создадим новые!" Привет, машинное обучение, нейросети и игровой рейтрейсинг - задачи, которые ОЧЕНЬ ХОРОШО распараллеливаются и нуждаются в НЕМЕРЯНОЙ ПРОИЗВОДИТЕЛЬНОСТИ!

Есть интересные низкоуровневые решения - попытаться снизить количество переключений при передаче и обработке тех же самых данных. Начиная с самых простых ситуаций: была 16-битная шина, а мы добавляем 17-й бит "инверсии", который говорит - "переключилось более 8 бит, поэтому мы лучше покажем те, что не переключились". То есть, и здесь принцип "усложняем схему, добавляем новые транзисторы, поскольку они нахаляву, а вот греться нам нельзя!" Наверное, что-то сэкономит на относительно протяжённых шинах, где ёмкость большая. Но подозреваю, что каких-то существенных улучшений не будет.

Также говорится о более точной оценке перегревов, вплоть до небольших областей чипа, чтобы можно было кратковременно включить побольше ядер, а потом поскорее их отключать и дать им остыть. Где-то здесь же предлагается самому же процессору считать тепловую модель себя, чтобы не усеивать кристалл термодатчиками, а просто знать а приори: "сейчас я включу полную тактовую частоту, запущу этот кусочек, который применит АЛУ, и вон тот, который загрузит MMU, здесь температура вырастет до 75°С, вон там до 50°С, после чего надо закругляться! Но и это "объедки с барского стола".

Ещё не оставляют надежды на технологический прорыв - задолбали уже эти КМОП, пора какую-нибудь спинтронику внедрять, или мемристоры, или уже пойти ва-банк и переходить на квантовые компьютеры. В последние я чего-то не верю (только в аналоговые квантовые компьютеры, когда одна квантовая система моделируется другой, в которую проще вносить изменения и проще наблюдать. Но никак не в "квантовые компьютеры общего назначения" как замена классических). В целом кажется, что и здесь сильно не разгуляешься - против природы не попрёшь! Любые переключения должны требовать существенно больше энергии, чем тепловой шум, иначе тепловой шум сам будет самопроизвольно менять состояния, а мы же хотим офигительную потребительскую электронику и безотказную промышленную электронику, и с жидким гелием оно как-то не вяжется :) Ну, может быть какой-то новый принцип даст ещё на порядок выигрыш, но надеяться на такой же экспоненциальный рост, как был до сих пор, и на десятки лет вперёд - чего-то сомнительно.

Ну и ИМХО самое перспективное, оно же неизбежное - потихоньку отказываться от процессорных ядер общего назначения, отдавая предпочтение специализированным ядрам, хорошо заточенным под решение конкретных задач. Если какая-то задача пока что не нужна - соответствующий модуль обесточиваем на кристалле, а другой активируем.

Или и вовсе вместо (или вместе) специализированных ядер использовать "гибкую логику" а-ля ПЛИС. Они, как ни странно, сейчас начнут себя очень неплохо чувствовать. Так-то, в сравнении с "жёсткой логикой" они всегда были медленнее и более дорогие по понятным причинам. Вместо конкретной логики приходится усеивать весь кристалл статической памятью, релизующей программируемые интерконнекторы и генераторы функций (LUT, Look-Up Tables), а из-за всего этого лишнего пути, проходимого сигналами, скорость явно отставала от процессорной.

Но вот хитрость - когда основным лимитом становится ВЫДЕЛЯЕМАЯ МОЩНОСТЬ, тогда как транзисторы в некотором роде "бесплатны", и когда высокие тактовые частоты всё равно нежелательны из-за п. 1, недостатки ПЛИС как-то уходят на второй план, а вот возможность "на ходу" собирать схему, заточенную на конкретную задачу - это интересно :)

Злые языки говорят, что для того Intel и купила Альтеру! Боятся, что их основной сегмент - процессоры x86 - может кануть в небытие, а тут, кто знает, вдруг получится нащупать удачный гибрид между "жёсткой" и "гибкой" логикой и с ним сохранить некое лидерство?


В интересное время живём! Но почему-то меня вся эта история скорее радует: может, наконец, научимся все эти безумные мощности правильно задействовать! Ну и без куска хлеба, глядишь, не останусь :)
Tags: ПЛИС, бред, программки, странные девайсы
Subscribe

Recent Posts from This Journal

  • Нахождение двух самых отдалённых точек

    Пока компьютер долго и упорно мучал симуляцию, я пытался написать на ассемблере алгоритм захвата на ближней дистанции. А сейчас на этом коде можно…

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…

  • Огари разговаривают

    Сегодня по пути на работу встретил огарей прямо в Лосином острове, на берегу Яузы. Эти были на удивление бесстрашны, занимались своими делами, не…

  • Ковыряемся с сантехникой

    Наконец-то закрыл сколько-нибудь пристойно трубы, подводящие к смесителю, в квартире в Москве: А в воскресенье побывал на даче, там очередная…

  • Мартовское велосипедное

    Продолжаю кататься на работу и с работы на велосипеде, а также в РКК Энергию и на дачу. Хотя на две недели случился перерыв, очередная поломка,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 14 comments

Recent Posts from This Journal

  • Нахождение двух самых отдалённых точек

    Пока компьютер долго и упорно мучал симуляцию, я пытался написать на ассемблере алгоритм захвата на ближней дистанции. А сейчас на этом коде можно…

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…

  • Огари разговаривают

    Сегодня по пути на работу встретил огарей прямо в Лосином острове, на берегу Яузы. Эти были на удивление бесстрашны, занимались своими делами, не…

  • Ковыряемся с сантехникой

    Наконец-то закрыл сколько-нибудь пристойно трубы, подводящие к смесителю, в квартире в Москве: А в воскресенье побывал на даче, там очередная…

  • Мартовское велосипедное

    Продолжаю кататься на работу и с работы на велосипеде, а также в РКК Энергию и на дачу. Хотя на две недели случился перерыв, очередная поломка,…