stringtranslate.com

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

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

Подробности

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

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

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

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

Таксономия

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

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

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

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

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

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

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

Новейшие разработки архитектуры MIPS компании Imagination Technologies включают систему SMT, известную как «MIPS MT». [6] MIPS MT обеспечивает как тяжелые виртуальные элементы обработки, так и более легкие аппаратные микропотоки. RMI , стартап из Купертино, является первым поставщиком MIPS, предоставившим процессор SOC на базе восьми ядер, каждое из которых выполняет четыре потока. Потоки могут выполняться в мелкозернистом режиме, где в каждом цикле может выполняться другой поток. Потокам также можно назначать приоритеты. Процессоры Imagination Technologies 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 Z , начиная с процессора z13 в 2013 году, имеет два потока на ядро ​​(SMT-2).

Хотя многие люди сообщали, что UltraSPARC T1 от Sun Microsystems (известный как «Niagara» до его выпуска 14 ноября 2005 года) и ныне несуществующий процессор под кодовым названием « Rock » (первоначально анонсированный в 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 и более новые модели используют 2-way SMT (с двухдоменной многопоточностью).

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

Микроархитектура AMD Bulldozer FlexFPU и общий кэш L2 являются многопоточными, но целочисленные ядра в модуле являются однопоточными, поэтому это лишь частичная реализация SMT. [8] [9]

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

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

Недостатки

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

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

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

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

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

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