Строительный блокнот Развитие полупроводниковой электроники пу вспомогательных элементов. Один из входов выходов этого устройства чере соответствующий порт подсоединяется с шиной данных, а остальные входы-вы ходы - с внешними устройствами, которых может быть несколько. Пусть надо передать некоторое слово или группу слов из внешнего устрой ства в процессор. Порядок работы будет следующий. Сначала слово из виеы него устройства через соответствующий порт записывается в одни из обычны регистров (или группа слов записывается в группу обычных регистров Это необходимый этап, поскольку таким образом мы освобождав, внешнее устройство и ие связываем его с работой процессора. Далее, слов, (группа слов) преобразуется сдвиговыми регистрами так, как это было недавь описано. Наиболее ярким примером может служить прием информации по а лефонному или телеграфному каналам, по которым информация всегда пер. дается по одному двоичному символу за раз. После преобразования в сдв говых регистрах слово (группа слов) переписывается в обычные регистры, где ждет того момента, когда по сигналу от процессора через порты осуществит! передача в магистраль данных. Случай, обратный опиеаииому, т. е. когда да иые передаются из магистрали данных во внешние устройства, вряд ли треб ет каних-то дополнительных комментариев. И вот главный вопрос, ради которого мы просили читателя постараты проявить максимум воображения. Что нужно для того, чтобы все происходив именно так, как только что было описано? Во-первых, конечно, нужны сами р гистры и прочее оборудование. Читателю, вероятно, уже надоело повторени что с использованием методов современной технологии изготовления микросхе в одном кристалле можно создать практически любое разумное количество р гистров как сдвиговых, так и не сдвиговых. Во-вторых, нужно соединить в( элементы устройства по определенной схеме. Это тоже не составляет никаког труда. Наконец, в-третьих, нужно, чтобы на входы Запись и Чтение ка? дого регистра, а также на все управляющие входы других элементов в нужнс время поступали нужные сигналы. Совокупность таких сигналов называете микрокомандой, а последовательность микрокоманд - микропрограммой. Это есть самое главное. Для того чтобы заставить устройство осуществлять обме данными между внешними устройствами и магистралью данных вопреки, в всяком случае, первым двум из отмеченных трудностей, необходим достаточг высокий интеллектуальный уровень, а иначе говоря, микропрограммное у равление. Олисаииое устройство называется программируемый адапте ввода-вывода или (в других источниках) программируемый ni риферййный адаптер. В настоящее время в мире существует нескольь сотеи типов программируемых адаптеров. Мы сознательно не приводим схем< потому что в каждом конкретном адаптере чего-то не хватает и в то же врем имеется что-то лишнее по сравнению с предложенной нами обобщенной ехемо-Но надеемся, что нам удалось убедить читателя в главном. Располагая набс ром регистров, портов и, самое важное, микропрограммой, можно осуществит обмен данными между магистралью данных и любыми внешними устройствам! Выявился еще один, на еей раз полноправный, член микропроцессорного komi лекта, поекольку программируемый периферийный адаптер относится к категс рии БИС. Микропрограмма может храниться в самом адаптере или в памяти. Второй вариант более унквереальный, а первый более прост для разработчика. Чем, собственно, отличается программируемый периферийный адаптер от процессора? Да ничем. И там, н там есть регистры. И там, и там есть возможность выполнять нужные операции иад содержимым этих регистров (в процессоре этим занимается АЛУ). И то, и другое имеет микропрограммное управление. Часто так и поступают - вместо программируемых периферийных адаптеров используют процессоры. Программируемый периферийный адаптер - это, в известном смысле, предмет роскоши. Правда, роскоши вполне позволительной, поскольку технология изготовления микросхем позволяет делать вх дешевыми, крохотными по размерам и потребляющими очень мало энергии. 3.4. Прерывания и дисциплина Организация общения микропроцессорной системы е внешней средой весьма сложна и требует чуть ли не большего количества аппаратуры, чем организация собственно выполнения алгоритма. Вспомним, однако, что пока нам удалось преодолеть две из четырех перечисленных ранее трудностей. Сейчас приступим к поискам преодоления третьей. Независимо от того, как подключены внешние устройства к магистралям: с помощью простейших портов или сложных адаптеров, - передача одного слова из внешнего устройства, скажем, в память или из памяти во внешнее устройство требует наличия по меньшей мере двух адресов, из которых одни - это адрес ячейки памяти, куда должно быть помещено (откуда должно быть пра-читаио) слово, а второй -это адрес, позволяющий выбрать нужный порт или нужный адаптер, и нескольких управляющих вигналов, часть которых обеспечивает выполнение операции записи (считывания) в памяти, а другая - выполнение необходимых операций в порте нли адаптере. Совокупность адресов и управляюп1их сигналов представляет собой микрокоманду. Для передачи одного слова между памятью и внешним устройством требуется одна микрокоманда, а для передачи группы слов - последовательность микрокоманд, т. е. микропрограмма. К подобному выводу мы, вообще-то говоря, пришли уже в предыдущем разделе. Сейчас мы лишь конкретизировали тот факт, что микропрограмма (мы так н будем называть ее микропрограмма ввода-вывода ) нужна всегда, независимо от того, какое оборудование используется. С процессом микропрограммного управления мы познакомились в гл. 3. Нормально любая программа хранится в памяти. В процессе исполнения отдельные микрокоманды илн части микрокоманд извлекаются из памяти и поступают в npoHtccop, где они могут подвергнуться, а могут и не подвергнуться изменениям. Например, в процессоре отдельные части могут быть скомпонованы воедино для получения целой команды или к адресной части может быть прибавлена некоторая константа в случав относительной адресации. Такие изменения принято называть модификацией микрокоманд. После модификации адресная чаеть мнкрокомаиды внова поступает в адресную магистраль, а код операции и управляющие сигналы поступают к устройствам-исполнителям. Все то же самое справедливо и для операции ввода-вывода. Процесс выполнения микропрограммы ввода-вывода практически иичем не отличается от Процесса выполнения любой другой микропрограммы. В частности, нз сказанного следует то очень важное обстоятельство, что в течение всей операции ввода-вывода нвзависямо от того, идет лн речь о передаче одного слова или по- 3* 67 еледовательной группы слов, ии в каких других устройствах системы не могут выполняться никакие другие программы. Не могут потому, что занят основ ной источник микрокоманд - центральный процессор. Говорят, что система мо жет находиться либо в состоянии, в котором она выполняет свою внутреннюю программу, такое состояние называют системным, либо в состоянии ввода-вывода. Переключение системы из системного состояния в состояние ввода-вывода называется прерыванием и выполняется е помощью специальных управляющих сигналои, называемых сигналами прерывания, или, чаще, запросами на преры вание. По сигналу прерывания прекращается выполнение внутренней системной программы и начинается выполнение программы ввода-вывода. Рассмотрим этот процесс подробнее. Пусть в некоторый момент времени возникла необходимость осуществить обмен данными с одним из внешних устройств. Такая необходимость может возникнуть как у самой системы, если, на пример, она исчерпала всю хранящуюся в памяти информацию или завершила реализацию алгоритма, так и у внешнего устройства. И в том, и в другом случаях генерируется сигнал прерывания. Этот сигнал, возможно, после некого рых дополнительных преобразований (о иих речь пойдет дальше) поступает в процессор. Любой процессор независимо от типа имеет для этой цели специальный вход. После поступления сигнала прерывания прекращается выполнение той микропрограммы, которая выполнялась к моменту поступления сигнала прерывания. Немедленно принимаются меры к тому, чтобы прерванную микропрограмму можно было бы впоследствии продолжить с того самого места, на котором она была прервана, без какой-либо потери информации. Обычно содержимое счетчика адресов команд, а также всех или части общих регистров передается в специальную область памяти, которую мы назвали стеком или магазином. После этого производится ряд операций, обеспечивающих начало выполнения микропрограммы ввода-вывода. Обычно эти операции сводятся к тому, что из памяти извлекаются начальный адрес микропрограммы ввода-вывода и некоторые дополнительные данные и помещаются в счетчик адресов команд и общие регистры. Затем система переходит в состояние ожидания. Описанная последовательность действий получила общее название обслуживание сигнала прерывания. Обслуживание начинается с приема сигнала прерывания и заканчивается переходом системы в состояние ожидания. В соответствующий момент времени генерируется специальный управляющий сигнал, по которому начинается собственно процесс ввода-вывода. Но этот сигнал уже не относится ии к акту прерывания, ни к действиям по его обслуживанию. После завершения операции ввода-вывода генерируется сигнал окончания, по которому начинается обратный процесс. Вея информация, связанная с вводом-выводом, извлекается из счетчика адресов команд и общих регистров. В зависимости от конкретных условий она может быть передана в память или просто потеряна. В счетчик адресов команд и общие регистры возвращается информация, ранее переданная на хранение. Продолжается выполнение прерванной программы. Только что перечисленная последовательность действий получила название рестарт. Важнее всего для нас то, что как обслуживание прерывания, так и рестарт (его тоже можно отнести к обслуживанию прерывания) - это последовательности действий, которые совершаются под управлением некоторой микропрограммы. Поэтому обслуживание прерывания - одни из возможных про-
|