- •I. Методические указания к курсовому проекту по дисциплине “Программно-аппаратные средства вт”
- •1. Цель и задачи курсового проекта.
- •Задание на курсовой проект
- •2.1. Техническое задание на разработку специализированного процессора ввода/вывода
- •2.2. Пояснение технического задания
- •Содержание и объём курсового проекта
- •Порядок выполнения курсового проекта.
- •II. Методические указания к выполнению этапов курсового проекта
- •2.1. Разработка алгоритма решения функциональной задачи
- •2.2. Выбор системы команд
- •2.2.1 Определение минимального набора операций в алу
- •2.2.2. Выбор способа адресации команд
- •3. Разработка структуры спвв
- •4. Оценка эффективности спвв
- •Заключение
- •Алу. Процессор.
- •Аккумуляторная и регистр – регистровая архитектура.
Алу. Процессор.
Арифметико-логическое устройство. Родоначальником микропроцессоров является АЛУ. Например, АЛУ 74181 — четырехразрядное устройство, состоящее из 75 элементов. Оно может выполнять 16 базовых операций над двумя четырехбитовыми входными словами. Результат помещается в четырехбитовое выходное слово и подается на четыре дополнительные выходные линии. Функция SELECT оперирует с четырьмя входными линиями. На рис. 24 3 представлена схема АЛУ в виде черного ящика. Объединяя несколько АЛУ, можно работать с входными и выходными словами любого размера.
В табл. 1-1 представлены 16 функций, реализуемых АЛУ 74181. Если значение сигнала на управляющем входе М равно 0, то выполняются арифметические операции; если же М = 1, то выходное слово F представляет результат одной из 16 логических операций над словами А и В.
Таблица 1.1. Набор операций АЛУ 74 181
Рис. 1.1. Логическая схема АЛУ 74 181.
Рис. 1.2. Схема микропроцессора, включающего АЛУ, регистры, аккумуляторы и мультиплексор передачи данных
Аккумуляторная и регистр – регистровая архитектура.
При построении большинства микропроцессоров и микроконтроллеров (например, серии 8 разрядных микроконтроллеров MCS 51) используется традиционная так называемая аккумуляторная архитектура когда один из регистров специального назначения аккумулятор по умолчанию является источником одного из двух операндов и одновременно приемником результата операции выполняемой в арифметико-логическом устройстве (АЛУ) Такой подход позволяет существенно уменьшить формат команды за счет адресации в поле операндов только одного из операндов.
Для выполнения какого-либо действия в процессорах «классической» аккумуляторной архитектуры в общем случае кроме собственно команды, например, сложения, требуются, по крайней мере, еще две операции пересылки данных, загрузка первого операнда в аккумулятор и через него в один из портов арифметико-логического устройства (АЛУ), а также пересылка результата операции из аккумулятора по месту назначения уже после завершения операции (рис 1.1) При этом второй операнд извлекается из оперативной памяти непосредственно в процессе выполнения операции Также в процессе выполнения операции результат помещается в аккумулятор.
По мере развития микропроцессорной техники аккумуляторная архитектура стала тормозом в повышении производительности центрального процессора и уступила место так называемой регистр-регистровой архитектуре. Основным отличием регистр-регистровой архитектуры от аккумуляторной является то, что любые ячейки интегрированной на кристалл микроконтроллера сверхбыстродействующей оперативной памяти, регистрового ОЗУ, могут рассматриваться либо как операнды-источники, либо как аккумулятор для приема результата операции. При таком подходе любая из команд процессора может быть трехоперандной, и необходимость в дополнительных операциях пересылки данных из аккумулятора и обратно отпадает. Естественно, что регистр-регистровая архитектура требует более сложного формата команды. Наряду с полем кода операции в формате команды будут присутствовать поля адресов операндов-источников и операнда-приемника.
Таким образом, любая ячейка регистрового файла, внутренней сверхоперативной памяти, может выполнять функцию как источника данных, так и приемника данных.
Главные преимущества регистр-регистровой архитектуры:
• Отсутствует необходимость в предварительной загрузке одного из операндов в аккумулятор перед выполнением операции.
• Содержимое источников данных в результате выполнения операции может оставаться неизменным, либо модернизироваться по желанию программиста. В последнем случае источник данных одновременно будет и приемником результата операции.
• Резко уменьшается число операций по пересылке данных и возрастает скорость вычислений.
• Появляется возможность расширения системы команд трех-операндными высокопроизводительными командами.
Совокупность перечисленных выше факторов вместе с главным преимуществом - возможностью выполнения операций непосредственно над 16-разрядными операндами, приводит к повышению производительности 16-разрядных микроконтроллеров в несколько раз по сравнению с 8-разрядными контроллерами, работающими на тех же тактовых частотах.
Приложение 2.
Форматы команд
Типовая команда, в общем случае, должна указывать:
Подлежащую выполнению операцию;
Адреса исходных данных (операндов), над которыми выполняется операция;
Адрес, по которому должен быть помещен результат операции.
В соответствии с этим команда состоит из двух частей:
-
Операционная часть
Адресная часть
Формат команды определяет ее структуру, то есть количество двоичных разрядов, отводимых под всю команду, а также количество и расположение отдельных полей команды. Полем называется совокупность двоичных разрядов, кодирующих составную часть команды. Выбор формата команды влияет на многие характеристики ЭВМ. Оценивая возможные форматы, нужно учитывать следующие факторы:
Общее число различных команд;
Общую длину команды;
Тип полей команды (фиксированной или переменной длины) и их длина;
Простоту декодирования;
Адресуемость и способы адресации;
Стоимость оборудования для декодирования и исполнения команд.
Длина команды влияет на организацию и емкость памяти, структуру шина, сложность и быстродействие системы. С одной стороны, удобно иметь в распоряжении мощный набор команд, то есть как можно больше кодов операций, операндов, способов адресации, и максимальное адресное пространство. Однако все это требует выделения большого количества разрядов под каждое поле команды, что приводит к увеличению ее длины. Вместе с тем, для ускорения выборки из памяти желательно, чтобы команда была как можно короче, а ее длина была равна или кратна ширине шины данных. Для упрощения аппаратуры и повышения быстродействия ЭВМ длину команды обычно выбирают кратной байту, поскольку в большинстве ЭВМ основная память организована в виде 8-битных ячеек. В рамках системы команд одной ЭВМ могут использоваться разные форматы команд. Обычно это связано с применением различных способов адресации. В таком случае в состав кода команды вводится поле для задания способа адресации, тогда операционная часть будет состоять из двух полей кода операции и поля задания способа адресации.
Разрядность полей команды
Количество двоичных разрядов, отводимых под код операции, выбирается так, чтобы можно было представить любую из операций. Если система команд предполагает N различных операций, то минимальная разрядность кода операций R определяется следующим образом:
R=int(log2N)
где int означает округление в большую сторону от целого числа.
При заданной длине кода команды приходится искать компромисс между разрядностью поля кода операции и адресного поля. Большее количесвто возможных операций предполагает длинное поле кода операции, что ведет к сокращению адресного поля, то есть к сужению адресного пространства. Для устранения этого противоречия иногда длину поля кода операции варьируют. Изначально под код операции отводится некое фиксированное чилос разрядов, однако для отдельных команд это поле расширяется за счет нескольких битов, отнимаемых у адресного поля. Так, например, может быть увеличено число различных команд пересылки данных. Необходимо отметить, что «урезание» части адресного поля ведет к сокращению возможностей адресации, и подобный прием рекомендуется только в тех командах, где подобное сокращение может быть оправданным.
В адресной части команды содержится информация о местонахождении исходных данных и месте сохранения результата операции. Обычно местонаходнение каждого из операндов и результата задается в команде путем указания адреса соответствующей ячейки основной памяти или номера регистра процессора. Принципы использования информации из адресной части команды определяет система адресации. Система адресации задает число адресов в команде команды и принятые способы адресации.
СПОСОБЫ И МЕХАНИЗМЫ АДРЕСАЦИИ
Понятия и термины, используемые для обозначения способов адресации, возникли на практике, и истолкования их не всегда однозначны, а иногда противоречивы. Поэтому истолкование, приводимое ниже, конечно, не будет в согласии со всеми существующими.
Большинство способов адресации связано с необходимостью вычисления адреса оперативной памяти (ОП), по которому производится фактическое обращение к ней. Этот адрес называют исполнительным. Рассмотрим способы адресации, используемые в современных ЭВМ.
Прямая
адресация.
В данном способе адресации код адреса
в команде является исполнительным
адресом обращения к памяти. В некоторых
ЭВМ используют короткую прямую адресацию,
обеспечивающую доступ к ограниченной
части адресного пространства. Например,
короткий адрес может быть расширен до
полного с использованием его старшего
разряда, т.е. недостающие старшие разряды
принимают значения, равные значению
старшего разряда короткого адреса.
Таким образом, становится возможным
задавать любую ячейку ОП в верхней или
нижней части адресного пространства
объемом
байт
(рис. П.1,
а, б).
Рис. П.1. Прямая адресация: а - длинная, б - короткая
Регистровая адресация. Это частный случай прямой адресации. Поле адреса команды содержит номер регистра, в котором хранится операнд (рис.П.2).
Рис. П.2. Регистровая адресация
Неявная адресация. В команде не содержится явных указаний об адресе участвующего в операции операнда или адреса, по которому помещается результат операции, но этот адрес подразумевается, Например, команда может содержать адреса обоих операндов, участвующих в операции, при этом подразумевается, что результат операции помещается по адресу одного из операндов, или команда указывает только адрес одного операнда, а адрес второго, которым является содержимое специального регистра (называемого регистром результата или аккумулятором), подразумевается.
Непосредственная адресация. В этом способе адресации операнд является составной частью команды (рис.П.3).
Рис. П.3. Непосредственная адресация
Косвенная адресация. Как показано на рис.П.4, при этом способе адресации в качестве исполнительного адреса используется содержимое ячейки памяти, задаваемой в команде прямым адресом. Таким образом, косвенная адресация может быть определена как «адресация адреса». На косвенную адресацию указывает либо код операции команды, либо значение специального разряда (признака адресации). Цифра «0» или «1» в нем указывает, является адресная часть команды прямым адресом или косвенным.
Рис. П.4. Косвенная адресация
Многоступенчатая косвенная адресация. В этом случае ячейка памяти содержит также разряд-признак косвенной адресации. Если этот разряд указывает на продолжение косвенной адресации, то устройство управления последовательно выбирает из памяти адреса до тех пор, пока не будет найдена ячейка, в которой разряд-признак определит прямую адресацию. Адрес из этой последней ячейки и является искомым исполнительным адресом (рис.П.5).
Рис. П.5. Многоступенчатая косвенная адресация
Косвенная регистровая адресация. В данном способе адресации исполнительный адрес извлекается не из оперативной памяти, а из внутреннего регистра процессора (рис.П.6).
Рис. П.6. Косвенная регистровая адресация
Автоинкрементная и автодекрементная адресации. Данные способы адресации можно рассматривать как упрощенный вариант индексации - важного механизма преобразования адресных частей команд и организации вычислительных циклов, поэтому их часто называют автоиндексацией. Автоиндексация прибавлением (приращением) называется инкрементной, вычитанием (убавлением) - декрементной. Приращение или убавление адреса может производиться либо перед выборкой содержимого ячейки ОП, либо после выборки.
В наиболее распространенном случае автоинкрементная адресация обеспечивает вычисление исполнительного адреса, как и при косвенном регистровом способе, а затем автоматически увеличивает содержимое регистра на размер операнда (рис.П.7). Например, в ЭВМ с побайтовой адресацией содержимое регистра необходимо увеличить на I, чтобы указать адрес очередного байта, и на 2, если операнд занимает два байта. Размер операнда можно определить, исходя из кода операции команды.
Рис. П.7. Автоинкрементная адресация
Автодекрементная адресация аналогична автоинкрементной и обеспечивает вычитание размера операнда из содержимого адресного регистра. В наиболее распространенном случае при этом способе адресации вычитание выполняется до использования содержимого регистра в качестве исполнительного адреса (рис.П.8).
Рис. П.8. Автодекрементная адресация
Если в процессоре отсутствует регистровая память, то вместо регистров используется заранее оговоренные (фиксированные) ячейки ОП. При обращении к какой-либо из них в режиме косвенной адресации ее содержимое увеличивается (уменьшается) на I, прежде чем будет использовано как исполнительный адрес. Это автоиндексируемые ячейки ОП. В режиме прямой адресации они ведут себя как обычные ячейки памяти.
Косвенная автоинкрементная и автодекрементная адресации. При косвенной автоинкрементной адресации косвенный адрес определяется содержимым регистра, номер которого указан в команде. Исполнительный адрес выбирается из ячейки памяти по косвенному адресу. Содержимое регистра увеличивается на I (рис.П.9).
Рис. П.9. Косвенная автоинкрементная адресация
В случае косвенной автодекрементной адресации содержимое регистра уменьшается на I, затем образованный косвенный адрес выбирается из регистра, а исполнительный адрес - из ячейки памяти по косвенному адресу (рис.П.10).
Рис. П.10. Косвенная автодекрементная адресация
Страничная адресация. При использовании страничного способа адресации ОП разбивается на ряд страниц одинаковой длины. Размер страницы равен байт. Это позволяет рассматривать n -разрядный исполнительный адрес, состоящим из двух частей: номера страницы (старшие n разрядов) и адреса байта на странице (младшие k разрядов). Страничный способ адресации не имеет никакого отношения к физической организации ОП ЭВМ. Этот способ просто используется для указания адреса с помощью небольшого количества разрядов. Команда содержит только адрес байта на странице. Номер страницы формируется одним из следующих путей:
а) номеру страницы присваивается нулевое значение - адресация по нулевой странице (рис. П.II, а);
б) номер страницы устанавливается равным значению старших разрядов счетчика команд; при этом исполнительный адрес располагается на той странице, где находится выполняемая команда, - адресация с использованием текущей страницы (рис.П.11, 6);
в) номер страницы определяется по содержимому регистра страниц, в который предварительно программным путем загружается требуемый номер страницы, - адресация с использованием регистра страниц (рис. П.II, в).
Рис. П.II. Страничная адресация:
а - адресация с использованием нулевой страницы;
б - адресация с использованием текущей страницы;
в - адресация с использованием регистра страниц
Индексная адресация (адресация с индексированием). При способе адресации с индексированием в команде указываются фиксированный базовый адрес (аналогично прямому способу адресации) и номер регистра, в котором хранится смещение (индекс). Команда, как правило, располагается в двух смежных ячейках ОП. Исполнительный адрес формируется сложением базового адреса и смещения, хранимого в адресуемом регистре (рис.П.12).
Рис. П.12. Индексная адресация
Базовая адресация (адресация по базе). Способ адресации по базе схож со способом адресации с индексированием. В рассмотренном способе адресации с индексированием команда содержит базовый адрес, а в индексном регистре находится смещение. При адресации по базе наоборот - команда содержит смещение, а в адресном (или базовом) регистре размещен базовый адрес. Исполнительный адрес формируется также сложением базового адреса и смещения (рис.П.13). Смещение может быть как положительным, так и отрицательным.
Рис. П.13. Базовая адресация
Базовый адрес всегда является полным адресом, в то время как смещение может быть коротким или длинным. Если смещение и базовый адрес имеют одинаковую длину, то оба способа адресации неразличимы. Их различие очевидно, когда используются короткие смещения.
Базовая адресация с индексированием. Вычисление исполнительного адреса при базовой адресации с индексированием показано на рис.П.14. Исполнительный адрес формируется сложением содержимого базового регистра с содержимым индексного регистра и смещения, указанного в команде.
Рис. П.14. Базовая адресация с индексированием
Для микроЭВМ, оперирующих с короткими словами, в формате команды указываются только номера индексного и базового регистров, смещение отсутствует. Исполнительный адрес получается сложением содержимого индексного и базового регистров.
Относительная адресация. Адресацию, при реализации которой исполнительный адрес вычисляется как сумма фиксированного смещения в команде и текущего значения счетчика команд, называют относительной адресацией (рис.П.15). Когда выполняется сложение с содержимым счетчика команд, последний уже указывает адрес очередной команды. Смещение может иметь знак.
Рис. П.15. Относительная адресация
Косвенная относительная адресация. Этот способ адресации отличается от относительной тем, что вычисленный рассмотренным только что способом адрес является не исполнительным адресом а косвенным адресом операнда, т.е. адресом, по которому из памяти извлекается исполнительный адрес (рис.П.16).
Рис. П.16. Косвенная относительная адресация
Относительная адресация с индексированием. В этом способе адресации базовым адресом является содержимое счетчика команд, а в команде указываются смещение и номер регистра, который содержит дополнительное смещение (индекс). Исполнительный адрес формируется суммированием содержимого счетчика команд, смещения и индекса (рис.П.17).
Рис. П.17. Относительная адресация с индексированием
Прединдексная косвенная адресация. В данном способе адресации индексируется базовый адрес, заданный в команде. Прединдексация - это индексация до косвенной адресации. Базовый адрес суммируется с содержимым индексного регистра, номер которого также указан в команде. Полученный таким образом адрес является косвенным адресом, по которому из ОП выбирается исполнительный адрес операнда (рис.П.18).
Рис. П.18. Предындексная косвенная адресация (вариант 1)
В другом варианте прединдексной косвенной адресации в формате команды указываются номер базового регистра и смещение. Смещение суммируется с содержимым базового регистра для формирования косвенного адреса; содержимое ячейки ОП ос косвенным адресом является исполнительным адресом (рис.П.19).
Рис. П.19. Прединдексная косвенная адресация (вариант 2)
Постиндексная косвенная адресация. В этом случае индексируется заключительный адрес, хранящийся а ячейке ОП или в одном из регистров и указывающий ячейку, в которой содержится операнд или должен запоминаться результат. Постиндексация - это индексация после косвенной адресации. По базовому адресу, указанному в команде, из ячейки ОП извлекается адрес, к нему прибавляется содержимое индексного регистра. Полученная сумма будет исполнительным адресом операнда (рис.П.20).
Рис. П.20. Постиндексная косвенная адресация (вариант 1)
В другом варианте постиндексной косвенной адресации в команде указываются номер базового регистра и смещения. Базовый адрес используется в качестве косвенного адреса; смещение прибавляется к содержимому ячейки с косвенным адресом, чтобы получить требуемый исполнительный адрес (рис.П.21).
Рис. П.21. Постиндексная косвенная адресация (вариант 2)
Эффективность способа адресации можно характеризовать двумя показателями: затратами оборудования, определяемых в основном затратами на хранение адресных кодов команд и затратами времени на доступ к адресуемым данным, определяемыми суммой времени формирования исполнительного адреса и времени выборки или записи операнда.
количество адресов в команде
Для определения количества адресов, включаемых в адресную часть, используется термин адресность.
Рассмотрим одну из фундаментальный операций – сложение двух чисел: С=А+В. Для выполнения этого действия содержимое памяти по адресам А и В должно быть переслано в процессор, где будет вычислена сумма. Полученная сумма должна быть отправлена обратно в память и записан по адресу С. Предположим, что это действие выполняется посредством одной машинной команды. Эта команда содержит адреса трех операндов А, В, С, то есть имеет трехадресный формат:
-
Код операции
Источник 1
Источник 2
Место назначения
Если для указания адреса одного операнда в памяти необходимо k бит, длина адресного поля такой команды составит 3k бит.
Если по умолчанию взять в качестве адреса результата адрес одного из операндов (обычно второго), то можно обойтись без третьего адреса, и в итоге получаем двухадресный формат команды. Естественно, что после выполнения операции соответствующий операнд теряется.
Команду можно еще больше сократить, прейдя к одноадресному формату, что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется специальный регистр процессора – аккумулятор, поскольку результата «аккумулируется».
Если для обоих операндов указать четко заданное месторасположение, а также в случае команд, не требующих операнда, можно получить нульадресный формат команды. В таком варианте адресная часть вообще отсутствует.
Приложение 3.
Показатели эффективности системы операций
Качество системы операций можно характеризовать двумя свойствами: функциональной полнотой и эффективностью.
Функциональная полнота – это достаточность системы операций для описания любых алгоритмов. Системы операций ЭВМ включают в себя большое число машинных операций и практически всегда являются функционально полными.
Эффективность системы операций показывает степень соответствия системы операций заданному классу алгоритмов и требований к производительности. Количественно эффективность характеризуется затратами оборудования, затратами времени на реализацию алгоритмов и вероятностью правильного выполнения программ.
Затраты оборудования – сумма затрат в процессоре на реализацию системы операций Спр и затрат памяти на размещение данных и программ, представляющих алгоритм в терминах заданной системы операций Сзу.
Величина Спр пропорциональна количеству и сложности машинных операций, а Сзу - емкости памяти, необходимой для хранения закодированного алгоритма.
