Оптимизация для pentium процессора уменьшение длины кода

Содержание

Оптимизация Windows — мифы и реальность (часть 2)

Что же такое оптимизация?

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

Толковый словарь дает следующие определения слова «оптимизация»:

  1. Оптимизация — нахождение наибольшего или наименьшего значения какой-либо функции.
  2. Оптимизация — выбор наилучшего (оптимального) варианта из множества возможных.

Первое определение сразу отбрасываем, поскольку речь идет не о математических функциях. На втором стоит остановиться подробнее. Вариантов изменения настроек ОС действительно множество, сценариев использования компьютеров тоже множество. Как определить, какой из вариантов настроек оптимален? И для чего он оптимален?

Еще один термин — скорость работы системы. Он также весьма многогранен.

С одной стороны, операционная система имеет множество функций, скорость выполнения которых может иметь весьма существенное значение, а может практически не оказывать влияния на другие процессы. Причем какая-то функция может быть важной для одного класса задач, но практически не влиять на работу задач другого класса, и наоборот. Например, скорость работы диспетчера памяти может заметно влиять на работу современных игр, но не сказываться на работе обозревателей интернета или архиватора. Скорость дисковых операций имеет большое значение при обработке видеофайлов или рисунков большого размера, но практически не влияет на набор и редактирование текста, фоновую проверку правописания в Word и на скорость пересчета таблиц Excel.

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

Проведем небольшой эксперимент: запустим какую-нибудь программу, активно использующую процессор, например архиватор, и посмотрим в диспетчере задач, какую часть процессорного времени она будет использовать (для чистоты эксперимента желательно взять компьютер с одним одноядерным процессором без гиперпоточности либо отключить гиперпоточность и многоядерность).

Скорее всего программа будет использовать 97-99 процентов вычислительной мощности процессора. На первый взгляд все нормально: на свои нужды Windows использует считанные единицы процентов или даже меньше одного процента.

Немного усложним эксперимент и включим в диспетчере задач показ времени ядра.

Картина становится не такой радужной: оказывается, ядро системы работает и отнимает заметную долю ресурсов процессора — в данном случае около 10-20 процентов.

Казалось бы, вот он, резерв повышения производительности! Ведь очевидно, что, оптимизировав работу системы, можно увеличить скорость работы программы чуть ли не на те же самые 10-20 процентов! В идеале, конечно.

На самом деле этот вывод оказывается ложным. Та доля времени, которая отдается ядру, почти целиком используется опять же для нужд того самого архиватора, в частности на операции чтения с диска и записи на него, ведь эти операции выполняет не сама программа, а ОС по указаниям программы. Так что хоть в это «красное» время и исполняется код ядра системы, этот код обслуживает запросы архиватора.

Скорее всего, в этом месте у читателя сходу возникнет полувозражение-полувопрос. Но ведь в это время все же работает код ядра — наверняка можно оптимизировать его работу так, чтобы оно требовало меньше процессорного времени? Что-нибудь подкрутить, что-нибудь подстроить, что-то ненужное отключить.

Увы, сколько-нибудь заметных улучшений добиться не удастся. Прежде всего потому, что львиная доля этого «красного» времени ядра уходит на работу с железом. Проверить это проще простого: возьмите носитель с невысокой скоростью обмена, скажем, переключив контроллер диска в режим PIO. Автор не рекомендует проводить такие эксперименты на основном жестком диске из-за возможности заметного снижения скорости работы. Поэтому для эксперимента был выбран контроллер PCMCIA с модулем флеш-памяти, работающий именно в режиме программного ввода-вывода.

Как видим, доля времени ядра значительно увеличилась, соответственно, скорость работы архиватора сильно упала. Произошло это потому, что почти все ресурсы процессора тратятся на работу с медленным устройством.

Так что первоначальный вывод оказался правильным: на свои нужды ОС тратит лишь небольшую долю ресурсов современного компьютера. Впрочем, внимательный человек давно и сам мог бы сделать такой вывод, если бы вдумался в результаты сравнения производительности последних версий Windows — они различаются буквально на единицы процентов.

Есть ли в системе резервы для ускорения работы?

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

Отчасти, конечно, это верно. Вопрос заключается только в том, насколько велико это ухудшение и ухудшение ли это вообще.

С одной стороны, на отображение улучшенных элементов интерфейса действительно тратится больше ресурсов процессора и памяти. Хотя и не всегда: например, включенный (в большинстве случаев) по умолчанию аэро-интерфейс в Висте и Windows 7 снижает нагрузку на процессор за счет переноса значительной части работы по формированию изображения на видеоадаптер. С другой стороны — и ресурсов этих стало гораздо больше, так что доля, «отъедаемая» ОС, практически не изменилась. С третьей… но об этом чуть позже.

Итак, ОС тратит на свои нужды некоторую долю ресурсов, в первую очередь это процессор и память. Обсуждение использования памяти в эту статью точно не влезет, так что отложим его на будущее и остановимся на процессоре. Как можно увидеть из приведенных выше рисунков, собственно ОС на свои собственные нужды в этом примере тратит единицы процентов.

Вернемся в прошлое. Незадолго до выхода Windows XP Майкл Фортин, долгое время руководивший в «Майкрософт» группой, отвечавшей за производительность системы, составил для бета-тестеров весьма любопытный документ о том, как его группа работала и какие результаты получила (выжимки из него можно найти в http://forum.ixbt.com/topic.cgi? >Из этого следует достаточно очевидный вывод, что сколько-нибудь заметного увеличения скорости работы при помощи твикинга и «оптимизаций» получить не удастся.

Предположим, что система отнимает на свои нужды пять процентов времени процессора (обычно эта величина все же меньше), значит, работающему в это время процессу достается 95%. Допустим, мы улучшим систему вдвое (конечно, это фантастика, но давайте все-таки предположим такую возможность), так что она отнимет только 2,5 процента времени ЦП, а приложению достанется уже 97,5 процента. Скорость работы приложения увеличится на (97,5−95)⁄95=2,6 процента, то есть прирост получится отнюдь не фантастическим и практически незаметным на глаз.

Так что утверждать, что какие-то мелкие изменения способны увеличить скорость работы на десятки процентов, может только весьма наивный или сверх меры оптимистичный человек.

Но ведь, опять же скажете вы, в интернете можно найти кучу советов по улучшению тех или иных характеристик — что они дают? Как вы, уже, наверное, поняли, у меня не возникло ни малейшего желания заниматься экспериментальным опровержением всех этих идей: пусть их доказывает тот, кто делает такие утверждения. Но вопрос Майклу Фортину я все же задал, ведь у его группы ресурсов намного больше, чем у любого человека. Ответ звучал так: «Я опросил часть нашей команды [напомню, она называется Windows performance team, то есть группа производительности Windows] и сам немного удивился. Оказалось, большинство из них обсуждало подобные рекомендации и коллективный вывод был таков: много шума из ничего. За одним-единственным исключением: совет удалять программы, которые не используются, — полезен».

Теперь о третьей стороне «свистелок»

Если нельзя добиться сколько-нибудь значительного прироста скорости работы ОС, то что же остается? Один из путей — увеличить производительность компьютера. Это самый надежный, самый дорогой, но не всегда эффективный метод. Помните старую шутку: замените в своем компьютере Pentium 100 на Pentium 200, и он начнет простаивать вдвое быстрее? Во многих случаях повышение скорости компьютера давно уже не увеличивает скорость выполнения работы человеком, сидящим за этим компьютером. Невозможно набрать текст в редакторе или ввести числа в электронную таблицу быстрее только из-за того, что в компьютере прибавилось оперативной памяти или у нового процессора выше частота.

Конечно, какие-то задачи могут эффективно использовать всё более мощные компьютеры, но отнюдь не все. И вот тут на первый план выходит совсем другой критерий — эффективность и производительность труда человека, сидящего за компьютером. И на взгляд автора, оптимизировать следует именно эту сторону, то есть не скорость работы компьютера, а скорость работы за компьютером. В конце концов, ведь компьютер для человека, а не наоборот.

Возьмем, к примеру, ту характеристику, которую можно реально улучшить некоторыми приемами: время загрузки. Если вы программист, пишете драйвер низкого уровня и при его отладке вам приходится перезагружаться каждые пять-десять минут — конечно, время загрузки для вас критично. Но для обычного пользователя, который загружает компьютер один раз в день, утром, этот параметр уже далеко не так важен. А если используется гибернация и компьютер перезагружается раз в пару недель, то время загрузки уже почти не имеет значения.

Проведем простенький расчет: допустим, вам удалось сократить время загрузки с одной минуты до 30 секунд. Казалось бы, результат весьма неплох. Но перед этим вы полдня провели, читая разные форумы, сравнивая и анализируя полученную информацию, решая, что именно следует предпринять. Итого для экономии 30 секунд на каждой перезагрузке потрачено 4 часа (14400 секунд). Нетрудно подсчитать, что эти затраты оправдаются через 480 перезагрузок, и только после этого (при загрузке раз в день — примерно через полтора года) вы начнете получать выгоду. Причем не исключено, что за эти полтора года вы купите новый компьютер или переустановите систему, и затраты на «оптимизацию» окажутся просто впустую потраченным временем. В лучшем случае вы получите косвенную выгоду за счет дополнительно приобретенных знаний, но право же, эти знания можно было приобрести и другим, более легким путем.

Но возможность увеличить скорость загрузки никто и не отрицал. А вот оценить полезный эффект от изменения настроек не удалось, насколько известно автору, еще никому. Впрочем, можно привести наглядный пример. Сравнительно недавно в форуме (и еще минимум в двух других) с целью «обсуждения системных служб Windows 7, их оптимизации и методов контроля изменения производительности (скорость загрузки ОС и т. д.) при оптимизации» была создана тема. И хотя участнику сразу говорили (на разных форумах), что проку от этого нет, он, однако, не поверил и решил перепроверить всё сам. В итоге появилась на свет статья, в которой человек после личной проверки пришел к тем же самым результатам. Остается надеяться, что гонорар за статью хотя бы частично окупил потраченное время.

И в заключение приведем несколько критериев, по которым можно определить качество работы составителей многочисленных советов по оптимизации.

Если вы видите совет установить некое значение в параметре SecondLevelDataCache, вспомните, что этот параметр перестал использоваться начиная с Win2000 SP1. Утверждения, что параметр DisablePagingExecutive увеличивает скорость работы системы, неверны: он увеличивает скорость отклика системы за счет некоторого снижения производительности в целом. Рекомендация установить число ядер в настройках Msconfig для ускорения загрузки в лучшем случае бесполезна, ведь система и так по умолчанию использует все ядра. Зато уже были примеры, когда человек, сменив двухъядерный процессор на четырехъядерный и забыв восстановить исходное значение настройки, недоумевал, куда же делись два добавленных ядра.

Заключение

Заниматься изучением и внедрением в жизнь различных советов по оптимизации Windows — значит в лучшем случае тратить время впустую, а в худшем — заботливо раскладывать на будущее грабли для себя, любимого.

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

Оптимизация процессора Intel

13.08.2015, 13:40

Температура процессора Intel i3 4170
Здравствуйте, не подскажите температура 45C для процессора нормальная. Просто при запуске данная.

Разгон процессора intel celeon
Здравствуйте! Я хотел бы разогнать свой проц! Есть ли возможность это сделать не открывая корпус.

Заявленная температура процессора от Intel
Вопрос такой у меня возник спонтанно, в связи с жалобами многих владельцев процессоров Intel 7й.

Топовые Intel процессора подешевели?
Ух. Смотрите парни, что сейчас творится на computeruniverse :) i7-8700k — 25.5 рубля. i9-9900k.

Температуры Процессора Intel P4 3.00 ггц
У меня Intel P4 3.00 ггц,presscot,s 478.Без нагрузки температура 47-50 градусов,а под нагрузкой(в.

Как уменьшить нагрузку на ЦП: простые, но эффективные методы решения проблемы

Когда ПК начинает тормозить, а операции, раньше выполняемые моментально, теперь требуют много времени, высока вероятность того, что центральный процессор излишне загружен. Настоящая статья написала для того, чтобы помочь пользователям разобраться, как уменьшить нагрузку на ЦП.

Почему процессор перегружен?

При высоком уровне загрузки CPU производительность ПК падает. Как следствие, работа пользователя становится некомфортной, а включение и выключение приложений заметно замедляется. Причем, работая на пределе, компьютер может внезапно выключиться.

  • На ПК запущено слишком много приложений одновременно.
  • Зависла одна или несколько программ.
  • Заражение операционной системы вирусами.
  • Неподходящие или устаревшие драйвера.
  • Недостаточная мощность системы охлаждения.

Если не решить эти проблемы в скором времени, а процессор будет продолжать свою работу на уровне загрузки в 100%, это может привести к выходу оборудования из строя. Проще всего обратиться к компьютерному мастеру, чтобы он «вылечил» вашу технику, но часто помогает и несложная самостоятельна настройка или ремонт.

Как уменьшить нагрузку на ЦП Windows 7?

Итак, первый способ, который поможет справиться с проблемой. Закройте приложения, в которых вы не работаете в данный момент. Особое внимание стоит уделить графическим и видео-редакторам, браузерам с флэш-роликами и аудиопроигрывателями. Из 3D-игр тоже желательно выйти, дело в том, что подобные программы не всегда отключают свои функции при сворачивании, а продолжают работать, загружая CPU, ненужными для пользователя операциями.

Перезагрузите компьютер или даже выключите его на 10-20 минут, если он непрерывно работает уже несколько дней. Отдых нужен не только людям, но и технике.

Как уменьшить нагрузку на ЦП, если предыдущие рекомендации не помогли? Попробуйте проверить компьютер на вирусы. Желательно провести полное сканирование и использовать для этой операции live-дистрибутивы антивирусных приложений, например, kureit. После сканирования удалите все зараженные файлы.

Проверьте жесткий диск на наличие ошибок. В Windows это можно сделать при помощи специальных средств. Проще всего открыть командную строку и ввести туда chddsk C: /f /r.

Диспетчер задач

Как уменьшить нагрузку на ЦП при помощи диспетчера задач? Нажмите на клавиатуре сочетание ctrl + shift + esc. На экране отобразится диспетчер задач. Перейдите на вкладку «Процессы». Здесь напротив каждого приложения будет показана информация о том, сколько он потребляет оперативной памяти, как сильно загружает центральный процессор, и еще несколько столбцов.

Для завершения особо требовательного или зависшего приложения щелкните по нему левой кнопкой мыши, а затем ответьте утвердительно на вопрос, стоит ли закрыть программу. Если каких-то процессов в диспетчере задач не видно, значит, он запущен в режиме пользователя, а не администратора. Переместите курсор на кнопку «Показать процессы всех пользователей» и нажмите на левую кнопку мыши.

Как уменьшить нагрузку на ЦП Windows 10? Выполните те же самые рекомендации. Единственное отличие – после запуска диспетчера нажмите на пункт more details.

Нестабильная работа компьютерных игр

Многие любят проводить свободное время, играя в компьютерные игры. Однако сегодня большинство 3D-приложений требуют мощного железа. Из-за этого устаревший CPU почти всегда загружен в играх на 100 %. Самый простой и действенный метод устранения проблемы в этом случае – апгрейд компьютера. Если же апгрейд по каким-либо причинам невозможен, обратите внимание на самые популярные советы о том, как уменьшить нагрузку ЦП в играх:

  • Отключите сглаживание, SSAO и снизьте уровень качества графики в настройках 3D-приложения.
  • Выключите звук в самой игре.
  • Установите режим высокой производительности в утилите настройки драйверов видеоплаты.
  • Отключите интернет.
  • Закройте антивирусные экраны, но помните, что это снизит безопасность, а компьютерная игра может и не стоить такого риска.

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

Как повысить производительность процессора

  • Компьютер, процессор, начальные навыки по настройке BIOS

Операция по увеличению производительности процессора свыше заявленной производителем называется «разгоном». Заниматься им следует с осторожностью, поскольку разгон процессора приводит к увеличению тепловыделения и к повышению нагрузки на многие системы компьютера. Перед началом разгона убедитесь, что вентиляторы охлаждения работают нормально и обеспечивают нужный уровень охлаждения. Если температура процессора в штатном режиме превышает 50 градусов, разгонять его без модернизации системы охлаждения противопоказано.

В большинстве случаев не следует повышать частоту процессора более, чем на 20 процентов от номинальной.

Илон Маск рекомендует:  Iis о проверке подлинности

Оптимизация под Pentium 4 HT своими руками?

Jimbo Jones
Pentium 4 HT very high

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

на торрентах с пятницы уже, ты видимо проспал )))

2 Gameslove: где ты откопал материнку с pci-e 16x для видюхи и с сокетом под 4 пень? оО я в живую ни разу таких не видел.
и вообще, с таким процем, твоя видюха показывает свои способности не больше, чем на 50-60%.

оптимизация заключается в модифицировании geomod 2.0 «под тебя», так сказать. ничего у тебя не выйдет без распаковщика файлов и знаний с++, с, ассемблера.

2 Gameslove: где ты откопал материнку с pci-e 16x для видюхи и с сокетом под 4 пень? оО я в живую ни разу таких не видел.
и вообще, с таким процем, твоя видюха показывает свои способности не больше, чем на 50-60%.

Из новых игр всё идёт нормально на максимальных настройках, 1280×1024, пока эта игра и GTA 4 клинарит. Лучше бы физику они загрузили бы на GPU.

2 Jimbo Jones: ууу, ясно все.
я говорил про «в живую».

2 Gameslove: да ладно? 10 фпс это нормально? крайсис идет на макс? не врите пожалуйста, уж если не как модеру, то хотя бы как человеку разбирающемся в железе, программировании и всех производных, ок? ни за что не поверю, что все последнее идет нормально на максимуме при таком. грм, проце. пальцы не хотят такое писать.

