
- •Базовая структура компьютера
- •Процессор, оперативная память, устройства ввода-вывода, внешняя память, шины.
- •Представление информации. Целые, вещественные, символьные данные.
- •Структуры машинных команд. Трех-, двух-, одноадресные системы команд процессоров.
- •Стек. Его использование и аппаратная поддержка.
- •Risc-процессоры.
- •Cisc-процессоры. Микрокомандный уровень архитектуры.
- •Пример базовой архитектуры - pdp-11
- •Структура процессора. Регистры и их назначение.
- •2.2. Архитектура с общей шиной. Адресное пространство.
- •2.3. Форматы команд.
- •2.3.1. Двух-, одно- и безадресные команды. Примеры
- •2.3.2. Организация ветвлений и циклов. Регистр состояния процессора.
- •2.4. Методы адресации.
- •2.4.1 Прямые методы адресации.
- •2.4.2. Косвенные методы адресации.
- •2.4.3. Использование счетчика команд и указателя стека в методах адресации.
- •2.4.4. Позиционно-независимые программы и методы адресации.
- •2.5. Организация ввода-вывода.
- •2.5.1. Контроллеры устройств. Регистры устройств и их адресация.
- •2.5.2. Ввод-вывод по опросу флага готовности.
- •2.5.3. Прерывания устройств и их обработка.
- •2.5.4. Система приоритетов в обработке прерываний.
- •2.5.5. Ввод-вывод с использованием механизма прерываний.
- •2.5.6. Устройства с блочной передачей данных.
- •2.5.7. Прямой доступ к памяти и его использование для ввода-вывода.
- •2.6. Синхронные прерывания (исключительные ситуации) и их обработка.
- •3. Шинная архитектура
- •3.1 Структура шин. Подшины адреса, данных, управления. Ширина шины.
- •3.2. Синхронизация шины. Синхронные и асинхронные шины.
- •3.3. Временные диаграммы операций обмена по шинам.
- •3.4 Арбитраж шины.
2.5.2. Ввод-вывод по опросу флага готовности.
Программный обмен данными по флагу готовности устройства – это передача или прием данных по инициативе и под управлением программы, выполняемой центральным процессором ЭВМ.
2.5.3. Прерывания устройств и их обработка.
Прерывания - это изменения в потоке управления, производимые не действиями самой программы, а внешними факторами, и обычно связаны с процессом ввода-вывода. Например, программа может запустить передачу информации с диска, по окончании которой произойдет прерывание. Прерывание останавливает работу программы и передает управление обработчику прерывания, который выполняет определенное действие.
Смысл прерывания состоит в предоставлении возможности процессору автоматически реагировать на внешние и внутренние воздействия, обусловленные различными причинами. Непредсказуемые во времени события (такие, как окончание операции I/O) могут генерировать прерывания и принуждать машину выполнять программу обработки прерываний (ISR).
Практически прерывание — это скачок на подпрограмму, «насильно» вызванный оборудованием, в противоположность переходу, который точно специфицируется как переход к подпрограмме на основе выполнения команды перехода. Прерывания могут возникнуть в любой точке программы (перед выполнением 1-фазы очередной команды) и должны информировать систему о соответствующей причине. Например, когда в некоторых машинах случается прерывание, то в специальном регистре прерываний устанавливается специальный бит, указывающий на вызвавшее его условие. В ответ на это CPU выбирает адрес следующей команды
из конкретной (фиксированной) ячейки прерываний (возможно, имеющей адрес памяти нуль) и начинает выполнение программы анализа прерывания.
Полное машинное состояние программы, непосредственно выполнявшейся перед прерыванием, обычно запоминается в слове состояния процессора (PSW). Техника манипуляции прерыванием состоит в том, что текущее PSW заменяется на PSW программы, обрабатывающей прерывание. А текущее PSW сохраняется в некотором слове памяти.
При использовании приведенной схемы возникает проблема, заключающаяся в том, что все прерывания применяют одни и те же ячейки для запоминания и восстановления. Поэтому, случись второе прерывание во время выполнения программы обработки первого, будет потеряно старое PSW, так как на его место будет записано PSW очередной прерванной программы. Чтобы этого не происходило, надо запретить новые прерывания, пока не будут обработаны предыдущие. Это можно сделать просто, отведя для этой цели один бит разрешения/запрещения прерываний в PSW, устанавливая его в 1 в старом PSW и сбрасывая в новом. Тогда, как только новое PSW становится текущим, прерывания запрещаются, а при возврате из прерывания (RTI) текущее PSW заменяется старым (сохраняемым), и они снова разрешаются.
В период времени, когда прерывания запрещены, вполне возможно, что в системе возникнут новые условия, например по I/O, которые вызовут прерывание. Им не дается разрешения на немедленный вызов программы обработки, они запоминаются и хранятся в регистре состояния прерываний. Следовательно, когда прерывания запрещены, они могут происходить, и есть гарантия, что впоследствии они будут обработаны.
После завершения этого действия программа обработки прерывания возвращает управление прерванной программе. При возврате прежнее состояние внутренних регистров (то есть состояние, которое было до прерывания) должно быть восстановлено.