Введение.
В своей курсовой работе я попытался изложить общую схему работы процессора и проиллюстрировать ее с помощью программы-имитатора.
В первой части курсовой работы мною изложены основные теоретические сведения о логическом устройстве микропроцессора, его предназначении и принципах работы. При этом я не ориентировался на конкретный тип процессора.
Во второй части я рассматриваю руководство пользователя к своей программе-имитатору. Данная программа написана в среде Delphi. При написании данной программы я ориентировался на процессор типа PDP, как наиболее подходящего для изучения и наиболее часто рассматриваемого в учебниках информатики.
Микропроцессор как основа ЭВМ.
Внутренняя структура микропроцессора.
Любая ЭВМ предназначена для обработки информации причем, как правило, осуществляет эту обработку опосредовано – представляя информацию в виде чисел. Для работы с числами машина имеет специальную важнейшую часть – микропроцессор. Это универсальное логическое устройство, которое оперирует с двоичными числами, осуществляя простейшие логические и математические операции, и не просто как придется, а в соответствии с программой, т.е. в заданной последовательности. Для хранения этой заданной последовательности служат запоминающие устройства – ЗУ. ЗУ бывают постоянными – ПЗУ, в которых информация хранится, не изменяясь сколь угодно долго, и оперативными – ОЗУ, информация в которых может быть изменена в любой момент в соответствии с результатами ее обработки. Процессор общается с ОЗУ и ПЗУ через так называемое адресное пространство, в котором каждая ячейка памяти имеет свой адрес.
МП состоит из набора регистров памяти различного назначения, которые определенным образом связаны между собой и обрабатываются в соответствии с некоторой системой правил. Регистр – это устройство, предназначенное для хранения и обработки двоичного кода. К внутренним регистрам процессора относят: счетчик адреса команд, указатель стека, регистр состояний, регистры общего назначения.
Наличие счетчика команд было положено еще в работах фон Неймана. Роль счетчика состоит в сохранении адреса очередной команды программы и автоматическом вычислении адреса следующей. Благодаря наличию программного счетчика в ЭВМ реализуется основной цикл исполнения последовательно расположенных команд программы.
Стек – это особый способ организации памяти, при использовании которого достаточно сохранять адрес последней заполненной ячейки ОЗУ. Именно адрес последней заполненной ячейки ОЗУ и хранится в указателе стека. Стек используется процессором для организации механизма прерываний, обработки обращения к подпрограммам, передачи параметров и временного хранения данных.
В регистре состояний хранятся сведения о текущих режимах работы процессора. Сюда же помещается информация о результатах выполняемых команд, например: равен ли результат нулю, отрицателен ли он, не возникли ли в ходе операции ошибки и т.п. Использование и анализ в этом регистре происходит побитно, каждый бит регистра имеет самостоятельное значение.
Регистры общего назначения (РОН) служат для хранения текущих обрабатываемых данных или их адреса в ОЗУ. У некоторых процессоров регистры функционально равнозначны, в других назначение регистров строго оговаривается. Информация из одного регистра может предаваться в другой.
Система команд микропроцессора
Несмотря на бурную эволюцию вычислительной техники, основной набор команд довольно слабо изменился. Система команд любой ЭВМ обязательно содержит следующие группы команд обработки информации.
1. Команды передачи данных (перепись), копирующие информацию из одного места в другое.
2. Арифметические операции, к которым в основном относят операции сложения и вычитания. Умножение и деление обычно реализуется с помощью специальных программ.
3. Логические операции, позволяющие компьютеру производить анализ получаемой информации. Простейшими примерами команд рассматриваемой группы могут служить сравнение, а также известные логические операции и, или, не.
4. Сдвиги двоичного кода влево и вправо. В некоторых случаях сдвиги используются для реализации умножения и деления.
5. Команды ввода и вывода информации для обмена с внешними устройствами. В некоторых ЭВМ внешние устройства являются специальными служебными адресами памяти, поэтому ввод и вывод осуществляется с помощью команд переписи.
6. Команды управления, реализующие нелинейные алгоритмы. Сюда относят условный и безусловный переходы, а также команды обращения к подпрограмме (переход с возвратом). Часто к этой группе относят операции по управлению процессором типа останов или нет операции.
Любая команда ЭВМ обычно состоит из двух частей – операционной и адресной. Операционная часть называемая также кодом операции указывает, какое действие необходимо выполнить с информацией. Операционная часть имеется у любой команды. Адресная часть описывает, где используемая информация хранится и куда поместить результат. В некоторых командах управления работой машины адресная часть может отсутствовать, например, в команде останова.
Код операции можно представить себе как некоторый условный номер в общем списке команд. В основном этот список построен в соответствии с определенными внутренними закономерностями.
Адресная часть обладает значительно большим разнообразием. Основу адресной части составляет операнд. В зависимости от количества возможных операндов команды могут быть одно- и двухадресные. В двухадресных командах результат записывается либо в специальный регистр (сумматор), либо вместо одного из операндов.
Способы адресации данных
Способы (или методы) адресации не что иное, как способы указания на те или иные ячейки памяти, с которыми должен манипулировать оператор. Существует много различных методов адресации. Количество их зависит от типа процессора. Наличие большого количества способов адресации обеспечивает высокую гибкость в построении программ и является большим преимуществом системы команд данного типа ЭВМ. Способы адресации практически одинаковы для всех команд, в которых присутствуют операнды. В своей курсовой я подробно рассматриваю только три основных метода адресации, которые применяются почти во всех процессорах.
Регистровая адресация. При этом способе операндом является один из регистров общего назначения. Число хранится непосредственно в регистре. Записывается как Rn, где n – номер регистра.
Косвенная адресация. При этом способе адресации в одном из регистров общего назначения содержится не само число, с которым нужно работать, а его адрес, то есть номер ячейки памяти, в котором число находится. Записывается как (Rn), где n – номер регистра.
Автоинкрементная адресация. Этот вид адресации несколько сложнее двух предыдущих. Помимо основного действия (косвенного обращения к ячейке памяти), при использовании этого метода, происходит еще изменение адреса этого обращения. В данном случае увеличивается указатель адреса ячейки памяти, к которой мы обращаемся, то есть содержимое регистра, служащего указателем адреса. Данное увеличение происходит автоматически, без какой-либо команды. Записывается эта адресация как (Rn)+. То, что знак + стоит после имени регистра, намекает на порядок выполнения команды: сначала происходит операция с ячейкой, на которую указывает адрес помещенный в регистр Rn, а потом уже содержимое регистра увеличивается на 2 (если оператор работает со словом, то переход к адресу следующего слова), или на 1 (если оператор работает с байтом, переход к адресу следующего байта). Данный способ адресации применяется для работы с массивами и при использовании стека (например, при использовании подпрограмм).
Существует еще один особый способ адресации, который рассматривается отдельно. Речь идет о работе со стеком. Стек – неявный способ адресации данных, при котором информация записывается и считывается только последовательным образом с использованием указателя стека. Стек всегда имеет единственный вход и выход информации – для хранения его адреса и нужен указатель стека. При записи данных в стек процессор проделает следующее:
1) уменьшит указатель стека на 2 (целое число занимает в памяти 2 байта);
2) запишет данные по полученному адресу.
При извлечении данных из стека процессор проделает следу шее:
1) считает данные из стека;
2) увеличит указатель на 2.
В командах работы со стеком адрес ОЗУ не фигурирует в явном виде. Но при этом молчаливо предполагается, что указатель стека уже задан. При задании указателя надо быть внимательным. Если указатель стека определен неправильно, то запись в стек может разрушить полезную информацию в ОЗУ.
Таким образом, мы рассмотрели способы адресации информации, которые существуют почти во всех типах процессора и которые я использовал в своем имитаторе.
Руководство пользователя.
Описание программы
Изложенную выше структуру микропроцессора я попытался реализовать в своей программе.
Основную часть программы составляет Редактор. Он представляет собой место, где вводится программа, которую выполняет процессор. Каждая команда вводится в свою ячейку, имеющую адрес. Размер адресного пространства редактора составляет 1Кб. Начальная ячейка имеет адрес 1000, конечная – 2024. В качестве операнда в одно- и двухадресных командах выступает один из регистров общего назначения. Я выделил следующую систему команд.
1. Одноадресные команды.
Представлены в следующей форме: Операция операнд ОП1.
Очистить ОП1– обнуляет значение операнда.
Увеличить на 1 ОП1 – увеличивает значение операнда.
Уменьшить на 1 ОП1 – уменьшает значение операнда.
2. Двухадресные команды.
Представлены в следующей форме: Операция первый операнд ОП1 второй операнд ОП2.
Переслать ОП1 в ОП2 – пересылает значение первого операнда во второй операнд.
Добавить ОП1 к ОП2– добавляет значение первого операнда ко второму операнду, результат во втором операнде.
Вычесть ОП1 из ОП2 – вычитает значение первого операнда из второго операнда, результат во втором операнде.
Сравнить ОП1 с ОП2 – сравнивает разность второго и первого операнда с нулем, значения операндов не меняются, результат влияет на состояние регистра состояний.
3. Безадресные команды.
Возврат из подпрограммы – осуществляет возврат из подпрограммы в ячейку, следующую за командой вызвавшей эту подпрограмму, используется только в подпрограммах
Стоп – команда останова, ставится обязательно в конце программы, после ее выполнения ни какие команды не выполняются.
4. Команды перехода.
Переход на К слов – безусловный переход – осуществляет переход на К слов.
Вызов подпрограммы по адресу – переход на адрес К с запоминанием адреса возврата для команды возврата из подпрограммы.
Если переход на К слов – переход на К слов, если результат 0.
Если = переход на К слов – переход на К слов, если результат =0.
Если >= переход на К слов – переход на К слов, если результат >=0.
Если > переход на К слов – переход на К слов, если результат >0.
Если < переход на К слов – переход на К слов, если результат
Если
R5 = +00000 1004 Увеличить на 1 R5 1034 3
R7 = +01000 1006 Сравнить R0 с R1 1036 -4
1008 Если
1010 Cтоп
4. Программа с подпрограммой.
Даны два массива одинаковой размерности. Произвести обмен максимальными элементами. В качестве подпрограммы оформить нахождение максимального элемента массива.
Адрес начала первого массива 1050 хранится в R0. Адрес конца первого массива 1060 в R1. Адрес начала второго массива 1070 в R2. Адрес конца второго массива 1080 в R3. Начало стека 1200 в R6.
Регистры Редактор Память
R0 = +01050 1000 Вызов подпрограммы 1050 1
R1 = +01060 1002 по адресу 1022 1052 2
R2 = +01070 1004 Переслать R2 в R0 1054 3
R3 = +01080 1006 Переслать R3 в R1 1056 -2
R6 = +01200 1008 Переслать R4 в R2 1058 4
R7 = +01000 1010 Переслать R5 в R3 1060 1
1012 Вызов подпрограммы …
1014 по адресу 1022 1070 -2
1016 Переслать R2 в (R5) 1072 5
1018 Переслать R4 в (R3) 1074 6
1020 Стоп 1076 -3
1022 Очистить R4 1078 7
1024 Переслать R0 в R5 1080 -7
1026 Переслать (R0)+ в R4
1028 Сравнить (R0) с R4
1030 Если < переход на 2 слов >
1032 Переслать R0 в R5
1034 Переслать (R0) в R4
1036 Увеличить на 1 R0
1038 Увеличить на 1 R0
1040 Сравнить R0 с R1
1042 Если
1044 Возврат
В данной программе регистры R4 и R5 используются как вспомогательные.
Заключение.
Разработанная программа-имитатор позволяет наглядно иллюстрировать логическую структуру процессора и показать как он исполняет программы написанные пользователем. Фактически мой имитатор во многом повторяет написанную для ПЭВМ "Yamaha" программу-имитатор PDP.
Программа предназначена для изучения основных принципов устройства ЭВМ, а именно, устройства микропроцессора как основной части практически любой ЭВМ. Данный имитатор позволяет пользователю написать свою программу, используя данную систему команд, и проследить, как процессор выполняет заданную программу. В систему команд имитатора были отобраны наиболее важные инструкции, предназначенные для обработки целых чисел.
Как уже было сказано данная программа написана в среде Delphi и хранится на диске в файле pdp.exe. Примеры предложенные в тексте курсовой работы вы также сможете найти на диске в файлах test1.pdp, test2.pdp, test3.pdp, test4.pdp. Программа предназначена для работы на компьтерах PC AT 486 и выше. На компьютере также необходимо наличие операционной системы WINDOWS'95/98. Рекомендуется также минимальное разрешение экрана 800 на 600.
Литература.
1. Еремин Е. А. Как работает современный компьютер. – Пермь, 1997.
2. Зальцман Ю. А. Архитектура и программирование на языке ассемблера БК-0010. Информатика и образование, 1990, №1-4.
3. Смирнов А. Д. Архитектура вычислительных систем. – М.: "Наука", 1990.
4. Фаронов В. В. Delphi 3 Учебный курс. – М.: "Нолидж", 1998.
5. Туррот П., Брент Г. и др. Супербиблия Delphi 3. – Киев, "ДиаСофт", 1997.
6. Орлик С. Секреты Delphi на примерах. – М.: "Бином" 1996.
1