Простая дискретная библиотека моделирования событий (С++) для планирования процессов/задач?

Простой вопрос: я построил симулятор квазипроцессора, который использует граф приоритетов, определяет приоритеты (и «готовые» инструкции), планирует задачи на доступных функциональных модулях и т. д. В значительной степени очень простой симулятор.

Но я понял, что должен был построить его поверх механизма DES, поскольку у меня нет возможности (кроме установки флага и проверки каждого узла на каждом «такте») для того, чтобы сказать что-то вроде «За 10 циклов сделайте это» ( т.е. подача сигналов в заранее определенное время и обработка событий, которые должны произойти в будущем или когда будут выполнены заранее определенные критерии).

Очевидно, я мог бы реализовать это сам; построил класс «событие», поместил их в очередь и в конце (или начале) каждого цикла проверял очередь и смотрел, что там происходит, но я полагаю, что нет смысла изобретать велосипед.

Таким образом, сложные сетевые симуляторы, очевидно, являются излишними. Мне не нужно причудливое моделирование, очереди или что-то в этом роде. Все, что мне нужно, это встроенные часы и возможность устанавливать события, поднимать флаги, когда что-то происходит, и т. д., как я описал выше.

Бесплатное ПО и C++ было бы здорово.

У кого-нибудь есть идеи? (Самое близкое, к чему я подошел — благодаря некоторым другим, несколько связанным вопросам — это то, что называется SIMLIB.)

Большое спасибо!


person user770901    schedule 01.07.2012    source источник
comment
Если вы уже реализовали планировщик задач, не могли бы вы сделать события таймера еще одной задачей?   -  person jxh    schedule 01.07.2012
comment
+1 за попытку избежать изобретения колеса. Из вашего вопроса видно, что вам нужны некоторые дополнительные функции от движка DES (иначе это не что иное, как цикл и отсортированный список событий, поэтому использование любой конкретной библиотеки кажется излишеством) так что еще нужно? Масштабируемость (параллельное моделирование)? Поддержка случайных распределений/ГСЧ? Предпочитаете ли вы конкретное мировоззрение (например, см. informs-sim.org/wsc10papers/019. pdf)?   -  person Roland Ewald    schedule 02.07.2012
comment
Извините за задержку с ответом! Задачи планировщика не написаны в общем виде. События на основе таймера потребуют серьезной доработки, и весь смысл в том, чтобы не изобретать велосипед.   -  person user770901    schedule 22.08.2012


Ответы (2)


Вы можете попробовать Открытые виртуальные платформы (OVP). Кажется, он предоставляет тип симулятора, который вы ищете.

person Arani    schedule 12.07.2012

Попробуйте SystemC, это бесплатная библиотека. Однако я бы предупредил, что это не «открытый исходный код», поскольку лицензия не совместима с FOSS.

person Giovanni Funchal    schedule 12.07.2012
comment
Да, нет, спасибо. Я смотрел на SystemC для других вещей, а именно для проектирования FPGA, и это тоже не помогло. Весь проект кажется беспорядком. Я ценю ваше время, чтобы ответить, но я не заинтересован в этом. В любом случае, это безумно перебор для того, что я хочу сделать. Настройка того, что равнозначно поведенческому описанию моей системы, не имеет большого смысла. - person user770901; 22.08.2012