Приводим данные и код в порядок: оптимизация и память, часть 1

Представлено: Alexey K., опубликовано: 25 марта 2020 г.

В этой серии из двух статей говорится о том, как структура данных и памяти влияет на производительность. Предлагаются определенные действия для повышения производительности программного обеспечения. Даже простейшие действия, показанные в этих статьях, позволят добиться существенного прироста производительности. Многие статьи, посвященные оптимизации производительности программ, рассматривают распараллеливание нагрузки в следующих областях: распределенная память (например, MPI), общая память или набор команд SIMD (векторизация), но на самом деле распараллеливание необходимо применять во всех трех областях. Эти элементы очень важны, но память также важна, а про нее часто забывают. Изменения архитектуры программ и применение параллельной обработки влияют на память и на производительность.

Эти статьи предназначены для разработчиков среднего уровня. Предполагается, что читатель стремится оптимизировать производительность программ с помощью распространенных возможностей программирования на языках C++ и Fortran*. Использование ассемблера и встроенных функций мы оставляем более опытным пользователям. Автор рекомендует желающим получить более подробные материалы, чтобы ознакомиться с архитектурой наборов инструкций процессоров и с многочисленными исследовательскими журналами, в которых публикуются великолепные статьи по анализу и проектированию структур данных.

При приведении данных и кода в порядок используется два базовых принципа: нужно свести к минимуму перемещение данных и размещать данные как можно ближе к той области, в которой они будут использоваться. Когда данные попадают в регистр процессора (или как можно ближе к регистру), следует использовать их наиболее эффективно перед выведением из памяти или при отдалении от исполняемых блоков процессора.

Размещение данных

Рассмотрим три уровня, на которых могут находиться данные. Ближайшее место к исполняемым блокам — регистры процессора. Данные в регистрах можно обрабатывать: применять к ним умножение и сложение, использовать их в сравнениях и логических операциях. В многоядерном процессоре у каждого ядра обычно есть собственный кэш первого уровня (L1). Можно очень быстро перемещать данные из кэша первого уровня в регистр. Может быть несколько уровней кэша, но обычно кэш последнего уровня (LLC) является общим для всех ядер процессора. Устройство промежуточных уровней кэша различается для разных моделей процессоров; эти уровни могут быть как общими для всех ядер, так и отдельными для каждого ядра. На платформах Intel поддерживается согласованная работа кэша в пределах одной платформы (даже при наличии нескольких процессоров). Перемещение данных из кэша в регистр осуществляется быстрее, чем получение данных из основной памяти.

Схематическое расположение данных, близость к регистрам процессора и относительное время доступа показаны на рис. 1. Чем ближе блок находится к регистру, тем быстрее перемещение и тем короче задержка при поступлении данных в регистр для выполнения. Кэш — самая быстрая память с наименьшими задержками. Следующая по скорости — основная память. Может быть несколько уровней памяти, хотя о многоуровневом устройстве памяти мы поговорим во второй части этой статьи. Если страницы памяти размещаются в виртуальной памяти файла подкачки на жестком диске или твердотельном накопителе, скорость существенно снижается. Традиционная архитектура MPI с отправкой и получением данных по сети (Ethernet, Infiniband и т. д.) обладает большими задержками, чем получение данных в локальной системе. Скорость при перемещении данных из удаленной системы с доступом по MPI может различаться в зависимости от используемого способа подключения: Ethernet, Infiniband, Intel ® True Scale или Intel ® Omni Scale.

Рисунок 1. Скорость доступа к памяти, относительные задержки при доступе к данным

Ближайшее место к исполняемым блокам — регистры процессора. В силу количества регистров и задержек, связанных с загрузкой данных в регистры, а также из-за размера очереди операций с памятью невозможно использовать каждое значение в регистрах однократно и подавать данные достаточно быстро, чтобы все исполняемые блоки были полностью заняты. Если данные находятся близко к исполняемому блоку, желательно многократно использовать эти данные перед тем, как они будут вытеснены из кэша или удалены из регистра. Некоторые переменные существуют только в виде переменных регистров и никогда не хранятся в основной памяти. Компилятор превосходно распознает, когда лучше использовать переменную только в регистре, поэтому не рекомендуется использовать ключевое слово register в C/C++. Компиляторы сами достаточно хорошо распознают возможности оптимизации и могут игнорировать ключевое слово register .

Разработчик должен проанализировать код, понять, как используются данные и сколько времени они должны существовать. Спросите себя: «Нужно ли создавать временную переменную?», «Нужно ли создавать временный массив?», «Нужно ли хранить столько временных переменных?». В процессе повышения производительности нужно собрать метрику производительности и сосредоточить усилия на приближении данных к модулям или ветвям кода, в которых на выполнение кода тратится значительное время. В число популярных программ для получения данных производительности входит Intel ® VTune™ Amplifier XE, gprof и Tau*.

Использование и многократное использование данных

Для понимания этого этапа отлично подходит пример с умножением матриц. Умножение матриц A = A + B*C для трех квадратных матриц n х n можно представить тремя простыми вложенными циклами for , как показано ниже.

Основная проблема с таким порядком заключается в том, что он содержит операцию приведения матрицы (строки 138 и 139 ). Левая часть строки 139 — одиночное значение. Компилятор частично развернет цикл в строке 138 , чтобы в наибольшей степени заполнить регистры SIMD и образовать 4 или 8 произведений из элементов B и C, необходимо сложить эти произведения в одно значение. Сложение 4 или 8 произведений в одну позицию — это операция приведения, которая не использует производительность параллельных вычислений и не использует все регистры SIMD с наибольшей эффективностью. Можно повысить производительность параллельной обработки, если свести к минимуму или вовсе исключить операции приведения. Если в левой части строки внутри цикла находится одно значение, это указывает на возможное приведение. Путь доступа к данным для одной итерации строки 137 показан ниже на рис. 2 ( i,j=2 ).

Рисунок 2. Упорядочение; единственное значение в матрице A

Иногда от приведения можно избавиться с помощью операций переупорядочения. Рассмотрим упорядочение, при котором меняются местами два внутренних цикла. Количество операций с плавающей запятой остается прежним. Но поскольку операция приведения (суммирования значений в левой части строки) исключается, процессор может задействовать все исполняемые блоки SIMD и регистры. При этом значительно повышается производительность.

После этого происходит смежное обращение к элементам А и С.

Рисунок 3. Обновленный порядок со смежным доступом

Первоначальный порядок ijk — это метод скалярного умножения. Скалярное умножение двух векторов используется для вычисления значения каждого элемента матрицы А. Порядок ikj — это операция saxpy (A*X+Y одинарной точности) или daxpy (A*X+Y двойной точности). Произведение одного вектора на константу прибавляется к другому вектору. И скалярное произведение, и операции A*X+Y являются процедурами BLAS уровня 1. При порядке ikj не требуется приведение. Подмножество строки матрицы C умножается на скалярное значение матрицы B и прибавляется к подмножеству строки матрицы A (компилятор определит размер подмножеств в зависимости от размера используемых регистров SIMD — SSE4, AVX или AVX512). Доступ к памяти для одной итерации цикла 137new показан выше на рис. 3 (вновь i,j=2 ).

Исключение приведения в скалярном умножении — значительное повышение производительности. При уровне оптимизации O2 и компилятор Intel, и gcc* создают векторизованный код, использующий регистры SIMD и исполняемые блоки. Кроме того, компилятор Intel автоматически меняет местами циклы j и k . Убедиться в этом можно в отчете компилятора об оптимизации, который можно получить с помощью параметра компилятора opt-report ( -qopt-report в Linux*). Отчет об оптимизации по умолчанию выводится в файл filename.optrpt . В этом случае отчет об оптимизации содержит следующие фрагменты текста.

Отчет также показывает, что переупорядоченный цикл был векторизован.

Компилятор gcc (версия 4.1.2-55) не переупорядочивает циклы автоматически. Об изменении порядка должен позаботиться разработчик.

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

В последнем варианте кода циклы j и k переупорядочены, а также применена блокировка. Код работает на подмножествах матриц или блоках размером blockSize . В этом простом примере blockSize является кратным n кода.

В этой модели обращение к данным одной итерации цикла j может выглядеть так.

Рисунок 4. Представление блочной модели.

Если размер блока правильно подобран, то можно предположить, что каждый блок будет оставаться в кэше (и даже, может быть, в регистрах SIMD) в ходе работы трех внутренних циклов. Каждый элемент матриц A, B и C будет использован количество раз, равное blockSize , перед удалением из регистров SIMD или вытеснением из кэша. При этом многократное использование данных возрастает в количество раз, равное blockSize . При использовании матриц незначительного размера применение блоков практически не дает выигрыша. Чем больше размер матрицы, тем существеннее прирост производительности.

