Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Органиация ЭВМ и систем.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
532.51 Кб
Скачать

Ядро процессора. Понятие конвейера. Нелинейный конвейер.

Ядро процессора – это его основная часть, содержащая все функциональные блоки и осуществляющая выполнение всех логических и арифметических операций. Каждое ядро процессора состоит из нескольких функциональных блоков:

  • блока выборки инструкций;

  • блоков декодирования инструкций;

  • блоков выборки данных;

  • управляющего блока;

  • блоков выполнения инструкций;

  • блоков сохранения результатов;

  • блока работы с прерываниями;

  • ПЗУ, содержащего микрокод;

  • набора регистров;

  • счетчика команд.

Каждая инструкция, выполняемая процессором, последовательно проходит все блоки ядра, в каждом из которых совершается своя часть действий, необходимых для выполнения инструкции. Если приступать к обработке новой инструкции только после завершения работы над первой инструкцией, то большая часть блоков ядра процессора в каждый момент времени будет простаивать, а, следовательно, возможности процессора будут использоваться не полностью.

Ковейеризация предполагает другой подход. По мере освобождения исполнительных устройств загружать их следующими командами из программы.

Сверху показан линейный конвейер, снизу – нелинейный.

Поскольку процессор обычно может извлекать команды из памяти по одному каналу блок выборки управляющий этим каналом тоже один. Его задача – выбирать инструкции из памяти и передавать их в декодеры.

Декодирование – более медленная операция, чем выборка из кэша, поэтому декодеров может быть много (обычно не больше 4-х), стадия определения операндов может быть встроена в стадию декодирования, а может и выполняться отдельным блоком.

Определение операндов – операция, выполняемая современными процессорами в составе операции декодирования, ее суть станет ясна позже, когда будем говорить о переупорядочивании потока команд.

Наконец, выполнение – обычно самая медленная операция, она может выполняться 5-ю и более устройствами параллельно (за один такт может быть выполнено 5 и более команд).

После того как команда выполнена, производится сохранение ее результатов в регистрах или памяти. Сохранение производится отдельным блоком, поскольку исполнительные устройства не имеют прямой связи с памятью, и поэтому не могут напрямую записать результаты в память.

Ядро процессора. Понятие конвейера. Конфликты в конвейере.

Ядро процессора – это его основная часть, содержащая все функциональные блоки и осуществляющая выполнение всех логических и арифметических операций. Каждое ядро процессора состоит из нескольких функциональных блоков:

  • блока выборки инструкций;

  • блоков декодирования инструкций;

  • блоков выборки данных;

  • управляющего блока;

  • блоков выполнения инструкций;

  • блоков сохранения результатов;

  • блока работы с прерываниями;

  • ПЗУ, содержащего микрокод;

  • набора регистров;

  • счетчика команд.

Каждая инструкция, выполняемая процессором, последовательно проходит все блоки ядра, в каждом из которых совершается своя часть действий, необходимых для выполнения инструкции. Если приступать к обработке новой инструкции только после завершения работы над первой инструкцией, то большая часть блоков ядра процессора в каждый момент времени будет простаивать, а, следовательно, возможности процессора будут использоваться не полностью.

Ковейеризация предполагает другой подход. По мере освобождения исполнительных устройств загружать их следующими командами из программы.

Команды в реальной программе зависят друг от друга, и их исполнение в конвейере приводит к конфликтам.

Конфликты бывают 3-х основных типов:

1) Конфликт по данным.

2) Конфликт по управлению.

3) Структурный конфликт.

Конфликт по данным происходит, когда команда N использует результат команды N-1. При исполнении в конвейере первая команда выполняется и переходит на ступень сохранения результатов, в этот же момент вторая команда (использующая результаты первой) поступает на ступень выполнения, но так как результаты первой команды еще не сохранены, то возникает конфликт – второй команде приходится ждать – возникает «пузырь» со всеми его негативными последствиями.

Конфликт по управлению возникает в случае, если команды изменяют значение счетчика команд (EIP). При этом нарушается естественный линейный ход программы и возникает конфликт.

Структурный конфликт возникает, когда две и более команды хотят воспользоваться одним и тем же устройством. Конфликты этого типа устранить нельзя и обычно они приводят к остановке конвейера до разрешения конфликта.