AFAIK В процах с HT все исполнительные устройства присутсвуют в единственном экземпляре (т.е. ядро на самом деле одно). Цитата от Интела: "This is achieved by duplicating the architectural state on each processor, while sharing one set of processor execution resources" HT позволяет исполнять два потока команд. Это имеет смысл, т.к. часто исполняющийся код использует далеко не все ресурсы процессора, и, например, поток, использующий только АЛУ, почти не будет "мешать" потоку, использующему MMX/SSE.
flankerx Наверное, все-таки все гораздо сложнее, т.к. даже в 486-м уже было 2 АЛУ, правда вроде под разные операции. Просто я запускал распараллеленную задачу на П-4 с НТ. Загрузка процессора увеличивалась с 50% до 100% и задачка в 2 раза быстрее считалась. Однако явно в ней в параллель крутился один и тот же алгоритм и трудно предположить, что все время везло и плавающая и целая арифтметики чередовались По-моему тут срабатывает то, что на одной задачке тяжелее сделать - на П-4 операция занимает пол-такта и НТ позволяет свободные пол-такта использовать в другой задаче.
да flankerxпочти правильно написал. Только не "все исполнительные устройства присутсвуют в единственном экземпляре" а БЛОК исполнительных устройств один. Но в то-же время есть ДВА независимых потока команд (с ДВУХ независимых декодеров). Также имеется ДВА набора (файла) регистров (т.н. архитектурные состояния). И потоки команд с обоих декодеров конкурируют за использование ОДНОГО блока исполнительных устройств (который включает в себя 4 целочисленных АЛУ, два плавающих и т.п. - подробности - в доках интела). С точки зрения прикладных программ процессоров два, но если обоим потокам (выполняющимся на разных виртуальных процах) понадобится только целочисленные блоки то реально быстродействие не повысится. В пике прирост составляет 35% (это например кодирование видео + антивирусное сканирование). Опять-же подробности у первоисточника (intel.com)
to valterg -> командам не обязательно чередоваться, процессор складывает все на резервирующей станции и переуорядочивает команды так как ему нужно, главно чтоб зависимости по данным позволяли.
Ну вот в моем случае именно в этом дело. Любая счетная задача на деле более 50% времени тратит на перекладывание данных из одного места в другое и не может быть нормально "распараллелена". Похоже персоналка постепенно превращается в старый добрый mainframe