stringtranslate.com

Гиперпоточность

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

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

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

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

Обзор

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

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

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

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

Недостатки

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

В 2006 году гиперпоточность критиковали за неэффективность энергопотребления. [28] Например, ARM (специализированная компания по разработке маломощных ЦП) заявила, что одновременная многопоточность может потреблять до 46% больше энергии, чем обычные двухъядерные конструкции. Кроме того, они утверждали, что SMT увеличивает загрузку кэша на 42%, тогда как двухъядерность приводит к снижению на 37%. [29]

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

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

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

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

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

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

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

Ссылки

  1. Стоукс, Джон (3 октября 2002 г.). «Введение в многопоточность, суперпоточность и гиперпоточность». Ars Technica . С. 2–3 . Получено 30 сентября 2015 г.
  2. ^ Дебора Т. Марр; Фрэнк Биннс; Дэвид Л. Хилл; Гленн Хинтон; Дэвид А. Куфати; Дж. Алан Миллер; Майкл Аптон (12 декабря 2006 г.). "Архитектура и микроархитектура технологии гиперпоточности" (PDF) . cs.sfu.ca . Архивировано из оригинала (PDF) 23 сентября 2015 г. . Получено 30 сентября 2015 г. .
  3. ^ Ананд Лал Шимпи (5 октября 2012 г.). «The Haswell Front End – Анализ архитектуры Haswell от Intel». AnandTech . Получено 30 сентября 2015 г.
  4. ^ "Процессор Intel Pentium 4 3,06 ГГц с технологией Hyper-Threading: убиваем двух зайцев одним выстрелом". X-bit labs. Архивировано из оригинала 31 мая 2014 года . Получено 4 июня 2014 года .
  5. ^ "Технология Intel® Hyper-Threading (технология Intel® HT)". Intel . Получено 24 октября 2021 г. .
  6. ^ Список взаимозаменяемости обязательных компонентов 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 и Personal)
  7. ^ «Поиск спецификаций процессоров Intel: SL6WK».
  8. ^ ab Thomadakis, Michael E. (17 марта 2011 г.). «Архитектура процессора Nehalem и платформ Nehalem-EP SMP» (PDF) . Техасский университет A&M. стр. 23. Архивировано из оригинала (PDF) 11 августа 2014 г. . Получено 21 марта 2014 г. .
  9. ^ Хеннесси, Джон Л.; Паттерсон, Дэвид А. (7 декабря 2017 г.). Архитектура компьютера: количественный подход . Асанович, Крсте , Бакос, Джейсон Д., Колвелл, Роберт П., Бхаттачарджи, Абишек, 1984-, Конте, Томас М., 1964- (шестое изд.). Кембридж, Массачусетс. ISBN 978-0128119051. OCLC  983459758.{{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  10. ^ «Мультиминипроцессорная система, реализованная с помощью конвейеризации», Леонард Шар и Эдвард Дэвидсон, IEEE Computer, февраль 1974 г., стр. 42–51, том 7 https://www.computer.org/csdl/magazine/co/1974/02/4251/13rRUyoyhIt
  11. Окин, Кеннет (1 ноября 1994 г.), Патент США: 5361337 — Метод и устройство для быстрого переключения процессов в компьютерной системе, архивировано из оригинала 21 сентября 2015 г. , извлечено 24 мая 2016 г.
  12. ^ "Экстремальные игры с процессором Intel® Core™ i7 Extreme Edition". www.intel.com . Архивировано из оригинала 1 декабря 2008 г.
  13. ^ "Микроархитектура процессора Intel® Atom™". Intel.com. 18 марта 2011 г. Получено 5 апреля 2011 г.
  14. ^ "Intel раскрывает новые возможности Itanium Poulson". Tomshardware.com. 24 августа 2011 г. Получено 2 июля 2017 г.
  15. ^ "Server Processor Index Page". Intel.com. 18 марта 2011 г. Получено 5 апреля 2011 г.
  16. ^ "Процессор Intel Xeon серии 5500". Intel.com . Получено 5 апреля 2011 г.
  17. ^ "Hyper-Threading Technology" (PDF) . Intel Technology Journal . 06 (1). 14 февраля 2012 г. ISSN  1535-766X. Архивировано из оригинала (PDF) 19 октября 2012 г.
  18. ^ «Как определить эффективность технологии Hyper-Threading в приложении». software.intel.com . 28 апреля 2011 г. Архивировано из оригинала 2 февраля 2010 г.
  19. ^ "Резюме: в некоторых случаях P4 3.0HT может даже превзойти версию 3,6 ГГц: один процессор в двухпроцессорной работе: P4 3,06 ГГц с технологией Hyper-Threading". Tomshardware.com. 14 ноября 2002 г. Получено 5 апреля 2011 г.
  20. ^ Тау Ленг; Ризван Али; Дженвэй Хси; Кристофер Стэнтон (ноябрь 2002 г.). «Исследование гиперпоточности в высокопроизводительных вычислительных кластерах» (PDF) . Dell. стр. 4. Получено 12 ноября 2012 г.
  21. ^ ab Joel Hruska (24 июля 2012 г.). "Максимальная производительность: сравнение эффектов Hyper-Threading и обновлений программного обеспечения". extremetech.com . Получено 2 марта 2015 г.
  22. ^ "Оценка производительности ЦП - Тест - Pentium 4 2.8 и 3.0". users.telenet.be . Архивировано из оригинала 24 февраля 2021 г. Получено 12 апреля 2011 г.
  23. ^ "Повтор: Неизвестные особенности ядра NetBurst. Страница 15". Повтор: Неизвестные особенности ядра NetBurst . Xbitlabs. Архивировано из оригинала 14 мая 2011 г. Получено 24 апреля 2011 г.
  24. ^ Валлес, Антонио (20 ноября 2009 г.). "Performance Insights to Intel Hyper-Threading Technology". Intel . Архивировано из оригинала 17 февраля 2015 г. . Получено 26 февраля 2015 г. .
  25. ^ "Настройка и производительность сети". calomel.org . 12 ноября 2013 г. Получено 26 февраля 2015 г.
  26. ^ "Linux kernel documentation: Scaling in the Linux Networking Stack". kernel.org . 1 декабря 2014 г. . Получено 2 марта 2015 г. Нагрузку на процессор можно наблюдать с помощью утилиты mpstat, но следует отметить, что на процессорах с гиперпоточностью (HT) каждый гиперпоток представлен как отдельный ЦП. Для обработки прерываний HT не показал никаких преимуществ в начальных тестах, поэтому ограничьте количество очередей количеством ядер ЦП в системе.
  27. ^ «Технология Hyper-Threading – Операционные системы, включающие оптимизацию для технологии Hyper-Threading». Intel.com. 19 сентября 2011 г. Получено 29 февраля 2012 г.
  28. ^ Устойчивые практики: концепции, методологии, инструменты и приложения . Ассоциация управления информационными ресурсами. Декабрь 2013 г. стр. 666. ISBN 9781466648524.
  29. ^ "ARM не фанат HyperThreading". theinquirer.net. 2 августа 2006 г. Архивировано из оригинала 6 сентября 2009 г. Получено 29 февраля 2012 г.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  30. ^ Джермолук, Том (13 октября 2010 г.). "О MIPS и MIPS | Сайты TOP500 по суперкомпьютерам". Top500.org . Архивировано из оригинала 13 июня 2011 г. Получено 5 апреля 2011 г.
  31. ^ "ARM запускает первое 64-битное процессорное ядро ​​для серверов и смартфонов". Tech Design Forum . 30 октября 2012 г.
  32. ^ "Arm запускает первое ядро ​​Cortex с поддержкой SMT | bit-tech.net". bit-tech.net . Получено 2 декабря 2023 г. .
  33. ^ Рик Мыслевски (8 мая 2013 г.). "В глубине первого жизнеспособного мобильного процессора Intel: Silvermont". The Register . Получено 13 января 2014 г.
  34. ^ Чиргвин, Ричард (25 июня 2017 г.). «Процессоры Intel Skylake и Kaby Lake имеют неприятную ошибку гиперпоточности». The Register . Получено 4 июля 2017 г.
  35. ^ "Skylake, Kaby Lake Chips Have a Crash Bug with Hyperthreading Enabled". Ars Technica . 26 июня 2017 . Получено 25 ноября 2017 .
  36. ^ Катресс, Ян (23 апреля 2019 г.). «Процессоры Intel Core 9-го поколения: анонсированы все настольные и мобильные процессоры мощностью 45 Вт». AnandTech .
  37. ^ Armasu, Lucian (14 мая 2019 г.). «Новый Spectre-подобный дефект Intel затрагивает чипы, выпущенные с 2008 года». Tom's Hardware . Архивировано из оригинала 4 августа 2019 г.
  38. ^ Персиваль, Колин (14 мая 2005 г.). «Кэш отсутствует ради развлечения и прибыли» (PDF) . Daemonology.net . Получено 14 июня 2016 г. .
  39. ^ "OpenBSD отключает гиперпоточность Intel из-за опасений утечки данных ЦП" . Получено 24 августа 2018 г. .
  40. ^ "'Отключить SMT/Hyperthreading во всех BIOS Intel' - MARC". marc.info . Получено 24 августа 2018 г. .
  41. ^ Гринберг, Энди (14 мая 2019 г.). «Meltdown Redux: ошибка Intel позволяет хакерам выкачивать секреты из миллионов ПК». WIRED . Получено 14 мая 2019 г.

Внешние ссылки