83 lines
6.6 KiB
Markdown
83 lines
6.6 KiB
Markdown
- **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
|
|
|
|

|
|
|
|
В итоге: сокращение цикла разработки
|
|
## Как выбирать инструменты для разработки Software
|
|
1. От доступного Hardware и инструментальных средств
|
|
2. От доступной команды разработки
|
|
3. От прикладной задачи
|
|
- От области (библиотеки)
|
|
- От модели вычислений (принципов организации вычислительного процесса: параллелизм, конвейризация, оптимизации и тд)
|