Files
APS/Lectures/19. Bus.md
Tynnalian 7a2151bf01 Л19. Исправление ссылки на рисунок
В тексте обращение к 21 рисунку, который освещает другой подпункт, должно быть к 23
2025-08-20 11:35:48 +03:00

31 KiB
Raw Permalink Blame History

Лекция 19. Шины.

Системы соединений

Система — это объединение нескольких элементов для решения общей задачи. Система соединений должна обеспечивать обмен информации между:

  • процессором и памятью;
  • процессором и модулями ввода\вывода;
  • памятью и модулями ввода\вывода.

Как же воедино соединить элементы системы?

Нужно использовать несколько шин, каждая из которых соединяется с разными элементами системы. Например, это необходимо потому что ЦП обменивается информацией с памятью в гигабитах в секунду, а с клавиатурой в байтах в секунду, поэтому неразумно помещать их на одну шину.

../.pic/Lectures/19.%20Bus/fig_01.jpg

Рис. 1. Идеальный вариант системы соединений.

Интерфейс

Интерфейс — это совокупность механических, электрических (аппаратных) и программных средств, с помощью которых компоненты системы объединяются для решения задачи обмена информации. Существуют три категории интерфейсов:

  • машинные (решают задачу соединения процессора с другими устройствами);
  • системно-модульные (унифицируют сопряжение модулей, предназначенных для работы в системе, что и определяет их особенности);
  • системно-приборные (осуществляют объединение в систему модулей, которые могут работать автономно и для которых характерны широкие функциональные возможности).

Шина

Шина с это группа сигнальных линий, предназначенных для выполнения определенной функции в программно-управляемом процессе передачи данных. Чтобы охарактеризовать шину, нужно описать:

  • совокупность сигнальных линий;
  • физические, механические и электрические шины;
  • используемые сигналы арбитража, состояния, управления, и синхронизации;
  • правила взаимодействия подключённых к шине устройств (протокол шины).

../.pic/Lectures/19.%20Bus/fig_02.jpg

Рис. 2. Абстрактное представление модели шины.

Терминология

Операции на шине ("bus") называются транзакциями, существует:

  • транзакция чтения (ввода);
  • транзакция записи (вывода).

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

Устройство, которое инициирует обмен, называется "Bus master" [main] — любое устройство, способное взять на себя владение шиной и управлять пересылкой данных.

"Bus slave" [secondary] (ведомое устройство) — устройство не способное владеть шиной и управлять ей.

В любой момент времени на шине может управлять только одно ведущее устройство. Шиной предусматривается процедура допуска управления только одного из претендентов, это называет арбитраж.

Обмен информации

Существуют три основных обмена информацией:

  • Обмен по инициативе процессора. Микропроцессор формирует запрос для внешнего устройства, затем внешнее устройство сообщает "Подтверждение" на обмен информацией микропроцессору и происходит обмен информацией.

../.pic/Lectures/19.%20Bus/fig_03.jpg

Рис. 3. Пример обмена по инициативе процессора.

  • Обмен по инициативе внешнего устройства. Внешнее устройство формирует запрос для микропроцессора, затем микропроцессор сообщает "Подтверждение" на обмен информацией внешнему устройству и происходит обмен информацией. При этом во время обмена ведущее устройство (микропроцессор) управляет всеми процессами.

../.pic/Lectures/19.%20Bus/fig_04.jpg

Рис. 4. Пример обмена по инициативе внешнего устройства.

  • Обмен между внешними устройствами по инициативе одного из них.

../.pic/Lectures/19.%20Bus/fig_05.jpg

Рис. 5. Пример обмена внешними устройствами по инициативе одного из них.

Типы шин

Шины делятся по целевому назначению:

  • шины "процессор-память" (которые специализированы для передачи информацией между процессором и памятью);

../.pic/Lectures/19.%20Bus/fig_06.jpg

Рис. 6. Пример шины "процессор-память".

  • шины ввода-вывода (их особенность заключается в том, что они хорошо стандартизированы и более медленные, потому что ввод-вывод генерирует информацию медленно);
  • системные шины (нужны для объединения элементов систем). Системная шина условно состоит из трёх шин: шины данных, адреса и управления.
    • Шина адреса — это шина, по которой выставляются адреса устройства, к которому мы хотим обратиться. Ширина шины данных может быть 32, 64, 128 бит (ширина обычно называется "словом").
    • Шина данных — это шина, по которой передаются данные (адреса ячеек памяти, портов ввода\вывода, регистры процессора и так далее. Может быть выбран диапазон адресов "broadcast" и "broadcall") — 36-40 битов.
    • Шина управления (Control Bus) — шина для передачи управляющей информации и информации о состоянии участвующих в транзакции устройств.

