ЦП в данном контексте - это один физический чип, который может быть установлен отдельно от других ЦП на компьютере (если есть место для нескольких ЦП).
«Ядро» - это обработка элемент ЦП, который отличается от других ядер. Если ЦП предоставляет более одного ядра, ожидается, что ядра не только будут работать независимо друг от друга, но и не будут бороться за большинство ресурсов одного ЦП, чтобы выполнить свое выполнение. То есть несколько ядер, предоставляемых одним и тем же ЦП, не используют большую часть аппаратного обеспечения ЦП.
«поток» в этом контексте (примечание: термин «поток», используемый в большинстве контекстов программирования, связан, но отличается ) - это путь выполнения кода со своим собственным набором регистров. Ядро предоставляет один или несколько потоков. Однако, если ядро ЦП предоставляет несколько потоков (обычно только 2), ожидается, что потоки будут конкурировать друг с другом за ресурсы выполнения.
Идея с многопоточными ядрами ( обычно называемой гиперпоточностью) заключается в том, что ядра имеют много ресурсов выполнения. И один поток инструкций не всегда может заполнить все эти ресурсы. Таким образом, если ядро выполняет инструкции из двух потоков, оно может более эффективно использовать свои вычислительные ресурсы.
А иногда операции просто завершают поток. Выборки из памяти часто могут остановить поток на своем пути, чтобы дождаться данных из ОЗУ. В это время второй поток в ядре будет получать ядро до тех пор, пока не будут получены данные.