Оптимизация системы больше не возможна посредством раздельного рассмотрения аппаратного и программного обеспечения, согласно анализу, опубликованному Brian Bailey, редактором по технологиям EDA в Semiconductor Engineering. Программные рабочие нагрузки меняются быстрее, чем идут циклы разработки микросхем, тогда как энергопотребление, производительность и тепловыделение стали взаимосвязанными факторами, требующими раннего сотрудничества между командами программного и аппаратного обеспечения, а не передачи проекта от одной команды другой после завершения каждого этапа.
В анализе рассматривается возобновившийся интерес к так называемому совместному проектированию аппаратного и программного обеспечения, однако в условиях, отличающихся от тех, что существовали около 30 лет назад. В то время доступные технологии не могли обеспечить существенного эффекта, поэтому отрасль перешла к сборке предварительно верифицированных IP-блоков и их интеграции. Некоторые остатки прежнего подхода сохраняются и сегодня, например виртуальное прототипирование и нетактированные либо приблизительно тактированные модели SystemC, однако одних этих инструментов недостаточно для представления современных реальных рабочих нагрузок.
От разделения команд к виртуальным моделям
Steve Roddy, главный директор по маркетингу Quadric, говорит, что эпоха, когда команда аппаратного обеспечения сначала создавала проект, а затем передавала его команде встраиваемого программного обеспечения, закончилась более двух десятилетий назад. В течение последнего десятилетия виртуальное прототипирование расширилось и стало включать физические входные данные и интерфейсы датчиков в рамках того, что известно как виртуальное моделирование двойника.
Однако нынешняя задача значительно сложнее: системы стали намного больше и проектируются для рабочих нагрузок, задаваемых программным обеспечением, тогда как итерации программного обеспечения происходят быстрее разработки аппаратуры. Это превращает совместное проектирование в процесс, в котором аппаратное обеспечение постоянно догоняет программное. Arvind Srinivasan из Normal Computing считает, что уровни абстракции, исторически отделявшие части стека программного обеспечения от частей стека аппаратного обеспечения, помогали управлять сложностью и повышать эффективность и надёжность разработки, однако необходимость извлекать максимальную оптимизацию из каждого участка инструментальной цепочки, особенно для чувствительных к производительности рабочих нагрузок искусственного интеллекта, меняет этот баланс.
Решение проблемы требует более широкого понимания слова «архитектура». Оно относится не только к общей структуре системы, микроархитектуре и набору инструкций, но также включает архитектуру программного обеспечения и нагрузку, которая будет фактически выполняться. Andy Meier из Siemens EDA говорит, что выбор архитектуры должен исходить из приложения или рабочей нагрузки, а также из того, как эта нагрузка влияет на структуру системы, набор инструкций и различные находящиеся внутри неё элементы.
Новая волна специализации под влиянием энергопотребления
Анализ опирается на наблюдение Tsugio Makimoto, занимавшего должность технического директора Sony в 1990-х годах, о том, что отрасль движется волнами между специализацией и универсальностью. После периода, когда универсальные процессоры доминировали в широких сегментах, требования к вычислениям на периферии, а затем и в центрах обработки данных начали подталкивать отрасль к более специализированным решениям.
В периферийных устройствах этот стимул связан с продлением времени работы аккумулятора в пределах доступного энергетического бюджета. В центрах обработки данных плотность энергопотребления и тепловыделение стали ограничивать доступные варианты выполнения рабочих нагрузок искусственного интеллекта. В результате универсальные процессоры больше не являются единственным ответом: возникла потребность в гетерогенных центрах обработки данных, включающих различные типы микросхем, с распределением или объединением рабочих нагрузок в соответствии с характеристиками каждой микросхемы.
Patrick Coles, главный научный сотрудник Normal Computing, отмечает, что графические процессоры могут быть не последним этапом развития вычислительной техники, поскольку растёт число свидетельств расширения роли ASIC. Frank Schirrmeister из Synopsys также объясняет, что компании, управляющие сверхкрупными вычислительными системами, разрабатывают собственные микросхемы и ускорители для совместной оптимизации ключевых показателей эффективности, таких как производительность и энергопотребление, вместо того чтобы сосредотачиваться только на скорости.
Однако специализация — это не только техническое решение. Необходимо определить, какой объём специализации экономически оправдывает затраты и обеспечит ли он достаточный выигрыш в производительности и энергопотреблении. Purna Mohanty, генеральный директор SignatureIP, отмечает, что сложность спецификаций может привести к тому, что сам заказчик не сможет точно сформулировать свои требования. Это вынуждает постоянно согласовывать действия поставщика IP с потребностями клиентов, сопоставляя преимущества готовых решений с выгодами разработки новых функций.
RISC-V как пример специализации, связанной с рабочей нагрузкой
В анализе RISC-V представлен как пример движения к «микросхемам, разработанным под рабочую нагрузку». Компании создают специализированные расширения для ядер с целью повышения производительности или снижения энергопотребления, однако такие расширения требуют и других частей экосистемы, включая компиляторы и инструменты программной интеграции.
Andrea Gallo, генеральный директор RISC-V International, объясняет, что использование пользовательских инструкций возлагает на компанию полную стоимость владения, включая инструментальную цепочку и программную интеграцию. Такой подход может стать быстрым способом внедрения инноваций, но позднее компания может стремиться превратить расширение в стандарт, чтобы расходы на его сопровождение распределялись между более широкой экосистемой. В анализе также отмечается, что предварительное знание программной нагрузки позволяет адаптировать вычислительные элементы к приложению, тогда как универсальные и масштабируемые вычислительные движки остаются важными при выполнении неизвестного или меняющегося программного обеспечения.
Энергопотребление и тепловыделение расширяют область совместного проектирования
Влияние совместного проектирования не ограничивается производительностью. Инженеры-программисты могут понимать важность энергопотребления, но не всегда располагают инструментами, позволяющими заранее измерять влияние своих решений. Поэтому команды работают над предоставлением показателей энергопотребления во время разработки программного обеспечения параллельно с аппаратным обеспечением и над улучшением таких показателей, как TOPS на ватт, а не только валовое значение TOPS.
Сложность возрастает в гетерогенных приложениях, включающих несколько уровней кэш-памяти, а также другие функции, например встроенное тестирование проекта DFT, поскольку энергопотребление и производительность необходимо анализировать в рамках реалистичной нагрузки, которая также учитывает эти функции. По мере перехода анализа к тепловым характеристикам, электромагнитным помехам и мультифизическим аспектам объединение команд аппаратного и программного обеспечения становится новой единицей, к которой добавляются мультифизические расчёты.
Некоторые участники анализа допускают возможность использования искусственного интеллекта для понимания сложных взаимосвязей между аппаратным и программным обеспечением, энергопотреблением и производительностью. Однако для этого требуются данные, описывающие, сколько энергии программное обеспечение потребляло на разных уровнях — от микросхемы и сервера до стойки, транспортного средства и центра обработки данных. До появления зрелых решений на основе искусственного интеллекта может сохраняться зависимость от интеграции IP и выбора различных степеней специализации.
Обсуждение расширений матриц в RISC-V показывает, что одного решения не существует для всех вариантов использования: небольшое расширение может снизить энергопотребление, тогда как более крупный набор регистров, операций и аккумуляторов обеспечивает более высокую пропускную способность, но за счёт площади кристалла и энергопотребления. В конечном счёте выбор зависит от способа распределения ядер и ускорителей, а также от целевой рабочей нагрузки. Анализ приходит к выводу, что путь к вертикальной интеграции ещё далёк от завершения, но уже стал необходимым направлением для согласования проектирования с программным обеспечением, энергопотреблением и производительностью в современных системах.