Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.39 Mб
Скачать

11. Принципы организации системы ввода/вывода в компьютерах.

  1. Общие положения

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

  • Центральный процессор ЦП.

  • Основная электронная память ОП.

  • Периферийные устройства ПУ.

Совокупность ЦП и ОЗУ часто называют ядром компьютера.

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

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

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

Напомним также, что периферийные устройства состоят из двух типов устройств:

а) Внешние запоминающие устройства (ВЗУ), служащие для хранения, ввода и вывода информации, объем которых на несколько порядков превышает объем основной памяти компьютера (HDD, FDD, CD, DVD, Streamer и др);

в) Устройства ввода/вывода (УВВ), предназначенные для хранения, ввода и вывода информации формируемой или используемой внешними устройствами в реальном масштабе времени. Эта информация может быть самого различного вида (символьная кодированная информация, графические данные, аналоговые электрические сигналы и т.д.). Она может быть представлена в различном формате, а также связана с самыми различными источниками (клавиатура, АЦП, ЦАП, модемы, кодировщики, дисплеи, фотосчитыватели, графопостроители, объекты контроля технологических процессов, объекты научного и производственного эксперимента и т.п.).

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

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

Связь же ЦП или ОП с ПУ весьма нестандартна и, как правило, достаточно сложна. Основные проблемы, при таком обмене информации, возникают из-за:

  • Большого разнообразия периферийных устройств.

  • Огромного диапазона скоростей обмена информацией.

  • Разнообразия типов и уровней сигналов обмена.

  • Сложности структуры сигналов обмена.

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

Кроме того, обмен информацией с ПУ может осуществляться параллельными словами или байтами (параллельный интерфейс), например, в случае обмена информацией с жесткими (HDD) или гибкими (FDD) магнитными дисками. Последовательными битами, например, при обмене информацией с клавиатурой, мышью или другими устройствами, подключаемыми через шины USB, Fire Wire. А то и параллельно-последовательными кодами, как в случае обмена информацией с накопителями на магнитной ленте (Streamer).

Поэтому организация каждого ПУ и его связь с компьютером может порождать уникальную проблему.

В современных компьютерах используются три различных принципа организации ввода/вывода информации между ядром компьютера и ПУ.

  • Программируемый ввод/вывод.

  • Ввод/вывод с управлением по прерываниям.

  • Ввод/вывод с прямым доступом к памяти.

2. Программируемый ввод/вывод с активным ожиданием.

Программируемый ввод/вывод с активным ожиданием является самым простым и исторически самым первым методом ввода и вывода информации от внешних устройств.

При программируемом вводе/выводе с активным ожиданием ввод и вывод информации в компьютере осуществляется по специальным командам ввода (IN) и вывода (OUT) c адресацией специальных регистров в периферийных устройствах. Прямая адресация с помощью этих команд позволяет адресовать не более 256 объектов, в связи с тем, что при прямой адресации под адрес выделен 1 байт кода команды. При необходимости увеличения адресного пространства периферийных устройств прибегают к косвенной адресации через регистр DX. В этом случае, адресное пространство ввода/вывода расширяется до 65536 адресов. Отметим, что одно периферийное устройство, как правило, использует несколько портов (адресов) ввода/вывода. А иногда их количество может достигать нескольких десятков. Поэтому дополнительно вводится понятие базового адреса данного периферийного устройства, который является младшим адресом группы портов, принадлежащих этому периферийному устройству (обычно адресу порта регистра данных). Это облегчает процесс программирования, поскольку адреса других портов этого устройства осуществляется путем задания смещения (целое число) относительно базового адреса.

Другим способом, находящим применение в ряде компьютеров (например, в компьютерах «Maсintosh», использующих микропроцессоры фирмы Motorola), является способ, при котором нет специальных команд ввода/вывода. Обращение же к регистрам ПУ осуществляется обычными командами пересылки MOV. При этом, адреса этих регистров являются частью адресного пространства компьютера. Этот способ часто называют «распространением адресов ввода/вывода на память». Он делает адресацию устройств ввода/вывода более гибкой, поскольку позволяет использовать все возможные разновидности адресации: базовой, индексной, базово-индексной и базово-индексной со смещением.

Рис. 11.1 Регистры устройств ввода/вывода простейшего терминала.

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

Рассмотрим пример обращения к двум типам периферийных устройств, клавиатуре и дисплею, как простейшим устройствами с которыми связывается процессор в процессе своего функционирования (см. рис 11.1). Вначале рассмотрим работу регистров клавиатуры. Как только клавиатура сформирует и занесет очередной код символа в свой буферный регистр данных, аппаратно заносится единица в бит регистра состояния клавиатуры, оповещающий о наличии символа в ее регистре данных. При выполнении команды IN, процессор обращается к адресуемому в команде регистру состояния и считывает этот бит наличия символа. Если этот бит равен 0, процессор зацикливается и непрерывно опрашивает регистр состояния клавиатуры до тех пор, пока там не появится 1. После появления 1 в этом бите, процессор считывает байт символа с регистра данных клавиатуры, одновременно сбрасывая бит наличия символа в регистре состояния в 0.

Вывод информации на дисплей осуществляется аналогичным образом. Чтобы вывести символ на экран, программное обеспечение сначала считывает содержимое регистра состояния дисплея, чтобы узнать, установлен ли бит готовности в 1. Если он не установлен, программное обеспечение осуществляет цикл считывания снова и снова до тех пор, пока данный бит не примет значение 1. Это означает, что дисплей готов принять сигнал. Как только дисплей придет в состояние готовности, программное обеспечение заносит символ в буферный регистр данных дисплея, который переносит символ на экран и дает сигнал устройству сбросить бит готовности в регистре состояния в нулевое состояние. Когда символ уже отображен на экране, а устройство управления дисплея готово к обработке следующего символа, бит готовности снова устанавливается в состояние 1.

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

Разновидностью программируемого ввода/вывода является ввод/вывод с использованием цепочечных команд. Этот способ используется в случаях ввода или вывода цепочек данных, которые часто называют строками символов. Разница в этих названиях заключается только в том, что под строкой понимается обычно строка байт (поскольку каждый символ кодируется одним байтом). В то же время, в понятие цепочки данных включаются как последовательность символов, так и последовательность слов или даже двойных слов. При этом, байты, слова и двойные слова, которые составляют цепочку, называют элементами цепочки. Естественно, что буферный регистр данных периферийного устройства, по своей емкости, должен всегда соответствовать размеру элемента цепочки (т.е. быть 8-ми, 16-ти или 32 разрядным). Командами, которые используются при программируемом вводе/выводе цепочек, являются соответственно команды INS (IN String) -INSB, INSW, INSD и команды OUTS (OUT String) - OUTSB, OUTSW, OUTSD, применяемые с соответствующими префиксами повторения REP. Особенностями применения этих команд является то, что перед их исполнением в программе должно быть предусмотрено занесение в соответствующие регистры предварительной информации о длине цепочки, месте ее занесения в память компьютера (начальный адрес размещения цепочки) и направлении считывания (или занесения) элементов цепочки в процессе передачи.

Длина цепочки (число ее элементов) заносится в регистр-счетчик процессора (CX). Направление считывания (или занесения) элементов цепочки в память определяется состоянием флага DF в регистре флагов Flags. При этом, сброс этого флага в 0 командой CLD, определяет передачу в направлении от младших элементов к старшим, а установка этого флага в состояние 1 командой STD, определяет передачу в направление от старших элементов цепочки к младшим. Начальный адрес размещения цепочки при вводе задается исключительно в сегменте ES, содержимым регистра DI (EDI). Начальный адрес передаваемой цепочки при выводе задается в сегменте DS, содержимым регистра SI (ESI). Однако сегмент выводимой цепочки может быть переопределен.

Особенностью работы цепочечных команд является то, что они автоматически выполняют приращение (инкремент) или уменьшение (декремент) содержимого регистров SI (ESI) и DI (EDI) в зависимости от используемой цепочечной команды. При цепочках байт, изменение этих регистров происходит на 1, при цепочках слов – на 2, а при цепочках двойных слов – на 4. Инкремент регистров происходит при флаге DF = 0, а декремент – при флаге DF = 1.

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