Что такое smt mode в биосе ryzen
990x.top
Простой компьютерный блог для души)
SMT Mode — что это в биосе?
Приветствую. Сегодня я постараюсь простыми словами рассказать про одну функцию, которая позволяет повысить производительность процессора. Она давно уже существует в процах Intel и только относительно недавно появилась у AMD.
SMT Mode — что это такое?
Режим, при котором одно физическое ядро процессора представляется в виде двух виртуальных ядер, которые обрабатывают два потока данных вместо одного.
Другими словами это технология многопоточности, при включении которой производительность процессора повышается, потому что удается загрузить процессор по полной.
Для примера — посмотрите некоторые характеристики процессоров Ryzen, где видим, на одно ядро приходится два потока:
Потоки можно отключить, но тогда упадет производительность, правда и греться процессор будет меньше.
И опция SMT Mode именно активирует работу этих потоков. Нет смысла ее отключать.
SMT Mode — включать или нет?
При использовании последнего билда Windows 10, современных игр, последних драйверов, если у вас процессор Ryzen не первого поколения, а последнего — то в большинстве случаев отключение потоков снизит производительность. Сегодня многие баги связанные с многопоточностью уже устранили.
В интернете есть информация, что SMT стоит отключать для игр, в итоге повышается FPS. С чем связано? Смотрите, 6 ядер процессора — это 6 настоящих ядер, полноценных. Быстрых. А 12 потоков — это уже не полноценные ядра, могут выполнять больше работы, но не быстрее, потому что каждый такой поток работает медленнее одного ядра. Но суммарно 12 потоков смогут за одно время выполнить больше работы, чем 6 ядер и это при условии что софт оптимизирован под многопоточность. Но многим играм и правда достаточно 6 настоящих ядер (особенно если высокая частота), чем 12 потоков. Но повторюсь — все зависит от игры и от ее оптимизации.
Если игра оптимизирована под многопоточность, то отключение потоков только снизит FPS.
Кстати, что интересно.. у процессоров AMD FX по сути тоже присутствуют потоки. Хоть компания и представила их как 8-ядерные, там по сути 4 ядра и 8 потоков. Но отключить там потоки нельзя.
Когда только вышел Ryzen, то отключение потоков дало плюс в производительности. Но это было раньше. Сейчас уже все оптимизировали, в том числе и планировщик Windows.
Но при разгоне процессора SMT Mode стоит отключать.
Название раздела BIOS содержащий функцию зависит от производителя. Например на плате ASUS Prime X370 Pro функция SMT расположена здесь:
И имеет два варианта значений — Auto/Disabled. В тоже время на плате AsRock B450 Pro4 функция расположена здесь:
OC Tweaker/CPU Configuration
Значения опции — Enabled/Disabled.
Чтобы проверить отключена ли опция или нет, советую использовать CPU-Z — смотрим сколько ядер (Cores) и сколько потоков (Threads):
Утилита бесплатная, маленькая, не грузит ПК, поэтому советую. Можно скачать с офф сайта.
Если SMT Mode отключено — количество потоков будет равно количеству ядер.
Настройка в материнке MSI (раздел Overclocking\Параметры CPU):
Как видите, название может быть или SMT или Simultaneous Multi-Threading, все зависит от производителя/модели материнки.
Процессору Ryzen 9 3900X отключили SMT и проверили, как это скажется на производительности
В играх это даже полезно
Линейка процессоров Ryzen 3000 сейчас насчитывает шесть моделей, одна из которых выйдет только в сентябре. Всех их объединяет одна особенность — поддержка SMT (аналог Hyper-Threading).
Появятся ли позже модели без поддержки SMT, неясно, но специалисты ресурса TechSpot решили проверить, какова будет производительность в этом случае. Для своего эксперимента они взяли CPU Ryzen 9 3900X и отключили у него поддержку SMT, сравнив при этом как с нормальной версией, так и с Core i9-9900K.
Тестировались процессоры исключительно в играх, потому что в целом сам тест был сделан с подачи читателей, которые попросили провести такое вот сравнение.
Игр было много, так что мы приведём лишь итоговые результаты.
Как можно видеть, в большинстве игр действительно отключение SMT позволяет Ryzen 9 3900X выступать лучше. Но, во-первых, не во всех, а во-вторых, зачастую разница составляет всего несколько процентов, что совершенно некритично.
Таким образом, можно предположить, что, если какие-то модели линейки Ryzen 3000 не будут иметь поддержки SMT, в играх от этого как минимум хуже не станет.
Что такое SMT и как оно работает в приложениях — плюсы и минусы
Пока я радую свои графоманские пристрастия написанием детальной технической статьи про «Windows Performance Station», захотелось поделиться своими мыслями о том, что хорошего и плохого приносит SMT в процессоры «AMD» и «Intel», и как тут поможет «Windows Performance Station».
Тем, кому интересна данная тема, добро пожаловать под кат…
Итак, для начала давайте определимся, что такое SMT.
Как говорит нам википедия, SMT (от англ. simultaneous multithreading) это одновременная многопоточность, т.е. несколько потоков выполняются одновременно, а не последовательно, как это происходит во «временно́й многопоточности».
Многие знают эту технологию под названием «Intel Hyper-Threading», про неё уже всё давно написано, но до сих пор я сталкиваюсь с тем что многие разработчики, и, тем более, обыватели не понимают в чём основная суть «одновременного» выполнения нескольких команд одним ядром процессора и какие проблемы это несёт.
Для начала поговорим про временну́ю многопоточность. До реализации технологии SMT в виде «Hyper-Threading» использовалась технология «временно́й многопоточности».
Тут всё просто, представим, что у нас есть один конвейер и один рабочий (Ядро ЦП), который выполняет операции над числами и записывает результат. Предположим, для этих операций ему нужна отвёртка и гаечный ключ. Операционная система (ОС) складывает нашему рабочему на конвейер по порядку одну операцию для отвёртки, а за ней одну операцию для гаечного ключа. Один рабочий в один момент времени может оперировать или только гаечным ключом или только отвёрткой. Таким образом, выкладывая разное количество разных блоков, ОС определяет приоритет выполнения тех или иных операций от разных приложений. Пропорцию одних блоков к другим мы можем указывать внутри ОС, когда указываем приоритет процесса. Именно это и делают все диспетчеры задач в т.ч. и «Windows Performance Station». Это приоритизирование распространяется далее на механизмы SMT и всю работу с конвейерами.
С появлением SMT ситуация становится чуть сложнее.
Представим конвейер и двух рабочих, у которых есть одна отвёртка и один гаечный ключ на двоих. При этом, каждый из них может оперировать либо только отвёрткой, либо только гаечным ключом. Один конвейер условно делится на две половинки вдоль. SMT позволяет сложить на такой конвейер сразу два числа, одно для работы с отвёрткой, а второе для работы с гаечным ключом, поэтому действия этих рабочих выглядят так:
— Первый рабочий получает операцию для отвёртки, а второй, стоящий напротив, в тот же момент времени, операцию для гаечного ключа, после чего оба записывают результат.
Исходя из этого, когда на конвейере находится операция (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, но у многоядерников не возникает момента простаивания процессора, когда на двоих рабочих одна отвёртка, т.к. в такой терминологии у каждого рабочего есть своя отвёртка и свой гаечный ключ.
Все эти пляски вокруг угадывания процессором того, как распараллелить текущие операции, приводят к серьёзным потерям энергии и к ощутимым фризам, когда происходит голодание разнотипных задач на ядрах с SMT.
Вообще, стоит держать в уме, что «Intel» разработала «Hyper-Threading» одновременно с созданием своих первых многоядерных процессоров «Xeon» и, по сути, эту технологию можно считать эдаким компромиссом когда ставится двойной конвейер на одно ядро.
С подачи маркетологов принято нахваливать то, как хорошо одно ядро может выполнять несколько задач одновременно и как повышается производительность «в некоторых сценариях использования», однако про проблемы, присущие концепции SMT принято умалчивать.
Примечательно, что на сайте «Intel» в рекламном ролике показывается скорее двухядерность, нежели «Hyper-Threading», тот кто дочитал до этого момента, наверняка уже догадался почему 🙂
Изображение из видео:
Более точное изображение:
Какой вывод можно здесь сделать и что улучшить?
Особенность отображения загрузки логических ядер в ОС Windows вводит путаницу об информации реальной загруженности ядер с SMT. Если Вы видите, что два соседних ядера заняты
50% это может означать две вещи:
1) оба ядра выполняют два параллельных расчёта и загружены на 50% (тут всё ок).
2) оба ядра выполняют один рассчёт попеременно (как если бы два рабочих через такт передавали друг-другу гаечный ключ).
Поэтому, если Вы видите, что все ядра Вашего процессора с SMT загружены на 50% и выше нагрузка не поднимается, скорее всего это значит, что утилизация процессора составляет 100% но он занят однотипной задачей, которую не может разделить для выполнения на SMT!
Вместе с очевидными плюсами, SMT приносит фризы в чувствительные для времени выполнения задачи (воспроизведение видео/музыки или FPS в играх). Именно поэтому, многие геймеры наблюдают падение FPS при включенном SMT/Hyper-Threading.
Как я и написал ранее, приложение «Windows Performance Station» может сортировать блоки, выкладываемые на конвейер, ещё на этапе обработки задач ядром ОС. С помощью приоритетов и разделения процессов по ядрам процессора, можно выкладывать определённые блоки на конвейер в нужном количестве и класть разнотипные блоки для разных виртуальных ядер, чтобы не наступало голодание разнотипных задач. Именно для этой задачи динамического анализа в «Windows Performance Station» мы объединили нейросеть и диспетчер задач. В итоге, нейросеть анализирует задачу и раскладывает её в зависимости от полученных данных по разным правилам, благодаря чему, каждое ядро в паре SMT выполняет разные задачи.
Благодаря такому подходу, процессоры с SMT в Windows могут более эффективно работать с многозадачностью и многопоточными процессами. И именно поэтому нас весьма порадовало появление SMT в новых процессорах «AMD Ryzen».
Приложение «Windows Performance Station» бесплатное и не содержит рекламы, его можно скачать с нашего сайта по ссылке в спойлере:
Более подробно про Windows Performance Station можно прочитать в моей предыдущей статье
Большое спасибо всем, кто дочитал до конца.
Что такое smt mode в биосе ryzen
Популярный французский ресурс Hardware.fr провёл собственное блиц-исследование влияния числа ядер в составе процессоров AMD Ryzen и поддержки многопоточности на современные приложения и популярные игры. С этой точки зрения процессоры Ryzen очень удобны. Поддержку SMT можно деактивировать, а на разницу в ядрах тактовая частота соответствующих моделей Ryzen практически не влияет. Так, частоты 6-ядерной модели R5 1600X и 8-ядерной R7 1800X совершенно одинаковы и равны 3.6/3.7 ГГц. Так что теоретически разница в производительности этих моделей приблизится к 33% и только за счёт разницы в количестве ядер/потоков. Модель Ryzen 5 1500X с 4 ядрами имеет на 100 МГц большую частоту, что даёт ей теоретическое превосходство в 2,8% по сравнению с частотами 6- и 8-ядерных моделей, тогда как «ядерное» превосходство между Ryzen 5 1500X и R5 1600X достигает 50%.
реклама
Источник взял за 100% производительность 4-ядерной модели Ryzen 5 1500X. Насколько изменилась производительность системы по мере увеличения числа ядер до 6 и 8 штук, смотрим ниже на графике.
Профессиональные приложения, что очевидно, в массе хорошо отозвались на увеличение числа ядер и разница в скорости работы 4-ядерной системы и 6-ядерной действительно приближалась к 50%. Особенно хорошо на рост числа ядер реагировали Stockfish, Komodo и кодек x264. Три приложения, однако, вели себя по-другому. Программы 7-Zip и WinRAR показали несколько худшую масштабируемость, но за это надо винить недостатки в работе подсистемы памяти платформы AMD Ryzen. Плохой результат получился при запуске Lightroom, что можно объяснить тем, что ПО ещё не умеет работать с новыми процессорами AMD. В среднем, переход с модели 1500X на 1600X дал 44% прироста производительности, а переход с 1600X на 1800X — добавил 26,8%. В обоих случаях заметно приближение к теоретическому пределу.
Как изменение числа ядер влияет на игры, смотрим на другом графике (выше). В отличие от приложений, как видим, игры хуже оптимизированы для работы на многоядерных платформах. Но эффект от роста ядер всё же есть. Лучше всего на увеличение ядер отозвалась игра Warhammer (с патчем 1.6.0, который корректно распознаёт SMT). При переходе с 4 ядер на 6 прирост скорости составил 26,9%. А вот переход с 6 ядер на 8 отозвался скромным приростом на 3,4%. Другой игрой, охотно откликающейся на ядра, стала Battlefield 1. Хуже всего на рост числа ядер отреагировала игра Project Cars. В среднем переход с 1500X на 1600X показал прирост производительности в играх на 12,7%. Переход с 6 ядер на 8 повысил скорость в играх только на 2,6%.
Теперь о влиянии многопоточности (SMT) на приложения. Отключение технологии SMT принято за 100%. Это также интересно по той причине, что модели Intel Core i5 не поддерживают HyperThreading.
Глядя на график сразу бросается в глаза то, что с SMT лучше работают процессоры с меньшим числом ядер. После активации SMT отдельные приложения показывают рост до 40% и 47% (Komodo и Visual Studio). Кодек x264 ровно отреагировал на отключение/включение SMT, а кодек x265 показал перекос в сторону меньшего числа ядер. Редактор Lightroom снова отличился — ушёл в минус после активации многопоточности, что говорит об отсутствии поддержки у пакета этой технологии.
Simultaneous Multithreading (SMT) в топовом AMD Ryzen 7 2700X: тестирование в синтетике и играх
Современные процессоры столь сложны, что эффективно задействовать одновременно все их узлы довольно сложно. Именно поэтому, стремясь повысить КПД, компания Intel уже давно представила технологию Hyper-Threading. У новых процессоров AMD Ryzen тоже реализован такой подход.
Представьте, что вам нужно построить дом и у вас даже есть помощники, но каждый из них специалист в чем-то одном. Если вы будете работать строго поочередно, то процесс затянется на очень долго, поэтому лучше попробовать одновременно выполнять разные задачи, когда это возможно. Тот же принцип применим к процессорам: можно организовать параллельный поток обработки данных на простаивающих узлах.
В переводе с английского SMT (Simultaneous MultiThreading) означает «одновременная многопоточность». Ее суть в том, что операционная система представляет каждое физическое ядро процессора в виде двух логических или виртуальных ядер, и направляет им на обработку два потока данных вместо одного. Поскольку процессам приходится конкурировать за ресурсы одного ядра, то в теории его узлы полнее загружены работой и не простаивают, то есть повышается эффективность.
Наибольшая сложность состоит в том, чтобы хорошо реализовать гибкую систему доступа потоков к вычислительным ресурсам ядра, и они не тормозили друг друга. Для этого в разных блоках микроархитектуры AMD Zen применяются 4 способа. Зеленые блоки используют квантование по времени, то есть отводят одинаковое время для каждого потока. Если система на основе внутреннего анализа выделяет какой-то из двух потоков в качестве приоритетного, то он первым получает доступ к синим блокам. Но один из двух потоков может быть исходно помечен как более приоритетный, в таком случае он первым получает доступ к бирюзовым блокам. Остальные узлы, раскрашенные красным, действуют по принципу «кто первым встал, того и тапки».
Кроме того, для эффективной работы недостаточно реализовать технологию SMT на аппаратном уровне процессора. Ее также должны поддерживать операционная система, драйверы и прикладные программы. Поэтому поначалу с AMD Zen было не все гладко в этом плане. Например, система могла по максимуму загрузить два потока одного ядра или половины ядер, в то время как остальные простаивали. Само собой, вместо прироста получалось замедление работы. За прошедший год ситуация в этом плане должна была заметно улучшиться, но так ли это на самом деле? Давайте проверим.
В основе тестового стенда находится 8-ядерный флагман AMD Ryzen 7 2700X, который может работать в 16-поточном режиме. Он установлен на материнскую плату MSI X470 Gaming M7 AC и охлаждается СВО от be quiet!. Чтобы VRM материнской платы не перегревался и не снижал производительность системы, сверху мы положили вентилятор Noctua NF-A14 industrialPPC. Операционная система и требовательные к дисковой подсистеме игры были установлены на SSD серии GOODRAM Iridium PRO, остальные – на HDD от Seagate. Обработка графики была возложена на видеокарту MSI GeForce GTX 1070 Ti GAMING 8G с эффективным кулером. Все это добро было собрано на Thermaltake Core P5 TGE, а за питание отвечал блок серии Seasonic PRIME.
Сразу же отметим, что мы решили зафиксировать частоту процессора на отметке 4 ГГц, чтобы технологии динамического разгона не влияли на результаты тестирования. А для повышения стабильности тактовой частоты вручную выключили опцию Spread Spectrum. Она позволяла тактовому генератору выдавать плавающую частоту, чтобы снизить электромагнитные наводки от компьютера на окружающее оборудование. Сама же технология SMT по умолчанию активна, но в BIOS ее можно отключить.
Переходим к тестированию, и начнем его с нескольких синтетических бенчмарков. В архиваторе 7-ZIP преимущество от работы технологии SMT оценивается в 16-59%.
Активация этой опции в WinRAR позволяет поднять общую скорость на 19%.
Очень интересными получились результаты в CINEBENCH R15: производительность исключительно процессорной части повышается на 40% при использовании SMT. Зато в связке с видеокартой все наоборот – результаты улучшаются на 10% после ее деактивации.
В тесте x265 HD Benchmark после выключения многопоточности время кодирования возросло на 12%, т.е. и в этой задаче от многопоточности есть некоторый прок.
RealBench в целом положительно оценивает работу технологии SMT, но прирост зависит от конкретной задачи: при редактировании фото в GIMP, мультизадачном режиме и в тесте OpenCL бонус составил всего 2-3%. И лишь при кодировании видео показатель улучшился на 23%.
Как видим, в рабочих задачах в среднем бонус от использования SMT будет на уровне 18%, а в некоторых хорошо оптимизированных под многопоточность приложениях ускорение достигнет 40% и более. Пока все неплохо.
А какое положение дел в играх? Ведь именно тут можно годами ждать оптимизацию и не дождаться, а инертные движки до сих пор учатся работать на многоядерных процессорах.
Тест будем проводить в два этапа: сначала запустим бенчмарки в HD-разрешении, чтобы умышленно снизить нагрузку на видеокарту и лучше прочувствовать разницу; потом перейдем в Full HD, чтобы посмотреть, как это заметно при более реальных условиях.
В основном для мониторинга будем использовать утилиту FPS Monitor. Она позволяет настраивать интерфейс и выводить не только процент загрузки процессора и видеокарты, но и полезную статистику. Например, показатели 1 и 0,1% Low, они же редкие и очень редкие события, корректнее отображают уровень комфорта в игре, чем минимальный FPS. Чем меньше между ними разница и чем они ближе к среднему FPS, тем плавнее видеоряд и комфортнее геймплей. И не обращайте внимания на температуру процессора – в данном случае она отображается некорректно.
Начнем с престарелого движка Counter-Strike: Global Offensive. При автонастройках система выбрала очень высокие параметры и средний FPS был на 6% выше в системе с SMT. Видимо фоновые боты хорошо параллелятся. Зато статистика 1 и 0,1% Low была на 7-27% лучше при работе в 8-поточном режиме.
Тот факт, что старые игры больше ценят производительность ядра, чем многопоточность, хорошо видно и на примере Far Cry Primal. Здесь уже фиксируем прирост по всем показателям на уровне 12-20%.
Отключение SMT в Rainbow Six Siege также приносит позитивный эффект. И хотя мониторинг показывает неплохую балансировку задач между 16 логическими ядрами, все же в условиях отсутствия конкуренции за ресурсы бонус от производительности может достигать 35%.
В теории DirectX 12 позволяет лучше распределять задачи между ядрами и эффективнее использовать ресурсы CPU, поэтому запустив Deus Ex: Mankind Divided в этом режиме при ультра пресете, мы ожидали увидеть преимущество за SMT, но по факту его не оказалось. Наоборот, работа в 8-поточном режиме обеспечила преимущество в 10-16%.
В Hitman при том же API четкой тенденции не прослеживается: средний фреймрейт улучшается от выключения SMT на 2,5%, а показатель 1% Low на 10% ухудшается. В целом же статистика довольно похожая, поэтому в данном случае наличие или отсутствие SMT роли не играет.
Еще более равная ситуация наблюдается в Assassin’s Creed Origins при максимальных настройках: разница в показателях составляет 2-5% в пользу SMT, но на практике это 1-2 кадра/с, что вполне можно списать на погрешность измерения.
И лишь Far Cry 5 демонстрирует заметный выигрыш от включения многопоточности на Ryzen 7 2700X, правда, только в одном показателе очень редких событий – прирост составляет 53%. По остальным разница не превышает 4%, что можно списать на погрешность измерения.