# Архитектура компьютера ## Лекция 6 ## HW/SW. CoDesign. PBD. MoC/1 Пенской А.В., 2026 --- Как решаем проблемы аппаратуры? --- ## Hardware / Software
Hardware
производится один раз и дальше не меняется, не корректируется (или очень редко/дорого). Твёрдая и неизменная часть.
Software
адаптируется под задачу, легко изменяется. Лёгкая и изменяемая часть.
```text ┌─────────────────────────┐ │ Software │ ← адаптируется под задачу └────────────┬────────────┘ │ фиксированный │ интерфейс ┌────────────▼────────────┐ │ Hardware │ ← не меняется после производства └─────────────────────────┘ ``` Разделены по времени / специальности: - Разные дисциплины - Разные индустрии
---- ## Как разделить HW/SW? 1. Определяем возможности "конфигурирования": - заложенные при проектировании, интерфейс задокументирован и стабилен (ISA, API, формат битстрима), - незадокументированные (нецелевое использование, дыра в безопасности) — используется то, что интерфейсом не гарантировано, но фактически работает. 1. Фиксируем интерфейс "конфигурирования": - Набор механизмов. - Модель вычислений (подробнее потом). - Инструментальные средства. Зависит от технологии, этапа жизненного цикла, вида конфигурации. --- ### Конфигурирование РЭА
1. Макетные платы 1. Печатные платы: перерезать, навесить дорожку 1. Джамперы 1. Платы расширения: - вычислительные платы, - порты ввода/вывода, - Dendy (память программ и графическая память).
   
---- #### Реконфигурация. Коммутация
Реконфигурируемые архитектуры
архитектуры, где задача отображается в структуру вычислителя, а не выполняется потоком инструкций. В отличие от ASIC, эта структура может быть перенастроена после изготовления.
**Пространственные/spatial вычисления** 1. выстраивание людей для расчёта таблиц 1. программируемые логические интегр. схемы (ПЛИС, FPGA) 1. крупногранулярные реконфигурируемые массивы (CGRA)
 
---- #### Программное управление
Временные вычисления
одна и та же схема (процессор) последовательно проходит через разные состояния во времени.
1. Данные (программы) определяют то, какой прикладной процесс будет разворачиваться. 1. Количество уровней исполнения/интерпретации определяется целесообразностью.

--- ## Что такое Software (и Hardware)? ```text На днях я обедал с подругой, которая не разбирается в компьютерах. Она спросила меня: "Что такое Software?" Казалось бы, это простой вопрос для тех людей, кто зарабатывает на жизнь созданием и разработкой программного обеспечения, но мне пришлось хорошенько подумать, чтобы дать объяснение, которое она смогла бы понять: Software -- это та часть компьютерной системы, которая приспосабливает технику к различным видам использования. Например, на одном и том же компьютере, но с разным программным обеспечением, вы можете играть в игру, рассчитывать налоги, писать письмо или книгу, или получать ответы на вопросы о свиданиях. Затем я объяснил ей, что, к сожалению, в начале истории развития компьютеров этой функции дали название "программное обеспечение (software)", в отличие от "аппаратного обеспечения (hardware)". Её следовало бы назвать "гибкое программное обеспечение (flexibleware)". К сожалению, термин "soft" многие интерпретировали как "лёгкий (easy)", что совершенно неверно. Не заблуждайтесь. То, что мы называем "hardware", должно было называться "easyware", а то, что мы называем "software", можно было бы назвать "difficultware". ``` [Gerald M. Weinberg, What is Software?](http://secretsofconsulting.blogspot.com/2017/12/what-is-software.html?m=1) ----
### "Плюсы" Software 1. Быстрый цикл разработки, CI/CD. 1. Меняем у пользователя. 1. Пользователь — Beta-тестер. 1. Огромная сложность и низкая цена ошибки (иногда). 
### "Минусы" Software 1. Высокая сложность программ. 1. Безопасность (вредоносные изменения, исполнение вредоносного кода). 1. Культура разработки. Верификация. 
---
Аппаратное обеспечение
электронные и механические части вычислительного устройства, входящие в состав системы. Включает: компьютеры и логические устройства, внешние устройства и диагностическую аппаратуру, энергетическое оборудование.
Программное обеспечение (ПО)
совокупность программ и программных документов, необходимых для эксплуатации. Позволяет аппаратному обеспечению выполнять функции.
---- ### Аппаратура и ПО $\neq$ Hardware и Software 1. Программная/аппаратная составляющие слабо связаны с SW/HW - Minix — одна из самых популярных ОС (встроена в Intel ME/CSME). - Микропрограммное обеспечение. 2. Часто аппаратурой называют то, что работает как аппаратное обеспечение. - Virtual-Computer, -Network, -Volume, etc. - Реконфигурируемые архитектуры (ПЛИС, CGRA) 3. Разделение на SW/HW зависит в большей степени от **способа использования** элементной базы. - Hardware — то, что тяжело/долго/дорого поменять; - Software — то, что легко/быстро/дёшево поменять. --- ### Вершина или дно конфигурирования?
Было: 1. Вы пришли за машиной. 1. Вы выбрали комплектацию без/с подогревом сидений. 1. Вы заплатили за машину. 1. Вы эксплуатируете машину. 1. Если передумали — установили подогрев. *А зачем поменяли?*
Стало: 1. Вы пришли за машиной. 1. Вы заплатили за машину без подогрева (но он есть!). 1. Вы эксплуатируете машину. 1. Вы можете включить по подписке (month/lifetime). 
Notes: снижение затрат на логистику, универсализация производства, гибкость для потребителя. ---
software (intensive) system
A system made up of software, hardware, and data that provides its primary value by the execution of the software. (OMG Essence)
- software ~ программное обеспечение - hardware ~ аппаратное обеспечение - data ~ какие-то необходимые для работы данные, являющиеся частью системы **Как делается Hardware для Software Intensive System?** --- ## Типовое HW/SW проектирование
*Трек 1*. Проектируем hardware: - элементная база и вычислительные механизмы - интерфейсы упр. HW и система команд - байткод и интерпретатор *Трек 2*. Пишем software: - моделируем домен - реализуем прикладные алгоритмы - адаптируем и проверяем *Интеграция HW/SW*
Проблемы: 1. последовательная разработка (HW $\rightarrow$ SW) 1. или интеграционные риски; 1. излишне шаблонное проектирование. 
---- ### Hardware/Software CoDesign
1. Разработка интерфейса 1. Разработка совместной HW/SW модели 1. Верификация модели 1. Отображение/перенос модели на HW и SW 1. Верификация через модели и совместную симуляцию 1. Интеграция

