Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
1

Hyper-threading, нюансы что это и с чем его "едят"...

19.02.2012, 15:55. Показов 37960. Ответов 13
Метки нет (Все метки)

Собственно сначала немного о технологии:
Hyper-threading — технология «одновременной мультипоточности» в процессорах. Расширенная форма суперпоточности, впервые появившаяся в процессорах Intel Xeon.

Принцип работы

В процессорах с использованием этой технологии каждый физический процессор может хранить состояние сразу двух потоков, что для операционной системы выглядит как наличие двух логических процессоров (англ. Logical processor). Физически у каждого из логических процессоров есть свой набор регистров и контроллер прерываний (APIC), а остальные элементы процессора являются общими. Когда при исполнении потока одним из логических процессоров возникает пауза (в результате кэш-промаха, ошибки предсказания ветвлений, ожидания результата предыдущей инструкции), то управление передаётся потоку в другом логическом процессоре. Таким образом, пока один процесс ждёт, например, данные из памяти, вычислительные ресурсы физического процессора используются для обработки другого процесса.

Производительность

Были представлены следующие преимущества Hyper-threading: улучшенная поддержка многопоточного кода, позволяющая запускать потоки одновременно; улучшенная реакция и время отклика; увеличенное количество пользователей, которое может поддерживать сервер.
По словам Intel, первая реализация потребовала всего 5-процентного увеличения площади кристалла, но позволяла увеличить производительность на 15—30 %.
Intel утверждает, что прибавка к скорости составляет 30 % по сравнению с идентичным процессорами Pentium 4 без технологии «Simultaneous multithreading». Однако прибавка к производительности изменяется от приложения к приложению: некоторые программы вообще несколько замедляются при включённой технологии Hyper-threading. Это, в первую очередь, связано с «системой повторения» (англ. replay) процессоров Pentium 4, занимающей необходимые вычислительные ресурсы, отчего и начинают «голодать» другие потоки.

http://ru.wikipedia.org/wiki/Hyper-threading
На данный момент из процессоров настольного сегмента наиболее распространены Core i7:
1366 - 9x0\9x0X
1155 - 2600K\2700K
2011 - 3930K\3820
и т.д.

И Core i3:
1155 - 21x0
1156 - 5x0
и т.д.

В этой теме предлагаю обсудить, что даёт HT его преимущества и недостатки...

Так же стоит обратить внимания что производительность HT напрямую зависит от оптимизации приложения производительность может как возрастать так и падать (в плохо оптимизированных играх не редко наблюдается падения FPS при использовании HT)...
В оптимизированных приложениях таких как архивирование\кодирование видео\3D моделирования производительность может увеличится примерно на 15-30%...
10
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2012, 15:55
Ответы с готовыми решениями:

Что такое php и с чем его "едят"?
Все привет, купил книгу по созданию веб-сайтов, так не указанны примеры кода, но не сказано в кокой...

Нюансы использования оператора запятая или что такое UB и с чем его едят
Почему студия и ideone выдают разные значения для a и b? в студии выходит a = 10 , b = 10 в...

SgrTable что это и с чем его едят?
Разъясните пожалуйста, sgrTable что это и с чем его едят??? Весь интернет перекопал, упоминается...

ISQ - что это и с чем его едят?
Приветик всем! Я понимаю многие сочтут вопрос глупым, но так сложилась судьба - никогда раньше я...

13
6418 / 4300 / 193
Регистрация: 29.08.2011
Сообщений: 32,384
Записей в блоге: 1
19.02.2012, 16:14 2
Что же выложу все свои доводы

Hyper-Threading работает как виртуальный компьютер вместо одного ядра операционная система видит 2 виртуальных, следовательно на 1 ядро идут сразу 2 команды и если 1V (V-виртуальное ядро) не отсылает команду на ядро процессора то отсылаются команда со 2V ядра
А так как 3d мах нормально распараллеливается, то получается что 2V ждет своей очереди.
И получается что выполняется только 4 потока вместо 8
чтобы было понятно:
Допустим дорого имеет 8 полосное движение, а на ней стоит пост который пропускает только 4 машины

если даже развить тему то получится так
8 полосное движение, на всех 8 полосах стоят посты (виртуальные процессоры), а дальше дорога сужается до 4 полос (процессорных ядер). И получается что пока в первом посте машина стоит со второго она может выехать, и на оборот пока во 2 стоит из первого проезжает и так далее
Добавлено через 3 минуты
Цитата Сообщение от D'Dragon Посмотреть сообщение
в результате кэш-промаха, ошибки предсказания ветвлений, ожидания результата предыдущей инструкции
вот что заметил, то есть эта функция работает хорошо тогда когда конвеер интела ошибается в расчетах или предсказаниях
0
Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
19.02.2012, 16:15  [ТС] 3
dimank666, исходя из твоих умозаключений процессор не может быть загружен более чем на 50%, так как в ОС видно 8 ядер и 4 из них виртуальные так?

