Одновременная многопоточность


Одновременная многопоточность[1] (англ. Simultaneous Multithreading — SMT) — одна из двух главных форм многопоточности, которая может быть реализована в процессорах аппаратно. Второй формой является временная многопоточность. Технология одновременной многопоточности позволяет исполнять инструкции из нескольких независимых потоков выполнения на множестве функциональных модулей суперскалярного микропроцессора в одном цикле.

Впервые одновременная многопоточность была представлена в исследовательских работах Дина Таллсена (Dean Tullsen) в 1995 г. (Калифорнийский университет в Сан-Диего)[2][3][4][5].

Первым процессором с реализацией одновременной многопоточности мог бы стать микропроцессор Alpha 21464 компании DEC, который был объявлен в 1999 году. Процессор разрабатывался командой под руководством главного архитектора Джоэла Эмера[англ.]. Процессор был одноядерным, суперскалярным с 8 конвейерами, имел 4 комплекта регистров для переключения контекста и мог потенциально выполнять 4 потока одновременно. 2-кратное увеличение производительности получалось всего лишь за счет 10%-ного увеличения количества логических элементов. Во многом процессор воплощал предложения и подходы, изложенные в работах Дина Таллсена, соавтором чьих работ выступали некоторые члены команды «Alpha» (Джоэл Емер и Ребекка Штамм (Rebecca Stamm)). Однако Alpha 21464 так и не появился на рынке, он пал жертвой корпоративных слияний и поглощений[6].

Таким образом первой реализацией одновременной многопоточности на рынке стала технология Hyper-threading компании Intel, представленная в 2002 г. в серверных процессорах Xeon и в Pentium 4[7] (микроархитектура NetBurst).

Когда компания Intel обратилась к многоядерной архитектуре микропроцессоров, ради упрощения дизайна она не перенесла технологию Hyper-threading на новые процессоры. В результате первым многоядерным процессором с одновременной многопоточностью на каждом ядре стал процессор IBM POWER5 (2004 г.)[8]. В конце концов Intel вернула Hyper-threading в свои процессоры в архитектуре Nehalem (2008 г.)[9].

В 2021 году, группа исследователей, включающая Грацский технический университет, технологический институт Джорджии и некоммерческий исследовательский центр «Lamarr Security Research», обнаружили уязвимость в технологии SMT, реализованной в процессорах AMD с архитектурами Zen, Zen 2 и Zen 3. Уязвимость, получившая название SQUIP[10] (Scheduler Queue Usage via Interference Probing — использование очереди планировщика через анализ помех), позволяет злоумышленникам получать доступ к конфиденциальным данным, о чем, в декабре 2021 года, было сообщено AMD. В ходе демонстрации уязвимости, исследователи «взломали» ключ шифрования RSA-4096[11][12]. AMD, присвоив уязвимости идентификатор CVE-2021-46778 и «средний» рейтинг важности, в августе 2022 года опубликовала бюллетень с рекомендациями смягчения уязвимости[13].