Я объясню, что такое Hyper Threading technology в процессорах Intel и как это влияет на программы и игры.
Это технология, разработанная Intel, реализованная на процессорах Atom, Core i3, i5, i7, Itanium, Pentium 4 и Xeon.
Она вводит поддержку многопоточности, которая позволяет выполнять несколько задач одновременно.
В традиционных решениях два физических ядра позволяли операционной системе запускать только два потока (процесса) параллельно.
Технология Intel Hyper Threading увеличивает количество потоков в два раза для каждого физического ядра.
Стоит отметить, что Hyper Threading не удваивает производительность самого процессора, поскольку вторые 2 процесса не получают столько питания, сколько физические ядра.
Вместо этого они разделяются на два потока, которые активируются таким способом и для Hyper Threading требуется поддержка операционной системы и оптимизированное программное обеспечение с точки зрения использования многопоточности.
Hyper Threading в играх
Hyper Threading повышает производительность процессора основном в приложениях. Очень хорошо работает при рендеринге, анимации или фотографировании – до 25%.
В случае компьютерных игр это гораздо менее заметно и может доходить до 10%. Для некоторых игр позволяет получить лучшие результаты.
Для достижения большей эффективности при работе с программами и играми на них влияет оптимизация и адаптация для поддержки как минимум двух потоков.
Как функция одновременной многопоточности (SMT) известна Intel под названием Hyper Threading и что означают физические ядра, логические ядра и потоки? Многие люди часто путают эти понятия, поэтому пришло время объяснить наиболее важные проблемы, которые их касаются.
Ключевые понятия Hyper Threading
Чтобы лучше описать работу технологии многопоточности (которую AMD начала использовать в процессорах Ryzen), сначала я должен объяснить вам наиболее важные концепции, связанные с процессорами.
Физическое ядро является действительно существующим элементом процессора, который имеет свой собственный рабочий цикл и кэш-память (L1).
В большинстве случаев он выполняет вычисления независимо от других ядер, а его параметры, среди прочего:
Логическое ядро нечто совсем иное. Мы можем определить это как программное понимание физического ядра.
Это зависит от потока, расположенного на том же физическом ядре (из-за совместного использования ресурсов), но работает независимо от потоков на других физических ядрах.
Его использование аналогично потокам, выполняемым приложениями, поэтому мы называем его взаимозаменяемо потоком и логическим ядром.
Hyper Threading просто говоря изобретение для целей операционной системы в виде ряда задач, которым приходится иметь дело с процессором.
Каждая программа состоит из одного, нескольких или даже сотен потоков, а в системе может появиться любое количество.
Единственное, что ограничивает нас — это мощность нашего процессора, потому что мы можем привести к тому моменту, когда этот процессор не сможет обрабатывать все потоки одновременно.
Это когда технология Hyper Threading забирает на себя большую часть, помогая физическим ядрам планировать работу, чтобы они могли справиться с поставленной задачей.
После такого объяснения большинство из вас постепенно начинают понимать, каков механизм параллельной многопоточности, но не останавливайтесь на достигнутом, и давайте рассмотрим саму причину гиперпоточности. Стоит помнить, что его вариация с AMD Ryzen просто называется SMT.
Немного истории Hyper Threading
Основой для разработки этой технологии была суперскалярная архитектура, которая позволяла выполнять несколько инструкций за один рабочий цикл процессора.
Короче говоря, это включало увеличение числа независимых инструкций в конвейере путем увеличения путей упомянутых инструкций.
Таким способом, можно сказать, что он превратил отдельные исполнительные единицы (ядра) в исполнительные ресурсы, число которых может быть значительно увеличено и отвечать за различные задачи.
Теоретически такое решение повышало эффективность, но на практике большинство полученных ресурсов просто не использовались.
Затем была разработана технология Hyper Threading, которая позволяет одному физическому ядру оставаться в двух состояниях (потоках) в бесконечном цикле.
Это сводится к тому, что один из них обрабатывается, а другой ожидает (например, данные из памяти).
Эксплуатация технологии Hyper Threading
В одно время реальное ядро может обрабатывать только один из потоков, связанных с ним, потому что они совместно используют его ресурсы.
Только это не влияет на логические ядра, расположенные на другом физическом ядре, и скорость, с которой процессор переключает вычисления на каждом из них, настолько велика, что мы не можем это увидеть.
В конечном итоге технологии Hyper Threading (Intel) и SMT можно сравнить с сотрудником (физическим ядром), который собирает ручки из двух частей (потоков приложения).
Из-за того, что одна производственная линия (логическое ядро) не может доставить оба элемента в нужное время, сотруднику приходится некоторое время ждать и, таким способом, он теряет драгоценное время.
Его производительность будет максимальной только тогда, когда активирована вторая лента, что позволит отправлять оба элемента одновременно.
Это практика, которую мы называем Hyper Threading. Эта технология позволяет физическим ядрам ставить как можно больше задач, чтобы продолжать работать и никогда не ждать инструкций.
Применение технологии Hyper Threading
Каждая программа, (включая игры) включает в себя физические и логические ядра для работы, но она не всегда использует их все на сто процентов.
Специализированное программное обеспечение может использовать множество потоков, потому что задачи, которые ставит процессор, четко определены.
Процессор знает, какие вычисления он должен выполнить, и работает над ними параллельно, потому что начало работы над задачей «B» не требует решения предыдущей задачи «A».
Игры немного отличаются, потому что работа процессора зависит от игрока, трафик и решения которого не могут быть предсказаны.
Из-за этого процессору нужно на сто процентов выполнить несколько задач, прежде чем заниматься следующей.
Это похоже на сборку компьютера — сначала нужно вставить процессор в гнездо, а затем смонтировать охлаждение.
В играх процессор отвечает за для управления искусственным интеллектом, физикой объектов, реагирования на сигналы от игрока и частичного контроля работы видеокарты.
В связи с этим большая часть расчетов должна выполняться последовательно, один за другим, чтобы поддерживать определенный порядок и соответствующим образом реагировать на ходы игрока.
Только подождите минуту, вы, вероятно, спросили себя, почему программисты не планируют работать со всеми физическими и логическими ядрами, чтобы некоторые из них справлялись с основными задачами, а другие (на заднем плане) пытались угадать следующий ход игрока.
Причина, как всегда в таких случаях, проста. Программирование игрового движка таким способом, чтобы оно распределяло нагрузку параллельно на все ядра, крайне проблематично.
Кроме того, работает над тем, что будет использоваться небольшим количеством игроков — это самая обычная трата времени и ресурсов.
Пример игры с Hyper Threading
Когда мы говорим о том, что данная игра не может использовать четыре ядра, мы на самом деле имеем в виду, что задачи, которые она ставит на процессор, занимают максимум четыре потока, и нет возможности их разделить.
Мы можем увидеть пример такой игровой оптимизации для Intel (Core i7) и AMD (Ryzen 5 и 7), которые в большинстве случаев не используют свои возможности на сто процентов.
Это связано с тем, что для этих названий требуются процессоры, которые нельзя разделить, что ухудшает производительность многозадачных систем по сравнению с теми, которые делают ставку на мощность одного ядра.
Только на рынке мы находим исключения (чаще всего в форме обширных стратегических игр), в которых используется многозадачность.
Заключение о Hyper Threading
Логическое ядро, или поток, представляет собой серию вычислений и инструкций, придуманных для нужд операционной системы.
Каждое из них назначается одному из физических ядер, ресурсы которого они поглощают. SMT-решение под названием Intel Hyper Threading разрешено назначать одному физическому ядру два логических блока, которые совместно используют ресурсы первого.
Их работа основана на планировании рабочего графика процессора, то есть можно сказать, что они гарантируют, что физические ядра могут работать непрерывно, что в большинстве случаев повышает общую эффективность процессора.
Только существуют ситуации, когда многозадачность не используется, потому что вычисления должны выполняться один за другим в определенном порядке. Кроме того, внедрение hyper Threading увеличивает потребление питания и количество тепла, выделяемого системой, но мы говорим здесь о действительно небольших значениях. Успехов.