Тогда как объяснишь этот скрин:
Hyper-threading, нюансы что это и с чем его "едят"...

Исходя из твоей логики 100% загрузка процессора невозможна, но это не так

Цитата Сообщение от D'Dragon Посмотреть сообщение
улучшенная поддержка многопоточного кода, позволяющая запускать потоки одновременно
На это обрати внимание...

Так что повторюсь корректнее такой пример:
Есть 4 поста (ядра) и 8 дорого (потоки), 4 поста делит машины (операции) на 8 дорог, а как делит и с какой скоростью машины поедут зависит от машин и качества дороги (оптимизации)...
Тоже не лучшее объяснение, но всё же точнее чем у тебя...
0
Чувак с пакетом на голове
561 / 382 / 5
Регистрация: 15.03.2011
Сообщений: 1,466
Записей в блоге: 1
19.02.2012, 17:19 4
Цитата Сообщение от D'Dragon Посмотреть сообщение
Так что повторюсь корректнее такой пример:
Есть 4 поста (ядра) и 8 дорого (потоки), 4 поста делит машины (операции) на 8 дорог, а как делит и с какой скоростью машины поедут зависит от машин и качества дороги (оптимизации)...
Тоже не лучшее объяснение, но всё же точнее чем у тебя...
А я приведу свой пример с дорогой(раз уж о ней заговорили):
Сходятся Две четырёхполосные(если проц 4х ядерный) дороги в одну(тоже четырёхполосную). и вместо стандартного светофора стоит такая штука которая ставит машины со второй дороги в свободные промежутки между машинами с первой в том же ряду, когда они(эти промежутки) есть, тем самым уплотняя движение на дальнейшем участке дороге.
Вот это и есть "Hyper Threading".
1
6418 / 4300 / 193
Регистрация: 29.08.2011
Сообщений: 32,384
Записей в блоге: 1
19.02.2012, 17:24 5
может такой варит понятние
Единственное можно сравнить с рабочим на стройке
допустим 4 рабочих (4 ядра)
А бригадиров которые отдают команды целых 8 штук (виртуальные ядра) и получается за одним рабочим бегают 2 бригадира. как рабочий освобождается один из бригадиров дает ему новые указания.
а смысел втом что бригадирам надо бегать сверятся с чертежами. и пока один побежал смотреть другой дает команду рабочему
0
Чувак с пакетом на голове
561 / 382 / 5
Регистрация: 15.03.2011
Сообщений: 1,466
Записей в блоге: 1
19.02.2012, 17:26 6
Цитата Сообщение от dimank666 Посмотреть сообщение
может такой варит понятние
Ага! Один бригадир отдаёт команды левой руке рабочего а другой в это же время правой.
Так вернее будет!
0
Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
19.02.2012, 17:29  [ТС] 7
dimank666, по твоим вариантам как не крути процессор выше 50% не загрузить так как половина, потоков просто простаивает...
Как тогда процессор может быть загружен на 100%?
0
6418 / 4300 / 193
Регистрация: 29.08.2011
Сообщений: 32,384
Записей в блоге: 1
19.02.2012, 17:43 8
Цитата Сообщение от POWE®FULL Посмотреть сообщение
Ага! Один бригадир отдаёт команды левой руке рабочего а другой в это же время правой!
Так вернее будет!!!
не рабочий может выполнять только 1 команду от одного бригадира и пока он ее не выполнит от другова он взять ее не сможет.
Ну можем добавить в эту схему еще как бы брегадира-выберателя который выбирает какую работу и от какого бригадира выполнять первой но рабочий все равно один и выполняет одну инструкцию за такт

Добавлено через 5 минут
Цитата Сообщение от D'Dragon Посмотреть сообщение
dimank666, по твоим вариантам как не крути процессор выше 50% не загрузить так как половина, потоков просто простаивает...
Как тогда процессор может быть загружен на 100%?
Так если ты ему дашь 4 потока он и будет загружен на 100% так как все ядра будут заняты.

