По ту сторону закона Мура

от автора

Слухи о смерти закона Мура ходили, сколько я себя помню. Рассуждения о том, что мы приближаемся к размерам атома и о том, что скоро вся затея станет нерентабельной, я слышал и 30, и 20, и 10 лет назад. Вот только инженеры раз за разом их опровергали. Именно инженерный гений сделал закон Мура одним из “самоисполняющихся пророчеств”.

Не собираюсь рассуждать о том, достигла технология своего предела или еще нет. Несмотря на радиофизическое образование, я в ней разбираюсь очень условно. Желающим вникнуть могу посоветовать обратиться к недавнему обзору. Я же подпишусь под точкой зрения еще одного очень уважаемого мной мыслителя Боба Колвелла.

image

Teм временем чипмейкеры продолжают строить (ну или по крайней мере анонсировать) новые фабрики, работающие по новым технологиям. Значит, это все еще выгодно. По мне так “пациент скорее жив, чем мертв”. Mуровская экспансия остановится тогда, когда сервер с двумя процессорами произведенными по новой технологии станет дороже, чем сервер с 4мя произведенными по старой. А это пока далеко не так. Мне доводилось работать и с 4-head и даже с 8-head. Но они собираются на заказ и стоят как маленький самолет.

Моя же задача сегодня рассказать о том как технология влияет на архитектуру и программирование. О том что нас ждет “по ту сторону закону Мура”. Ибо многие тенденции очевидны уже сейчас. Итак.

Площадь (объем) кристалла – на вес золота. Транзисторы перестают “сжиматься”, а размер чипа ограничен. Соответственно, у количества элементов есть предел. Новые фантазии становится все тяжелее впихивать на кристалл. Напротив, возрастает цена компактности. Дизайнеры куда больше озабочены оптимизацией, чем инновациями. Соответственно, мы будем видеть все меньше новшеств на кристалле CPU или GPGPU. Возможно, даже софт придется меньше переписывать, хотя в последнее мне не верится.

Дискретность. Поскольку размер, функционал и энергопотребление чипа ограничены, давайте же натыкаем как можно больше микросхем. Хороших и разных (взрывной рост акселераторов, предсказанный Колвеллом). Или одинаковых (symmetric multi-processing). Или вообще с перепрограммируемой логикой(FPGA). Каждый из этих сценариев имеет свои достоинства. Первый дает максимальную производительность на ватт для конкретной задачи. Второй –простоту программирования. Третий — гибкость. Какой сценарий реализуется – решит время. Как я люблю говорить, жизнь все покажет и всех рассудит. И ждать осталось уже недолго.

Усложнение NUMA: Монокристаллы вымирают, уступая место чиплетам. Таким образом, производители увеличивают выход годного продукта. Кстати, “ялда” (yield) – процент годных чипов, это самая страшная тайна любого чипмейкера. Особенно, на ранних стадиях техпроцесса. Но такое “cклеивание” чипа из кусочков несет дополнительные сложности для программистов. Время коммуникаций между ядрами внутри чиплета и вне – разное. И это только один пример все усложняющейся структуры NUMA (Non-Uniform Memory Access). Другой – топология связей внутри чипа.(A eще – High Bandwidth Memory. A eще – дискретность. А –еще…) И все это надо будет принимать во внимание.

Возрастающая роль uncore: Раз уж речь зашла о внутрипроцессорных коммуникациях упомяну еще об одной интересной тенденции. Если присмотреться к M&A активности лидеров рынка, то легко понять, что все гиганты делают одно и то же. Intel вкладывается в технологии Silicon Photonics и покупает Barefoot Networks. NVidia отвечает покупкой Mellanox. И не Infinibanda единого ради. Все понимают, что поле будущей битвы – внутри- и межпроцессорные соединения. И кто станет “царем горы” определят не instruction setы и какая-то сложная логика, а шины и коммутаторы.

“Неповторимость”(точнее неповторяемость): Mне иногда приходится работать с большими ансамблями чипов. Это происходит, когда строится и запускается новый кластер для высокопроизводительных вычислений. И недавно я заметил одну интересную вещь. Если раньше чипы с одинаковй маркировкой были практически неотличимы, то теперь каждый из них имеет свой “характер” и “настроение”. У процессора есть встроенный механизм регулировки энергопотребления. Он зависит от того сколько ядер работает в данный момент, какие блоки задействуются, от температуры и тд и тп. И похоже, то как процессор потребляет и рассеивает энергию зависит еще от условий производства конкретной партии, от его положения в стойке и еще массы других неконтролируемых факторов. В результате я наблюдал девиации частоты (и производительности) ~15%. Разумеется, это приводит ко всякого рода имбалансам (MPI, OpenMP). И как с ними бороться пока не очень понятно. Разве что, делать распределение работы динамическим.

И последнее — частота: Расти точно не будет. По многим причинам, среди которых энергопотребление, размер и тп. Рискну предположить, что частоту вообще надо понижать. Максимально безболезненным для single thread performance образом (то бишь есть улучшая архитектуру). Тут конечно пострадает любимый всеми маркетологами Linpack. Но система станет более сбалансированной и труд разработчиков железа облегчится. Ну а в реальных приложениях, чем меньше тактов намолотит процессор, ожидая данных от медленных устройств (памяти, сетки, диска) – тем лучше.

Таким мне представляется компьютерный мир в пост-муровскую эпоху.
А вы каким его видите?

ссылка на оригинал статьи https://habr.com/ru/company/huawei/blog/504254/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *