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





Ответить с цитированием