Автор работы: Пользователь скрыл имя, 10 Декабря 2012 в 21:45, курсовая работа
Конвейерная обработка основана на разделении исполняемой команды на сегменты, и выделении для каждой из них отдельного блока аппаратуры[1]. Сегментами конвейера могут быть оперативная память, арифметическое устройство, логическое устройство и др. Так же важную роль в конвейере играет организация передачи данных от одного сегмента к следующему. Конвейерную обработку можно использовать для совмещения этапов выполнения разных команд. Производительность при этом возрастает в разы, так как на различных тактах конвейера может выполняться несколько команд.
Теоретический материал 4
Конвейерная организация 4
Информационные и ресурсные конфликты 7
Организация памяти 10
Признаковый обмен и сквозная запись 13
Блоки GENERATE и TERMINATE 14
Блок ADVANCE 15
Блоки SEIZE и RELEASE 16
Блок TRANSFER 16
Блок LOGIC 17
Блок GATE 18
Задание для лабораторной работы 18
Пример выполнения задания 22
Описание используемых в модели обозначений 22
Описание модели 23
Блок-схема модели конвейерной ВС 25
Текст программы-модели конвейерной ВС 28
Выбор времени моделирования 30
Отладка модели 31
Тест 1 31
Тест 2 35
Тест 3 45
Тест 4 54
Анализ результатов моделирования 68
Анализ влияния длины I-очереди на производительность модели 68
Анализ влияния количества РАО и РДО на производительность модели 69
Анализ влияния ширины выборки из кэш-памяти на производительность модели 70
Анализ влияния формата команд на производительность модели 72
Анализ простоя логики декодирования при загруженной I-очереди 73
Варианты заданий для студентов 75
Вариант 1 75
Вариант 2 75
Вариант 3 75
Вариант 4 75
Вариант 5 76
Вариант 6 76
Вариант 7 76
Вариант 8 76
Вариант 9 77
Вариант 10 77
Список используемой литературы 77
Выходная информация адресного сумматора поступает на один из OAR регистров адреса операнда. Каждому из них соответствует регистр данных операнда ODR в E-устройстве.
Отсутствие места в I-очереди или в OAR также вызывает задержку работы I-устройства до появления свободного места.
Второй основной источник помех в I-устройстве, связан с предварительной выборкой команд и с появлением команд записи, которые влияют на область предварительной выборки. Здесь используется две отдельные проверки:
Е-устройство микропрограммное, причем декодированная информация в каждой позиции I-очереди указывает, какая микропрограмма должна исполняться следующей. Имеется взаимно-однозначное соответствие между микропрограммами и командами, декодированными I-устройством. Более того, очередность исполнения микропрограмм соответствует ожидаемой программистом. При выполнении операций E-устройство само выступает как трехступенчатый конвейер. Первая ступень управляет самой нижней записью I-очереди. Она осуществляет выборку первой микрокоманды желаемой микропрограммы и доступ к любому из общих регистров или регистров с плавающей точкой, необходимой для получения операндов. Вторая ступень исполняет желаемую функцию на единственной ступени прохождения данных E-устройства. Время вычисления команды в АЛУ равно Т. Последняя ступень осуществляет запись данных в общие регистры или память, в зависимости от того как был подан первый операнд, так как результат записывается на его место.
Для каждого варианта определить:
1) сколько команд на обработке в процессоре после завершения моделирования
2) сколько команд выполнено за время моделирования
Рассмотрим пример модели со сквозной записью. В ней через заданный промежуток времени генерируются заявки (блок GENERATE). Каждая ступень конвейера рассматривается как отдельный блок, в который поступает 1 транзакт в начале моделирования. Для каждой команды определяется номер РОН с помощью равновероятной функции. Занятие РОН имитируется при помощи блоков GATE и LOGIC (15 логических переключателей). С вероятностью 10% команда, поступившая в устройство, имеет формат регистр-память или память-регистр. Занятие регистров ОП осуществляется посредством сохраняемых величин. Работа каждого устройства имитируется при помощи блоков SEIZE и RELEASE. Используя цепи пользователя, моделируется I-очередь.
Каждая команда имеет 3 параметра:
В модели используются 5 функций:
В модели используются 10 сохраняемых величины:
Для вычисления размера свободного места в БК используется переменная VAR1=X$SBF1-X$WTCH .
С помощью блока TEST определяется возможность записи следующей группы команды в буфер потока команд (БК). Если есть место в БК, занимается первая ступень конвейера – TEG. Используя блок ADVANCE 1, имитируется сравнение тега КЭШ-памяти и желаемого адреса. С вероятностью 8% в КЭШ-памяти происходит промах. В этом случае из КЭШ памяти вытесняется блок в соответствии с алгоритмом LRU. Система обращается к ОП и считывает первую порцию информации (ADVANCE 5). В следующие 7 обращений будет считана оставшаяся информация считываемого блока из ОП. Освобождается устройство TEG. Параллельно с поступлением в блок КЭШ запрашиваемый поток данных поступает в БК – увеличивается сохраняемая величина BUF1 на ширину выборки БК WTCH.
Удачное
сравнение тегов имитируется
увеличением сохраняемой
Определяется размер текущей команды – 2Б или 4Б – с помощью функции WCOP. Результат функции присваивается первому параметру транзакта. С помощью блоков TEST определятся, есть ли в БК хоть одна команда и свободна ли I-очередь.
Загрузка данных текущей команды имеет больший приоритет, чем загрузка следующей. Поэтому транзакту присваивается более высокий приоритет – 15. Считывается информация из БК. Начинается декодирование LOGC. С помощью функций REG1 и REG2 разыгрываются номера 15 регистров общего назначения (РОН) данной команды.
Если команда – формата регистр-регистр, то используя 15 переключателей, проверяется независимость команды. Адрес РОН второго операнда заменяется на адрес копии РОН с помощью блока ADVANCE 1. Если один операнд команды имеет обращение к памяти, то операнд, использующий РОН, проверяется 15 переключателей. Информационный конфликт ОП для другого операнда проверяется с помощью блока TRANSFER. С вероятностью 5% конфликт ОП возникает. В этом случае команда ждёт разрешения конфликта ADVANCE 8 (работа ступеней E-устройства при записи в память без промаха): выборка данных из РОН и РДО в АЛУ (1 такт), вычисление операции в АЛУ (5 тактов), занятие первой ступени КЭШ-памяти – сравнение тегов (1 такт) и запись полученной информации в КЭШ (1 такт).
Происходит декодирование команды (ADVANCE 1). Освобождается устройство логики декодирования LOGC. Расщепление транзакта. Потомок идёт на проверку возможно ли поставить в очередь следующую команду. Родитель проверяет следующее условие входа в очередь с помощью блока TEST – если поступила команда с использованием памяти, проверяется, есть ли свободный регистр адресов операндов. Если есть, занимается свободный регистр. Команда в Е-устройстве выполняется с большим приоритетом, что имитируется блоком PRIORITY. Команда поступает в I-очередь, имитируемую с помощью цепей пользователя.
С помощью блоков TEST проверяется, если поступил адрес в РАО и не были подкачены данные для текущей команды, то занимается первая ступень конвейера КЭШ-памяти TEG. Используя блок ADVANCE 1, имитируется сравнение тега КЭШ-памяти и желаемого адреса. С вероятностью 8% в КЭШ-памяти происходит промах. В этом случае из КЭШ памяти вытесняется блок в соответствии с алгоритмом LRU. В этом случае система обращается к ОП и считывает первую порцию информации (ADVANCE 5). Параллельно информация закачивается в регистр данных операнда (РДО). В следующие 7 обращений будет считана оставшаяся информация. Освобождается устройство TEG.
В случае удачного обращения занимается вторая ступень конвейера КЭШ-памяти STOR. Полученная информация поступает из КЭШ-памяти в РДО (ADVANCE 1). Устройство STOR освобождается. Сохраняемая величина ODR увеличивается для всех обращений.
С помощью блока TEST проверяется наличие хоть одной команды в очереди. Устройство LOAD имитирует первую ступень Е-устройства. Если информация, адрес которой хранится в РАО, загрузилась в РДО, осуществляется выборка операндов из РОН и РДО в арифметико-логическое устройство АЛУ(ADVANCE 1). Удачная выборка операндов имитируется увеличением сохраняемой величины LOADN. Устройство LOAD освобождается.
На вторую ступень конвейера поступает информация, что выборка прошла удачно (имитируется блоком TEST). Сохраняемая величина LOADN уменьшается. Если один операнд команды имеет обращение к памяти (длина команды 4 Б), то сохраняемые величины OAR и ODR уменьшается (т.к. на прошлом шаге произошла выборка операнда из РДО). Занимается вторая ступень конвейера Е-устройства – АЛУ (CPU). Производится вычисление операции (5 тактов). Устройство CPU освобождается. Если текущая команда имеет формат регистр-регистр, результат записывается на место первого операнда в РОН, что имитируется блоком ADVANCE 1.
Если данная команда имеет размер 4Б, то с вероятностью 20% она будет формата память-регистр. В этом случае занимается первая ступень КЭШ-памяти – устройство TEG. Используя блок ADVANCE 1, имитируется сравнение тега КЭШ-памяти и желаемого адреса. С вероятностью 8% в КЭШ-памяти происходит промах. В этом случае из КЭШ памяти вытесняется блок в соответствии с алгоритмом LRU. Система обращается к ОП и считывает первую порцию информации (ADVANCE 5). В следующие 7 обращений будет считана оставшаяся информация считываемого блока из ОП. Освобождается устройство TEG. Занимается вторая ступень конвейера КЭШ-памяти STOR. Полученная информация из АЛУ записывается в текущий блок. Устройство STOR освобождается. Переключатель, отвечающий за второй операнд, сбрасывается.
Если команда имеет формат регистр-память, полученная информация из АЛУ записывается на место первого операнда в РОН (ADVANCE 1). Переключатель, отвечающий за этот операнд, сбрасывается.
Приведем пример программы со сквозной записью.
SIMULATE |
|
WCOP FUNCTION RN1,D2 |
|
.9,2/1,4 |
|
OPR1 FUNCTION P1,E2 |
|
2,FN$REG1/4,FN$REG1 |
|
OPR2 FUNCTION P1,E2 |
|
2,FN$REG2/4,100 |
|
REG1 FUNCTION RN2,D15 |
|
.066,1/.132,2/.198,3/.264,4/. |
|
REG2 FUNCTION RN3,D15 |
|
.066,1/.132,2/.198,3/.264,4/. |
|
INITIAL X$SBF1,24 |
|
INITIAL X$SBF2,4 |
|
INITIAL X$WTCH,8 |
|
INITIAL X$SOAR,6 |
|
INITIAL X$WCPU,5 |
|
VAR1 VARIABLE X$SBF1-X$WTCH |
|
GENERATE ,,,1,10 |
|
TES1 TEST LE X$BUF1,V$VAR1 |
|
SEIZE TEG |
|
ADVANCE 1 |
|
TRANSFER .92,FAL1,GOD1 |
|
FAL1 ADVANCE 5 |
|
ADVANCE 7 |
|
RELEASE TEG |
|
SAVEVALUE BUF1+,X$WTCH |
|
TRANSFER ,TES1 |
|
GOD1 RELEASE TEG |
|
SAVEVALUE TEGN+,1 |
|
TRANSFER ,TES1 |
|
GENERATE ,,,1,10 |
|
TES2 TEST G X$TEGN,0 |
|
SEIZE STOR |
|
SAVEVALUE BUF1+,X$WTCH |
|
ADVANCE 1 |
|
RELEASE STOR |
|
SAVEVALUE TEGN-,1 |
|
TRANSFER ,TES2 |
|
GENERATE ,,,1,10 |
|
TES3 TEST G X$BUF1,0 |
|
ASSIGN 1,FN$WCOP |
|
TEST G X$BUF1,P1 |
|
TEST L CH$BUF2,X$SBF2 |
|
PRIORITY 15 |
|
SAVEVALUE BUF1-,P1 |
|
SEIZE LOGC |
|
ASSIGN 2,FN$OPR1 |
|
ASSIGN 3,FN$OPR2 |
|
TEST E P1,2,TES4 |
|
GATE LR P2 |
|
LOGIC S P2 |
|
TEST NE P2,P3,WFCP |
|
GATE LR P3 |
|
LOGIC S P3 |
|
WFCP ADVANCE 1 |
|
TRANSFER ,OUTL |
|
TES4 GATE LR P2 |
|
LOGIC S P2 |
|
CTES TRANSFER .95,CONF,OUTL |
|
CONF ADVANCE 8 |
|
TRANSFER ,CTES |
|
OUTL ADVANCE 1 |
|
RELEASE LOGC |
|
SPLIT 1,TES3 |
|
TEST E P1,4,BUF2 |
|
TEST L X$OAR,X$SOAR |
|
SAVEVALUE OAR+,1 |
|
BUF2 PRIORITY 20 |
|
LINK BUF2,FIFO |
|
GENERATE ,,,1,10 |
|
TES5 TEST G X$OAR,0 |
|
TEST L X$ODR,X$OAR |
|
SEIZE TEG |
|
ADVANCE 1 |
|
TRANSFER .92,FAL2,GOD2 |
|
FAL2 ADVANCE 5 |
|
ADVANCE 7 |
|
RELEASE TEG |
|
TRANSFER ,WOS2 |
|
GOD2 RELEASE TEG |
|
SEIZE STOR |
|
ADVANCE 1 |
|
RELEASE STOR |
|
WOS2 SAVEVALUE ODR+,1 |
|
TRANSFER ,TES5 |
|
GENERATE ,,,1,10 |
|
TES6 TEST G CH$BUF2,0 |
|
SEIZE LOAD |
|
TEST E X$OAR,X$ODR |
|
ADVANCE 1 |
|
SAVEVALUE LOADN+,1 |
|
RELEASE LOAD |
|
TRANSFER ,TES6 |
|
GENERATE ,,,1,10 |
|
TES7 TEST G X$LOADN,0 |
|
UNLINK BUF2,STP2,1 |
|
SAVEVALUE LOADN-,1 |
|
TRANSFER ,TES7 |
|
STP2 TEST E P1,4,TES8 |
|
SAVEVALUE OAR-,1 |
|
SAVEVALUE ODR-,1 |
|
TES8 SEIZE CPU |
|
ADVANCE X$WCPU |
|
RELEASE CPU |
|
TEST NE P1,2,RONW |
|
TRANSFER .8,WSTR,RONW |
|
WSTR SEIZE TEG |
|
ADVANCE 1 |
|
TRANSFER .92,FAL3,GOD3 |
|
FAL3 ADVANCE 5 |
|
ADVANCE 7 |
|
GOD3 RELEASE TEG |
|
SEIZE STOR |
|
ADVANCE 1 |
|
RELEASE STOR |
|
DEL2 LOGIC R P2 |
|
LOGIC R P3 |
|
TERMINATE |
|
RONW ADVANCE 1 |
|
TRANSFER ,DEL2 |
|
GENERATE 10000 |
|
TERMINATE 1 |
|
START 1 |
|
END |
Было рассмотрено несколько значений времени моделирования. Исходя из этих данных, можно обнаружить зависимость относительной загрузки каждого устройства (прибора) в долях единицы от времени моделирования. Эти зависимости занесены в таблицу, где в заголовках строк указаны номера приборов, а в заголовках столбцов указаны варианты значений времени моделирования.
Пример при T=500000 тактов
--Avg-Util-During--
Facility Total Avail Unavl Entries Average Current Percent Seizing Preempting
Time Time Time Time/Xact Status Avail Xact Xact
TEG 0.131 33020 1.986 AVAIL
STOR 0.061 30431 1.000 AVAIL
LOGC 0.995 82987 5.996 AVAIL 82993
LOAD 0.326 130090 1.253 AVAIL 5
CPU 0.830 82985 5.000 AVAIL 82991
Время Устройства |
500 |
1000 |
5000 |
10000 |
20000 |
30000 |
50000 |
100000 |
500000 |
TEG |
0,234 |
0,176 |
0,161 |
0,143 |
0,133 |
0,130 |
0,129 |
0,130 |
0,131 |
STOR |
0,052 |
0,060 |
0,058 |
0,060 |
0,062 |
0,060 |
0,061 |
0,060 |
0,061 |
LOGC |
0,998 |
0,999 |
0,999 |
0,999 |
0,997 |
0,996 |
0,996 |
0,995 |
0,995 |
LOAD |
0,356 |
0,347 |
0,336 |
0,326 |
0,326 |
0,322 |
0,324 |
0,325 |
0,326 |
CPU |
0,822 |
0,860 |
0,842 |
0,834 |
0,832 |
0,831 |
0,829 |
0,830 |
0,830 |
По графику видно, что начиная с 20000 тактов, значение времени занятости устройств стабилизируется. Для дальнейшего изучения работы системы примем время моделирования равным 50000 тактов.
Для отладки модели исключим в программе все случайные переменные. В разработанной модели нужно проверить работу четырех ветвей: функционирование кэш-памяти и работа E-устройства.
Для отладки будем использовать встроенный отладчик GPSS\H.
Рассмотрим модель функционирования кэш-памяти. Сгенерируем два транзакта. При обращении к кэш-памяти для первого возникает промах, для второго – попадание. Проимитируем это с помощью параметра 1, добавив строку ASSIGN 1+,1 и заменив TRANSFER .92,FAL1,GOD1 на TEST E P1,1,GOD1. Удалим все остальные блоки.
Информация о работе Ресурсные и информационные конфликты в конвейерных системах