Цитата Сообщение от bigral Посмотреть сообщение
Нет смысла\интереса в навешивании мега-куска силикона на котором можно было бы весь ibm/370 завести только ради виртуализации спектрума.
Какой-то кусок силикона всё равно понадобится, т.к. при переключении задачи надо считывать текущее состояние регистров процессора и куда-то сохранять.

0. Работает задача T1, пришло время переключиться на T2.
1. Подсунули процессору другую (временную) память, в которой по адресу #0066 (обработчик NMI) лежит процедура сохранения всех регистров в известную область память (пусть она, скажем, кидает всё на стек).
2. Сгенерировали NMI
3. По состоянию M1 и шине адреса отследили когда процедура выполнилась до конца, переложили все значения регистров в удобное место.
4. Выполняем процедуру, восстанавливающую значение регистров для продолжения выполнения задачи T2.
5. Подсовываем процессору память процесса T2.
Всё, переключились.

В п.1 есть вероятность, что указатель стека смотрит на адреса, где находится сама процедура обработки NMI, и придется всё чуть усложнить, подсовывая процессору по M1 код процедуры, не храня его в ОЗУ. В принципе, можно и запись в память точно так же перехватывать, ничего не реальности не сохраняя.

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