Что такое SMT и как оно работает в приложениях — плюсы и минусы

в 14:02, , рубрики: AMD Ryzen, hyper-threading, windows, windows performance station, winperst, машинное обучение, оптимизация, Программирование, разработка под windows

Пока я радую свои графоманские пристрастия написанием детальной технической статьи про «Windows Performance Station», захотелось поделиться своими мыслями о том, что хорошего и плохого приносит SMT в процессоры «AMD» и «Intel», и как тут поможет «Windows Performance Station».

image

Тем, кому интересна данная тема, добро пожаловать под кат…

Итак, для начала давайте определимся, что такое SMT.

Как говорит нам википедия, SMT (от англ. simultaneous multithreading) это одновременная многопоточность, т.е. несколько потоков выполняются одновременно, а не последовательно, как это происходит во «временно́й многопоточности».

Многие знают эту технологию под названием «Intel Hyper-Threading», про неё уже всё давно написано, но до сих пор я сталкиваюсь с тем что многие разработчики, и, тем более, обыватели не понимают в чём основная суть «одновременного» выполнения нескольких команд одним ядром процессора и какие проблемы это несёт.

Для начала поговорим про временну́ю многопоточность. До реализации технологии SMT в виде «Hyper-Threading» использовалась технология «временно́й многопоточности».

Тут всё просто, представим, что у нас есть один конвейер и один рабочий (Ядро ЦП), который выполняет операции над числами и записывает результат. Предположим, для этих операций ему нужна отвёртка и гаечный ключ. Операционная система (ОС) складывает нашему рабочему на конвейер по порядку одну операцию для отвёртки, а за ней одну операцию для гаечного ключа. Один рабочий в один момент времени может оперировать или только гаечным ключом или только отвёрткой. Таким образом, выкладывая разное количество разных блоков, ОС определяет приоритет выполнения тех или иных операций от разных приложений. Пропорцию одних блоков к другим мы можем указывать внутри ОС, когда указываем приоритет процесса. Именно это и делают все диспетчеры задач в т.ч. и «Windows Performance Station». Это приоритизирование распространяется далее на механизмы SMT и всю работу с конвейерами.

image

С появлением SMT ситуация становится чуть сложнее.

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

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

image

Исходя из этого, когда на конвейере находится операция (A и B) с одной стороны и (D и E) с другой стороны — всё отлично, но при распараллеливании цепочки вычислений могут получиться две проблемы:

1. С одной стороны конвейера оказалось действие (A и B) = С, а с другой (D и E) = C,
т.е. нужно записать сначала одно значение C, а потом второе значение C, но не одновременно (конфликт по управлению).

2. С одной стороны конвейера оказалось действие (A и B) = C, а с другой (A и C) = D,
т.е. нужно сначала посчитать C, а потом посчитать D, но не одновременно (конфликт по данным).

Оба конфликта вызывают задержку выполнения инструкций и решаются последовательным выполнением команд. Чтобы уменьшить такие задержки были введены элементы процессора под названием предсказатель переходов и кэш процессора.

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

В свою очередь, кэш процессора, необходим для быстрого решения второй проблемы, когда мы останавливаем решение выражения (A и C) = D и пишем в кэш результат выполнения (A и B) = C, после чего сразу вычисляем (A и C) = D.

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

image

Все эти пляски вокруг угадывания процессором того, как распараллелить текущие операции, приводят к серьёзным потерям энергии и к ощутимым фризам, когда происходит голодание разнотипных задач на ядрах с SMT.

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

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

Примечательно, что на сайте «Intel» в рекламном ролике показывается скорее двухядерность, нежели «Hyper-Threading», тот кто дочитал до этого момента, наверняка уже догадался почему :)

Изображение из видео:

image

Более точное изображение:

image

Какой вывод можно здесь сделать и что улучшить?

Вместе с очевидными плюсами, SMT приносит фризы в чувствительные для времени выполнения задачи (воспроизведение видео/музыки или FPS в играх). Именно поэтому, многие геймеры наблюдают падение FPS при включенном SMT/Hyper-Threading. Так как же нам уменьшить эти минусы и не потерять плюсы SMT?

