Добавление конспекта 19-ой лекции

Co-authored-by: Kholodhaha <116362016+Kholodhaha@users.noreply.github.com>
This commit is contained in:
Andrei Solodovnikov
2025-07-05 12:05:43 +03:00
parent 0b563e23e3
commit 459cbe31cd
26 changed files with 338 additions and 0 deletions

338
Lectures/19. Bus.md Normal file
View File

@@ -0,0 +1,338 @@
# Лекция 19. Шины.
- [Лекция 19. Шины.](#лекция-19-шины)
- [Системы соединений](#системы-соединений)
- [Интерфейс](#интерфейс)
- [Шина](#шина)
- [Терминология](#терминология)
- [Обмен информации](#обмен-информации)
- [Типы шин](#типы-шин)
- [Иерархия шин](#иерархия-шин)
- [Арбитраж шин](#арбитраж-шин)
- [Алгоритмы арбитража](#алгоритмы-арбитража)
- [Схемы арбитража](#схемы-арбитража)
- [Протоколы шин](#протоколы-шин)
- [Повышение эффективности шин](#повышение-эффективности-шин)
- [Увеличение полосы пропускания](#увеличение-полосы-пропускания)
- [Стандартизация шин](#стандартизация-шин)
- [Последовательный синхронный обмен](#последовательный-синхронный-обмен)
- [Последовательный асинхронный обмен](#последовательный-асинхронный-обмен)
- [Основные материалы лекции](#основные-материалы-лекции)
## Системы соединений
**Система** — это объединение нескольких элементов для решения общей задачи.
Система соединений должна обеспечивать обмен информации между:
- процессором и памятью;
- процессором и модулями ввода\вывода;
- памятью и модулями ввода\вывода.
Как же воедино соединить элементы системы?
Нужно использовать несколько шин, каждая из которых соединяется с разными элементами системы. Например, это необходимо потому что ЦП обменивается информацией с памятью в гигабитах в секунду, а с клавиатурой в байтах в секунду, поэтому неразумно помещать их на одну шину.
![../.pic/Lectures/19.%20Bus/fig_01.jpg](../.pic/Lectures/19.%20Bus/fig_01.jpg)
_Рис. 1. Идеальный вариант системы соединений._
### Интерфейс
Интерфейс — это совокупность механических, электрических (аппаратных) и программных средств, с помощью которых компоненты системы объединяются для решения задачи обмена информации.
Существуют три категории интерфейсов:
- машинные (решают задачу соединения процессора с другими устройствами);
- системно-модульные (унифицируют сопряжение модулей, предназначенных для работы в системе, что и определяет их особенности);
- системно-приборные (осуществляют объединение в систему модулей, которые могут работать автономно и для которых характерны широкие функциональные возможности).
### Шина
**Шина** с это группа сигнальных линий, предназначенных для выполнения определенной функции в программно-управляемом процессе передачи данных.
Чтобы охарактеризовать шину, нужно описать:
- совокупность сигнальных линий;
- физические, механические и электрические шины;
- используемые сигналы арбитража, состояния, управления, и синхронизации;
- правила взаимодействия подключённых к шине устройств (протокол шины).
![../.pic/Lectures/19.%20Bus/fig_02.jpg](../.pic/Lectures/19.%20Bus/fig_02.jpg)
_Рис. 2. Абстрактное представление модели шины._
## Терминология
Операции на шине ("bus") называются транзакциями, существует:
- транзакция чтения (ввода);
- транзакция записи (вывода).
Одна транзакция — цикл шины (может занимать несколько тактовых импульсов).
Когда два устройства обмениваются информацией на шине, одно из них должно инициировать обмен и управлять им.
Устройство, которое инициирует обмен, называется "Bus master" [main] — любое устройство, способное взять на себя владение шиной и управлять пересылкой данных.
"Bus slave" [secondary] (ведомое устройство) — устройство не способное владеть шиной и управлять ей.
В любой момент времени на шине может управлять только одно ведущее устройство. Шиной предусматривается процедура допуска управления только одного из претендентов, это называет **арбитраж**.
### Обмен информации
Существуют три основных обмена информацией:
- Обмен по инициативе процессора.
Микропроцессор формирует запрос для внешнего устройства, затем внешнее устройство сообщает "Подтверждение" на обмен информацией микропроцессору и происходит обмен информацией.
![../.pic/Lectures/19.%20Bus/fig_03.jpg](../.pic/Lectures/19.%20Bus/fig_03.jpg)
_Рис. 3. Пример обмена по инициативе процессора._
- Обмен по инициативе внешнего устройства.
Внешнее устройство формирует запрос для микропроцессора, затем микропроцессор сообщает "Подтверждение" на обмен информацией внешнему устройству и происходит обмен информацией. При этом во время обмена ведущее устройство (микропроцессор) управляет всеми процессами.
![../.pic/Lectures/19.%20Bus/fig_04.jpg](../.pic/Lectures/19.%20Bus/fig_04.jpg)
_Рис. 4. Пример обмена по инициативе внешнего устройства._
- Обмен между внешними устройствами по инициативе одного из них.
![../.pic/Lectures/19.%20Bus/fig_05.jpg](../.pic/Lectures/19.%20Bus/fig_05.jpg)
_Рис. 5. Пример обмена внешними устройствами по инициативе одного из них._
## Типы шин
Шины делятся по целевому назначению:
- шины "процессор-память" (которые специализированы для передачи информацией между процессором и памятью);
![../.pic/Lectures/19.%20Bus/fig_06.jpg](../.pic/Lectures/19.%20Bus/fig_06.jpg)
_Рис. 6. Пример шины "процессор-память"._
- шины ввода-вывода (их особенность заключается в том, что они хорошо стандартизированы и более медленные, потому что ввод-вывод генерирует информацию медленно);
- системные шины (нужны для объединения элементов систем).
Системная шина условно состоит из трёх шин: шины данных, адреса и управления.
- Шина адреса — это шина, по которой выставляются адреса устройства, к которому мы хотим обратиться. Ширина шины данных может быть 32, 64, 128 бит (ширина обычно называется "словом").
- Шина данных — это шина, по которой передаются данные (адреса ячеек памяти, портов ввода\вывода, регистры процессора и так далее. Может быть выбран диапазон адресов "broadcast" и "broadcall") — 36-40 битов.
- Шина управления (Control Bus) — шина для передачи управляющей информации и информации о состоянии участвующих в транзакции устройств.
![../.pic/Lectures/19.%20Bus/fig_07.jpg](../.pic/Lectures/19.%20Bus/fig_07.jpg)
_Рис. 7. Модель системной шины._
Какие сигналы могут быть внутри шины управления:
1. Сигналы управления транзакциями (среднее значение сигнальных линий: 2-8) делятся на:
1. указание типа транзакции (чтение\запись);
2. указание количества байт и номер байт, если пересылается часть слова;
3. указание типа адреса выданного на шину;
2. информация состояния (статус) — для передачи кодов ошибок и состояний (среднее значение сигнальных линий: 1-4).
3. Линии арбитража — выбор управляющего шиной устройства (среднее значение сигнальных линий: 3-11).
4. Линии прерывания (среднее значение сигнальных линий: 1-2).
5. Последовательные локальные сети (среднее значение сигнальных линий: 1-4).
6. Линии позиционного кода (среднее значение сигнальных линий: 4-5).
7. Тактирование и синхронизация (среднее значение сигнальных линий: 2-6).
8. Линии питания и заземления.
В некоторых системах применяют мультиплексированную шину адреса/данных для экономии количества линий, из-за чего повышается скорость передачи информации.
![../.pic/Lectures/19.%20Bus/fig_08.jpg](../.pic/Lectures/19.%20Bus/fig_08.jpg)
_Рис. 8. Мультиплексируемая шина адреса/данных._
## Иерархия шин
Существует три основных уровня иерархии шин:
- Одноуровневая иерархия:
В этом уровне иерархии медленные устройства занимают системную шину и она не доступна для центрального процесса и памяти.
![../.pic/Lectures/19.%20Bus/fig_09.jpg](../.pic/Lectures/19.%20Bus/fig_09.jpg)
_Рис. 9. Одноуровневая иерархия._
- Двухуровневая иерархия:
В данном типе есть адаптеры, к которым подключаются шины. На системной шине "висят" высокопроизводительные элементы системы, а через адаптеры сгруппированы и подключены более медленные внешние устройства. Главным минусом является то, что если устройствам модуля ввода\вывода нужно обменяться информацией друг с другом — они будут обмениваться через системную шину, а значит будут её занимать.
![../.pic/Lectures/19.%20Bus/fig_10.jpg](../.pic/Lectures/19.%20Bus/fig_10.jpg)
_Рис. 10. Двухуровневая иерархия._
- Многоуровневая иерархия:
В этом уровне иерархии существует системная шина для объединения высокопроизводительных элементов, к ней подключен адаптер, который в свою очередь ограничивает другую шину с подключёнными к ней другими адаптерами.
В таком случае, если устройствам модуля ввода\вывода нужно обменяться информацией друг с другом — они будут делать это в обход системной шине. Когда им надо будет выйти на системную шину они смогут сделать это на высокой скорости, потому что есть адаптер, который будет выполнять задачу буферизации.
![../.pic/Lectures/19.%20Bus/fig_11.jpg](../.pic/Lectures/19.%20Bus/fig_11.jpg)
_Рис. 11. Многоуровневая иерархия._
## Арбитраж шин
### Алгоритмы арбитража
Каждому потенциальному 'ведущему' присваивается приоритет, для того чтобы дать устройствам возможно обмениваться информацией:
- **Статический приоритет** (за каждым устройством закреплён номер приоритета, чем меньше номер, тем выше приоритет. Проблема заключается в том, что одно устройство может занять шину навсегда и другие устройства не смогут общаться между собой).
- Динамический приоритет (при повторном использовании шины меняется приоритет).
Варианты смен приоритета:
- **Простая циклическая смена приоритетов** (после каждой итерации разыгрывается приоритет и тот, у кого был самый низкий приоритет становится самым высоким).
![../.pic/Lectures/19.%20Bus/fig_12.jpg](../.pic/Lectures/19.%20Bus/fig_12.jpg)
_Рис. 12. Распределение приоритетов._
- **Циклическая смена приоритетов с учётом последнего запроса** (Rotating Daisy Chain — RDC):
Допустим, третье устройство "выигрывает" шину, начинает передавать информацию. После "общения" устройство, которое передавало информацию получает самый низкий приоритет.
- **Смена приоритетов по случайному закону** (RND):
Приоритеты меняются по закону псевдослучайной последовательности чисел (Псевдослучайная последовательность чисел - это последовательность, которая кажется статистически случайной, несмотря на то, что была получена в результате полностью детерминированного и повторяемого процесса).
- **Алгоритм наиболее дальнего использования** (LRU):
Приоритет устройства, которое дольше всего не использовали, постепенно возрастает после каждого арбитража шины.
- Можно использовать **фиксированный квант времени**.
Допустим, у нас есть 10 устройств и каждому из устройств даётся момент времени, когда ему надо определиться хочет ли он общаться или нет. Этот цикл происходит до того момента, пока не найдут готового к общению на шине устройства. Однако скорость реакции на запрос шины будет меньше, чем в других реализациях.
- На основе очереди (FIFO), когда одно устройство заканчивает общение на шине — сразу же начинает общение устройство, которое стоит следующим в очереди. Но FIFO можно легко "забить". Например, пока обрабатываем один запрос ещё 20 других запросов пришло и буфер "забился".
### Схемы арбитража
Схемы арбитража бывают двух типов:
- Централизованный арбитраж (есть устройство, которое называется "арбитр", все устройства подключаются к нему и спрашивают кто из них получит доступ к общению) делится на две категории:
- Параллельный;
- Последовательный.
- Децентрализованный арбитраж ("арбитр" у каждого устройства свой).
**Централизованный параллельный арбитраж**.
В этой схеме у нас присутствуют ведущие устройства, которые могут занимать шину и могут инициировать обмен информацией. Есть центральный арбитр, решающий кто будет общаться на шине. Каждое устройство соединено с арбитром двумя сигналами — это "запрос шины" и "предоставление шины". Все устройства подключены к общей линии "Шина Занята" (ШЗ), с помощью этой линии все устройства могут видеть свободна ли шина или занята. Задача центрального арбитра заключается в определении устройства с максимальным приоритетом и предоставлении шины этому устройству.
![../.pic/Lectures/19.%20Bus/fig_13.jpg](../.pic/Lectures/19.%20Bus/fig_13.jpg)
_Рис. 13. Схема централизованного параллельного арбитража._
**Централизованный последовательный арбитраж**.
В данной реализации приоритеты фиксированы и зависят от того где конкретно подключено устройство. Есть сигнал "Шина Занята" (ШЗ), есть сигнал "запрос шины" и "предоставление шины" от центрального арбитра.
![../.pic/Lectures/19.%20Bus/fig_14.jpg](../.pic/Lectures/19.%20Bus/fig_14.jpg)
_Рис. 14. Схема централизованного последовательного арбитража._
Для примера рассмотрим ситуацию, когда два устройства одновременно запросили общение на шине ("Ведущий n-2" и "Ведущий 0"). Центральный арбитр видит, что шина не занята и даёт сигнал первому устройству.
![../.pic/Lectures/19.%20Bus/fig_15.jpg](../.pic/Lectures/19.%20Bus/fig_15.jpg)
_Рис. 15. Предоставление сигнала на пользование шиной устройству "Ведущий n-1"._
Первое устройство ("Ведущий n-1") получило этот сигнал, но так как ему не нужно общаться на шине — оно передаёт его следующему устройству ("Ведущий n-2")
![../.pic/Lectures/19.%20Bus/fig_16.jpg](../.pic/Lectures/19.%20Bus/fig_16.jpg)
_Рис. 16. Передача сигнала устройству "Ведущий n-2"._
После этого устройство "Ведущий n-2" не распространяет этот сигнал дальше и занимает шину.
![../.pic/Lectures/19.%20Bus/fig_17.jpg](../.pic/Lectures/19.%20Bus/fig_17.jpg)
_Рис. 17. Устройство "Ведущий n-2" заняло шину для общения._
**Децентрализованный арбитраж**.
В данной реализации все устройства связаны друг с другом проводами. Когда какое-то из устройств хочет занять шину — оно видит сигналы от других устройств. Таким образом, перед тем как выставить свой запрос, устройство смотрит нет ли запросов с большим приоритетом. Если есть, то устройство не отправляет свои запросы, так как это не имеет смысла.
![../.pic/Lectures/19.%20Bus/fig_18.jpg](../.pic/Lectures/19.%20Bus/fig_18.jpg)
_Рис. 18. Схема децентрализованного арбитража._
### Протоколы шин
Протоколы шин бывают двух типов:
- синхронные (когда происходит синхроимпульс, тогда происходят и какие-то события на шине);
![../.pic/Lectures/19.%20Bus/fig_19.jpg](../.pic/Lectures/19.%20Bus/fig_19.jpg)
_Рис. 19. Схема синхронного протокола шин._
- асинхронные (как только устройство способно отреагировать — оно сразу же реагирует).
![../.pic/Lectures/19.%20Bus/fig_20.jpg](../.pic/Lectures/19.%20Bus/fig_20.jpg)
_Рис. 20. Схема асинхронного протокола шин._
## Повышение эффективности шин
Методы повышения эффективности шин:
- Пакетный режим пересылки информации (передаётся не одна порция данных, а сразу несколько порций данных по нескольким адресам).
![../.pic/Lectures/19.%20Bus/fig_21.jpg](../.pic/Lectures/19.%20Bus/fig_21.jpg)
_Рис. 21. Схема пакетного режима пересылки информации._
- Конвейеризация транзакций (предназначена для высокоскоростных шин).
![../.pic/Lectures/19.%20Bus/fig_22.jpg](../.pic/Lectures/19.%20Bus/fig_22.jpg)
_Рис. 22. Схема конвейеризации транзакций._
Можно менять данные на выходе А ещё до того момента времени, когда эти данные окончательно воспринялись устройством B, главное выдерживать нужные временные ограничения ("тайминги").
- Протокол с расщеплением транзакций (мы не ждём ответ на конкретную транзакцию, а выдаём его когда у нас есть возможность).
![../.pic/Lectures/19.%20Bus/fig_23.jpg](../.pic/Lectures/19.%20Bus/fig_23.jpg)
_Рис. 23. Схема протокола с расщеплением транзакций._
Ответ на транзакцию приходит с запросом не сразу. То есть мы не ждём ответ на конкретную транзакцию, и выдаём ответ когда есть возможность.
Например, на рисунке 21 для _адреса 1_ у нас была возможность получить ответ сразу, так же и с _адресами 3 и 4_, а вот для _адреса 2_ возможность получить ответ появилась только получения ответов для _адреса 3 и 4_. Таким образом, за счёт протокола с расщеплением транзакций всё будет работать корректно.
- Арбитраж с перекрытием (очередной арбитраж происходит ещё на стадии передачи прошлой информации).
Очередной арбитраж происходит ещё на стадии передачи прошлой информации. Допустим, "разыграли" шину и мы ей завладели, затем другое устройство сообщает, что хочет завладеть этой шиной. Вместо того чтобы он просто ждал — включается арбитр и определяет, можно ли будет этому устройству завладеть шиной или нельзя. Как только заканчивается передача, сразу же идёт переключение на другое устройство.
- Арбитраж с удержанием шины (ведущее устройство захватывает шину и начинает передавать большое количество информации, то есть передача шины происходит только при возникновении запроса)
Например, ведущее устройство захватывает шину и начинает передавать **большое количество информации**. Это устройство передаёт информацию и видит, что другие устройства не отправляют запрос на пользование шиной, тогда ведущее устройство продолжает передавать информацию. То есть когда возникнет запрос, тогда устройство сразу передаёт шину.
### Увеличение полосы пропускания
Для увеличения полосы пропускания существуют следующие способы:
- отказ от мультиплексирования шин адреса и данных;
- увеличение ширины данных;
- повышение тактовой частоты.
### Стандартизация шин
Из стандартизированных шин можно выделить две большие группы:
- Шины "большого" интерфейса (высокопроизводительные шины, связывают память, процессор, модули ввода\вывода)
- PCI Express
- Hyper Transport
- QPI
- Шины "малого" интерфейса (служат для присоединения периферийных устройств к модулям ввода\вывода)
- USB
- Bluetooth
- UART
- CAN
- SPI
- I2C
### Последовательный синхронный обмен
![../.pic/Lectures/19.%20Bus/fig_24.jpg](../.pic/Lectures/19.%20Bus/fig_24.jpg)
_Рис. 24. Схема последовательного синхронного обмена._
Для того чтобы организовать последовательный синхронный обмен информации, нам нужна линия, по которой мы передаём информацию и линия, по которой происходит синхронизация.
Как работает последовательный синхронный обмен:
На схеме есть генератор импульсов (ГН), который генерирует тактовый сигнал (он управляет сдвиговым регистром и передаёт сигналы на приёмник). Передатчик параллельно с этим загружает информацию в сдвиговый регистр, затем информация по одному биту перемещается в другой сдвиговый регистр. После того как вся информация передалась — приёмник просто считывает эту информацию
### Последовательный асинхронный обмен
![../.pic/Lectures/19.%20Bus/fig_25.jpg](../.pic/Lectures/19.%20Bus/fig_25.jpg)
_Рис. 25. Схема последовательного асинхронного обмена._
Отличие от последовательного синхронного обмена заключается в том, что из-за отсутствия тактовых импульсов приёмнику и передатчику необходимо договориться про скорость, на которой будет происходить обмен. На нашей схеме генератор импульсов на приёмнике в 16 раз выше частотой чем на передатчике. Схема управления будет 16 раз считывать каждый бит, то есть если 14 раз была единица и 2 раза ноль, значит была единица.
### Основные материалы лекции
1. [Ссылка](https://www.youtube.com/watch?v=UXmY3LS_xWk&list=PL0def37HEo5KHPjwK7A5bd4RJGg4djPVf&index=23) на видеозапись лекции
2. [Ссылка](https://onedrive.live.com/view.aspx?resid=1FF28DEC684C2C56!81737&cid=1ff28dec684c2c56&authkey=!AIXUSz0MyutL6hs&CT=1698668305325&OR=ItemsView) на лекцию в формате Power Point