Лекции по дисциплине Микропроцессоры

  • doc
  • 06.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала функции процессора.doc

1. Функции процессора

    Процессор (рис. 1.9) обычно представляет собой отдельную микросхему или же часть микросхемы (в случае микроконтроллера). В прежние годы процессор иногда выполнялся на комплектах из нескольких микросхем, но сейчас от такого подхода уже практически отказались. Микросхема процессора обязательно имеет выводы трех шин: шины адреса, шины данных и шины управления. Иногда некоторые сигналы и шины мультиплексируются, чтобы уменьшить количество выводов микросхемы процессора.

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

    Кроме выводов для сигналов трех основных шин процессор всегда имеет вывод (или два вывода) для подключения внешнего тактового сигнала или кварцевого резонатора (CLK), так как процессор всегда представляет собой тактируемое устройство. Чем больше тактовая частота процессора, тем он быстрее работает, то есть тем быстрее выполняет команды. Впрочем, быстродействие процессора определяется не только тактовой частотой, но и особенностями его структуры. Современные процессоры выполняют большинство команд за один такт и имеют средства для параллельного выполнения нескольких команд. Тактовая частота процессора не связана прямо и жестко со скоростью обмена по магистрали, так как скорость обмена по магистрали ограничена задержками распространения сигналов и искажениями сигналов на магистрали. То есть тактовая частота процессора определяет только его внутреннее быстродействие, а не внешнее. Иногда тактовая частота процессора имеет нижний и верхний пределы. При превышении верхнего предела частоты возможно перегревание процессора, а также сбои, причем, что самое неприятное, возникающие не всегда и нерегулярно. Так что с изменением этой частоты надо быть очень осторожным.


Рис. 1.9. Схема включения процессора.

    Еще один важный сигнал, который имеется в каждом процессоре, — это сигнал начального сброса RESET. При включении питания, при аварийной ситуации или зависании процессора подача этого сигнала приводит к инициализации процессора, заставляет его приступить к выполнению программы начального запуска. Аварийная ситуация может быть вызвана помехами по цепям питания и «земли», сбоями в работе памяти, внешними ионизирующими излучениями и еще множеством причин. В результате процессор может потерять контроль над выполняемой программой и остановиться в каком-то адресе. Для выхода из этого состояния как раз и используется сигнал начального сброса. Этот же вход начального сброса может использоваться для оповещения процессора о том, что напряжение питания стало ниже установленного предела. В таком случае процессор переходит к выполнению программы сохранения важных данных. По сути, этот вход представляет собой особую разновидность радиального прерывания.

    Иногда у микросхемы процессора имеется еще один-два входа радиальных прерываний для обработки особых ситуаций (например, для прерывания от внешнего таймера).

    Шина питания современного процессора обычно имеет одно напряжение питания (+5В или +3,3В) и общий провод («землю»). Первые процессоры нередко требовали нескольких напряжений питания. В некоторых процессорах предусмотрен режим пониженного энергопотребления. Вообще, современные микросхемы процессоров, особенно с высокими тактовыми частотами, потребляют довольно большую мощность. В результате для поддержания нормальной рабочей температуры корпуса на них нередко приходится устанавливать радиаторы, вентиляторы или даже специальные микрохолодильники.

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

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

    Таким образом, основные функции любого процессора следующие:

·         выборка (чтение) выполняемых команд;

·         ввод (чтение) данных из памяти или устройства ввода/вывода;

·         вывод (запись) данных в память или в устройства ввода/вывода;

·         обработка данных (операндов), в том числе арифметические операции над ними;

·         адресация памяти, то есть задание адреса памяти, с которым будет производиться обмен;

·         обработка прерываний и режима прямого доступа.

