ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
135285 Топик полностью
kpu (16.10.2008 15:50, просмотров: 81) ответил =AlexD= на Понятно, если мы ёрзаем туда/сюда в пределах одного окна, то всё нормально, как только переключаем задачу, выясняется, что нам нужно сохранить 128 регистров. :-J Кстати, тут возможна аппаратная оптимизация.
Не одного окна, а в пределах всего рег.файла (16 уровней). Про переключение, а по сути сначала про прерывания оптимизация есть. По сути, прерывание не имеет параметров и сделано так, что его обработчик может считать все 128 свободными, проц. автоматом выбирет новую область для скидывания и обработчик может раскручиватся не повредив предидущих контекстов. Это справедливо и для следующего (уже вложенного) прерывания и его обработчика и т.д. Обратно цепочка колов и интов раскручивается тоже автоматом по (ret,rti). С этой точки зрения, цепочка линукса прерывание->систем<->юзер укладывается в такие последовательности, а переключение на другой процесс (раз на 10к-100к инструкций) ДА требует оптимизированного флуша, НО новый процесс снова имеет 128 свободных регистров И автоматически (переключение кончается по rti ;) получит свои сохраненные регистра (да и весь контекст впридачу).