Так как гиперпоточность позволяет использовать неиспользуемое время процессора другими процессами, почему это заставляет его выглядеть как 4 логических процессора (по 2 на одно ядро). Чем это отличается от исполнения не по порядку?
Это не совсем правильно. Гиперпоточность просто добавляет дополнительный исполнительный модуль для каждого ядра (в аппаратном обеспечении), но разделяет остальную часть ядра, поэтому в некоторых случаях гиперпоточность может фактически снизить производительность. Кроме того, гиперпоточность явно не "позволяет использовать неиспользуемое время ЦП другими процессами". Это обрабатывается планировщиком процессов вашей операционной системы.
Гиперпоточность, тем не менее, предоставляет еще одно "ядро" операционной системе, позволяя ей планировать одновременное выполнение большего количества программ. За исключением случаев, когда это привело бы к исчерпанию общего оборудования в Hyperthreaded ядре (например, если два потока выполняются на отдельных исполнительных блоках в Hyperthreaded ядре, которые интенсивно используют кэш, который совместно используется обоими потоками в ядре HT). Технические сведения о гиперпоточности см. В техническом описании процессора Intel Core, том 1.
Допустим, core0/core1 - это одно ядро, а core2/core3 - другое. Если core0 и core2 на 100%, мой процессор на 100% нагрузки или только на 50%? Кроме того, почему процессы имеют тенденцию выполняться на core0 и core2, а не на core1 и core3?
Это зависит от того, какие части вашего процессора подвержены нагрузке (прирост производительности от HT зависит от конкретного приложения, снова см. Выше). Технически вы можете использовать только 50% исполнительных блоков в Core 0, но остальная часть оборудования в ядре может быть загружена на 100% (например, если программа интенсивно использует кэш).
Подробнее см. Вопрос « Как сходство процессоров Windows работает с многопоточными процессорами?». ,