3.5. Программный поток
Сразу после сброса выполнение программы начинается с нулевого адреса. Управление программным потоком выполняется инструкциями условного и безусловного переходов и вызова подпрограммы, которые способны адресоваться напрямую в пределах всего адресного пространства. Большинство инструкций являются 16-битными. По каждому адресу в памяти программ хранится 16- или 32-битная инструкция. Счетчик программы (PC) содержит адрес ячейки памяти, по которому выполняется выборка инструкции. При вызове процедур обработки прерывания и подпрограмм состояние PC запоминается в стеке, как адрес возврата.
При возникновении разрешенного прерывания в счетчик программы загружается вектор этого прерывания, что позволяет перейти к процедуре его обработки. Флаг прерывания сбрасывается автоматически на аппаратном уровне.
Встроенный в МК контроллер прерываний имеет отдельные регистры управления. В частности в его регистре статуса имеет дополнительный бит общего разрешения прерываний. У всех прерываний имеется отдельный вектор. Они следуют за вектором сброса, расположенного по адресу 0 в памяти программ. У каждого прерывания реализована возможность программирования уровня приоритета. Если же для прерываний установлен одинаковый уровень, то приоритет будет определяться адресом вектора прерывания: чем меньше адрес, тем выше приоритет.
3.6. Временная диаграмма выполнения инструкций
ЦПУ AVR синхронизируется сигналом CLKCPU. Внутреннее деление частоты этого сигнала не предусмотрено. На рисунке 3.2 демонстрируется параллелизм выборки одной инструкции и исполнения другой. Такой механизм стал возможным, благодаря использованию Гарвардской архитектуры и концепции, обеспечивающей быстродействие доступа к данным в регистровом файле. В конечном счете, такая концепция простой конвейеризации позволяет добиться производительности близкой к 1 MIPS/МГц и, как следствие, получить уникальные соотношения функциональности со стоимостью решения, частотой синхронизации и энергопотреблением.
Рисунок 3.2. Параллельность выборки и выполнения инструкций
На рисунке 3.3 представлена временная диаграмма доступа АЛУ к регистровому файлу. За один цикл синхронизации, который требуется для выполнения операции в АЛУ, выполняется операция над двумя регистрами-операндами, а результат возвращается в регистр-назначение.
Рисунок 3.3. Операция в АЛУ выполняется за один цикл синхронизации
3.7. Регистр статуса
В регистре статуса (SREG) хранится информация относительно результата большинства ранее выполненных арифметических или логических инструкций. Данная информация необходима для выполнения операций условия, которые управляют программным потоком. Обратите внимание, что регистр статуса обновляется после выполнения любой операции АЛУ в объеме, указанном в описании набора инструкций. Благодаря этому, во многих случаях исчезает необходимость использования специальных инструкций сравнения, что делает код программы более компактным, а его выполнение более быстрым.
Содержимое регистра статуса автоматически не запоминается при вызове процедур обработки прерывания и не восстанавливается при выходе из них. Данные действия необходимо выполнить программно.
Регистр статуса доступен в пространстве памяти ввода-вывода.
|