У меня двухъядерное ядро i5 с гиперпоточностью. Так как гиперпоточность позволяет использовать неиспользуемое время процессора другими процессами, почему это заставляет его выглядеть как 4 логических процессора (по 2 на одно ядро). Чем это отличается от исполнения не по порядку?

Допустим, core0/core1 - это одно ядро, а core2/core3 - другое. Если core0 и core2 на 100%, мой процессор на 100% нагрузки или только на 50%? Если все они на 100%, что это влечет за собой? Кроме того, почему процессы имеют тенденцию выполняться на core0 и core2, а не на core1 и core3?

2 ответа2

1

HT похож на выполнение вне очереди, за исключением того, что он может запланировать совершенно другой поток, а не просто переупорядочивать инструкции. Иногда процессор простаивает, потому что он уже переупорядочил все возможные инструкции и все еще ожидает данные или что-то еще. HT позволяет другому потоку быть готовым к запуску, пока первый ожидает.

В вашей системе все еще только два физических ядра. Если core0 и core2 на 100%, то ваш процессор на 100%. Если все логические ядра (core0, core1, core2 и core3) имеют 100%, то ваш ЦП фактически работает на 115% от общего объема без гиперпоточности.

Причина, по которой вы видите использование альтернативного ядра, заключается в том, что core0 и core1 используют одно и то же физическое ядро, а core2 и core3 используют одно и то же физическое ядро. Если бы ОС запланировала core0 и core1 вместо core0 и core2, то половина процессора будет простаивать большую часть времени.

1

Так как гиперпоточность позволяет использовать неиспользуемое время процессора другими процессами, почему это заставляет его выглядеть как 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 работает с многопоточными процессорами?». ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .