Автор работы: Пользователь скрыл имя, 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
Если у всех блоков TERMINATE опущено поле А, т.е. упомянутый счетчик не изменяется, то моделирование будет продолжаться до тех пор, пока задача не будет исключена оператором ЭВМ, либо снята операционной системой по истечении времени, либо не закончится динамической ошибкой[5].
Удобным
средством моделирования
Поля А и В блока ADVANCE служат для задания времени, на которое этот блок задерживает входящий в него транзакт. Постоянное время задержки указывается в поле А, при этом поле В оставляется пустым.
Например,
ADVANCE 50
выполняет задержку транзакта на 50 единиц времени.
Если нужно задать задержку на случайное время, то используются следующие формы блока ADVANCE:
- время
задержки имеет равномерное
Например, чтобы задать задержку в интервале от 7 до 21 единиц, необходимо блок ADVANCE определить следующим образом:
ADVANCE 14,7
- время задержки имеет более сложное распределение. В этом случае время задержки определяется умножением числа, заданного в поле А, на значение функции, указанной в поле В. Эта функция определяет требуемый закон распределения случайных чисел. Например,
ADVANCE 100,FN$EXPON
задает задержку на f единиц времени, где f - целая часть от произведения 100 на значение функции EXPON[5].
В результате входа транзакта в блок SEIZE указанное в нем устройство становится занятым данным транзактом и остается в этом состоянии до тех пор, пока этот же самый транзакт не пройдет через блок RELEASE, указывающий на это устройство. Один транзакт может занять любое число устройств, но каждое устройство в любой момент времени может быть занято лишь одним транзактом.
Если устройство, указанное в блоке SEIZE, уже занято, то транзакт не может войти в этот блок и задерживается перед ним до момента его освобождения. Несколько транзактов, задержанных на входе блока SEIZE, обслуживаются в порядке поступления. Освобождение устройства производится блоком RELEASE, который при прохождении через него транзакта переводит указанное в нем устройство в состояние "свободно", если это устройство было занято именно этим транзактом. При попытке освободить устройство другим транзактом выдается сообщение об ошибке.
Для каждого устройства интерпретатор подсчитывает количество транзактов, занимавших его, и суммарное время использования этого устройства всеми транзактами.
Пример 3.
SEIZE СТАН1 занять СТАН1
ADVANCE 10,5 обработка
RELEASE СТАН1 освободить СТАН1
SEIZE СТАН2 занять СТАН2
SEIZE СТАН3 занять СТАН3
ADVANCE 14 обработка
RELEASE СТАН2 освободить СТАН2
RELEASE СТАН3 освободить СТАН3
Прохождение транзактов через этот участок программы моделирует обслуживание заявок сначала прибором СТАН1 в течение от 5 до 15 единиц времени, а затем одновременно двумя приборами СТАН2 и СТАН3 в течение 14 единиц времени[5].
При описании имитационных
Этот блок может работать
в нескольких режимах
Рассмотрим наиболее часто
Режим безусловного перехода.
Блок TRANSFER передает все поступающие на него транзакты на метку, указанную в поле В. Поле А блока должно быть при этом пустым.
Например, все транзакты, поступившие на блок
TRANSFER ,TOCPU
будут переданы на вход блока, имеющего метку TOCPU.
Условная передача - режим ВОТН(ОБА).
Для задания этого режима в поле А блока TRANSFER записывается слово ВОТН, а в поле В и С - метки некоторых блоков.
При работе в этом режиме транзакт переходит к блоку, указанному в поле В, если передача возможна, в противном случае проверяется возможность его передачи на блок, указанный в поле С, и если он не может войти и в этот блок, то происходит его задержка до тех пор, пока не освободится один из блоков, указанных в полях В и С. Если в режиме ВОТН одно из полей В или С опущено, то считается, что в нем указан блок, следующий за блоком TRANSFER. Проверка возможности вхождения в каждый из блоков выполняется каждую единицу системного времени.
Пример 5.
. . .
TRANSFER BOTH,DISK,CPU
. . .
DISK SEIZE WERK3
. . .
CPU SEIZE COMP
. . .
В данном примере транзакт, поступивший в блок TRANSFER, сначала пытается войти в блок, помеченный меткой DISK. Если устройство WERK3 занято, то производится попытка входа в блок CPU. Если она оканчивается неудачей, то транзакт задерживается в блоке TRANSFER до момента освобождения хотя бы одного из устройств WERK3 или СOMP.
Статистический переход.
Если в поле А блока TRANSFER задана десятичная дробь, то она трактуется интерпретатором как вероятность перехода транзакта на блок, метка которого указана в поле С.
Например, блок
TRANSFER .400,TAPE,DISK
будет случайным образом передавать 40% поступающих на него транзактов на блок DISK, а 60% - на блок TAPE[5].
Служит для установки значения логического переключателя в процессе моделирования.
Общий вид: LOGIC X A
Операнды блока: А – номер или символическое имя логического переключателя;
Х может принимать значения: S – SET, R – RESET, I – инвертирование состояния.
При входе
в блок LOGIC задержки не возникает. Состояние
логического переключателя
Пример.
LOGIC S 41
Логический переключатель 41 устанавливается в положение SET.
LOGIC R 165
Логический переключатель 165 устанавливается в положение RESET, т.е. осуществляется его сброс.
LOGIC I 4
Логический переключатель 4 инвертируется, т.е. его значение изменяется на противоположное[5].
Служит для проверки состояния логического переключателя.
Общий вид: GATE X A,B
Операнды блока: А – имя проверяемого логического переключателя;
В – метка блока (может отсутствовать);
Х – вспомогательный оператор.
Если метка блока отсутствует, то проверка проводится в режиме отказа.
В качестве вспомогательного оператора Х может использоваться логический указатель LS (логический ключ в состоянии «включен»), либо LR (логический ключ в состоянии «выключен»).
Блок GATE работает в двух режимах.
Режим отказа
При работе в режиме отказа блок GATE не пропускает транзакты, если соответствующий объект не находится в требуемом состоянии. Если условие проверки не выполняется, то транзакт остается в предшествующем блоке и учитывается счетчиком его текущего содержимого. Заблокированный транзакт находится в цепи текущих событий. Если же поставленное в блоке условие удовлетворяется, блок разрешает вход транзактов.
Пример.
GATE LS 5
Если пятый переключатель установлен в SET, то транзакт идет на следующий блок.
Режим перехода
Если в поле В указана метка (номер) блока, то вместо отказа блок GATE будет посылать транзакт на указанный блок. Если логический переключатель имеет заданное значение, то транзакт переходит к следующему по порядку блоку. В этом режиме вход в блок GATE не запрещается, т.е. транзакт входит в блок, а дальнейшее его передвижение обусловлено выполнением подпрограммы блока. Если первый блок, следующий за блоком GATE, запрещает вход, то транзакт находится в цепи текущих событий и остается в блоке GATE. Таким образом, если поле В пустое, блок работает в режиме отказа, если не пустое – в режиме перехода.
Пример.
GATE LS 5,7
В случае невыполнения условия (5 логический переключатель сброшен), транзакт переходит на блок с меткой 7[5].
Промоделировать в течение времени ТМ конвейерную ВС, состоящую из 3х ступеней. Первая ступень конвейера – работа с памятью, которая состоит из:
Структура кэш-памяти – группо-ассоциативная с OBL областями по BLK блоков каждое. Блок состоит из WRD двоичных слов. Каждое двоичное слово имеет размер SIZE байта. Типичный запрос требует одно двоичное слово. Сама кэш-память является двухступенчатым конвейером. Его первая ступень осуществляет выборку множества BLK-адресных тегов и сравнение его с желаемым адресом строки. Вторая ступень работает только при успешном сравнении. Она выбирает фактическую строку данных. Одновременно может выполняться только одно сравнение тегов с желаемым адресом. Аналогичная ситуация происходит при выгрузке данных из кэш-памяти.
Доля попаданий в кэш-память равна GD. Если при сравнении тегов и желаемого адреса совпадение не было найдено, происходит промах. При промахе кэш-память формирует запросы в ОП на подгрузку информации. При этом блокируется первая ступень кэш-памяти. Ширина выборки из ОП равна WTH.
Все операции записи осуществляются с помощью:
Алгоритм вытеснения, используемый в этой кэш-памяти – это модифицированный алгоритм LRU (вытеснение наиболее давно используемого). В кэш-памяти есть вектор замены, который содержит для каждой области n-разрядную запись. В эту запись входит информация о такой блок когда использовался.
При каждом доступе соответствующая запись замены модифицируется. Так, если возникает попадание, то этот блок, становиться «наиболее использованным». Если же возникает промах, то просматривается вектор замены и из него выбирается наименее использованный за последнее время блок. При операции записи вектор не модифицируется.
В устройстве IPPE регистр адреса команды, исполняющий роль счетчика команд, подает адрес в память. В ответ приходит двоичное слово размером SIZE, которое поступает в один из N буферов команд, которые служат для предварительной выборки. Каждый буфер команд имеет размер NSIZE.
В
любой момент времени из одного из
этих буферов соответствующие части
его содержимого поступают в
регистр команд, который является
входным фиксатором для ступени
декодирования и генерации
Рассмотреть систему при двухадресной адресации. Команды могут быть трех типов: регистр-регистр (2 байта(2Б)), регистр-память (4 байта(4Б)) и память-регистр (4 байта(4Б)). Команды регистр-память и память-регистр появляются реже, чем команды регистр-регистр.
Исполнительный адрес получается при сложении смещения, выделенного из команды, с содержимым двух определенных командой общих регистров – базы и индекса. Для реализации этого сложения используется трёхвходовой сумматор и копия общих регистров (обновляющаяся E-устройством). Поскольку команды декодируются и исполняются устройствами последовательно, то помехи типа WAR или WAW, связанные с регистрами нужными IPPF устройству, не возникают. Правда имеется два источника помех типа RAW. Первая происходит, когда некоторая другая команда, выполнение которой еще не завершено в E-устройстве, изменяет содержимое регистра нужного команде в IPPF устройстве. Эта помеха обнаруживается путем добавления к каждой записи в очереди тега, указывающего, какие регистры будут изменены этой командой. Затем часть логики декодирования сравнивает все общие регистры, нужные IPPF устройству, с этими тегами. При наличии совпадения возникает задержка работы IPPF устройства до завершения исполнения этой команды. Связанная с общим регистром помеха, явно обрабатываемая IPPF устройством, возникает, когда некоторые ранее инициированные команды загрузки должны читать из памяти в эти общие регистры, которые требуются текущей команде в IPPF. В этом случае с помощью обходного пути загрузки, обеспечивается получение IPPF устройством копии данных в тот момент, когда команда приходит из памяти до завершения операции в E-устройстве.
Информация о работе Ресурсные и информационные конфликты в конвейерных системах