Гиперпоточность - Википедия - Hyper-threading

В этом высокоуровневом изображении HTT инструкции извлекаются из ОЗУ (разноцветные прямоугольники представляют инструкции четырех разных процессы ), декодированные и переупорядоченные клиентской частью (белые квадраты представляют пузыри трубопровода ) и передается исполнительному ядру, способному выполнять инструкции из двух разных программ в течение одного такт.[1][2][3]

Hyper Threading (официально называется Технология Hyper-Threading или же Технология HT и сокращенно HTT или же HT) является Intel с проприетарный одновременная многопоточность (SMT) реализация, используемая для улучшения распараллеливание вычислений (выполнение нескольких задач одновременно) выполняется на x86 микропроцессоры. Он был представлен Xeon сервер процессоры в феврале 2002 г. и позже Pentium 4 настольные процессоры в ноябре 2002 г.[4] С тех пор Intel включила эту технологию в Itanium, Атом, и Core 'i' серии Процессоры, среди прочего.[нужна цитата ]

Для каждого ядро процессора что физически присутствует, Операционная система обращается к двум виртуальным (логическим) ядрам и по возможности распределяет рабочую нагрузку между ними. Основная функция гиперпоточности - увеличение количества независимых инструкций в конвейере; он использует в своих интересах суперскалярный архитектура, в которой несколько инструкций работают с отдельными данными в параллели. При использовании HTT одно физическое ядро ​​отображается в операционной системе как два процессора, что позволяет одновременный планирование двух процессов на ядро. Кроме того, два или более процессов могут использовать одни и те же ресурсы: если ресурсы для одного процесса недоступны, то другой процесс может продолжить работу, если его ресурсы доступны.

Помимо необходимости одновременной поддержки многопоточности в операционной системе, гиперпоточность может быть правильно использована только с операционной системой, специально оптимизированной для этого.[5]

Обзор

Модель процессора Intel Pentium 4 с тактовой частотой 3 ГГц с технологией Hyper-Threading.[6]

Технология Hyper-Threading - это форма одновременного многопоточность технология, представленная Intel, а концепция, лежащая в основе технологии, была запатентована Sun Microsystems. Архитектурно процессор с технологией Hyper-Threading состоит из двух логических процессоров на ядро, каждое из которых имеет собственное архитектурное состояние процессора. Каждый логический процессор может быть индивидуально остановлен, прерван или направлен на выполнение указанного потока независимо от другого логического процессора, использующего то же физическое ядро.[7]

В отличие от традиционной двухпроцессорной конфигурации, в которой используются два отдельных физических процессора, логические процессоры в гиперпоточном ядре совместно используют ресурсы выполнения. Эти ресурсы включают механизм выполнения, кеши и интерфейс системной шины; совместное использование ресурсов позволяет двум логическим процессорам работать друг с другом более эффективно и позволяет логическому процессору заимствовать ресурсы из остановившегося логического ядра (при условии, что оба логических ядра связаны с одним и тем же физическим ядром). Процессор останавливается, когда он ожидает данных, которые он отправил, чтобы он мог завершить обработку текущего потока. Степень выгоды от использования гиперпоточного или многоядерного процессора зависит от потребностей программного обеспечения и от того, насколько хорошо оно и операционная система написаны для эффективного управления процессором.[7]

Hyper-threading работает путем дублирования определенных разделов процессора - тех, которые хранят архитектурное состояние - но не дублируя основной ресурсы исполнения. Это позволяет гиперпотоковому процессору выглядеть как обычный «физический» процессор и как дополнительный ».логичный "процессор к основной операционной системе (операционные системы, не поддерживающие HTT, видят два" физических "процессора), что позволяет операционной системе планировать два потока или процесса одновременно и соответствующим образом. Когда ресурсы выполнения не будут использоваться текущей задачей в процессоре без гиперпоточность, и особенно когда процессор остановлен, процессор, оснащенный гиперпоточностью, может использовать эти ресурсы исполнения для выполнения другой запланированной задачи (процессор может остановиться из-за промах в кеше, неверное предсказание ветки, или же зависимость данных.)[8]

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

Можно оптимизировать поведение операционной системы в многопроцессорных системах с поддержкой гиперпотоков. Например, рассмотрим систему SMP с двумя физическими процессорами, которые являются гиперпоточными (всего четыре логических процессора). Если поток операционной системы планировщик не знает о гиперпоточности, он будет обрабатывать все четыре логических процессора одинаково. Если только два потока могут выполняться, он может запланировать эти потоки на двух логических процессорах, которые принадлежат одному и тому же физическому процессору; этот процессор будет чрезвычайно загружен, в то время как другой будет бездействовать, что приведет к снижению производительности, чем это возможно при планировании потоков на разных физических процессорах. Этой проблемы можно избежать, улучшив планировщик, чтобы логические процессоры обрабатывались иначе, чем физические процессоры; в некотором смысле, это ограниченная форма изменений в планировщике, необходимых для NUMA системы.

История

Первая опубликованная статья, описывающая то, что сейчас известно как гиперпоточность в компьютере общего назначения, была написана Эдвардом С. Дэвидсоном и Леонардом. Э. Шар в 1973 году.[9]

Denelcor, Inc. представил многопоточность с Процессор гетерогенных элементов (HEP) в 1982 году. Конвейер HEP не мог содержать несколько инструкций из одного процесса. Только одна инструкция из данного процесса могла присутствовать в конвейере в любой момент времени. Если инструкция от данного процесса блокирует конвейер, инструкции от других процессов будут продолжены после того, как конвейер опустошится.

Патент США на технологию, лежащую в основе гиперпоточности, был выдан Кеннету Окину в Sun Microsystems в ноябре 1994 года. В то время CMOS технологический процесс не был достаточно развитым, чтобы обеспечить рентабельное внедрение.[10]

Intel реализовала гиперпоточность на процессоре архитектуры x86 в 2002 году с помощью процессора Foster MP на базе Xeon. В том же году он также был включен в процессор Pentium 4 на базе 3,06 ГГц Northwood, а с тех пор оставался в качестве функции каждого процессора Pentium 4 HT, Pentium 4 Extreme Edition и Pentium Extreme Edition. Линейки процессоров Intel Core и Core 2 (2006 г.), пришедшие на смену модельной линейке Pentium 4, не использовали гиперпоточность. Процессоры на базе Основная микроархитектура не было гиперпоточности, потому что микроархитектура Core была потомком более старой Микроархитектура P6. Микроархитектура P6 использовалась в более ранних итерациях процессоров Pentium, а именно: Pentium Pro, Pentium II и Pentium III (плюс их Celeron & Xeon производные в то время).

Intel выпустила Микроархитектура Nehalem (Core i7) в ноябре 2008 года, в котором гиперпоточность вернулась. Процессоры Nehalem первого поколения содержали четыре физических ядра и эффективно масштабировались до восьми потоков. С тех пор были выпущены как двух-, так и шестиядерные модели с масштабированием четырех и двенадцати потоков соответственно.[11] Ранее Intel Atom ядра были исправными процессорами, иногда с гиперпоточностью, для мобильных ПК с низким энергопотреблением и недорогих настольных ПК.[12] В Itanium 9300 запущен с восемью потоками на процессор (два потока на ядро) благодаря усовершенствованной технологии гиперпоточности. Следующая модель, Itanium 9500 (Poulson), имеет 12-разрядную архитектуру с восемью ядрами ЦП с поддержкой еще восьми виртуальных ядер через гиперпоточность.[13] Серверные чипы Intel Xeon 5500 также используют двустороннюю гиперпоточность.[14][15]

Заявления о производительности

По данным Intel, первая реализация гиперпоточности использовала всего на 5% больше. площадь умереть чем сопоставимый процессор без Hyper-Threading, но производительность была на 15–30% лучше.[16][17] Intel заявляет об улучшении производительности до 30% по сравнению с идентичным Pentium 4 с неодновременной многопоточностью. Оборудование Тома утверждает: «В некоторых случаях P4, работающий на частоте 3,0 ГГц с включенным HT, может даже превзойти P4, работающий на частоте 3,6 ГГц с отключенным HT».[18] Intel также заявляет о значительном улучшении производительности процессора Pentium 4 с поддержкой гиперпоточности в некоторых алгоритмах искусственного интеллекта.

В целом история производительности гиперпоточности вначале была неоднозначной. Как отмечается в одном из комментариев к высокопроизводительным вычислениям от ноября 2002 года:[19]

