diff --git a/Attachments/CoDesign HW-SW.png b/Attachments/CoDesign HW-SW.png new file mode 100644 index 0000000..ad17b57 Binary files /dev/null and b/Attachments/CoDesign HW-SW.png differ diff --git a/Attachments/FSM.png b/Attachments/FSM.png new file mode 100644 index 0000000..b34318b Binary files /dev/null and b/Attachments/FSM.png differ diff --git a/Attachments/RAM.png b/Attachments/RAM.png new file mode 100644 index 0000000..31f8026 Binary files /dev/null and b/Attachments/RAM.png differ diff --git a/Attachments/Автомат с магазинной памятью.png b/Attachments/Автомат с магазинной памятью.png new file mode 100644 index 0000000..3987ac8 Binary files /dev/null and b/Attachments/Автомат с магазинной памятью.png differ diff --git a/Computer Science/Computer Science.md b/Computer Science/Computer Science.md index bb7d37b..438787c 100644 --- a/Computer Science/Computer Science.md +++ b/Computer Science/Computer Science.md @@ -10,8 +10,11 @@ - [Понятие системы](Системная%20инженерия/Понятие%20системы.md) - [Компьютерные системы](Вычислительные%20системы/Компьютерные%20системы.md) - [Особенности производства аппаратуры](Системная%20инженерия/Особенности%20производства%20аппаратуры.md) +- [Hardware and Software](Системная%20инженерия/Hardware%20and%20Software.md) ## Схемотехника - [Цифровая схемотехника](Цифровая%20схемотехника/Цифровая%20схемотехника.md) +## Теория вычислений +- [Модель вычислений](Вычислительные%20системы/Модель%20вычислений.md) ## Вычислительные архитектуры - [Вычислительные архитектуры](Архитектуры/Вычислительные%20архитектуры.md) ## Инструменты low-level diff --git a/Computer Science/Вычислительные системы/Информационные системы.md b/Computer Science/Вычислительные системы/Информационные системы.md index bce5d4d..5ac394c 100644 --- a/Computer Science/Вычислительные системы/Информационные системы.md +++ b/Computer Science/Вычислительные системы/Информационные системы.md @@ -12,4 +12,4 @@ 3. Desktops - компьютеры на рабочем месте, почти у всех 4. Сервисы - решения прикладных задач, чтобы не делать их локально 5. Мобильные вычисления - повсеместно -6. Вычисления окружают нас уже повсеместно +6. Вычисления окружают нас уже повсеместно diff --git a/Computer Science/Вычислительные системы/Модель вычислений.md b/Computer Science/Вычислительные системы/Модель вычислений.md new file mode 100644 index 0000000..8df8943 --- /dev/null +++ b/Computer Science/Вычислительные системы/Модель вычислений.md @@ -0,0 +1,82 @@ +MoC - Model of Computation +1. MoC предоставляет язык для описания моделей процессов/программ/структур +2. MoC определяет возможности вычислительной машины +3. MoC характеризует, как исполняется модель (программа): возможные состояния вычислителя, их последовательность, правила переходов (детерменированные или нет) +4. MoC, обычно, минималистичны относительно реальных вычислителей +## Последовательные модели +Sequential models +Относительно просто реализуются в виде аппаратных схем +### Конечные автоматы + +![](../../Attachments/FSM.png) + +Несколько наборов состояний системы и условия переходов между ними +#### Автомат с магазинной памятью + +![](../../Attachments/Автомат%20с%20магазинной%20памятью.png) + +Например, парсеры +#### Достоинства +- Таблица состояний +- Верифицируемость переходов +- Простая реализация в схемотехнике и ПО +### Машина Тьюринга +Включает: +- Неограниченную двустороннюю ленту, разделенную на ячейки +- Устройство управления (головка записи-чтения), которое может находиться в конечном числе состояний +Управляющее устройство может: +- Перемещаться по ленте влево и вправо +- Читать и записывать в ячейки символы конечного алфавита +Машина Тьюринга +1. Не может быть реализована на практике (нет бесконечной ленты) +2. Обладает полнотой по Тьюрингу (можно реализовать любой известный алгоритм) +3. Проблема остановки +4. Данные и управление отделены +5. Ориентирована на реализацию +### Random Access Machine + +![](../../Attachments/RAM.png) +## Функциональные модели +Functional models +Представление вычислительного процесса как совокупности символов и правил их преобразований +1. Арифметика +2. Лямбда исчисление (полнота по Тьюрингу) +3. Combinatory logic +4. General recursive functions +5. Abstract rewriting systems +Программа/данные - математический объект +Возможна Тьюринг неполнота +### Лямбда исчисление +#### 4 вида выражений +1. Переменная: $x, y\ \text{и} \ z$ +2. Константа: $a,b,c$ +3. Коминация (вызов): $s\ t$ +4. Абстракция: $\lambda x.s$ +#### 3 вида редукций/подстановки +1. Переименование переменных: $\lambda u.u\ v \xrightarrow{\alpha} \lambda w.w\ v$ +2. Применение функции (подстановка аргумента): $(\lambda x.s)\ t \xrightarrow{\beta} s[t/x]$ +3. Сокращение аргумента: $\lambda u.v\ u \xrightarrow{\eta} v$ +## Параллельные модели +Системы, включающие несколько взаимодействующих процессов +- Kahn process networks - однонаправленные каналы с неограниченными буферами (+- как в гошке) +- Actor model - отправка сообщений в "почтовые ящики" (как в Erlang) +- Discrete Event - события в заданные моменты времени (цифровые схемы) +- Multi-Thread Model - общая память (как в джаве) +- Synchronous Data Flow - синхронизированные потоки данных +## Близкие понятия +### Парадигмы программирования +Способ классификации языков программирования на основе их функций. Языки могут относиться к нескольким парадигмам +### Стиль программирования +Это набор правил или рекомендации, используемых при написании исходного кода компьютерной программы +## Применение на практике +1. Computer Science. Формальные модели +2. Дизайн ЯПов +3. Ограничение творческого порыва, контроль сложности +4. Модель-ориентированная инженерия +## Model-Driven Engineering +1. Разработка через моделирование предметной области +2. Автоматическая генерация кода из моделей +3. Повышение уровня абстракции при разработке +4. Сокращение разрыва между требованиями и реализацией +5. Улучшение коммуникации между заинтересованными сторонами +6. Снижение сложности разработки масштабных систем \ No newline at end of file diff --git a/Computer Science/Системная инженерия/Hardware and Software.md b/Computer Science/Системная инженерия/Hardware and Software.md new file mode 100644 index 0000000..121b86e --- /dev/null +++ b/Computer Science/Системная инженерия/Hardware and Software.md @@ -0,0 +1,82 @@ +- **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. От прикладной задачи + - От области (библиотеки) + - От модели вычислений (принципов организации вычислительного процесса: параллелизм, конвейризация, оптимизации и тд) diff --git a/Computer Science/Системная инженерия/Особенности производства аппаратуры.md b/Computer Science/Системная инженерия/Особенности производства аппаратуры.md index 929f245..ddbc08e 100644 --- a/Computer Science/Системная инженерия/Особенности производства аппаратуры.md +++ b/Computer Science/Системная инженерия/Особенности производства аппаратуры.md @@ -23,7 +23,7 @@ Различают: - одно- и двухслойные платы - многослойные платы -## Виды монтажа компонентоы +## Виды монтажа компонентов - Выводной (в отверстие) - Поверхностный - Встроенный @@ -94,6 +94,7 @@ 1. Разные частоты процессоров -> разные SKU из одного wafer 2. Core Single / Core Duo / Core Quad -> одинаковый кристалл, разное число активных ядер 3. Intel Pentium / Celeron -> урезанные Core с отключенными кэшем и функциями +## Реальный мир ### Производство 1. Логистика 2. Склады @@ -107,4 +108,13 @@ 1. Амортизация. Выход оборудования из строя 2. Необходимость физического доступа 3. Особенности среды эксплуатации -4. Долгосрочные эффекты \ No newline at end of file +4. Долгосрочные эффекты +### Сложность изменений +1. Чем совершеннее технология, тем сложнее внести изменения +2. Физический контакт +### Варианты замены устаревшей аппаратуры +1. Перепроектирование на новой элементной базе +2. Модульная организация. Стандартные интерфейсы. Имитация старых систем +3. Виртуализация + +Как решаем проблемы аппаратуры - [Hardware and Software](Hardware%20and%20Software.md) \ No newline at end of file