Добавил:
ИВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экз ответы.docx
Скачиваний:
20
Добавлен:
15.01.2024
Размер:
15.08 Mб
Скачать

Переименовывание регистров

Здесь используются теневые регистры

Переименовывание регистров - автоматическое добавление регистров к регистровому файлу для устранения конфликтов WAR и WAW.

Сначала регистр t0 используется в командах lw и add. А далее в операции sub в t0 записывается новое значение, которое после этого используется в операции and. Поэтому при выполнении sub и and нам не важно, что было до этого в регистре t0. Следовательно, sub и and можно поместить после lw и заменить регистр t0 на теневой регистр r0. А add выполнить потом на регистре t0.

Регистр r0 аннигилируется, как только какая-то из следующих команд запишет данные в t0 (так как старое значение r0 больше не понадобится)

Диспетчеризация

Переупорядочивание команд

Подходы к переупорядочиванию команд:

  1. Централизованное окно команд (scoreboarding)

  2. Распределенное окно команд (алгоритм Томасуло)

Scoreboarding

Централизованное окно команд (Scoreboard) представляет собой буферное запоминающее устройство, в котором хранится некоторое количество последних извлеченных из памяти и декодированных команд, а также текущая информация о доступности ресурсов, привлекаемых для их исполнения. Функциями табло являются оперативное выявление команд, для исполнения которых уже доступны все необходимые операнды и ресурсы, и выдача таких команд на исполнение в соответствующие функциональные блоки. Табло можно рассматривать как систему предварительной диспетчеризации команд, однако оно осуществляет контроль выполнения команд и после их выдачи.

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

  • поля операции, где хранится дешифрированный код операции;

  • поля результата;

  • двух поля операндов (значение (если операнд уже вычислен при выполнении предыдущих команд) или его идентификатор (если операнд не вычислен));

  • поля битов достоверности (соответствуют каждому из операндов и показывают, доступно ли его значение (если в поле rs_i записано значение, то доступность rs_i равна 1, если записан идентификатор - доступность rs_i равна 0))

Алгоритм Томасуло

Станция резервации - по сути таблица из scoreboarding. Каждое АЛУ имеет свою станцию резервации.

Reorder buffer - буфер переименовывания (устройство, которое следит за переименовыванием регистров)

Instruction queue - очередь всех инструкций, из которой каждая инструкция попадает в станцию резервации на своё АЛУ.

FP registers - регистровая память, в которой хранятся значения регистров с типом данных float (аналогичные есть и для целочисленных значений, но они не показаны на картинке)

Reservation stations - станции резервации

FP (floating point) adders, FP multipliers - АЛУ, выполняющие операции сложения и умножения чисел с плавающей точкой

Common data bus - шина, по которой из всех АЛУ на буфер переименования идёт информация о том, какие команды были выполнены.

Восстановление последовательности

Буфер восстановления последовательности (БВП) — это универсальный инструмент для поддержания правильной последовательности записи результатов выполнения команд в случае нескольких параллельно работающих функциональных блоков.

Команды могут находиться в трёх состояниях:

  1. Выдана

  2. В стадии выполнения

  3. Завершена

Команды попадают в головную часть в том порядке, в котором они должны быть выполнены. Удалять можно только выполненные команды.

Многопоточность (гипертрединг)

Многопоточность - свойство платформы (например, операционной системы) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины. Такие потоки называют также потоками выполнения (thread of execution).

На обычном процессоре управление потоками осуществляется операционной системой. Поток исполняется до тех пор, пока не произойдёт аппаратное прерывание, системный вызов или пока не истечёт отведённое для него операционной системой время. После этого процессор переключается на код операционной системы, который сохраняет состояние потока (его контекст) или переключается на состояние другого потока, которому тоже выделяется время на исполнение. При такой многопоточности достаточно большое количество тактов процессора тратится на код операционной системы, переключающий контексты. Если поддержку потоков реализовать аппаратно, то процессор сам сможет переключаться между потоками. Для такой реализации достаточно добавить еще один счетчик PC (program counter) и еще один регистровый файл.

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

*ILP - параллелизм уровня команд

Пакованная арифметика

Пакованная арифметика - по сути получение векторного процессора на невекторном процессоре

Пакованная арифметика - способ выполнения нескольких однотипных операции за одну инструкцию за счет "склеивания" нескольких чисел. Пример: на 32 битном АЛУ при помощи пакованной арифметики можно произвести сложение 4-х пар 8-битных чисел за одну операцию, вместо того чтобы производить 4 сложения.

15.Основные режимы функционирования микропроцессорной системы: основная программа, подпрограмма, прерывания, ПДП. Обработка прерываний и исключений. Системы с циклическим опросом. Блок приоритетных прерываний

Основные режимы функционирования микропроцессорной системы: основная программа, подпрограмма, прерывания, ПДП.

Микропроцессорная система может находиться в одном из следующих режимов работы:

∙выполнение основной программы;

∙вызов подпрограмм;

∙обработка прерываний и исключений; ∙прямой доступ к памяти.

Выполнение основной программы. В этом режиме микропроцессор последовательно загружает из памяти команды и выполняет их. Для загрузки следующей команды микропроцессор хранит указатель (адрес) на нее в специальном регистре — программном счетчике (Program Counter — PC, или Instruction Pointer — IP).

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

Очередная команда, загруженная из памяти команд, поступает в регистр команд в устройстве управления. Затем она дешифруется, и вычисляются адреса операндов согласно. Далее устройство управления в соответствии с операндом команды генерирует последовательность управляющих сигналов.

Вызов подпрограмм. Для эффективного использования памяти дублирующиеся участки программы выделяют в отдельные подпрограммы. Для обращения к таким подпрограммам в систему команд процессора вводятся специальные команды вызова подпрограмм и возвращений из них (обычно обозначаемые CALL и RET соответственно).

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

Обработка прерываний и исключений. При работе микропроцессорной системы появляются события (например ввод данных от ВУ, или сработавший системный таймер), которые требуют немедленной реакции на них, для чего необходимо прервать текущую выполняемую программу и запустить подпрограмму обработки возникшего события. Такие события называются прерываниями (interrupt), или исключениями.

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

∙ регистр PC для обеспечения возможности возврата к выполнению основной программы;

∙ регистры состояния процессора (флаги АЛУ и т. п.);

∙регистры общего назначения; ∙специальные регистры.

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

Прямой доступ к памяти. Для выполнения рутинных операций пересылки массивов данных между ОЗУ и каким-либо внешним устройством применяется специальный режим прямого доступа к памяти (ПДП). Для этого в современные процессоры встраивают отдельный контроллер ПДП, связанный общей шиной с ОЗУ и периферийными устройствами.

Когда процессору необходимо переслать некоторый объем данных, он программирует контроллер ПДП на выполнение этой задачи. Процесс программирования состоит в передаче контроллеру трех значений: адреса—источника данных, адреса—приемника данных и количества передаваемых слов. Затем контроллер сам начинает передачу данных, а процессор в это время может выполнять основную программу.

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

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