В приведенной ниже таблице показано соотношение производительности, измеренное в системе с разными компиляторами. Обратите внимание, что компилятор Intel автоматически меняет местами циклы в строках 137 и 138 . Поэтому показатели компилятора Intel практически не отличаются для порядков ijk и ikj . Благодаря этому базовая производительность компилятора Intel также гораздо выше, поэтому итоговое увеличение скорости по сравнению с базовой кажется меньше.

Порядок

Размер матрицы/блока

Gcc* 4.1.2 -O2, повышение скорости/производительности по сравнению с базовым показателем

Компилятор Intel 16.1 -O2, повышение скорости/производительности по сравнению с базовым показателем

Оптимизация для pentium процессора уменьшение длины кода

Стремление выжать из своего компьютера максимум производительности есть в каждом, ну почти в каждом ;-). Особенно его много в русских линуксоидах Gentoo’шниках ;) Мы попытаемся путем изменения флагов оптимизации ускорить работу приложений нашей системы.

ВНИМАНИЕ: Некоторые флаги могут сделать приложения нестабильными, так что нужно быть аккуратным.

3.2. Оптимизация

Переменная окружения CFLAGS

Для указания параметров оптимизации компилятору GCC, используется переменная окружения CFLAGS. Эта переменная определена в /etc/make.conf, её можно изменить двумя способами:

Отредактировать эту переменную в /etc/make.conf;

Экспортировать ее в окружение (emerge будет использовать эти параметры, но каждый раз выполнять export неудобно):

export CFLAGS=’параметры оптимизации’

Для gcc версий 3.x и выше существует только 5 уровней оптимизации: -O0 (без оптимизации), -O1, -O2 и -O3 (O3 — самый высокий уровень), а так же -Os.

Примечание: Если вы используете несколько -O опций, то только последняя объявленная будет оказывать влияние на процесс компиляции.

Отключает оптимизацию. Только переменные, объявленные register, сохраняются в регистрах.

Включает оптимизацию. Пытается уменьшить размер кода и ускорить работу программы. Соответственно увеличивается время компиляции. При указании -O активируются следующие флаги: -fthread-jumps, -fdefer-pop.

На машинах, у которых есть слоты задержки, включается опция -fdelayed-branch.

На тех машинах, которые способны поддерживать отладку даже без указателя на стек функции, также включается опция -fomit-frame-pointer.

На других машинах могут быть включены и другие флаги.

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

-O2 включает все флаги оптимизации наследованные от -O. Также включает следущие флаги оптимизации:

-fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks

-frerun-cse-after-loop -frerun-loop-opt -fgcse -fgcse-lm

-fgcse-sm -fgcse-las -fdelete-null-pointer-checks -fexpensive-optimizations

-fregmove -fschedule-insns -fschedule-insns2 -fsched-interblock

-fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks

-fre-order-functions -fstrict-aliasing -funit-at-a-time -falign-functions

-falign-jumps -falign-loops -falign-labels -fcrossjumping

Оптимизирует еще немного. Включает все оптимизации -O2 и также включает флаг -finline-functions и -fweb.

Включает оптимизацию по размеру. -Os флаг активирует все флаги оптимизации из -O2, в основном те, которые не увиличивают размер выходного файла. В дальнейшем выполняются оптимизации по уменьшению размера кода.

-Os выключает следущие флаги оптимизации: -falign-functions, -falign-jumps, -falign-loop, -falign-labels, -freorder-blocks, -fprefetch-loop-arrays.

Примечание: Более полное описание флагов -Ox, -fflag смотрите в man gcc

Оптимизация под тип процессора

Не все процессоры одинаковы,поэтому давайте укажем компилятору на наш тип процессора. Для этого есть опции -mtune и -march.Отличие в том,что с опцией -mtune компилятор сделает код,который будет совместим с более младшими моделями процессора,в то время как с -march этого не происходит.Вот список возможных значений для данных опций:

Оптимизация для pentium процессора уменьшение длины кода

ОПТИМИЗАЦИЯ
6.1. Приемы оптимизации для процессоров Intel Pentium