По твоей логике получается что ели на операцию нужно 100 команд то 1 ядерный на это затратит 100 секунд (допустим) 4 ядерный плучается 25 секунд а 8 виртуальных по идее 12,5
0
Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
19.02.2012, 17:47  [ТС] 9
Цитата Сообщение от dimank666 Посмотреть сообщение
Так если ты ему дашь 4 потока он и будет загружен на 100% так как все ядра будут заняты.
Бррр... 4 ядра 8 потоков, если ты ему дашь 4 потока он будет загружен на 50%...
Цитата Сообщение от dimank666 Посмотреть сообщение
По твоей логике получается что ели на операцию нужно 100 команд то 1 ядерный на это затратит 100 секунд (допустим) 4 ядерный плучается 25 секунд а 8 виртуальных по идее 12,5
Виртуальные на то и виртуальные, это как человеку поручить 2 задания одновременно писать и читать, человек 1 задания 2, соответственно 2 задания он будет делать медленнее 1, но и быстрее чем если бы делал их по очереди...
А в извращённых случаях, ум за разум будет заходить и он 2 задания будет делать медленнее чем их же по очереди...

Тут и проявляется оптимизация, какие и как задания ему дают...
0
6418 / 4300 / 193
Регистрация: 29.08.2011
Сообщений: 32,384
Записей в блоге: 1
19.02.2012, 17:48 10
D'Dragon, если у тебя такой процессор ради эксперимента запусти LinX и поставь в нем 4 потока
запиши результат производительности, затем 8 потоков и тоже глянь результат и скрены пожалуйста в студию
0
Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
19.02.2012, 18:15  [ТС] 11
Цитата Сообщение от dimank666 Посмотреть сообщение
D'Dragon, если у тебя такой процессор ради эксперимента запусти LinX и поставь в нем 4 потока
6 потоков пойдёт
Цитата Сообщение от dimank666 Посмотреть сообщение
запиши результат производительности, затем 8 потоков и тоже глянь результат и скрены пожалуйста в студию
Hyper-threading, нюансы что это и с чем его "едят"...

Hyper-threading, нюансы что это и с чем его "едят"...
0
Чувак с пакетом на голове
561 / 382 / 5
Регистрация: 15.03.2011
Сообщений: 1,466
Записей в блоге: 1
19.02.2012, 18:26 12
Dimank666, D'Dragon,
Hyper-threading, нюансы что это и с чем его "едят"...
Hyper-threading, нюансы что это и с чем его "едят"...
Hyper-threading, нюансы что это и с чем его "едят"...
Hyper-threading, нюансы что это и с чем его "едят"...


Неужели я здесь: https://www.cyberforum.ru/post2505801.html всё не описал???
2
6418 / 4300 / 193
Регистрация: 29.08.2011
Сообщений: 32,384
Записей в блоге: 1
19.02.2012, 18:32 13
вот мой скрин

и самое главное разница между 6 и 12 потоками 2 гфлопса это меньше это 3 % где 15-30 процентов

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

Прирост есть, но чтобы он появился нужно чтобы были соблюдены определенные условия,
1) Должны быть команды арифметически и с плавающей запятой
2) Их должно быть одинаковое количество
3) Приложение должно быть оптимизировано к много поточности
4) И само приложение должно быть оптимизировано чтобы одновременно выдавать запросы арифметически и с плавающей запятой
А это очень редко, то прирост не значителен. Возможно в будущем когда приложения будут лучше оптимизированы и будут делаться с заделом на 10 и более ядер прирост будет больше.
Но тогда и процесоры будут другие

D'Dragon,
к ста-те протестируй свой проц
FluidMark_1.4.0
вот тут как на скринах 1 и 2 проведи тесты
https://www.cyberforum.ru/post2237608.html
Миниатюры
Hyper-threading, нюансы что это и с чем его "едят"...  
0
Эксперт Hardware
832 / 336 / 11
Регистрация: 13.01.2012
Сообщений: 739
20.02.2012, 19:49  [ТС] 14
Без HT:
Hyper-threading, нюансы что это и с чем его "едят"...

Цитата Сообщение от dimank666 Посмотреть сообщение
FluidMark_1.4.0
Ок...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2012, 19:49

WINSOCK - что это и с чем его едят?
Мне необходимо создать прогу для обмена данными по локальной сети. При ближайшем изучении доступных...

Bootstrap, что это и с чем его едят?
Знаю что иметься такой фреймворк, как Bootstrap, знаю что многие используют его для адаптивной...

Что это за макрос? И с чем его едят?
Есть две строки. С первой вроде разобрался, поправьте если не совсем. Из книги Лафоре ООП...

FireMonkey. Что это и с чем его едят?
Учитывая все возрастающий интерес СамодеЛКина к данной платформе ... ... делимся ссылками,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru