logo
Методичка

7.5 Специфика мультитредовых моделей распараллеливания

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

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

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

Следует отметить, что к мультитредовым микропроцессорам можно отнести транспьютеры с их аппаратно поддерживаемым исключительно малым, при соответствующей тактовой частоте, временем переключения контекста процессов и виртуализацией каналов (Т-9000).

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

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

Вопросы для самопроверки

  1. Какова основная идея технология Hyper-Threading?

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

  3. Какие принципы лежат в основе выявления тредов?

  4. Какие языки программирования выгодно использовать для мультитредовых микропроцессоров?

  5. Для чего используется граф управляющих зависимостей?

  6. Каковы преимущества мультитредовой архитектуры?

  7. Каким образом один физический процессор разделяется на несколько логических процессоров?

  8. Что такое спекулятивный доступ к разделяемой памяти?

  9. Что такое спекулятивное по управлению выполнение команды?

  10. Что такое спекулятивное по данным выполнение команды?

  11. Каков принцип жадной предвыборки команд?

  12. Что такое сегмент в мультитредовой модели выполнения программ?

  13. Потоки имеют общую разделяемую память или изолированную?

  14. Какое собственное аппаратное обеспечение имеет каждый поток?

  15. Какая взаимосвязь между технологией Hyper-Threading и технологией Multi-Threading?

  16. Какие существуют виды зависимостей между тредами?