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

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

Если  у всех блоков TERMINATE опущено поле А, т.е. упомянутый счетчик не изменяется, то моделирование будет продолжаться до тех пор, пока задача не будет исключена оператором ЭВМ, либо снята операционной системой по истечении времени, либо не закончится динамической ошибкой[5].

Блок ADVANCE

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

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

Например,

            ADVANCE   50

выполняет задержку транзакта на 50 единиц времени.

Если  нужно задать задержку на случайное  время, то используются следующие формы  блока ADVANCE:

- время  задержки имеет равномерное распределение  в интервале [Т1,Т2]. В этом случае в поле А указывается среднее значение интервала времени, а в поле В - максимальное отклонение от среднего.

Например, чтобы задать задержку в интервале  от 7 до 21 единиц, необходимо блок ADVANCE определить следующим образом:

            ADVANCE   14,7

- время  задержки имеет более сложное  распределение. В этом случае  время задержки определяется  умножением числа, заданного в  поле А, на значение функции, указанной в поле В. Эта функция определяет требуемый закон распределения случайных чисел. Например,

            ADVANCE   100,FN$EXPON

задает  задержку на f единиц времени, где f - целая  часть от произведения 100 на значение функции EXPON[5].

Блоки SEIZE и RELEASE

В результате входа транзакта в блок 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

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

      Этот блок  может  работать  в  нескольких режимах передачи  транзактов.  Режим передачи определяется операндом,  указанным в поле А этого блока. Метки блоков - преемников записываются в полях B и С.

      Рассмотрим наиболее часто используемые  режимы работы блока TRANSFER.

Режим безусловного перехода.

      Блок 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

 

Служит для  установки значения логического  переключателя в процессе моделирования.

Общий вид: LOGIC  X  A

Операнды  блока: А – номер или символическое имя логического переключателя;

                                           Х – вспомогательный оператор.

 

Х может принимать  значения: S – SET, R – RESET, I – инвертирование состояния.

При входе  в блок LOGIC задержки не возникает. Состояние  логического переключателя изменяется одним из трех способов: может быть установлен (S), сброшен (R) или инвертирован (I). Вид изменения определяется соответствующим мнемоническим обозначением, помещаемым непосредственно за блоком LOGIC.

 

Пример.

LOGIC S 41

Логический  переключатель 41 устанавливается в  положение SET.

LOGIC R 165

Логический  переключатель 165 устанавливается в  положение RESET, т.е. осуществляется его сброс.

LOGIC I 4

Логический  переключатель 4 инвертируется, т.е. его  значение изменяется на противоположное[5].

Блок GATE

Служит для  проверки состояния логического  переключателя.

Общий вид: GATE  X  A,B

Операнды  блока: А – имя проверяемого логического переключателя;

В – метка блока (может отсутствовать);

Х – вспомогательный оператор.

 

Если метка  блока отсутствует, то проверка проводится в режиме отказа.

В качестве вспомогательного оператора Х может  использоваться логический указатель  LS (логический ключ в состоянии «включен»), либо LR (логический ключ в состоянии «выключен»).

Блок GATE работает в двух режимах.

Режим отказа

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

Пример.

GATE LS  5

Если пятый  переключатель установлен в SET, то транзакт идет на следующий блок.

 

Режим перехода

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

 

Пример.

GATE  LS 5,7

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

 

Задание для лабораторной работы

 

Промоделировать в течение времени ТМ конвейерную ВС, состоящую из 3х ступеней. Первая ступень конвейера – работа с памятью, которая состоит из:

    1. расслоенной памяти;
    2. устройства, выполняющего функцию управления памятью процессора (PSCF);
    3. кэш-память.

Структура кэш-памяти – группо-ассоциативная с OBL областями по BLK блоков каждое. Блок состоит из WRD двоичных слов. Каждое двоичное слово имеет размер SIZE байта. Типичный запрос требует одно двоичное слово. Сама кэш-память является двухступенчатым конвейером. Его первая ступень осуществляет выборку множества BLK-адресных тегов и сравнение его с желаемым адресом строки. Вторая ступень работает только при успешном сравнении. Она выбирает фактическую строку данных. Одновременно может выполняться только одно сравнение тегов с желаемым адресом. Аналогичная ситуация происходит при выгрузке данных из кэш-памяти.

Доля  попаданий в кэш-память равна GD. Если при сравнении тегов и желаемого адреса совпадение не было найдено, происходит промах. При промахе кэш-память формирует запросы в ОП на подгрузку информации. При этом блокируется первая ступень кэш-памяти. Ширина выборки из ОП равна WTH.

Все операции записи осуществляются с помощью:

        1. сквозной записи, то есть данные записываются одновременно в кэш и в первичную память.
        2. признаковый обмен, то есть в системе есть бит присутствия, который анализируется перед вытеснением блока.

Алгоритм  вытеснения, используемый в этой кэш-памяти – это модифицированный алгоритм LRU (вытеснение наиболее давно используемого). В кэш-памяти есть вектор замены, который содержит для каждой области n-разрядную запись. В эту запись входит информация о такой блок когда использовался.

 

При каждом доступе соответствующая  запись замены модифицируется. Так, если возникает попадание, то этот блок, становиться «наиболее использованным». Если же возникает промах, то просматривается вектор замены и из него выбирается наименее использованный за последнее время блок. При операции записи вектор не модифицируется.

В устройстве IPPE регистр адреса команды, исполняющий роль счетчика команд, подает адрес в память. В ответ приходит двоичное слово размером SIZE, которое поступает в один из N буферов команд, которые служат для предварительной выборки. Каждый буфер команд имеет размер NSIZE.

В любой момент времени из одного из этих буферов соответствующие части  его содержимого поступают в  регистр команд, который является входным фиксатором для ступени  декодирования и генерации исполнительного  адреса. Эта ступень может работать со скоростью одной команды за цикл, но работа будет замедляться, если возникнут помехи RAW или если нужные ресурсы заняты. Из нее информация поступает в очередь команд размером SBF2, которая выдает декодированные и независимые команды для выполнения на E-устройстве.

Рассмотреть систему при двухадресной адресации. Команды могут быть трех типов: регистр-регистр (2 байта(2Б)), регистр-память (4 байта(4Б)) и память-регистр (4 байта(4Б)). Команды регистр-память и память-регистр появляются реже, чем команды регистр-регистр.

Исполнительный  адрес получается при сложении смещения, выделенного из команды, с содержимым двух определенных командой общих регистров – базы и индекса. Для реализации этого сложения используется трёхвходовой сумматор и копия общих регистров (обновляющаяся E-устройством). Поскольку команды декодируются и исполняются устройствами последовательно, то помехи типа WAR или WAW, связанные с регистрами нужными IPPF устройству, не возникают. Правда имеется два источника помех типа RAW. Первая происходит, когда некоторая другая команда, выполнение которой еще не завершено в E-устройстве, изменяет содержимое регистра нужного команде в IPPF устройстве. Эта помеха обнаруживается путем добавления к каждой записи в очереди тега, указывающего, какие регистры будут изменены этой командой. Затем часть логики декодирования сравнивает все общие регистры, нужные IPPF устройству, с этими тегами. При наличии совпадения возникает задержка работы IPPF устройства до завершения исполнения этой команды. Связанная с общим регистром помеха, явно обрабатываемая IPPF устройством, возникает, когда некоторые ранее инициированные команды загрузки должны читать из памяти в эти общие регистры, которые требуются текущей команде в IPPF.  В этом случае с помощью обходного пути загрузки, обеспечивается получение IPPF устройством копии данных в тот момент, когда команда приходит из памяти до завершения операции в E-устройстве.

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