Проектирование процессоров с расширенными возможностями толерантности к ошибкам

Введение: императив для отказоустойчивых процессоров CISC

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

Понимание процессоров CISC: сложность как меч с двойным краем

Архитектура CISC отдает приоритет богатому набору инструкций, где одна инструкция может инкапсулировать несколько низкоуровневых операций, таких как доступ к памяти, арифметика и поток управления. Классические примеры включают семейство x86 и многие устаревшие конструкции мэйнфреймов. Плотность набора инструкций позволяет программистам кратко выражать сложные операции, уменьшая размер кода и требования к пропускной способности памяти. Однако эта сложность стоит дорого: микроархитектура должна декодировать и последовательности команд переменной длины, управлять многочисленными режимами адресации и обрабатывать сложные зависимости трубопровода. Каждый дополнительный путь выполнения, уровень иерархии кэша и спекулятивный движок вводит больше потенциальных точек отказа. В отказоустойчивых конструкциях каждый транзистор, защелка и межядерная шина становятся источником уязвимости, которая должна быть затвердевать без ущерба для производительности.

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

Пейзаж угрозы: источники и последствия ошибок

Неисправности в процессорах CISC можно в целом разделить на три категории: аппаратные неисправности (постоянные дефекты или износ), переходные неисправности (однособытийные нарушения, вызванные космическими лучами или альфа-частицами)] (постоянные неисправности (зависимые от времени или температуры сбои). В аэрокосмическом применении, например, радиационно-индуцированные расстройства одного события (SEUs) могут переворачивать биты в регистровых файлах, кэшах или блоке декодирования инструкций, что приводит к бесшумной коррупции данных или сбоям системы. Финансовые системы, которые обрабатывают миллионы транзакций ежедневно, не могут терпеть даже одну необнаруженную ошибку, которая может исказить реестры или вызвать ошибочные сделки. Экономические и последствия безопасности приводят к необходимости надежных механизмов обнаружения ошибок и восстановления, которые работают с минимальным воздействием на пропускную способность.

Проверенные стратегии повышения отказоустойчивости в проектах CISC

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

Коды обнаружения и исправления ошибок

На самом базовом уровне элементы памяти и пути передачи данных могут быть защищены с помощью паритета или более мощных кодов коррекции ошибок (ECC). Коррекция одноошибочных ошибок, коды обнаружения двойных ошибок (SECDED) теперь стандартны во многих системах кэша и памяти. Для процессоров CISC кэш команд, отвечающий за подачу инструкций с переменной длиной, извлекает выгоду из ECC для предотвращения неправильного кодирования. Аналогично, файл реестра, часто самый большой массив в ядре, может быть защищен с помощью ECC или с паритетом плюс механизм повторного использования. Ключевое дизайнерское решение заключается в том, исправлять ли ошибки в строке (добавляя задержку) или маркировать ошибки и запускать откат. Многие современные ядра x86 используют ECC в кэшах L2 / L3 и полагаются на архитектуру машинной проверки (MCA) для сообщения об исправленных ошибках в операционную систему для профилактического обслуживания.

Избыточная архитектура и пространственное увольнение

Пространственное резервирование копирует критические блоки траектории передачи данных и сравнивает выходы. Классический подход - тройное модульное резервирование (TMR), где три идентичных блока исполнения голосуют за результат. TMR может переносить любой отказ одного блока и распространен в авионике космических аппаратов. В процессорах CISC TMR обычно применяется к целым и плавающим блокам исполнения, блоку генерации адресов и блоку загрузки / хранения. Схема голосования на этапе фиксации гарантирует, что только одобренные большинством результаты обновляют архитектурное состояние. Накладные расходы примерно в три раза превышают площадь и мощность одного модуля, хотя дизайнеры могут снизить стоимость, применяя TMR только к наиболее критическим подблокам (например, машина состояния предиктора ветви или буфер переупорядочения).

Увольнение двойных модулей (DMR)

Менее дорогой альтернативой TMR является двухмодульная избыточность с обнаружением ошибок, но без мгновенной коррекции. Два идентичных ядра выполняют одни и те же инструкции в шаге блокировки, а компаратор отмечает любое несоответствие. При обнаружении неисправности система может вернуться к предыдущей контрольной точке, повторно выполнить инструкцию или, если неисправность является постоянной, инициировать изящное отключение. Lockstep широко используется в критически важных для безопасности автомобильных контроллерах (ISO 26262 ASIL-D) и в некоторых высоконадежных серверных процессорах. Накладные расходы составляют около 100% площади для дублирующего ядра плюс шашки, но поскольку ядра работают на той же частоте, производительность не ухудшается при нормальной работе.

Контрольные точки и восстановление Rollback

Аппаратные контрольные точки периодически захватывают последовательное состояние процессора (регистрации, счетчик программ, метаданные когерентности кэша) в защищенную область памяти. Когда обнаружена неисправность - будь то ECC, паритет или несоответствие в шаге блокировки - система быстро возвращается к последней известной хорошей контрольной точке и повторно выполняется с этой точки. Задача для архитектур CISC - быстро захватывать большое количество спекулятивных состояний (записи буфера заказа, таблицы предикторов ветвей, буферы хранения) с минимальными накладными расходами производительности. Такие методы, как ], ветвь контрольной точки и ] выборочное восстановление записывают только неспекулятивное архитектурное состояние и отбрасывают спекулятивные обновления. Время отката может быть уменьшено с помощью механизма обратного выполнения, который воспроизводит операции в обратном порядке, но это добавляет сложность. Контрольная точка часто сочетается с ECC для создания двухслойной защиты: ECC исправ

