Цитата Сообщение от Ewgeny7 Посмотреть сообщение
А чем оно будет эффективней?
Если система ждет прерывания, то и обработка события начнется практически сразу после его возникновения. А если опрашивать порты "по кругу", получая от них 99,999% отказов изза несвоевременности любопытства, то в чем же прикол?
Просто поверхностная оценка. Виктор сказал, что система супер простая, ОС не предполагается и она будет исполнять какую-то одну программу с узко ограниченным набором функций. Значит все эти функции можно распланировать и выделить каждой из них свой временной слот в основном цикле.

В случае отсуствия данных просто исполнится чуть больше инструкций, чем обычно. В случае максимальной загрузки, для обработки входного потока инструкций потребуется меньше, чем с прерываниями, потому что не будет накладных расходов на обработку прерывания, сохранение и восстановления контекста итд. Или можно сказать, что максимальная возможная нагрузка увеличится.

Вот если бы была FIFO, да еще и такая, что генерируется запрос прерывания на половину загрузки, прерывания позволили бы сэкономить время за счет выгрузки накопившегося в каждом канале в пакетном режиме.

Пришла в голову еще идея. Наверное, для 580-го и подобной конструкции оптимальная. Оставить одно прерывание (без ВН59). Выходы IRQ всех 9 последовательных портов объединить по ИЛИ. Если прерывание возникает, обработчик опрашивает все 9 портов, затем выполняет обработку и отображение, затем возвращается в основной цикл. Основной цикл состоит из двух инструкций: EI, HLT. Преимущества: нету ВН59, опрос портов минимум на 1/9 по делу, в случае отсуствия данных в каналах процессор остановлен и остывает, можно спокойно злоупотреблять стеком, несмотря на использование прерывания, все поведение детерминированное.