Барабанный процессор
Эту страницу предлагается переименовать в «???». |
Barrel процессор, барабанный процессор, представляет собой процессор, который после каждого такта переключается между потоками команд. Эта архитектура процессора также известна как «interleaved» (чередующаяся) или «fine-grained» (мелкозернистая) временная многопоточность. В отличие от одновременной многопоточности в современных суперскалярных архитектурах, данная технология не позволяет выполнять несколько команд за один цикл.
Как и при вытесняющей многозадачности, каждому потоку выполнения присваивается свой собственный программный счётчик и другие аппаратные регистры для сохранения контекста каждого потока. Barrel процессор может гарантировать, что каждый поток будет выполняться через каждые n циклов, в отличие от процессора с вытесняющей многозадачностью, который, как правило, запускает один поток выполнения в течение сотен или тысяч циклов, в то время как все остальные потоки ждут своей очереди.
Приём проектирования, называющийся C-замедление[англ.], может по схеме однозадачного процессора сгенерировать соответствующую ему схему Barrel процессора. Сгенерированный таким образом n-поточный Barrel процессор, действует так же, как многопроцессорная система, собранная из n отдельных копий оригинального однозадачного процессора, каждый из которых работает примерно на 1/n от исходной скорости.
История
[править | править код]Одним из старейших примеров барабанного процессора являлся процессор ввода-вывода в суперкомпьютере CDC 6000 series[англ.]. Он был способен исполнять одну инструкцию или часть сложной инструкции от каждого из 10 различных виртуальных процессоров, называвшихся также периферийными процессорами, перед возвратом к первому процессору.[1]
Барабанные процессоры также могут быть использованы в качестве центральных процессоров в больших системах. Например, Tera MTA[англ.] (1988) имел Barrel процессор со 128 потоками на ядро.[2][3] MTA-архитектура получила дальнейшее развитие в последующих продуктах, таких как YarcData uRiKA, представленные в 2012 году они ориентированы на приложения для интеллектуального анализа данных.[4]
Barrel процессоры могут быть использованы для снижения затрат на железо. Микрокод Xerox Alto исполнялся на barrel процессоре, который реализовывал два центральных процессора, видеоконтроллер, контроллер Ethernet, контроллер диска, а также другие устройства ввода/вывода.[5]
Barrel процессоры также можно найти во встраиваемых системах, где они особенно полезны, благодаря их детерминированной производительности потоков в режиме реального времени[англ.]. Примером может служить XMOS XCore XS1[англ.] (2007), barrel процессор с восемью потоками на ядро. XS1 используется в контроллерах Ethernet, USB, аудио и других устройствах, где производительность ввода/вывода имеет решающее значение. Barrel процессоры также используются в специализированных устройствах, например восьмипоточный сетевой процессор Ubicom[англ.] IP3023 (2004).
Преимущества перед однопоточными процессорами
[править | править код]Однозадачный процессор тратит много тактов на NOOP-операции, не делая ничего полезного, каждый раз, когда происходит промах мимо кэша или при простое конвейера. Преимущества использования barrel процессоров по сравнению с однозадачными процессорами в следующем:
- Способность выполнять полезную работу других потоков, в то время как приостановленный поток ожидает.
- Проектирование n-поточного Barrel процессора с длинной конвейера n гораздо проще, чем проектирование однозадачного процессора, поскольку у barrel процессора простой конвейера минимален и не требует создания схем упреждающего чтения (не нуждается в предсказаниях переходов).
- Для приложений реального времени barrel процессор может гарантировать, что «в реальном времени» поток будет выполняться с точным таймингом, независимо от того, что происходит с другими потоками, даже если другой поток блокируется в бесконечном цикле или постоянно прерывается через аппаратные прерывания.
Недостатки по сравнению с однопоточными процессорами
[править | править код]Есть несколько недостатков barrel процессоров.
- Состояние каждого потока должно храниться на чипе (обычно в регистрах), чтобы избежать дорогостоящих переключений контекста вне кристалла. Для этого требуется большее количество регистров, по сравнению с обычными процессорами.
- Если все потоки будут разделять один и тот же кэш, то это уменьшит общую производительность системы. Чтобы этого избежать, лучше разделить кэш-памяти на блоки под каждый поток отдельно, но это может значительно увеличить число транзисторов (и, следовательно, стоимость) такого процессора. (Однако, в режиме жёсткого реального времени во встраиваемых системах, где barrel процессоры встречаются чаще, стоимость доступа к памяти, как правило, рассчитана исходя из предположения о худшем промахе мимо кэша, так что это незначительная проблема. Кроме того, некоторые barrel процессоры, такие как 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 года.
- ↑ PARC, Xerox Alto Hardware Manual . BitSevers. Дата обращения: 11 октября 2016. Архивировано 4 сентября 2017 года.
Ссылки
[править | править код]- 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)
- Методы увеличения вычислительной производительности