../.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

Рис. 8. Мультиплексируемая шина адреса/данных.

Иерархия шин

Существует три основных уровня иерархии шин:

  • Одноуровневая иерархия: В этом уровне иерархии медленные устройства занимают системную шину и она не доступна для центрального процесса и памяти.

../.pic/Lectures/19.%20Bus/fig_09.jpg

Рис. 9. Одноуровневая иерархия.

  • Двухуровневая иерархия: В данном типе есть адаптеры, к которым подключаются шины. На системной шине "висят" высокопроизводительные элементы системы, а через адаптеры сгруппированы и подключены более медленные внешние устройства. Главным минусом является то, что если устройствам модуля ввода\вывода нужно обменяться информацией друг с другом — они будут обмениваться через системную шину, а значит будут её занимать.

../.pic/Lectures/19.%20Bus/fig_10.jpg

Рис. 10. Двухуровневая иерархия.

  • Многоуровневая иерархия: В этом уровне иерархии существует системная шина для объединения высокопроизводительных элементов, к ней подключен адаптер, который в свою очередь ограничивает другую шину с подключёнными к ней другими адаптерами. В таком случае, если устройствам модуля ввода\вывода нужно обменяться информацией друг с другом — они будут делать это в обход системной шине. Когда им надо будет выйти на системную шину они смогут сделать это на высокой скорости, потому что есть адаптер, который будет выполнять задачу буферизации.

../.pic/Lectures/19.%20Bus/fig_11.jpg

Рис. 11. Многоуровневая иерархия.

Арбитраж шин

Алгоритмы арбитража

Каждому потенциальному 'ведущему' присваивается приоритет, для того чтобы дать устройствам возможно обмениваться информацией:

  • Статический приоритет (за каждым устройством закреплён номер приоритета, чем меньше номер, тем выше приоритет. Проблема заключается в том, что одно устройство может занять шину навсегда и другие устройства не смогут общаться между собой).

  • Динамический приоритет (при повторном использовании шины меняется приоритет). Варианты смен приоритета:

    • Простая циклическая смена приоритетов (после каждой итерации разыгрывается приоритет и тот, у кого был самый низкий приоритет становится самым высоким).

    ../.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

Рис. 13. Схема централизованного параллельного арбитража.

Централизованный последовательный арбитраж. В данной реализации приоритеты фиксированы и зависят от того где конкретно подключено устройство. Есть сигнал "Шина Занята" (ШЗ), есть сигнал "запрос шины" и "предоставление шины" от центрального арбитра.

../.pic/Lectures/19.%20Bus/fig_14.jpg

Рис. 14. Схема централизованного последовательного арбитража.

Для примера рассмотрим ситуацию, когда два устройства одновременно запросили общение на шине ("Ведущий n-2" и "Ведущий 0"). Центральный арбитр видит, что шина не занята и даёт сигнал первому устройству.

../.pic/Lectures/19.%20Bus/fig_15.jpg

Рис. 15. Предоставление сигнала на пользование шиной устройству "Ведущий n-1".

Первое устройство ("Ведущий n-1") получило этот сигнал, но так как ему не нужно общаться на шине — оно передаёт его следующему устройству ("Ведущий n-2")

../.pic/Lectures/19.%20Bus/fig_16.jpg

Рис. 16. Передача сигнала устройству "Ведущий n-2".

После этого устройство "Ведущий n-2" не распространяет этот сигнал дальше и занимает шину.

../.pic/Lectures/19.%20Bus/fig_17.jpg

Рис. 17. Устройство "Ведущий n-2" заняло шину для общения.

Децентрализованный арбитраж. В данной реализации все устройства связаны друг с другом проводами. Когда какое-то из устройств хочет занять шину — оно видит сигналы от других устройств. Таким образом, перед тем как выставить свой запрос, устройство смотрит нет ли запросов с большим приоритетом. Если есть, то устройство не отправляет свои запросы, так как это не имеет смысла.

../.pic/Lectures/19.%20Bus/fig_18.jpg

Рис. 18. Схема децентрализованного арбитража.

Протоколы шин

Протоколы шин бывают двух типов:

  • синхронные (когда происходит синхроимпульс, тогда происходят и какие-то события на шине);

../.pic/Lectures/19.%20Bus/fig_19.jpg

Рис. 19. Схема синхронного протокола шин.

  • асинхронные (как только устройство способно отреагировать — оно сразу же реагирует).

../.pic/Lectures/19.%20Bus/fig_20.jpg

Рис. 20. Схема асинхронного протокола шин.

Повышение эффективности шин

Методы повышения эффективности шин:

  • Пакетный режим пересылки информации (передаётся не одна порция данных, а сразу несколько порций данных по нескольким адресам).

../.pic/Lectures/19.%20Bus/fig_21.jpg

Рис. 21. Схема пакетного режима пересылки информации.

  • Конвейеризация транзакций (предназначена для высокоскоростных шин).

../.pic/Lectures/19.%20Bus/fig_22.jpg

Рис. 22. Схема конвейеризации транзакций.

Можно менять данные на выходе А ещё до того момента времени, когда эти данные окончательно воспринялись устройством B, главное выдерживать нужные временные ограничения ("тайминги").

  • Протокол с расщеплением транзакций (мы не ждём ответ на конкретную транзакцию, а выдаём его когда у нас есть возможность).

../.pic/Lectures/19.%20Bus/fig_23.jpg

Рис. 23. Схема протокола с расщеплением транзакций.

Ответ на транзакцию приходит с запросом не сразу. То есть мы не ждём ответ на конкретную транзакцию, и выдаём ответ когда есть возможность. Например, на рисунке 23 для адреса 1 у нас была возможность получить ответ сразу, так же и с адресами 3 и 4, а вот для адреса 2 возможность получить ответ появилась только получения ответов для адреса 3 и 4. Таким образом, за счёт протокола с расщеплением транзакций всё будет работать корректно.

  • Арбитраж с перекрытием (очередной арбитраж происходит ещё на стадии передачи прошлой информации). Очередной арбитраж происходит ещё на стадии передачи прошлой информации. Допустим, "разыграли" шину и мы ей завладели, затем другое устройство сообщает, что хочет завладеть этой шиной. Вместо того чтобы он просто ждал — включается арбитр и определяет, можно ли будет этому устройству завладеть шиной или нельзя. Как только заканчивается передача, сразу же идёт переключение на другое устройство.
  • Арбитраж с удержанием шины (ведущее устройство захватывает шину и начинает передавать большое количество информации, то есть передача шины происходит только при возникновении запроса)

Например, ведущее устройство захватывает шину и начинает передавать большое количество информации. Это устройство передаёт информацию и видит, что другие устройства не отправляют запрос на пользование шиной, тогда ведущее устройство продолжает передавать информацию. То есть когда возникнет запрос, тогда устройство сразу передаёт шину.

Увеличение полосы пропускания

Для увеличения полосы пропускания существуют следующие способы:

  • отказ от мультиплексирования шин адреса и данных;
  • увеличение ширины данных;
  • повышение тактовой частоты.

Стандартизация шин

Из стандартизированных шин можно выделить две большие группы:

  • Шины "большого" интерфейса (высокопроизводительные шины, связывают память, процессор, модули ввода\вывода)
    • PCI Express
    • Hyper Transport
    • QPI
  • Шины "малого" интерфейса (служат для присоединения периферийных устройств к модулям ввода\вывода)
    • USB
    • Bluetooth
    • UART
    • CAN
    • SPI
    • I2C

Последовательный синхронный обмен

../.pic/Lectures/19.%20Bus/fig_24.jpg

Рис. 24. Схема последовательного синхронного обмена.

Для того чтобы организовать последовательный синхронный обмен информации, нам нужна линия, по которой мы передаём информацию и линия, по которой происходит синхронизация.

Как работает последовательный синхронный обмен: На схеме есть генератор импульсов (ГН), который генерирует тактовый сигнал (он управляет сдвиговым регистром и передаёт сигналы на приёмник). Передатчик параллельно с этим загружает информацию в сдвиговый регистр, затем информация по одному биту перемещается в другой сдвиговый регистр. После того как вся информация передалась — приёмник просто считывает эту информацию

Последовательный асинхронный обмен

../.pic/Lectures/19.%20Bus/fig_25.jpg

Рис. 25. Схема последовательного асинхронного обмена.

Отличие от последовательного синхронного обмена заключается в том, что из-за отсутствия тактовых импульсов приёмнику и передатчику необходимо договориться про скорость, на которой будет происходить обмен. На нашей схеме генератор импульсов на приёмнике в 16 раз выше частотой чем на передатчике. Схема управления будет 16 раз считывать каждый бит, то есть если 14 раз была единица и 2 раза ноль, значит была единица.

Основные материалы лекции

  1. Ссылка на видеозапись лекции
  2. Ссылка на лекцию в формате Power Point