link980 link981 link982 link983 link984 link985 link986 link987 link988 link989 link990 link991 link992 link993 link994 link995 link996 link997 link998 link999 link1000 link1001 link1002 link1003 link1004 link1005 link1006 link1007 link1008 link1009 link1010 link1011 link1012 link1013 link1014 link1015 link1016 link1017 link1018 link1019 link1020 link1021 link1022 link1023 link1024 link1025 link1026 link1027 link1028 link1029 link1030 link1031 link1032 link1033 link1034 link1035 link1036 link1037 link1038 link1039 link1040 link1041 link1042 link1043 link1044 link1045 link1046 link1047 link1048 link1049 link1050 link1051 link1052 link1053 link1054 link1055 link1056 link1057 link1058 link1059 link1060 link1061 link1062 link1063 link1064 link1065 link1066 link1067 link1068 link1069 link1070 link1071 link1072 link1073 link1074 link1075 link1076 link1077 link1078 link1079 link1080 link1081 link1082 link1083 link1084 link1085 link1086 link1087 link1088 link1089 link1090 link1091 link1092 link1093 link1094 link1095 link1096 link1097 link1098 link1099 link1100 link1101 link1102 link1103 link1104 link1105 link1106 link1107 link1108 link1109 link1110 link1111 link1112 link1113 link1114 link1115 link1116 link1117

PersCom — Компьютерная Энциклопедия Компьютерная Энциклопедия

Ввод-вывод

Подключение периферийных устройств к ЭВМ

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

Термином “периферийное устройство” (ПУ) будем называть устройства самой разнообразной природы, которые являются внешними по отношению к вычислительному ядру (процессор + память) и которые по скорости своей работы не согласованы с процессором. Таким естественным образом согласована по скорости работы с процессором основная память. Для лучшего согласования используются дополнительные структурные элементы, такие, как КЭШ-память, дополнительные локальные шины для доступа к памяти и др. (см. более подробно в предыдущих разделах). Как правило, периферийные устройства "работают" медленнее процессора, т.е. передают или принимают данные медленнее, чем это в состоянии делать процессор, обмениваясь по магистрали (например, с памятью). Но, с точки зрения передачи информации по магистрали в рамках упрощенной схемы ЦВМ, периферийное устройство, подключенное к магистрали ОЗУ, мало отличается от памяти.

Приведем два примера простых периферийных устройств персонального компьютера.

1. Таймер. Его основная функция — обеспечить программе возможность, читая содержимое таймера, получать информацию о истекшем времени, подобно тому, как человек получает ее, поглядывая на часы. Таймер в том или ином виде реализован практически в любой вычислительной системе.
Основной элемент таймера — счетчик, на счетный вход которого постоянно поступает последовательность импульсов от генератора стабильной частоты. Вследствие этого, содержимое счетчика таймера постоянно изменяется во времени. Программа может прочитать содержимое счетчика таймера (скопировать это значение в переменную).
Таймер персонального IBM PC-совместимого компьютера содержит три почти одинаковых канала. Счетчик каждого канала имеет 16 двоичных разрядов. Таким образом, программа может считать из канала таймера значение.

2. Последовательный (коммуникационный) интерфейс (иначе называемый COM-портом). Это периферийное устройство на самом деле включает два отдельных независимых узла: передатчик и приемник. Байт, записанный программой в регистр данных передатчика, немедленно после записи начинает бит за битом передаваться через последовательный интерфейс.

Требования к организации и решения систем ввода-вывода

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

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

Указанные требования решаются за счет:

  • Унифицированных (независящих от типа внешнего устройства) интерфейсов;
  • Унифицированных соединений;
  • Унифицированного программирования.

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

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

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

Основными архитектурами соединений устройств являются:

  • Каскадное соединение. Информация передается только в одном направлении: от предыдущего функционального элемента (ФЭ) к последующему. Если сообщение не адресовано данному ФЭ, она транслируется без изменений. Такая структура характеризуется малой скоростью обмена, но имеет минимальное число шин.
  • Радиальное соединение. Центральный ФЭ связывается с каждым ФЭ. Такая система обладает наибольшей надежностью и производительностью, но ограничена по числу ФЭ. В ней невозможен непосредственный обмен между ФЭ.
  • Магистрально-модульное соединение. Все устройства, составляющие компьютер, включая и микропроцессор, организуются в виде модулей, которые соединяются между собой общей магистралью (см. рисунок ниже). Обмен информацией по магистрали удовлетворяет требованиям некоторого общего интерфейса, установленного для магистрали данного типа. Каждый модуль подключается к магистрали посредством специальных интерфейсных схем (Иi).

Схема магистрально-модульного соединения

На интерфейсные схемы модулей возлагаются следующие задачи:

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

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

Унификация программирования достигается за счет унифицированных форматов команд в ЭВМ и унифицированных форматов регистров ПУ. На уровне операционной системы унификация достигается путем использования драйверов внешних устройств.

Модель внешнего устройства для программиста

