Барабанный процессор

29.07.2021

Barrel процессор, барабанный процессор, представляет собой процессор, который после каждого такта переключается между потоками команд. Эта архитектура процессора также известна как «interleaved» (чередующаяся) или «fine-grained» (мелкозернистая) временная многопоточность. В отличие от одновременной многопоточности в современных суперскалярных архитектурах, данная технология не позволяет выполнять несколько команд за один цикл.

Как и при вытесняющей многозадачности, каждому потоку выполнения присваивается свой собственный программный счётчик и другие аппаратные регистры для сохранения контекста каждого потока. Barrel процессор может гарантировать, что каждый поток будет выполняться через каждые n циклов, в отличие от процессора с вытесняющей многозадачностью, который, как правило, запускает один поток выполнения в течение сотен или тысяч циклов, в то время как все остальные потоки ждут своей очереди.

Приём проектирования, называющийся C-замедление, может по схеме однозадачного процессора сгенерировать соответствующую ему схему Barrel процессора. Сгенерированный таким образом n-поточный Barrel процессор, действует так же, как многопроцессорная система, собранная из n отдельных копий оригинального однозадачного процессора, каждый из которых работает примерно на 1/n от исходной скорости.

История

Одним из старейших примеров барабанного процессора являлся процессор ввода-вывода в суперкомпьютере CDC 6000 series. Он был способен исполнять одну инструкцию или часть сложной инструкции от каждого из 10 различных виртуальных процессоров, называвшихся также периферийными процессорами, перед возвратом к первому процессору.

Барабанные процессоры также могут быть использованы в качестве центральных процессоров в больших системах. Например, Tera MTA (1988) имел Barrel процессор со 128 потоками на ядро. MTA-архитектура получила дальнейшее развитие в последующих продуктах, таких как YarcData uRiKA, представленные в 2012 году они ориентированы на приложения для интеллектуального анализа данных.

Barrel процессоры могут быть использованы для снижения затрат на железо. Микрокод Xerox Alto исполнялся на barrel процессоре, который реализовывал два центральных процессора, видеоконтроллер, контроллер Ethernet, контроллер диска, а также другие устройства ввода/вывода.

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, не имеют кэша вообще.)

Имя:*
E-Mail:
Комментарий: