Нажмите "Enter", чтобы перейти к содержанию

Simultaneous multithreading: Что такое 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», тот кто дочитал до этого момента, наверняка уже догадался почему 🙂

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

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

https://www. intel.ru/content/www/ru/ru/architecture-and-technology/hyper-threading/hyper-threading-technology.html

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

Особенность отображения загрузки логических ядер в ОС 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» бесплатное и не содержит рекламы, его можно скачать с нашего сайта по ссылке в спойлере:

Скачать

winperst.ru/download

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

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

habrahabr.ru/post/320110

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

Hyper-Threading, Simultaneous MultiThreading



Hyper-Threading, Simultaneous MultiThreading

→ Устройства → Процессор → Технологии и инструкции, используемые в процессорах → Hyper-Threading, Simultaneous MultiThreading

25.03.2017 г.

В процессорах Intel технология многопоточности называется Hyper-Threading (HT), в процессорах AMD — Simultaneous MultiThreading (SMT).

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

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

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

Наличие Hyper-Threading в процессоре Intel предполагает, что один из потоков вычислений, обрабатываемых его ядром, является основным. Второй поток выполняется только в те периоды времени, когда ресурсы ядра по каким-то причинам не полностью заняты или временно не заняты основным потоком (оста́точный принцип).

В некоторых случаях, на второй поток может приходиться до 50% ресурсов ядра. Но такое бывает не часто. В приложениях, в которых основной поток эффективно использует ядро, пользы от Hyper-Threading будет значительно меньше. В среднем, этот показатель составляет около 20-30%. В процессоре без Hyper-Threading эти ресурсы попросту не используются.

Результаты тестов дают основания считать, что алгоритм работы Simultaneous MultiThreading, используемый в процессорах AMD, отличается от Hyper-Threading в сторону большего равноправия обоих потоков. В одних приложениях это себя оправдывает (рендеринг), в других — приводит к снижению производительности (видеоигры).

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

ПОДЕЛИТЬСЯ:

НАПИСАТЬ АВТОРУ

Похожие материалы

Технологии и инструкции, используемые в процессорах

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

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

Так, полюбившийся многим браузер Google Chrome не работает без поддержки процессором SSE2. Инструкции AVX могут в разы ускорить обработку фото- и видеоконтента. А недавно один мой знакомый на достаточно быстром Phenom II (6 ядер) не смог запустить игру Mafia 3, поскольку его процессор не поддерживает инструкции SSE4.2.

Если аббревиатуры SSE, MMX, AVX, SIMD вам ни о чем не говорят и вы хотели бы разобраться в этом вопросе, изложенная здесь информация станет неплохим подспорьем.

ΞподробнееΞ

Таблица совместимости процессоров и материнских плат AMD

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

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

ΞподробнееΞ

Сравнение процессоров

В таблицу можно одновременно добавить до 6 процессоров, выбрав их из списка (кнопка «Добавить процессор»). Всего доступно больше 2,5 тыс. процессоров Intel и AMD.

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

Дополнительные рекомендации по использованию таблицы можно найти внизу страницы.

ΞподробнееΞ

Спецификации процессоров

В этой базе собраны подробные характеристики процессоров Intel и AMD. Она содержит спецификации около 2,7 тысяч десктопных, мобильных и серверных процессоров, начиная с первых Пентиумов и Атлонов и заканчивая последними моделями.

Информация систематизирована в алфавитном порядке и будет полезна всем, кто интересуется компьютерной техникой.

ΞподробнееΞ

Таблица процессоров

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

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

Для получения подробной информации о любом процессоре достаточно нажать на его название.

ΞподробнееΞ

Как проверить стабильность процессора

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

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

ΞподробнееΞ

ПОКАЗАТЬ ЕЩЕ

Сайт использует файлы cookie для обеспечения наилучшего опыта пребывания на нем. В случае продолжения использования этого сайта, мы будем считать, что вы с этим согласны.

Ок

Подробнее

X

Дорогой друг!

У тебя установлен блокировщик рекламы (AdBlock, AdBlocker или подобный).

Реклама — единственное средство существования этого сайта. Добавь www.chaynikam.info в белый список блокировщика, чтобы сайт не пришлось закрыть.