Каждое периферийное устройство имеет в своем составе один или несколько регистров, содержимое которых можно прочитать или записать командами программы. Сложные периферийные устройства могут содержать несколько десятков регистров. Таким образом, общее количество регистров периферийных устройств в системе может быть значительным.

Словосочетанием “модель периферийного устройства для программиста” будем называть набор регистров в периферийном устройстве, которые можно прочитать-записать программно.

Простейшая модель для программиста внешнего устройства может содержать довольно мало регистров: — регистр состояния (статуса), регистр управления, регистр (буфер) данных.

Применяют два основных способа доступа к регистрам ПУ:

  1. Произвольной адресации регистров;
  2. С индексацией регистров (SB).

В первом случае процессор по команде может записать/считать данные в любой регистр ПУ. Если ПУ имеет большое количество регистров, например, более 100, как в sound blaster, используют второй способ. В этом случае ПУ имеет два регистра: индексный регистр и регистр данных. При записи в индексный регистр заносим номер регистра ПУ, в который хотим записать, затем в регистр данных заносим записываемое число.

Адресация регистров внешнего устройства:

  • изолированный ввод-вывод (порты);
  • отображение на память.

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

В других процессорах регистры ПУ имеют свою систему адресации, никак не связанную с адресацией ячеек памяти. Для обращения к регистрам ПУ в системе команд имеются специальные команды ввода- вывода. Такая организация обмена с ПУ носит название "изолированный ввод-вывод". Для обозначения программно- доступных регистров периферийных устройств в компьютерной литературе используют термин "порты ввода-вывода".

 Пример 1. Нулевой канал таймера имеет порт данных с адресом 40h
и порт управления с адресом 43h.
Пример 2. Приемник последовательного интерфейса COM1 имеет
порт данных с адресом 0378h и порт состояния (статуса) с адресом
03FDh. Младший бит в порте состояния (флаг окончания приема)
устанавливается в 1, если приемник принял извне байт.

Оба вида адресации аппаратно поддержаны со стороны процессора. В первом случае в адресном пространстве процессора выделяется область адресов для ПУ. Адреса из этой области транслируются напрямую, без использования схемы преобразования (логический адрес равен физическому). В процессоре Motorola 68040 этот механизм называется “прозрачная трансляция адресов”. Для указания выделенной области регистров ПУ используются специальные регистры. В этих регистрах дополнительно имеются поля, определяющие разрешение/запрещение КЭШирования, тип доступа r/w и др. На рисунке (см. рисунок ниже) представлена схема страничной трансляции.

Схема страничной трансляции процессора МС68040

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

 

Формат регистров прозрачной трансляции

Значения полей регистров ТТО и ТТ1:

LOGICAL ADDRESS BASE — значение А31 — А24, определяют блок прозрачной трансляции;

LOGICAL ADDRESS MASK — игнорируемые разряды А31 — А24;

Е (Enable) — разрешение: определяет возможность прозрачной трансляции (Е=1 разрешена).

Cl (Cashe Inhibit) — КЭШ запрещен: определяет возможность использования КЭШа ( С1=0 означает, что КЭШ используется);

R/W — чтение/запись: определяет тип доступа в транслируемом блоке: (R/W=0 — запись; R/W=1 — чтение);

RWM (Read/Write Mask) — маска чтения-записи: определяет достоверность поля R/W (RWM=0 — поле используется);

FC BASE (Function Code Base) — значение функционального кода блока прозрачной трансляции;

FC MASK (Function Code Mask) — игнорируемые биты функциональною кода.

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

В процессорах семейства х86 использован изолированный ввод-вывод. На шине процессора имеются специальные сигналы. При обращении к памяти вырабатываются стробы MEMR, MEMW, а к ПУ — стробы I/OR, I/OW. Схема подключения приведена на рисунке (см. рисунок ниже).

 

Схема подключения ПУ

В составе системы команд имеются следующие две команды ввода-вывода:

  1. in — ввод 1/2/4-байтового элемента данных из порта в регистр процессора al/ax/eax;
  2. out — вывод 1/2/4-байтового элемента данных из регистра al/ax/eax в порт.

Номер порта операнда-источника в команде in или операнда-приемника в команде out можно задать двумя способами: непосредственной адресацией или косвенно-регистровой с использованием только регистра dx.

!Примеры.

in                    al,040h; ввести байт в al из порта 40h

mov               dx,0378h; записать номер порта 0378h в регистр dx

in                    al,dx; ввести байт в al из порта 0378h

mov               al,049h; записать байт 49h в регистр al

out                 dx,al; вывести байт из al в порт, номер которого содержится в dx

Кроме того, в системе команд есть две строковые (цепочечные) команды ввода-вывода:

  1. insb / insw / insd - ввод из порта цепочки (строки) байтов/слов/двойных слов в последовательные адреса памяти;
  2. outsb / outsw /outsd — вывод цепочки (строки) байтов/слов/двойных слов из последовательных адресов памяти в порт.