ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ КАФЕДРА ИНФОРМАТИКИ И МЕТОДИКИ ПРЕПОДАВАНИЯ МАТЕМАТИКИ В.А. Чулюков АРХИТ ЕК Т УРА КОМПЬЮТЕРА Ч АСТЬ 1 Воронеж 2012 1. ОБЩАЯ ХАРАКТЕРИСТИКА МИКРОПРОЦЕССОРА И МИКРО-ЭВМ Микропроцессор базируется на логических схемах того же типа, что и центральный процессор цифровой вычислительной машины. В обоих случаях для манипулирования данными и выполнения вычислений под управлением программы используются цифровые схемы. Иначе говоря, микропроцессор – устройство обработки данных. В отличие от стандартного центрального процессора, цифровые логические схемы микропроцессора реализованы на одной большой интегральной схеме (БИС) (рис.1). Он выполняет две функции: обработку и управление. Рис. 1. БИС микропроцессора Обработка включает перемещение данных с одного места на другое и выполнение операций над ними. Управление определяет как обрабатывать данные. Работа микропроцессора состоит из следующих шагов: 1. Из памяти извлекается команда. 2. Логические схемы управления декодируют команду. 3. Осуществляется выполнение этой команды. Эти шаги называют циклом выборка-выполнение. Для любой команды, хранимой в памяти микропроцессор выполняет один такой цикл. Помимо извлечения команд из памяти и их выполнения схемы управления выполняют ряд других важных функций таких как обмен информацией с внешними устройствами, подсоединенными к процессору. Каким бы мощным не казался процессор, он ничего не может делать сам по себе. Необходимы схемы для 2 хранения команд программы, схемы ввода-вывода данных и схемы электропитания. Микро-ЭВМ – законченная вычислительная система, центральной частью которой является микропроцессор. Под мощностью микропроцессора понимают его возможность обрабатывать данные. Мощность принято оценивать тремя основными характеристиками: 1. Длиной слова данных. 2. Количеством адресуемых слов памяти. 3. Скоростью выполнения команд. Каждый микропроцессор оперирует данными, представляемыми словами фиксированной длины. В этом случае существенно упрощается построение процессора. В недавнем прошлом характерными являлись слова длиной 4, 8, 16 бит. То есть при длине слова 4 бит за один цикл процессор мог обрабатывать числа в диапазоне от 0 до 15. Конечно, и в этом случае могли обрабатываться большие числа, но они считывались из памяти по частям. Это ограничивало скорость работы процессора. В настоящее время типичными являются слова длиной 32 и 64 бит. С каждым удваиванием длины слова данных микропроцессора последний становится более мощным. Для извлечения слова из памяти процессор обращается по соответствующему адресу. Адреса памяти начинаются с нуля и представляются в двоичной форме. ЭВМ разного типа имеют разные значения максимального адреса памяти. Чем больше это значение, тем больше вычислительная мощность микропроцессора. Диапазон адресации 4-х битового слова равен 16 словам, 8-битового – 256 словам, 16-битового - 65536 слов. Конечно, возможность адресации к данным, находящимся в памяти, для большинства микропроцессоров не ограничена единственным словом. Поэтому диапазон адресации не ограничен длиной адресного слова. В современных ЭВМ оперативная память может составлять гигабайты. Скорость выполнения команд обуславливается продолжительностью во времени цикла выборка-выполнение для одного шага программы. Характерными тактовыми частотами в настоящее время являются частоты порядка гигагерц. 3 2. А РХИТЕКТУРА ФОН Н ЕЙМАНА Подавляющее большинство современных ЭВМ имеет так называемую архитектуру фон Неймана. Рис. 2. Джон фон Нейман Архитектура фон Неймана – широко известный принцип совместного хранения программ и данных в памяти компьютера. Вычислительные системы такого рода часто обозначают термином «машина фон Неймана», однако, соответствие этих понятий не всегда однозначно. В общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных. Наличие заданного набора исполняемых команд и программ было характерной чертой первых компьютерных систем. Сегодня подобный дизайн применяют с целью упрощения конструкции вычислительного устройства. Так, настольные калькуляторы, в принципе, являются устройствами с фиксированным набором выполняемых программ. Их можно использовать для математических расчётов, но невозможно применить для обработки текста и компьютерных игр, для просмотра графических изображений или видео. Изменение встроенной программы для такого рода устройств требует практически полной их переделки, и в большинстве случаев невозможно. Впрочем, перепрограммирование ранних компьютерных систем всё-таки выполнялось, однако требовало огромного объёма ручной работы по подготовке новой документации, перекоммутации и перестройки блоков и устройств и т. п. Всё изменила идея хранения компьютерных программ в общей памяти. Ко времени её появления использование архитектур, основанных на наборах 4 исполняемых инструкций, и представление вычислительного процесса как процесса выполнения инструкций, записанных в программе, чрезвычайно увеличило гибкость вычислительных систем в плане обработки данных. Один и тот же подход к рассмотрению данных и инструкций сделал лёгкой задачу изменения самих программ. В 1946 году трое учёных – Артур Бёркс, Герман Голдстайн и Джон фон Нейман – опубликовали статью «Предварительное рассмотрение логического конструирования электронного вычислительного устройства». В статье обосновывалось использование двоичной системы для представления данных в ЭВМ (преимущественно для технической реализации, простота выполнения арифметических и логических операций – до этого машины хранили данные в десятичном виде), выдвигалась идея использования общей памяти для программы и данных. Имя фон Неймана было достаточно широко известно в науке того времени, что отодвинуло на второй план его соавторов, и данные идеи получили название «принципы фон Неймана». 1. Принцип двоичного кодирования. Согласно этому принципу, вся информация, поступающая в ЭВМ, кодируется с помощью двоичных сигналов (двоичных цифр, битов) и разделяется на единицы, называемые словами. 2. Принцип однородности памяти. Программы и данные хранятся в одной и той же памяти. Поэтому ЭВМ не различает, что хранится в данной ячейке памяти - число, текст или команда. Над командами можно выполнять такие же действия, как и над данными. 3. Принцип адресуемости памяти. Структурно основная память состоит из пронумерованных ячеек; процессору в произвольный момент времени доступна любая ячейка. Отсюда следует возможность давать имена областям памяти, так, чтобы к хранящимся в них значениям можно было бы впоследствии обращаться или менять их в процессе выполнения программы с использованием присвоенных имен. 4. Принцип последовательного программного управления. Предполагает, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности. 5. Принцип жесткости архитектуры. Неизменяемость в процессе работы топологии, архитектуры, списка команд. Компьютеры, построенные на этих принципах, относят к типу фоннеймановских. 5 3. СТРУКТУРНАЯ СХЕМА МИКРО-ЭВМ Структурная схеме микро-ЭВМ (ССМ) дает возможность наглядно рассматривать работу микропроцессора по выполнению двух основных функций – обработка и манипулирование данными. Будем использовать ССМ обобщенной ЭВМ, которая не является какой-либо конкретной моделью и имеет почти фон Неймановскую архитектуру (рис. 3). Рис. 3. ССМ обобщенной ЭВМ Отличие от полностью фон Неймановской архитектуры заключается в том, что данная ЭВМ оперирует данными и командами, представленными словами, содержащими 5 десятичных разрядов. Формат представления данных имеет вид (рис. 4): 0 1 2 3 4 0(+) 1(-) Рис. 4. Формат представления данных Допустимыми значениями старшего разряда являются 0 и 1. Ноль означает, что число положительное, 1 – отрицательное. Таким образом диапазон чисел обрабатываемых ЭВМ от -9999 до +9999. Микропроцессор ЭВМ состоит из трех основных блоков: 1. Арифметико-логическое устройство (АЛУ). 2. Несколько регистров. 3. Центральное устройство управления (ЦУУ). 6 АЛУ выполняет одну из главных функций микропроцессора – обработку данных. Как правило АЛУ имеет один или несколько входных портов и единственный выходной порт. Назначение входного порта – ввод слова данных в АЛУ, а выходного – вывод такого слова. Один из входных портов принимает данные с внутренней шины данных микропроцессора через регистр операнда (РО), играющего роль регистра временного хранения данных (буферного регистра). Примечание 1. Внутренняя шина данных – шина, предназначенная для передачи информации между устройствами микропроцессора. Она может состоять из множества параллельно идущих через всех потребителей данных своеобразных проводников, выполненных по технологиям полупроводниковой микроэлектроники. Основной характеристикой шины данных является её ширина в битах. Ширина шины данных определяет количество информации, которое можно передать за один такт. Другой входной порт получает данные из специального регистра, называемого аккумулятором (АК). Единственный выходной порт АЛУ посылает слова данных в аккумулятор. То есть аккумулятор предназначен для хранения слова данных, посланного в него из выходного порта АЛУ или извлеченного из памяти. Когда АЛУ например складывает два слова данных одно из них находится в АК. После выполнения сложения результирующее слово данных посылается в АК для хранения. Примечание 2. Микропроцессор с аккумуляторной архитектурой или 1-операндная машина отличается тем, что даже если в нем несколько регистров, результат большинства операций сохраняется в специальном регистре, который называется «аккумулятор». Это упрощает как реализацию архитектуры, так и сокращает размеры машинного кода. Исторически практически все первые микропроцессоры были аккумуляторными машинами, и сейчас многие популярные однокристальные микроконтроллеры - это аккумуляторные машины. Современные центральные процессоры обычно являются 2-х и 3-х операндными машинами – в которых дополнительные операнды указывают между какими из регистров общего назначения осуществляются вычисления. АЛУ оперирует одним или двумя словами в зависимости от вида выполняемой операции. Соответственно оно использует и входные порты. Перечень функции АЛУ зависит от типа микропроцессора. Некоторые АЛУ 7 способны выполнять несколько сотен различных операций. Типичными операциями, выполняемыми АЛУ большинства микропроцессоров, являются арифметические и логические операции, инверсия, сдвиг влево/вправо, приращение положительное/отрицательное и т.д. Регистр процессора – блок ячеек памяти, образующий сверхбыструю оперативную память (СОЗУ) внутри процессора. Регистры используются для временного хранения одного слова данных. Некоторые регистры имеют специальное назначение, другие – многоцелевое. Регистры последнего типа называются регистрами общего назначения (РОН). В отличие от регистров специального назначения РОН могут использоваться программистом по его усмотрению. 3.1. А ККУМУЛЯТОР Аккумулятор – главный регистр микропроцессора при различных манипуляциях с данными. Большинство арифметических и логических операций осуществляются путём использования АЛУ и АК. Любая из таких операций над двумя словами данных (операндами) предполагает размещение одного из них в АК. Результат операции АЛУ тоже размещается в АК (при этом его исходное содержимое теряется). Операцией другого типа, использующей АК, является программируемая передача данных из одной части микропроцессора в другую. Речь идет о пересылке данных между регистрами ввода или вывода и памятью и др. Такие операции выполняются в два этапа: 1. Пересылка данных из источника в АК. 2. Пересылка данных из АК в пункт назначения. Микропроцессор может выполнять некоторые действия над данными непосредственно в АК. Например АК может быть очищен путём записей нулей во все его разряды. Данные поступают в АК с внутренней шины данных микропроцессора. В свою очередь АК может посылать данные на эту шину. 8 3.2. С ЧЁТЧИК АДРЕСОВ КОМАНД Вспомним 4-й принцип фон Неймана. Принцип последовательного программного управления. Предполагает, что программа состоит из набора команд, которые выполняются процессором автоматически друг за другом в определенной последовательности. То есть программа – это последовательность команд, хранимых в памяти ЭВМ и предназначенных для того, чтобы инструктировать машину как решать поставленную задачу. На счётчике адресов команд (СЧАК) лежит ответственность следить за тем какая команда выполняется, а какая подлежит выполнению следующей. Перед выполнением программы в СЧАК необходимо поместить адрес первой команды программы. С началом выполнения программы этот адрес посылается из СЧАК в регистр адреса памяти (РА), после чего содержимое обоих регистров становится одинаковым. Адрес местоположения первой команды программы посылается из микропроцессора по адресной шине ЭВМ к схемам управления памятью. Здесь также уместно вспомнить, что в общем случае, когда говорят об архитектуре фон Неймана, подразумевают физическое отделение процессорного модуля от устройств хранения программ и данных (оперативной памяти). Примечание 3. Шина адреса – компьютерная шина, используемая центральным процессором, для указания физического адреса слова оперативной памяти (или начала блока слов), к которому устройство может обратиться для проведения операции чтения или записи. На материнской плате шина может состоять из множества параллельно идущих проводников. Основной характеристикой шины адреса является её ширина в битах. Ширина шины адреса определяет объём адресуемой памяти. Например, если ширина адресной шины составляет 20 бит, и размер слова памяти равен одному байту (минимальный адресуемый объём данных), то объём памяти, который можно адресовать, составляет 220 = 1 048 576 байтов (1 МБайт) как в IBM PC/XT. В результате этого содержимое области памяти с указанным адресом считывается в буферный регистр слова (РС). Этим содержимым конечно должна быть команда. Далее эта команда пересылается в регистр команд (РК). После извлечения команды из памяти микропроцессор автоматически дает приращение содержимому СЧАК. С этого момента СЧАК указывает какой будет следующая команда. СЧАК содержит адрес следующей выполняе9 мой команды на протяжении всего времени выполнения текущей команды. СЧАК может быть загружен иным содержимым при необходимости выполнить подпрограмму. После того как в СЧАК записан начальный адрес подпрограммы, счётчик получает приращение по мере выполнения команд этой подпрограммы. Так продолжается до тех пор, пока не встретится команда возврата из подпрограммы. СЧАК должен иметь по крайней мере такое количество разрядов, которое позволяет обращаться ко всему адресному пространству оперативной памяти. 3.3. Р ЕГИСТР АДРЕСА ПАМЯТИ При любом обращении к оперативной памяти регистр адреса памяти (РА) указывает адрес области памяти, которая подлежит использованию микропроцессором. В течение подцикла выборки команды из памяти РА и СЧАК имеют одинаковое содержимое, то есть РА указывает местоположение команды, извлекаемой из памяти. После декодирования команды СЧАК получает приращение, а РА приращение не получает. В течение подцикла выполнения команды содержимое РА зависит от выполняемой команды. Если в соответствии с выполняемой командой микропроцессор должен произвести ещё одно обращение к памяти, то РА подлежит вторичному использованию в процессе обработки этой команды. Надо сказать, что для некоторых команд (так называемых безадресных команд) вторичного обращения к памяти не требуется. В большинстве микропроцессоров РА и СЧАК имеют одинаковое число разрядов. 3.4. Р ЕГИСТР КОМАНД Регистр команд (РК) предназначен исключительно для хранения текущей выполняемой команды, причём эта функция реализуется микропроцессором автоматически с началом цикла выборка-выполнение, называемого также машинным циклом. За исключением загрузки команды в период подцикла выборки программист не может по другому использовать РК. Этот 10 регистр соединен с внутренней шиной данных, но он только принимает данные, посылать данные на шину он не может. Выход этого регистра является частью дешифратора команд, который, в свою очередь, входит в состав управляющего автомата (УА). Рассмотрим подробнее последовательность реализации машинного цикла. 1. Выборка команды. Команда извлекается из памяти, а её копия помещается в регистр слова (РС), а тем самым и на внутреннюю шину данных. По этой шине команда пересылается в регистр команд (РК). 2. Подготовка адреса следующей команды. Содержимое счётчика адресов команд увеличивается и показывает на адрес следующей команды, что соответствует естественному порядку выполнения команд программы. 3. Формирование исполнительного адреса. Заключается в определении исполнительного адреса операнда (фактического адреса операнда) или исполнительного адреса следующей команды (фактического адреса первой команды подпрограммы). В безадресных командах исполнительный адрес не формируется. 4. Выполнение команды. Осуществляется действие, предписанное кодом операции. 3.5. Р ЕГИСТР СОСТОЯНИЯ Компонуется из одного или нескольких триггеров, называемых «флажками». Примечание 4. Триггер – класс электронных устройств, обладающих способностью длительно находиться в одном из двух устойчивых состояний и чередовать их под воздействием внешних сигналов. Каждое состояние триггера легко распознаётся по значению выходного напряжения. Отличительной особенностью триггера как функционального устройства является свойство запоминания двоичной информации. Под памятью триггера подразумевают способность оставаться в одном из двух состояний и после прекращения действия переключающего сигнала. Приняв одно из состояний за «1», а другое за «0», можно считать, что триггер хранит (помнит) один разряд числа, записанного в двоичном коде. Этот регистр предназначен для хранения результатов некоторых проверок, осуществляемых в процессе выполнения программы. Флажки регистра состояния принимают то или иное значение при выполнении операций АЛУ. Сохранение результатов этих проверок позволяет использовать программы, 11 содержащие переходы, то есть нарушения естественной последовательности выполнения команд программы. При наличии в программе команды перехода СЧАК загружается новым содержимым. В случае условного перехода такое действие имеет место, если результаты определенных проверок совпадают с ожидаемыми значениями. Эти результаты и находятся в регистре состояния. Традиционным способом выполнения команд перехода является загрузка СЧАК адресом перехода, если значением определенного разряда регистра состояния становится единица. Единичные значения разрядам регистра состояния присваиваются при выполнении операций АЛУ. В рассматриваемой модели ЭВМ регистр состояний имеет всего 3 флажка: НУЛЬ=1, если АК=0, ЗНАК=1, если АК<0, ПП=1, если переполнилась разрядная сетка аккумулятора. 3.6. Б УФЕРНЫЕ РЕГИСТРЫ АЛУ Примером таких регистров может служить регистр операнда (РО), который предназначен для хранения одного слова данных. Эти данные поступают в регистр с внутренней шины микропроцессора. Необходимость в этом регистре обусловлена отсутствием в АЛУ своего запоминающего устройства. В состав АЛУ включены только комбинационные схемы. В простейшем случае АЛУ – это двоичный сумматор. Поэтому при поступлении исходных данных на вход АЛУ на выходе немедленно появляются данные результата. Так как все процессы в ЭВМ подчинены тактам времени постоянной величины, то может потребоваться некоторая задержка данных на входе АЛУ до прихода сигнала «Пуск АЛУ» (например для загрузки второго операнда операции). Буферные регистры не могут быть использованы программистом. 3.7. Р ЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ Почти все микропроцессоры имеют шесть регистров: • состояния; 12 • буферные; • команд; • адреса памяти; • СЧАК; • аккумулятор. В дополнение к ним некоторые микропроцессоры имеют другие регистры, которые предоставлены в распоряжение программистов и называются регистрами общего назначения (РОН). В некоторых микропроцессорах РОН служат для временного хранения адресов и данных. В других функциональные особенности этих регистров не уступают возможностям аккумулятора. Последнее достигается в случае, если АЛУ может помещать в них данные. 3.8. С ХЕМЫ УПРАВЛЕНИЯ Центральное устройство управления (ЦУУ) организует и координирует автоматическое взаимодействие всех блоков ЭВМ в соответствии с выполняемой программой. Основной задачей ЦУУ является преобразование кодов команд программы в соответствующую последовательность управляющих сигналов. ЦУУ осуществляет выборку команд из оперативной памяти, выборку из оперативной памяти операндов, задаваемых адресами, инициирование выполнения операции предписанной командой, останов или переход к следующей команде. В состав ЦУУ входят: • СЧАК, содержащий адрес команды; • РК, содержащий код команды; • регистр базового адреса (РБА), содержащий базовый адрес; • управляющий автомат (УА), вырабатывающий сигналы управления. Ядром любого ЦУУ является управляющий автомат. Его работа осуществляется в соответствии с принципом микропрограммного управления. Каждая команда, выполняемая ЭВМ, может быть представлена в виде последовательности элементарных действий над словами информации. Эти действия называются микрооперациями. Для управления порядком следования 13 микроопераций используются логические условия. Последние, в зависимости от значения слов, преобразуемых микрооперациями, приобретают значения 0 или 1. Интервал времени, отводимый на выполнение микрооперации, называется рабочим тактом. Микрооперации выполняются под воздействием управляющих сигналов, вырабатываемых управляющим автоматом в определенной последовательности в соответствии с алгоритмом функционирования ЦУУ. Алгоритм работы ЦУУ, представленный в терминах микроопераций и логических условий, называется микропрограммой. Существуют два типа управляющих автоматов. 1. Управляющий автомат с жесткой или схемной логикой. Для любой операции, задаваемой кодом операции команды, определяется набор элементарных схем, которые в нужных тактах вырабатывают управляющие сигналы. 2. Управляющий автомат с хранимой в памяти логикой. Каждой выполняемой в АЛУ операции ставится в соответствие своя микропрограмма. Набор таких микропрограмм, реализующих все команды из набора команд микропроцессора, хранится в постоянном запоминающем устройстве (ПЗУ). Эти программы хранятся в явной форме, программируются в кодах микрокоманд и в таком виде заносятся в память при изготовлении макропроцессора. 3.9. В НУТРЕННЯЯ ШИНА ДАННЫХ Внутренняя шина данных соединяет между собой АЛУ и регистры и осуществляет передачу данных внутри микропроцессора. Разрядность шины совпадает с разрядностью микропроцессора. Почти все функциональные узлы микропроцессора имеют двустороннюю связь с внутренней шиной данных, то есть они могут и посылать данные на шину, и принимать с нее данные. (См. также Примечание 1.) 14 3.10. Г ДЕ ВСЕ ЭТИ УСТРОЙСТВА ? Все рассмотренные устройства выполняются с помощью технологий полупроводниковой микроэлектроники и располагаются в микропроцессоре (рис. 5). Рис. 5. «Истина где-то рядом…» 4. АДРЕСАЦИЯ ИНФОРМАЦИИ И КОДИРОВАНИЕ КОМАНД Команда микропроцессора – такое слово, которое будучи прочитано микропроцессором заставляет последний выполнить определенные действия. Другие, отличные от команд слова, подобных действий в микропроцессоре вызвать не могут. Микропроцессор загружает команду в регистр команд в течение подцикла выборки. В течение подцикла выполнения микропроцессор расшифровывает команду и создает сигналы управления процессом выполнения этой команды. Команда микропроцессора должна содержать информацию двух видов: 1) команда должна сообщить микропроцессору что делать; 2) команда должна указывать адрес обрабатываемых данных. В соответствии с этим код команды можно представить состоящим из нескольких полей, имеющих определенное назначение. В общем случае команда состоит из операционной и адресной частей (рис. 6). КОП Адресная часть Операционная часть Рис. 6. Структура команды 15 Эти части, в свою очередь, могут состоять из нескольких полей каждая. Операционная часть содержит код операции (КОП), который задает вид операции. Адресная часть команды содержит информацию об адресах операндов и результата операции. Структура команды определяется составом, назначением и расположением полей в команде. Форматом команды называют ее структуру с разметкой разрядов, определяющих границы отдельных полей команды. Формат команды должен быть по возможности короче. Характерные для процесса развития ЭВМ рост числа выполняемых машиной операций и увеличение емкости оперативной памяти, а особенно создание микро-ЭВМ с коротким словом потребовали разработки методов укорочения формата команд. При решении этой проблемы существенно изменилась структура команды и получили развитие различные способы адресации информации. Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна содержать поле кода операции и 4 адреса (рис. 7). КОП Адрес 1 Адрес 2 Адрес 3 Адрес 4 Рис. 7. Структура четырехадресной команды Первые два адреса указывают ячейки памяти, содержащие два операнда, участвующие в операции. Адрес 3 указывает ячейку, в которую помещается результат, а адрес 4 – ячейку, содержащую следующую команду программы. Например, если ЭВМ выполняет 200 различных операций и оперативная память имеет объем всего 16 Мбайт, то длина такой четырехадресной команды составит 80 бит. Такой формат команды не реализуем для микроЭВМ. Одним из способов укорочения формата команд является использование естественного порядка выполнения команд программы (4-й принцип фон Неймана). После выполнения команды, расположенной по адресу k и занимающей l ячеек, выполняется команда из (k+l)-й ячейки. В этом случае отпадает необходимость указывать в команде в явной форме адрес следующей команды программы (адрес 4). Другой способ укорочения формата команды – использование подразумеваемых адресов. В этом случае подразумевается, что один из операндов 16 и результат операции размещаются в специальном регистре-аккумуляторе. То есть пропадает необходимость в адресах 2 и 3. Таким образом, вместо 4-х адресной команды получаем одноадресную команду (рис. 8), что существенно уменьшает длину формата команды. КОП Адрес Рис. 8. Структура одноадресной команды 4.1. Т ИПЫ АДРЕСАЦИИ Следует различать понятия – адресный код команды (А) и исполнительный адрес (ИА). Адресный код – это информация об адресе операнда, содержащаяся в коде команды. Исполнительный адрес (ИА) – номер ячейки памяти к которой происходит фактическое обращение. В связи с развитием различных типов адресации в современных ЭВМ адресный код чаще всего не совпадает с исполнительным адресом. Для указания ЭВМ какой тип адресации используется в данной команде в структуре команд появилось поле типа адресации (ТА) (рис. 9). КОП ТА А Рис. 9. Структура команды, использующей типы адресации Зависимость результата выполнения операции от типа адресации будем рассматривать на примере операции сложения. Пусть её КОП=03, адресная часть А содержит число 30, тип адресации ТА изменяется от 0 до 3. Действие операции сложения описывается так: АК := АК + операнд Предположим, что первоначальное содержимое аккумулятора АК=25. 1. Непосредственная адресация. В этом случае ТА=1 и весь код команды принимает вид 03130. При непосредственной адресации в адресной части А кода команды содержится не адрес операнда, а непосредственно сам операнд. То есть: операнд = А = 30. Тогда результатом операции будет: АК := 25+30 = 55. 17 Видно, что при непосредственной адресации нет необходимости в обращении к оперативной памяти для считывания операнда и не нужно место в памяти для хранения этого операнда. Это способствует уменьшению времени выполнения команды и занимаемого ею объема памяти. Непосредственная адресация удобна для хранения различного рода констант. Но при этом длина операнда ограничивается длиной адресной части А команды. Таким образом, при использовании непосредственной адресации данные берутся не из памяти, а их предоставляет программист при записи команды. 2. Прямая адресация. В этом случае ТА=0 и весь код команды принимает вид 03030. Это именно тот тип адресации, когда исполнительный адрес совпадает с содержимым адресной части команды (ИА=А). То есть А указывает на номер ячейки памяти, где хранится операнд. В нашем случае А=30, и пусть в 30-й ячейке хранится операнд, равный 35. Тогда результат операции будет таким: АК := АК + ОП[A] Здесь запись ОП[A] означает содержимое ячейки оперативной памяти ОП с адресом равным А. Итак: АК := 25 +35 = 60. Так как для получения данных при прямой адресации необходимо дополнительное обращение к памяти, то время выполнения команды в этом случае в два раза больше, чем при непосредственной адресации. 3. Косвенная адресация. В этом случае ТА=2 и весь код команды принимает вид 03230. Адресный код А команды указывает адрес ячейки памяти, в которой находится адрес операнда (или адрес первой команды подпрограммы). То есть косвенная адресация может быть иначе определена как адресация адреса. Рассмотрим наш пример команды сложения. Распределение памяти при этом может быть таким, как на рис. 10. 18 № … 10 … 30 … 35 … 40 Содержимое ………………. 03 2 30 сл ка А ……………….. 35 адрес операнда ……………….. 15 операнд ……………….. 100 Рис. 10. Распределение памяти при косвенной адресации Таким образом, в результате декодирования команды, считанной из ячейки оперативной памяти с адресом 10, центральное устройство управления «понимает», что выполняется команда сложения (код операции 03) с косвенной адресацией (ТА=2), а адресная часть команды А=30. Поэтому, ЦУУ обращается к 30-й ячейке памяти и считывает из нее число 35, которое в случае этого типа адресации является адресом операнда (исполнительным адресом ИА). Наконец, ЦУУ считывает из 35-й ячейки операнд, равный 15. То есть можно записать следующие формулы: А=30; ОП[30]=ИА; ОП[ИА]=операнд. Или по-другому: операнд=ОП[ОП[А]]. Результат операции в этом случае: АК:= 25 + 15 = 40. Косвенная адресация удобна при обращении к часто используемым областям памяти. Наибольший эффект эта адресация дает при записи и чтении следующих друг за другом областей памяти, например, при организации массивов. Используя ячейку, содержащую ИА (адрес операнда) как ячейку индекса элементов массива, и циклически увеличивая (уменьшая) содержимое 19 этой ячейки, можно последовательно обращаться к ячейка с элементами массива. 4. Относительная адресация. В этом случае ТА=3 и весь код команды принимает вид 03330. В этом случае исполнительный адрес определяется суммой содержимого адресного поля команды А и некоторого числа, называемого базовым адресом. Для хранения базовых адресов в машине могут быть предусмотрены один или несколько регистров базовых адресов (РБА на рис. 3). Предположим, что содержимое РБА = 10, а в ячейке 40 записано число 100. Тогда ИА=РБА+А=40, а число 100 – операнд. В результате: АК := АК + ОП[ИА]; ИА=РБА+А; АК := АК + ОП[РБА+А]; АК := 25 + 100 = 125. Относительная адресация позволяет разрабатывать перемещаемые в памяти программы. Такие программы называют также позиционнонезависимыми программами. Эти программы могут иметь любой начальный адрес без изменений в самой программе. Для получения перемещаемой программы используют относительную адресацию в командах передачи управления. Настройка программы по месту расположения в памяти выполняется заданием базового адреса (функция операционной системы). Относительная адресация позволяет также разрабатывать программы с перемещаемой областью данных. Для этого надо во всех арифметических и посылочных (чтение, запись) командах использовать относительную, а не прямую адресации. Это обеспечивает возможность смещения области расположения данных путем задания базового адреса (также функция операционной системы). 20