Образовательный портал «Кафедра онлайн» НИЯУ «МИФИ», Обнинск"

Главная » Рубрики » Блоги преподавателей » Крылов Евгений Васильевич » Крылов - статьи » Компьютерные сказки. Организация внешних устройств

Компьютерные сказки. Организация внешних устройств

Е.В. Крылов, доцент ИАТЭ НИЯУ «МИФИ», Обнинск

Закон физики:  «Скорость стука выше скорости звука».
Если Коба стучит, слышит вся тюрьма, но воспринимает только Камо.

Представим картинку: директор московской средней школы №1 проводит мониторинг уборки коридора (собирает процент выполнения). Директор стоит перед входом в коридор, куда ему вход запрещён приказом министра образования. В коридор выходят двери нескольких комнат, в каждой комнате по уборщице: Маша, Даша, Глаша, Саша, Паша, Тася, Тося. Директор кричит в коридор: «Тася!» Его слышат все, но только Тася высовывает голову в дверь и отвечает: «Чего табе?». Директор кричит: «Дай процент!». Тася отвечает: «Пятнадцать». Директор: «Мало!». Тася в ответ: «Тады восемьдесят». Директор уходит писать отчёт в министерство образования.

Это довольно точная модель связи процессора с внешними устройствами. Прежде чем разбирать процесс обмена, мы должны решить ряд вопросов:

  • коммуникации;
  • опознание внешнего устройства;
  • средства внешнего устройства, принимающие и передающие.

Вспомним принципиальную схему компьютера: центральный процессор, оперативная память, общая шина, группа внешних устройств. Винчестер, клавиатура, «мышка», монитор, CD-диск, – это внешние устройства, которые стандартным образом подключаются  к общей шине. Вы, уважаемый читатель, возможно привыкли к «системному блоку». Должен огорчить: это точка зрения сборщика компьютера. Нас же интересуют принципы функционирования.

Посмотрим рис.2 На нём показано внешнее устройство, соединённое с общей шиной. Устройство имеет физическую компоненту и интерфейсную. Физическая выполняет то, что должна. Принтер печатает, мышка вводит координаты, клавиатура символы и т.д. Интерфейсная часть ? это набор регистров. Обычно интерфесную часть называют контроллером внешнего устройства. Часть регистров имеет выход на общую шину. Эти регистры называются портами. Каждое устройство может иметь несколько портов. Порты должны иметь свои уникальные идентификаторы, называемые адресами. Адреса портов хранятся в контроллере.

Ранее адреса присваивались при изготовлении устройства и менять их было невозможно. Сейчас некоторые устройства позволяют программную настройку. Для  общения с внешними устройствами процессор Intel имеет две команды: IN N и OUT N. Операндом обоих команд является адрес порта N. Команда IN передаёт двоичное число в соответствующий порт, Команда OUT читает значения соответствующего порта. В некоторых умных книгах мне приходилось читать фразу: «Процессор находит нужное устройство и передаёт ему информацию». Однако, процессор это не делает.

Выполняя команду обмена, процессор выдаёт на общую шину адрес порта и переходит к выполнению следующей команды. Адрес по общей шине поступает на все внешние устройства, подключённые к шине. Контроллер внешнего устройства сравнивает поступивший адрес с хранимыми адресами. Если совпадений нет, контроллер не реагирует на поступившую команду. Если пришедший адрес совпадает с хранимым, команда выполняется. Здесь описана схема обмена процессора Intel. Запуск обменной операции IBM 360/370 осуществлялся очень похоже, только там была двухуровневая схема. Команда SIO N M содержала два адреса: адрес канала и адрес устройства в канале.

Уважаемый читатель! Вы можете отметить преимущества и недостатки описанных схем?

Теперь начинается старая история. Описана всего лишь упрощенная схема.  Надо понять зачем нужны порты, что в них может храниться, как в порт попадает число, как извлекается. Начнём с функционального назначения. Порт может содержать:

  • значение, полученное на внешнем устройстве;
  • значение, переданное на внешнее устройство процессором;
  • значение, определяющее состояние внешнего устройства;
  • значение, определяющее поведение внешнего устройства.

Например, ввод с клавиатуры. Все клавиши перенумерованы, номер клавиши называется «скен-код». Вы нажали клавишу на клавиатуре, её скен-код появляется в порту клавитуры. Как только в порту клавитуры появляется значение, контроллер клавитуры устанавливает прерывание на линии прерывания. Прерывание добирается до процессора. Возможно, процессор выполнит прерывание и управление перейдёт к обработчику прерываний от клавитуры. Обработчик содержит команду IN N, где N – адрес порта клавиатуры. Когда будет выполнена эта команда, скен-код попадёт в процессор.

