Если транзисторы не могут стать меньше, то разработчики ПО должны стать умнее

17 июль, 2020 - 17:05Леонід Бараш

Тенденция к миниатюризации привела к тому, что сегодня кремниевые чипы имеют почти невообразимо маленькие схемы. Транзисторы, на которых строятся компьютерные микропроцессоры, настолько малы, что 1000 штук, уложенных друг за другом, не шире человеческого волоса. Но сегодня мы приближаемся к пределу того, насколько малыми транзисторы могут получаться.

В ожидании созревания новых компьютерных технологий, таких как квантовые компьютеры, углеродные нанотрубки или фотоника, для достижения производительности понадобятся другие подходы, когда закон Мура перестает работать. В недавней статье, опубликованной в журнале Science, команда CSAIL обозначила три ключевые области для определения приоритетов, чтобы продолжать обеспечивать ускорение вычислений: лучшее ПО, новые алгоритмы и более оптимизированное оборудование.

В статье, опубликованной в Science, проф. Лайзерсон (Leiserson) с соавторами дают рекомендации по трем областям вычислений: программному обеспечению, алгоритмам и аппаратной архитектуре.

Что касается ПО, то они говорят, что предыдущая ориентация программистов на продуктивность по сравнению с производительностью привела к появлению проблемных стратегий, таких как «сокращение»: использование кода, который работал над проблемой A, для решения проблемы B. Например, если кто-то должен создать систему распознавания голосовых команд «да» или «нет», но не хочет кодировать целую новую пользовательскую программу, они могут взять существующую программу, которая распознает широкий диапазон слов, и настроить ее так, чтобы она отвечала только на ответы «да» или «нет».

Несмотря на то, что этот подход сокращает время кодирования, его неэффективность быстро возрастает: если одно сокращение на 80% эффективнее, чем новое решение, а затем вы добавляете двадцать уровней сокращения, код в конечном итоге будет в 100 раз менее эффективным, чем он мог бы быть.

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

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

С точки зрения аппаратной архитектуры, команда рекомендует оптимизировать аппаратное обеспечение, чтобы проблемы могли быть решены с меньшим количеством транзисторов и меньшим количеством кремния. Оптимизация включает в себя использование более простых процессоров и создание аппаратного обеспечения, адаптированного к конкретным приложениям, например графический процессор (GPU), специально предназначенный для компьютерной графики.

«Оборудование, настроенное для конкретных доменов, может быть намного более эффективным и использовать гораздо меньше транзисторов, что позволяет приложениям работать в десятки и сотни раз быстрее», - говорит ученый-исследователь Тао Шардль (Tao Schardl).

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

Если транзисторы не могут стать меньше, то разработчики ПО должны стать умнее

Производительность SPECint (в основном, последовательная), производительность SPECint (параллельная) и масштабирование тактовой частоты для микропроцессоров с 1985 по 2015 год, нормализованная для микропроцессора Intel 80386 DX в 1985 году