[Перевод] Закон Мура достиг предела
Примечание. Дата публикации статьи: 26.12.2015. За прошедшее время некоторые тезисы автора подтвердились реальными фактами, а некоторые оказались ошибочными — прим. пер.
В последние 40 лет мы видели, как скорость компьютеров росла экспоненциально. У сегодняшних CPU тактовая частота в тысячу раз выше, чем у первых персональных компьютеров в начале 1980-х. Объём оперативной памяти на компьютере вырос в десять тысяч раз, а ёмкость жёсткого диска увеличилась более чем в сто тысяч раз. Мы так привыкли к этому непрерывному росту, что почти считаем его законом природы и называем законом Мура. Но есть пределы этому росту, на которые указал и сам Гордон Мур. Мы сейчас приближаемся к физическому пределу, где скорость вычислений ограничена размером атома и скоростью света.
Канонические часы Тик-так от Intel начали пропускать такты то здесь, то там. Каждый «тик» соответствует уменьшению размера транзисторов, а каждый «так» — улучшение микроархитектуры. Нынешнее поколение процессоров под названием Skylake — это «так» с 14-нанометровым технологическим процессом. Логически, следующим должен стать «тик» с 10-нанометровым техпроцессом, но Intel теперь выдаёт «циклы обновления» после каждого «так». Следующий процессор, анонсированный на 2016 год, станет обновлением Skylake, всё ещё на 14-нанометровом техпроцессе. Замедление часов Тик-так — это физическая необходимость, потому что мы приближаемся к лимиту, где размер транзистора составляет всего несколько атомов (размер атома кремния — 0,2 нанометра).
Другое физическое ограничение — это скорость передачи данных, которая не может превышать скорость света. Требуется несколько тактовых циклов, чтобы данные попали из одного конца CPU в другой конец. По мере того как микросхемы становятся крупнее с большим и большим количеством транзисторов, скорость начинает ограничиваться самой передачей данных на микросхеме.
Технологические ограничения — не единственная вещь, которая замедляет эволюцию процессоров. Другим фактором является ослабление рыночной конкуренции. Крупнейший конкурент Intel, компания AMD, сейчас больше внимания уделяет тому, что она называет APU (Accelerated Processing Units), то есть процессорам меньшего размера с интегрированной графикой для мини-ПК, планшетов и других ультра-мобильных устройств. Intel теперь завладела подавляющей долей рынка процессоров для высококлассных ПК и серверов. Свирепая конкуренция между Intel и AMD, которая несколько десятилетий толкала вперёд развитие процессоров x86, практически исчезла.
Рост компьютерной мощи в последние годы идёт не столько от увеличения скорости вычислений, сколько от усиления параллелизма. В современных микропроцессорах используется три типа параллелизма:
- Одновременное выполнение нескольких команд с изменением их очерёдности.
- Операции Single-Operation-Multiple-Data (SIMD) в векторных регистрах.
- Несколько ядер CPU на одной микросхеме.
У этих типов параллелизма нет теоретических лимитов, но есть реальные практические. Выполнение команд с изменением их очерёдности ограничено количеством независимых команд в программном коде. Вы не можете одновременно выполнить две команды, если вторая команда ждёт результат выполнения первой. Нынешние CPU обычно могут одновременно выполнять четыре команды. Увеличение этого количества не принесёт много пользы, потому что процессору будет сложно или невозможно найти в коде больше независимых команд, которые можно выполнить одновременно.
В нынешних процессорах с набором инструкций AVX2 есть 16 векторных регистров по 256 бит. Грядущий набор инструкций AVX-512 даст нам 32 регистра по 512 бит, и вполне можно ожидать в будущем расширения на 1024- или 2048-битные векторы. Но эти увеличения векторных регистров будут давать всё меньший эффект. Немногие вычислительные задачи имеют достаточный встроенный параллелизм, чтобы извлечь выгоду из этих векторов большего размера. 512-битные векторные регистры соединяются набором регистров маски, у которых ограничение на размер 64 бита. 2048-битные векторные регистры смогут хранить 64 числа одинарной точности по 32 бита каждое. Можно предположить, что Intel не планирует делать векторные регистры более чем 2048 бита, поскольку они превзойдут ограничения 64-битных регистров маски.
Многочисленные ядра CPU дают преимущество только если имеется множество критических к скорости одновременно работающих программ или если задача делится на многочисленные независимые потоки. Количество потоков, на которые можно с выгодой разделить задачу, всегда ограничено.
Производители без сомнения постараются делать всё более и более мощные компьютеры, но какова вероятность, что эту компьютерная мощь можно будет использовать на практике?
Существует четвёртая возможность параллелизма, которая пока не используется. В программах обычно полно веток if-else, так что если CPU научатся предсказывать, какая из веток сработает, то можно было бы поставить её на выполнение. Можно выполнять одновременно сразу несколько веток кода, чтобы избежать потери времени, если предсказание окажется неправильным. Конечно, за это придётся заплатить повышенным энергопотреблением.
Другое возможное улучшение — разместить программируемое логическое устройство на микросхеме процессора. Подобная комбинация сейчас является обычным делом для так называемых FPGA, которые используются в продвинутой аппаратуре. Такие программируемые логические устройства в персональных компьютерах можно использовать для реализации функций, специфических для конкретных приложений, для задач вроде обработки изображений, шифрования, сжатия данных и нейросетей.
Полупроводниковая индустрия экспериментирует с материалами, которые можно использовать вместо кремния. Некоторые полупроводниковые материалы III-V способны работать на более низком напряжении и на более высоких частотах, чем кремний, но они не делают атомы меньше или свет медленнее. Физические ограничения по-прежнему в силе.
Когда-нибудь мы можем увидеть трёхмерные многослойные чипы. Это позволит уплотнить схемы, уменьшить расстояния, а следовательно, и задержки. Но как эффективно охлаждать такой чип, когда энергия распространяется повсюду внутри него? Потребуются новые технологии охлаждения. Микросхема не сможет передавать питание на все схемы одновременно без перегрева. Ей придётся держать отключенными большинство своих частей основную часть времени и подавать питание в каждую часть только во время её использования.
В последние годы скорость CPU увеличивается быстрее, чем скорость RAM, которая часто становится серьёзным узким местом. Без сомнения, в будущем мы увидим много попыток увеличить скорость оперативной памяти. Вероятной разработкой будет поместить оперативную память на одну микросхему с CPU (или хотя бы в один корпус), чтобы уменьшить расстояние для передачи данных. Это будет полезное использование трёхмерных чипов. Вероятно, RAM будет статического типа, то есть на каждую ячейку памяти будет подаваться питание только когда к ней осуществляется доступ.
Intel также снабжает рынок суперкомпьютеров для научного использования. У процессора Knight’s Corner — до 61 ядра на одной микросхеме. Он имеет слабое соотношение производительность/цена, но его ожидаемый наследник Knight’s Landing должен быть лучше по этому показателю. Он вместит до 72 ядер на чипе и сможет выполнять команды с изменением их очерёдности. Это маленький нишевый рынок, но Intel может повысить свой авторитет.
Сейчас лучшие возможности по улучшению производительности, как я думаю, с программной стороны. Разработчики ПО быстро нашли применение экспоненциальному росту производительности современных компьютеров, который произошёл благодаря закону Мура. Программная индустрия стала использовать её, а также начала использовать более и более продвинутые инструменты разработки и программные фреймворки. Эти высокоуровневые инструменты разработки и фреймворки сделали возможным ускорить разработку ПО, но за счёт потребления большего количества вычислительных ресурсов конечным продуктом. Многие из сегодняшних программ довольно расточительны в своём чрезмерном потреблении аппаратной вычислительной мощности.
На протяжении многих лет мы наблюдали симбиоз между аппаратной и программной индустриями, где последняя производила всё более продвинутые и ресурсоёмкие продукты, которые подталкивали пользователей покупать всё более мощное оборудование. Поскольку скорость роста аппаратных технологий замедлилась, а пользователи перешли на маленькие портативные устройства, где ёмкость батареи важнее, чем производительность, программной индустрии теперь придётся изменить курс. Ей придётся урезать ресурсоёмкие инструменты разработки и многоуровневый софт и разрабатывать программы, не так набитые функциями. Сроки разработки увеличатся, но программы станут потреблять меньше аппаратных ресурсов и быстрее работать на маленьких портативных устройствах с ограниченным ресурсом батареи. Если индустрия коммерческого ПО сейчас не изменит курс, то может уступить долю рынка более аскетичным продуктам open source.