Скоростной лохотрон

       

>>> Врезка "нельзя все гнать"


Почему вообще возможен разгон? А потому, что производители оборудования оставляют некоторый запас "прочности", занижая реальные показатели. Зачем это им нужно? А затем, что при любом "поточном" производстве в характеристиках элементах возникает некоторый разброс, но протестировать каждый экземпляр просто нереально. Вместе всей партии через "тестовый полигон" проходит только малая часть и на маркировку наносится наихудший результат. То есть, если на процессоре написано 1ГГц то это означает, что в данной партии нет процессоров, "падающих" уже на 1 ГГц или их долей можно пренебречь. То есть, это наименьшая частота, которая нам гарантирована. А верхняя? Никто не знает. Чем качественнее партия, тем меньше разброс, и тем меньше вероятность разгонять данный процессор.

В общем случае, чем выше тактовая частота, тем меньше вероятность успешного разгона. Допустим, компания выпускает процессоры на 1, 2, 3 и 4 ГГц. Если технологический цикл един, то 1 ГГц процессоры это некачественные 4 ГГц. Перебирая 1 ГГц процессоры один за другим, мы имеем хорошие шансы встретить качественный экземпляр, работающий на 4 ГГц или даже на более высокой тактовой частоте.

Но это в теории. На практике все сложнее. Во-первых, технологический цикл давно отлажен, производство вылизано и параметрический разброс сократился до десятков процентов, а вместе с ним сократился и навар. Во-вторых, в магазинах тоже не дураки сидят — отбирают лучше процессоры и вставляют в продаваемые ПК. Мыщъх давно заметил, что процессоры, приобретенные в родных периферийных пенатах гоняться намного хуже, чем в Питере или Москве. Впрочем, на одной тактовой частоте далеко не выедешь. Основной прирост производительности дает архитектура, объем кэша и т.д.

Да и какой смысл гнать кристалл, когда большинство задач загружают ЦП всего лишь на несколько процентов? И даже если задача загружает ЦП на все 100% вовсе не факт, что переход на более быстрый процессор эту загрузку хоть немного снизит: 100% загрузка – характерный признак грубых программистках ошибок.
Взять, например, хотя бы стандартный Pinball, входящий в штатную поставку Windows и пожирающий процессорное время как бармаглот. Причиной его неумеренного аппетита стал мелкий баг — ранние версии Pinball'а обновляли экран так часто, как это у них получалось. Процессоры тогда были медленными и в ходу был девиз, что "fps много не бывает", особенно если весь вывод идет через тормозной GDI. Разработчики предусмотрели отладочную опцию, выводящую количество fps, зарезервировав место для двух разрядов, которых как им казалось, будет предостаточно. Раймонд Чен (один из главных "мозгов" Microsoft) ради интереса посмотрел, сколько же fps выдает его Pentium-4 и с удивлением обнаружил, что экран обновляется более миллиона раз в секунду. Охренеть! Увеличение тактовой частоты увеличивало количество fps, но не снижало нагрузки на процессор, во всяком случае до тех пор, пока Раймон не ограничил его максимальное значение числом 120, после чего загрузка ЦП со 100% упала до 1% и Windows XP вышла уже с исправленной версией Pinball'а. Подробнее об этом можно прочитать на blogs.msdn.com/oldnewthing/archive/2005/12/01/498882.aspx

(к слову сказать, это лучший блог из всех, которые мыщъх встречал когда бы то ни было).



Рисунок 15 серьезная техника, а Pinball на ней все равно тормозит

Так же ведут себя и большинство остальных задач. Проблема сидит не в процессоре, а в программном коде! Долгое время народ упорно придерживался мнения, что существует всемирный заговор между Microsoft и Intel. Microsoft специально тормозит операционную систему, вставляя "циклы задержки", что вынуждает нас приобретать все более быстрые процессоры. На самом деле никакого заговора нет и до появления XP и NET (когда внутри компании всем заправляла команда Реймонда Чена), Microsoft оставалась лидером оптимизации. Сравните GNOME (оболочка для UNIX) с "Окошками", Internet Explorer с Mozilla, а Outlook Express с Thunderbird. Если Microsoft "козлина форевер", то почему же у остальных дела обстоят еще хуже? Только не надо кричать о каких-то там недокументированных особенностях, которые использует тот же Internet Explorer или о том, что это часть системы, которая постоянно болтается в памяти, в то время, как Mozilla вынуждена грузиться самостоятельно… Код Mozill'ы (и производных от нее продуктов) просто ужасен.Никакой оптимизацией там и не пахнет. Куча настроек, разбросанных по всем файлам, огромный экзек на много мегабайт. А теперь возьмем Internet Explorer. Все настройки в одном месте, крохотный исполняемый файл и библиотеки, загружаемые уже после того, как главное окно бразуера стало доступным.

Возникает стандартная ситуация: криво спроектированная программа будет тормозить даже на мощной машине, а нормальной — и минимальной конфигурации вполне хватает. Какой из этого выход? Использовать правильные программы!



Рисунок 16 дави на газ — все будет джаз, сегодня едешь ты в последний раз!


Содержание раздела