Аппаратное голосование и византийская толерантность к ошибкам

Для систем, которые должны работать при наличии произвольных (византийских) неисправностей, аппаратное голосование может быть расширено за пределы простого голосования большинства. Техники, такие как трипл-голосователи конструкции, которые включают проверку согласованности или N-модульное избыточность с маскированием ошибок, находятся в процессорах космического уровня, таких как RAD750 и серия LEON. Эти процессоры обычно включают отказоустойчивый контроллер памяти, который может скрабировать ошибки и шинный арбитр, который изолирует неисправные модули. Характер CISC этих процессоров (многие из них получены из SPARC или x86 ISA) требует тщательной обработки сложных инструкций, которые могут изменять состояние машины неатомными способами.

Программные и программно-ориентированные методы

Только аппаратная защита не может покрыть все сценарии неисправностей. Программная отказоустойчивость (SBFT) использует вставленные компилятором проверки, избыточные вычисления и утверждения для обнаружения и исправления ошибок. Например, исходный код может быть дублирован во время компиляции, каждая версия выполняется на отдельных ядрах и сравниваются результаты. В процессорах CISC операционная система или гипервизор могут реализовать обработчики исключений , чтобы записывать и восстанавливать от исправимых ошибок, сообщаемых аппаратным обеспечением. Кроме того, методы терпимое к ошибкам кодирование - такие как алгоритмическая отказоустойчивость (ABFT) для матричных операций - могут применяться к конкретным рабочим нагрузкам. Сочетание аппаратных ECC и программных проверок обеспечивает экономически эффективный способ достижения высокого покрытия без штрафа за область полного TMR.

Адаптивное и прогнозное управление ошибками

Современные процессоры CISC начинают включать модели машинного обучения, которые предсказывают подверженные ошибкам области чипа на основе метрик температуры, напряжения и старения. Небольшая встроенная нейронная сеть может контролировать задержку критических путей и регулировать тактовую частоту или напряжение, чтобы избежать сбоев времени. Этот проактивный подход, часто называемый , осведомленный о возрасте, планирование , может продлить срок полезного использования процессора в критически важных приложениях. Когда обнаружена ошибка (например, через ошибку четности в кэш-линии), система может пометить эту область как деградировавшую и переназначить ее на запасной блок аппаратного обеспечения, метод, известный как замена запасных ячеек или самоисцеление . Комбинирование адаптивного масштабирования напряжения с кодами коррекции ошибок дает устойчивую конструкцию, которая отменяет производительность только при необходимости.

Дизайн-соображения: балансирование надежности, производительности и стоимости

Ни один метод отказоустойчивости не является оптимальным для каждого приложения. Инженеры, проектирующие процессоры CISC, должны взвесить критичность системы против допустимого увеличения площади вымирания, энергопотребления и задержки. Для зонда в глубоком космосе площадь и мощность находятся на уровне премии, но покрытие неисправностей должно приближаться к 100% - поэтому TMR и библиотеки, закаленные радиацией, оправданы. На сервере с высокочастотной торговле ограничения производительности являются строгими; для сохранения задержки на низком уровне могут быть выбраны порог или контрольно-пропускные пункты с очень короткими окнами отката. Следующие факторы имеют первостепенное значение:

  • Охват по умолчанию: Процент неисправностей, которые механизм может обнаружить или исправить. Паритет охватывает только однобитные ошибки; ECC покрывает больше, но добавляет задержку. TMR маскирует почти все аппаратные ошибки, но не может защитить от ошибок проектирования.
  • Накладные расходы на производительность: Дополнительные этапы трубопровода для голосования, задержка коррекции ECC или задержка контрольного пункта. В процессоре CISC этап декодирования уже является узким местом; добавление проверок ошибок может ухудшить время цикла.
  • Мощность и тепловое воздействие: Избыточная логика увеличивает динамическую мощность, а сами схемы избирателей могут стать горячими точками. Требуется тщательное планирование пола и тикание часов простаивающих избыточных модулей.
  • Проверяемость и техническое обслуживание: Недостаточно устойчивые конструкции должны включать встроенный самотест (BIST) для проверки работоспособности избыточных единиц. Возможность изоляции неисправного блока и замены запасного имеет решающее значение для долгосрочных миссий.
  • Модульность: Модульная конструкция позволяет применять методы отказоустойчивости только к уязвимым подмодулям. Например, целое число исполнительных блоков может быть трипликативным, в то время как FPU остается только с ECC, потому что ошибки с плавающей запятой могут быть менее критичными в данной рабочей нагрузке.

Пространство компромисса может быть формализовано с использованием анализа неисправностей (FTA) и блок-схем надежности. Симуляционные среды, такие как FreeRTOS или gem5, могут быть расширены с помощью впрыска неисправностей для оценки покрытия перед изготовлением.

Пример: неисправно-толерантный x86-производный процессор для авионики

Ведущим примером процессора CISC, разработанного с повышенной отказоустойчивостью, является BAE Systems RAD5545, используемый в космическом корабле НАСА Orion.Хотя он основан на архитектуре PowerPC (часто описываемой как RISC, его микроархитектура разделяет многие сложности, подобные CISC), подобный подход используется в закаленных от излучения процессорах x86, таких как SC-200 (Extreme Engineering Solutions) и Intel Atom E-series (ECC-enabled) [[ECC-enabled]] [[ECC-enabled]] для военных беспилотников. Эти процессоры реализуют тройную модульную избыточность внутри исполнительных блоков, ECC на всех кэшах и основной памяти и блокирование двухъядерных кластеров. Они также включают в себя сторожевые таймеры и силовые самотесты (POST)

Будущие направления: самоисцеление и устойчивость, управляемая ИИ

Следующее поколение отказоустойчивых процессоров CISC будет включать в себя диагностические датчики на чипе и алгоритмы машинного обучения, которые могут прогнозировать предстоящие сбои и динамически перенастраивать аппаратное обеспечение. Исследователи из NASA и DARPA изучают структуры, которые используют встроенный контроллер восстановления — небольшой затвердевший микроконтроллер — для мониторинга здоровья каждого крупного блока. Когда обнаружена неисправность (например, ветвь предиктора, которая стала нестабильной), контроллер может переназначить поврежденные инструкции на запасной блок, отрегулировать глубину трубопровода или даже полностью отключить неисправный блок и ухудшить набор инструкций. Это автономное поведение аналогично иммунной системе организма, и оно обещает продлить срок службы миссии от месяцев до десятилетий.

Другим перспективным направлением является интеграция противораспространяющей волновой логики (форма асинхронного дизайна), которая естественным образом сопротивляется переходным процессам одномерных событий. В сочетании с укладкой 3D-чипов, где запасные ядра находятся на отдельном кристалле, будущие процессоры CISC могут достичь почти нулевого простоя даже в самых суровых радиационных средах. Кроме того, рост ядер процессоров с открытым исходным кодом, таких как VexRiscv , позволяет академическим и промышленным командам экспериментировать с методами отказоустойчивости на уровне RTL, ускоряя инновации.

Заключение

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

Для дальнейшего чтения см. документ IEEE о отказоустойчивости в суперскалярных процессорах CISC и ESA для радиационно закаленной электроники .