воскресенье, 1 ноября 2009 г.

Охота за самой быстрой обработкой системного вызова

Это перевод The hunt for a faster syscall trap. Автор: Реймонд Чен.

Производительность ловушки вызова syscall (syscall trap) всегда получает пристальное внимание.

Я тут вспомнил об одной встрече, которая происходила между Intel и Microsoft более пятнадцати лет назад (к сожалению, я не был на этой встрече, так что это будет история из вторых рук).

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

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

Без малейшего промедления, один из ведущих разработчиков ядра ответил: "ускорьте обработку ошибки 'неверная инструкция'" ("speed up faulting on an invalid instruction").

Интеловская половина комнаты взорвалась смехом: "Ха, вы, инженеры Microsoft, такие забавные ребята!". И так эта встреча закончилась с милой маленькой шуткой.

После возвращения в свои лаборатории, инженеры Intel запустили профайлеры на ядро Windows и (внимание!) они обнаружили, что Windows проводит кучу времени обрабатывая исключения типа invalid instruction. Абсурдно! Неужели инженер Microsoft не шутил?

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

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

А мораль истории? Ну, я не уверен. Возможно, мораль в том, что когда вы создали что-то - вы обнаружите, что люди используют ваше творение так, как вы никогда даже не подозревали.

1 комментарий:

  1. Угу джамр в середину строки копирайта прямо на символ "o" это оригинально
    MSW

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.