Организация ЭВМРефераты >> Программирование и компьютеры >> Организация ЭВМ
Указатель стека УС предназначен для адресации стековой памяти, которая чаще всего реализуется в некоторой области оперативной памяти. Эта область определяется либо операционной системой, либо программистом путем загрузки начального адреса области стека в УС.
4.5.2 Рабочий цикл процессора
Функционирование процессора состоит из повторяющихся рабочих циклов, каждый из которых соответствует выполнению одной команды. Завершив рабочий цикл процессор переходит к выполнению следующего рабочего цикла.
Предположим, что процессор может выполнять четыре типа команд:
- основные (арифметические, логические, пересылочные операции);
- передачи управления;
- ввода-вывода;
- системные (установка маски прерываний, состояния процессора и др.).
Рассмотрим рабочий цикл, выполняемый покомандно (существуют и рабочие циклы, выполняемые по машинным циклам).
Рабочий цикл начинается (см. рисунок 4.5.2) с определения состояния процессора - счет или ожидание . Из состояния ожидания процессор может выйти только по сигналу ЗПр (или “Запрос захвата шины” для некоторых процессоров). Процессор в этом состоянии никаких действий не выполняет.
В состоянии “Счет” (счет- последовательная выборка и выполнение команд), если поступил запрос прерывания, процессор сбрасывает триггер прерывания ТгПр и переходит к выполнения подпрограммы обработки прерывания путем передачи адреса подпрограммы в СчК. Если сигнал ЗПр отсутствует, последовательно выполняются следующие этапы рабочего цикла выполнения основной команды: формирование исполнительных адресов операндов, выборка операндов, выполнение операций и запоминание результата. После этого процессор переходит к выборке следующей команды и цикл повторяется.
При выполнении большинства команд формируются признаки операций, которые используются в командах условного перехода.
При выполнении команд передачи управления проверяется условие перехода по вышеуказанным признакам для команд условных переходов. Если условие не выполняется, то выбирается следующая по порядку команда по подвинутому адресу, хранящемуся в СчК. Если условие выполняется, то в СчК заносится адрес перехода.
Рисунок 4.5.2 – Рабочий цикл процессора
Команда вызова подпрограмм и переход к подпрограмме выполняется так же, как и команда перехода, но при этом дополнительно запоминается состояние процессора.
Системные команды производят переключение состояния процессора (программы).
Команды ввода-вывода инициируют обращение процессора к УВВ (ПУ).
4.5.3 Понятие о слове состояния процессора
В ходе функционирования процессора постоянно меняется состояние его внутренних регистров. Если поступит запрос на прерывание выполнения основной программы или команда перехода к подпрограмме, которые приводят к изменению порядка выполнения программы, то для корректного возврата из подпрограммы в основную программу необходимо запомнить состояние процессора.
Содержимое регистров, обеспечивающих восстановление состояния вычислительного процесса, составляет слово состояния программы или процессора ССП (PSW- Program status word).
Чаще всего в информацию о состоянии процессора включают содержимое счетчика команд, содержимое регистра признаков и аккумулятора.
Рисунок 4.5.3 – Структура ССП
Слово состояния обычно сохраняют в специально отведенной области памяти ЭВМ или стековой памяти. Сохранение производится автоматически (т.е. аппаратно) в начале обслуживания запроса на прерывание программы. Другие регистры процессора могут быть сохранены и восстановлены программным путем.
4.5.4 Процедура выполнения команд перехода (условного и безусловного)
При естественной адресации адрес следующей команды получается из адреса выполняемой команды увеличением его на 1, 2, 3 и т.д. (в зависимости от количества байт в команде), т. к. команды располагаются в смежных ячейках памяти. Для этого содержимое СчК автоматически модифицируется после выполнения текущей команды.
Для управления ходом выполнения программ и организации ветвлений в систему команд процессоров с естественной адресацией были введены команды условных и безусловных переходов.
Рисунок 4.5.4 – Формат команд условного и безусловного переходов
В разных машинах реализация этих команд различная, однако общий подход следующий: содержимое поля адреса перехода команды загружается в СчК, после чего процессор продолжает выполнение программы с нового адреса.
Команды безусловного перехода предписывают совершать переход по программе независимо от каких-либо условий. Существуют команды безусловного перехода по косвенному адресу. В этом случае в коде команды указывают адрес ячейки, в которой хранится адрес перехода.
При условном переходе адрес следующей команды зависит от некоторого условия, полученного в результате выполнения предыдущей. Если условие выполняется, то процессор переходит к выполнению программы по адресу, указанному в адресной части команды, если нет, то к команде, следующей непосредственно за командой условного перехода.
4.5.5 Процедура выполнения команд вызова подпрограмм
Другим типом команд передачи управления являются команды вызова подпрограмм. Их особенность заключается в том, что по окончанию выполнения подпрограммы они должны обеспечить возврат к выполнению программы, из которой подпрограмма была вызвана. Для этого адрес возврата должен быть запомнен, для чего в СчК формируется продвинутый адрес, который затем сохраняется в памяти (или в стеке). Для перехода к выполнению подпрограммы в СчК заносится адресная часть команды ее вызова. По окончанию выполнения подпрограммы адрес следующей команды основной программы, ранее сохраненный в стеке, вызывается из него, заносится в СчК и выполнение программы продолжается. Для организации возврата в основную программу подпрограмма должна оканчиваться командой “Возврат” (“RETURN”). Кроме нее существует также и команда “Условного возврата”.
Формат команды “Перехода к подпрограмме” приведен на рисунке 4.5.5.1.
Рисунок 4.5.5.1 – Формат команды “Перехода к подпрограмме”
Процесс выполнения команд “Вызов подпрограмм” проиллюстрирован на рисунке 4.5.5.2. Короткий отрезок прямой на этом рисунке соответствует одной команде, длинный- переходу к выполнению подпрограммы или возврату из нее.