Scoffer: ↑
03.10.2021 16:03Для інтелових архітектур там два комплекти кешів L1, два комплекти конвеєрів і два комплекти регістрів. Суть SMT в тому, що у тебе є більше одного внутрішнього потоку виконання команд
Ну конечно же нет там никаких двух комплектов L1 и так далее, кэш L1 там один, возможно имелось в виду кэш данных и инструкций, но и их тоже по одному экземпляру, просто когда запущено два потока их ресурсы делятся между этими потоками. Регистровый файл тоже один и он на самом деле уже давно имеет более сотни регистров, обеспечивая внутреннему "диспетчеру" большую степень свободы. SMT конечно подразумевает поддержку конвейером двух потоков команд, но после их транслирования в микрооперации они идут в общую очередь, буфер переупорядочивания и так далее, и далее процессору без разницы какому потоку принадлежит та или иная микрооперация. Там есть планировщик "вытаскивающий" из этого буфера готовые для выполнения микрооперации, а если их окажется больше одной вытаскивает на всю свою "ширину" и отправляет в порты запуска, где они поступают уже на вычислительные юниты и т.д. вплоть до отставки инструкций (что-то типа сборка результатов вычислений в исходную последовательность). То есть, на этапе вычислений какой-либо разницы между потоками нет, они действительно выполняются одновременно, и как верно заметили, догружают вычислительные юниты более полно, что и даёт общее повышение производительности.
Софту без разницы, это железо не может. Два потока на ядро даёт всего +15-30% производительности, а 3 и 4-й поток даст ровным счетом ничего, если не минус.