Форум программистов, компьютерный форум, киберфорум
Процессоры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/219: Рейтинг темы: голосов - 219, средняя оценка - 4.73
Эксперт Hardware
 Аватар для D'Dragon
834 / 338 / 11
Регистрация: 13.01.2012
Сообщений: 739

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

19.02.2012, 15:55. Показов 42225. Ответов 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%...
11
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2012, 15:55
Ответы с готовыми решениями:

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

Enabled что это и с чем его едят? )
Знаю что такое Enabled вопрос в том почему он не работает procedure MouseMove(x,y,mb:integer); begin writeln(o); if o=1...

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

13
 Аватар для dimank666
8223 / 5626 / 205
Регистрация: 29.08.2011
Сообщений: 40,937
Записей в блоге: 1
19.02.2012, 16:14
Что же выложу все свои доводы

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

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

Тогда как объяснишь этот скрин:

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

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

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

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

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

Тут и проявляется оптимизация, какие и как задания ему дают...
0
 Аватар для dimank666
8223 / 5626 / 205
Регистрация: 29.08.2011
Сообщений: 40,937
Записей в блоге: 1
19.02.2012, 17:48
D'Dragon, если у тебя такой процессор ради эксперимента запусти LinX и поставь в нем 4 потока
запиши результат производительности, затем 8 потоков и тоже глянь результат и скрены пожалуйста в студию
0
Эксперт Hardware
 Аватар для D'Dragon
834 / 338 / 11
Регистрация: 13.01.2012
Сообщений: 739
19.02.2012, 18:15  [ТС]
Цитата Сообщение от dimank666 Посмотреть сообщение
D'Dragon, если у тебя такой процессор ради эксперимента запусти LinX и поставь в нем 4 потока
6 потоков пойдёт
Цитата Сообщение от dimank666 Посмотреть сообщение
запиши результат производительности, затем 8 потоков и тоже глянь результат и скрены пожалуйста в студию

0
Чувак с пакетом на голове
 Аватар для POWE®FULL
561 / 382 / 5
Регистрация: 15.03.2011
Сообщений: 1,466
Записей в блоге: 1
19.02.2012, 18:26
Dimank666, D'Dragon,


Неужели я здесь: https://www.cyberforum.ru/post2505801.html всё не описал???
2
 Аватар для dimank666
8223 / 5626 / 205
Регистрация: 29.08.2011
Сообщений: 40,937
Записей в блоге: 1
19.02.2012, 18:32
вот мой скрин

и самое главное разница между 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
 Аватар для D'Dragon
834 / 338 / 11
Регистрация: 13.01.2012
Сообщений: 739
20.02.2012, 19:49  [ТС]
Без HT:

Цитата Сообщение от dimank666 Посмотреть сообщение
FluidMark_1.4.0
Ок...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2012, 19:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
14
Закрытая тема Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru