Jump to content

Микрорезьба (многоядерный)

Микропотоки для многоядерных и многоядерных процессоров — это механизм сокрытия задержки памяти, аналогичный многопоточным архитектурам. Однако это делается в программном обеспечении для многоядерных процессоров, таком как Cell Broadband Engine, для динамического скрытия задержек, возникающих из-за задержек памяти или операций ввода-вывода.

Введение

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

Микропоточность — это программная среда обработки потоков, которая создает небольшие потоки внутри многоядерных или многоядерных процессоров. Каждое ядро ​​может иметь два или более крошечных потока, которые используют время простоя. Это похоже на гиперпоточность, изобретенную Intel, или на общую многопоточность в современных микропроцессорах. Это позволяет существовать более чем одному потоку, работающему на одном ядре, без выполнения дорогостоящего переключения контекста в основную память системы, даже если это ядро ​​не имеет аппаратной многопоточной логики . Микропотоки в основном скрывают задержку памяти внутри каждого ядра за счет перекрытия вычислений с запросами памяти. Основное различие между микропотоками и современными моделями потоков заключается в том, что затраты на переключение контекста микропотоков очень малы. Например, реализация служебных микропотоков в Cell Broadband Engine составляет 160 наносекунд; в то же время затраты на переключение контекста всего потока ядра (SPE) составляют около 2000 микросекунд. Столь низкие накладные расходы обусловлены тремя основными факторами. Во-первых, микронити очень маленькие. Каждый микропоток выполняет одну или две простые, но важные функции. Во-вторых, контекст микропотоков включает только файл регистров ядра, на котором в данный момент выполняется микропоток. В-третьих, микропотоки переключают контекст на выделенный кэш ядра, что делает этот процесс очень быстрым и эффективным.

Поскольку микропроцессоры становятся быстрее, главным образом из-за добавления ядер каждые несколько месяцев, разрыв в задержке памяти становится все больше. В 1980 году латентность памяти составляла несколько циклов, а в настоящее время достигает почти 1000 циклов. Если у микропроцессора достаточно ядер и, надеюсь, они не отправляют запросы к основной памяти одновременно, произойдет частичное совокупное сокрытие задержки памяти. Некоторые ядра могут работать, в то время как другие ждут ответа памяти. Это не лучшая ситуация для многоядерных процессоров. Эксперты в области высокопроизводительных вычислений стараются, чтобы все ядра были постоянно заняты. Таким образом, если каждое ядро ​​постоянно занято, возможно полное использование всего микропроцессора. Создание программных потоков не решит проблему по одной очевидной причине. Потоки переключения контекста в основную память представляют собой гораздо более затратную операцию по сравнению с задержкой памяти. Например, в Cell Broadband Engine переключение контекста любого потока ядра в лучшем случае занимает 2000 микросекунд. Некоторые программные методы, такие как двойная или мультибуферизация, могут решить проблему задержки памяти. Однако их можно использовать в обычных алгоритмах, где программа знает, где находится следующий фрагмент данных, который нужно извлечь из памяти; в этом случае он отправляет запрос в память во время обработки данных предыдущего запроса. Однако этот метод не будет работать, если программа не знает, какой следующий фрагмент данных нужно извлечь из памяти. Другими словами, он не будет работать в комбинаторных алгоритмах, таких как охват дерева или ранжирование случайных списков. Кроме того, мультибуферизация предполагает, что задержка памяти постоянна и может быть скрыта статически. Однако реальность показывает, что задержка памяти меняется от приложения к другому. Это зависит от общей нагрузки на общие ресурсы микропроцессора, например, от скорости запросов памяти к соединениям общих ядер.

Текущая реализация

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

В настоящее время микропоточность реализована в Cell Broadband Engine . [1] Можно добиться повышения производительности в три-пять раз. В настоящее время это доказано для регулярных и комбинаторных алгоритмов. Некоторые другие усилия пытаются доказать его жизнеспособность для научных алгоритмов.

Производительность

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

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

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

  • Это требует специальной аппаратной поддержки. Каждое ядро ​​должно иметь собственное локальное средство прерываний для эффективного планирования микропотоков. Однако если соблюдается политика невытесняющего планирования, встроенное средство прерывания не требуется.
  • Лучше всего работает, когда каждое ядро ​​имеет собственный локальный кэш, которым программист управляет вручную.
  • Добавление большего количества микропотоков на ядро ​​резко увеличивает нагрузку на общие ресурсы микропроцессора. Увеличение объема памяти и запросов на синхронизацию, скорее всего, приведет к перегрузке общих ресурсов. Однако эту проблему можно смягчить за счет мониторинга системой времени выполнения критически важных показателей микропроцессора, таких как задержка памяти, и, соответственно, замедлить общее выполнение, либо уменьшив количество микропотоков, либо изменив политику планирования.
  1. ^ Ахмед, М.; Р. Аммар; С. Раджасекаран (2008), «SPENK: добавление еще одного уровня параллелизма в механизме сотовой широкополосной связи» (pdf) , 1-й международный форум по многоядерным/многоядерным технологиям следующего поколения , Каир, Египет: ACM, стр. 1–10 , извлечено 04.03.2009
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3ea94d174e05a7e2ae217ae55531610c__1620654720
URL1:https://arc.ask3.ru/arc/aa/3e/0c/3ea94d174e05a7e2ae217ae55531610c.html
Заголовок, (Title) документа по адресу, URL1:
Micro-thread (multi-core) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)