Files
APS/Lectures/20. Input-Output System.md
2023-12-11 21:11:00 +03:00

302 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лекция 20. Ввод\Вывод
## Содержание
- [Лекция 20. Ввод\\Вывод](#лекция-20-вводвывод)
- [Содержание](#содержание)
- [Системы ввода-вывода](#системы-ввода-вывода)
- [Система ввода-вывода подключена к центральному процессору с помощью отдельной шины](#система-ввода-вывода-подключена-к-центральному-процессору-с-помощью-отдельной-шины)
- [Система ввода-вывода имеет отдельную от памяти шину управления, но совместную шину адреса и данных](#система-ввода-вывода-имеет-отдельную-от-памяти-шину-управления-но-совместную-шину-адреса-и-данных)
- [Система ввода-вывода имеет единую шину с основной памятью](#система-ввода-вывода-имеет-единую-шину-с-основной-памятью)
- [Адресное пространство](#адресное-пространство)
- [Системы с выделенным адресным пространством](#системы-с-выделенным-адресным-пространством)
- [Системы с совмещенным (совместным) адресным пространством](#системы-с-совмещенным-совместным-адресным-пространством)
- [Структура периферийного устройства](#структура-периферийного-устройства)
- [Модули ввода-вывода](#модули-ввода-вывода)
- [Ввод-вывод с опросом](#ввод-вывод-с-опросом)
- [Ввод-вывод с прерываниями](#ввод-вывод-с-прерываниями)
- [Прямой доступ к памяти (ПДП или Direct Memory Access — DMA)](#прямой-доступ-к-памяти-пдп-или-direct-memory-access--dma)
- [Конфигурации ПДП(DMA)](#конфигурации-пдпdma)
- [Канальная система ввода-вывода](#канальная-система-ввода-вывода)
- [RAID](#raid)
- [JTAG (Join Test Action Group)](#jtag-join-test-action-group)
- [Основные материалы лекции](#основные-материалы-лекции)
- [Дополнительные материалы к лекции](#дополнительные-материалы-к-лекции)
## Системы ввода-вывода
> *Система ввода-вывода* — это комплекс обмена информацией с внешними устройствами.
К системе ввода-вывода можно отнести и способы подключения к системной шине различного оборудования, и процедуры взаимодействия процессора с этим оборудованием, и команды процессора, предназначенные для обмена данными с внешними устройствами.
Системы ввода-вывода различают по способам подключения к процессору.
### Система ввода-вывода подключена к центральному процессору с помощью отдельной шины
![../.pic/Lectures/20.%20Input-Output%20System/fig_01.png](../.pic/Lectures/20.%20Input-Output%20System/fig_01.png)
*Рис. 1. Отдельная шина системы ввода-вывода.*
- Плюсы: система ввода-вывода отделена от основной памяти и для нее может быть соблюдена своя специфика, например меньшие скорости, определенный интерфейс работы, который больше подходит под данные системы.
- Минусы: много точек подключения, меньшая надежность, большие габариты и т.д.
### Система ввода-вывода имеет отдельную от памяти шину управления, но совместную шину адреса и данных
![../.pic/Lectures/20.%20Input-Output%20System/fig_02.png](../.pic/Lectures/20.%20Input-Output%20System/fig_02.png)
*Рис. 2. Система ввода-вывода с отдельной шиной управления.*
- Плюсы: специализация под систему ввода-вывода (т.к. управление осуществляется по другой линии), используются отдельные инструкции для работы с вводом-выводом.
Архитектура x86 использует данный тип подсистемы ввода-вывода.
### Система ввода-вывода имеет единую шину с основной памятью
![../.pic/Lectures/20.%20Input-Output%20System/fig_03.png](../.pic/Lectures/20.%20Input-Output%20System/fig_03.png)
*Рис. 3. Единая шина для системы ввода-вывода и памяти.*
- Плюсы: в случае совместного адресного пространства мы имеем гибкий размер системы ввода-вывода (то есть мы можем уменьшить количество памяти и увеличить количество систем ввода-вывода или наоборот).
- Минусы: поскольку для доступа к регистрам модулей ввода-вывода используется та же шина, что и для доступа к памяти, процессор использует в обоих случаях одни и те же инструкции, что отрицательно сказывается на читаемости ассемблерного кода.
Архитектуры RISC-V и MIPS используют данный тип подсистемы ввода-вывода.
## Адресное пространство
> *Адресное пространство* — совокупность всех допустимых адресов каких-либо объектов вычислительной системы.
Системы ввода-вывода различают по организации адресного пространства.
### Системы с выделенным адресным пространством
![../.pic/Lectures/20.%20Input-Output%20System/fig_04.png](../.pic/Lectures/20.%20Input-Output%20System/fig_04.png)
*Рис. 4. Системы с выделенным адресным пространством.*
В выделенном адресном пространстве ячейки памяти отделены от модулей ввода-вывода. То есть процессор имеет 2 шины. Одна направлена для памяти, другая для ввода-вывода.
Пример системы с выделенным адресным пространством приведен на рис. 1.
### Системы с совмещенным (совместным) адресным пространством
![../.pic/Lectures/20.%20Input-Output%20System/fig_05.png](../.pic/Lectures/20.%20Input-Output%20System/fig_05.png)
*Рис. 5. Системы с совмещенным (совместным) адресным пространством.*
В совместном адресном пространстве есть только один набор адресов. Обращаясь по одним адресам мы попадаем в память, а по другим в управляющие регистры, которые ассоциированы с периферийными устройствами (т.е устройствами ввода-вывода, те которые подключаются к системе и связывают её с внешним миром).
Пример системы с совместным адресным пространством приведен на рис. 3.
При выделенном адресном пространстве можно разрабатывать систему ввода-вывода отдельно от памяти. В случае совместного этого не получится потому, что система ввода-вывода и память должны удовлетворять одним и тем же требованиям по связи (т.е. передачи информации).
![../.pic/Lectures/20.%20Input-Output%20System/fig_06.png](../.pic/Lectures/20.%20Input-Output%20System/fig_06.png)
*Рис. 6. Совместное адресное пространство с дешифратором адреса.*
## Структура периферийного устройства
Все периферийные устройства можно свести к трём категориям:
- Для общения с пользователем (принтеры, мониторы и др.)
- Для общения с вычислительной машиной (внешние устройства, которые отдают или получают информацию от внешнего мира через различные датчики, а также системы хранения информации)
- Для связи с удаленными устройствами (передача информации на большие расстояния)
Обобщенно любое периферийное устройство можно представить в виде:
![../.pic/Lectures/20.%20Input-Output%20System/fig_07.png](../.pic/Lectures/20.%20Input-Output%20System/fig_07.png)
*Рис. 7. Периферийное устройство.*
Периферийное устройство как-то взаимодействует с внешней средой. (Например датчик температуры. На преобразователь приходит температура, каким-то образом преобразуется и отправляется в буферную память в виде нолики и единички, которые характеризуют среду.)
Буферная память и логика управления связана с модулями ввода-вывода условными сигналами (условные так как для связи с модулями ввода-вывода используется 'малый' интерфейс).
Модуль ввода-вывода по данному интерфейсу генерирует различные сигналы управления для периферийного устройства, 'говоря' что нужно делать, и при этом собирает сигналы состояния, чтобы понимать в каком состоянии находится устройство (может быть у него какие-то проблемы или ошибки, закончило ли оно преобразование информации (например можно узнать храниться ли что-то в буферной памяти и можно ли это забирать)).
## Модули ввода-вывода
Основные функции модулей ввода-вывода:
- Локализация данных (выделение некоторого адресного пространства внутри которого процессор может через модуль ввода-вывода управлять периферийными устройствами).
- Управление и синхронизация (модуль ввода-вывода с одной стороны подключен 'большим' интерфейсом к высокоскоростной шине, к которой также подключены память и процессор, а с другой стороны 'малым' интерфейсом к медленным устройствам (к периферии), у которых могут быть специфические сигналы управления и синхронизации).
- Обмен информацией
- Распознавание команд
- Пересылка данных (от периферии в процессор либо в память и обратно)
- Извещение о состоянии (извещение процессора о состоянии периферийных устройств)
- Буферизация данных
- Обнаружение ошибок (и извещение об этом процессора)
К одному модулю ввода-вывода может быть подключено много периферийных устройств, может быть много самих модулей ввода-вывода. В таком случае старшая часть адреса, которую выставляет процессор, указывает на конкретный модуль ввода-вывода, следующие несколько бит информации указывают на конкретное периферийное устройство, внутри этого модуля ввода-вывода, а последние биты указывают на конкретный регистр конкретного устройства.
![../.pic/Lectures/20.%20Input-Output%20System/fig_08.png](../.pic/Lectures/20.%20Input-Output%20System/fig_08.png)
*Рис. 8. Структура модуля ввода-вывода.*
Модуль ввода-вывода — это прослойка между шиной и периферийными устройствами, у которой с одной стороны реализован контроллер 'большого' интерфейса, с другой стороны контроллеры 'малых' интерфейсов, а в середине некая логика управления, с помощью которой процессор может обмениваться информацией между интерфейсами.
Системы ввода-вывода различают по методу управления вводом-выводом.
### Ввод-вывод с опросом
- Плюсы: простота.
- Минусы: процессор постоянно занимает шину; процессор не делает ничего полезного, он занят ожиданием устройства ввода, которое может генерировать информацию миллионы тактов процессора.
Процессор получает данные от периферийного устройства по следующей схеме:
![../.pic/Lectures/20.%20Input-Output%20System/fig_09.png](../.pic/Lectures/20.%20Input-Output%20System/fig_09.png)
*Рис. 9. Алгоритм ввода-вывода с опросом.*
### Ввод-вывод с прерываниями
- Плюсы: процессор не ждет периферия сгенерирует новую информации.
- Минусы: процессору приходится перекидывать информацию в основную память через себя.
Метод состоит из двух частей:
- Инициализация прерывания (сообщить модулю ввода-вывода, что мы ждем информацию от какого-то периферийного устройства, после чего разрешаем прерывания от этого модуля ввода-вывода).
- Обработка прерывания (процесс просыпается и начинает читать из регистра состояний модули ввода-вывода).
![../.pic/Lectures/20.%20Input-Output%20System/fig_10.png](../.pic/Lectures/20.%20Input-Output%20System/fig_10.png)
*Рис. 10. Алгоритм ввода-вывода с прерываниями.*
### Прямой доступ к памяти (ПДП или Direct Memory Access — DMA)
- Плюсы: процессор не занимается пересылкой данных.
- Минусы: сложность реализации в высокопроизводительных системах с виртуальной и кэш памятью.
Контроллер прямого доступа к памяти — это устройство, которое берет на себя задачу переброски информации из периферийных устройств в основную память либо наоборот из основной памяти в периферийное устройство в обход процессора.
![../.pic/Lectures/20.%20Input-Output%20System/fig_11.png](../.pic/Lectures/20.%20Input-Output%20System/fig_11.png)
*Рис. 11. Схема с контроллером прямого доступа к памяти.*
Получение доступа к шине КПДП:
1. Периферийное устройство по специальной линии делает запрос контроллеру прямого доступа к памяти о том, что нужно передать данные в основную память.
2. КПДП формирует сигнал Запрос ПДП, который отправляется в центральный процессор.
3. ЦП видит запрос прямого доступа к памяти, отключается от системной шины и формирует сигнал Подтверждения ПДП
4. КПДП выполняет пересылку данных.
Либо из центрального процессора, либо из периферийного устройства (в зависимости от конфигурации системы) КПДП получит адрес, с которого начнется запись в основную память (в случае переброски информации из периферийных устройств в основную память).
Передача данных из периферийного устройства в основную память:
1. КПДП запрашивает данные у периферийного устройства;
2. Периферийное устройство передает информацию в регистр данных;
3. КПДП выставляет адрес основной памяти;
4. КПДП передает информацию из регистра данных в основную память;
5. Уменьшается значение счетчика данных;
6. Увеличивается адрес;
7. Пока не закончился счетчик к пункту 1.
В одном устройстве может быть несколько DMA, если есть несколько шин.
DMA могут работать в разных режимах (режимы отличаются тем, насколько долго захватывают шину, то есть останавливают передачу информации между другими блоками системы):
- Взрывной режим (Burst mod) — контроллер захватывает шину пока не закончит свои дела;
- Прозрачный режим — контроллер осуществляет пересылку информации только тогда, когда никто другой не занимает шину;
- Делать по одно посылке за раз и отпускать шину на арбитраж.
## Конфигурации ПДП(DMA)
![../.pic/Lectures/20.%20Input-Output%20System/fig_12.png](../.pic/Lectures/20.%20Input-Output%20System/fig_12.png)
*Рис. 12. Конфигурации ПДП.*
1. Подключен к шине как устройство;
2. Выполняет роль модуля ввода-вывода для подключенного к нему набора периферийных устройств;
3. КПДП подключается с одной стороны по выделенной шине к периферийным устройствам, а с другой к системной шине.
## Канальная система ввода-вывода
Канальная система ввода-вывода — это не просто прямой доступ к памяти, в ней есть специализированный процессор, который используется для того, чтобы связываться с периферийными устройствами.
![../.pic/Lectures/20.%20Input-Output%20System/fig_13.png](../.pic/Lectures/20.%20Input-Output%20System/fig_13.png)
*Рис. 13. Схема канальной системы ввода вывода.*
Канал(процессор) ввода-вывода — это контроллер прямого доступа к памяти, выполненный в виде специализированного процессора, которому можно давать сложные запросы и эти запросы будут обрабатываться программно.
Канал ввода-вывода имеет свою локальную память. Процессор ввода-вывода обращается за своими программами, которые осуществляют ввод-вывод, в основную память.
Каналы и процессоры ввода-вывода используются для подключения большого количества периферийных устройств. Благодаря им центральный процессор более эффективно тратит свое время.
## RAID
RAID (Redundant Array of Independent Disks) — избыточный массив независимых дисков.
Это объединение нескольких винчестеров, так чтобы повысить надежность хранения информации. Существуют разные способы объединения винчестеров в группу.
![../.pic/Lectures/20.%20Input-Output%20System/fig_14.png](../.pic/Lectures/20.%20Input-Output%20System/fig_14.png)
*Рис. 14. Классификация Паттерсона и Хеннесси.*
- RAID 0: не повышает надежность, объединяет диски с целью более быстрого доступа к ним.
- RAID 1: информация клонируется на другие диски.
- RAID 2: создается избыточность, для того чтобы можно было восстановить данные.
- RAID 3: складываются по модулю 2 новое значение на одном из дисков и не изменившиеся значения на остальных трех дисках и записываются на избыточный диск. Получившееся значение называется битом четности (битом паритета).
- RAID 4: складываются по модулю 2 бит четности, новое и старое значения элемента на одном из дисков и записываются на избыточный диск. Получается новый бит четности.
![../.pic/Lectures/20.%20Input-Output%20System/fig_15.png](../.pic/Lectures/20.%20Input-Output%20System/fig_15.png)
*Рис. 15. Расчет бита четности при обновлении данных в RAID 3 и RAID 4.*
- RAID 5: биты четности раскиданы по всем дискам, что позволяет добавлять новые значения параллельно.
![../.pic/Lectures/20.%20Input-Output%20System/fig_16.png](../.pic/Lectures/20.%20Input-Output%20System/fig_16.png)
*Рис. 16. Распределение битов четности в RAID 4 и RAID 5.*
- RAID 6: RAID 5, у которого вдвое увеличено количество избыточных контрольных дисков, то есть 2 диска, в которых хранятся паритеты, что повышает надежность.
## JTAG (Join Test Action Group)
JTAG — это четырехпроводной интерфейс, с помощью которого можно проверить правильно ли работает устройство. Его часто иcпользуют для отладки процессорной системы.
Граничное сканирование (Boundary Scan) — это способ тестирования микросхемы. Он заключается в том, что между каждой ножкой и ядром помещается ячейка памяти, эти ячейки соединяются как сдвиговый регистр. С помощью управляющих сигналов и сдвигового регистра мы можем считать информацию с ножек или выставить сигналы в ячейки памяти, что позволяет нам проверить работу всех выводов микросхемы, не подключаясь к ним. (Например, нам нужно узнать значение на определенной ножке. Мы сообщаем контроллеру JTAG, что нужно сохранить информацию с нее в ячейку памяти. Когда ячейка получит текущее состояние этого вывода, с помощью сдвигового регистра выдвигаем эту информацию на выход, где считываем ее).
![../.pic/Lectures/20.%20Input-Output%20System/fig_17.png](../.pic/Lectures/20.%20Input-Output%20System/fig_17.png)
*Рис. 17. Схема JTAG.*
TMS — управление.
TDI и TDO — входной и выходной сигналы.
TCK — сигнал тактирования.
![../.pic/Lectures/20.%20Input-Output%20System/fig_18.png](../.pic/Lectures/20.%20Input-Output%20System/fig_18.png)
*Рис. 18. Сканирующая цепочка.*
![../.pic/Lectures/20.%20Input-Output%20System/fig_19.png](../.pic/Lectures/20.%20Input-Output%20System/fig_19.png)
*Рис. 19. Ячейка памяти.*
Input Mux и Output Mux — мультиплексоры.
Data_In и Data_Out — вход и выход данных ножки.
Scan In и Scan Out — вход и выход сканирующей цепочки.
Shift Register — один из триггеров сдвигового регистра (прикидываемся значениями с ножки).
Сигналами ShiftDR, Mode и др. управляют сигналы TMS и TCK. Они управляют не напрямую, а подключены к автомату состояний, который работает таким образом:
![../.pic/Lectures/20.%20Input-Output%20System/fig_20.png](../.pic/Lectures/20.%20Input-Output%20System/fig_20.png)
*Рис. 20. FSM (Finit State Machine) — конечный автомат (автомат состояний).*
где DR — Data Register, IR — Instruction Register
Автомат состояний используется для того, чтобы по-байтово битик за битиком загрузить в регистр нужную информацию.
![../.pic/Lectures/20.%20Input-Output%20System/fig_21.png](../.pic/Lectures/20.%20Input-Output%20System/fig_21.png)
*Рис. 21. Структура JTAG.*
TAP Controller устроен как автомат состояний. Он формирует сигналы для JTAG.
## Основные материалы лекции
1. [Ссылка](https://www.youtube.com/watch?v=XtoTG6qht3A&list=PL0def37HEo5KHPjwK7A5bd4RJGg4djPVf&index=21) на видеозапись лекции.
## Дополнительные материалы к лекции