---- ### Hardware/Software CoDesign.
Скорость разработки  --- ### От заказной разработки к платформам
Заказная разработка — хорошо, но очень дорого. 1. **CoDesign**: граница HW/SW — переменная. 1. **Platform-Based Design**: граница — контракт. Как формируется платформа: - "Хорошо получилась" — будет платформой - Разрабатываем платформу сразу
 (Platform-Based Design) "Контракт" развязывает руки.
---- #### Уровневая организация
естественный способ организации вычислительных систем Примеры: 1. Уровневый архитектурный стиль (Layered Style) 1. OSI Model 1. Уровни организации вычислительного процесса Количество уровней — десятки.

**Вопрос**: Есть ли принципы формирования платформ? ---- #### Принципы формирования платформ
Метасистемный переход
концепция, предложенная Валентином Турчиным, описывающая процесс перехода системы на новый уровень организации, становясь метасистемой. В этом процессе несколько систем интегрируются в одну более сложную, обладающую новыми свойствами.
(Турчин В.Ф. Феномен науки: Кибернетический подход к эволюции)
Принцип развития иерархических систем Седова
закономерности и механизмы, по которым развиваются сложные иерархические системы. Ключевой принцип:
ограничение разнообразия
на нижележащем уровне для
получения разнообразия
на вышележащем уровне.
---- #### Разделение на уровни (Disaggregation) 
- Интегрированные решения
(in-house). - Высокий уровень интеграции и оптимизации.
- Уровни разделены по компаниям/специальностям/индустриям. - Эффект масштаба и конкуренция.
--- ## Как выбирать инструменты для разработки Software?
1. от доступного Hardware и инструментальных средств 1. от доступной команды разработки 1. от прикладной задачи: - от доступных библиотек и инструментов - от модели вычислений
--- ## Модель вычислений
Model of Computation (MoC)
это правила, управляющие взаимодействием, коммуникацией и потоком управления набора компонентов.
 [Источник](https://www.researchgate.net/publication/337394921_Pathways_to_cellular_supremacy_in_biocomputing)
MoC определяет: 1. язык для описания вычислений; 2. возможности вычислителя; 3. как исполняется спецификация: состояния, процессы, переходы.
---- ### MoC. Близкие понятия
Парадигмы программирования
это способ классификации языков программирования на основе их функций. Языки могут относиться к нескольким парадигмам.
Язык программирования
конкретная нотация + реализация (компилятор/интерпретатор) для одной или нескольких парадигм. Инструмент разработчика.
Вычислительная платформа
многократно используемая совокупность вычислительных элементов и механизмов.
MoC: 1) обычно минималистичны и
2) имеют строгую математическую базу. --- ## Классификация MoC 1. Последовательные модели 2. Функциональные модели 3. Параллельные модели --- ### MoC. Последовательные модели
Sequential models
вычисление как единственная цепочка переходов глобального состояния: шаги строго упорядочены, в каждый момент выполняется ровно один.

1. **Finite State Machines** (FSM) 1. **Pushdown Automaton** (PDA) 1. **Turing Machines** 1. **Random Access Machines** 1. von Neumann Machine
---- #### Конечные автоматы
Finite State Machine, FSM
состояния вычислителя заданы известным конечным множеством. Переход выбирается по состоянию и входному символу. Результат: состояние и выходной символ.

1. Позволяет описывать сложную логику работы. 1. Таблица состояний, верифицируемость переходов. 1. Простая реализация в схемотехнике и ПО.
---- #### Автомат с магазинной памятью
Pushdown Automaton, PDA
FSM +
стек неограниченной глубины
. Переход выбирается по состоянию, входному символу и символу на вершине стека. Результат: состояние, вершина стека и выходной символ.

1. Распознаёт вложенные конструкции: скобки, выражения, JSON. 1. Память неограниченная, но доступна только вершина. 1. Основа синтаксического разбора (LL/LR) и стека вызовов. 1. Два стека вместо одного — полнота по Тьюрингу.
---- #### Машина Тьюринга
Turing Machine
конечное устройство управления +
неограниченная лента
с произвольным доступом. Переход выбирается по состоянию и символу под головкой. Результат: состояние, записанный символ и сдвиг головки.
1. не может быть реализована 1. полнота по Тьюрингу 1. проблема остановки 1. разделение данных и управления 
---- #### Random Access Machine
Random Access Machine, RAM
конечная программа +
память, адресуемая по номеру ячейки
. Переход — следующая инструкция, если она сама не изменила счётчик команд.

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