Все, что здесь написано, является выборкой наиболее важных на мой взгляд фактов из документации от Agner Fog. Если вы серьезно интересуетесь оптимизацией для Intel Pentium (plain, MMX, PPro, P2), найдите и прочтите эту документацию (я нашел на www.agner.org/assem .

6.1.1. Спаривание целочисленных команд

По-моему, основной прием ускорения. Дело в том, что у процессоров Pentium есть два конвейера обработки команд, U-pipe и V-pipe. В результате некоторые пары команд могут исполняться одновременно, а это практически удваивает скорость.

Эти команды могут быть исполнены и в U-pipe, и в V-pipe, и при этом могут быть спарены (с какой-либо другой командой):

mov reg/mem,reg/mem/imm
push reg/imm
pop reg
lea, nop, inc, dec, add, sub, cmp, and, or, xor
некоторые формы test

Эти команды могут быть исполнены только в U-pipe, но при этом все-таки могут быть спарены:

adc, sbb
shr, sar, shl, sal на заданное число
ror, rol, rcr, rcl на единичку

Эти команды могут быть исполнены в любом конвейере, но могут быть спарены только в V-pipe:

near call (близкий вызов)
short/near jump (короткий/близкий переход)
short/near conditional jump (короткий/близкий переход по условию)

Все остальные целочисленные команды могут быть исполнены только в U-pipe и не могут быть спарены вообще.

Две последовательно идущих команды будут спарены в случае выполнения всех нижеследующих условий. Если хотя бы одно из условий не выполняется, то исполняется только первая команда, вторая (и, возможно, следующая за ней) команда будет исполнена лишь в следующем такте. Вот условия спаривания:

    Первая команда может быть исполнена и спарена в U-pipe, вторая, соответственно, в V-pipe.

Если первая команда записывает что-то в регистр, то вторая команда не может производить чтение/запись из регистра. Причем, в этом условии части регистров считаются за весь регистр (то есть, запись в al/ah расценивается как запись в eax, а запись в cf — как запись в flags).

  • Две команды, записывающие что-то в регистр флагов, могут быть спарены, несмотря на условие 2:
  • Команда, записывающая что-то в регистр флагов, может быть спарена с условным переходом, несмотря на условие 2:
  • Следующие пары команд могут спариться несмотря на то, что обе команды изменяют esp:
  • Существуют ограничения на исполнение команд с префиксом. Префиксы возникают в таких случаях:
    • команда, адресующаяся не к сегменту по умолчанию, имеет префикс сегмента (примеры: mov eax,es:[ebx]; mov eax,ds:[ebp])
    • команда, работающая с 16-битными операндами в 32-битном режиме или с 32-битными операндами в 16-битном режиме, имеет префикс разрядности операнда (примеры: mov ax,1234 в защищенном режиме; mov ax,word ptr [variable] в защищенном режиме; xor eax,eax в реальном режиме)
    • команды, использующая 32-битную адресацию в 16-битном режиме, имеет префикс разрядности адреса (пример: mov ax,[ebx] в реальном режиме)
    • rep, lock — префиксы (пример: rep stosd)
    • многие команды, которых не было на 8086, имеют двухбайтовый код команды, где первый байт равен 0Fh. На процессоре Pentium без MMX этот байт считается префиксом. Наиболее часто встречающиеся команды с префиксом 0Fh: movzx, movsx, push/pop fs/gs, lfs/lgs/lss, setXX, bt/btc/btr/bts/bsf/bsr/shld/shrd, imul с двумя операндами и без операнда-числа (immediate).

    На процессоре Pentium без MMX команда с префиксом может исполняться только в U-pipe, исключение — близкие переходы по условию (conditional near jumps). На процессоре Pentium с MMX команды с префиксами 0Fh и размера операнда или адреса может исполняться в любом конвейере; но команды с префиксами сегмента, rep или lock (повторения или блокировки шины) могут исполняться только в U-pipe.

    Команда, в которой одновременно участвует смещение (displacement) и заданное число (immediate) не может быть спарена на процессоре Pentium без MMX и может быть выполнена и спарена только в U-pipe на процессоре Pentium с MMX. Вот примеры:

    Илон Маск рекомендует:  Что такое код msql_close

    Спаривающаяся команда, которая читает из памяти, считает и записывает результат в регистр или в регистр флагов занимает 2 такта. Спаривающаяся команда, которая читает из памяти, считает и записывает результат обратно в память занимает 3 такта. Примеры таких команд:

    Существует также так называемое неполное спаривание (imperfect pairing), когда обе команды выполняются в разных конвейерах, но НЕ одновременно (возможно, частично перекрываясь по времени исполнения), а следующие за ними команды не могут начать исполнение, пока обе команды не закончатся. Такое случается в следующих случаях:

    1. Вторая команда вызывает AGI (address generation interlock, блокировка генерирования адреса). Это происходит, если адрес, используемый во второй команде зависит от регистров, измененных в первой команде. Примеры:
    2. Две команды одновременно обращаются к одному и тому же двойному слову памяти. Примеры (подразумевается, что esi делится на 4):
    3. Две команды одновременно обращаются к адресам, в которых одинковы биты 2-4 (это вызывает конфликт кэш-банков). Для dword-адресов это значит, что разница между двумя адресами делится на 32. Пример:
    4. Первая команда производит чтение, подсчет и запись одновременно; вторая — чтение и изменение; в этом случае число тактов, требующееся для выполнения пары команд, можно рассчитать по следующей таблице:
    первая команда
    вторая команда mov или
    регистровая
    чтение/
    подсчет
    чтение/подсчет/
    запись
    mov или регистровая 1 2 3
    чтение/подсчет 2 2 4
    чтение/подсчет/запись 3 3 5

    У процессора Pentium непосредственно на кристалле есть 8k кэш-памяти (это т.н. кэш-память первого уровня, L1 cache) для кода и 8k — для данных. Данные из L1 cache считываются/записываются за один такт; кэш-промах же может стоить довольно много тактов. Таким образом, для наиболее эффективного использования кэша необходимо знать, как он работает.

    Итак, L1 cache состоит из 256 кэш-линий (cachelines), по 32 байта в каждой. При чтении данных, которых нет в кэше, процессор считывает из памяти целую кэш-линию. Кэш-линии всегда выравнены на физический адрес, делящийся на 32; так что если прочитать байт по адресу, делящемуся на 32, то можно читать и писать в следующий за ним 31 байт без всяких задержек. Свои данные имеет смысл располагать с учетом этого факта — например, выравнивать массивы из структур длиной 32 байта на 32; перед записью в видеопамять читать оттуда один байт (один раз на 32 записываемых байта); используемые вместе данные располагать вместе; и так далее.

    Но кэш-линия не может быть связана с любым физическим адресом. У каждой кэш-линии есть некое 7-битное «заданное значение» (set-value), которое должно совпадать с битами адреса 5-11. Для каждого из 128 возможных значений set-value есть две кэш-линии. Отсюда следует то, что в кэше не может одновременно содержаться более двух блоков данных с одинаковыми битами адреса 5-11. Чем это чревато, покажем на примере.

    У используемых трех адресов будет одинаковое значение в битах 5-11. Поэтому к моменту самого первого чтения в ecx в кэше точно не окажется свободной кэш-линии, процессор выберет для нее наименее использованную (least recently used) линию, ту самую, которая была использована при чтении eax. При чтении ebx, соответственно, будет заново перекрыта линия, использованная при чтении ecx. В результате цикл будет состоять из сплошных кэш-промахов и съест порядка 60 тактов. Если же поменять 28 на 32, изменив, таким образом, на единичку биты 5-11 для адреса [esi+20*4096+28], то для чтения в eax и ebx будут как раз использованы две имеющихся линии, для чтения в ecx — третья, не совпадающая ни с одной из этих двух. В результате — скорость порядка трех тактов на один проход и ускорение примерно в 20 (. ) раз.

    Еще одна интересная вещь, которую стоит учесть — Pentium НЕ загружает кэш-линию при промахе записи; только при промахе чтения. При промахе записи данные пойдут в L2 cache или память (в зависимости от настроек L2 cache). А это довольно медленно. Поэтому, если мы последовательно пишем в один и тот же 32-байтовый блок, но не читаем оттуда, то имеет смысл сначала сделать холостое чтение из этого блока, чтобы загрузить его в L1 cache; тогда все последовательные операции записи будут есть только по одному такту.

    6.1.3. Разные трюки

    Трюков есть много, перечислим здесь только наиболее часто используемые:

    работа с fixed point вместо floating point иногда (если код не слишком сильно насыщен математикой) быстрее; практически всегда быстрее для клонов;

    все данные желательно выравнивать по адресам, кратным размеру данных (то есть, переменные-байты можно не выравнивать, слова — выравнивать на 2, двойные слова — на 4); обращение к невыравненной переменной влечет за собой задержку минимум на три такта;

    деление на заранее известное число можно заменить умножением на обратное ему число;

    деление на степень двойки для целых чисел заменяется на сдвиг влево; деление чисел с плавающей точкой (fdiv) на Intel Pentium (на клонах, к несчастью, это не так) может исполняться параллельно с целочисленными командами.

    Остужаем и сохраняем процессоры. Вопросы снижения энергопотребления и тепловыделения ноутбуков и компьютеров. Часть 1.

    Введение.
    Достаточно давно мне хотелось остановиться на вопросах обеспечения снижения энергопотребления современных персональных компьютеров и ноутбуков. Многие пользователи оправданно зададут вопрос: «Зачем это надо? — производитель уже позаботился обо всех тонкостях энергопотребления моей системы. Как показывает опыт, к сожалению, это практически всегда не так. Если производители ноутбуков еще как-то стараются обеспечить снижение энергопотребления своих устройств, то с персональными компьютерами, как правило, все находится в запущенном состоянии.

    Энергопотребление персональных компьютеров и ноутбуков необходимо снижать по следующим причинам:
    — снижая энергопотребление ноутбука, вы продлеваете его время автономной работы,
    — продлевая время автономной работы ноутбука, вы добиваетесь, снижения циклов заряда/разряда аккумуляторной батареи и продлеваете его срок службы,
    — вместе с энергопотреблением снижается и тепловыделение компонентов ноутбука или персонального компьютера, что позволяет, с одной стороны, повысить стабильность работы системы, с другой стороны, продлить срок службы электрических компонентов,
    — снижение энергопотребления персонального компьютера и ноутбука позволит сократить расходы на электричество. Для многих это до сих пор не критично, но стоимость электроэнергии растет день ото дня, государственная политика заставляет граждан устанавливать электросчетчики, количество компьютеров в семье увеличивается из года в год, длительность их работы удлиняется в пропорциональных масштабах, поэтому в технологиях снижения энергопотребления заинтересован каждый из нас.

    Определение ключевых компонентов энергопотребления системы.

    На представленном рисунке видны компоненты стандартного системного блока. Знание этих компонентов системы позволит вам еще на этапах сборки или апгрейда своего компьютера определиться с теми параметрами, которые позволят вам снизить энергопотребление системы. Итак, современный системный блок содержит:
    — корпус,
    — блок питания,
    — материнская плата,
    — процессор,
    — оперативная память,
    — видеокарта/видеокарты,
    — жесткий диск/диски,
    — привод компакт-дисков,
    — дисководы,
    — картридеры,
    — системы охлаждения процессора, корпуса.
    Звуковые карты, ТВ-тюнеры в отдельном исполнении редко встречаются в современных компьютерах. Во-первых, все существующие материнские платы имеют встроенные контроллеры звука, которые не уступают по качеству звучания дешевым звуковым картам и картам среднего ценового диапазона. Во-вторых, ТВ-тюнеры отслужили свой век, как и коаксиальное телевидение. В эпоху FulHD, IP-TV, DVB говорит о ТВ-тюнерах попросту излишне.

    Энергосбережение: корпус и блок питания.

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

    Блок питания может стать источником неэффективного энергопотребления в первую очередь. Любой современный блок питания должен обеспечивать высокие показатели КПД при преобразовании тока высокого напряжения в 12, 5 и 3,3 вольта.

    Любой современный блок питания имеет соответствие одному из стандартов серии 80 Plus. Стандарт 80 Plus был принят еще в далеком 2007 году, в рамках энергосберегающих стандартов Energy Star четвертого пересмотра. Данный стандарт требует от производителей блоков питания обеспечение 80% КПД своих устройств при различных нагрузках, — 20%, 50% и 100% от номинальной мощности.

    Из этого следует, что для обеспечения максимальной эффективности вашего блока питания, он должен быть нагружен не менее 20 % от своей номинальной мощности. Абсолютно не правильно, когда пользователь приобретает блоки питания «с запасом» на 900 и 1200 Ватт. При выборе блока питания руководствуйтесь тем, что без нагрузки на систему, нагрузка на него не должна падать ниже 20% и он должен иметь сертификат соответствия 80 Plus.

    Справедливости ради, нужно отметить, что на сегодняшний день стандарт 80 Plus дифференцировался на следующие категории:
    — 80 Plus
    — 80 Plus Bronze
    — 80 Plus Silver
    — 80 Plus Gold
    — 80 Plus Platinum.

    Различие между стандартами заключается в обеспечении более высоких показателей КПД внутри семейства стандарта 80 Plus. Если при 50% нагрузке блок питания стандарта 80 Pus обеспечивает КПД на уровне 80%, то дорогие блоки питания соответствующие стандарту 80 Plus Platinum обеспечивают КПД на уровне 94% и выше.

    Энергосбережение: материнская плата.

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

    В силу общих тенденций, многие именитые производители материнских плат, такие как Gigabyte, ASUS, MSI демонстрируют на выставках свои новые «экологичные» продукты. Как правило, экологичность данных решений достигается за счет оптимизации схем питания процессора и видеокарт, — основных потребителей любого системного блока. Как правило, это осуществляется за счет применения многофазных стабилизаторов напряжения процессоров.

    Современные материнские платы, применяют в схемах питания от шести до двенадцати стабилизаторов напряжения. Данные схемы значительно повышают стабильность подаваемого напряжения, но увеличивают энергопотребление. Поэтому производители «экологичных» материнских плат оснащают их технологиями, которые при низкой нагрузке на систему питания выключают часть фаз, и питание процессора осуществляется за счет одной-двух фаз стабилизаторов напряжения.

    При покупке материнской платы, также следует быть более внимательным. Приобретение «навороченной» материнской платы всегда оборачивается повышенным энергопотреблением. Если вам никогда не будет нужен порт FireWire, не следует за него переплачивать, а затем ежемесячно платить за то электричество, которое потребляет его контроллер на материнской плате.

    Энергосбережение: процессор.

    Ведущие производители процессоров AMD и Intel на протяжении последних десятилетий занимаются снижением энергопотребления своих продуктов. Следует отдать должное, вся эстафета была начата компанией AMD, в которой она удерживала прочное лидерство на протяжении двух-трех лет. Были времена, когда процессоры компании AMD с технологией Cool’n’Quiet имели значительно меньшее энергопотребление, нежели процессоры от компании Intel линеек Pentium 4 и Pentium D.

    Компания Intel быстро наверстала свое отставание и внедрила технологию EIST — Enhanced Intel SpeedStep Technology, которая прекрасно себя показала в последних поколениях процессоров. В то время как новые процессоры от компании Intel обзаводятся все новыми и новыми технологиями энергосбережения и наращивают производительность, от компании AMD существенных рывков вперед мы не видим.

    Как известно, ключевым энергопотребителем любого персонального компьютера или ноутбука является именно процессор, поэтому мы остановимся на вопросах снижения его энергопотребления.

    Для того чтоб понять, как можно снизить энергопотребление процессора, вы должны четко для себя представлять, от чего оно зависит. Энергопотребление современного процессора зависит:
    — от напряжения питания подаваемого на транзисторы,
    — частоты работы процессора. Частота работы процессора формируется из произведения его множителя на частоту шины.

    По сути дела, технологии Cool’n’Quiet и EIST занимаются снижением энергопотребления именно за счет этих двух параметров. К сожалению, чаще всего мы сталкиваемся с работой не с напряжением питания процессора, а с работой его частотой. При снижении нагрузки на процессор энергосберегающие технологии снижают множитель процессора и тем самым добиваются снижения энергопотребления процессора. При появлении нагрузки на процессоре, множитель возвращается на прежние значения, и процессор работает, как ни в чем не бывало. К сожалению, данная методика снижения энергопотребления не всегда позволяет добиться высокой энергоэффективности. Покажем на примере.
    В качестве примера выбран процессор Core 2 Duo с номинальной частотой работы 2,0 Ггц.

    Из представленной диаграммы видно, что температура работы процессора без включения режима энергосбережения, при номинальном множителе x12 и напряжении питания 1,25 вольт мы имеем рабочую температуру порядка 55-56 градусов в простое.

    После подачи нагрузки на процессор, при аналогичных условиях работы мы фиксируем среднею температуру работы процессора порядка 71-72 градусов, что и было зафиксировано на наших диаграммах.
    Температура ядер процессора снимается по внутренним датчикам, поэтому погрешности минимальны. Учитывая тот факт, что между энергопотреблением процессора и его рабочей температурой имеется прямопропорциональная связь, мы будем ориентироваться на данный параметр при оценке его энергоэффективности.
    Следующим этапом мы снизили множитель процессора до минимально возможных значений, до 6. При этом частота процессора составила 997 Мгц, грубо можно округлить до 1 Ггц. Напряжение питания осталось неизменным, в районе 1,25 вольт.

    Из представленных данных видно, что в режиме простоя, рабочая температура процессора изменилась очень мало, она осталась, по-прежнему, в рамках 55-56 градусов. Отсюда напрашивается вывод о том, что от простого снижения частоты работы процессора мы выигрываем очень мало.

    После этого мы подали нагрузку на процессор, но множитель и рабочее напряжение процессора оставили на прежнем уровне. Естественно, подобное тестирование имеет значение только с практической стороны, реализовывать его в жизни мы не рекомендуем. Связано это с тем, что именно от частоты процессора зависит его производительность, и никто не покупает высокочастотный процессор для его последующей работы на заниженных частотах. После стабилизации температурных значений, мы получили среднею рабочую температуру равную 65-66 градусам, что на шесть градусов ниже, чем при работе процессора на номинальной частоте равной 2 Ггц.
    Из этого всего следует, что действительно энергосбережение от снижения рабочей частоты процессора путем изменения значения множителя имеет место быть, но оно не того уровня, которого нам бы хотелось видеть, в каждом конкретном случае. Поэтому мы приступаем к работе с напряжением процессора.

    Наш процессор и материнская плата позволяют изменять напряжение питания процессора в промежутке 0,95-1,25 вольт. Шаг составляет 0,0125 вольт. Это связано с тем, что процессор установлен в ноутбуке, материнские платы которых, редко когда дают возможность менять рабочие напряжения компонентов в широких диапазонах.
    Для того чтоб доказать эффективность снижения рабочего напряжения процессора в плане снижения его энергопотребления и тепловыделения, мы оставим его рабочую частоту на уровне 1 Ггц, но параллельно снизим рабочее напряжение до минимально возможных значений, — 0,95 вольт.

    Данная манипуляция позволила нам снизить температуру простоя процессора до 45-46 градусов, что представлено на диаграмме. В данном режиме мы добиваемся максимально возможно низкого энергопотребления процессора. Снижение рабочего напряжения до 0,95 вольт позволило нам снизить рабочую температуру простоя на 10 градусов.

    Для оценки эффективности метода снижения рабочего напряжения процессора, мы подали на него нагрузку. В результате чего мы получили рабочую температуру в нагрузке равную 50-51 градусам, в то время как без изменения напряжения и аналогичной производительности системы на частоте 1 Ггц ранее мы получали 65-66 градусов. Полученные нами данные зафиксированы на диаграммах.

    Энергопотребление процессора: выводы

    — Из всего вышеизложенного следует, что для обеспечения высокой энергоэффективности процессора не следует только снижать рабочую частоту процессора, как это делается многими ноутбуками и персональными компьютерами в рамках энергосберегающих технологий от Intel и AMD. Снижение частоты работы процессора всегда должно сопровождаться снижением его рабочего напряжения.

    — Учитывая тот факт, что любой процессор может работать при более низком напряжении при более низких частотах своей работы, следует подобрать свое минимальное стабильное напряжение для каждой частоты его работы.

    — Для определения приблизительных рабочих напряжений для каждой частоты (множителя) процессора достаточно построить график прямой зависимости минимального напряжения от частоты путем нанесения максимальных и минимальных значений. Это значительно облегчит работу начинающим пользователям.

    — Для обеспечения необходимой энергоэффективности процессора, необходимо правильно настроить существующие технологии или применять сторонние программные продукты, которые могли бы снижать частоту процессора, его напряжение при низкой нагрузке и повышать их при ее повышении.

    Для этих целей я рекомендую программу RightMark CPU Clock Utility — RMClock, которую использую уже на четырех поколениях процессоров, бесплатного функционала которой хватает для всех вышеописанных манипуляций.

    Энергосбережение процессора: RightMark CPU Clock Utility (RMClock)

    Утилита имеет небольшой вес, порядка 250 килобайт. Не требуется какой-либо установки, просто распаковываете его в выбранную папку и запускаете файл RMClock.exe. Для простоты ссылка на архив с программой будет представлена в конце нашей статьи.

    На момент написания статьи последняя версия программы 2.35 имеет следующий функционал в рамках бесплатного использования:
    — контроль тактовой частоты процессоры,
    — контроль троттлинга,
    — контроль уровня загрузки процессора, ядер процессора,
    — контроль рабочего напряжения процессора,
    — контроль температуры процессора/ядер процессора,
    — постоянный мониторинг указанных параметров,
    — возможность изменения напряжения процессора из операционной системы,
    — возможность изменения множителя процессора (его частоты) из операционной системы,
    — автоматическое управление частотой и напряжением процессора в зависимости от подаваемой нагрузки на него. Концепция носит название «Perfomance on demand» или «производительность по требованию».

    Запустив программный продукт, вы попадаете в один из разделов его меню. Мы перечислим весь функционал RightMark CPU Clock Utility по порядку. В разделе About представлена информация о разработчиках, их сайте, и ссылка на лицензионное соглашение. Базовая версия продукта поставляется бесплатно для некоммерческих целей, никакой регистрации не требуется. Имеется профессиональная версия, которая предоставляет гораздо более широкий функционал настроек работы системы и стоит символические 15 долларов. Для начинающего пользователя возможностей базовой версии вполне хватит.

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

    За режим автозапуска отвечает подраздел «Startup options«. Автозапуск RightMark CPU Clock Utility при загрузке операционной системы позволяет максимально легко решить вопросы энергосбережения без вмешательства в BIOS компьютера, что особенно полезно, когда BIOS не предоставляет каких-либо возможностей по изменению рабочего напряжения и множителя процессора. Подобное встречается в BIOS’ах современных ноутбуков.

    Поставив галочку в окне пункта «Start minimized to system tray» вы избавите себя от надобности постоянно закрывать окно программы при очередном запуске. Оно будет выполнять свои задачи после автоматического запуска с предварительным свертыванием.

    Пункт «Run at Windows startup:» позволяет установить автоматический запуск программного продукта и выбрать, как это делать. В нашем случае мы осуществляем автоматический запуск через реестр, также имеется возможность автоматического запуска через папку «Автозагрузка». Оба варианта прекрасно работают, начиная от Windows XP заканчивая Windows 7.

    Имеется возможность записи необходимых параметров работы процессора в Log-файл. Данный параметр бывает необходим для выяснения причин нестабильной работы системы.

    В закладке «CPU info» представлена информация о процессоре, его характеристики на текущий момент. Перечислены поддерживаемые технологии энергосбережения. Чем более современный процессор, тем больше технологий он поддерживает.

    В закладке «Monitoring» представлены диаграммы изменения рабочей частоты ядра процессора, его троттлинг, нагрузка на него, множитель, рабочее напряжение и температура. Количество вкладок соответствует количеству ядер процессора.

    Во вкладке «Management» пользователю предоставляется возможность выбора метода переключения множителей, методов определения фактической нагрузки на процессор, интеграции программного продукта с энергосберегающими технологиями операционной системы.

    Пункт «P-states transitions method» позволяет выбрать метод перехода от одной заданной комбинации множителя-напряжения на другой. Имеются следующие возможности выбора:
    — Single-step: множитель переключается с шагом равной единице. То есть при переходе с множителя 10 на множитель 12 всегда будет промежуточное звено 11.
    — Multi-step: переход будет осуществляться с переменным шагом. В случае нашего примера, с 10 сразу на 12.

    Пункт «Multi-CPU load calculation» позволяет определить метод определения загрузки процессора. Данный параметр будет влиять на скорость переключения комбинации множитель-напряжение на процессоре. В каждом случае подбирается исходя из индивидуальных особенностей работы пользователя. Обычно данный параметр мы не меняем и оставляет на указанном на скрине значении, который означает, что оценка будет осуществляться по максимальной нагрузке любого из ядер процессора.

    Пункт «Standby/hibernate action» позволяет выбрать действие программы при переходе в режим гибернации или сна. Как правило, оставление текущего профиля работы является вполне достаточным.

    В разделе «CPU Default Settings» представлены следующие пункты:
    — Restore CPU defaults on management turns off, который позволяет вернуть первоначальные параметры работы процессора после выбора режима «No Power Managemet».
    — Restore CPU defaults on application exit, который позволяет вернуть первоначальные параметры работы процессора после выключения RightMark CPU Clock Utility.

    В разделе «CPU defeaults selection» выбирается метод определения комбинаций множитель-напряжение у процессора:
    — CPU-defined default P-state, комбинация определяются процессором,
    — P-state found at startup, комбинации определяются при загрузке программы,
    — Custom P-state, комбинации устанавливаются вручную.

    Пункт «Enable OS power management integration» позволяет создать профиль в схемах энергопотребления системы под названием «RMClock Power Management».

    В разделе «Profiles» пользователю предлагается задать те самые комбинации множитель-напряжение, — P-state. Во-первых, предлагается выбрать профили в зависимости от режима энергопотребления, — сеть или батарея/ИБП.

    Ниже предлагается выбрать множители процессора и напряжение для них в каждом конкретном случае. Как правило, я выбираю три значения:
    — минимальный множитель и минимальное напряжение для него,
    — максимальный множитель и минимально рабочее напряжение для него,
    — среднее значение множителя, а напряжение для него устанавливается самой программой исходя из максимальных и минимальных значений.

    Как правило, подобный подход подходит для большинства ноутбуков и персональных компьютеров. Естественно, бывают исключения, и пользователю приходится длительно подбирать минимальное напряжение для каждого множителя.

    Затем устанавливаете галочки для уже выбранных профилей в соответствующих разновидностях работы программы:
    — No management — без управления, в настройках не нуждается
    — вкладки «Power Saving», «Maximal performance», «Perfomance on Demand» по сути дела равнозначны и позволяют установить диапазоны изменения множителей-напрежения процессора.

    Например, в нашем случае для вкладки «Power Saving» мы выбрали минимально возможный множитель и напряжением, для вкладки «Maximal performance» максимальный множитель и минимально рабочее напряжение при данной частоте у процессора.

    В разделе производительность по требованию «Perfomance on Demand» выбрали три комбинации множитель-напряжение:
    — x4-0,95 вольт
    — x9-1,1 вольт
    — x12-1,25 вольт.

    Затем наводите на значок в области уведомлений рабочего стола программы RightMark CPU Clock Utility и выбираете необходимые параметры процессора, которые всегда должны вам показываться и выбираете текущий профиль работы. Я всегда ставлю для мониторинга частоту процессора и его температуру работы, что всегда удобно и отчасти интересно.

    На рисунке представлены три пиктограммы в области уведомлений рабочего стола:
    — пиктограммы программы RightMark CPU Clock Utility,
    — текущая частота процессора,
    — его текущая температура.

    На скрине представлены диаграммы работы процессора в режиме «Производительность по требованию«. Видно, как программный продукт при увеличении нагрузки на процессор ступенчато увеличивает его множитель и напряжение вначале до x9-1,1 вольт и при необходимости до максимальных x12-1,25 вольт. Как только нагрузка падает, все ступенчато возвращается обратно.
    Подобная регулировка практически никак не влияет на итоговую производительность системы.

    Во вкладке «Battery info» предлагается выбрать способы оповещения о состоянии аккумуляторной батареи ноутбука.

    Во вкладке «Advanced CPU settings» предлагается выбрать опрашиваемые температурные датчики процессора, включаемые технологии энергосбережения.
    Все эти энергосберегающие технологии описаны на сайте Intel. Мы просто хотим сказать, что, как правило, их включение не влияет на стабильность системы, поэтому — почему бы их не включить?

    Наш процессор относится к раннему семейству процессоров Core 2 Duo. Современные процессоры поддерживает не активные у нас технологии:
    — Engage Intel Dynamic Acceleration (IDA)
    — Enable Dynamic FSB Frequency Switching (DFFS)

    Первая технология позволяет процессору повысить множитель одного из ядер при отсутствии нагрузки на второе. Например, работают два ядра процессора при частоте 2,2 Ггц. Процессор оценивает, что нагрузка подается только на одно ядро, то его множитель будет повышен, и он начнет работать на частоте 2,4 Ггц. Технология интересная, но опасная на разогнанных процессорах.

    Вторая технология позволяет добиться еще более сильного снижения рабочей частоты процессора в режимах простоя. Ранее мы говорили о том, что итоговая частота процессора — это всегда произведение множителя на частоту системной шины. Современные процессоры Intel в рамках технологии DFFS позволяют снижать не только значение множителя, но и частоту шины, что позволяет достичь еще более низких частот. Данная технология также опасна для разогнанных процессоров, так как можно получить нестабильность со стороны оперативной памяти.

    Пожалуй, это все что мы хотели рассказать о программном продукте RightMark CPU Clock Utility. Остается посоветовать следить за ее обновлениями. При этом не имеет смысл обновляться, когда у вас уже на протяжении многих месяцев все стабильно работает. Имеет смысл искать новую версию при смене процессора или переходе на более современную операционную систему.
    Использование программы RightMark CPU Clock Utility позволит вам максимально продлить жизнь не только своего процессора, но и системы питания материнской платы, а также значительно снизить шум от системы охлаждения процессора, который не будет надрываться для его охлаждения, когда вы будете печатать, смотреть фильмы или просто листать страницы в Интернете.

    Энергопотребление процессора: определяем минимальное рабочее напряжение

    В своей статье я многократно указывал на то, что важно определить минимальное рабочее напряжение для каждой частоты работы процессора. Делается это путем проб и ошибок. Как правило, последовательно выполняется следующий цикл задач:
    — снижение напряжения на один пункт,
    — проверка стабильности процессора в стресс-тестовом программном продукте,
    — понижение или повышение напряжения на один пункт в зависимости от результатов стресс-тестирования.

    Для стресс-тестирования процессоров существует множество программных продуктов. Они были описаны в одной из наших статей. Считаю, что наиболее ценной из них является программа Prime95. Ссылка на нее будет предоставлена в конце статьи. Она полностью бесплатна и доступна для скачивания в сети.

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

    Выбираем метод тестирования в разделе «Options«=> «Torture test» и запускаем его. Длительность тестирования полностью зависит от вас. Как правило, при определении ориентировочного минимального напряжения я дожидаюсь либо первой ошибки, либо провожу тестирование в течение получаса. Если полчаса теста прошло без ошибок, снижаем напряжение на один пункт и вперед заново.
    После того, как вы определились с минимальным напряжением окончательно, имеет смысл оставить тест на ночь. За несколько часов кропотливой работы, практически всегда удается выявить возникающие ошибки.
    Нередко, операционная система зависает или в лучшем случае, выдает «синий экран смерти«. Это говорит о том, что напряжение занижено и возникла ошибка, — следует поднять рабочее напряжение на процессоре для данной частоты.

    В нашем случае, мы определили минимальное рабочее напряжение для нашего процессора. Как оказалось, при максимальной частоте в 2 Ггц нашему процессору 1,25 вольт совсем не нужны. Он вполне стабильно работает и при 1,00 вольтах. Стабильность операционной системы была обнаружена и при режиме 0,975 вольт, но Prime95 сообщил об ошибке, которая пропала после поднятия напряжения до 1,00 вольт.

    В итоге мы имеем

    — процессор с неизменным уровнем производительности и частотой работы 2 Ггц,
    — максимальную рабочую температуру в нагрузке 62-63 градуса, вместо привычных 72 градусов,
    — более низкое энергопотребление, которое позволяет без каких-либо схем энергопотребления от Acer, Asus, Samsung, Gigabyte максимально продлить длительность работы ноутбука от аккумуляторной батареи не теряя уровня производительности,
    — более низкое энергопотребление позволит сократить расходы на электричество, особенно, если указать данные значения в описанном выше программном продукте RightMark CPU Clock Utility.

    В действительности, подобное низкое рабочее напряжение процессора для оверклоккера говорит всегда об одном, — об его высоком разгонном потенциале. Но нюансам разгона у нас будут посвящены другие статьи, — тема разгона процессора выходит за рамки темы об энергосбережении. Заключение.
    Прочитав статью, у пользователя должен возникнуть вопрос: «Неужели производители настолько неумелые, что сами не понижают рабочее напряжение процессоров, особенно в ноутбуках, где это так критично?» Ответ прост и заключается в том, что процессоры выпускаются массово, ноутбуки также выходят с конвейера. Не в интересах производителей затягивать процесс производства, поэтому кому-то везет и его процессор показывает чудеса разгона, а у кого-то отказывается это делать, у кого-то процессор работает при напряжении 1,175 вольт, а у кого-то он стабилен и при 0,98 вольтах. Покупка электроники, — это всегда лотерея. Что скрыто под этикеткой в каждом конкретном случае, познается только на практике.
    В заключение хочется поблагодарить разработчиков программных продуктов RightMark CPU Clock Utility и Prime95, которым наш портал МегаОбзор вручает золотую почетную медаль. Ждем ваших вопросов и напоминаем, что все, что вы делаете со своей электроникой, вы делаете на свой страх и риск.

    Описанную в статье программу RightMark CPU Clock Utility можно найти по ссылке.
    Описанную в статье программу Prime95 можно найти по ссылке.

    3 лучшие программы для разгона процессора Intel

    Разгоном называется принудительное увеличение тактовой частоты процессора сверх номинальной. Сразу поясним, что означают эти понятия.

    Такт — это условный, очень короткий временной промежуток, за который процессор выполняет определенное количество инструкций программного кода.

    А тактовая частота — это количество тактов за 1 секунду.

    Повышение тактовой частоты прямо пропорционально скорости выполнения программ, то есть разогнанный процессор работает быстрее, чем не разогнанный.

    Содержание:

    Словом, разгон позволяет продлить «активную жизнь» процессора, когда его стандартная производительность перестает отвечать требованиям пользователя.

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

    Что нужно сделать перед разгоном?

    Каждый процессор имеет свой разгонный потенциал — предел тактовой частоты, превышение которого приводит к неработоспособности устройства.

    Большинство процессоров, таких как intel core i3, i5, i7, можно безопасно разогнать лишь на 5–15% от исходного уровня, а некоторые еще меньше.

    Лучше всего из семейства Intel гонится специально ориентированная на это К-серия с разблокированным множителем.

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

    Из этого следует, что для стабильной работы разогнанной системы необходимо хорошее охлаждение.

    Кроме того, учитывая возросшее энергопотребление, может понадобиться замена блока питания на более мощный.

    Непосредственно перед разгоном необходимо сделать три вещи:

    • Обновить BIOS компьютера до последней версии.
    • Убедиться в исправности и надежности установки процессорного кулера.
    • Узнать исходную тактовую частоту своего процессора (посмотреть в BIOS или через специальные утилиты, например, CPU-Z).

    Также перед разгоном полезно протестировать работу процессора на стабильность при максимальной нагрузке. Например, с помощью утилиты S&M.

    После этого пора приступать к «таинству».

    Читайте также:

    Обзор программ для разгона процессоров Intel

    SetFSB

    SetFSB — простая в использовании утилита, позволяющая разгонять процессор «на лету» простым перемещением ползунка.

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

    Программа подходит для разгона как старых моделей процессоров вроде Intel Core 2 duo, так и современных.

    Однако она поддерживает не все материнские платы, а это безусловная необходимость, поскольку разгон осуществляется путем повышения опорной частоты системной шины.

    То есть воздействует она на тактовый генератор (чип PLL или как его называют, клокер), находящийся на материнской плате.

    Узнать, входит ли ваша плата в список поддерживаемых, можно на сайте программы.

    Итак, чтобы разогнать процессор с помощью SetFSB, нужно:

    • Выбрать из списка «Clock Generator» модель клокера, установленного на вашей материнской плате.
    • Кликнуть кнопку «Get FSB». После этого в окне SetFSB отобразится текущая частота системной шины (FSB) и процессора.
    • Осторожно, небольшими шагами передвигать ползунок в центре окна. После каждого перемещения ползунка необходимо контролировать температуру процессора. Например, с помощью программы Core Temp.
    • Выбрав оптимальное положение ползунка, нужно нажать кнопку Set FSB.

    Плюс (а для кого-то минус) утилиты SetFSB в том, что выполненные в ней настройки будут действовать только до перезагрузки компьютера. После повторного старта их придется устанавливать заново.

    Если нет желания делать это каждый раз, утилиту можно поместить в автозагрузку.

    Полезная информация:

    Для разгона также можно использовать программу MSI Afterburner. Это фирменная утилита, для разгона видеокарт от AMD и Nvidia, созданная на ядре Rive Tuner.

    CPUFSB

    CPUFSB — следующая в нашем обзоре программа для разгона процессоров Intel core i5, i7 и других, скачать которую можно с сайта разработчика.

    Если вы знакомы с утилитой CPUCool — комплексным инструментами мониторинга и разгона процессора, то знайте, что CPUFSB — это выделенный из нее модуль разгона.

    Поддерживает множество материнских плат на чипсетах Intel, VIA, AMD, ALI и SIS.

    В отличие от SetFSB, CPUFSB имеет русский перевод, поэтому понять, как с ней обращаться, гораздо легче.

    Принцип работы у этих двух программ одинаков: повышение опорной частоты системной шины.

    Порядок работы:

    • Выберите из списка изготовителя и тип вашей материнской платы.
    • Выберите марку и модель чипа PLL (тактового генератора).
    • Нажмите «Взять частоту» для отображения в программе текущей частоты системной шины и процессора.
    • Повышать частоту также необходимо маленькими шагами, контролируя при этом температуру процессора. После выбора оптимальной настройки нажмите «Установить частоту».

    CPUFSB позволяет задавать частоту шины FSB при последующем запуске программы и при выходе. Текущие настройки также сохраняются до перезагрузки компьютера.

    Вам это может быть интересно:

    SoftFSB

    Завершает наш обзор утилита SoftFSB — еще один инструмент для разгона процессора «на лету». Она не более сложна в обращении, чем предыдущие программы.

    Так же как и они, поддерживает множество моделей материнских плат, различные модели тактовых генераторов и любые процессоры.

    В отличие от платных SetFSB и CPUFSB, пользоваться SoftFSB можно безвозмездно.

    Однако нет гарантии, что она запустится на вашем компьютере, поскольку больше не поддерживается автором.

    Для разгона процессора с помощью SoftFSB вам также нужно знать модель материнской платы, чипа PLL и быть достаточно опытным пользователем.

    Порядок действий:

    • В разделе «FSB select» укажите модель платы и тактового генератора.
    • Нажмите кнопку «GET FSB» для захвата частоты процессора и шины.
    • Контролируя температуру процессора, найдите оптимальную частоту, передвигая ползунок в середине окна.
    • Выбрав подходящее значение, нажмите кнопку «SET FSB».

    Как видите, здесь всё то же самое. По схожему алгоритму работает и масса других программ для разгона процессоров под Windows.

    Кроме универсальных, существуют утилиты с функцией разгона, которые выпускают сами производители материнских плат.

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

    Илон Маск рекомендует:  Что такое код gmp_scan1
  • Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL