Стандартные числовые атрибуты (СЧА)
В процессе моделирования может понадобиться текущая информация о состоянии устройств, очередей и т.д. Указанной текущей информацией являются некоторые признаки этих объектов. Их называют СТАНДАРТНЫМИ ЧИСЛОВЫМИ АТРИБУТАМИ.
СЧА для приборов
Fj равняется 0, если j-ый прибор не занят и равняется 1, если j-ый прибор занят.
FCj-содержит значение равное числу занятий прибора.
FRj-нагрузка прибора, т.е. сколько раз было занято устройство моделирования в процессе моделирования.
FTj-целая часть значения среднего времени задержки транзакта на приборе.
СЧА для многоканальных устройств.
Rj-емкость незаполненной части многоканального устройства.
Sj-емкость заполненной части многоканального устройства.
СЧА для очереди.
Qj-характеризует текущее значение длины очереди.
QMj-максимальное значение очереди.
Если имеется следующая запись:
A | SEIZE | ................ |
B | GENERETE | ................ |
То W$A-показывает сколько транзактов находится сейчас в этом блоке;
N$B-значение счетчика входов для блока В.
Лекция № 5
Пример 5.1: Пример использования стандартного числового атрибута (сокращенно СЧА) .
Будем считать, что команда от ОП к ЦП осуществляет переход за некоторое время,причем это время зависит от текущего состояния БП(от количества команд в БП).Это можно сделать за счет атрибута.
B | STORAGE | |
BUFF | FUNCTION | S$B,D4 |
0,1/2,3/7,5,15,6
EXPON | FUNCTION | RN1,C24 |
0,0/.1,.104/.2,.222/..../.9998,8
* В блоке GENERATE время появления следующего транзакта определяется
* умножением 12 на значение функции EXPON (поскольку на месте операнда B
* стоит значение функции). Результат округляется.
GENERATE | 12,FN$EXPON | |
ENTER | B | |
ADVANCE | FN$BUFF,FN$EXPON | |
SEIZE | C | |
LEAVE | B |
* Этот блок определяет время обслуживания в ЦП. Время задержки транзакта
* будет определяться умножением 15 на значение функции EXPON.
ADVANCE | 15,FN$EXPON | ||
RELEASE | C | ||
FIN | TERMINATE | ||
START |
В блоке GENERATE параметр 12 означает значение 1/l экспоненциального распределения, то есть математическое ожидание .
Транзакт встает в очередь к устройству, если оно занято. Пусть,если БП заполнено,то транзакт теряется. Для этого необходимо вставить блок :
TRANSFER BOTH,,FIN - делается попытка перейти в следующий по расположению блок, если блок занят, то осуществляется переход на блок FIN.
Добавим также ещё один блок:
PRIORITY 1
PRIORITY A - задает приоритет транзакта, проходящего через этот блок, и в цепи текущих событий транзакт становится на последнее место среди транзактов с тем же приоритетом.
С учетом вставляемых блоков программа примет вид :
B | STORAGE | |
BUFF | FUNCTION | S$B,D4 |
0,1/2,3/7,5,15,6
EXPON | FUNCTION | RN1,C24 |
0,0/.1,.104/.2,.222/..../.9998,8
GENERATE | 12,FN$EXPON | ||
PRIORITY | |||
TRANSFER | BOTH,,FIN | ||
ENTER | B | ||
ADVANCE | FN$BUFF,FN$EXPON | ||
SEIZE | C | ||
LEAVE | B | ||
ADVANCE | 15,FN$EXPON | ||
RELEASE | C | ||
FIN | TERMINATE |
Работа GENERATE :
GENERATE генерирует очередной транзакт. Как только этот транзакт покинет этот блок, GENERATE сразу же планирует в какой момент появится следующий транзакт. Этот будущий транзакт существует в цепи будущих событий и в нашей программе имеет приоритет 0. А транзакт, который вышел из GENERATE получает приоритет 1. Этот прием позволяет избежать ситуации, когда поступающий транзакт не может занять устройство(транзакт становится в очередь), поскольку его еще не освободил другой транзакт, который должен освободить это устройство в тот же такт машинного времени.
Дата добавления: 2016-11-04; просмотров: 1721;