Вот тут как раз нам и поможет управление задачами в ОС.

Как я и написал ранее, мы можем сортировать блоки, выкладываемые на конвейер, ещё на этапе обработки задач ядром ОС. С помощью приоритетов и разделения процессов по ядрам процессора, можно выкладывать определённые блоки на конвейер в нужном количестве и класть разнотипные блоки для разных виртуальных ядер, чтобы не наступало голодание разнотипных задач. Именно для этой задачи динамического анализа в «Windows Performance Station» мы объединили нейросеть и диспетчер задач. В итоге, нейросеть анализирует задачу и раскладывает её в зависимости от полученных данных по разным правилам, благодаря чему, каждое ядро в паре SMT выполняет разные задачи.

image

Благодаря такому подходу, процессоры с SMT в Windows могут более эффективно работать с многозадачностью и многопоточными процессами. И именно поэтому нас весьма порадовало появление SMT в новых процессорах «AMD Ryzen».

Приложение «Windows Performance Station» бесплатное и не содержит рекламы, его можно скачать с нашего сайта по ссылке в спойлере:

Скачать

Более подробно про Windows Performance Station можно прочитать в моей предыдущей статье

Windows Performance Station или как я учил комп работать эффективно

Большое спасибо всем, кто дочитал до конца.

Автор: RollNoir

Источник


  1. Виктор:

    О, а мне WPS Performance Station посоветовал друг, он же верстальщик, за компом своим сутками сидит, так что его мнению доверяю)))). А я постоянно жаловался на проблемы с компьютером. Он не выполнял свои функции, так как было надо мне, времени съедал уйму. Из-за большого количества программ комп постоянно зависал и тормозил. После установки данного приложения, процессы распределились по приоритетам и моя проблема решилась.

  2. Павел:

    Программа подняла мой компьютер с колен. Да-да :D Раньше все таак тупило, думал вирусы. Установил и тормоза пропали. Процессы меньше нагружаются. Очень неплохо. Буду советовать друзьям и родственникам.

  3. Николай:

    Вполне неплохо. В проге я не нуждался но стало интересно, что то ее хвалят периодически в сети. И действительно, протестил и заметил изменения в процессе работы некоторых задач в диспетчере. Нагрузка была снижена. Должен заметить – явно не зря скачал.

  4. Евгений:

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

  5. Анита:

    Сидела на форуме ит-ишном, забрела туда в поисках подсказок по установке одной штукенции и наткнулась на тему с ускорением винды. По итогу узнала о такой программе, как диспетчер задач WPS Performance Station, любопытство победило, перспектива разогнать систему согрела душу, решила попробовать. Установка очень легкая, кстати. Что по итогу? Комп реально заработал быстрее, там где раньше тупил – сейчас четко работает. Знаю, что чудес не бывает, но программа толковая 100%

  6. sasha:

    Хотя бы для ознакомления скачать точно стоит. У меня более-менее норм железо, но не могу не отметить прибавки несколько фпс в гта. Вряд ли совпадение :) софт рабочий, если разобраться.

  7. Евгений:

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

  8. Анна:

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

  9. Артур:

    С тех пор, как начал заниматься фрилансом, мне стала важна скорость действий на ноутбуке. Поэтому установил себе WPS Performance Station, чтобы все программы ставились по приоритету и быстрее выполняли свои действия.

  10. Роман:

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

  11. Валерий:

    Intel Hyper-Threading хорошая технология, но, как мы видим, со своими недостатками. В таком случае WPS является отличным решением даже для старых моделей процессоров; которые не только не поддерживают HT, так ещё и являются одноядерными!

  12. Иван:

    WPS вообще находка. Легко и без проблем оптимизирует ресурсы и работу пк, после него в любой игре прирост фпс от 15 и до 50. Очень радует утилита, нашел ее по совету на одном из форумов.

  13. Игорь:

    По совету знакомого “компьютерщика” решил потестить данное приложение, по результатам теста, оно мне очень понравилось из-за отсутствия лагов и оптимизации моего компьютера.

  14. Артем:

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

  15. Дима:

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

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js