Режимы обмена в микропроцессорной системе
В процессе работы в микропроцессорной системе постоянно происходит обмен информацией между МП и внешними устройствами. При этом возможны три режима обмена:
• программно-управляемый обмен;
• обмен но инициативе ВУ с прерыванием работы МП;
• обмен между ВУ и памятью в режиме прямого доступа к памяти.
Наиболее простой – программно-управляемый обмен. В этом режиме взаимодействие МП с ВУ осуществляется по инициативе МП в процессе выполнения основной программы. Имеются ВУ двух типов: всегда готовые к обмену и не всегда готовые к обмену. В первом случае обмен осуществляется без задержки. Во втором – МП вынужден ожидать готовности устройства к обмену. При этом программа не выполняется, МП ждет появления сигнала готовности ВУ к обмену, и только после его появления выполняет операцию обмена. Так как МП в это время не выполняет полезной работы, а его быстродействие гораздо выше быстродействия ВУ, такой режим обмена сопряжен с непроизводительными потерями времени.
Обмен по инициативе ВУ с прерыванием работы МП более производительный, так как время ожидания МП исключается. При своей готовности к обмену ВУ сообщает об этом МП специальным сигналом запроса прерывания. Процессор завершает выполнение текущей команды программы, выдает сигнал подтверждения прерывания и переходит к выполнению подпрограммы обмена с ВУ. Эта подпрограмма носит название подпрограммы обслуживания прерывания. Чтобы начать выполнение подпрограммы достаточно адрес ее первой команды загрузить в ПС. Но в результате выполнения программы содержимое всех внутренних регистров МП уже не будет соответствовать тому, что было в момент прерывания. Поэтому возникает необходимость сохранения состояния МП на момент прерывания в оперативной памяти, чтобы можно было вернуться к прерванной основной программе. Для этого в микропроцессорных системах используется так называемая стековая память. Стек – это область памяти, запись в которую и считывание осуществляется по принципу "последний пришел – первый ушел". Процесс функционирования стека напоминает работу с пачкой документов, когда каждый новый документ кладется сверху пачки, т.е. самый первый по времени поступления документ оказывается в самом низу пачки и его рассмотрение происходит в последнюю очередь, в то время как последний документ рассматривается в первую очередь. Точно так же в стековую память осуществляется загрузка данных. При переходе от текущей программы к программе обслуживания прерывания содержимое некоторых адресных регистров МП заносится в стековую память автоматически. Запись содержимого остальных регистров должна быть предусмотрена в начале программы обслуживания прерывания с помощью специальных команд работы со стеком. При этом в конце программы должны стоять команды, обеспечивающие восстановление состояния регистров МП. Порядок, в котором осуществляется извлечение содержимого регистров из стековой памяти и запись его обратно в регистры, соответствует принципу "последний пришел – первый ушел".
Для работы со стековой памятью в МП есть специальный регистр – указатель стека (УС). Этот регистр всегда содержит адрес "верхней" (по аналогией со стопкой документов) загруженной ячейки стека, называемой вершиной стека. На рис. 4.10 показаны процессы записи и извлечения данных из стека.
Рис. 4.10. Процессы записи данных в стек и извлечения из стека
При включении слова данных в стек происходит автоматическое уменьшение содержимого УС на единицу, а приизвлечении – увеличение на единицу. Таким образом, при работе со стековой памятью МП не нужно вычислять адрес ячейки памяти, так как он всегда имеется в УС.
Причиной прерывания в микропроцессорных системах может быть не только готовность медленно действующего ВУ к обмену. Прерывание может быть вызвано действиями оператора, когда возникает необходимость вмешаться в ход управляемого процесса. В режиме прерывания осуществляется также работа МП с различными технологическими устройствами и системами в случае возникновения аварийных ситуаций.
Режим обмена внешнего устройства с памятью в режиме прямого доступа к памяти (ПДП) используется при передаче больших объемов информации. Например, в режиме ПДП осуществляется передача информации между ОЗУ и внешней памятью. Если бы такой обмен осуществлялся под управлением МП, то каждое слово данных сначала необходимо было прочитать из памяти и поместить его в МП, и только затем из МП передать приемнику – регистру ВУ. Такой обмен потребовал бы слишком больших непроизводительных затрат времени. В режиме ПДП происходит передача данных между памятью и ВУ без участия процессора. При этом МП отключается от шин адреса и данных и весь процесс обмена осуществляется под управлением специального контроллера ПДП. Происходит временный захват системных шин со стороны ВУ, памяти и контроллера ПДП. Режим ПДП начинается с того, что ВУ сигнализирует процессору о своем "желании" начать обмен с памятью выдачей сигнала запроса захвата шин. Если процессор разрешает такой обмен, он выдает сигнал разрешения захвата, отключается от системных шин и передает управление контроллеру ПДП. В режиме ПДП выдача данных на ШД источником и считывание их с ШД приемником происходит в одном цикле записи/чтения. За счет устранения одного лишнего цикла записи/чтения значительно увеличивается теми передачи данных.