Так много процессоров теперь имеют 2/4 ядра и 4/8 потоков.
Есть также несколько процессоров, которые являются 4-х ядерными и 4 темы.
Означает ли это, что беспрецедентный процесс будет работать медленнее на одном и том же тактовом процессоре с процессором 8/4, чем на процессоре 4/4, поскольку он использует только половину ядра?
Существует ли программный способ (скажем, уровень ОС) для установки ЦП только на 1 поток на ядро?
Ответы:
Вроде да и нет.
Если я запускаю 8 независящих однопоточных программ на 8-ядерном (8-ступенчатом) процессоре, то каждое ядро будет работать по одному шагу, и они будут работать на максимальной скорости (например, назначать все время, игнорируя такие вещи, как ОС, которая также требует некоторого времени процессора).
Если я запускаю 8 независимых однопоточных программ на 4-ядерном (4-шаговом) процессоре, то в среднем каждое ядро будет запускать две из них. Программа будет работать в два раза быстрее.
Пока что никаких сюрпризов.
Теперь с 4-ядерным процессором (8 протекторов) ОС считает, что имеется 8 ядер. Это будет топтать их как первый случай. Однако это не совсем так; половина ядер не построена как обычные ядра. Обычно дублируется только часть функциональности, и если вам не повезет, один из протекторов остановится. Это не будет быстрее, чем процессор 4c / 4t.
Однако, если вам очень повезло (например, ALU удваиваются, и вы чередуетесь между лечением, извлечением информации из памяти и добавлением), тогда оба могут работать на полной скорости.
В среднем Это приводит к увеличению скорости на 30%.
Чтобы сделать это еще более сложным: если ваши программы используют большие наборы данных, то запуск более 4 из них может привести к меньшему количеству обращений в кэш. Последнее действительно может замедлить ход событий.
Да, очередь гиперпоточности.
Вы можете сделать это в прошивке (например, в BIOS или в UEFI) или из ОС.
Например. для 8-процессорного 4-ядерного процессора с ядрами 0 1 2 3, являющимися первыми ядрами, и 4 5 6 7, представляющими собой набор с тредами, который вы можете использовать:
IIRC FreeBSD сделал то же самое с помощью syscontrol. Для OSX или Windows вам нужно будет погуглить.
источник
Потоки управляются программным обеспечением (например, Java VM), а ядра являются аппаратными. Внутри процессора может быть несколько ядер с разными схемами соединения. Каждое ядро может обрабатывать поток, но это зависит от того, как ОС управляет каждым потоком.
Я рекомендую серию «Голос эксперта в микропроцессорах» от Apress для новейшего и лучшего по процессору аппаратного обеспечения.
Я рекомендую отличную книгу Пола Бучера о параллелизме потоков, потому что он также охватывает графические процессоры (Семь моделей параллелизма за семь недель).
источник