- •Архитектура
- •Принстонская архитектура (фон Неймана)
- •Гарвардская
- •Структура процессорного ядра классического RISC-процессора (ARM, Cortex A9)
- •Регистр текущего статуса программы (CPSR).
- •Структура регистра текущего статуса программы
- •Флаги состояний
- •Установка флагов состояний.
- •Варианты формирования условий.
- •Основные этапы выполнения команд.
- •Принцип конвейера
- •Последовательность выполнения команды
- •Участки возможных остановок конвейера.
- •Рассматривая структуру конвейера, мы заметили, что нестыковки во временных соотношениях для некоторых случаев
- •Таким образом, запускать команду на 3 стадию нельзя в трех случаях:
- •Сдвоенный конвейер.
- •Команды должны быть независимы друг от друга. У них должны быть разные источники
- •Суперскалярная архитектура.
- •К сожалению, суперскалярная архитектура сама по себе не решает проблему простоя конвейера. Команды,
- •Для регистров-источников счетчики подсчитывают количество использований каждого регистра в выполняющихся командах. Как только
- •Выполнение без организации второй очереди.
- •Выполнение с организацией второй очереди.
- •Внутрипроцессорная
- •Внутрипроцессорная
- •Внутрипроцессорная
- •В суперскалярных процессорах используется метод синхронной многопоточности. Это усовершенствованная крупномодульная многопоточность, позволяющая быстро
- •Синхронная многопоточность.
Для регистров-источников счетчики подсчитывают количество использований каждого регистра в выполняющихся командах. Как только команда, содержавшая поименованный регистр выполнится, состояние счетчика уменьшается на «1».
Для регистров-приемников в счетчике содержится по одному биту на регистр. Если этот бит установлен в «1», это означает, что команда еще не выполнена, и обращение других команд к данному регистру невозможно. RAW - взаимосвязь предполагает только подмену команд (запуск на исполнение следующей команды, не зависящей от предыдущих). В остальных случаях взаимосвязей производится подмена регистров дублерами.
Выполнение без организации второй очереди.
•LSR R4, R0, #3 // определим байт, содержащий бит № 101
• ** BIC R4, R4, #3 // определим адрес регистра, содержащий этот байт
•LDR R2, =0xFFFED100 // начальный адрес регистра разрешения
• ** |
ADD R4, R2, R4 // полный адрес регистра разрешения для ID 101 |
• ** |
AND R2, R0, #0x1F // выделим количество бит смещения |
•MOV R5, #1 // маска разрешения
•** LSL R2, R5, R2 // установка маски на выбранную позицию в регистре
•LDR R3, [R4] // считывание состояния регистра по полному адресу
• ** |
ORR R3, R3, R2 // добавление маски |
• ** |
STR R3, [R4] // копирование маски в регистр |
Выполнение с организацией второй очереди.
Внутрипроцессорная
многопоточность.
•Внутрипроцессорная многопоточность - возможность вызывать команды из разных потоков (задач). Реализация многопоточности может быть различна. Для простого конвейера, когда на обработку вызывается одна команда, возможны реализации мелкомодульной или крупномодульной многопоточности. Предположим, что в обработку поставлены три задачи (A, B, C). Если каждый поток обрабатывается индивидуально, неизбежны большие простои. Рассмотрим процесс выполнения первых 8-ми команд с применением простых случаев многопоточности. Сравним их с случаем применения минимальной суперскалярной архитектуры (2 команды за цикл).
Внутрипроцессорная
многопоточность.
Мелкомодульная для простого |
Мелкомодульная для минимальной |
конвейера |
суперскалярной архитектуры |
Внутрипроцессорная
многопоточность.
Крупномодульная для простого |
Крупномодульная для минимальной |
конвейера |
суперскалярной архитектуры. |
В суперскалярных процессорах используется метод синхронной многопоточности. Это усовершенствованная крупномодульная многопоточность, позволяющая быстро переключать потоки и наиболее полно загружать функциональные блоки. В отличие от крупномодульной, в синхронной многопоточности флажок возникновения простоя устанавливается не на этапе исполнения, когда простоя уже не избежать, а на этапе дешифрации, что приводит к немедленному переходу на следующий поток.
