Гиперпоточность процессоров Intel и C
Если я не буду использовать многопоточные парадигмы при разработке своего кода, будет ли гиперпоточность автоматически распределять нагрузку по логическим ядрам, или мне придется специально писать ее, чтобы использовать преимущества других ядер, как это было бы для физических ядер?
1 ответ
По предложению @us2012 я публикую это здесь из моего комментария...
Там нет такой магии. Суперскалярные процессоры, особенно процессоры OOO (Out Of Order), делают магию - но это внутри одного ядра.
Напротив, Hyperthreading можно рассматривать как (очень упрощенный) два конвейера перед одним полным ядром.
Процессоры AMD Bulldozer имеют схожий бит, но они пошли еще дальше: целочисленное ядро тоже разделено на два, но два конвейера + целочисленные ядра имеют одну единицу с плавающей запятой. Это целое называется "модулем", имеющим два потока.
TL; DR
Суперскаляр (из вики)
Суперскалярная архитектура ЦП реализует форму параллелизма, называемую параллелизмом на уровне команд внутри одного процессора. Следовательно, он обеспечивает более высокую пропускную способность процессора, чем это было бы возможно при данной тактовой частоте. Суперскалярный процессор выполняет более одной инструкции в течение тактового цикла, одновременно отправляя множество команд избыточным функциональным блокам на процессоре. Каждый функциональный блок представляет собой не отдельное ядро ЦП, а ресурс выполнения внутри одного ЦП, такой как арифметико-логический блок, сдвиг битов или множитель.
Вне исполнения заказа (из вики)
В компьютерной инженерии выполнение вне порядка (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' Series, среди других.
Бульдозер (не из не вики)
Bulldozer - это первая крупная модернизация процессорной архитектуры AMD с 2003 года, когда фирма выпустила свои процессоры K8, а также имеет два 128-битных FMA с поддержкой FMA, которые можно объединить в один 256-битный FPU. Этот дизайн сопровождается двумя целочисленными кластерами, каждый с 4 конвейерами (этап выборки / декодирования является общим). Bulldozer также представит общий кэш L2 в новой архитектуре. Маркетинговая служба AMD называет этот дизайн "Модулем". Процессор с 16 потоками будет иметь восемь таких "модулей" [7], но операционная система будет распознавать каждый "модуль" как два логических ядра.