Одновременная многопоточность - Simultaneous multithreading

Одновременная многопоточность (SMT) - это метод повышения общей эффективности суперскалярный Процессоры с аппаратная многопоточность. SMT позволяет использовать несколько независимых потоки исполнения, чтобы лучше использовать ресурсы, предоставляемые современными архитектуры процессоров.

Подробности

Название многопоточность неоднозначно, потому что на одном ядре ЦП может выполняться не только несколько потоков одновременно, но и несколько задач (с разными таблицы страниц, разные сегменты состояния задачи, разные защитные кольца, разные Разрешения ввода / вывода, так далее.). Несмотря на то, что они работают на одном ядре, они полностью отделены друг от друга. Многопоточность аналогична концепции. вытесняющая многозадачность но реализуется на уровне исполнения в современных суперскалярных процессорах.

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

Поскольку это действительно эффективный метод, который неизбежно увеличивает конфликт из-за общих ресурсов, измерение или согласование его эффективности может быть затруднено. Тем не менее, измеренная энергоэффективность SMT с параллельными собственными и управляемыми рабочими нагрузками на исторических данных Intel SMT от 130 до 32 нм (Hyper Threading ) обнаружили, что в реализациях 45 и 32 нм SMT чрезвычайно энергоэффективен даже с процессорами Atom в порядке.[1] В современных системах SMT эффективно использует параллелизм с очень небольшой дополнительной динамической мощностью. То есть, даже если прирост производительности минимален, экономия потребляемой мощности может быть значительной.[2]

Некоторые исследователи[ВОЗ? ] показали, что дополнительные потоки могут использоваться проактивно для заполнения общего ресурса, такого как кеш, для повышения производительности другого отдельного потока, и утверждают, что это показывает, что SMT не только повышает эффективность. Другие[ВОЗ? ] используйте SMT для обеспечения избыточных вычислений, для некоторого уровня обнаружения ошибок и восстановления.

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

Таксономия

В конструкции процессора есть два способа увеличить параллелизм на кристалле с меньшими требованиями к ресурсам: один - это суперскалярный метод, который пытается использовать параллелизм на уровне команд (ILP); другой - многопоточность, использующая параллелизм на уровне потоков (TLP).

Суперскаляр означает выполнение нескольких инструкций одновременно, в то время как параллелизм на уровне потоков (TLP) выполняет инструкции из нескольких потоков в одном чипе процессора одновременно. Есть много способов поддерживать более одного потока в чипе, а именно:

  • Многопоточность с чередованием: выдача нескольких инструкций из разных потоков с чередованием, также называемая временная многопоточность. Его можно дополнительно разделить на мелкозернистую многопоточность или крупнозернистую многопоточность в зависимости от частоты чередования проблем. Мелкозернистый многопоточность - например, в баррель процессор - выдает инструкции для разных потоков после каждого цикла, а крупнозернистый многопоточность переключается только на выдачу инструкций из другого потока, когда текущий выполняющийся поток вызывает некоторые события с длительной задержкой (например, сбой страницы и т. д.). Грубая многопоточность более распространена для меньшего переключения контекста между потоками. Например, Intel Монтесито процессор использует крупнозернистую многопоточность, в то время как Sun UltraSPARC T1 использует мелкозернистую многопоточность. Для процессоров, у которых есть только один конвейер на ядро, чередующаяся многопоточность - единственный возможный способ, поскольку он может выдавать не более одной инструкции за цикл.
  • Одновременная многопоточность (SMT): выполнение нескольких инструкций из нескольких потоков за один цикл. Для этого процессор должен быть суперскалярным.
  • Многопроцессорность на уровне микросхемы (CMP или многоядерный ): объединяет два или более процессора в один чип, каждый из которых выполняет потоки независимо.
  • Любая комбинация многопоточности / SMT / CMP.

Ключевой фактор для их различения - посмотреть, сколько инструкций процессор может выполнить за один цикл и сколько потоков, из которых поступают инструкции. Например, UltraSPARC T1 от Sun Microsystems - это многоядерный процессор в сочетании с техникой мелкозернистой многопоточности вместо одновременной многопоточности, поскольку каждое ядро ​​может выдавать только одну инструкцию за раз.

Исторические реализации

Хотя многопоточные процессоры существуют с 1950-х годов, одновременная многопоточность была впервые исследована IBM в 1968 году как часть САУ-360 проект.[3] Первым крупным коммерческим микропроцессором, разработанным с помощью SMT, был Альфа 21464 (EV8). Этот микропроцессор был разработан DEC в сотрудничестве с деканом Таллсеном из Калифорнийского университета в Сан-Диего и Сьюзан Эггерс и Генри Леви из Вашингтонского университета. Микропроцессор так и не был выпущен, так как линейка микропроцессоров Alpha была снята с производства незадолго до этого. HP приобретенный Compaq которые, в свою очередь, приобрели DEC. Работа Дина Таллсена также использовалась для разработки гиперпотоковый версии микропроцессоров Intel Pentium 4, такие как «Northwood» и «Prescott».

Современные коммерческие реализации

В Intel Pentium 4 был первым современным процессором для настольных ПК, реализующим одновременную многопоточность, начиная с модели 3,06 ГГц, выпущенной в 2002 году и с тех пор внедренной в ряд их процессоров. Intel называет эту функциональность Hyper-Threading Technology и предоставляет базовый двухпотоковый механизм SMT. Intel заявляет об улучшении скорости до 30%[4] по сравнению с идентичным в остальном Pentium 4 без SMT. Наблюдаемое улучшение производительности сильно зависит от приложения; однако при запуске двух программ, требующих полного внимания процессора, может показаться, что одна или обе программы немного замедляются при включении Hyper-threading.[5] Это связано с система воспроизведения Pentium 4 связывает ценные ресурсы выполнения, увеличивая конкуренцию за ресурсы, такие как пропускная способность, кеши, TLB, буфер переупорядочения записи, выравнивая ресурсы процессора между двумя программами, что добавляет различное время выполнения. Ядро Pentium 4 Prescott получило очередь воспроизведения, что сокращает время выполнения, необходимое для системы воспроизведения. Этого достаточно, чтобы полностью преодолеть снижение производительности.[6]

Последний Воображение Технологии Архитектура MIPS конструкции включают систему SMT, известную как «МИПС МТ».[7] MIPS MT обеспечивает как тяжелые элементы виртуальной обработки, так и более легкие аппаратные микропотоки. RMI, стартап из Купертино, является первым поставщиком MIPS, который предоставил процессор SOC основан на восьми ядрах, каждое из которых выполняет четыре потока. Потоки могут быть запущены в мелкозернистом режиме, когда в каждом цикле может выполняться другой поток. Потокам также можно назначить приоритеты. Воображение Технологии Процессоры MIPS имеют два потока SMT на ядро.

IBM Синий ген / Q имеет 4-сторонний SMT.

В IBM МОЩНОСТЬ5, анонсированный в мае 2004 года, выпускается либо в виде двухъядерного двухчипового модуля (DCM), либо в виде четырехъядерного или восьмиъядерного многочипового модуля (MCM), причем каждое ядро ​​включает в себя двухпоточный модуль SMT. Реализация IBM более сложна, чем предыдущие, потому что она может назначать другой приоритет различным потокам, более детализирована, а механизм SMT можно включать и выключать динамически, чтобы лучше выполнять те рабочие нагрузки, в которых процессор SMT мог бы не увеличивать производительность. Это вторая реализация от IBM общедоступной аппаратной многопоточности. В 2010 году IBM выпустила системы на базе процессора POWER7 с восемью ядрами, каждое из которых имеет четыре одновременных интеллектуальных потока. Это переключает режим потоковой передачи между одним потоком, двумя потоками или четырьмя потоками в зависимости от количества потоков процесса, запланированных в данный момент. Это оптимизирует использование ядра для минимального времени отклика или максимальной пропускной способности. IBM МОЩНОСТЬ8 имеет 8 интеллектуальных одновременных потоков на ядро ​​(SMT8).

IBM z13 имеет два потока на ядро ​​(SMT-2).

Хотя многие люди сообщили, что Sun Microsystems 'UltraSPARC T1 (известный как «Ниагара» до выпуска от 14 ноября 2005 г.) и ныне несуществующий процессор под кодовым названием "Камень " (первоначально анонсировано в 2005 г., но после многих задержек отменено в 2010 г.) являются реализациями SPARC сосредоточена почти полностью на использовании методов SMT и CMP, Niagara фактически не использует SMT. Sun называет эти комбинированные подходы «CMT», а общую концепцию - «пропускными вычислениями». У Niagara восемь ядер, но у каждого ядра только один конвейер, поэтому на самом деле он использует мелкозернистую многопоточность. В отличие от SMT, где инструкции из нескольких потоков совместно используют окно проблемы в каждом цикле, процессор использует политику циклического перебора для выдачи инструкций из следующего активного потока в каждом цикле. Это делает его более похожим на баррель процессор. Процессор Rock от Sun Microsystems отличается, он имеет более сложные ядра, которые имеют более одного конвейера.

В Корпорация Oracle SPARC T3 имеет восемь тонких потоков на ядро, SPARC T4, SPARC T5, SPARC M5, M6 и M7 имеют восемь мелких потоков на ядро, два из которых могут выполняться одновременно.

Fujitsu SPARC64 VI имеет крупномасштабную вертикальную многопоточность (VMT). SPARC VII и более новые версии имеют двухсторонний SMT.

Intel Itanium Montecito использовал крупнозернистую многопоточность, а Tukwila и более новые - двухсторонний SMT (с двухдоменной многопоточностью).

Intel Ксеон Пхи имеет 4-сторонний SMT (с мультиплексированием по времени) с аппаратными потоками, которые нельзя отключить в отличие от обычной Hyperthreading.[8] В Intel Atom, выпущенный в 2008 году, является первым продуктом Intel, который поддерживает двусторонний SMT (проданный как Hyper-Threading) без поддержки переупорядочивания инструкций, спекулятивного выполнения или переименования регистров. Intel повторно представила Hyper-Threading с Микроархитектура Nehalem, после его отсутствия на Основная микроархитектура.

