9

Допустим, у нас есть два процессора: один - четырехъядерный 3,2 ГГц с 4 ядрами, а у нас - двухъядерный 3,2 ГГц с 2 ядрами с 2 потоками в каждом ядре (Hyper-Threading). Мое предположение как программиста будет таким: 4 ядра 4 потока должны работать быстрее, чем 2 ядра 4 потока, так как второму ЦП необходимо переключаться между потоками, чтобы эмулировать 4 ядра, тогда как первому не нужно выполнять такое переключение, как каждое ядро можно выполнять самостоятельно и индивидуально.

Я хочу подтвердить, что мое предположение верно, если нет, пожалуйста, объясните, почему одно лучше, чем другое.

3 ответа3

9

Я верю, что это правда - поскольку гиперпоточность разделяет некоторые элементы - в частности, основные ресурсы выполнения, вы сможете запускать 4 полных потока одновременно, вместо того, чтобы ожидать освобождения этих ресурсов.

Смысл HT в том, чтобы получить лучшую производительность с меньшим использованием площади кристалла - ваш четырехъядерный процессор обычно будет большим чипом - скажем, почти в два раза больше, чем двухъядерный чип без HT, тогда как двухъядерный чип HT будет примерно На 5% больше. При правильной рабочей нагрузке четырехъядерное ядро может видеть скорость, в два раза превышающую скорость (хотя это маловероятно, поскольку в большинстве случаев вы, вероятно, не будете использовать 4 потока на полную мощность), в то время как двухъядерный процессор HT будет на 15-30% лучше. производительность (согласно википедии), чем двухъядерный процессор без HT.

Чем больше актуальных ядер, тем лучше.

1

При гиперпоточности - время простоя ядра для задачи A(упомянутое ядро могло бы отправить запрос на диск для данных, подождать, пока диск выполнит поиск области пластин, прочитать данные и отправить их обратно в ядро ) используется для выполнения другой задачи. Таким образом, когда задача B обслуживается так называемым потоком 2, и если запрос на выборку данных, заданный задачей A, завершен, задача A все еще должна ждать, пока ядро завершит работу потока 2. Оба потока не могут выполняться одновременно в одном ядре. Опять же, HT использует несоответствие скорости между ядром / процессором и различными подсистемами на вашем компьютере. HT использует ваши ядра на полную мощность ... это похоже на полную загрузку. Таким образом, если вы откроете четыре вкладки в своем браузере, каждая вкладка будет иметь ядро в четырехъядерной системе, а две вкладки должны будут совместно использовать ядро в двухъядерной системе.

1

Из Википедии:

Гиперпоточность работает путем дублирования определенных разделов процессора - тех, которые хранят архитектурное состояние - но не дублирует основные ресурсы выполнения. Это позволяет гиперпоточному процессору отображаться как обычный "физический" процессор и дополнительный "логический" процессор для операционной системы хоста (HTT-незнающие операционные системы видят два "физических" процессора), позволяя операционной системе планировать два потока или обрабатывает одновременно и соответственно. Когда ресурсы выполнения не будут использоваться текущей задачей в процессоре без гиперпоточности, и особенно когда процессор остановлен, процессор, оборудованный гиперпоточностью, может использовать эти ресурсы выполнения для выполнения другой запланированной задачи. (Процессор может зависнуть из-за отсутствия кэша, неправильного предсказания ветвлений или зависимости данных.)

Если у вас есть четырехъядерная система, то каждый из четырех потоков может работать на одном ядре. Если у вас есть двухъядерная система гиперпоточности, то 2 потока могут работать каждый на полном ядре, но с 4 потоками потоки 1 и 2 будут разделять одно ядро, а потоки 3 и 4 - другое ядро. Гиперпоточность позволяет двум потокам работать параллельно (только), если они не используют одни и те же ресурсы процессора. Таким образом, в идеальном случае вы можете получить высокую степень распараллеливания, но, как утверждает Википедия, прирост производительности составляет не 100%, а только 15-30%.

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