Является ли HyperThreading / SMT ошибочной концепцией?
Основная идея HT / SMT состояла в том, что, когда один поток останавливается, другой поток на том же ядре может использовать остальную часть времени простоя этого ядра и работать с ним прозрачно.
В 2013 году Intel отказалась от SMT в пользу неупорядоченного исполнения для своих процессорных ядер Silvermont, поскольку они обнаружили, что это дало лучшую производительность.
ARM больше не поддерживает SMT (по энергетическим причинам). AMD никогда не поддерживал это. В дикой природе у нас все еще есть различные процессоры, которые поддерживают его.
С моей точки зрения, если данные и алгоритмы создаются для того, чтобы избежать ошибок кэша и последующей остановки обработки любой ценой, конечно, HT является избыточным фактором в многоядерных системах? Хотя я понимаю, что переключение контекста сопряжено с небольшими накладными расходами, поскольку дискретное аппаратное обеспечение двух HyperThreads существует в одном физическом ядре, но я не вижу, что это лучше, чем переключение контекста вообще.
Я предлагаю что нибудьнеобходимость для HyperThreading указывает на ошибочный дизайн программного обеспечения. Есть ли что-то, что я здесь скучаю?