AMD Бульдозерная микроархитектура FlexFPU и Shared L2 cache являются многопоточными, но целочисленные ядра в модуле являются однопоточными, поэтому это лишь частичная реализация SMT.[9][10]

AMD Микроархитектура дзен имеет двухсторонний SMT.

Архитектура VISC[11][12][13] использует Уровень виртуального программного обеспечения (уровень перевода) для отправки единственного потока инструкций в Глобальный интерфейс который разбивает инструкции на виртуальные аппаратные резьбы которые затем отправляются на отдельные виртуальные ядра. Затем эти виртуальные ядра могут отправлять их в доступные ресурсы на любом из физических ядер. Несколько виртуальных ядер могут помещать потоклеты в буфер переупорядочения одного физического ядра, которое может одновременно разделять частичные инструкции и данные из нескольких потоков через порты выполнения. Каждое виртуальное ядро ​​отслеживает положение относительного вывода. Эта форма многопоточности может повысить однопоточную производительность, позволяя одному потоку использовать все ресурсы ЦП. Распределение ресурсов является динамическим на уровне задержки, близком к одному циклу (1–4 цикла в зависимости от изменения распределения в зависимости от конкретного пользователя). Поэтому, если два виртуальных ядра конкурируют за ресурсы, существуют соответствующие алгоритмы для определения того, какие ресурсы и где должны быть выделены.

Недостатки

В зависимости от конструкции и архитектуры процессора одновременная многопоточность может снизить производительность, если какой-либо из общих ресурсов является узким местом для производительности.[14] Критики утверждают, что на разработчиков программного обеспечения ложится серьезное бремя, поскольку они должны проверять, хороша или плоха одновременная многопоточность для их приложений в различных ситуациях, и вставлять дополнительную логику, чтобы отключить ее, если она снижает производительность. Текущим операционным системам не хватает удобных API призывает для этой цели и для предотвращения процессов с разным приоритетом отнимать ресурсы друг у друга.[15]

Также существует проблема безопасности с некоторыми реализациями одновременной многопоточности. Гиперпоточность Intel в NetBurst на базе процессоров есть уязвимость, из-за которой одно приложение может украсть криптографический ключ из другого приложения, работающего на том же процессоре, путем отслеживания использования кэша.[16] Есть также сложные эксплойты машинного обучения для реализации HT, которые были объяснены на Черная шляпа 2018.[17]

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

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

  1. ^ АСПЛОС'11
  2. ^ АСПЛОС'11
  3. ^ Смотерман, Марк (25 мая 2011 г.). «Конец проекта IBM ACS». Школа вычислительной техники, Университет Клемсона. Получено 19 января, 2013.
  4. ^ Марр, Дебора (14 февраля 2002 г.). «Архитектура технологии Hyper-Threading и микроархитектура» (PDF). Intel Technology Journal. 6 (1): 4. Дои:10.1535 / itj. Получено 25 сентября 2015.
  5. ^ «Оценка производительности процессора Pentium 4 2.8 и 3.0».
  6. ^ «Воспроизведение: неизвестные особенности ядра NetBurst. Стр. 15». Повтор: неизвестные особенности ядра NetBurst. xbitlabs.com. Архивировано из оригинал 14 мая 2011 г.. Получено 24 апреля 2011.
  7. ^ "Описание MIPS MT ASE".
  8. ^ Барт, Микаэла; Биклинг, Микко; Илиева, Невена; Сааринен, саами; Шлифак, Майкл (18 февраля 2014 г.). Вайнберг, Фолькер (ред.). "Руководство по передовой практике Intel Xeon Phi v1.1". Партнерство для передовых вычислений в Европе.
  9. ^ "Многопоточность модуля семейства AMD Bulldozer". wccftech. Июль 2013.
  10. ^ Хафакри, Гарет (28 октября 2010 г.). «AMD представляет Flex FP». бит-тек.
  11. ^ Катресс, Ян (12 февраля 2016 г.). «Изучение архитектуры мягких машин: элемент VISC для улучшения IPC». AnandTech.
  12. ^ «Показана производительность процессоров нового поколения». VR мир. 4 февраля 2016 г. Архивировано с оригинал на 2017-01-13.
  13. ^ «Архитектурные волны». Мягкие машины. 2017. Архивировано с оригинал на 2017-03-29.
  14. ^ «Воспроизведение: неизвестные особенности ядра NetBurst. Стр. 15». Повтор: неизвестные особенности ядра NetBurst. xbitlabs.com. Архивировано из оригинал 14 мая 2011 г.. Получено 24 апреля 2011.
  15. ^ Насколько хороша гиперпоточность?
  16. ^ Hyper-Threading считается вредным
  17. ^ TLBleed: когда защиты кешей ЦП недостаточно
Общий

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