Конвейерные конфликты по данным: одним из технических решений по устранению конфликтов по данным является «быстрая пересылка»
(fast forwarding) результирующего значения с выхода ALU на один из его входов.
Минимизация конвейерных конфликтов: рассмотрим пример программной реорганизации кода с целью минимизации конвейерных конфликтов по данным:
Минимизация конвейерных конфликтов: диаграмма конвейера для оптимизированного кода.
Число инструкций увеличилось, число конвейерных стадий уменьшилось.
14. Архитектура МК PIC16F84.
Конвейеризация в PIC16F84: этот МК построен по Гарвардской архитектуре
(две независимые памяти для данных и кода) и имеет двухступенчатый конвейер. Это RISC-машина с 35 инструкциями, большинство из которых выполняются за один машинный цикл.
Основные особенности архитектуры микроконтроллеров PICmicro:
• Гарвардская архитектура;
• Длинное слово команды;
• Команда состоит из единственного слова;
• Конвейерная обработка команд;
• Команды выполняются за один машинный цикл;
• Небольшое число команд;
• Файловая структура данных;
• Все команды ортогональны (симметричны).
Машинный цикл PIC16F84 выполняется за 4 физических такта системного генератора.
Q1 cycle: инструкция извлекается из памяти и записывается в регистр IR.
Q2 cycle: декодирование инструкции, чтение операндов.
Q3 cycle: исполнение инструкции (АЛУ).
Q4 cycle: запись результата.
Конвейер PIC16F84 использует только две стадии:
· FETCH (Q1+Q2)
· EXECUTE (Q3+Q4).
Конвейерная обработка инструкций в PIC16F84:
C0: извлечение MOVLW из памяти инструкций.
C1: исполнение MOVLW и извлечение следующей инструкции MOVWF.
C2: исполнение MOVWF и извлечение инструкции CALL.
C3: вызов процедуры F1, чтение инструкции MOVLW.
C4: инструкция CALL изменила значение счетчика PC, вместо исполнения MOVLW будет прочитана первая инструкция процедуры F1.
C5: исполнение первой инструкции в F1 и чтение следующей инструкции и т.д.