Jump to content

Многопоточность (компьютерная архитектура)

(Перенаправлено из темы «Оборудование» )
Процесс с двумя потоками выполнения, выполняемый на одном процессоре. Поток №1 выполняется первым, в конечном итоге запускает поток №2 и ждет ответа. Когда поток №2 завершается, он сигнализирует потоку №1 о возобновлении выполнения до завершения, а затем завершается.
Процесс с двумя потоками выполнения, выполняемый на одном процессоре

В компьютерной архитектуре многопоточность это способность центрального процессора (ЦП) (или одного ядра в многоядерном процессоре ) обеспечивать несколько потоков выполнения .

многопоточности Парадигма стала более популярной, поскольку попытки дальнейшего использования параллелизма на уровне инструкций застопорились с конца 1990-х годов. Это позволило концепции вычислений с пропускной способностью вновь выйти из более специализированной области обработки транзакций . Несмотря на то, что очень сложно дополнительно ускорить один поток или одну программу, большинство компьютерных систем фактически выполняют многозадачность среди нескольких потоков или программ. Таким образом, методы, повышающие производительность всех задач, приводят к общему повышению производительности.

Двумя основными методами повышения пропускной способности являются многопоточность и многопроцессорность .

Преимущества

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

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

Недостатки

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

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

Общая эффективность варьируется; Intel заявляет об улучшении производительности до 30% благодаря технологии Hyper-Threading . [1] в то время как синтетическая программа, просто выполняющая цикл неоптимизированных зависимых операций с плавающей запятой, фактически получает 100% прирост скорости при параллельном запуске. С другой стороны, настроенные вручную на языке ассемблера программы , использующие расширения MMX или AltiVec и выполняющие предварительную выборку данных (как это может делать хороший видеокодер), не страдают от промахов в кэше или простоя вычислительных ресурсов. Таким образом, такие программы не получают преимуществ от аппаратной многопоточности и действительно могут наблюдать снижение производительности из-за конкуренции за общие ресурсы.

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

Типы многопоточности

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

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

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

Грубая многопоточность

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

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

Например:

  1. Цикл i : инструкция j из потока A. выдается
  2. Цикл i + 1 инструкция j + 1 из потока A. : выдается
  3. Цикл i +2 : инструкция j +2 из потока A , которая представляет собой инструкцию загрузки, которая отсутствует во всех кэшах. выдается
  4. Цикл i + 3 : вызывается планировщик потоков, переключается на B. поток
  5. Цикл i + 4 : инструкция k из потока B. выдается
  6. Цикл i + 5 инструкция k + 1 из потока B. : выдается

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

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

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

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

Мелкозернистая многопоточность

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

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

Например:

  1. Цикл i + 1 инструкция из потока B. : выдается
  2. Цикл i + 2 инструкция из потока C. : выдается

Этот тип многопоточности сначала назывался бочковой обработкой, в которой элементы бочки представляют этапы конвейера и их исполняющие потоки. Чередованная, вытесняющая, мелкозернистая или временная многопоточность — это более современная терминология.

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

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

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

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

Например:

  1. Цикл i : инструкции j и j +1 из потока A и инструкция k из потока B. одновременно выдаются
  2. Цикл i + 1 : инструкция j + 2 из потока A , инструкция k + 1 из потока B и инструкция m из потока C выполняются одновременно.
  3. Цикл i + 2 : инструкция j + 3 из потока A и инструкции m + 1 и m + 2 из потока C выполняются одновременно.

Чтобы отличить другие типы многопоточности от SMT, термин « временная многопоточность » используется для обозначения случаев, когда одновременно могут быть выданы инструкции только из одного потока.

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

Внедрения включают DEC (позже Compaq ) EV8 (не завершено), Intel Hyper-Threading Technology , IBM POWER5 / POWER6 / POWER7 / POWER8 / POWER9 , IBM z13 / z14 / z15 , Sun Microsystems UltraSPARC T2 , Cray XMT и AMD Bulldozer и Zen. микроархитектуры.

Особенности реализации

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

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

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

Если схема многопоточности реплицирует все видимое для программного обеспечения состояние, включая регистры привилегированного управления и TLB, то она позволяет виртуальные машины создавать для каждого потока. Это позволяет каждому потоку запускать свою собственную операционную систему на одном процессоре. С другой стороны, если сохраняется только состояние пользовательского режима, то требуется меньше оборудования, что позволит одновременно активировать больше потоков при той же площади кристалла или затратах.

См. также

[ редактировать ]
  1. ^ «Технология Intel Hyper-Threading, Техническое руководство пользователя» (PDF) . п. 13. Архивировано из оригинала (PDF) 21 августа 2010 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d38a022665b1c6333f4620d18747e596__1718749020
URL1:https://arc.ask3.ru/arc/aa/d3/96/d38a022665b1c6333f4620d18747e596.html
Заголовок, (Title) документа по адресу, URL1:
Multithreading (computer architecture) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)