2. Сегментные регистры

     Теперь мы подошли к наиболее необычному аспекту  процессора 8086  - сегментации памяти. Основной предпосылкой сегментации является следующее: процессор 8086 может адресоваться к 1 мегабайту памяти.  Для адресации ко всем ячейкам адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные регистры. Однако процессор  8086  использует  только 16-разрядные указатели на ячейки памяти.  Как же тогда согласовать 16-разрядные указатели  процессора 8086 и 20-разрядные адреса?

     Ответ состоит в том, что процессор 8086 использует  двухступенчатую  схему адресации. Да, используются 16-разрядные указатели,  но  эта  форма  представляет собой только часть полной схемы адресации.  Каждый  16-разрядный  указатель памяти  или  смещение комбинируется с содержимым 16-разрядного сегментного регистра для формирования 20-разрядного адреса памяти.

     Сегменты и смещения комбинируются следующим образом:  значение сегмента сдвигается влево на 4 (то есть умножается на 16), а затем складывается со смещением. Фактически, для доступа к памяти процессор всегда использует пару "сегмент:смещение".  Все команды и режимы адресации  процессора 8086 по умолчанию работают относительно того или иного  сегментного  регистра,  хотя  в  некоторых командах можно явно  указать,  что  нужно  использовать  желаемый сегментный регистр.

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

     Использование сегментов процессора 8086 приводит к некоторым интересным  моментам.  Один из них состоит в том, что только блок памяти размером в 64К в любой  момент  может  адресоваться  через сегментный  регистр, так как 64К - это максимальный объем памяти, к которой можно адресоваться с помощью 16-битового смещения.  Это может  оказаться неприятным при работе с большим (более 64К) объемом памяти, так как и значение сегментного регистра, и смещение, придется часто изменять.

     Адресация к большим блокам памяти в  процессоре  8086  может представлять  еще большую  трудность,  поскольку,  в  отличие  от регистров общего назначения, сегментные регистры не могут использоваться  в качестве источников или приемников в арифметических и логических команд.  Фактически,  единственная  операция,  которую можно выполнять с сегментными регистрами, состоит  в  копировании значений между сегментными регистрами и другими общими регистрами или памятью.

     Вторая особенность использования сегментов  состоит  в  том, что каждая  ячейка памяти адресуется через многие возможные сочетания "сегмент:смещение".  Например, адрес памяти 100h адресуется с помощью следующих значений "сегмент:смещение": 0:100h,  1:F0h, 2:E0h и т.д., так как при вычислении всех этих  пар "сегмент:смещение" получается значение адреса 100h.

     Аналогично регистрам  общего  назначения  каждый  сегментный регистр играет свою, конкретную роль. Регистр CS указывает на код программы,  DS  указывает  на  данные,  SS - на стек.  Сегментный регистр ES - это дополнительный сегмент, который может  использоваться так, как это необходимо.  Рассмотрим  сегментные  регистры более подробно.

     Регистр CS указывает на начало блока памяти объемом 64К, или сегмент  кода, в котором находится следующая выполняемая команда. Следующая команда, которую нужно выполнить, находится  по  смещению,  определяемому в сегменте кода регистром IP,  то есть на нее указывает  адрес  (в форме "сегмент:смещение")  CS:IP.  Процессор 8086  никогда  не может извлечь команду из сегмента, отличного от того, который определяется регистром CS.

      Регистр CS можно изменять с помощью многих  команд,  включая отдельные команды перехода, вызовы и возвраты управления.  Ни при каких обстоятельствах регистр CS нельзя  загрузить непосредственно. Никакие другие режимы адресации или указатели памяти,  отличные от IP, не могут нормально работать относительно регистра CS.

     Регистр DS указывает  на  начало  сегмента  данных,  которые представляет  собой  блок памяти объемом 64К, в котором находится большинство размещенных в памяти операндов. Обычно для  ссылки на адреса памяти используются смещения, предполагающие использование регистров BX, SI или DI. В основном сегмент  данных  представляет собой  то, о чем говорит его название: как правило это сегмент, в котором находится текущий набор данных.

     Регистр ES указывает на начало  блока  памяти  объемом  64К, который называется дополнительным  сегментом. Как и подразумевает его название,  дополнительный  сегмент  не  служит  для  какой-то конкретной цели, но доступен тогда, когда в нем возникает необходимость. Иногда сегмент ES используется  для  выделения  дополнительного  блока памяти объемом  64К  для данных.  Однако доступ к памяти в дополнительном сегменте менее  эффективен,  чем доступ к памяти в сегменте данных.

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

 

 


Скачано с www.znanio.ru