Hyper-Threading может улучшить производительность некоторых MPI приложения, но не все. В зависимости от конфигурации кластера и, что наиболее важно, от характера приложения, работающего в кластере, прирост производительности может варьироваться или даже быть отрицательным. Следующим шагом является использование инструментов производительности, чтобы понять, какие области способствуют повышению производительности, а какие - снижению производительности.

В результате улучшения производительности очень зависят от приложения;[20] однако при запуске двух программ, требующих полного внимания процессора, может показаться, что одна или обе программы немного замедляются при включении технологии Hyper-Threading.[21] Это связано с система воспроизведения Pentium 4 связывает ценные ресурсы выполнения, выравнивая ресурсы процессора между двумя программами, что добавляет различное количество времени выполнения. Процессоры Pentium 4 «Prescott» и Xeon «Nocona» получили очередь воспроизведения, которая сокращает время выполнения, необходимое для системы воспроизведения, и полностью преодолевает снижение производительности.[22]

Согласно анализу Intel, проведенному за ноябрь 2009 г., влияние гиперпоточности на производительность приводит к увеличению общей задержки в случае, если выполнение потоков не приводит к значительному увеличению общей пропускной способности, которое варьируется[20] по приложению. Другими словами, общая задержка обработки значительно увеличивается из-за гиперпоточности, при этом негативные эффекты становятся меньше, поскольку существует больше одновременных потоков, которые могут эффективно использовать дополнительное использование аппаратных ресурсов, обеспечиваемое гиперпоточностью.[23] Аналогичный анализ производительности доступен для эффектов гиперпоточности при использовании для обработки задач, связанных с управлением сетевым трафиком, например для обработки запросы на прерывание создано контроллеры сетевого интерфейса (Сетевые карты).[24] В другом документе не говорится об улучшении производительности при использовании гиперпоточности для обработки прерываний.[25]

Недостатки

Когда были выпущены первые процессоры HT, многие операционные системы не были оптимизированы для технологии Hyper-Threading (например, Windows 2000 и Linux старше 2.4).[26]

В 2006 году гиперпоточность критиковалась за неэффективность использования энергии.[27] Например, специализированная компания по разработке процессоров с низким энергопотреблением. РУКА заявили, что одновременная многопоточность может потреблять на 46% больше энергии, чем обычные двухъядерные конструкции. Кроме того, они утверждали, что SMT увеличивает обработка кеша на 42%, тогда как двухъядерный приводит к снижению на 37%.[28]

В 2010 году ARM заявила, что может включить одновременную многопоточность в свои будущие чипы;[29] однако это было отклонено в пользу их 64-битной архитектуры 2012 года.[30]

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

В 2017 году выяснилось, что процессоры Intel Skylake и Kaby Lake имели ошибку при реализации гиперпоточности, которая могла вызвать потерю данных.[32] Микрокод Позднее были выпущены обновления для решения этой проблемы.[33]

В 2019 году с Coffee Lake, Intel начала отходить от включения гиперпоточности в основные процессоры Core i7 для настольных ПК, за исключением компонентов Core i9 высшего класса или процессоров Pentium Gold.[34] Он также начал рекомендовать отключить гиперпоточность, поскольку новая уязвимость процессора были выявлены атаки, которые можно было смягчить, отключив HT.[35]

Безопасность

В мае 2005 года Колин Персиваль продемонстрировал, что вредоносный поток на Pentium 4 может использовать синхронизация атаки следить за шаблоны доступа к памяти другого потока, с которым он разделяет кеш, что позволяет кражу криптографической информации. Возможные решения этой проблемы включают изменение процессором стратегии вытеснения кеша или предотвращение операционной системой одновременного выполнения на одном физическом ядре потоков с разными привилегиями.[36] В 2018 г. OpenBSD операционная система отключила гиперпоточность "во избежание утечки данных из приложений в другое программное обеспечение", вызванной Предсказание / L1TF уязвимости.[37][38] В 2019 году набор уязвимостей привело к тому, что эксперты по безопасности рекомендовали отключить гиперпоточность на всех устройствах.[39]

Смотрите также

