Мне неясно из документации Intel, если процессоры Hyperthreading совместно используют файл регистров между потоками или имеют два разных (я бы предположил, что они на самом деле различны, так как в противном случае время переключения контекста между потоками HT было бы достаточно большим, это чисто предположение).
Что касается ускорения - оно будет зависеть от вашего набора команд и расписания. Помните, что ЦП HT не имеет каких-либо дополнительных ресурсов выполнения (ALU, модулей загрузки / хранения и т. Д.), Повышение производительности происходит за счет лучшего использования этих ресурсов, поскольку типичный код, особенно на современном процессоре, тратит разумную сумму времени заблокировано в ожидании загрузки памяти и сохранения до завершения выполнения. HT позволяет чередовать эти загрузки и хранилища, так что один поток останавливается при чтении, другой может быть включен и начать использовать ресурсы выполнения, которые ранее находились в режиме ожидания.
Я думаю, какое увеличение производительности вы увидите при многопоточности программы SSE, зависит от соотношения операций памяти и операций арифметики. Например, если ваша программа SSE загружает 4 регистра SSE из памяти, выполняет над ними 10000 операций SSE, а затем записывает 4 регистра, вы вряд ли увидите большое преимущество от возможности HT перекрывать доступ к памяти, поскольку 99% времени выполнения ваших программ будет потрачено на SIMD ALU, а не на доступ к памяти.
С другой стороны, если ваша программа очень требовательна к вычислительным ресурсам, то многопоточность вашей программы может значительно повысить производительность на многоядерных процессорах и может дать вам гораздо лучшее улучшение, чем 30%, так как в этом случае ваш код может получить полный доступ ресурсы исполнения нескольких ядер одновременно.