Это вопрос терминологии. Аппаратные и программные люди по-разному используют одни и те же слова. Я понимаю ваш вопрос следующим образом:
Я знаю, что между аппаратными потоками есть некоторые общие ресурсы, такие как кэш-память L2 и т. Д., Поэтому два аппаратных потока на одном и том же ядре могут выполнять инструкции из разных процессов. параллельно?
Затем я перевожу термины оборудования на язык программного обеспечения:
Я знаю, что между процессорами существуют некоторые общие ресурсы, такие как кэш-память L2 и т. Д., Поэтому два процессора на одном и том же ядре могут выполнять инструкции из разных программных потоков параллельно?
и сразу отвечу: да, конечно.
UPDT
«Могут ли два программных потока (из одного процесса) работать на двух разных процессорах параллельно?»
да, конечно. Более того, если каждый ЦП состоит из множества ядер, каждое ядро может обслуживать отдельный программный поток и поэтому неотличимо от процессора. Например, мой микрочип Intel i7 имеет 4 ядра / 8 потоков, а стандартная функция Java Runtime :: availableProcessors () возвращает 8, то есть 8 отдельных программных потоков могут выполняться параллельно. Если бы на моей машине было 2 таких микрочипа, было бы возвращено 16 и 16 отдельных потоков, которые могли бы работать параллельно.