Рекомендации

  1. ^ Стоукс, Джон (3 октября 2002 г.). «Введение в многопоточность, суперпоточность и гиперпоточность». Ars Technica. стр. 2–3. Получено 30 сентября 2015.
  2. ^ Дебора Т. Марр; Фрэнк Биннс; Дэвид Л. Хилл; Гленн Хинтон; Дэвид А. Куфати; Дж. Алан Миллер; Майкл Аптон (12 декабря 2006 г.). «Архитектура технологии Hyper-Threading и микроархитектура» (PDF). cs.sfu.ca. Архивировано из оригинал (PDF) 23 сентября 2015 г.. Получено 30 сентября 2015.
  3. ^ Ананд Лал Шимпи (5 октября 2012 г.). "Интерфейс Haswell - анализ архитектуры Intel Haswell". АнандТех. Получено 30 сентября 2015.
  4. ^ «Процессор Intel Pentium 4 3,06 ГГц с технологией Hyper-Threading: камень убивает двух птиц». X-bit labs. Архивировано из оригинал 31 мая 2014 г.. Получено 4 июн 2014.
  5. ^ Список взаимозаменяемости обязательных компонентов Intel для процессора Intel Pentium 4 с технологией HT, включает список операционных систем, которые включают оптимизацию для технологии Hyper-Threading; это Windows XP Professional 64, Windows XP MCE, Windows XP Home, Windows XP Professional, некоторые версии Linux, такие как COSIX Linux 4.0, RedHat Linux 9 (версии Professional и Personal), RedFlag Linux Desktop 4.0 и SuSe Linux 8.2 (Professional и Персональные версии)
  6. ^ «Поиск спецификации процессора Intel: SL6WK».
  7. ^ а б Томадакис, Майкл Э. (17 марта 2011 г.). «Архитектура процессора Nehalem и платформ SMP Nehalem-EP» (PDF). Техасский университет A&M. п. 23. Архивировано из оригинал (PDF) 11 августа 2014 г.. Получено 21 марта 2014.
  8. ^ Хеннесси, Джон Л .; Паттерсон, Дэвид А. Компьютерная архитектура: количественный подход. Асанович, Крсте, Бакос, Джейсон Д., Колвелл, Роберт П., Бхаттачарджи, Абхишек, 1984-, Конте, Томас М., 1964- (Шестое изд.). Кембридж, Массачусетс. ISBN  0128119055. OCLC  983459758.
  9. ^ «Многопроцессорная система, реализованная посредством конвейерной обработки», Леонард Шар и Эдвард Дэвидсон, IEEE Computer, февраль 1974 г., стр. 42-51, т. 7 https://www.computer.org/csdl/magazine/co/1974/02/4251/13rRUyoyhIt
  10. ^ Окин, Кеннет (1 ноября 1994 г.), Патент США: 5361337 - Способ и устройство для быстрого переключения процессов в компьютерной системе., заархивировано из оригинал 21 сентября 2015 г., получено 24 мая 2016
  11. ^ «Страница недоступна». www.intel.com.
  12. ^ «Микроархитектура процессора Intel® Atom ™». Intel.com. 18 марта 2011 г.. Получено 5 апреля 2011.
  13. ^ «Intel раскрывает новые возможности Itanium Poulson». Tomshardware.com. Получено 2 июля 2017.
  14. ^ "Страница индекса серверного процессора". Intel.com. 18 марта 2011 г.. Получено 5 апреля 2011.
  15. ^ «Процессор Intel Xeon серии 5500». Intel.com. Получено 5 апреля 2011.
  16. ^ (PDF). 19 октября 2012 г. https://web.archive.org/web/20121019025809/http://www.intel.com/technology/itj/2002/volume06issue01/vol6iss1_hyper_threading_technology.pdf. Архивировано из оригинал (PDF) 19 октября 2012 г. Отсутствует или пусто | название = (помощь)
  17. ^ 12331095 (28 апреля 2011 г.). «Как определить эффективность технологии Hyper-Threading в приложении». software.intel.com.CS1 maint: числовые имена: список авторов (связь)
  18. ^ «Резюме: в некоторых случаях P4 3.0HT может превзойти версию с тактовой частотой 3,6 ГГц: один процессор в двух режимах работы: P4 3,06 ГГц с технологией Hyper-Threading». Tomshardware.com. 14 ноября 2002 г.. Получено 5 апреля 2011.
  19. ^ Тау Ленг; Ризван Али; Jenwei Hsieh; Кристофер Стэнтон (ноябрь 2002 г.). «Исследование Hyper-Threading в кластерах высокопроизводительных вычислений» (PDF). Dell. п. 4. Получено 12 ноября 2012.
  20. ^ а б Джоэл Хруска (24 июля 2012 г.). «Максимальная производительность: сравнение эффектов Hyper-Threading, обновлений программного обеспечения». extremetech.com. Получено 2 марта 2015.
  21. ^ «Оценка производительности процессора - тест - Pentium 4 2.8 и 3.0». users.telenet.be.
  22. ^ «Воспроизведение: неизвестные особенности ядра NetBurst. Стр. 15». Повтор: неизвестные особенности ядра NetBurst. Xbitlabs. Архивировано из оригинал 14 мая 2011 г.. Получено 24 апреля 2011.
  23. ^ Валлес, Антонио (20 ноября 2009 г.). «Анализ производительности технологии Intel Hyper-Threading». Intel. Архивировано из оригинал 17 февраля 2015 г.. Получено 26 февраля 2015.
  24. ^ «Настройка сети и производительность». calomel.org. 12 ноября 2013 г.. Получено 26 февраля 2015.
  25. ^ «Документация по ядру Linux: масштабирование в сетевом стеке Linux». kernel.org. 1 декабря 2014 г.. Получено 2 марта 2015. Нагрузку на процессор можно наблюдать с помощью утилиты mpstat, но обратите внимание, что на процессорах с гиперпоточностью (HT) каждый гиперпоток представлен как отдельный ЦП. Что касается обработки прерываний, HT не показал никаких преимуществ в начальных тестах, поэтому ограничьте количество очередей количеством ядер ЦП в системе.
  26. ^ «Технология Hyper-Threading - Операционные системы, которые включают оптимизацию для технологии Hyper-Threading». Intel.com. 19 сентября 2011 г.. Получено 29 февраля 2012.
  27. ^ Устойчивые практики: концепции, методологии, инструменты и приложения. Ассоциация управления информационными ресурсами. Декабрь 2013. с. 666. ISBN  9781466648524.
  28. ^ «ARM не поклонник HyperThreading». theinquirer.net. 2 августа 2006 г.. Получено 29 февраля 2012.
  29. ^ Джермолук, Том (13 октября 2010 г.). «О MIPS и MIPS | TOP500 суперкомпьютерных сайтов». Top500.org. Архивировано из оригинал 13 июня 2011 г.. Получено 5 апреля 2011.
  30. ^ «ARM запускает первое 64-битное процессорное ядро ​​для серверов и смартфонов». Форум технического дизайна. 30 октября 2012 г.
  31. ^ Рик Мыслевски (8 мая 2013 г.). «Глубоко внутри первого жизнеспособного мобильного процессора Intel: Silvermont». Реестр. Получено 13 января 2014.
  32. ^ Чиргвин, Ричард (25 июня 2017 г.). «У процессоров Intel Skylake и Kaby Lake есть неприятная ошибка гиперпоточности». Реестр. Получено 4 июля 2017.
  33. ^ "У Skylake, Kaby Lake Chips есть сбой при включенной Hyperthreading". Ars Technica. 26 июня 2017 г.. Получено 25 ноября 2017.
  34. ^ Катресс, Ян (23 апреля 2019 г.). "Процессоры Intel 9-го поколения: анонсированы все настольные и мобильные процессоры мощностью 45 Вт". АнандТех.
  35. ^ Армасу, Лучиан (14 мая 2019 г.). «Новый недостаток Intel, похожий на Spectre, влияет на чипы, произведенные с 2008 года». Оборудование Тома.
  36. ^ Персиваль, Колин (14 мая 2005 г.). «Кеш отсутствует для развлечения и прибыли» (PDF). Daemonology.net. Получено 14 июн 2016.
  37. ^ «OpenBSD отключает гиперпоточность Intel из-за опасений утечки данных процессора». Получено 24 августа 2018.
  38. ^ "'Отключить SMT / Hyperthreading во всех BIOS Intel - MARC ". marc.info. Получено 24 августа 2018.
  39. ^ Гринберг, Энди (14 мая 2019 г.). "Meltdown Redux: ошибка Intel позволяет хакерам выкачивать секреты с миллионов компьютеров". ПРОВОДНОЙ. Получено 14 мая 2019.

внешняя ссылка