Система Ввода-вывода в современных ЭВМ предназначена для связи ЦП с внешними устройствами ввода-вывода информации. Сам ЦП не занимается вводом-выводом, а только инициирует его. Например, в машинах серии ЕС ЭВМ ЦП инициировал ввод-вывод следующей командой:
9В 00 00 0F
Здесь 9В – код команды «Начать Ввод-вывод»
0F – внешнее устройство Ввода-вывода, Печать или АЦПУ (Алфавитно-цифровое печатающее устройство) с адресом 0F.
В этой команде не указано, сколько байтов нужно выводить на печать, откуда взять эти данные, т.е. не указан адрес Памяти, где находятся данные.
В принципе, не указано даже направление Ввода – вывода информации. По адресу устройства нельзя определить идёт ли Ввод информации или Вывод.
Например, жёсткий диск имеет свой единственный уникальный адрес, а на него можно записывать и с него можно читать.
Определение: Термины Ввод и/или Вывод применимы исключительно к ОЗУ или к Памяти ЭВМ. Ввод – это запись в Память. Вывод – это чтение Памяти.
Вводом-выводом в современных ЭВМ занимается отдельный электронный блок. В ЕС ЭВМ эти блоки назывались «Каналами» ввода-вывода и их могло быть:
1. Один Мультиплексный канал для медленных устройств, таких как Печать, устройство ввода с перфокарт, с бумажной перфоленты, дисплейные станции и др. Один мультиплексный канал мог обслуживать много внешних устройств, до 20 и более.
2. Несколько селекторных каналов для быстродействующих устройств, таких как магнитофоны и дисководы. Один селекторный канал мог обслуживать до 20 и более магнитофонов или дисководов.
В ЕС-1035 был один мультиплексный и три селекторных канала ввода-ввода.
По объёму электроники эти 4 канала равнялись процессору.
В современных настольных ПК Вводом-выводом занимается чип «Северный мост». Он работает по такому же алгоритму, как каналы Ввода-вывода в ЕС ЭВМ.
У каналов Ввода-вывода есть своё программирование. Каждый канал имеет своё «Командное» слово и своё «Слово состояния». Они находятся в начальной зарезервированной области ОЗУ.
Эти два слова «Командное слово» и «Слово состояния» имеют свою стандартную структуру. В «Командном» слове находится код команды Ввода-вывода, Адрес памяти, откуда/куда нужно поместить данные с внешнего устройства, и счетчик байтов – сколько нужно ввести или вывести информации.
Как правило , цифровые коды команд Ввод и/или Вывод имеют следующее значение:
«Ввод» (Запись в Память) имеет код «01»
«Вывод» (Чтение из Памяти) имеет код «02».
Каналы Ввода-вывода соединяются с внешними устройствами с помощью интерфейсных кабелей. В ЕС ЭВМ на канал было два кабеля – для управляющих сигналов и для данных. В современных ПК Северный мост соединяется с внешними устройствами через порты Ввода-вывода, такие как Параллельный порт 25 pin, Последовательный порт 9 pin, серию современных универсальных USB портов.
Как в ЕС ЭВМ, так и в современных ПК, есть специализированные и отдельные порты для подключения устройств управления вычислительной системой. Это в ЕС ЭВМ устройство «Консул» или дисплейная стация (в последствии), в современный ПК это клавиатура и мышь. Они имеют наивысший приоритет в вычислительной системе и предназначены для управления работой не только программой пользователя, но и всей вычислительной системы. Эти устройства всегда должны быть подключены к ПК или ЭВМ, в отличие от других внешних устройств.
Каналы ввода-вывода имеют свой протокол работы с внешними устройствами, который по интерфейсным кабелям определяет, находится ли устройство ввода-вывода во включённном состоянии, готово ли оно к работе, не произошло ли сбоя во время работы (например, закончилась бумага на Печати, закончились чернила или порошок в Принтере и т.д.)
В современных ПК порты Ввода-вывода всё больше становятся виртуальными, так как подключаются физически к USB портам, имеющим мультипортовую идеологию. Виртуальные порты, которые генерируются операционной системой, имеют спецификцию COM – порта с некоторым номером. Это объясняется большой схожестью в физическом устройстве COM и USB портов, у которых один pin штырёк работает на вход, другой на выход. COM и USB порт это последовательные порты.
Вернёмся в начало к команде Ввода-вывода ЦП 9В 00 00 0F.
Процессор инициирует Ввод-вывод и дальше работает Канал Ввода-вывода или Северный мост. Законный вопрос - откуда канал знает, что и сколько выводить или вводить информации из ОЗУ ?
Сразу заметим важный момент в вычислительной системе. Информация в ОЗУ доступна для Ввода-вывода только тогда, когда она оформлена в виде файла! Просто так нельзя указать произвольный адрес ОЗУ и начать выводить оттуда информацию на внешние носители. Ни операционная, ни файловая системы не позволят это сделать. Файл это набор данных. Если происходит Ввод данных в Память и он еще не закончен, то эти данные еще недоступны для пользователя. После завершения операции Ввода, файловая система оформляет данные в виде файла. Назначается имя файла, определяется адрес начала файла на жестком диске и происходит запись информации о файле в таблицу расположения файла на жёстком диске. С этого момента данные файла доступны для пользователя.
Заметим также еще один важный момент в вычислительной системе.
Файл может располагаться в трех равноценных местах:
1. На жестком диске.
2. В памяти компьютера (в ОЗУ)
3. На экране монитора ПК.
Сейчас уже можно ответить на Законный вопрос – откуда канал заранее знает, что и сколько нужно выводить по команде Ввода-вывода ЦП?
В современных языках программирования есть оператор открытия файла.
Например, в языке высокого уровня «Visual Basic 6.0» такой оператор выглядит так:
Open “C:\Spisok” For Output As #1
Здесь С: - жесткий диск.
Spisok - имя файла на диске
For Output - означает, что файл будут выводить из ОЗУ.
Операторы открытия файла всегда стоят перед оператором Ввода-вывода, поэтому система заранее знает, что будет вывод, и знает где, находится файл и размер файла.
Как определить порт USB, к которому подключилось внешнее устройство?
Здесь два пути.
Первый. Если это внешнее устройство широко распространено.
Второй. Если это устройство уникально или имеет небольшое распространение.
Операционная система считывает Заглавный файл устройства, а его наличие обязательно. В это заглавном файле есть информация о самом устройстве, о драйвере, о производителе и т.д.
В первом случае, если устройство широко распространено, то в реестре Операционной системы (ОС) уже есть информация о нем, есть драйверы для этого устройств и ОС назначает ему некоторый номер виртуального COM порта и драйверы устройства работают с этим портом. Такая технология носит название "Plug@Play" - Подключай и работай. Сейчас такая технология есть у всех широко изветных устрйств и уже не рекламируется.
Во втором случае в реестре ОС нет информации об этом устройстве. Тогда ОС назначает ему некоторый свободный номер виртуального COM порта. А для работы программы для этого устройства в составе ОС нужно вручную посмотреть, какой порт назначен этому устройству (Свойства системы), и в программе указать его номер.
Еще раз вернемся к команде Ввода-вывода ЦП 9В 00 00 0F.
Поскольку Ввод-вывод занимает длительное время по сравнению со скоростью выполнения команд ЦП, то в ЭВМ прошлого поколения (как ЕС-1020 с операционной системой ДОС 2.2, которая является однозадачной) Центральный процессор переставал выполнять дальнейшие команды этой программы и ждал от канала сигнала, когда выполнится операция Ввода-вывода. Это не значит, что ЦП вставал совсем, нет. Работа ЦП продолжалась на уровне микропрограмм по обслуживанию канала Ввода-вывода.
В ЭВМ ЕС-1035 и современных ПК Операционные системы многозадачные.
И если выполняется Ввод-вывод в какой-то программе (а их могло быть одновременно до 15) , то ЦП переходит на выполнение другой программы.
Переход происходит по прерыванию Ввода-вывода, об этом механизме будет речь в следующих статьях.
Таким образом, сохраняется высокая производительность ЦП.
------------------
Сотрудники Вычислительного Центра Главсредволговодстроя г. Саратов, 1977-1993.
--------------