Процессоры Intel с гиперпоточностью и C

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


person Woodstock    schedule 09.09.2013    source источник
comment
Нет такой магии. Суперскалярные процессоры, особенно процессоры ООО, творят чудеса, но это внутри одного ядра. Гиперпоточность можно рассматривать как (очень упрощенно) два конвейера перед одним полным ядром... Кроме того, я не совсем уверен, что этот вопрос в этой форме относится к этому сайту в сети обмена стеками.   -  person ppeterka    schedule 09.09.2013
comment
@ppeterka66 ppeterka66 Я думаю, что это нормальный вопрос для Stackoverflow, и ваш комментарий будет хорошим ответом на этот вопрос.   -  person us2012    schedule 09.09.2013
comment
@ us2012 Хорошо, я опубликовал это и добавил немного блеска, так как это было немного простовато..   -  person ppeterka    schedule 09.09.2013


Ответы (1)


По предложению @us2012 я размещаю это здесь из своего комментария...

Нет такой магии. Суперскалярные процессоры, особенно Процессоры OOO (выполнение вне порядка) творят чудеса, но это внутри одного ядра.

Напротив, Hyperthreading можно рассматривать как (очень упрощенно) два конвейера впереди одного полного ядра.

процессоры AMD Bulldozer имеют похожий элемент, но они пошли дальше: Целочисленное ядро ​​также разделено на два, но два конвейера + целочисленное ядро ​​совместно используют один модуль с плавающей запятой. Это целое называется модулем, имеющим две нити.

TL;DR

Суперскаляр (из Вики)

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

Выполнение вне очереди (из Wiki)

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

Hyperthreading (от... сами знаете откуда...)

Hyper-threading (официально Hyper-Threading Technology или HT Technology, сокращенно HTT или HT) — это запатентованная Intel реализация одновременной многопоточности (SMT), используемая для улучшения распараллеливания вычислений (одновременное выполнение нескольких задач), выполняемых на микропроцессорах ПК. Впервые он появился в феврале 2002 г. на серверных процессорах Xeon и в ноябре 2002 г. на процессорах Pentium 4 для настольных ПК.1 Позже Intel включила эту технологию в процессоры Itanium, Atom и Core серии «i», среди прочих.

Бульдозер (не из не вики)

Bulldozer — это первая крупная модернизация процессорной архитектуры AMD с 2003 года, когда компания выпустила процессоры K8, а также два 128-битных FPU с поддержкой FMA, которые можно объединить в один 256-битный FPU. Этот дизайн сопровождается двумя целочисленными кластерами, каждый из которых имеет 4 конвейера (стадия выборки/декодирования является общей). Bulldozer также представит в новой архитектуре общий кэш L2. Маркетинговая служба AMD называет этот дизайн модулем. В конструкции процессора с 16 потоками будет восемь таких модулей,[7] но операционная система распознает каждый модуль как два логических ядра.

person ppeterka    schedule 09.09.2013
comment
Спасибо за ценный вклад. - person Woodstock; 09.09.2013