Даже с гораздо большим количеством ядер, чем с задачами, они не будут идеально масштабироваться. Это потому, что некоторые государства почти всегда разделяются. Не обязательно в задаче, но ядро, например. Или они могут получить доступ к одному и тому же ресурсу, например, к сети, к диску или к чему-либо еще.
SMT (т. Е. Hyper-Threading) может опираться на тот факт, что разные задачи используют разные исполнительные модули ЦП. Таким образом, так называемый «параллелизм на уровне команд» может быть достигнут на суперскалярных процессорах . Практически любой современный процессор x86 является суперскалярным.
Предполагая, что у вас есть две задачи, которые состоят только из добавления чисел без других инструкций ЦП, тогда да, они будут конфликтовать при работе на том же физическом ядре, что может привести к значительному снижению производительности.
Тем не менее, в большинстве случаев это не так, и происходят разные вещи. До тех пор, пока одна и та же команда не появляется в обоих потоках команд (примерно) одновременно, использование исполнительных блоков ЦП может быть улучшено.