- •Архитектура неймановского компьютера
- •Магистральная архитектура мини- и микро- компьютеров
- •Архитектура универсальных компьютеров – мейнфреймов(селекторные, мультиплексные каналы)
- •Синхронизация пк. Деление и умножение опорной частоты
- •Кэш процессора. Кэш прямого отображения
- •Кэш процессора. Наборно-ассоциативный кэш
- •Кэш процессора. Полностью ассоциативный кэш
- •Политика записи кэШа. Уровни Кэша.
- •Ядро процессора. Понятие конвейера. Нелинейный конвейер.
- •Ядро процессора. Понятие конвейера. Конфликты в конвейере.
- •Ядро процессора. Понятие конвейера. Понятие суперскалярного процессора.
- •Сегментно-страничная организация памяти
- •Подсистема ввода-вывода. Параллельный обмен
- •Подсистема ввода-вывода. Параллельный обмен
- •Прерывания. Виды прерываний. Перехват прерываний
Ядро процессора. Понятие конвейера. Нелинейный конвейер.
Ядро процессора – это его основная часть, содержащая все функциональные блоки и осуществляющая выполнение всех логических и арифметических операций. Каждое ядро процессора состоит из нескольких функциональных блоков:
блока выборки инструкций;
блоков декодирования инструкций;
блоков выборки данных;
управляющего блока;
блоков выполнения инструкций;
блоков сохранения результатов;
блока работы с прерываниями;
ПЗУ, содержащего микрокод;
набора регистров;
счетчика команд.
Каждая инструкция, выполняемая процессором, последовательно проходит все блоки ядра, в каждом из которых совершается своя часть действий, необходимых для выполнения инструкции. Если приступать к обработке новой инструкции только после завершения работы над первой инструкцией, то большая часть блоков ядра процессора в каждый момент времени будет простаивать, а, следовательно, возможности процессора будут использоваться не полностью.
Ковейеризация предполагает другой подход. По мере освобождения исполнительных устройств загружать их следующими командами из программы.
Сверху показан линейный конвейер, снизу – нелинейный.
Поскольку процессор обычно может извлекать команды из памяти по одному каналу блок выборки управляющий этим каналом тоже один. Его задача – выбирать инструкции из памяти и передавать их в декодеры.
Декодирование – более медленная операция, чем выборка из кэша, поэтому декодеров может быть много (обычно не больше 4-х), стадия определения операндов может быть встроена в стадию декодирования, а может и выполняться отдельным блоком.
Определение операндов – операция, выполняемая современными процессорами в составе операции декодирования, ее суть станет ясна позже, когда будем говорить о переупорядочивании потока команд.
Наконец, выполнение – обычно самая медленная операция, она может выполняться 5-ю и более устройствами параллельно (за один такт может быть выполнено 5 и более команд).
После того как команда выполнена, производится сохранение ее результатов в регистрах или памяти. Сохранение производится отдельным блоком, поскольку исполнительные устройства не имеют прямой связи с памятью, и поэтому не могут напрямую записать результаты в память.
Ядро процессора. Понятие конвейера. Конфликты в конвейере.
Ядро процессора – это его основная часть, содержащая все функциональные блоки и осуществляющая выполнение всех логических и арифметических операций. Каждое ядро процессора состоит из нескольких функциональных блоков:
блока выборки инструкций;
блоков декодирования инструкций;
блоков выборки данных;
управляющего блока;
блоков выполнения инструкций;
блоков сохранения результатов;
блока работы с прерываниями;
ПЗУ, содержащего микрокод;
набора регистров;
счетчика команд.
Каждая инструкция, выполняемая процессором, последовательно проходит все блоки ядра, в каждом из которых совершается своя часть действий, необходимых для выполнения инструкции. Если приступать к обработке новой инструкции только после завершения работы над первой инструкцией, то большая часть блоков ядра процессора в каждый момент времени будет простаивать, а, следовательно, возможности процессора будут использоваться не полностью.
Ковейеризация предполагает другой подход. По мере освобождения исполнительных устройств загружать их следующими командами из программы.
Команды в реальной программе зависят друг от друга, и их исполнение в конвейере приводит к конфликтам.
Конфликты бывают 3-х основных типов:
1) Конфликт по данным.
2) Конфликт по управлению.
3) Структурный конфликт.
Конфликт по данным происходит, когда команда N использует результат команды N-1. При исполнении в конвейере первая команда выполняется и переходит на ступень сохранения результатов, в этот же момент вторая команда (использующая результаты первой) поступает на ступень выполнения, но так как результаты первой команды еще не сохранены, то возникает конфликт – второй команде приходится ждать – возникает «пузырь» со всеми его негативными последствиями.
Конфликт по управлению возникает в случае, если команды изменяют значение счетчика команд (EIP). При этом нарушается естественный линейный ход программы и возникает конфликт.
Структурный конфликт возникает, когда две и более команды хотят воспользоваться одним и тем же устройством. Конфликты этого типа устранить нельзя и обычно они приводят к остановке конвейера до разрешения конфликта.
