суббота, 21 сентября 2013 г.

0x03. STM8 - конвейер команд

мой основной проект - http://kystari.ru/
 В семействе микроконтроллеров STM8 используется 3х-ступенчатый конвейер команд, для максимального ускорения передачи потока команд процессору. Конвейер позволяет выполнять одновременно три действия: выборку, декодирование и исполнение. Программный счетчик (PC) всегда указывает на инструкцию, находящуюся в стадии декодирования. 
     Рассмотрим подробнее каждую ступень конвейера.
 
 1. Стадия выборки. Инструкция загружается в 64-битный буфер выборки и 32-битный буфер пре-выборки, позволяющие работать с 3 словами F1,F2 и F3. Структура буферов позволяет загружать любую инструкцию (до 5 байт)  для декодирования сразу же после загрузки F1 ( F2). Инструкция доступна к загрузке из программной флэш-памяти по 32-битной шине и доступна с любого из адресов: 0xXXX0, 0xXXX4, 0xXXX8, 0xXXXC. Несмотря на то, что стадии декодирования и исполнения инструкций выполняются каждый рабочий цикл, выборка очередной инструкции из памяти происходит только при необходимости, доступ к памяти запрещается при заполнении буфера выборки.  Это сделано для снижения энергопотребления ядра процессора. Чтение программы из RAM происходит аналогично чтению из флеша. Однако из-за 8-битной шины передачи данных, выполняется четыре последовательных операции чтения для загрузки одного слова Fx, что означает гораздо более медленное выполнение программы из RAM, чем из ROM.
2. Стадия декодирования. Код инструкции состоит из двух частей: собственный код операции ( 1 ли 2 байта) и код данных/адреса (0-3 байта). Собственный код операции декодируется на данной стадии. При наличии кода адреса, он используется для вычисления адреса, в то время как непосредственно определенный операнд (константа) передается на стадию выполнения команды
   Для длинных инструкций (5 байт) выборка может занимать 2 операции чтения памяти подряд, и-за чего декодирование откладывается до конца выборки.
   При косвенной адресации процессор ожидает чтения указателя из оперативной памяти. Количество циклов ожидания зависит от размера указателя.
3. Стадия выполнения. Инструкция выполняется, результат помещается в аккумулятор, индексный регистр или оперативную память.
    В случае одновременного доступа к одной и той же области памяти на стадии декодирования одной инструкции и выполнения предыдущей инструкции, декодирование приостанавливается до завершения обращения к памяти стадией выполнения. Поэтому в зависимости от последовательности команд, количество циклов для исполнения может быть разным для одной и той же инструкции.


Комментариев нет:

Отправить комментарий