Связь через контроллер

Взаимодействие между компьютером и другими устройствами обычно проходит через промежуточное устройство, которое называется контроллером (controller). Если говорить о персональном компьютере, то контроллер представляет собой монтажную плату, которая вставляется в гнездо главной монтажной платы компьютера (motherboard — материнской платы). Контроллер с помощью кабелей соединен с периферийными устройствами, находящимися внутри компьютера, или с соединительными разъемами, к которым подключаются внешние устройства. Часто контроллер сам является небольшим компьютером, обладающим своей собственной запоминающей схемой и центральным процессором, который выполняет программу, управляющую действиями контроллера.

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

Когда контроллер вставляется в гнездо материнской платы, он подсоединяется к той же шине, которая соединяет центральный процессор и оперативную память (рис. 2.10). Поэтому каждый контроллер может отслеживать сигналы, выдаваемые в шину центральным процессором и оперативной памятью, а также добавлять свои собственные сигналы.

В частности, центральный процессор способен взаимодействовать с контроллерами, подключенными к шине, так же как он взаимодействует с оперативной памятью. Для того чтобы послать цепочку битов контроллеру, прежде всего ее

нужно поместить в один из регистров общего назначения, после чего выполнить команду, подобную команде сохранения, чтобы «сохранить» код в контроллере. Точно так же, для того чтобы получить цепочку битов от контроллера, исполняется команда, похожая на команду загрузки. В некоторых компьютерах предусмотрены дополнительные коды операции для этих действий. Команды с такими кодами называются командами ввода-вывода. Команды ввода-вывода находят контроллер с помощью системы адресации, подобной системе адресации оперативной памяти. А именно каждому контроллеру соответствует уникальный набор адресов (адреса ввода-вывода), которые используются в командах ввода-вывода для указания контроллера-адресата. Набор адресов, соответствующих контроллеру, называется портом (port), так как они представляют собой «место» через которое информация входит в компьютер и выходит из него. Поскольку адреса ввода-вывода могут иметь такой же вид, как адреса ячеек оперативной памяти, шины компьютеров снабжены сигналом, который показывает, передается сообщение в оперативную память или в контроллер. Следовательно, на команду ввода-вывода отослать содержимое регистра определенному контроллеру центральный процессор будет реагировать так же, как на команду отослать цепочку битов в определенную ячейку памяти, только при этом он выставит сигнал, который сообщит устройствам, подключенным к шине, что цепочка битов предназначена для такого-то контроллера, а не для оперативной памяти.

Строение шины

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

Альтернативой включению в машинный язык специальных кодов операций для команд ввода-вывода является использование команд загрузки и сохранения, которые уже существуют в языке для коммуникации с оперативной памятью. В этом случае контроллер отвечает только на определенный уникальный набор адресов (который также называется портом), а оперативная память игнорирует эти ячейки. Таким образом, когда центральный процессор посылает сообщение шине о том, что нужно сохранить цепочку битов по адресу, приписанному к контроллеру, ее и получает контроллер, а не оперативная память. Точно также, если центральный процессор пытается прочитать данные из такого адреса, указанного в команде загрузки, то он получит последовательность битов из контроллера, а не из памяти. Такая система связи называется вводом-выводом, отображенным на память (memory-mapped I/O), потому что устройства ввода-вывода компьютера представляются как различные ячейки памяти (рис. 2.11).

Поскольку контроллер подключен к шине компьютера, он может сам связываться с оперативной памятью в течение тех наносекунд, когда центральный процессор не использует шину. Этот доступ контроллера к оперативной памяти называется DMA (direct memory access — прямой доступ к памяти) и является очень важным для работы компьютера. Например, для того чтобы извлечь данные с определенного сектора диска, центральный процессор может послать запрос, закодированный как последовательность битов, контроллеру, подключенному к диску, чтобы тот считал данные сектора и поместил их в определенные ячейки памяти. Центральный процессор затем может продолжать выполнение других задач, так как контроллер выполнит операцию считывания и разместит данные в оперативной памяти с помощью прямого доступа. Таким образом, два процесса будут выполняться параллельно. Центральный процессор будет выполнять программу, а контроллер — управлять передачей данных между диском и оперативной памятью. При этом вычислительные ресурсы центрального процессора не растрачиваются попусту во время передачи данных.

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

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

Такой диалог часто содержит слово состояния (status word) — цепочку битов, которая порождается периферийным устройством и посылается контроллеру. Биты слова состояния отражают условия работы устройства. Например, если говорить о принтере, значение младшего бита слова состояния определяет, есть ли в принтере бумага, следующий бит — готов ли принтер принять дополнительные данные. В зависимости от системы контроллер может сам ответить на информацию о состоянии устройства или передать ее процессору. В обоих случаях или программа контроллера, или программа, выполняемая процессором, может использовать ее для того, чтобы приостановить отсылку данных принтеру до тех пор, пока не будет получена соответствующая информация о статусе устройства.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: