Мелкозернистая многопоточность ( (FGMT), Interleaved multithreading, чередующаяся многопоточность) — форма временно́й многопточности, предусматривающая переключение между потоками команд после каждого такта выполнения. В сравнении с другой формой временной многопточности — крупнозернистой, предусматривающей достаточно длительное выполнение каждого потока до переключения — выполнение каждого конкретного потока замедляется, но общая пропускная способность процессора выше.
Как и при вытесняющей многозадачности, каждому потоку выполнения в мелкозернистой многопоточности присваивается свой собственный программный счётчик и другие аппаратные регистры для сохранения контекста каждого потока. Процессор может гарантировать, что каждый поток будет выполняться через каждые n циклов, в отличие от процессора с вытесняющей многозадачностью, который, как правило, запускает один поток выполнения в течение сотен или тысяч циклов, в то время как все остальные потоки ждут своей очереди.
Приём проектирования, называющийся , может по схеме однозадачного процессора сгенерировать соответствующую ему схему Barrel процессора. Сгенерированный таким образом n-поточный Barrel процессор, действует так же, как многопроцессорная система, собранная из n отдельных копий оригинального однозадачного процессора, каждый из которых работает примерно на 1/n от исходной скорости.
История Ранние процессоры с поддержкой мелкозернистой многопоточности назывались барабанными ( — по аналогии с оружейным барабаном). Одной из первых реализаций стал процессор ввода-вывода в суперкомпьютере , он был способен исполнять одну инструкцию или часть сложной инструкции от каждого из 10 различных виртуальных процессоров, называвшихся также периферийными процессорами, перед возвратом к первому процессоруCDC Cyber 170 Computer Systems; Models 720, 730, 750, and 760; Model 176 (Level B); CPU Instruction Set; PPU Instruction Set — См. страницы 2-44 с иллюстрациями чередования «барабана».
Одной из ранних масштабных реализаций в центральных процессорах мелкозернистой многопоточности стали суперкомпьютеры Tera (1988) со 128 потоками на ядроHistory: Seymour Cray & Cray Research to Cray Inc. | Cray . MTA-архитектура получила дальнейшее развитие в последующих продуктах, таких как YarcData uRiKA, представленные в 2012 году они ориентированы на приложения для интеллектуального анализа данныхComputing Solutions for Big Data Analytics | Cray . Один из первых серийных многопоточных процессоров UltraSPARC T1 (2005) использовал технику мелкозернистой многопоточности.
Также мелкозернистая многопоточность реализовалась во встраиваемых системах, где их преимуществом является детерминированная производительность потоков в режиме реального времени. Примером может служить XMOS XCore XS1 (2007) — процессор с восемью потоками на ядро, применявшийся в контроллерах Ethernet, USB, аудио и других устройствах, где производительность ввода-вывода имеет решающее значение. Также мелкозернистая многотопочность используются в специализированных устройствах, например восьмипоточный сетевой процессор IP3023 (2004).
Особенности Состояние каждого потока должно храниться в процессоре (обычно в регистрах), чтобы избежать дорогостоящих переключений контекста вне кристалла. Для этого требуется большее количество регистров, по сравнению с обычными процессорами.
Если все потоки будут разделять один и тот же кэш, то это уменьшит общую производительность системы. Чтобы этого избежать, лучше разделить кэш-памяти на блоки под каждый поток отдельно, но это может значительно увеличить число транзисторов (и, следовательно, стоимость) такого процессора. Однако, в режиме жёсткого реального времени во встраиваемых системах, где процессоры с мелкозернистой многотопочностью встречаются чаще, стоимость доступа к памяти, как правило, рассчитана исходя из предположения о худшем промахе мимо кэша, так что это незначительная проблема. Кроме того, некоторые мелкозернистные процессоры, такие как XMOS XS1, не имеют кэша вообще.
Примечания
Ссылки Soft peripherals Embedded.com article examines Ubicom’s IP3023 processor An Evaluation of the Design of the Gamma 60 Histoire et architecture du Gamma 60 (French and English) Методы увеличения вычислительной производительности
Категория:Технологии процессоров Категория:Обработка команд Категория:Потоки выполнения