Роль Cisc в встраиваемых системах: преимущества и проблемы
Понимание архитектуры CISC в глубине
Архитектура комплексных наборов инструкций (CISC) представляет собой один из основополагающих подходов к проектированию процессоров, корни которого прослеживаются до 1970-х годов и ранних мэйнфреймов. Основная философия CISC заключается в том, чтобы позволить одной машинной инструкции выполнять несколько операций низкого уровня одновременно, таких как загрузка значения из памяти, выполнение арифметической операции и хранение результата. Это намерение дизайна было обусловлено необходимостью преодолеть семантический разрыв между языками программирования высокого уровня и базовым оборудованием, упрощая компиляторы и уменьшая количество инструкций, необходимых для выполнения данной задачи.
Для встраиваемых систем, где часто ограничены ресурсы памяти и обработки, подход CISC может быть особенно привлекательным. Ранние встроенные процессоры, такие как Intel 8051 и семейство Motorola 68000, являются классическими примерами архитектур CISC, которые нашли широкое применение в промышленном управлении, автомобильных системах и бытовой электронике. Возможность кодировать сложные операции в меньшем количестве байтов напрямую переведена на меньшие размеры программ, что является критическим преимуществом, когда память на чипе измерялась в килобайтах.
Важно понимать, что CISC — это не монолитная категория, а скорее спектр вариантов дизайна. Процессоры, такие как семейство x86, используемые практически во всех настольных и серверных ПК, являются наиболее заметными примерами CISC, но встроенные варианты, такие как 80186 и 386EX, также видели обширное развертывание. Характеристики отличительной черты включают в себя переменную длину команд, богатый набор режимов адресации и инструкций, которые могут напрямую манипулировать памятью, не требуя явной загрузки и операций хранения.
В отличие от вычисления набора инструкций с уменьшенным набором инструкций (RISC), в котором подчеркивается небольшой, высоко оптимизированный набор инструкций одного цикла, CISC позволяет повысить плотность кода. Это означает, что для любого заданного алгоритма компилируемый машинный код для процессора CISC обычно будет занимать меньше памяти, чем эквивалентный код для процессора RISC. Этот компромисс между сложностью каждой инструкции и общим размером кода имеет глубокие последствия для дизайна встроенной системы, влияя на все, от выбора чипа памяти до бюджетов питания.
Чтобы оценить нюансы, рассмотрим простую задачу, такую как добавление двух чисел, хранящихся в памяти и сохранение результата. Процессор RISC может потребовать три инструкции: загрузить первое значение в регистр, загрузить второе значение в другой регистр, выполнить добавление, а затем сохранить результат в памяти. Процессор CISC потенциально может выполнить это с помощью одной инструкции: . Это сокращение количества циклов извлечения из памяти и уменьшает количество следов программы, но сама инструкция CISC может занять больше тактовых циклов для декодирования и выполнения внутри.
Роль CISC во внедренных системах
Встроенные системы охватывают огромное разнообразие приложений, от простых датчиков на основе микроконтроллеров до сложных блоков управления автомобильным двигателем и сетевой инфраструктуры. Архитектура CISC вырезала конкретные ниши в этом ландшафте, где их особые сильные стороны соответствуют требованиям приложений.
Наследие систем и промышленного управления.] Многие системы промышленной автоматизации, программируемые логические контроллеры (ПЛК) и измерительные приборы были разработаны в 1980-х и 1990-х годах с использованием процессоров CISC, таких как 8051, Z80 или 68HC11. Эти системы часто имеют многолетний срок службы, и замена архитектуры процессора потребует полного перепроектирования как аппаратного, так и программного обеспечения. В таких случаях дальнейшее использование микроконтроллеров на основе CISC обусловлено требованиями совместимости и высокой стоимостью ресертификации. Кодовые базы для этих систем часто пишутся на языке сборки, оптимизированном для конкретного набора инструкций CISC, что делает переход к архитектурам RISC непрактичным.
Приложения, требующие высокой плотности кода.] В глубоко встроенных системах, где затраты на память доминируют в балансе материалов, способность вписывать больше функциональности в меньшее количество байтов флэш-памяти или ПЗУ является решающим преимуществом. Например, чувствительные к затратам потребительские продукты, такие как пульты дистанционного управления, интеллектуальные термометры и базовые датчики IoT, часто используют 8-битные или 16-битные микроконтроллеры CISC от таких поставщиков, как Microchip (семейство PIC16/18) или Atmel (AVR, который на самом деле является модифицированным RISC, но имеет некоторые функции, подобные CISC, в доступе к памяти). Меньший кодовый след позволяет производителям использовать более дешевый микроконтроллер с меньшим объемом встроенной памяти, снижая общую стоимость системы.
Автомобильная и аэрокосмическая промышленность имеет долгую историю с архитектурами CISC, в частности семейством Motorola 68000 (Freescale ColdFire) и семейством Infineon C166. Эти процессоры обеспечивают надежную производительность для задач управления в реальном времени, таких как управление впрыском топлива, тормозными системами и управлением передачей. Сложные режимы адресации и инструкции по управлению битами, доступные на этих процессорах, позволяют эффективно реализовывать алгоритмы управления, которые должны реагировать на входы датчиков в рамках строгих временных ограничений. Аналогично, некоторые аэрокосмические приложения используют закаленные радиацией процессоры CISC для управления полетом и авионики, где наследие программного обеспечения и доказанная надежность перевешивают преимущества новых архитектур.
Специфические секторы рынка.] Архитектура 8051, впервые представленная Intel в 1980 году, остается удивительно популярной десятилетия спустя. По оценкам, миллиарды 8051-совместимых микроконтроллеров отправляются каждый год, встроенные во все, от игрушек и электроинструментов до медицинских устройств и сетевого оборудования. Эта устойчивая актуальность обусловлена сочетанием факторов: огромная экосистема инструментов разработки, ядра интеллектуальной собственности, доступные для реализации FPGA, и огромный пул опытных инженеров. Набор инструкций хорошо понятен, и компиляторы были высоко оптимизированы в течение десятилетий для создания чрезвычайно эффективного кода для этой архитектуры.
Гибридные и кросс-архитектурные среды.] Современные встроенные системы все чаще используют гетерогенный подход, сочетая первичный процессор со специализированными сопроцессорами. Нередко можно найти систему с процессором приложений на основе RISC, работающим под управлением операционной системы высокого уровня наряду с микроконтроллером на основе CISC, обрабатывающим в режиме реального времени ввода-вывода и низкоуровневым управлением. Это разделение труда позволяет дизайнерам использовать сильные стороны каждой архитектуры, где они обеспечивают наибольшую ценность.
Преимущества CISC для встроенных приложений
Хотя в последние годы архитектура RISC получила значительную долю рынка, особенно в высокопроизводительных и маломощных мобильных приложениях, CISC остается конкурентоспособной и даже выгодной в конкретных встроенных сценариях.
Уменьшение размера кода и эффективности памяти
Это, пожалуй, самое значительное и количественное преимущество CISC во встроенных системах. Поскольку каждая инструкция может инкапсулировать несколько операций, общее количество инструкций, необходимых для реализации функции, ниже. Эмпирические исследования показали, что плотность кода CISC может быть на 15-30% лучше, чем сопоставимые архитектуры RISC для типичных встроенных приложений. В крупном продукте, где микроконтроллер стоит доллары за единицу, сбрасывание даже 2 КБ требуемой флэш-памяти может привести к значительно более низким затратам компонентов. Кроме того, уменьшенный размер кода означает более быстрое время загрузки программы из внешней памяти и более низкое энергопотребление во время выполнения инструкций, поскольку требуется меньше доступа к памяти.
Простота программирования и эффективность компилятора
Для разработчиков, работающих на ассемблере или с компиляторами, ориентированными на архитектуры CISC, модель программирования часто воспринимается как более интуитивно понятная. Инструкции отображают более непосредственно на высокоуровневые языковые конструкции, такие как сложные арифметические выражения или манипуляции с структурой данных. Это может снизить когнитивную нагрузку на программиста и уменьшить вероятность тонких ошибок. Кроме того, зрелые компиляторы для архитектур, таких как x86 и 8051, были усовершенствованы на протяжении десятилетий для выполнения сложных оптимизаций, таких как выбор инструкций и распределение регистров, которые используют всю мощь сложного набора инструкций. Для проектов с жесткими сроками наличие надежных, высоко оптимизированных наборов инструментов компилятора может значительно сократить время разработки.
Совместимость и зрелость экосистем
Архитектура CISC часто поддерживает высокую степень обратной совместимости между поколениями. Архитектура x86, например, сохраняет совместимость с программным обеспечением, написанным для оригинального процессора 8086. В то время как такая экстремальная обратная совместимость менее распространена во встроенном мире, семьи, такие как 8051 и 68HC11, поддерживают совместимость в течение десятилетий. Эта стабильность бесценна для долгоживущих продуктов, которые требуют обновления программного обеспечения или замены аппаратного обеспечения через годы после первоначального развертывания. Инженеры могут использовать существующие библиотеки кода, программные стека и реализации протоколов, не портируя их на новую архитектуру, экономя значительные инженерные усилия. Зрелость экосистемы также означает, что инструменты отладки, операционные системы в реальном времени и промежуточное ПО легко доступны.
Богатые адреса режимов и Bit манипуляции
Встроенные системы часто должны взаимодействовать с аппаратными регистрами, битами управления в портах ввода-вывода и манипулировать структурами данных на байтовом или даже битовом уровне. Архитектура CISC превосходит в этой области, предоставляя множество режимов адресации, таких как косвенная адресация с предварительным или пост-приращением/декретированием, индексированной адресацией и относительной адресацией. Инструкции могут напрямую тестировать и устанавливать отдельные биты, не требуя последовательности операций маски и сдвига. Для приложений управления в реальном времени, где важен каждый цикл, эта возможность может уменьшить количество команд и улучшить детерминистское время. Возможность выполнять такие операции, как (Bit Set F) или (Bit Clear F) на 8051 в одной инструкции является конкретным примером того, как CISC может упростить аппаратное управление низкого уровня.
Проблемы и ограничения во встроенной среде
Несмотря на неоспоримые преимущества, архитектуры CISC представляют собой значительные проблемы, которые необходимо тщательно взвешивать на этапе проектирования. Эти ограничения часто подталкивают дизайнеров к альтернативам RISC, особенно для приложений с ограниченными возможностями или высокой производительностью.
Потребление энергии и тепловое управление
Внутренняя сложность процессоров CISC напрямую влияет на их профиль мощности. Блок декодирования инструкций должен обрабатывать инструкции переменной длины с несколькими операндами и режимами адресации, требуя больше логических затворов и больше тактовых циклов для интерпретации каждой инструкции. Это приводит к более высокому динамическому потреблению энергии по сравнению с более простым ядром RISC, работающим на той же тактовой частоте. В устройствах с батарейным питанием, таких как носимые устройства, медицинские имплантаты или беспроводные датчики, этот дополнительный расход энергии может значительно сократить срок службы батареи. Кроме того, более высокая рассеивающая мощность генерирует больше тепла, что может быть проблематичным в герметичных корпусах или термоограниченных средах. В то время как современные процессы изготовления и методы управления мощностью смягчили этот разрыв, фундаментальное архитектурное различие остается недостатком для CISC в приложениях с низким энергопотреблением.
Пропускная способность команд и сложность пипелирования.] Характер команд CISC с переменной длиной усложняет проектирование эффективных командных трубопроводов. В процессоре RISC с инструкциями фиксированной длины этапы извлечения и декодирования могут работать в очень предсказуемом режиме, что позволяет использовать глубокие трубопроводы и высокие тактовые частоты. В процессорах CISC этап декодирования должен определять длину каждой инструкции, прежде чем он сможет продолжиться, вводя переменную задержку. Это затрудняет достижение высокой пропускной способности команд и реализацию спекулятивного исполнения или внепорядкового планирования. В то время как современные процессоры x86 высокого класса преодолевают эти проблемы с помощью массивных транзисторных бюджетов и сложных методов микроархитектуры, эти решения невыполнимы для чувствительных к затратам встроенных микроконтроллеров. В результате встроенные ядра CISC обычно имеют более мелкие трубопроводы и более низкие тактовые частоты, чем их аналоги RISC.
Сложность и стоимость инструментов разработки
В то время как доступность зрелых наборов инструментов является преимуществом, сложность этих наборов инструментов также может быть недостатком. Компиляторы, ориентированные на архитектуры CISC, должны обрабатывать обширный набор инструкций с многочисленными режимами адресации, комбинациями операндов и побочными эффектами. Создание оптимального кода, который эффективно использует доступные инструкции, является сложной проблемой, а выход неоптимального компилятора может свести на нет многие преимущества CISC по размеру кода. В некоторых случаях разработчики прибегают к оптимизированному вручную коду сборки для достижения желаемой производительности или плотности кода, что увеличивает время разработки и затраты на обслуживание. Кроме того, высококачественные компиляторы, отладчики и интегрированные среды разработки для нишевых целей CISC могут быть дороже, чем часто бесплатные или недорогие инструменты, доступные для популярных архитектур RISC, таких как ARM Cortex-M.
Масштабируемость и производительность потолка
По мере того, как встроенные приложения становятся все более сложными, требуя большей вычислительной мощности для решения таких задач, как обработка цифровых сигналов, вывод машинного обучения или сложные сетевые стеки, потолок производительности традиционных архитектур CISC становится ограничением. Архитектура RISC обычно лучше масштабируется с Законом Мура, достигая более высоких тактовых частот и лучшей энергоэффективности за тактовый цикл. Многие встроенные ядра CISC застревают на умеренных тактовых частотах (от десятков до сотен мегагерц), в то время как ядра RISC в аналогичных оболочках мощности могут достигать гигагерцовых частот. Для приложений, которые требуют как высокой производительности, так и низкой мощности, баланс сильно наклоняется в пользу RISC. Появление ядер серии ARM Cortex-M, которые предлагают сочетание плотности кода (через наборы команд Thumb / Thumb-2) и энергоэффективности, напрямую бросило вызов традиционному оплоту CISC на рынке микроконтроллеров.
Сложность дизайна и стоимость кремния
Проектирование и производство процессорного ядра CISC требует больше инженерных усилий и большей площади матрицы, чем сопоставимое ядро RISC. Логика управления более сложная, кодировщик команд больше, а процесс проверки более сложный. Для производителя чипов это приводит к более высоким неповторяющимся затратам на проектирование (NRE) и более высокой стоимости единицы из-за большей площади кремния. На высококонкурентном встроенном рынке, где маржа тонкая, эти факторы стоимости могут быть решающими. Большинство новых микроконтроллеров в 32-битном пространстве теперь используют ядра ARM Cortex-M или другие архитектуры RISC (такие как RISC-V) именно потому, что они предлагают более низкий путь затрат для достижения требуемой производительности.
CISC vs. RISC: правильный выбор для встраиваемых систем
Решение между CISC и RISC редко бывает простым бинарным выбором; оно требует оценки конкретных ограничений и требований целевого приложения. Следующие критерии обеспечивают основу для принятия этого архитектурного решения.
Ограничения памяти и требования к плотности кода
Когда память на чипе чрезвычайно ограничена (например, 2 КБ или меньше флэш-памяти), архитектуры CISC часто имеют явное преимущество. Более высокая плотность кода позволяет более сложному прошивочному программному обеспечению вписываться в бюджет памяти. Это распространено в ультра-низкозатратных 8-битных микроконтроллерах, используемых в одноразовых или больших объемах потребительских товаров. Если память более распространена или может быть расширена внешне, преимущество плотности кода CISC становится менее важным, а преимущества производительности и мощности RISC могут иметь приоритет.
Цели энергетического бюджета и энергоэффективности
Для систем с батарейным питанием, где каждый микроампер имеет значение, энергоэффективность имеет первостепенное значение. Архитектура RISC обычно достигает лучшей энергоэффективности, потому что они могут выполнять заданную задачу за меньшее количество тактовых циклов на более низкой тактовой частоте или потому, что они могут быстрее входить в состояние глубокого сна после завершения своей работы. Процессоры CISC, как правило, имеют более высокое активное энергопотребление, хотя они могут компенсировать, получая меньше инструкций из памяти. Общая энергия на задачу является показателем, который имеет значение, и это можно определить только путем тщательного сопоставления с фактическим кодом приложения.
Реальная производительность и детерминизм
Жесткие приложения в реальном времени, такие как системы управления двигателем или системы промышленной безопасности, требуют детерминированного времени отклика. Процессоры CISC с переменным временем выполнения инструкций могут усложнить анализ времени выполнения в наихудшем случае (WCET). Процессоры RISC с фиксированной длиной инструкций и предсказуемым поведением трубопровода, как правило, легче анализировать и сертифицировать для критически важных приложений. Однако некоторые встроенные процессоры CISC имеют специализированные аппаратные функции, такие как интегрированные таймеры и контроллеры прерываний, которые обеспечивают детерминированные ответы независимо от архитектурной сложности.
Наследие программного обеспечения и совместимость экосистем
Если проект основывается на существующей кодовой базе или нуждается в интерфейсе с устаревшим оборудованием, выбор архитектуры может быть в значительной степени предопределен. Стоимость и риск переноса проверенного прошивки на новую архитектуру должны быть сопоставлены с потенциальными преимуществами. Во многих промышленных и аэрокосмических приложениях программное обеспечение представляет собой значительные инвестиции, а поддержание совместимости с архитектурами CISC является наиболее практичным путем вперед.
Экспертная группа по развитию
Набор навыков команды разработчиков — это практическое соображение. Если у команды есть глубокий опыт сборки 8051 или PIC и знание нюансов набора инструкций CISC, этот опыт может быть множителем производительности. И наоборот, если команде удобнее работать с инструментальными цепочками ARM Cortex-M и моделью программирования RISC, архитектура RISC может привести к более быстрой разработке и меньшему количеству дефектов. Современные языки высокого уровня и компиляторы могут абстрагироваться от многих архитектурных деталей, но для прошивки низкого уровня знакомство с разработчиком все еще имеет значение.
Практические соображения для инженеров
Инженеры, которым поручено выбрать архитектуру процессора для встроенной системы, должны подходить к решению системно, используя объективные данные, а не архитектурную догму.
Сравнительный анализ с помощью кода представителя. Лучший способ оценить компромиссы — это компилировать репрезентативный код приложения как для архитектур-кандидатов, так и для измерения размера кода, времени выполнения и предполагаемого энергопотребления. Многие поставщики микроконтроллеров предоставляют оценочные платы, комплекты для разработки программного обеспечения и инструменты оценки мощности. Запуск фактических эталонов, а не полагаясь на синтетические показатели, дает наиболее надежное сравнение. EEMBC бенчмарки обеспечивают стандартизированные рабочие нагрузки для встроенных процессоров и могут служить в качестве полезного справочника.
Баланс Краткосрочные и долгосрочные затраты. Первоначальная стоимость материалов является только одним фактором. Учитывая общую стоимость владения, которая включает в себя затраты на NRE, затраты на инструментальные средства, усилия по разработке программного обеспечения, затраты на тестирование и сертификацию и риски цепочки поставок, рисует более полную картину. Немного более дорогой процессор, который позволяет быстрее разрабатывать и проще обслуживать, может быть более экономичным выбором по жизненному циклу продукта.
План масштабируемости и будущие требования. Выбор архитектуры процессора часто блокируется для всего поколения продукта. Учитывая, где продукт может развиваться с точки зрения функций, требований к производительности и подключения, можно предотвратить необходимость дорогостоящей миграции архитектуры в середине жизненного цикла. Выбор масштабируемого семейства архитектуры, которое предлагает устройства с различными размерами памяти и периферийными наборами, позволяет расширять линейку продуктов без полного редизайна.
Использование современных компиляторов.] Качество компиляторов для встроенных архитектур CISC значительно улучшилось. Использование последних версий компиляторов и изучение флагов оптимизации может значительно уменьшить размер кода и повысить производительность. Многие поставщики компиляторов предлагают руководства по оптимизации, характерные для их инструментальных цепочек и целевых процессоров. Инвестирование времени в понимание вывода компилятора и настройку исходного кода может принести существенные преимущества без каких-либо аппаратных изменений.
Будущие тенденции и развивающиеся архитектуры
Ландшафт встраиваемых вычислений не является статическим, а традиционная дихотомия CISC против RISC становится все более размытой, поскольку архитекторы заимствуют методы из обоих лагерей.Понимание этих тенденций ценно для инженеров, планирующих будущее.
Пальцевой/Пальцевой-2 и Компрессорные наборы инструкций.] Архитектура ARM, изначально чистая конструкция RISC, представила набор инструкций для увеличения плотности кода. Инструкции для большого пальца шириной 16 бит, предлагая сокращения размера кода, аналогичные CISC, сохраняя при этом энергоэффективность ядра RISC. Пальцевый-2 расширил это до набора инструкций переменной длины (16-битные и 32-битные инструкции), достигая плотности кода, конкурентоспособной с лучшими архитектурами CISC. Этот гибридный подход демонстрирует, что индустрия сходится на решениях, которые захватывают преимущества обеих парадигм.
RISC-V Расширения и пользовательские инструкции.] Открытый стандарт RISC-V архитектуры позволяет дизайнерам добавлять пользовательские инструкции, адаптированные к их конкретной области применения. Эта возможность позволяет некоторые из преимуществ CISC, такие как выполнение сложных операций с одной командой, в ином случае простой RISC фреймворк. Для встроенных систем со специализированными рабочими нагрузками, такими как криптографическая обработка или синтез датчиков, пользовательские инструкции RISC-V могут достичь производительности и плотности кода преимущества, традиционно связанные с CISC.
Адаптивные и гетерогенные вычисления.] Вместо того, чтобы единая процессорная архитектура была оптимальной для всех задач, современные встроенные системы все чаще объединяют несколько элементов обработки. Система на чипе может включать в себя процессор приложений RISC, микроконтроллер CISC для управления в реальном времени и специализированные аппаратные ускорители для рабочих нагрузок DSP или AI. Этот гетерогенный подход позволяет каждому компоненту преуспеть в своих назначенных задачах. Решение архитектуры процессора таким образом становится проблемой оптимизации на уровне системы, а не одним выбором компонентов.
Эмуляция и виртуализация. Для унаследованных приложений, где совместимость программного обеспечения с архитектурами CISC является обязательной, но аппаратное обеспечение модернизируется, эмуляция и виртуализация предлагают путь вперед. Запуск эмуляторов набора команд CISC на современных процессорах RISC может продлить срок службы устаревшего прошивки, используя при этом энергоэффективность и производительность нового оборудования. Этот подход используется в некоторых аэрокосмических и промышленных приложениях в качестве мостовой технологии.
Отраслевые органы, такие как IEEE, продолжают публиковать исследования по сравнению архитектуры процессоров и новым методологиям проектирования, предоставляя ценные ресурсы для инженеров, оценивающих эти развивающиеся тенденции.
Заключение
Архитектура CISC сыграла основополагающую роль в индустрии встроенных систем и продолжает оставаться актуальным и практичным выбором для многих приложений. Преимущества уменьшения размера кода, простоты программирования, богатых режимов адресации и обратной совместимости являются ощутимыми преимуществами, которые напрямую влияют на стоимость продукта, время разработки и надежность системы. В таких областях, как промышленный контроль, автомобильные системы и чувствительные к затратам потребительские устройства, эти преимущества часто диктуют выбор процессора.
Однако проблемы более высокого энергопотребления, сложности трубопроводов, накладных расходов на инструментальную цепочку и масштабируемости производительности одинаково реальны. Для приложений, где энергоэффективность имеет решающее значение, где требуется высокая пропускная способность или где команда разработчиков начинает с чистого листа, архитектуры RISC и их современные эволюции предлагают убедительные альтернативы. Ключ к правильному выбору лежит в строгом анализе: бенчмаркинг с фактическим кодом, моделирование потребления энергии, оценка общих системных затрат и рассмотрение долгосрочных дорожных карт продукта.
Внедренные системы ландшафт в конечном счете прагматичный. Лучшая архитектура является тот, который отвечает требованиям продукта при наименьших общих затратах, учитывая как инженерные усилия и расходы на компоненты. Поскольку архитектуры продолжают развиваться и сходятся, с методами из CISC и RISC смешиваются в инновационных способов, инструментарий инженера только становится богаче. Понимая фундаментальные компромиссы, представленные этими архитектурными философиями, дизайнеры могут принимать обоснованные решения, которые приводят к успешным продуктам по всему спектру встроенных приложений.