
- •1. Архитектура Гарварда и фон Неймана
- •1.1 Введение
- •1.2 Архитектура Гарварда и архитектура Фон Неймана.
- •1.3 Устройство озуд
- •1.4 Устройство шин
- •1.5 Устройство озук
- •1.6 Архитектура фон Неймана
- •1.7 Центральный процессор
- •Введение
- •1.7.2 Устройство управления
- •1.7.4 Универсальные регистры.
- •1.8 Специальные регистры
- •1.9 Контроллеры внешних устройств
- •1.10 Подсистема прерываний
- •1.11 Тактовый генератор
- •2 Основные характеристики эвм
- •2.1 Введение.
- •2.2 Производительность
- •2.3 Время реакции и реактивность
- •2.4 Защищенность эвм
- •2.4.1 Понятие защищенности
- •2.4.2 Класс защищенности
- •2.4.3 Ответственные и особо ответственные задачи
- •2.4.4 Ограничения, установленные для различных классов защищенности эвм
- •3 Основы машинного языка
- •3.1 Введение
- •3.2 Формат команды
- •3.3 Машинный язык и язык ассемблера
- •3.4 Формат программы
3 Основы машинного языка
3.1 Введение
ЭВМ, по сути – автомат для выполнения программ написанных на так называемом "машинном языке". Изучение "машинного языка" – и есть основная составляющая изучения работы ЭВМ, принципов работы (принципов выполнения программ) Электронной Вычислительной Машиной. Этим мы и займёмся - в третьем разделе.
Знание основ машинного языка, принципов работы ЭВМ - необходимо для:
- правильного понимания характеристик ЭВМ, взаимосвязи между архитектурными решениями, применяемыми при построении ЭВМ, и характеристиками вычислительной системы;
- понимания сути и путей устранения многих проблемных ситуаций, возникающих при эксплуатации вычислительной техники;
- изучения в дальнейшем (если, вдруг, потребуется) языка Ассемблера;
- программирования на языках высокого уровня только "относительно" является "высокоуровневым. На самом деле – и полное понимание языка, и грамотное программирование на Языке высокого уровня - не возможно без знания архитектуры ЭВМ и принципов исполнения машинных программ.
Нам предстоит изучить алгоритмы, по которым выполняются многие важнейшие команды ЭВМ. Достаточно сложно изучать эти вопросы на примере конкретного процессора, или - семейства процессоров. Пришлось бы излишне отвлекаться на многие детали реализации, специфичные - именно для этого процессора. Нам же сейчас, прежде всего, важны общие принципы, заложенные в конструкции любых ЭВМ. Поэтому изучение будет происходить на примере простейшего процессора архитектуры фон Неймана, примерно такого – как тот, что был рассмотрен в первой части курса.
Будут рассмотрены алгоритмы выполнения многих команд, а именно – тех основных команд, что имеют прямое отношение к организации вычислительного процесса. При описании алгоритмов выполнения команд будет использоваться простейший язык ЯОМО (язык описания микроопераций). С несложными условными обозначениями, применяемыми в этом языке – познакомитесь по ходу изучения материала.
Кроме алгоритмов работы процессора на ЯОМО, в некоторых случаях, для иллюстрации того, как используются команды, как программируется ЭВМ - будут приведены фрагменты программ на языке очень близком к машинному языку, а именно - на языке Assembler (Ассемблер). Примеры программ на Ассемблер будут приводиться исключительно для иллюстрации принципов работы и принципов программирования ЭВМ. Изучение, тем более детальное изучение собственно языка Ассемблера – не входит в программу курса. Тем не менее, полагаю: полученные в ходе изучения нашего курса знания - помогут вам также и в том случае, если в дальнейшем - вам потребуется изучить и язык Ассемблера.
3.2 Формат команды
Машинная команда – блок данных, на момент выполнения программы размещённый в ОЗУ, и описывающий: какую операцию необходимо выполнить, где взять исходные величины и куда поместить результат.
Рассмотрим формат команды (из каких информационных разделов состоит команда и как взаимно - эти информационные разделы в команде расположены).
На рисунке – условно, графически отображена часть ОЗУ, в которой располагается машинная команда:
Графически ОЗУ представлено как массив ячеек, стрелкой – показано направление, в котором возрастают адреса ячеек ОЗУ. Фигурными скобками слева от массива ячеек – выделены отдельные части, или говорят "информационные поля команды" или Проше "поля команды": КОП, A1, A2, .. An
КОП (код операции) – это набор бит, указывающий какую операцию надо выполнить;
A1, A2, .An – атрибуты. Наборы данных, каждый из которых указывает – где (в каких ячейках памяти) взять элемент обрабатываемых командой данных, либо – куда поместить результаты. На каждый из элементов данных, что должна обрабатывать команда – свой атрибут. В простейшем случае атрибут содержит одно число – адрес ячейки ОЗУ, в которой хранится элемент данных. Возможны и другие варианты того как атрибут может указывать размещение данных (говорят - "другие методы адресации"). Вопрос о том какие ещё "методы адресации" могут быть использованы в тех или иных командах – будет рассмотрен чуть позднее;
n – число атрибутов в команде. Число атрибутов - может отличаться для разных команд. Имеются команды и без атрибутов.
LКОП – длина кода операции (число ячеек памяти занимаемое КОП-ом)
LA1, LA2, … – длины атрибутов (число ячеек памяти занимаемое соответствующим атрибутом);
LK – длина команды (число ячеек памяти занимаемое данной командой);
AK – адрес команды (адрес ячейки с наименьшим адресом из числа тех, что занимают команда)