Что-то ощутимо запахло мистикой. Давайте конкретнее. В команде IN, расположенной в обработчике прерываний,  не содержится адрес результата. Придётся вернуться к схеме процессора (рис.3). Процессор выполняет команду IN. Команда выбирается в регистры  АЛУ (Арифметико-логическое устройство). АЛУ формирует пакет, состоящий из признака команды чтения R и адреса порта. Этот пакет выбрасывается в общую шину. Как было описано ранее, пакет попадает в контроллеры всех внешних устройств, но реагирует только устройство, имеющее порт N. Контроллер соответствующего устройства выводит значение порта (I) в шину данных. Это значение доползает до процессора и заносится в регистр общего назначения, обычно R1. Одной из следующих команд обработчика это число переносится в оперативную память.

Было бы интересно проследить дальнейший путь прочитанного числа, но это в большей степени относится к функциям операционной системы.

На рис. 4 показана схема вывода в порт. Процессор выбирает команду W N. Будущее значение порта должно быть заранее занесено в общий регистр R1. АЛУ формирует пакет, состоящий из признака команды записи W, адреса порта N, значения I. Как показано в схеме, пакет выводится в общую шину. По общей шине пакет попадает на все подключённые устройства, но только устройство с нужным адресом выбирает данное I и заносит в соответствующий порт. Остальные устройства не регируют. По этой схеме происходит запись, например, в таймер, устанавливается режим принтера и т.д.

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

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

Как отдельное внешнее устройство организованы три регистра: Таймер, компаратор, системные часы. Системные часы ? регистр, в который с потоянной частотой прибавляется единица. Эти регистры работают на независимом питании, поэтому служба времени функционирует при отключённом компютере. Компаратор ? регистр, к которому с постоянной частотой прибавляется единица. Первоначальную установку выполняет процессор, передавая в порт значение. Как только значение компаратора станет равным системным часам, возникает прерывание. Этот механизм можно использовать для генерации события в заданный момент времени.

Таймер ? это регистр (порт), из которого с постоянной частотой вычитается единица. Если значение регистра равно нулю, возникает прерывание от таймера. В процессоре Intel значение таймера восстанавливается и события повторяются периодически. Начальное значения порта устанавливает прцессор, передавая в порт значение. Таким образом, задаётся частота регулярного события. Процессор IBM 360/370 такое восстановление не проводил. При необходимости это делала операционная система.

Показанные в серии сказок принципы функцинирования компьютера должны привести читателя к важному выводу. Нельзя отдельно понять аппаратные и программные средства. Компьютер следует понимать как программно-аппаратную совокупность.

О компьютере можно писать долго. И по-разному. Я попытался написать для читателей, которым интересно знать «как оно устроено». Устроено оно непросто. Но физики, в первую очередь, народ любопытный.

Хочется спросить. Могут ли несколько устройств одновременно занять шину?

В одной умной книге я встретил фразу: «Порт есть абстрактное, физически не существующее устройство». С чьей точки зрения это абсолютно точно и чьей совершенно неверно?

Ну а мне пора честь знать.

Конец.

Литература

Крылов Е.В., Типикин Н.Г. Принципы функционирования ЭВМ. Учебное пособие по курсам «Технология программирования» и «Операционные системы» для заочного отделения. — Обнинск: ИАТЭ, 2002.- 134с.

5 комментариев

Похожие публикации
 
 

5 комментариев

  1. kev1939:

    Будет продолжение.

  2. Господа со 2-го курса. Что умного скажете?

  3. kev1939:

    А что бы Вы хотели?

  4. Евгений Васильевич, это была попытка подвигнуть студентов на то, чтобы они начали задавать вопросы по опубликованному материалу. Сейчас грядет сессия, студентам видимо не до дискуссий. Однако на Форуме по курсу «Введение в ООП» обсуждения не затихают. Пожалуйста, по возможности подключайтесь. Искренне ваш, В.Тельнов

  5. kev1939:

    Я пока плоховато ориентируюсь на сайте.
    Трудно находить вопросы.

 
 

Вы можете оставить комментарий

 





 
 

Выполните простое задание (антиспам). Картинки можно сибирать приблизительно, без точной подгонки фрагментов.


 
 
 

Наверх