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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

История[править | править код]

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

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

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

Barrel процессоры также можно найти во встраиваемых системах, где они особенно полезны, благодаря их детерминированной производительности потоков в режиме реального времени[en]. Примером может служить XMOS XCore XS1[en] (2007), barrel процессор с восемью потоками на ядро. XS1 используется в контроллерах Ethernet, USB, аудио и других устройствах, где производительность ввода/вывода имеет решающее значение. Barrel процессоры также используются в специализированных устройствах, например восьмипоточный сетевой процессор Ubicom[en] IP3023 (2004).

Преимущества перед однопоточными процессорами[править | править код]

Однозадачный процессор тратит много тактов на NOOP-операции, не делая ничего полезного, каждый раз, когда происходит промах мимо кэша или при простое конвейера. Преимущества использования barrel процессоров по сравнению с однозадачными процессорами в следующем:

  • Способность выполнять полезную работу других потоков, в то время как приостановленный поток ожидает.
  • Проектирование n-поточного Barrel процессора с длинной конвейера n гораздо проще, чем проектирование однозадачного процессора, поскольку у barrel процессора простой конвейера минимален и не требует создания схем упреждающего чтения (не нуждается в предсказаниях переходов).
  • Для приложений реального времени barrel процессор может гарантировать, что «в реальном времени» поток будет выполняться с точным таймингом, независимо от того, что происходит с другими потоками, даже если другой поток блокируется в бесконечном цикле или постоянно прерывается через аппаратные прерывания.

Недостатки по сравнению с однопоточными процессорами[править | править код]

Есть несколько недостатков barrel процессоров.

  • Состояние каждого потока должно храниться на чипе (обычно в регистрах), чтобы избежать дорогостоящих переключений контекста вне кристалла. Для этого требуется большее количество регистров, по сравнению с обычными процессорами.
  • Если все потоки будут разделять один и тот же кэш, то это уменьшит общую производительность системы. Чтобы этого избежать, лучше разделить кэш-памяти на блоки под каждый поток отдельно, но это может значительно увеличить число транзисторов (и, следовательно, стоимость) такого процессора. (Однако, в режиме жёсткого реального времени во встраиваемых системах, где barrel процессоры встречаются чаще, стоимость доступа к памяти, как правило, рассчитана исходя из предположения о худшем промахе мимо кэша, так что это незначительная проблема. Кроме того, некоторые barrel процессоры, такие как XMOS XS1, не имеют кэша вообще.)

Примечания[править | править код]

  1. 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 с иллюстрациями чередования «барабана».
  2. アーカイブされたコピー. Дата обращения: 11 августа 2012. Архивировано 22 февраля 2012 года.
  3. History: Seymour Cray & Cray Research to Cray Inc. | Cray Архивировано 12 июля 2014 года.
  4. Computing Solutions for Big Data Analytics | Cray Архивировано 9 августа 2012 года.
  5. PARC, Xerox Alto Hardware Manual. BitSevers. Дата обращения: 11 октября 2016. Архивировано 4 сентября 2017 года.

Ссылки[править | править код]