Ресурсные и информационные конфликты в конвейерных системах

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Отчёт 2.docx

— 2.30 Мб (Скачать файл)

Выходная  информация адресного сумматора поступает на один из OAR регистров адреса операнда. Каждому из них соответствует регистр данных операнда ODR в E-устройстве.

Отсутствие  места в I-очереди или в OAR также вызывает задержку работы              I-устройства до появления свободного места.

Второй  основной источник помех в I-устройстве, связан с предварительной выборкой команд и с появлением команд записи, которые влияют на область предварительной выборки. Здесь используется две отдельные проверки:

    1. Если желаемый адрес совпадает с адресом запоминания, относящимся к какой-либо команде запоминания, которая находиться в текущий момент в I-очереди, то тогда этот запрос задерживается до завершения запоминания. Это проверка выполняется, когда делается запрос на предварительную выборку.
    2. Сравнивается адрес запоминания со всеми данными во всех буферах потоков команд. При совпадении происходит сбрасывание этих буферов и их перезапуск только после завершения команды записи. Делается эта проверка при декодировании любой команды записи.

Е-устройство микропрограммное, причем декодированная информация в каждой позиции I-очереди указывает, какая микропрограмма должна исполняться следующей. Имеется взаимно-однозначное соответствие между микропрограммами и командами, декодированными I-устройством. Более того, очередность исполнения микропрограмм соответствует ожидаемой программистом. При выполнении операций E-устройство само выступает как трехступенчатый конвейер. Первая ступень управляет самой нижней записью I-очереди. Она осуществляет выборку первой микрокоманды желаемой микропрограммы и доступ к любому из общих регистров или регистров с плавающей точкой, необходимой для получения операндов. Вторая ступень исполняет желаемую функцию на единственной ступени прохождения данных E-устройства. Время вычисления команды в АЛУ равно Т. Последняя ступень осуществляет запись данных в общие регистры или память, в зависимости от того как был подан первый операнд, так как  результат записывается на его место. 

 

 

 

 

Для каждого варианта определить:

1) сколько команд на обработке в процессоре после завершения моделирования

2) сколько команд выполнено за время моделирования

Пример выполнения задания

Описание  используемых в модели обозначений

 

Рассмотрим  пример модели со сквозной записью. В ней через заданный промежуток времени генерируются заявки (блок GENERATE). Каждая ступень конвейера рассматривается как отдельный блок, в который поступает 1 транзакт в начале моделирования. Для каждой команды определяется номер РОН с помощью равновероятной функции. Занятие РОН имитируется при помощи блоков GATE и LOGIC (15 логических переключателей). С вероятностью 10% команда, поступившая в устройство, имеет формат регистр-память или память-регистр. Занятие регистров ОП осуществляется посредством сохраняемых величин. Работа каждого устройства имитируется при помощи блоков SEIZE и RELEASE. Используя цепи пользователя, моделируется I-очередь.

 

Каждая команда имеет 3 параметра:

  1. P1 – размер команды (2 или 4 Б);
  2. P2 – адресация первого операнда;
  3. P3 – адресация второго операнда.

В модели используются 5 функций:

  1. WCOP – для определения размера команды;
  2. OPR1 – для определения адресации первого операнда;
  3. OPR2 – для определения адресации второго операнда;
  4. REG1 – для опеределения РОН первого операнда при регистровой адресации;
  5. REG2 – для опеределения РОН второго операнда при регистровой адресации.

 

В модели используются 10 сохраняемых величины:

  • X$SBF1 – для обозначения размера БК;
  • X$BUF1 – для задания занятости БК;
  • X$SBF2 – для обозначения размера I-очереди ;
  • X$WTCH – для обозначения ширины выборки из кэш-памяти;
  • X$SOAR – для обозначения количества РАО;
  • X$WCPU – для обозначения времени выполнения операции в АЛУ
  • X$TEGN – для синхронизации второй ступени кэш-памяти;
  • X$OAR – для задания количества занятых РАО;
  • X$ODR – для задания количества занятых РДО;
  • X$LOADN – для имитации удачной выборки операндов в Е-устройстве.

 

Для вычисления размера свободного места в БК используется переменная VAR1=X$SBF1-X$WTCH .

Описание  модели

 

С помощью блока TEST определяется возможность записи следующей группы команды в буфер потока команд (БК). Если есть место в БК, занимается первая ступень конвейера – TEG. Используя блок ADVANCE 1, имитируется сравнение тега КЭШ-памяти и желаемого адреса. С вероятностью 8% в КЭШ-памяти происходит  промах. В этом случае из КЭШ памяти вытесняется блок в соответствии с алгоритмом LRU. Система обращается к ОП и считывает первую порцию информации (ADVANCE 5). В следующие 7 обращений будет считана оставшаяся информация считываемого блока из ОП. Освобождается устройство TEG. Параллельно с поступлением в блок КЭШ запрашиваемый поток данных поступает в БК – увеличивается сохраняемая величина BUF1 на ширину выборки БК WTCH.

Удачное сравнение тегов имитируется  увеличением сохраняемой величины TEGN. На вторую ступень конвейера поступает информация, что сравнение было удачным (имитируется блоком TEST). Занимается вторая ступень конвейера КЭШ-памяти STOR. Закаченный поток данных поступает в БК – увеличивается сохраняемая величина BUF1 на ширину выборки БК WTCH (ADVANCE 1). Устройство STOR освобождается. Сохраняемая величина TEGN уменьшается.

Определяется  размер текущей команды – 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/.33,5/.397,6/.464,7/.531,8/.598,9/.665,10/.732,11/.799,12/.866,13/.933,14/1,15

 

REG2  FUNCTION RN3,D15

 

.066,1/.132,2/.198,3/.264,4/.33,5/.397,6/.464,7/.531,8/.598,9/.665,10/.732,11/.799,12/.866,13/.933,14/1,15

 
   

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

 

Рассмотрим модель функционирования кэш-памяти. Сгенерируем два транзакта. При обращении к кэш-памяти для первого возникает промах, для второго – попадание. Проимитируем это с помощью параметра 1, добавив строку ASSIGN 1+,1 и заменив TRANSFER .92,FAL1,GOD1 на TEST E P1,1,GOD1. Удалим все остальные блоки.

Информация о работе Ресурсные и информационные конфликты в конвейерных системах