Домашняя страница одновременной многопоточности

Домашняя страница одновременной многопоточности
  • Обзор и воздействие
  • человека
  • Публикации
  • Исследования Темы (внутренние CSE)
  • Финансирование
  • Коммерческие машины & Пресс-релизы
  • Связанные проекты
  • Общедоступный СМТ симулятор

Одновременная многопоточность процессор дизайн, сочетающий аппаратную многопоточность с суперскалярным процессором технология, позволяющая нескольким потокам выполнять инструкции в каждом цикле. В отличие от других аппаратных многопоточных архитектур (таких как Tera MTA), в котором активен только один аппаратный контекст (т. е. поток). в любом заданном цикле SMT позволяет всем контекстам потока одновременно конкурировать за ресурсы процессора и делиться ими. В отличие от обычных суперскалярные процессоры, которые страдают от недостатка параллелизм на уровне инструкций, одновременное использование многопоточности несколько потоков, чтобы компенсировать низкий уровень ILP в однопоточном режиме. следствием производительности является значительно более высокая пропускная способность команд и программные ускорения для различных рабочих нагрузок, включая коммерческие базы данных, веб-серверы и научные приложения в обоих многопрограммные и параллельные среды.

Одновременная многопоточность уже была влияние как на академическое, так и на коммерческое сообщество. Проект имеет подготовил множество статей, большинство из которых были опубликованы в журналах или лучшие конференции по архитектуре журнального качества, и одна из которых была последней бумагой, выбранной для празднования 25-летия . Антология Международного симпозиума по компьютерной архитектуре , конкурс, в котором критерием приемлемости было воздействие. СМТ проект Вашингтонского университета также породил другие университетские проекты в одновременной многопоточности. Наконец, несколько Американские производители микросхем (Intel, IBM, Sun и Compaq (когда еще поддерживали линейку микропроцессоров Alpha) разработали и изготовили Процессоры SMT для рынка высокопроизводительных настольных ПК. Несколько стартапов также создание процессоров SMT.




  • Одновременная многопоточность: максимизация встроенного параллелизма ( Абстрактный, Постскриптум)
  • Дин Таллсен, Сьюзан Эггерс, и Генри Леви,
    Материалы 22-го ежегодного международного симпозиума по компьютерам Архитектура , июнь 1995 г.
    В этой статье продемонстрирована возможность одновременной многопоточности. с ускорением на основе моделирования на нескольких моделях станков SMT. Он был выбран для показа в Антология 25-летия Международный симпозиум по компьютерной архитектуре .
  • Использование выбора: выборка инструкций и выдача на Реализуемый одновременный многопоточный процессор ( Абстрактный, Постскриптум)
    Дин Таллсен, Сьюзан Эггерс, Джоэл Эмер, Генри Леви Джек Ло, и Ребекка Штамм
    Материалы 23-го ежегодного международного симпозиума по Компьютерная архитектура , 19 мая96.
    Мы разработали микроархитектуру SMT, включая новую инструкцию единица выборки, которая получала инструкции от двух «наиболее прибыльных» резьбы каждый цикл. При проектировании микроархитектуры мы учли все три из наших первоначальных проектных целей: (1) демонстрация поверхностного монтажа увеличила пропускная способность при выполнении нескольких потоков; (2) что SMT не деградирует однопоточная производительность; и (3) реализация SMT должна быть прямое расширение текущего распространенного процессора, выходящего из строя технологии. Последние два критерия были необходимы для обеспечения плавного переход в коммерческий мир. Эта статья была выбрана для Чтения по компьютерной архитектуре , изд. М.Д. Хилл, Н.П. Юппи и Г.С. Сохи, Морган Кауфман, 1999.
  • Проблемы компиляции для одновременной многопоточности Процессор ( постскриптум)
    Джек Ло, Сьюзан Эггерс, Генри Леви и Dean Tullsen
    Proceedings of the First SUIF Compiler Workshop , январь 1996.
  • Преобразование параллелизма на уровне потоков в уровень инструкций Параллелизм через одновременную многопоточность ( Абстрактный, постскриптум, PDF)
    Джек Ло, Сьюзан Эггерс, Джоэл Эмер, Генри Леви Ребекка Штамм и Дин Таллсен
    ACM Transactions on Computer Systems , август 1997 г.
    Однокристальные мультипроцессоры (CMP или от 2 до 4 суперскалярных процессоров на один чип) — это еще одна новая конструкция процессора, которая, вероятно, конкурировать с одновременной многопоточностью на коммерческом рынке 3, чтобы через 4 года. Наши эксперименты показывают, что процессоры SMT могут превосходить CMP при выполнении крупнозернистых параллельных программ (т. естественная нагрузка для КМП) в среднем на 60%. СМТ имеет преимущество в производительности, потому что он динамически выделяет оборудование ресурсы для любых потоков, которые в них нуждаются в данный момент; ЦМП, на с другой стороны, статически разделяет одни и те же аппаратные ресурсы для всех темы, на все времена. В этой статье тщательно подсчитаны потери CMP производительность из-за статического секционирования, на каждом ресурсе основа. В итоге покажем, что даже отдав каждый процессор на CMP аппаратные ресурсы одного процессора SMT не могут превзойти то, что динамическое разбиение покупает SMT.
  • Одновременная многопоточность: платформа следующего поколения Процессоры ( PDF)
    Сьюзан Эггерс, Джоэл Эмер, Генри Леви Джек Ло, Ребекка Штамм и Дин Таллсен
    IEEE Micro , сентябрь/октябрь 1997 г.
    В этой статье оценивается SMT с учетом двухлетнего опыта проектирования и анализ производительности за нашими поясами. В нем описывается микроархитектура, включая расширенный конвейер для доступа к многоконтекстный регистровый файл и модуль выборки пользовательских инструкций, и представили наши самые последние исследования производительности в то время, в том числе сравнение с широко распространенными суперскалярами, традиционной многопоточностью и чип-мультипроцессоры, выполняющие как параллельную, так и многопрограммную рабочая нагрузка, состоящая из SPEC95 и SPLASH-2. Бумага был частью специальной серии IEEE Computer на тему «Как использовать миллиард транзисторы».
  • Настройка оптимизации компилятора для одновременной многопоточности ( Абстрактный, постскриптум, PDF)
    Джек Ло, Сьюзан Эггерс, Генри Леви, Суджай Парех, и Дин Таллсен
    Материалы 30-го ежегодного международного симпозиума по Микроархитектура , декабрь 1997 г., стр. 114-124.
    Поскольку одновременная многопоточность меняет несколько фундаментальных архитектурные допущения, на которых основываются многие машинно-зависимые компиляторы. оптимизации, такие как степень, в которой потоки совместно используют иерархия кеша и важность сокрытия задержек с помощью кода планирование, само собой разумеется, что оптимизации компилятора, которые полагаются эти допущения, возможно, придется применять к SMT по-другому. Мы подтвердил эту гипотезу для трех оптимизаций, которые обычно используемые и обычно очень прибыльные: распределение циклов, мозаичное размещение циклов и спекуляция софтом. Мы обнаружили, что при компиляции программ для SMT, оптимизация либо должна была сочетаться с радикально отличающимися политики, чем используются в настоящее время, или не используются вообще.
  • Анализ производительности рабочей нагрузки базы данных при одновременном Многопоточные процессоры ( Абстрактный, постскриптум, PDF)
    Джек Ло, Луис Баррозу, Сьюзан Эггерс, Курош Гарачорлоо, Генри Леви, и Суджай Парех
    Материалы 25-го ежегодного международного симпозиума по Компьютерная архитектура , июнь 1998 г.
    В дополнение к мультипрограммированию и параллельным рабочим нагрузкам мы также изучал SMT, выполняющий коммерческую рабочую нагрузку базы данных (Oracle), чтобы оценить его производительность в качестве сервера базы данных. Коммерческие рабочие нагрузки проблема для всех компьютеров, потому что у них очень плохая память производительность подсистемы. Мы разработали операционные системы и механизмы уровня приложений, улучшающие производительность SMT на базы данных за счет уменьшения конфликтов между потоками в иерархии памяти. Результатом было 3-кратное улучшение по сравнению с суперскаляром широкого выпуска, когда выполнение транзакций Oracle.
  • Поддержка мелкозернистой синхронизации на одновременном Многопоточный процессор ( Постскриптум)
    Дин Таллсен, Джек Ло, Сьюзан Эггерс, и Генри Леви
    Материалы 5-го Международного симпозиума по высоким Архитектура высокопроизводительного компьютера , январь 1999 г.
    Эффективность механизма синхронизации процессора определяет степень детализации параллелизма программ, которые на нем выполняются. Синхронизация на обычных мультипроцессорах стоит довольно дорого, потому что связь между параллельными потоками должна осуществляться через Память. Следовательно, приложения должны быть распараллелены на достаточно крупнозернистый уровень. Поскольку параллельные потоки являются резидентными на SMT процессор, синхронизация их может производиться локально (на процессоре) а не через память. Синхронизация SMT достаточно легкий, что одновременно улучшает производительность синхронизации текущие крупнозернистые параллельные программы и позволяет мелкозернистые распараллеливание новых кодов, которые нельзя распараллелить с текущими механизмы синхронизации.
  • Программно-управляемое отключение реестра для одновременного Многопоточные процессоры ( Абстрактный, Постскриптум)
    Джек Ло, Суджай Парех, Сьюзан Эггерс, Генри Леви, и Дин Таллсен
    Транзакции IEEE в параллельных и распределенных системах , Сентябрь 1999 г.
    Мы разработали операционные системы и ориентированную на компилятор архитектуру. методы освобождения регистров SMT раньше, чем это можно сделать с помощью аппаратное переименование текущего регистра. Механизмы свободного простаивания оборудования контексты (поток завершился) и регистрируется в активных контекстах после их последнего использования. Последствием производительности является либо снижение в размере регистрового файла (полезно, если доступ к регистровому файлу определяет время цикла процессора) или увеличение производительности для данного размер файла. Методы, основанные на компиляторе, имеют гораздо более широкое применение. чем процессоры SMT — они также улучшают производительность на любых вышел из строя процессор.
  • Характеристика архитектур процессоров для программируемых Сеть Интерфейсы ( PDF)
    Патрик Кроули, Марк Э. Фьючински Жан_Лу Баер, и Брайан Н. Бершадь.
    Материалы Международной конференции по Суперкомпьютер , Май 2000 г.
    В этой статье описываются текущие и будущие сетевые процессоры. приложение рабочих нагрузок и приходит к выводу, что SMT лучше подходит для сетевого узла среда чем агрессивные неупорядоченные суперскаляры, мелкозернистые многопоточные процессоры и чип-мультипроцессоры (CMP).
  • Анализ поведения операционной системы на одновременном Многопоточная архитектура ( Абстрактный, постскриптум, PDF)
    Джош Редстоун, Сьюзан Эггерс, и Генри Леви.
    Материалы 9-й Международной конференции по архитектурному Поддерживать для языков программирования и операционных систем , Ноябрь 2000 г.
    В этой статье представлен наш первый анализ выполнения операционных систем. на одновременный многопоточный процессор. Для проведения этого исследования мы модифицировал операционную систему Digital 4.0 Unix для работы на симулированном ЦП SMT на базе процессора Compaq Alpha. Мы выполнили эту среду путем интеграции нашего симулятора набора инструкций SMT Alpha в SimOS симулятор машины. В качестве нашей основной рабочей нагрузки мы выполнили Apache Веб-сервер, работающий на 8-контекстной SMT под Digital Unix. Наши результаты продемонстрировать микроархитектурное влияние рабочей нагрузки, интенсивно использующей ОС на одновременном многопоточном процессоре и дают представление о Требования ОС к веб-серверу Apache с интенсивным использованием ОС.
  • Чувствительное к потоку планирование для процессоров SMT ( Абстрактный, постскриптум, PDF)
    Суджай Парех, Сьюзан Эггерс, и Генри Леви.
    Технический отчет Вашингтонского университета, 02 апреля 2000 г.
    В этой статье рассматривается планирование с учетом потоков для процессоров SMT. Когда существует больше потоков, чем контекстов аппаратного выполнения, операционная система отвечает за выбор потоков для выполнения в любой момент времени. мгновенно, определяя, какие потоки будут конкурировать за ресурсы. Чувствительное к потоку планирование использует обратную связь о поведении потока для выбора лучший набор потоков для совместного выполнения, чтобы максимально использовать процессор пропускная способность. Мы представляем несколько схем планирования с учетом потоков. и сравните их с традиционными схемами забывчивости, такими как круговой алгоритм. Наши измерения показывают, как эти алгоритмы планирования влияют на производительность и использование низкоуровневых аппаратных ресурсов. Мы также продемонстрируйте, как алгоритмы планирования, чувствительные к потокам, могут быть настроены на компромисс производительности и справедливости. Для рабочих нагрузок мы измерено, мы показываем, что планирование с учетом потоков на основе IPC алгоритм может достигать ускорения по сравнению с забывчивыми схемами от 7% до 15%, с минимальными затратами на оборудование.
  • Мини-потоки: увеличение TLP на малых процессорах SMT ( Абстрактный, постскриптум, PDF)
    Джош Редстоун, Сьюзан Эггерс, и Генри Леви.
    Материалы Международной конференции по высокопроизводительным Компьютерная архитектура , февраль 2003 г.
    В этой статье представлена ​​архитектурная модель мини-потока для увеличения производительности. параллелизм на уровне потоков на процессорах SMT, особенно в небольших масштабах реализации, которые из-за своего размера могут испытывать нехватку потоков. Это также эмпирически демонстрирует компромисс производительности для одного реализация мини-потоков, то, в чем архитектурный регистровый файл разделен между всеми исполняющими потоками в оборудовании контексте, показывая, что преимущества дополнительного TLP намного перевешивают стоимость дополнительного кода сброса, сгенерированного из-за того, что каждый поток ему доступно меньше архитектурных регистров.
  • Улучшение поддержки программного обеспечения сервера для одновременных Многопоточные процессоры ( Абстрактный, PDF)
    Люк К. Макдауэлл, Сьюзан Эггерс, и Стивен Д. Гриббл.
    Симпозиум по принципам и практике параллельного программирования , Июнь 2003 г.
    В этом документе оценивается, как аппаратное обеспечение SMT влияет на традиционную поддержку серверное программное обеспечение, в частности, выделение памяти и синхронизация, для трех разных моделей серверов. Результаты демонстрируют, как несколько простые изменения в библиотеках времени выполнения могут значительно повысить производительность многопоточного сервера на SMT, не требуя модификации самих приложений.
  • Оценка исполнения спекулятивных инструкций на Одновременный Многопоточные процессоры ( постскриптум, PDF)
    Стив Суонсон, Люк Макдауэлл, Майкл Свифт, Сьюзан Эггерс, Генри Леви.
    Сделки по компьютерным системам, 21(3), 2003.

  • Использование параллелизма на уровне потоков в одновременных Многопоточные процессоры ( Постскриптум)
    Диссертация Джека Ло, 1998 г.
  • Анализ проблем программного интерфейса для процессоров SMT ( PDF)
    Диссертация Джоша Редстоуна, 2002 г.
Исследование
    SMT финансировалось за счет гранта NSF ITR. CCR-0085670 и грант NSF MIP-9632977, при участии грантов NSF CCR-9200832 и CCR-9632769, Грант DARPA F30602-97-2-0226, ONR предоставляет N00014-92-J-1395 и N00014-94-1-1136, и Вашингтонский технологический центр. Среди промышленных спонсоров была Compaq Computer Corp., которая пожертвовала обе рабочие станции для моделирования и источник для компилятора Multiflow, и International Business Machines, Inc. с партнерством преподавателей Награда.
  • IBM объявила о поддержке SMT в Power5 Процессор
  • MemoryLogix анонсировала SMT процессор для мобильных устройств.
  • Sun Microsystems анонсировала 4-SMT-процессор CMP.
  • Intel анонсировала свой первый процессор SMT, реализация с двумя аппаратными контекстами (Xeon), которую предполагается использовать изначально на сервере рынок. Он также планирует следующий чип который будет содержать два процессора SMT.
  • Клируотер Сети, стартап из Лос-Гатоса, строит (занимался?) 8-контекст Сетевой процессор SMT с поддержкой обработки уровней с 4 по 7 (история EETimes).
  • Компьютерная корпорация Compaq. разработал 4-контекстный процессор SMT, Альфа 21464 (EV-8) , для линейки микропроцессоров Alpha будущего поколения. Чип была бы следующей Альфой, если бы Compaq не списали всю линейку Alpha в июне 2001 года и была бы нацелена на рынок серверов. Джоэл Эмер Микропроцессорный форум и PACT слайды, которые представили SMT Alpha.
  • Общие новости:
    • Из Регистр .
    • От Земная паутина.
    • От Экономист 20.04.01.
    • От Арс Техника, 02.10.2002.
    • Статья от IBM по Hyperthreading Speeds Linux (поддержка и производительность SMT в Linux и Intel Xeon).
    • Из EE Times на чипе Intel следующего поколения с технологией Hyperthreading.

Эта страница поддерживается Сьюзен Эггерс
eggers [at] cs [точка] вашингтон [точка] edu

Исследование производительности многопоточности на Zen 3 и AMD Ryzen 5000

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

Что такое одновременная многопоточность (SMT)?

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


Старый слайд от Intel, у которого есть собственный маркетинговый термин для SMT: Hyper-Threading

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

SMT — это хорошо?

Это зависит от того, кого вы спросите.

SMT2 (два потока на ядро) включает создание основных структур, достаточных для хранения и управления двумя потоками инструкций, а также управление тем, как эти основные структуры совместно используют ресурсы. Например, если один конкретный буфер в вашем базовом проекте предназначен для обработки до 64 инструкций в очереди, если среднее значение ниже этого значения (например, 40), то буфер используется недостаточно, и дизайн SMT активирует буфер. подается в среднем наверх. Этот буфер может быть увеличен до 96 инструкций в дизайне, чтобы учесть это, гарантируя, что если оба потока инструкций работают на «среднем уровне», то у обоих будет достаточный запас. Это означает, что стоит использовать два потока, всего в 1,5 раза превышающих размер буфера. Если все остальное сработает, то это удвоит производительность при менее чем удвоенном дизайне ядра в области дизайна. Но в режиме ST, где большая часть этого буфера шириной 96 заполнена менее чем на 40%, поскольку весь буфер должен быть включен все время, это может привести к трате энергии.

Но если конструкция ядра выигрывает от SMT, то, возможно, ядро ​​изначально не было спроектировано оптимально для производительности одного потока. Если включение SMT дает пользователю точно двойную производительность и идеальное масштабирование по всем направлениям, как если бы было два ядра, то, возможно, существует прямая проблема с тем, как спроектировано ядро, от исполнительных блоков до буферов и иерархии кэша. Известно, что пользователи жалуются, что они получают прирост производительности только на 5-10% при включенном SMT, заявляя, что он не работает должным образом — это может быть просто потому, что ядро ​​​​лучше спроектировано для ST. Точно так же заявление о том, что прирост производительности +70% означает, что SMT работает хорошо, может быть скорее сигналом к ​​несбалансированной конструкции ядра, которая тратит энергию впустую.

Это дихотомия одновременной многопоточности. Если это работает хорошо, пользователь получает дополнительную производительность. Но если он работает слишком хорошо, возможно, это свидетельствует о том, что ядро ​​не подходит для конкретной рабочей нагрузки. Ответ на вопрос «Хороша ли технология SMT?» сложнее, чем кажется на первый взгляд.

Мы можем разделить системы, использующие SMT:

  • Высокопроизводительный x86 от Intel
  • Высокопроизводительный x86 от AMD
  • Высокопроизводительный POWER/z от IBM
  • Некоторые высокопроизводительные конструкции на базе Arm
  • Высокопроизводительные вычисления в памяти
  • Высокопроизводительное оборудование для искусственного интеллекта

По сравнению с теми, у кого их нет:

  • Высокоэффективный x86 от Intel
  • Все процессоры Arm для смартфонов
  • Успешные высокопроизводительные конструкции на базе манипулятора
  • Высокоспециализированные рабочие нагрузки HPC на платформе x86 с узкими местами вычислений

(Обратите внимание, что Intel называет свою реализацию SMT «HyperThreading», что является маркетинговым термином специально для Intel).

На данный момент мы обсуждали только SMT, где у нас есть два потока на ядро, известный как SMT2. Некоторые из наиболее эзотерических конструкций оборудования выходят за рамки двух потоков на ядро ​​на основе SMT и используют до восьми. В документации вы увидите, что это стилизовано под SMT8 по сравнению с SMT2 или SMT4. Именно так IBM подходит к некоторым своим проектам. Некоторые приложения вычислений в памяти доходят до SMT24!!

Существует четкая тенденция между системами с поддержкой SMT и системами без SMT, что, по-видимому, является маркером высокой производительности. Единственным исключением является недавний процессор Apple M1 и ядра Firestorm.

Следует отметить, что для систем, поддерживающих SMT, его можно отключить, чтобы принудительно сократить до одного потока на ядро ​​для работы в режиме SMT1. У этого есть несколько основных преимуществ:

Он позволяет каждому потоку иметь доступ ко всем ресурсам ядра. В некоторых ситуациях рабочей нагрузки наличие двух потоков на одном ядре будет означать совместное использование ресурсов и вызвать дополнительную непреднамеренную задержку, что может быть важно для критических рабочих нагрузок с задержкой, где требуется детерминированная (одинаковая) производительность. Это также уменьшает количество потоков, конкурирующих за емкость L3, если это является ограничивающим фактором. Также должно ли какое-либо программное обеспечение требоваться для проверки данных в любом другом рабочем процессе для 16-ядерного процессора, такого как 5950X, что означает обращение только к 15 другим потокам, а не к 31 другому потоку, что снижает потенциальные перекрестные помехи, ограниченные связностью между ядрами.

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

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

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

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

 

SMT на AMD Zen3 и Ryzen 5000

Так же, как и предыдущие процессоры AMD на базе Zen, серия Ryzen 5000, использующая ядра Zen3, также имеет конструкцию SMT2. По умолчанию это включено в каждом потребительском BIOS, однако пользователи могут отключить его в параметрах прошивки.

В этой статье мы проверили наш процессор AMD Ryzen 5950X, 16-ядерный высокопроизводительный процессор Zen3, в режимах SMT Off и SMT On с помощью нашего набора тестов и некоторых стандартных отраслевых тестов. Целью этих тестов является получение ответов на следующие вопросы:

  1. Есть ли однопоточная польза от отключения SMT?
  2. Насколько повышается производительность при включении SMT?
  3. Изменится ли производительность на ватт при включении SMT?
  4. Приводит ли включение SMT к более высокой задержке рабочей нагрузки?*

*более важно для рабочих нагрузок предприятия/базы данных/ИИ

Лучшим аргументом в пользу включения SMT будет результат «нет-много-да-нет». И наоборот, лучшим аргументом против SMT будет ответ «Да-Нет-Нет-Да». Но поскольку базовые структуры были построены с учетом поддержки SMT, ответы редко бывают такими однозначными.

В связи с получением новых модулей памяти DDR4-3200 емкостью 32 ГБ для тестирования Ryzen мы повторно запустили наш стандартный набор тестов на Ryzen 9 5950X с включенным и выключенным SMT. В соответствии с нашей обычной методологией тестирования мы тестируем память по официальным спецификациям JEDEC для каждого имеющегося процессора.

Тестовая установка
АМ4 Райзен 9 5950X МСИ Х570
Богоподобный
1.B3T13
АГЕСА 1100
Ноктуа
НХ-У12С
АДАТА
4×32 ГБ
DDR4-3200
ГП Sapphire RX 460 2 ГБ (тесты процессора)
NVIDIA RTX 2080 Ti
Блок питания OCZ 1250 Вт Золотой
Твердотельный накопитель Crucial MX500 2 ТБ
ОС Windows 10 x64 1909
Spectre и Meltdown исправлены
VRM с вентиляторами Silversone SST-FHP141-VF 173 CFM

Также большое спасибо компаниям, которые предоставили оборудование для наших тестовых систем, включая следующие:

Поставщики оборудования для обзоров процессоров и материнских плат
Сапфир
RX 460 Нитро
NVIDIA
RTX 2080 Ти
Твердотельные накопители Crucial Блоки питания Corsair
G.

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    © 2019 iApple-59.ru