Архитектуры микропроцессорных систем
Контрольная работа, 16 Января 2012, автор: пользователь скрыл имя
Описание работы
1,Архитектуры микропроцессорных систем.
Типовая архитектура микропроцессорного устройства и ее основные элементы: шины данных (ШД), адреса (ША), управления (ШУ), память, порты ввода/вывода.
На схеме видны основные элементы простейшего микропроцессорного устройства. Все названия даны в русском и английском вариантах.
CPU - центральный процессор (центральное процессорное устройство - ЦПУ)
Работа содержит 1 файл
1.docx
— 189.53 Кб (Скачать)Перечислим регистры, относящиеся к группе регистров общего назначения. Так как эти регистры физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), то их еще называют регистрами АЛУ:
- eax/ax/ah/al (Accumulator
register) — аккумулятор.
Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно; - ebx/bx/bh/bl (Base
register) — базовый регистр.
Применяется для хранения базового адреса некоторого объекта в памяти; - ecx/cx/ch/cl (Count
register) — регистр-счетчик.
Применяется в командах, производящих некоторые повторяющиеся действия. Его использование зачастую неявно и скрыто в алгоритме работы соответствующей команды.
К примеру, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx; - edx/dx/dh/dl (Data
register) — регистр данных.
Так же, как и регистр eax/ax/ah/al, он хранит промежуточные данные. В некоторых командах его использование обязательно; для некоторых команд это происходит неявно.
Следующие два регистра используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов, каждый из которых может иметь длину 32, 16 или 8 бит:
- esi/si (Source
Index register) — индекс
источника.
Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике; - edi/di (Destination
Index register) — индекс
приемника (получателя).
Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике.
В архитектуре микропроцессора на программно-аппаратном уровне поддерживается такая структура данных, как стек. Для работы со стеком в системе команд микропроцессора есть специальные команды, а в программной модели микропроцессора для этого существуют специальные регистры:
- esp/sp (Stack
Pointer register) — регистр указателя
стека.
Содержит указатель вершины стека в текущем сегменте стека. - ebp/bp (Base
Pointer register) — регистр указателя
базы кадра стека.
Предназначен для организации произвольного доступа к данным внутри стека.
Не спешите
пугаться столь жесткого функционального
назначения регистров АЛУ. На самом
деле, большинство из них могут
использоваться при программировании
для хранения операндов практически
в любых сочетаниях. Но, как мы
отметили выше, некоторые команды
используют фиксированные регистры
для выполнения своих действий. Это
нужно обязательно учитывать.
Использование жесткого закрепления регистров
для некоторых команд позволяет более
компактно кодировать их машинное представление.
Знание этих особенностей позволит вам
при необходимости хотя бы на несколько
байт сэкономить память, занимаемую кодом
программы.
Сегментные регистры
В программной
модели микропроцессора имеется
шесть сегментных регистров:cs, ss, ds,
es, gs, fs.
Их существование обусловлено спецификой
организации и использования оперативной
памяти микропроцессорами Intel. Она заключается
в том, что микропроцессор аппаратно поддерживает
структурную организацию программы в
виде трех частей, называемых сегментами.
Соответственно, такая организация памяти
называется сегментной.
Для того чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени, и предназначены сегментные регистры. Фактически, с небольшой поправкой, как мы увидим далее, в этих регистрах содержатся адреса памяти с которых начинаются соответствующие сегменты. Логика обработки машинной команды построена так, что при выборке команды, доступе к данным программы или к стеку неявно используются адреса во вполне определенных сегментных регистрах. Микропроцессор поддерживает следующие типы сегментов:
- Сегмент
кода. Содержит команды программы.
Для доступа к этому сегменту служит регистр cs (code segment register) —сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (то есть эти команды загружаются в конвейер микропроцессора). - Сегмент
данных. Содержит обрабатываемые
программой данные.
Для доступа к этому сегменту служит регистр ds (data segment register) —сегментный регистр данных, который хранит адрес сегмента данных текущей программы. - Сегмент
стека. Этот сегмент представляет
собой область памяти, называемую стеком.
Работу со стеком микропроцессор организует по следующему принципу:последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) —сегментный регистр стека, содержащий адрес сегмента стека. - Дополнительный
сегмент данных.
Неявно алгоритмы выполнения большинства машинных команд предполагают, что обрабатываемые ими данные расположены в сегменте данных, адрес которого находится в сегментном регистре ds.
Если программе недостаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных сегмента данных. Но в отличие от основного сегмента данных, адрес которого содержится в сегментном регистре ds, при использовании дополнительных сегментов данных их адреса требуется указывать явно с помощью специальных префиксов переопределения сегментов в команде.
Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs (extension data segment registers).
Регистры состояния и управления
В микропроцессор включены несколько регистров (см. рис. 1), которые постоянно содержат информацию о состоянии как самого микропроцессора, так и программы, команды которой в данный момент загружены на конвейер. К этим регистрам относятся:
- регистр флагов eflags/flags;
- регистр указателя команды eip/ip.
Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. Рассмотрим подробнее назначение и содержимое этих регистров:
eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086. На рис. 2 показано содержимое регистраeflags.
Рис. 2. Содержимое регистра eflags
Исходя из особенностей
использования, флаги регистра eflags/flags мо
- 8
флагов состояния. Эти флаги могут изменяться
после выполнения машинных команд.
Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм. В табл. 1 приведены флаги состояния и указано их назначение; - 1
флаг управления. Обозначается df (Directory
Flag).
Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1).
Для работы с флагом df существуют специальные команды: cld (снять флаг df) и std (установить флаг df).
Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками; - 5
системных флагов, управляющих вводом/выводом,
маскируемыми прерываниями, отладкой,
переключением между задачами и виртуальным
режимом 8086.
Прикладным программам не рекомендуется модифицировать без необходимости эти флаги, так как в большинстве случаев это приведет к прерыванию работы программы. В табл. 2 перечислены системные флаги, их назначение.
Таблица 1. Флаги состояния
|
Таблица 2. Системные флаги
|
eip/ip (Instraction
Pointer register) — регистр-указатель команд.
Регистр eip/ip имеет разрядность 32/16 бит
и содержит смещение следующей подлежащей
выполнению команды относительно содержимого
сегментного регистра cs в текущем сегменте
команд. Этот регистр непосредственно
недоступен программисту, но загрузка
и изменение его значения производятся
различными командами управления, к которым
относятся команды условных и безусловных
переходов, вызова процедур и возврата
из процедур. Возникновение прерываний
также приводит к модификации регистра eip/ip.