mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
* Корректировки конспектов лекций * Корректировка конспекта лекции 5 * Корректировка конспекта лекции 8 * Корректировка конспекта лекции 9 * Корректировка конспекта лекции 10 * Корректировка конспекта лекции 11 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 13 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 14 * Корректировка конспекта лекции 16 * Корректировка конспекта лекции 17 * Корректировка конспекта лекции * Корректировка конспекта лекции 20 * Корректировка конспекта лекции 21 * Корректировка конспекта лекции 22 * Корректировка конспекта лекции 23 * Корректировка конспекта лекции 13 * Корректировка конспекта лекции 12 * Корректировка конспекта лекции 20
302 lines
29 KiB
Markdown
302 lines
29 KiB
Markdown
# Лекция 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)
|
||
- [Основные материалы лекции](#основные-материалы-лекции)
|
||
- [Дополнительные материалы к лекции](#дополнительные-материалы-к-лекции)
|
||
|
||
## Системы ввода-вывода
|
||
|
||
> *Система ввода-вывода* — это комплекс обмена информацией с внешними устройствами.
|
||
|
||
К системе ввода-вывода можно отнести и способы подключения к системной шине различного оборудования, и процедуры взаимодействия процессора с этим оборудованием, и команды процессора, предназначенные для обмена данными с внешними устройствами.
|
||
|
||
Системы ввода-вывода различают по способам подключения к процессору.
|
||
|
||
### Система ввода-вывода подключена к центральному процессору с помощью отдельной шины
|
||
|
||

|
||
|
||
*Рис. 1. Отдельная шина системы ввода-вывода.*
|
||
|
||
- Плюсы: система ввода-вывода отделена от основной памяти и для нее может быть соблюдена своя специфика, например меньшие скорости, определенный интерфейс работы, который больше подходит под данные системы.
|
||
- Минусы: много точек подключения, меньшая надежность, большие габариты и т.д.
|
||
|
||
### Система ввода-вывода имеет отдельную от памяти шину управления, но совместную шину адреса и данных
|
||
|
||

|
||
|
||
*Рис. 2. Система ввода-вывода с отдельной шиной управления.*
|
||
|
||
- Плюсы: специализация под систему ввода-вывода (т.к. управление осуществляется по другой линии), используются отдельные инструкции для работы с вводом-выводом.
|
||
|
||
Архитектура x86 использует данный тип подсистемы ввода-вывода.
|
||
|
||
### Система ввода-вывода имеет единую шину с основной памятью
|
||
|
||

|
||
|
||
*Рис. 3. Единая шина для системы ввода-вывода и памяти.*
|
||
|
||
- Плюсы: в случае совместного адресного пространства мы имеем гибкий размер системы ввода-вывода (то есть мы можем уменьшить количество памяти и увеличить количество систем ввода-вывода или наоборот).
|
||
- Минусы: поскольку для доступа к регистрам модулей ввода-вывода используется та же шина, что и для доступа к памяти, процессор использует в обоих случаях одни и те же инструкции, что отрицательно сказывается на читаемости ассемблерного кода.
|
||
|
||
Архитектуры RISC-V и MIPS используют данный тип подсистемы ввода-вывода.
|
||
|
||
## Адресное пространство
|
||
|
||
> *Адресное пространство* — совокупность всех допустимых адресов каких-либо объектов вычислительной системы.
|
||
|
||
Системы ввода-вывода различают по организации адресного пространства.
|
||
|
||
### Системы с выделенным адресным пространством
|
||
|
||

|
||
|
||
*Рис. 4. Системы с выделенным адресным пространством.*
|
||
|
||
В выделенном адресном пространстве ячейки памяти отделены от модулей ввода-вывода. То есть процессор имеет 2 шины. Одна направлена для памяти, другая для ввода-вывода.
|
||
|
||
Пример системы с выделенным адресным пространством приведен на рис. 1.
|
||
|
||
### Системы с совмещенным (совместным) адресным пространством
|
||
|
||

|
||
|
||
*Рис. 5. Системы с совмещенным (совместным) адресным пространством.*
|
||
|
||
В совместном адресном пространстве есть только один набор адресов. Обращаясь по одним адресам мы попадаем в память, а по другим в управляющие регистры, которые ассоциированы с периферийными устройствами (т.е устройствами ввода-вывода, которые подключаются к системе и связывают её с внешним миром).
|
||
|
||
Пример системы с совместным адресным пространством приведен на рис. 3.
|
||
|
||
При выделенном адресном пространстве можно разрабатывать систему ввода-вывода отдельно от памяти. В случае совместного этого не получится потому, что система ввода-вывода и память должны удовлетворять одним и тем же требованиям по связи (т.е. передачи информации).
|
||
|
||

|
||
|
||
*Рис. 6. Совместное адресное пространство с дешифратором адреса.*
|
||
|
||
## Структура периферийного устройства
|
||
|
||
Все периферийные устройства можно свести к трём категориям:
|
||
|
||
- Для общения с пользователем (принтеры, мониторы и др.)
|
||
- Для общения с вычислительной машиной (внешние устройства, которые отдают или получают информацию от внешнего мира через различные датчики, а также системы хранения информации)
|
||
- Для связи с удаленными устройствами (передача информации на большие расстояния)
|
||
|
||
Обобщенно любое периферийное устройство можно представить в виде:
|
||
|
||

|
||
|
||
*Рис. 7. Периферийное устройство.*
|
||
|
||
Периферийное устройство как-то взаимодействует с внешней средой. (Например датчик температуры. На преобразователь приходит температура, каким-то образом преобразуется и отправляется в буферную память в виде ноликов и единичек, которые характеризуют среду.)
|
||
|
||
Буферная память и логика управления связана с модулями ввода-вывода условными сигналами (условные, так как для связи с модулями ввода-вывода используется 'малый' интерфейс).
|
||
|
||
Модуль ввода-вывода по данному интерфейсу генерирует различные сигналы управления для периферийного устройства, 'говоря' что нужно делать, и при этом собирает сигналы состояния, чтобы понимать в каком состоянии находится устройство (может быть у него какие-то проблемы или ошибки, закончило ли оно преобразование информации (например можно узнать храниться ли что-то в буферной памяти и можно ли это забирать)).
|
||
|
||
## Модули ввода-вывода
|
||
|
||
Основные функции модулей ввода-вывода:
|
||
|
||
- Локализация данных (выделение некоторого адресного пространства внутри которого процессор может через модуль ввода-вывода управлять периферийными устройствами).
|
||
- Управление и синхронизация (модуль ввода-вывода с одной стороны подключен 'большим' интерфейсом к высокоскоростной шине, к которой также подключены память и процессор, а с другой стороны 'малым' интерфейсом к медленным устройствам (к периферии), у которых могут быть специфические сигналы управления и синхронизации).
|
||
- Обмен информацией
|
||
- Распознавание команд
|
||
- Пересылка данных (от периферии в процессор либо в память и обратно)
|
||
- Извещение о состоянии (извещение процессора о состоянии периферийных устройств)
|
||
- Буферизация данных
|
||
- Обнаружение ошибок (и извещение об этом процессора)
|
||
|
||
К одному модулю ввода-вывода может быть подключено много периферийных устройств, может быть много самих модулей ввода-вывода. В таком случае старшая часть адреса, которую выставляет процессор, указывает на конкретный модуль ввода-вывода, следующие несколько бит информации указывают на конкретное периферийное устройство, внутри этого модуля ввода-вывода, а последние биты указывают на конкретный регистр конкретного устройства.
|
||
|
||

|
||
|
||
*Рис. 8. Структура модуля ввода-вывода.*
|
||
|
||
Модуль ввода-вывода — это прослойка между шиной и периферийными устройствами, у которой с одной стороны реализован контроллер 'большого' интерфейса, с другой стороны контроллеры 'малых' интерфейсов, а в середине некая логика управления, с помощью которой процессор может обмениваться информацией между интерфейсами.
|
||
|
||
Системы ввода-вывода различают по методу управления вводом-выводом.
|
||
|
||
### Ввод-вывод с опросом
|
||
|
||
- Плюсы: простота.
|
||
- Минусы: процессор постоянно занимает шину; процессор не делает ничего полезного, он занят ожиданием устройства ввода, которое может генерировать информацию миллионы тактов процессора.
|
||
|
||
Процессор получает данные от периферийного устройства по следующей схеме:
|
||
|
||

|
||
|
||
*Рис. 9. Алгоритм ввода-вывода с опросом.*
|
||
|
||
### Ввод-вывод с прерываниями
|
||
|
||
- Плюсы: процессор не ждет, пока периферия сгенерирует новую информациию.
|
||
- Минусы: процессору приходится перекидывать информацию в основную память через себя.
|
||
|
||
Метод состоит из двух частей:
|
||
|
||
- Инициализация прерывания (сообщить модулю ввода-вывода, что мы ждем информацию от какого-то периферийного устройства, после чего разрешаем прерывания от этого модуля ввода-вывода).
|
||
- Обработка прерывания (процесс реагирует и начинает читать из регистра состояний модули ввода-вывода).
|
||
|
||

|
||
|
||
*Рис. 10. Алгоритм ввода-вывода с прерываниями.*
|
||
|
||
### Прямой доступ к памяти (ПДП или Direct Memory Access — DMA)
|
||
|
||
- Плюсы: процессор не занимается пересылкой данных.
|
||
- Минусы: сложность реализации в высокопроизводительных системах с виртуальной и кэш памятью.
|
||
|
||
Контроллер прямого доступа к памяти — это устройство, которое берет на себя задачу переброски информации из периферийных устройств в основную память либо наоборот из основной памяти в периферийное устройство в обход процессора.
|
||
|
||

|
||
|
||
*Рис. 11. Схема с контроллером прямого доступа к памяти.*
|
||
|
||
Получение доступа к шине КПДП:
|
||
|
||
1. Периферийное устройство по специальной линии делает запрос контроллеру прямого доступа к памяти о том, что нужно передать данные в основную память.
|
||
2. КПДП формирует сигнал Запрос ПДП, который отправляется в центральный процессор.
|
||
3. ЦП видит запрос прямого доступа к памяти, отключается от системной шины и формирует сигнал Подтверждения ПДП
|
||
4. КПДП выполняет пересылку данных.
|
||
|
||
Либо из центрального процессора, либо из периферийного устройства (в зависимости от конфигурации системы) КПДП получит адрес, с которого начнется запись в основную память (в случае переброски информации из периферийных устройств в основную память).
|
||
|
||
Передача данных из периферийного устройства в основную память:
|
||
|
||
1. КПДП запрашивает данные у периферийного устройства;
|
||
2. Периферийное устройство передает информацию в регистр данных;
|
||
3. КПДП выставляет адрес основной памяти;
|
||
4. КПДП передает информацию из регистра данных в основную память;
|
||
5. Уменьшается значение счетчика данных;
|
||
6. Увеличивается адрес;
|
||
7. Пока не закончился счетчик к пункту 1.
|
||
|
||
В одном устройстве может быть несколько DMA, если есть несколько шин.
|
||
|
||
DMA могут работать в разных режимах (режимы отличаются тем, насколько долго захватывают шину, то есть останавливают передачу информации между другими блоками системы):
|
||
|
||
- Взрывной режим (Burst mode) — контроллер захватывает шину пока не закончит свои дела;
|
||
- Прозрачный режим (Transparent mode) — контроллер осуществляет пересылку информации только тогда, когда никто другой не занимает шину;
|
||
- Режим перехвата цикла (Cycle stealing mode) - контроллер делает по одной посылке за раз и отпускать шину на арбитраж.
|
||
|
||
## Конфигурации ПДП(DMA)
|
||
|
||

|
||
|
||
*Рис. 12. Конфигурации ПДП.*
|
||
|
||
1. Подключен к шине как устройство;
|
||
2. Выполняет роль модуля ввода-вывода для подключенного к нему набора периферийных устройств;
|
||
3. КПДП подключается с одной стороны по выделенной шине к периферийным устройствам, а с другой к системной шине.
|
||
|
||
## Канальная система ввода-вывода
|
||
|
||
Канальная система ввода-вывода — это не просто прямой доступ к памяти, в ней есть специализированный процессор, который используется для того, чтобы связываться с периферийными устройствами.
|
||
|
||

|
||
|
||
*Рис. 13. Схема канальной системы ввода вывода.*
|
||
|
||
Канал (процессор) ввода-вывода — это контроллер прямого доступа к памяти, выполненный в виде специализированного процессора, которому можно давать сложные запросы и эти запросы будут обрабатываться программно.
|
||
|
||
Канал ввода-вывода имеет свою локальную память. Процессор ввода-вывода обращается за своими программами, которые осуществляют ввод-вывод, в основную память.
|
||
|
||
Каналы и процессоры ввода-вывода используются для подключения большого количества периферийных устройств. Благодаря им центральный процессор более эффективно тратит свое время.
|
||
|
||
## RAID
|
||
|
||
RAID (Redundant Array of Independent Disks) — избыточный массив независимых дисков.
|
||
|
||
Это объединение нескольких винчестеров, так чтобы повысить надежность хранения информации. Существуют разные способы объединения винчестеров в группу.
|
||
|
||

|
||
|
||
*Рис. 14. Классификация Паттерсона и Хеннесси.*
|
||
|
||
- RAID 0: не повышает надежность, объединяет диски с целью более быстрого доступа к ним.
|
||
- RAID 1: информация клонируется на другие диски.
|
||
- RAID 2: создается избыточность, для того чтобы можно было восстановить данные.
|
||
- RAID 3: складываются по модулю 2 новое значение на одном из дисков и не изменившиеся значения на остальных трех дисках и записываются на избыточный диск. Получившееся значение называется битом четности (битом паритета).
|
||
- RAID 4: складываются по модулю 2 бит четности, новое и старое значения элемента на одном из дисков и записываются на избыточный диск. Получается новый бит четности.
|
||
|
||

|
||
|
||
*Рис. 15. Расчет бита четности при обновлении данных в RAID 3 и RAID 4.*
|
||
|
||
- RAID 5: биты четности раскиданы по всем дискам, что позволяет добавлять новые значения параллельно.
|
||
|
||

|
||
|
||
*Рис. 16. Распределение битов четности в RAID 4 и RAID 5.*
|
||
|
||
- RAID 6: RAID 5, у которого вдвое увеличено количество избыточных контрольных дисков, то есть 2 диска, в которых хранятся паритеты, что повышает надежность.
|
||
|
||
## JTAG (Join Test Action Group)
|
||
|
||
JTAG — это четырехпроводной интерфейс, с помощью которого можно проверить правильно ли работает устройство. Его часто иcпользуют для отладки процессорной системы.
|
||
|
||
Граничное сканирование (Boundary Scan) — это способ тестирования микросхемы. Он заключается в том, что между каждой ножкой и ядром помещается ячейка памяти, эти ячейки соединяются как сдвиговый регистр. С помощью управляющих сигналов и сдвигового регистра мы можем считать информацию с ножек или выставить сигналы в ячейки памяти, что позволяет нам проверить работу всех выводов микросхемы, не подключаясь к ним. (Например, нам нужно узнать значение на определенной ножке. Мы сообщаем контроллеру JTAG, что нужно сохранить информацию с нее в ячейку памяти. Когда ячейка получит текущее состояние этого вывода, с помощью сдвигового регистра выдвигаем эту информацию на выход, где считываем ее).
|
||
|
||

|
||
|
||
*Рис. 17. Схема JTAG.*
|
||
|
||
TMS — управление.
|
||
TDI и TDO — входной и выходной сигналы.
|
||
TCK — сигнал тактирования.
|
||
|
||

|
||
|
||
*Рис. 18. Сканирующая цепочка.*
|
||
|
||

|
||
|
||
*Рис. 19. Ячейка памяти.*
|
||
|
||
Input Mux и Output Mux — мультиплексоры.
|
||
Data_In и Data_Out — вход и выход данных ножки.
|
||
Scan In и Scan Out — вход и выход сканирующей цепочки.
|
||
Shift Register — один из триггеров сдвигового регистра (прикидываемся значениями с ножки).
|
||
|
||
Сигналами ShiftDR, Mode и др. управляют сигналы TMS и TCK. Они управляют не напрямую, а подключены к автомату состояний, который работает таким образом:
|
||
|
||

|
||
|
||
*Рис. 20. FSM (Finite State Machine) — конечный автомат (автомат состояний).*
|
||
|
||
где DR — Data Register, IR — Instruction Register
|
||
|
||
Автомат состояний используется для того, чтобы по-байтово битик за битиком загрузить в регистр нужную информацию.
|
||
|
||

|
||
|
||
*Рис. 21. Структура JTAG.*
|
||
|
||
TAP Controller устроен как автомат состояний. Он формирует сигналы для JTAG.
|
||
|
||
## Основные материалы лекции
|
||
|
||
1. [Ссылка](https://www.youtube.com/watch?v=XtoTG6qht3A&list=PL0def37HEo5KHPjwK7A5bd4RJGg4djPVf&index=21) на видеозапись лекции.
|
||
|
||
## Дополнительные материалы к лекции
|