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

Одновременная многопоточность ( англ. Simultaneous Multithreading SMT ) — одна из двух главных форм многопоточности , которая может быть реализована в процессорах аппаратно. Второй формой является временная многопоточность . Технология одновременной многопоточности позволяет исполнять инструкции из нескольких независимых потоков выполнения на множестве функциональных модулей суперскалярного микропроцессора в одном цикле.

История и реализации

Впервые одновременная многопоточность была представлена в исследовательских работах Дина Таллсена (Dean Tullsen) в 1995 г. ( Калифорнийский университет в Сан-Диего ) .

Первым процессором с реализацией одновременной многопоточности мог бы стать микропроцессор Alpha 21464 компании DEC , который был объявлен в 1999 году. Процессор разрабатывался командой под руководством главного архитектора . Процессор был одноядерным, суперскалярным с 8 конвейерами, имел 4 комплекта регистров для переключения контекста и мог потенциально выполнять 4 потока одновременно. 2-кратное увеличение производительности получалось всего лишь за счет 10%-ного увеличения количества логических элементов. Во многом процессор воплощал предложения и подходы, изложенные в работах Дина Таллсена, соавтором чьих работ выступали некоторые члены команды «Alpha» (Джоэл Емер и Ребекка Штамм (Rebecca Stamm)). Однако Alpha 21464 так и не появился на рынке, он пал жертвой корпоративных слияний и поглощений .

Таким образом первой реализацией одновременной многопоточности на рынке стала технология Hyper-threading компании Intel, представленная в 2002 г. в серверных процессорах Xeon и в Pentium 4 (микроархитектура NetBurst ).

Когда компания Intel обратилась к многоядерной архитектуре микропроцессоров, ради упрощения дизайна она не перенесла технологию Hyper-threading на новые процессоры. В результате первым многоядерным процессором с одновременной многопоточностью на каждом ядре стал процессор IBM POWER5 (2004 г.) . В конце концов Intel вернула Hyper-threading в свои процессоры в архитектуре Nehalem (2008 г.) .

Критика

В 2021 году, группа исследователей, включающая Грацский технический университет , технологический институт Джорджии и некоммерческий исследовательский центр «Lamarr Security Research», обнаружили уязвимость в технологии SMT, реализованной в процессорах AMD с архитектурами Zen , Zen 2 и Zen 3 . Уязвимость, получившая название SQUIP (Scheduler Queue Usage via Interference Probing — использование очереди планировщика через анализ помех ), позволяет злоумышленникам получать доступ к конфиденциальным данным, о чем, в декабре 2021 года, было сообщено AMD. В ходе демонстрации уязвимости, исследователи «взломали» ключ шифрования RSA-4096 . AMD, присвоив уязвимости идентификатор CVE-2021-46778 и «средний» рейтинг важности, в августе 2022 года опубликовала бюллетень с рекомендациями смягчения уязвимости .

Сравнение с другими технологиями

Производительность суперскалярных микропроцессоров увеличивается за счёт одновременного исполнения нескольких инструкций в одном цикле, однако она ограничивается зависимостями между инструкциями (которые ограничивают возможности параллельного исполнения, в результате чего в цикле может исполняться не максимально возможное количество инструкций) и операциями с большой задержкой внутри одного потока выполнения (которые приводят к появлению циклов, в которых не исполняется ни одна инструкция — pipeline stalls ).

Архитектуры с аппаратной многопоточностью выполняют несколько потоков с возможностью быстрого переключения контекста между ними. Такая «традиционная» многопоточность скрывает задержки памяти и функциональных модулей (снижая количество «пустых» циклов), хотя в каждом конкретном цикле исполняются инструкции из одного потока. Однако увеличение количества одновременно исполняемых инструкций снижает возможности традиционной многопоточности.

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

Иллюстрация одновременной многопоточности: 4 потока исполняются одновременно на 4-конвейерном микропроцессоре

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

Примечания

  1. . Дата обращения: 21 ноября 2016. 21 ноября 2016 года.
  2. . Дата обращения: 31 мая 2017. 1 июня 2017 года.
  3. . Дата обращения: 4 июня 2017. 9 июня 2017 года.
  4. см. работу Dean M.Tullsen, Susan J. Eggers, and Henry M.Levy. Simultaneous multithreading: Maximizing on-chip parallelism. In Proceedings of the International Symposium on Computer Architecture, June 1995
  5. докторская диссертация Simultaneous Multithreading, D.M. Tullsen, Ph.D. Thesis, University of Washington, August, 1996.
  6. , p. 72.
  7. , p. 74.
  8. , p. 34.
  9. , p. 81.
  10. PDF
  11. Anton Shilov. (англ.) . Tom’s Hardware (11 августа 2022). Дата обращения: 12 августа 2022.
  12. Владимир Фетисов. . 3DNews (11 августа 2022). Дата обращения: 12 августа 2022. 11 августа 2022 года.
  13. (англ.) . AMD (8 сентября 2022). Дата обращения: 12 августа 2022. 12 августа 2022 года.

Литература

  • Jurij Silc, Borut Robic, Theo Ungerer. Processor Architecture - From Dataflow to Superscalar and Beyond. — Springer, 1999. — ISBN 3540647988 . (англ.) — Глава 6.4: Simultaneous Multithreading, стр.281-293
  • Mario Nemirovsky, Dean M. Tullsen. Multithreading Architecture. — Morgan and Claypool Publishers, 2013. — ISBN 1608458555 . (англ.)

Ссылки

  • Dean M. Tullsen, Susan J. Eggers, Henry M. Levy. (англ.) (PostScript). Материалы 22-го ежегодного симпозиума по компьютерной архитектуре . University of Washington (1995). Дата обращения: 20 ноября 2012. 23 января 2013 года.
  • (2005-02) Operating system support for simultaneous multithreaded processors — James R. Bulpin — UCAM-CL-TR-619 — диисертация на тему поддержки одновременной многопоточности в разных операционных системах (англ.)
Источник —

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