Компьютерное железо

Количество потоков и ядер у процессора.

Слышал насчёт процессора 2 следующих понятия:
1. Кол-во ядер
2. Кол-во потоков.

Объясните мне: это одно и то же или 2 совершенно разных понятия. Если разные, то разница какая?
У Intel есть технология HT (Hyper Threading), которая позволяет одному ядру выполнять два потока вычислений.
Так что все довольно просто - у процессоров без поддержки HT потоков столько же, сколько и ядер, у процессоров с HT потоков в 2 раза больше, чем ядер. Из современных десктопных процессоров HT поддерживают Core i3 (2 ядра, 4 потока) и Core i7 (4 ядра, 8 потоков), также некоторые серверные Ксеоны, ну и какие-то ноутбучные процессоры, не скажу точно какие.
У AMD аналогичной технологии нет, так что у них всегда сколько ядер, столько и потоков.

Windows считает ядра именно по количеству потоков, так что она видит 4-ядерный i7 как 8-ядерный.
Михаил Цупик
Михаил Цупик
69 719
Лучший ответ
Для потребителя важнее всего на выделенную сумму на процессор-купить процессор с максимальной производительностью, (даже можно не вникать в тонкости: архитектура, тех. процесс, кол-во ядер или потоков, частота, кеш 1,2 уровня, 3 уровня) иначе соотношение производительность/цена.
Вот смотрите: http://www.nix.ru/hardware-review/cpu-benchmark-performance.html?out_of_stock=1
А в игровом ПК правильно будет выделить на видеокарту больше денег, чем на процессор, даже возможно и в 1,5--2 раза больше.
VK
Vadim Ko
78 180
сказку о потоках придумали эффективные менеджеры интела, это наебаловка
разные.
Ядро это ядро.
Потоки это возможность одного ядра, работать сразу в несколько потоков (разделять их)
Тем самым если у вас 2 ядерный проц но с 4 потоками (по 2 на каждое ядро), то операционная система увидт ваш проц как 4 ядерный.
например у меня 4 ядра... core i 7 но он считается как 8-ми ядерка, так как поточность вместе с ядрами образуют 8 ядер, поток это как бы грубо говоря, виртуальное ядро... у меня идёт так, 4 ядер\8 потоков.... но везде считается как 8 ядерный....
Если 2 ядра 4 потока, считается что процессор типо 4 ядерный, т. е. Этот 2-х ядерный работает ПОЧТИ как 4 ядерный, короче это значит сколько сложных задач он может выполнять одновременно,
Любой даже 1 ядерный 1 поточный процессор может работать в несколько потоков.
И это было с появления первых многозадачных ОС типа Windows.

Многопоточность реализуется операционной системой. (В любой момент, если запущено несколько программ на компьютере ОС может работать с десятками и сотнями потоков - это намного больше чем число потоков в процессоре)

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

Для переключения потока требуется запомнить какую операцию выполнял процессор в одном потоке, затем "вспомнить", что процессор должен сделать в другом потоке. На это уходит время и ресурс.

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

Многоядерность - это как наличие нескольких мозгов/людей. Каждое ядро может независимо выполнять свою задачу.

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

А потоки лишь позволяют более эффективно использовать имеющиеся вычислительные ядра.

Почему каджое доп. ядро "теоретически" пропорционально повышает производительность компьютера: потому что кроме ядер в компьютере есть память, шины передачи данных от памяти в процессор, кэш процессора (встроенная в процессор память).

Чтобы всё это работало со 100% - эффективностью одновременно выполняя много задач, надо сделать очень сложную систему и оптимизировать ПО. Этого в реальности нет, поэтому будет некоторый предел, который не позволит удваивая количество ядер также удваивать и производительность. Т. к. не будет хватать памяти для загрузки всех ядер данными и программным кодом, пойдёт обращение к жескому диску, чтобы скомпенсировать недостаток памяти, это вызовет задержки в вычеслениях и простои процессора, т. е. эффективность не будет такой высокой как ожидалось бы с увеличением ядер и потоков.

Ну и ещё многое зависит от архитектуры ядра процессора и его оптимизации под конкретные вычислительные задачи.

У разных производителей процессоров разная архитектура, поэтому производительность процессоров от разных производителей при одинаковом количестве ядер может заметно отличаться.

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

Бывает, что процессор 2 потока 2 ядра по производительности примерно как процессор 4 потока 2 ядра. Т. к. у них одинаковое количество физических процессоров (ядер). А разница производительности может скрываться не в разном количестве потоков, а в разном объёме кэш памяти.
https://infotechnica.ru/pro-kompyuteryi/o-protsessorah/pro-potoki/ - в дополнение к ответам хорошее объяснение в этой статье
При программировании каких-либо объемных задач (допустим - большой цикл, итерация которого занимает 1 секунду, на ядре с 4ггц) можно задавать программе работу в несколько потоков. Т. е. вместо последовательной работы будут выполняться сразу два действия при 2х поточном процессоре за ту же секунды. соответственно при 16ти поточном - 16 итераций в секунду. Но вот если программа не была создана для многопоточности, то смысла не от потоков, не от ядер никакого не будет, хоть ты их 1000 туда поставь.
EB
Erken Boom-Boom
267
Василий Иванович, сказка не сказка, а на двухъядерном Интеле Watch_Dogs 2 пашет, а на двухядерном АМиДэ -- нет.
Вот и проверяй свои предположения, прежде чем озвучивать их.