Проектирование устройств сопряжения (1083567), страница 10
Текст из файла (страница 10)
В заключение еще раз отметим, что тип выходного каскада линии IRQ — это обычный ТТЛ, поэтому необходимо тщательно контролировать, чтобы на каждую из линий IRQ поступал сигнал только от одной платы расширения, иначе может выйти из строя выходной каскад одной из конфликтующих плат.
2.1.6. Применение прямого доступа
С использованием прямого доступа также связано несколько недоразумений. Многие считают, что прямой доступ обеспечивает максимальный темп выдачи или приема информации. Однако это не совсем так. Прямой доступ осуществляется по системной магистрали ISA, и, следовательно, его скорость ограничена, в первую очередь, принятым для ISA протоколом обмена, а также невысоким быстродействием используемого в компьютере динамического ОЗУ. Даже в режиме блочной передачи пересылка одного" байта (слова) требует нескольких тактов SYSCLK и занимает около 1 мкс. Что же касается режима одиночной передачи, другого возможного режима ПДП, то он вообще не дает никакого выигрыша в скорости.
Наибольшую скорость выдачи или приема данных обеспечивают не УС с прямым доступом, а УС с так называемой разделяемой памятью, в которых быстрая буферная память (конечно же, статическая), расположенная на плате УС, доступна как со стороны внешнего устройства, так и со стороны магистрали ISA. При этом процессор рассматривает эту буферную память как часть системного ОЗУ. В этом случае прием информации в ОЗУ компьютера или выдача ее оттуда может осуществляться со скоростью до 50 Мбайт/с и даже выше (при принятии специальных мер), что определяется исключительно быстродействием буферного ОЗУ. В качестве этого буферного ОЗУ надо использовать не медленную динамическую память со временем выборки около 70 ... 100 нс, а гораздо более быструю статическую со временем выборки 20 нс и менее. Ведь здесь основным фактором становится не стоимость микросхем памяти (как для компьютера), а их быстродействие (и, кстати, отсутствие регенерации).
Следует однако учитывать, что указанная высокая скорость достигается только в пределах передачи блока информации, размер которого определяется размером буферного ОЗУ. При необходимости же передачи больших объемов информации интегральная (средняя) скорость передачи будет определяться уже быстродействием компьютера в целом и окажется гораздо ниже. Но об этом несколько позже.
Еще к вопросу о выигрыше в скорости при использовании прямого доступа. Особенностью процессоров IBM PC AT является наличие так называемых цепочечных или строковых команд пересылки данных, в частности, цепочечных команд ввода и вывода. Их использование позволяет обеспечить скорость не меньшую, чем применение прямого доступа. Однако существенное преимущество цепочечных команд — отсутствие необходимости инициализации контроллера прямого доступа, то есть в данном случае не требуются дополнительные временные затраты. Использование же их совместно с прерываниями сводит на нет и такое преимущество прямого доступа, как начало обмена по инициативе исполнителя (нашего УС). Поэтому многие разработчики считают нецелесообразным ориентацию своих УС на прямой доступ.
Стоит также отметить еще одно соображение против применения ПДП. Даже стандартные платы расширения, выпускаемые солидными фирмами и использующие прямой доступ К памяти, ведут себя правильно не во всех компьютерах. Изготовители часто указывают, в компьютерах каких фирм их платы гарантированно работают. Связано это прежде всего с недостаточной стандартизацией магистрали ISA вообще и режима ПДП на ней в частности.
Тем не менее в ряде случаев применение прямого доступа вполне удовлетворительно решает функции обмена УС с системной памятью, поэтому мы все-таки рассмотрим пример реализации запроса прямого доступа. В отличие от прерываний, где требуется только один сигнал — IRQ, здесь в диалоге "запрос прямого доступа — предоставление прямого доступа" участвуют два сигнала: DRQ и DACK. Кроме того, в обмене участвует сигнал AEN. Пример схемы запроса прямого доступа показан на рис. 2.26.
Рис. 2.26. Реализация прямого доступа.
Сигнал READY — это готовность УС к обмену данными в режиме прямого доступа. Он перебрасывает триггер, выход которого — сигнал DRQ. В исходное состояние триггер сбрасывается сигналом DACK. Если прямой доступ предоставлен нашему УС, то сигнал AEN должен интерпретироваться как наш адрес, поэтому мы объединяем его с сигналом с выхода селектора адреса (считаем, что возможен также режим программного обмена). Точно так же, как в случае прерываний, мы должны следить, чтобы на каждую линию DRQ поступал только один сигнал, а также, чтобы совпадали номера используемых нашим УС сигналов DRQ и DACK.
2.1.7. Буферные ОЗУ устройств сопряжения
Мы рассмотрели основные узлы интерфейсной части УС, которые входят практически во все УС. Операционные (основные) части УС гораздо более разнообразны, поэтому выделить какие-то общие принципы их проектирования очень трудно, но кое-какие универсальные подходы все-таки предложить можно.
Значительная часть УС содержит в своем составе буферные ОЗУ, используемые для промежуточного хранения данных при пересылке их из компьютера во внешнее устройство или из внешнего устройства в компьютер. В каких случаях нужны буферные ОЗУ?
1. При медленных внешних устройствах (то есть компьютер может выдавать или принимать данные в нужном темпе) буферные ОЗУ нужны в двух ситуациях. Во-первых, если необходимо поддерживать постоянный темп выдачи (приема) данных. Когда требования к точности этого темпа невелики, можно воспользоваться программными задержками, опросом флага готовности или опросом внутреннего системного таймера компьютера. Но во всех этих случаях на темп выдачи (приема) будут влиять непредсказуемые внешние факторы: прерывания, прямой доступ, а также регенерация. К тому же дискрет времени задержки в этом случае не может быть меньше выполнения нескольких команд процессором. Если же требования к точности частоты выдачи (приема) данных высоки, например погрешность не должна превышать долей процента, то можно использовать буферное ОЗУ и его опрос по кварцевому генератору УС (простейший пример — синтез низкочастотного аналогового сигнала с точной частотой).
Во-вторых, буферное ОЗУ очень полезно при необходимости выдачи (приема) больших объемов данных для того, чтобы освободить процессор для решения других задач. То есть процессор в данном случае только запускает процесс выдачи (приема), а УС само осуществляет обмен с внешним устройством, информируя процессор только о его окончании (выставлением флага готовности или прерыванием).
2. Если внешние устройства — быстрые, то есть компьютер не может обеспечить требуемого темпа выдачи (приема) данных. Минимальный период выдачи (приема) данных компьютером составляет около 1 мкс. Если нужен больший темп, то без буферного ОЗУ никак не обойтись. А если еще необходима и высокая точность поддержания этого темпа, то применение буферного ОЗУ требуется и при гораздо меньшем темпе.
Таким образом, буферные ОЗУ в составе УС нужны во многих случаях. Теперь посмотрим особенности схемотехнических решений таких УС.
По способу обмена с внешним устройством УС, имеющие буферные ОЗУ, могут быть разделены на две большие группы:
1. УС с непрерывным режимом обмена с внешним устройством, то есть буферное ОЗУ непрерывно выдает на внешнее устройство или принимает от него данные, а процессор в определенные моменты соответственно записывает или считывает необходимые ячейки этого ОЗУ. Примером может служить контроллер телевизионного монитора, в котором необходимо проводить непрерывную регенерацию изображения. Другой пример — контроллер телевизионной камеры.
2. УС с периодическим режимом обмена с внешним устройством, то есть буферное ОЗУ, может находиться в одном из двух режимов: в режиме обмена с компьютером (запись или чтение содержимого ОЗУ) или в режиме обмена с внешним устройством (прием или выдача). При этом, естественно, обмен с компьютером осуществляется в темпе компьютера, а обмен с внешним устройством — в темпе внешнего устройства. Устройств этой второй группы гораздо больше, контроллер дисковода, синтезатор аналогового сигнала, цифровой осциллограф, контроллер локальной сети и т.д. Например, в случае контроллера сети при передаче пакета в сеть надо сначала записать пакет в буферное ОЗУ (в темпе компьютера), а затем выдать его в сеть в темпе сети, выступающей в данном случае качестве внешнего устройства. В принципе, могут быть и промежуточные ситуации, когда во время обмена с компьютером проводится и обмен с внешним устройством.
По методу доступа к буферному ОЗУ со стороны компьютера УС могут быть разделены на следующие группы:
1. УС с параллельным доступом к буферному ОЗУ. В этом случае каждой ячейке буферного ОЗУ соответствует свой адрес в адресном пространстве компьютера. Это как раз то, что наливается разделяемой памятью. Любой задатчик магистрали (процессор, контроллер ПДП и т.д.) может общаться с буферным ОЗУ как с системным, используя для этого все средства, все методы адресации, команды обработки строк. Естественно, это наиболее быстрый метод общения с буферным ОЗУ (а также и с внешним устройством), так как в данном случае не требуется времени для перекачки данных из системной памяти в буферное ОЗУ УС или наоборот. Схематически этот метод доступа можно представить следующим образом (рис. 2.27). В адресном пространстве памяти ISA выделяется окно, в которое проецируются адреса буферного ОЗУ. Адресное пространство устройств ввода/вывода в данном случае использовать нецелесообразно, так как в нем нет достаточно больших непрерывных зон свободных адресов. Кроме того возможности процессора по работе с памятью гораздо богаче, чем по общению с устройствами ввода/вывода. Схемотехнически этот метод доступа реализуется довольно сложно, но преимущества его очень велики.
Рис. 2.27. Параллельный доступ к буферному ОЗУ.
2. УС с последовательным доступом к буферному ОЗУ. В данном случае все ячейки буферного ОЗУ по очереди проецируются в один адрес в адресном пространстве компьютера (или реже в несколько адресов). То есть процессор при обращении по одному и тому же адресу общается в разное время с разными ячейками буферного ОЗУ. Недостаток этого подхода — резкое снижение темпа обмена, а самое очевидное преимущество — экономия адресов магистрали. Интересно, что буферное ОЗУ при этом может быть даже больше, чем потенциально возможная системная память компьютера. К тому же в данном случае можно перейти в адресное пространство устройств ввода/вывода, что позволяет существенно упростить селектор адреса.
Обмен с буферным ОЗУ осуществляется при таком подходе в два этапа: сначала определяем, с каким адресом буферного ОЗУ будет производиться обмен, и только затем этот обмен производим. Схематически этот метод иллюстрируется рис. 2.28.
Рис. 2.28. Последовательный доступ к буферному ОЗУ.
Рис. 2.29. Использование адресного регистра для последовательного доступа.
Метод последовательного доступа может быть реализован несколькими путями, отличающимися скоростью обмена и сложностью аппаратуры, а также удобством доступа. Самый простой путь — использование адресного регистра буферного ОЗУ (рис. 2.29 — очень условная схема). Адрес буферного ОЗУ задается содержимым регистра, доступного со стороны магистрали в цикле записи (сигнал -STRO). Обмен с ОЗУ производится по стробам -STR1 и -STR2. Здесь УС должно иметь два адреса в адресном пространстве компьютера: по одному из них записывается код адреса ячейки буферного ОЗУ, с которым будет производиться обмен, по другому — читается или записывается эта ячейка. Чтобы прочитать (записать) все буферное ОЗУ, требуется в два раза больше обращений к УС, чем имеется адресов ОЗУ. Использование адресного регистра — это самый медленный способ обмена.
Второй путь реализации метода последовательного доступа — это применение адресного счетчика (рис. 2.30а — схема очень условная). В данном случае нельзя прочитать (записать) произвольную ячейку буферного ОЗУ, а можно только читать(записывать) все его содержимое. Перед началом обмена по сигналу STR1 сбрасываем адресный счетчик. Затем начинаем запись или чтение ОЗУ по сигналам -STRO и -STR2. При этом Каждое обращение к ОЗУ наращивает содержимое счетчика на единицу. Произведя столько обращений, сколько имеется адресов ОЗУ, мы заканчиваем обмен. Достоинством данного подхода является то, что чтение (запись) всех адресов ОЗУ требует в два раза меньше обращений к УС по сравнению с предыдущим случаем. Недостаток этого пути — невозможность обмена с произвольными ячейками ОЗУ.
Рис. 2.30. Использование адресного счетчика для последовательного доступа к буферному ОЗУ (а) и реализация буферного ОЗУ стекового типа (б).