# Лекция 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