Мелкозернистая многопоточность
Мелкозернистая многопоточность (англ. Fine-grained multithreading (FGMT), Interleaved multithreading, чередующаяся многопоточность) — форма временно́й многопточности, предусматривающая переключение между потоками команд после каждого такта выполнения. В сравнении с другой формой временной многопточности — крупнозернистой, предусматривающей достаточно длительное выполнение каждого потока до переключения — выполнение каждого конкретного потока замедляется, но общая пропускная способность процессора выше.
Как и при вытесняющей многозадачности, каждому потоку выполнения в мелкозернистой многопоточности присваивается свой собственный программный счётчик и другие аппаратные регистры для сохранения контекста каждого потока. Процессор может гарантировать, что каждый поток будет выполняться через каждые n циклов, в отличие от процессора с вытесняющей многозадачностью, который, как правило, запускает один поток выполнения в течение сотен или тысяч циклов, в то время как все остальные потоки ждут своей очереди.
Приём проектирования, называющийся C-замедление[англ.], может по схеме однозадачного процессора сгенерировать соответствующую ему схему Barrel процессора. Сгенерированный таким образом n-поточный Barrel процессор, действует так же, как многопроцессорная система, собранная из n отдельных копий оригинального однозадачного процессора, каждый из которых работает примерно на 1/n от исходной скорости.
История
[править | править код]Ранние процессоры с поддержкой мелкозернистой многопоточности назывались барабанными (англ. barrel — по аналогии с оружейным барабаном). Одной из первых реализаций стал процессор ввода-вывода в суперкомпьютере CDC 6000 series[англ.], он был способен исполнять одну инструкцию или часть сложной инструкции от каждого из 10 различных виртуальных процессоров, называвшихся также периферийными процессорами, перед возвратом к первому процессору[1]
Одной из ранних масштабных реализаций в центральных процессорах мелкозернистой многопоточности стали суперкомпьютеры Tera MTA[англ.] (1988) со 128 потоками на ядро[2][3]. MTA-архитектура получила дальнейшее развитие в последующих продуктах, таких как YarcData uRiKA, представленные в 2012 году они ориентированы на приложения для интеллектуального анализа данных[4]. Один из первых серийных многопоточных процессоров UltraSPARC T1 (2005) использовал технику мелкозернистой многопоточности.
Также мелкозернистая многопоточность реализовалась во встраиваемых системах, где их преимуществом является детерминированная производительность потоков в режиме реального времени. Примером может служить XMOS XCore XS1 (2007) — процессор с восемью потоками на ядро, применявшийся в контроллерах Ethernet, USB, аудио и других устройствах, где производительность ввода-вывода имеет решающее значение. Также мелкозернистая многотопочность используются в специализированных устройствах, например восьмипоточный сетевой процессор Ubicom[англ.] IP3023 (2004).
Особенности
[править | править код]Состояние каждого потока должно храниться в процессоре (обычно в регистрах), чтобы избежать дорогостоящих переключений контекста вне кристалла. Для этого требуется большее количество регистров, по сравнению с обычными процессорами.
Если все потоки будут разделять один и тот же кэш, то это уменьшит общую производительность системы. Чтобы этого избежать, лучше разделить кэш-памяти на блоки под каждый поток отдельно, но это может значительно увеличить число транзисторов (и, следовательно, стоимость) такого процессора. Однако, в режиме жёсткого реального времени во встраиваемых системах, где процессоры с мелкозернистой многотопочностью встречаются чаще, стоимость доступа к памяти, как правило, рассчитана исходя из предположения о худшем промахе мимо кэша, так что это незначительная проблема. Кроме того, некоторые мелкозернистные процессоры, такие как XMOS XS1, не имеют кэша вообще.
Примечания
[править | править код]- ↑ CDC Cyber 170 Computer Systems; Models 720, 730, 750, and 760; Model 176 (Level B); CPU Instruction Set; PPU Instruction Set Архивная копия от 3 марта 2016 на Wayback Machine — См. страницы 2-44 с иллюстрациями чередования «барабана».
- ↑ アーカイブされたコピー. Дата обращения: 11 августа 2012. Архивировано 22 февраля 2012 года.
- ↑ History: Seymour Cray & Cray Research to Cray Inc. | Cray Архивировано 12 июля 2014 года.
- ↑ Computing Solutions for Big Data Analytics | Cray Архивировано 9 августа 2012 года.
Ссылки
[править | править код]- 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)
- Методы увеличения вычислительной производительности