Аппаратная многопоточность и одновременная многопоточность (SMT) - PullRequest
0 голосов
/ 07 декабря 2018

Я читаю Многопоточность (компьютерная архитектура) - Wiki , он же аппаратный поток, и я пытаюсь понять второй абзац:

(p2): ГдеМногопроцессорные системы включают в себя несколько завершенных процессорных блоков в одном или нескольких ядрах. Многопоточность направлена ​​на увеличение использования одного ядра с использованием параллелизма на уровне потоков , а также параллелизма на уровне команд.

в то время как ссылка на параллелизм на уровне потока говорит:

( ссылка ): параллелизм на уровне потока(TLP) - это параллелизм, свойственный приложению, которое запускает несколько потоков одновременно.Этот тип параллелизма встречается в основном в приложениях, написанных для коммерческих серверов, таких как ...

, что не очень полезно ... Поэтому я прочитал параллелизм задач выше, так как ядумаю, TLP является его подтипом:

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

Вопрос: Если параллелизм на уровне потоков - это параллелизм задач, а параллелизм задач - для распараллеливанияна нескольких процессорах, как увеличить использование одного ядра с помощью параллелизма на уровне потоков работа?

Угадайте: я думаю, для TLP это должно означать для нескольких логические процессоры, т. Е. Аппаратные потоки с точки зрения ОС, верно?


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

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

И в (p2) он направлен на увеличение использования одного ядра с помощью thread-level параллелизм ?Какое противоречие.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

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

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

Параллелизм на уровне потоков - это другая таксономия, это любая форма параллелизма, которая может быть извлечена для использования многопоточной системой.Требуется, чтобы декомпозиция была достаточно крупнозернистой, чтобы позволить различным потокам работать независимо (в противном случае требуемые издержки синхронизации сделали бы ее бесполезной).Альтернативой для этого является, например, ILP (параллелизм на уровне команд), когда однопотоковый контекст может извлекать параллелизм в коде, работая на машине с глубоким нарушением порядка, которая может планировать на основе готовности.Это допускает более мелкозернистый параллелизм и меньшее участие программиста, но ограничивает параллелизм до глубины окна OOO.

По смежной теме - будьте осторожны, чтобы не перепутать одновременное и параллельное выполнение.

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

0 голосов
/ 07 декабря 2018

Я думаю, что моя интуиция должна быть правильной, это либо:

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

    должно быть обновлено до:

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

    для включения возможности гиперпоточности.

  2. Без обновления, но задачапараллелизм ориентирован на межпроцессорный параллелизм, тогда как для TLP это должно означать

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

    снова, чтобы включить возможность гиперпоточности.


Полезный ресурс:

  • https://en.wikipedia.org/wiki/Hyper-threading
  • https://www.youtube.com/watch?v=wnS50lJicXc
  • https://en.wikipedia.org/wiki/Simultaneous_multithreading

    особенно эта строка :

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

    Итак, для незначительной проблемы,см. Параллельные вычисления - # Введение - p1 :

    Концепция параллельных вычислений часто путают со связанной, но отличной концепцией параллельных вычислений [2] [3], хотя обаможно описать как «несколько процессов, выполняющихся за один и тот же период времени».В параллельных вычислениях выполнение происходит в один и тот же физический момент: например, на отдельных процессорах многопроцессорной машины с целью ускорения вычислений - параллельные вычисления невозможны на (одноядерном) одном процессоре, так как только одинВычисление может происходить в любой момент (в течение любого одиночного тактового цикла).

...