- **Hardware** производится один раз и дальше не меняется, не корректируется - **Software** адаптируется под задачу, легко изменяется - Разделены по времени/специальности: разные дисциплины и разные индустрии ## Как разделить HW/SW 1. Определяем возможности "конфигурирования": - Заложенные при проектировании - интерфейс задокументирован и стабилен (ISA, API) - Незадокументированные (нецелевое использование, дыра в безопасности) - используется то, что интерфейсом не гарантировано но работает 2. Фиксируем интерфейс "конфигурирования" - Набор механизмов - Модель вычислений - Интструментальные средства ## Конфигурирование [РЭА](Особенности%20производства%20аппаратуры.md#Монтаж%20радиоэлектронной%20аппаратуры%20(РЭА)) 1. Макетные платы 2. Печатные платы: перерезать, навесить дорожку 3. Джамперы 4. Платы расширения - Вычислительные платы - Порты ввода/вывода - Dendy (память программ и графическая память) ## Реконфигурация. Коммутация ### Реконфигурируемые архитектуры Архитектуры, где задача отображается в структуру вычислителя (пространственно, spatial), а не выполняется потоком инструкций. В отличие от ASIC, это структура может быть перенастроена после изготовления 1. Программируемые логические интеграционные схемы 2. Крупногранулярные реконфигурируемые массивы (CGRA) 3. Выстраивание людей для расчета таблиц ## Программное управление 1. Данные (программы) определяют то, какой прикладной процесс будет разворачиваться 2. Количество уровней исполнения/интерпретации данных ограничено только целесообразностью **Временные вычисления** - одна и та же схема последовательно проходит через разные состояния во времени ## Аппаратное обеспечение Электронные и механические части вычислительного устройства, входящие в состав системы. Включает: компьютеры и логические устройства, внешние устройства и диагностическую аппаратуру, энергетическое оборудование ## Программное обеспечение (ПО) Совокупность программ и программных документов необходимых для эксплуатации. Позволяет аппаратному обеспечению выполнять функции ## Аппаратура и ПО != Hardware и Software 1. Программная/аппаратная составляющая слабо связаны с SW/HW: - Minix - ОС встроена в Intel ME/CSME - Микропрограммное обеспечение 2. Часто аппаратурой называют то, что работает как аппаратное обеспечение - Virutal-Computer, Virtual-Network, Virtual-Volume, etc - Реконфигурируемые архитектуры (ПЛИС, CGRA) 3. Разделение на SW/HW зависит в большей степени от способа использования - Hardware - тяжело/долго/дорого поменять - Software - легко/быстро/дешево поменять ## Плюсы и минусы ПО/SW ### Часть плюсов 1. Быстрый цикл разработки, CI/CD и тд 2. Меняем у пользователя 3. Пользователь - Beta-тестер ### Часть минусов 1. Высокая сложность программ 2. Безопасность 3. Культура разработки. Верификация ## Типовое HW/SW проектирование ### Проектируем аппаратуру - Система команд и вычислительные механизмы - Интерфейсы управления аппаратурой - Цифровая схематехника, система команд ### Пишем программу - Прикладная задача - Язык и библиотеки - Система команд и вычислительные механизмы (виртуальная память, прерывания) - Интерфейсы управления аппаратурой ### Проблемы 1. Излишне шаблонное проектирование 2. Высокие интеграционные риски 3. Последовательная разработка (сроки) ## Hardware/Software CoDesign Мы проектируем систему 1. Разработка интерфейса HW/SW (системы команд) 2. Разработка моделей HW/SW, для получения обратной связи 3. Разработка HW/SW, верификация моделей 4. Заменая моделей на HW/SW ![](../../Attachments/CoDesign%20HW-SW.png) В итоге: сокращение цикла разработки ## Как выбирать инструменты для разработки Software 1. От доступного Hardware и инструментальных средств 2. От доступной команды разработки 3. От прикладной задачи - От области (библиотеки) - От модели вычислений (принципов организации вычислительного процесса: параллелизм, конвейризация, оптимизации и тд)