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

редактировать

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

Содержание

  • 1 Подробности
  • 2 Таксономия
  • 3 Исторические реализации
  • 4 Современные коммерческие реализации
  • 5 Недостатки
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки

Подробности

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

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

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

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

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

Таксономия

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

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

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

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

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

Хотя многопоточные процессоры существуют с 1950-х годов, одновременная многопоточность была впервые исследована IBM в 1968 году в рамках проекта ACS-360. Первым крупным коммерческим микропроцессором, разработанным с помощью SMT, был Alpha 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% по сравнению с идентичным в остальном Pentium 4 без SMT. Заметное улучшение производительности очень зависит от приложения; однако при запуске двух программ, требующих полного внимания процессора, может показаться, что одна или обе программы немного замедляются при включении Hyper-threading. Это связано с тем, что система воспроизведения Pentium 4 связывает ценные ресурсы выполнения, увеличивая конкуренцию за такие ресурсы, как пропускная способность, кеши, TLB, буфер переупорядочения записей, выравнивая ресурсы процессора между двумя программами, что добавляет различное время выполнения. Ядро Pentium 4 Prescott получило очередь воспроизведения, что сокращает время выполнения, необходимое для системы воспроизведения. Этого достаточно, чтобы полностью преодолеть снижение производительности.

Последние разработки Imagination Technologies архитектура MIPS включают систему SMT, известную как «MIPS MT». MIPS MT обеспечивает как тяжелые элементы виртуальной обработки, так и более легкие аппаратные микропотоки. RMI, стартап из Купертино, является первым поставщиком MIPS, который предоставил процессор SOC на основе восьми ядер, каждое из которых выполняет четыре потока. Потоки могут быть запущены в мелкозернистом режиме, когда в каждом цикле может выполняться другой поток. Потокам также можно назначить приоритеты. Imagination Technologies CPU MIPS имеют два потока SMT на ядро.

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

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

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

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

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

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

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

Intel Xeon Phi имеет 4-сторонний SMT (с мультиплексированием по времени) с аппаратными потоками, которые нельзя отключить в отличие от обычной Hyperthreading. Intel Atom, выпущенный в 2008 году, является первым продуктом Intel, который поддерживает двусторонний SMT (проданный как Hyper-Threading) без поддержки переупорядочения инструкций, спекулятивного выполнения или переименования регистров. Intel повторно представила Hyper-Threading с помощью микроархитектуры Nehalem после ее отсутствия в микроархитектуре Core.

AMD Bulldozer Microarchitecture FlexFPU и Shared Кэш L2 является многопоточным, но целочисленные ядра в модуле являются однопоточными, поэтому это только частичная реализация SMT.

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

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

Недостатки

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

Также существует проблема безопасности n с некоторыми реализациями одновременной многопоточности. Гиперпоточность Intel в процессорах на базе NetBurst имеет уязвимость, благодаря которой одно приложение может украсть криптографический ключ у другого приложения, работающего на том же процессоре, путем отслеживания использования его кеша. Существуют также сложные эксплойты машинного обучения для реализации HT, которые были описаны на Black Hat 2018.

См. Также

Ссылки

Общие

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

Последняя правка сделана 2021-06-08 02:12:37
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте