Охота за скоростным обработчиком системного прерывания.


Перевод с блога The Old New Thing. Оригинал здесь.

Производительности обработчика системного прерывания уделяется особое внимание.

Я вспомнил совещание между сотрудниками Интел и Микрософт, которое имело место более 15 лет назад. (К сожалению, что меня там не было, так что эта история не из первых рук.)

Так как Микрософт является одним из крупнейших клиентов Интел’а, то их представители часто наведываются в Микрософт, чтобы показать, на что способны их новейшие процессоры, попытаться убедить команду разработчиков ядра использовать новые возможности процессоров, а также услышать мнения, какие еще возможности были бы наиболее полезными.

На этом собрании представитель Интел спросил: "Если бы вы могли попросить ускорить только одну вещь, о чем бы вы попросили?"

Один из ведущих разработчиков ядра без колебаний ответил: "Ускорьте обработку исключительной ситуации, возникающую при недопустимой инструкции"

Интеловская половина комнаты засмеялась. "Ну вы тут в Микрософте и приколисты!" Таким образом, собрание завершилось веселой шуткой.

Когда же инженеры Интела вренулись в свои лаборатории и запустили профайлеры для ядра Windows, они обнаружили, что Windows тратит много времени, обрабатывая исключения, возникающие при недопустимых инструкциях. Абсурд! Неужели инженер из Микрософт не шутил после всего этого?

Нет, не шутил.

Так получилось, что на процессоре 80386 в то время, наиболее быстрым способом переключиться из режима виртуального 86-го в режим ядра, являлось выполнение некорректной инструкции! Следовательно Windows/386 использовала некорректную инструкцию, в качестве ловушки системного прерывания.

Какова мораль этой истории? Трудно сказать… Возможно, она заключается в том, что если вы создаете что-либо, вы всегда можете найти людей, которые используют это таким образом, о котором вы даже не догадывались.

Реклама
Запись опубликована в рубрике оптимизация. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s