Добавлена лекция 3 по архитектуре компьютера

This commit is contained in:
LeterZP
2026-09-26 00:36:51 +03:00
parent 368c7de9de
commit 8a40990ea5
2 changed files with 277 additions and 0 deletions
@@ -1,6 +1,7 @@
### Лекции ### Лекции
- [Вычислительные платформы](Вычислительные%20платформы.md) - [Вычислительные платформы](Вычислительные%20платформы.md)
- [Информационные и управляющие системы. Понятия системы и архитектуры](Информационные%20и%20управляющие%20системы.%20Понятия%20системы%20и%20архитектуры.md) - [Информационные и управляющие системы. Понятия системы и архитектуры](Информационные%20и%20управляющие%20системы.%20Понятия%20системы%20и%20архитектуры.md)
- [Еще не компьютеры. Реле](Еще%20не%20компьютеры.%20Реле.md)
- (и тд) - (и тд)
### Ссылки ### Ссылки
@@ -0,0 +1,276 @@
## Содержание
- [Решение задач компьютеров без компьютеров](#Решение%20задач%20компьютеров%20без%20компьютеров)
- [Отдельные операции](#Отдельные%20операции)
- [Таблицы значений](#Таблицы%20значений)
- [Устройства](#Устройства)
- [Механизмы](#Механизмы)
- [Сравнение устройств и механизмов](#Сравнение%20устройств%20и%20механизмов)
- [Современность](#Современность)
- [Информационные системы](#Информационные%20системы)
- [Эффективное решение](#Эффективное%20решение)
- [Достоинства](#Достоинства)
- [Практика](#Практика)
- [Системы управления](#Системы%20управления)
- [Жаккард](#Жаккард)
- [Проблема создания станка](#Проблема%20создания%20станка)
- [Жаккардовый ткацкий станок](#Жаккардовый%20ткацкий%20станок)
- [Программное обеспечение](#Программное%20обеспечение)
- [Другие примеры](#Другие%20примеры)
- [Поиск кратчайшего пути на взвешенном графе](#Поиск%20кратчайшего%20пути%20на%20взвешенном%20графе)
- [Задача коммивояжера](#Задача%20коммивояжера)
- [Приставка Dendy и пистолет](#Приставка%20Dendy%20и%20пистолет)
- [Реле и релейные диаграммы](#Реле%20и%20релейные%20диаграммы)
- [Электрическое реле](#Электрическое%20реле)
- [Релейная диаграмма](#Релейная%20диаграмма)
- [Управление двигателем](#Управление%20двигателем)
- [Практика применения реле](#Практика%20применения%20реле)
- [Реле и состояние](#Реле%20и%20состояние)
- [RS-триггер](#RS-триггер)
- [От реле к транзистору](#От%20реле%20к%20транзистору)
## Решение задач компьютеров без компьютеров
Несмотря на то, что сейчас компьютеры являются неотъемлемой частью нашей жизни, основные задачи, которые они решают, схожи с задачами, которые ставились еще несколько столетий назад. И все же, люди в прошлом такие задачи решали даже без компьютеров.
Еще до создания компьютеров существовали примитивные вычислительные алгоритмы. Такие с одной стороны простые, но в тоже время сложные, алгоритмы могли выполнять те же задачи без электрических схем и компьютеров, используя при этом различные способы.
### Отдельные операции
Самым примитивным методом для вычисления являются простейшие устройства, способные вычислять заранее заданные функции для заранее заданных параметрах (обычно такое задание включает либо точное количество используемых значений, либо какой-то промежуток значений). Но даже они не оставались неизменными со временем - из изначального вычисления с помощью дискретных и цифровых величин ([таблиц](#Таблицы%20значений)) осуществлялся постепенный переход к аналоговым [устройствам](#Устройства), а позже возвращение обратно к цифровым [механизмам](#Механизмы).
#### Таблицы значений
Таблицы значений отражают в себе какую-то зависимость, которую можно представить в виде математической функции.
>**Математическая функция** - отображение множества A в множество B.
Обратно, если входные и выходные значения математической функции счетные, то ее можно представить в виде таблицы значений.
Примерами таких таблиц могут служить [таблицы истинности](https://ru.wikipedia.org/wiki/Таблица_истинности), [таблицы Брадиса](https://ru.wikipedia.org/wiki/Таблицы_Брадиса) (таблицы, по которым можно найти значения тригонометрических функций и логарифмов по входным значениям) и тому подобное.
Но у таких таблиц есть существенная проблема - они занимают слишком много места. К примеру, таблица для сложения 32-битных чисел потребовала бы $2^{32} \cdot 2^{32} = 2^{64}$ строк, что определенно не поместится ни в какую память.
#### Устройства
В данном случае, устройства воплощают в себе таблицу значений в виде какой-либо шкалы зависимости, а значит поиск решения из вычисления превращается в простое сопоставление необходимых значений.
Такие на первый взгляд примитивные устройства могут выполнять различные операции, к примеру умножение, деление, возведение в степень, взятие корня, вычисление логарифма, поиск значений тригонометрических или даже гиперболических функций.
В качестве примера таких устройств могут служить [логарифмическая линейка](https://ru.wikipedia.org/wiki/Логарифмическая_линейка?ysclid=muh4ib08v3154892960) (простая конструкция из нескольких линеек со специальной шкалой, находит нужное значение при правильном сопоставлении полученных данных и взятии другого значения из места для нужного ответа; с помощью такой линейки можно проводить даже операцию деления), [номограмма](https://ru.wikipedia.org/wiki/Номограмма?ysclid=muh36utp8i349343873) для умножения (три шкалы, две из них расположены симметрично, образуя параболу, а третья с другим масштабом идет из точки пересечения шкал ровно вверх; при проведении прямой между двумя умножаемыми значениями такая линия будет пересекать третью линию ровно в нужном значении) и тому подобное.
#### Механизмы
Механизмы в данном случае представляют из себя специальные механические устройства, с помощью которых производятся вычисления. В основном, вычисление на таких устройствах происходит алгоритмически: для каждого возможного шага предусматривается специальный алгоритм, выполняемый автоматически на основе начальных значений.
Такие механизмы способны выполнять простейшие операции, такие как сложение, вычитание, умножение и деление. При этом при каждом таком действии механизм автоматически переносит необходимые значения между разрядами. Но количество разрядов в таком механизме фиксировано.
Основным примером такого механизма является [арифмометр](https://ru.wikipedia.org/wiki/Арифмометр?ysclid=muh4mtud3e581075263), но могут быть и другие примеры.
#### Сравнение устройств и механизмов
В качестве объектов для сравнения возьмем ранее введенные арифмометр и логарифмическую линейку. Сравнивать будем по нескольким критериям, таким как тип входящих и выходящих значений, рост области определения и размера, а также время расчета.
Для линейки как входные, так и выходные величины являются аналоговыми. Это дает ряд преимуществ: при правильном вычислении границы между точными значениями почти стираются, и появляется возможность находить значения с очень высокой точностью. Но у этого есть и обратная сторона: никто не отменял человеческий фактор, а значит при вычислениях с помощью таких инструментов необходимо учитывать как погрешность ввода и вывода, так и погрешность определенного измерительного экземпляра (ведь линейка может погнуться и показывать значения неправильно) и точность измеряющего. У арифмометра таких недостатков нет: его значения всегда точны до степени, установленной используемыми алгоритмами, и результат не зависит не от человека, ни от конкретного экземпляра. Но отсутствуют и плюсы, присущие линейке: точность вводимых и выводимых значений строго ограниченна.
У линейки рост размера происходит очень быстро - чем больше увеличивается область определения, тем больше значений необходимо обработать, и тем точнее должно быть деление. В то же время размер арифмометра изменяется довольно медленно - он замедляется с каждым увеличением роста области определения на новый разряд.
Время вычисления результата с помощью линейки почти не изменяется - всего-то надо сопоставить несколько значений, время в данном случае больше зависит от самого измеряющего, нежели от самой линейки. Но вот у арифмометра все иначе - рост времени расчета зависит от вычисляемой функции, и если функция будет достаточно сложна, то время такого вычисления составит довольно внушительное число.
#### Современность
Несмотря на то, что данным технологиям уже много лет, они все еще существуют в качестве концепций, но в слегка измененном виде. К примеру, в современных компьютерах таблицы истинности применяются в цифровых схемах, таблицы предрассчитанных значений в [cache](https://ru.wikipedia.org/wiki/Кэш), warm cache и [memoization](https://en.wikipedia.org/wiki/Memoization), а также любые алгоритмические расчеты.
### Информационные системы
В [информационных системах](Информационные%20и%20управляющие%20системы.%20Понятия%20системы%20и%20архитектуры.md#Информационные%20системы) задачи представляют из себя в основном большое количество вычислений с таким же большим количеством промежуточных значений.
Рассмотрим пример решения данной задачи, взяв за основу задачу о расчете артиллерийских таблиц. Представим, что у нас есть артиллерийские орудия, но для того чтобы их правильно использовать, необходимо правильно рассчитать все параметры и данные окружения для точного выстрела. При этом нам доступны только простейшие счетные устройства в ограниченном количестве; математики, физики и другие ученые; а также офицерский корпус и грамотные солдаты.
Данная задача, как вычислительная, характеризуется многократным расчетом сложных формул с большим количеством операций для различных входных параметров. Поэтому использование наивного решения (просто заставить людей производить расчеты по заданным формулам) здесь не подойдет. При таком решении очень высока вероятность возникновения различных проблем, таких как ошибка операции (человек из-за постоянного изменения контекста перепутал операции, к примеру, сложения и умножения), ошибка промежуточных значений (опечатки, изменения в примитивного вида регистровом файле), арифметические ошибки, а также склонность людей к сокрытию ошибок (легче просто подогнать ответ под результат, чем пересчитывать снова).
#### Эффективное решение
В данной задаче, архитектурой самого эффективного решения будет являться реконфигурируемый потоковый вычислитель. Иными словами, представим формулу как орграф, в котором вершины - необходимые вычислительные операции, а стрелки - перемещение промежуточных значений от одной операции к другой. На каждую вершину поставим человека, который будет производить определенную операцию, получая на вход несколько значений с других операции (или, если он первый в цепи, то просто извне системы) и выдавая результат операции в качестве выходного значения.
У такого решения есть довольно много положительных моментов. Основными среди них являются параллельное исполнение независимых операций в графе (несколько вершин, у которых известны все входные значения, могут не дожидаясь других вершин начать вычисления), конвейеризация расчетов (как только вершина выдала результат, можем на вход подать другие значения, что устраняет бесполезное простаивание) и возможность двоирования (вместо одного графа построить несколько одинаковых и соединить их в общей точке для сравнения результатов; если результаты не совпадают, можно отправить данные на перерасчет; это обеспечивает системе надежность и правильность значений).
#### Достоинства
То есть, можем отдельно выделить ряд достоинств эффективного решения в более общем виде. Во-первых, рост производительности, обеспечиваемый параллельным исполнением независимых операций и конвейеризацией расчетов. Во-вторых, рост надежности, обеспечиваемый высоким уровнем специализации узлов (и, соответственно, их простотой) и минимальной вариативностью процесса. В-третьих, возможность реконфигурации вычислителя под новую задачу.
#### Практика
Все вышеперечисленные механизмы так или иначе используются в современных информационных системах. Примерами такого использования могут быть процессоры общего назначения (использующие параллелизм инструкций и конвейеризацию), специализированные процессоры (использующие специализацию узлов и реконфигурируемость (в таких технологиях, как [FPGA](https://ru.wikipedia.org/wiki/Программируемая_пользователем_вентильная_матрица?ysclid=muh6vra9o9775540320) и [CGRA](https://en.wikipedia.org/wiki/Coarse-grained_reconfigurable_array))) или распределенные системы (использующие дублирование и сверку результатов (репликация, консенсус)).
### Системы управления
В [системах управления](Информационные%20и%20управляющие%20системы.%20Понятия%20системы%20и%20архитектуры.md#Управляющие%20системы) задачи в основном представляют из себя создание алгоритма для управления физической установкой. При этом системы управления глубоко специализированы, поэтому под каждую отдельную систему управления разрабатывается свой алгоритм работы.
В качестве простейшего примера рассмотрим жаккардовый ткацкий станок. Жаккардовый ткацкий станок считается первой программно-управляемой машиной. Но как его создали?
#### Жаккард
>[Жаккард](https://ru.wikipedia.org/wiki/Жаккардовая_ткань?ysclid=muh7v5kyci692504189) - это такой вид ткани с узором, на обратной стороне которого можно увидеть "инвертированный рисунок". Полотно такой такни состоит из вертикальных нитей, которые все равномерно натянуты и ничем друг от друга не отличаются, и горизонтальных нитей разных цветов, которые могут идти как сверху, так и снизу каждой отдельной вертикальной нити, что и формирует сам узор (то есть если нить продета сверху - виден цвет нити, иначе - цвет самого полотна).
#### Проблема создания станка
Для того, чтобы изготовить данное полотно вручную, существует специальный алгоритм действий. Для начала, все вертикальные нити сортируются на две категории: те, которые должны быть сверху следующей протягиваемой горизонтальной нити, и те, которые должны быть снизу. Далее между ними пропускается челнок с натягиваемой горизонтальной нитью ("гребенка") и проходит через все вертикальные нити. Этот процесс повторяется до тех пор, пока полотно не будет готово. Узор при этом может быть как уникальным (что не подлежит автоматизации), так и цикличным.
Очевидно, продевать каждую нить таким образом вручную очень трудозатратно. Поэтому необходимо найти такое решение, которое поможет эти затраты снизить и автоматизировать процесс.
В данном случае проблема, которую необходимо решить, довольно очевидна. Необходимо разработать такой способ автоматизации, который мог бы самостоятельно и нерегулярно разделять вертикальные нити на верхние и нижние. "Гребёнка" в данном случае не работает.
#### Жаккардовый ткацкий станок
Тогда, для того чтобы решить проблему, необходимо заменить "гребенку" другим механизмом, с помощью которого можно было бы динамически менять поднятые вертикальные нити и управлять этим процессом.
В жаккардовом ткацком станке гребенка заменена на специальную систему крючков на пружинах с поворотным механизмом. При простом нажатии на крючок он цепляет нить и поднимает ее вверх. Но если нажать сильнее и провернуть, то крючок отпускает нить и поднимается без нее. Но это все еще не полная автоматизация, ведь на крючки все равно приходится нажимать вручную.
#### Программное обеспечение
Автоматизация в данном станке построена на ленте из пластин. Каждая пластина в ленте имеет отверстия в нужных местах, что позволяет "нажимать" на все необходимые для узора крючки разом (такая пластина называется [перфокартой](https://ru.wikipedia.org/wiki/Перфокарта)). Объединив такие пластины в ленту, можно получить уникальный узор, заданный программой из соединения пластин.
Таким образом, можно составить алгоритм работы станка. Для начала происходит нажатие пластиной на крючки (что делит крючки на верхние и нижние). Далее пропускается челнок с нитью, создающий узор. После продевания нити все крючки нажимаются и проворачиваются, что гарантирует отпускание нитей с крючков. А дальше этот процесс повторяется для каждой следующей пластины, которые продвигаются при сдвиге ленты.
Полученную программу вполне можно назвать программным обеспечением станка. Такой станок в работе можно посмотреть на [видео](https://www.youtube.com/watch?v=K6NgMNvK52A).
### Другие примеры
#### Поиск кратчайшего пути на взвешенном графе
Самым распространенным методом решения данной задачи является [метод Дейкстры](https://ru.wikipedia.org/wiki/Алгоритм_Дейкстры). Данный алгоритм имеет сложность $O(n^2)$ и является вполне универсальным для разных начальных условий задачи. Помимо этого, для него также имеется огромное количество оптимизаций и эвристических приемов для сокращения вычислительной сложности.
Но существует также альтернативное решение. Для него изготавливается натуральная модель взвешенного графа, в котором вершины заменяются на контактные площадки, а ребра - на проводники с сопротивлением, обратно пропорциональным весу ребра. После завершения конструкции на интересующие вершины графа подается питание. В итоге наблюдается цепочка либо сгоревших, либо сильно нагревшихся проводников, и эта цепочка и будет ответом на задачу. Площадь такого решения - $O(n+e)$; время - $O(n)$, при скорости около скорости света.
#### Задача коммивояжера
В этой задаче необходимо найти самый выгодный маршрут через указанные города с посещением их хотя бы по одному разу и возвратом в исходный город. Данная задача NP-полная, то есть точный перебор всех вариантов растет факториально от числа городов $O(n!)$. Также данную можно решить, используя методы динамического программирования, но это тоже довольно затратно - $O(n^22^n)$.
Тем не менее, существуют и другие, иногда немного абсурдные способы. К примеру, в [данной статье](https://royalsocietypublishing.org/rsos/article/5/12/180396/87638/Remarkable-problem-solving-ability-of-unicellular) приведен пример с использованием амебы в качестве коммивояжера. Из-за особенностей амебы, а именно того, что она любит питательную среду, не любит свет и стремится занять максимальную площадь, ей можно манипулировать и направлять так, чтобы она выбирала наилучший путь. По данным статьи, при таком методе заявлены линейный рост скорости поиска от количества городов $O(n)$. Но, кончено, у данного способа есть ограничения, ведь амеба может искать кратчайший маршрут только при количестве городов не более 8 штук.
#### Приставка Dendy и пистолет
В 1990-ых годах, когда появилась приставка Dendy, для нее отдельно продавался пистолет, с помощью которого можно было стрелять в уток на экране телевизора. При этом пистолет безошибочно определял, куда направлен пистолет, и регистрировал попадания почти без потерь. Однако в то время это было настоящее чудо техники, ведь сами пистолеты стоили недорого, а телевизоры были старыми.
Но в чем был секрет такой технологии? На самом деле, все достаточно просто. Экран CRT рисовал кадр построчно лучом, а не выводил его сразу целиком. При выстреле игра на мгновение гасила экран до чёрного, затем вырисовывала все цели по очереди белыми точками. Фотодиод в стволе пистолета засекал момент вспышки; по времени этого момента относительно начала кадра консоль вычисляла, в какую именно цель (и примерно куда на экране) целился игрок. Координата определялась не пространственно, а через время — ещё один пример вычисления "не совсем компьютером", как и остальные примеры этого раздела.
## Реле и релейные диаграммы
### Электрическое реле
Само по себе реле состоит из нескольких элементов: катушка (на которую подается напряжение), ферромагнитный стержень (на который намотана катушка), основание (на котором закреплена катушка), неподвижные контакты (которые реле по своей сути должно замыкать), подвижный якорь (который находится сверху от катушки; на одном конце скреплен с основанием, а на другом имеет контакты; при подаче сигнала на катушку притягивается и замыкает неподвижные контакты реле) и пружина (которая не дает подвижному якорю упасть на катушку без напряжения).
Принцип использования реле достаточно прост. С двух сторон от реле находятся вход и выход, а само реле между ними является ключом для сети. При подаче напряжения на катушку реле замыкает ключ, и сеть соединяется. Если же ток перестает течь, реле возвращается в нормальное состояние. У реле есть всего два состояния: это 0 и 1 (то есть, "нет питания" и "есть питание"). При этом важно помнить, что в схемах не существует сигналов, есть только уровни, которые эти сигналы "создают", поэтому говорить о сигналах в электрических сетях неправильно.
Существует множество других видов реле, таких как механические, пневматические, тепловые, оптические, акустические, магнитные и так далее. Но мы будем рассматривать только электрические реле, потому что они наиболее простые среди всех и ближе всего к тому, что будет изучаться в дальнейшем.
На схемах обозначать реле будем в квадратных скобках \[ ]. При этом простое реле \[ ] называется нормально разомкнутым реле (или повторителем), а реле с палочкой \[\\] - нормально замкнутым реле (и обозначает логическое "НЕ" на схемах).
#### Релейная диаграмма
Чаще всего релейные диаграммы описывают схемы включения оборудования в релейные стойки.
В релейных диаграммах будем также использовать другие специфические обозначения. Обозначим нормально неактивный актуатор через ( ), а нормально активные актуатор - через (\\) (актуаторы - это буквально те же ключи, только их цель заключается не в изменении прохождения через них сигнала, а отправки этого сигнала куда-нибудь в другое место). Также на диаграммах отдельно будем подписывать линии, по которым передается ток и подписывать их буквой L.
Далее опишем стандартные логические операторы через релейные схемы. В качестве примера будем использовать дверной мотор, который может открывать или закрывать дверь.
Первая схема - логическое "И".
```
L1 L2
o o
| Logical AND |
| |
+--[ ]--------[ ]-----------( )---------+
| Key 1 Key 2 Door motor |
| |
```
На схеме видно, что дверь открывается (то есть течет ток) только тогда, когда оба релейных переключателя замкнуты.
Второй опишем схему для логического "НЕ".
```
L1 L2
o o
| Logical NOT |
| |
+--[ ]----------------------(\)---------+
| Key 1 Door motor |
| |
```
По схеме видно, что дверь всегда открыта, кроме того момента, когда переключатель замкнут.
Третьей опишем схему для логического "ИЛИ".
```
L1 L2
o o
| Logical OR |
| |
+----+--[ ]--------------+--( )---------+
| | Exterior unlock | Unlock |
| | | |
| +--[ ]--------------+ |
| Interior unlock |
| |
```
На схеме видно, дверь будет открыта как в случае, когда нажат внутренний переключатель, так и в случае, когда нажат внешний переключатель (и когда оба тоже).
#### Управление двигателем
Теперь, когда у нас есть все необходимые логические элементы, можно составить схему чего-нибудь посложнее. Возьмем, к примеру, схему включения электродвигателя с аварийной остановкой. Обозначим сигнал обычной остановки через Stop, сигнал аварийной остановки через ES, и сигнал запуска двигателя через Start (напомним, что говорить сигнал в контексте электрических схем несовсем корректно).
Сама схема приведена ниже.
```
L1 L2
o o
| |
+--[\]---[\]----+--[ ]---+---------( )----+
| ES Stop | Start | Run |
| | | : |
| +--[ ]---+ : |
| Run : |
| ^ : |
| +.............../ |
| v |
+------------------[ ]-------------( )----+
| Run Motor |
| |
```
На схеме видно, что при подаче сигнала Start цепь замыкается, создавая бесконечный цикл работы с Run. При размыкания любого из реле ES и Stop ток в верхней половине схемы перестает течь и цепь размыкается. То есть на данной схеме ES и Stop ничем не отличаются.
При этом важно отметить, что на данной схеме Run представлена и как реле, и как актуатор. В данном случае оно имеет один и тот же смысл: актуатор и реле Run замыкаются и размыкаются в одно и то же время (на что указывает провод, протянутый между ними).
Для более наглядной демонстрации работы схемы можем нарисовать диаграмму сигналов для одного из запусков цепи, представленной на схеме.
```
________ (1)
ES _______________...___/ \___ (0)
(1)
Stop _______________...________________ (0)
________ (1)
Start __/ \___...________________ (0)
__________..._____ (1)
Run ____/ \__________ (0)
________..._______ (1)
Motor ______/ \________ (0)
------------------ time ------------------->
```
В данном примере с течением времени сначала на короткое время замыкается Start (ровно на то время, чтобы двигатель завелся), после чего Run и Motor работают до тех пор, пока не подается сигнал ES, который с некоторой задержкой отключает сначала реле Run, а после - актуатор Motor.
При этом поговаривают, что если залезть в шкаф управления, то можно найти схему, подобную схеме для управления двигателем.
#### Практика применения реле
Когда-то раньше реле использовались для того, чтобы делать компьютеры. На сегодняшний же день реле можно найти либо в силовых шкафах управления (где высокий ток и неблагоприятная среда эксплуатации), либо в местах, где электроника не работает (но в таких случаях используют неэлектрические реле), либо в программируемых логических контроллерах (ПЛК) (но о них будет сказано в лекциях позднее).
### Реле и состояние
Но все же, для того чтобы собрать полноценный компьютер, все еще не хватает памяти (места, где можно будет хранить информацию). Кончено, для этого тоже существуют релейные схемы.
#### RS-триггер
>**RS-триггер** - асинхронный триггер, который сохраняет своё предыдущее состояние при неактивном состоянии обоих входов и изменяет свое состояние при подаче на один из входов активного уровня.
Для того, чтобы представить RS-триггер в виде небольшой релейной схемы, не требуется ничего особенного.
```
L1 L2
o o
| |
+---+---[ ]---+---(\)---+
| | R | Q |
| | | |
| +---[ ]---+ |
| NQ |
| |
| +---[ ]---+ |
| | Q | |
| | | |
+---+---[ ]---+---(\)---+
| S NQ |
| |
```
На данной схеме, несмотря на то, что уровни Q и NQ графически не соединены, формально они являются одним и тем же. Для того, чтобы удостоверится в правильности данной схемы, можно просто подставить все возможные значения для Q, S и R.
Важно помнить, что в RS-триггере комбинация сигналов R=1 и S=1 является запрещенной комбинацией, и ее никогда не стоит использовать.
### От реле к транзистору
Несмотря на прекрасную конструкцию реле, у него все же имеется некоторые недостатки, ведь он ограничен механикой, а значит способен на износ, дребезг, а также имеет не самую быструю скорость реакции.
Транзистор же является отличной заменой реле, ведь это тот же ключ, но электронный, без движущихся частей, и при этом на порядок быстрее. Так как это такой же ключ, все логические схемы переносятся на него без изменения. А значит, с помощью него уже можно рисовать цифровую схемотехнику.