СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №9/2013

ПРОЕКТИРОВАНИЕ И МОДЕЛИРОВАНИЕ 61 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2013 Листинг 1 // Входной параметр: n – номер источника события (система, процессор, АЦП, фон) // evt[n] –календарь событий (массив событий) // cnvh, cnvl – номера двух источников с ближайшими событиями public static void cnv_check (int n){ if (cnvh == n) { // Если подвинули время следующего по порядку события, // сбрасываем конвейер, чтобы не нарушить причинно-следственные связи cnvh = -1; cnvl = -1; } else { if (cnvh >=0) { if (evt[n] < evt[cnvh]){ cnvl = cnvh; // Сдвигаем очередь cnvh = n; } else { if (cnvl >= 0){ if (evt[n] < evt[cnvl]) cnvl = n; } } } } } public static void main(String[] args){ // инициализация модели // ------- // Моделирование системы while (t < tmax){ // imit_sys(int i) – процедура обработки события от источника n if (cnvh >= 0) imit_sys(cnvh); // Пересчитываем следующий шаг if (cnvh >=0) t =evt[cnvh]; else { // Если конвейер не установлен cnvh = 0; cnvl = 1; // Ищем два наиболее ранних события for (int i = 1; i <4; i++){ if (evt[i] < evt[cnvh]){ cnvl = cnvh; cnvh =i; } else if (evt[i] < evt[cnvl]) cnvl = i; } t = evt[cnvh]; } } } ной заявки будем считать постоянной величиной, равной t (мкс). В процессе работы процессор выби- рает заявки из буферов измеритель- ных и информационных заявок. Если в буфере приоритетных заявок появ- ляется элемент, то обслуживание теку- щей неприоритетной заявки приоста- навливается до тех пор, пока не осво- бодится буфер приоритетных заявок. С точки зрения моделирования, объ- ект «процессор» характеризуется набо- ром состояний: «занят приоритетной заявкой», «занят неприоритетной заяв- кой», «свободен» и т.д. Входными пара- метрами процессора являются тип поступившей заявки, трудоёмкость и время поступления. Исходя из опи- сания функционирования процес- сора, составлен алгоритм его рабо- ты, показанный в виде блок-схемы на рисунке 2. Одним из важных вопросов имитаци- онного моделирования является выбор модельного времени [4]. Ряд событий системы наступает случайным обра- зом, следовательно, целесообразно применять событийно-ориентирован- ный подход, но тогда возможно нару- шение причинно-следственных свя- зей (causality error) [4]. Суть проблемы заключается в том, что при параллель- ном моделировании событий может возникнуть ситуация, когда в кален- дарь ставится событие с более ран- ним моментом начала, а моделирую- щая система на данном шаге сделала выбор в пользу более позднего собы- тия. Таким образом, происходит нару- шение причинно-следственных связей. Для управления потоком событий моделируемая система должна быть снабжена механизмом управления модельными событиями. При этом в качестве единицы модельного вре- мени целесообразно выбрать величи- ну, наиболее близкую к длительности изменения состояния элементов систе- мы. Для моделирования высокопроиз- водительных информационно-измери- тельных систем целесообразно выби- рать микросекунду. На каждомшаге моделирования тре- буется выбирать из календаря собы- тие, которое наступит раньше осталь- ных, что снижает производительность системы моделирования. Решением может стать конвейер операций, на который будут поступать несколько ближайших событий в порядке их сле- дования. Новые события, вычисленные на текущемшаге, будут устанавливаться в конвейер в том случае, если они насту- пят раньше, чем установленное собы- тие. Описание конвейера представле- но в листинге 1. Алгоритм управления модельными событиями показан на рисунке 3. Он объединяет все описанные элементы моделируемой системы и фактиче- © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy