Подготовка к работе
1. Знакомство со всеми разделами руководства.
2. Получение у преподавателя вариантов на исследование системы с различными параметрами потока команд и типами конвейеров.
3. Исследование заданной мультиконвейерной структуры.
4. Оформление отчета.
Последовательность выполнения лабораторной работы
Получить у преподавателя номер варианта исходных данных.
В лабораторной работе необходимо исследовать следующие режимы функционирования мультиконвейерной архитектуры.
По результатам экспериментов определить:
а) зависимость средней длительности Т1 СР выполнения команд в конвейерах (такты/команды):
Т1 СР = f1(K, NKK, NDK),
где К – число команд в потоке,
NKK - число коротких конвейеров,
NDK - число длинных конвейеров;
б) зависимость средней длительности Т2 СР выполнения команд в конвейерах
Т2 СР = f2(K, NKK, NDK, РКД),
где РКД – число коротких команд, стоящих между длинными командами в потоке;
в) число М выполненных тактов на поток команд.
Задание 1. Определить зависимости М и T2 ср , где аргумент К - число команд в потоке выбирается по варианту из таблицы 7.1.
|
|
Параметры: число коротких конвейеров NKK =1; длинных конвейеров нет - NDK =0.
Задание 2. Определить зависимости М и T2 ср , где аргумент К - число команд в потоке выбирается по варианту из таблицы 7.1.
Длинных конвейеров нет.
Параметр: число коротких конвейеров из таблицы 7.1.
Задание 3. Определить зависимости М и T2 ср , где аргумент К - число команд в потоке выбирается по варианту из таблицы 7.1.
Длинный конвейер один - NDK =1. Промежуток РКД =1 - длинная команда стоит после каждой короткой команды.
Параметр: число коротких конвейеров берется из таблицы 7.1.
Задание 4. Определить зависимости М и T2 ср , где аргумент РКД – промежуток между длинными и короткими командами в потоке, и параметры: число коротких конвейеров NKK, число длинных конвейеров NDK и число команд К в потоке, берутся по варианту из таблицы 7.1.
Задание 5. Определить зависимости М и T2 ср , где аргумент К -число команд в потоке выбирается по варианту из таблицы 7.1.
Короткий конвейер один, NKK =1. Промежуток РКД =1 - длинная команда стоит после каждой короткой команды,
Параметр: число длинных конвейеров NDK берется из таблицы 7.1.
Таблица 7.1
Значения параметров для заданий 1 - 2
№ варианта | Задание 1 | Задание 2 NDK=0 | |||
Аргумент K | Параметр | Аргумент K | Параметр | ||
NKK | NDK | NKK | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 5 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 4; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 4; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 4 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 5 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 4; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 4; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 4 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 6 | |||
100 – 500 Шаг=100 | 100 – 500 Шаг=100 | 2; 3; 4 |
|
|
Продолжение таблицы 7.1
Значения параметров для заданий 3 - 5
№ вари-анта | Задание 3 NDK=1; РКД=1 | Задание 4 | Задание 5 NKK=1; РКД=1 | |||||
Аргумент K | Параметр NKK | Аргумент РКД | Параметры | Аргумент K | Параметр NDK | |||
NKK | NDK | K | ||||||
100 – 500 Шаг=100 | 1; 2; 5; 7 | 1; 3; 5; 10 | 100; 400; 500 | 100 – 500 Шаг=100 | 1; 2; 5; 7 | |||
100 – 500 Шаг=100 | 1; 3; 5; 7 | 1; 4; 7; 10 | 100; 300; 500 | 100 – 500 Шаг=100 | 1; 3; 5; 7 | |||
100 – 500 Шаг=100 | 1; 2; 3; 5 | 1; 3; 7; 10 | 100; 200; 300 | 100 – 500 Шаг=100 | 1; 2; 3; 5 | |||
100 – 500 Шаг=100 | 1; 3; 4; 5 | 1; 3; 5; 10 | 100; 400; 500 | 100 – 500 Шаг=100 | 1; 3; 4; 5 | |||
100 – 500 Шаг=100 | 1; 2; 4; 5 | 1; 4; 7; 10 | 100; 300; 500 | 100 – 500 Шаг=100 | 1; 2; 4; 5 | |||
100 – 500 Шаг=100 | 1; 3; 4; 7 | 1; 3; 7; 10 | 100; 200; 300 | 100 – 500 Шаг=100 | 1; 3; 4; 7 | |||
100 – 500 Шаг=100 | 1; 2; 5; 7 | 1; 4; 8; 10 | 100; 400; 500 | 100 – 500 Шаг=100 | 1; 2; 5; 7 | |||
100 – 500 Шаг=100 | 1; 3; 5; 7 | 1; 3; 5; 10 | 100; 300; 500 | 100 – 500 Шаг=100 | 1; 3; 5; 7 | |||
100 – 500 Шаг=100 | 1; 2; 3; 5 | 1; 4; 7; 10 | 100; 200; 300 | 100 – 500 Шаг=100 | 1; 2; 3; 5 | |||
100 – 500 Шаг=100 | 1; 3; 4; 5 | 1; 3; 7; 10 | 100; 400; 500 | 100 – 500 Шаг=100 | 1; 3; 4; 5 | |||
100 – 500 Шаг=100 | 1; 2; 4; 5 | 1; 4; 8; 10 | 100; 300; 500 | 100 – 500 Шаг=100 | 1; 2; 4; 5 | |||
100 – 500 Шаг=100 | 1; 3; 4; 7 | 1; 3; 5; 10 | 100; 200; 300 | 100 – 500 Шаг=100 | 1; 3; 4; 7 |
Содержание отчета о выполненной работе
Отчет должен содержать следующее:
1. Название и цель работы.
2. Исходные данные.
3. Общую структуру исследованной в работе мультиконвейерной системы.
4. Графики зависимости средней длительности выполнения команды от параметров программы и структуры мультиконвейерной системы.
5. Выводы об оптимальной архитектуре и эффективных режимах работы системы и их зависимости от структуры выполняемой программы.
Контрольные вопросы
· Какое минимальное время выполнения команды можно получить с помощью одного конвейера, и при каких условиях?
· Как влияет количество конвейерных устройств на производительность системы?
· Как влияет использование конвейерных устройств разных типов на производительность системы?
· Что дает использование длинных конвейеров?
· Как влияет длина программы на производительность системы?
· Зависит ли производительность системы от типов команд программы?
· Как влияет чередование длинных и коротких команд на производительность системы?
· Какая структура программы наиболее просто реализуется исследованной Вами системой?
· Какой из известных Вам типов процессоров имеет конвейеры, подобные тем, которые изучались в лабораторной работе?
· Сформулируйте предложения по наиболее эффективной организации работы мультиконвейерной системы с предложенным Вам набором команд.
Лабораторная работа №8
Исследование конфликтов в мультиконвейерных системах
Краткая теория
Цель работы. Изучение влияния различных конфликтов на эффективность функционирования мультиконвейера.
В предыдущей работе отмечалось, что современные микропроцессоры, как правило, имеют несколько конвейерных устройств различных типов: для длинных и коротких операций или для операций с памятью, команд целочисленной арифметики и арифметики с плавающей точкой. Эффективность работы такого мультиконвейерного АЛУ зависит от структуры и числа конвейеров, а также от класса реализуемых на этом АЛУ алгоритмов.
При работе любого числа конвейеров могут возникать конфликты,которыеснижают их производительность. Как отмечалось ранее, существует три типа конфликтов:
|
|
1) По данным, появляющиеся, если выполнение одной команды зависит от результата предыдущей;
2) Структурные, которые возникают из-за занятости отдельных ресурсов (когда аппаратные средства не могут поддерживать выполнение операций в режиме с совмещением);
3) По управлению, возникающие при наличии команд переходов и других операций, изменяющих значение счетчика команд.
Все конфликты приводят к приостановке выполнения команды, в которой они возникли, а также всех следующих за ней до конца конвейера. Их влияние на характеристики системы с одним конвейером изучалось в лабораторной работе № 6.
В настоящей работе предлагается исследовать поведение мультиконвейерного АЛУ, в котором возникают коллизии первых двух типов. Конфликты по данным, как известно, появляются там, где имеет место зависимость между командами, и они расположены достаточно близко друг к другу. Причем эти ситуации возникают как при работе с регистрами АЛУ, так и при обращении к одной и той же ячейке кэш-памяти. Примером структурных конфликтов являются коллизии, возникающие при промахе в кэш-памяти и при необходимости выполнения записей в два или более регистров регистрового файла в течение одного машинного такта.
В реальных системах конфликты по данным устраняются с помощью оптимизирующих компиляторов или аппаратных средств микропроцессоров, которые изменяют порядок выполнения команд в программе так, чтобы связанные команды были отделены друг от друга на соответствующее расстояние в тактах. Другим путем ликвидации этих, а также структурных коллизий является расширение регистровой и кэш-памяти, в частности, создание регистровых файлов, у которых запись данных производится в разные ячейки.
В настоящей работе имеется возможность воспроизвести конфликт по данным между двумя соседними командами программы, которые именуются связкой. Такие операции в модели выделяются красным цветом. В связку могут входить как обычные команды, так и длинные. Если в некоторый конвейер поступает одна из операций связки, вторая ожидает во входной очереди, пока первая не пройдет по конвейеру и не попадет в выходной буфер. В это время для заполнения конвейеров из входной очереди выбираются следующие команды.
|
|
В модели также может воспроизводиться структурный конфликт, когда операнды очередной команды отсутствуют в кэш-памяти. Такие операции в программе называются командами записи/чтения из памяти. Операции записи считаются более длинными, чем чтение, и обрабатываются в длинных конвейерах. Если в кэш-памяти не оказывается данных для выполнения очередной команды, то она ожидает во входном буфере. В это время для заполнения конвейеров из очереди выбираются следующие команды.