Баррельный процессор — это ЦП , который переключается между потоками выполнения на каждом цикле . Этот метод проектирования ЦП также известен как «перемежающаяся» или «мелкозернистая» временная многопоточность . В отличие от одновременной многопоточности в современных суперскалярных архитектурах, он, как правило, не позволяет выполнять несколько инструкций за один цикл.
Подобно вытесняющей многозадачности , каждому потоку выполнения назначается свой собственный счетчик программ и другие аппаратные регистры ( архитектурное состояние каждого потока ). Процессор-баррель может гарантировать, что каждый поток будет выполнять одну инструкцию каждые n циклов, в отличие от машины с вытесняющей многозадачностью , которая обычно запускает один поток выполнения в течение десятков миллионов циклов, в то время как все остальные потоки ждут своей очереди.
Метод, называемый C-замедлением, может автоматически генерировать соответствующий дизайн процессора-барреля из дизайна однозадачного процессора. n -канальный процессор-баррель, сгенерированный таким образом, действует во многом как n отдельных многопроцессорных копий исходного однозадачного процессора, каждая из которых работает примерно на 1/ n исходной скорости. [ необходима цитата ]
Одним из самых ранних примеров процессора-барреля была система обработки ввода-вывода в суперкомпьютерах серии CDC 6000. Они выполняли одну инструкцию (или часть инструкции) от каждого из 10 различных виртуальных процессоров (называемых периферийными процессорами) перед возвратом к первому процессору. [1] Из серии CDC 6000 мы читаем, что «Периферийные процессоры коллективно реализованы как процессор-баррель. Каждый выполняет процедуры независимо от других. Они являются свободным предшественником управления шиной или прямого доступа к памяти ».
Одной из причин появления процессоров barrel было снижение стоимости оборудования. В случае CDC 6x00 PPU цифровая логика процессора была намного быстрее основной памяти, поэтому вместо десяти отдельных процессоров для PPU было десять отдельных блоков основной памяти, но все они совместно использовали один набор логики процессора.
Другим примером является Honeywell 800 , который имел 8 групп регистров, что позволяло выполнять до 8 параллельных программ. После каждой инструкции процессор (в большинстве случаев) переключался на следующую активную программу в последовательности. [2]
Процессоры Barrel также использовались в качестве крупномасштабных центральных процессоров. Tera MTA (1988) представлял собой крупномасштабный процессор Barrel с 128 потоками на ядро. [3] [4] Архитектура MTA получила дальнейшее развитие в последующих продуктах, таких как Cray Urika-GD , первоначально представленный в 2012 году (как YarcData uRiKA) и нацеленный на приложения для добычи данных. [5]
Процессоры Barrel также используются во встраиваемых системах, где они особенно полезны благодаря своей детерминированной производительности потоков в реальном времени .
Ранним примером является версия «Dual CPU» четырехбитного COP400 , представленная National Semiconductor в 1981 году. Этот однокристальный микроконтроллер содержит два якобы независимых ЦП, которые совместно используют инструкции, память и большинство устройств ввода-вывода. В действительности, двойные ЦП представляют собой один двухпоточный процессор-баррель. Он работает путем дублирования определенных разделов процессора — тех, которые хранят архитектурное состояние , — но не дублирования основных ресурсов выполнения, таких как АЛУ , шины и память. Отдельные архитектурные состояния устанавливаются с дублированными A (аккумуляторами), B (регистрами указателей), C (флагами переноса), N (указатели стека) и PC (счетчиками программ). [6]
Другим примером является XMOS XCore XS1 (2007), четырехступенчатый процессор с восемью потоками на ядро. (Более новые процессоры от XMOS также имеют тот же тип архитектуры.) XS1 используется в Ethernet, USB, аудио и устройствах управления, а также в других приложениях, где производительность ввода-вывода имеет решающее значение. Когда XS1 запрограммирован на языке «XC», может быть реализован программно-управляемый прямой доступ к памяти .
Процессоры Barrel также использовались в специализированных устройствах, таких как восьмипоточный сетевой процессор ввода-вывода Ubicom IP3023 (2004). Некоторые 8-битные микроконтроллеры Padauk Technology оснащены процессорами Barrel с числом потоков до 8 на ядро.
Однозадачный процессор проводит много времени вхолостую, не делая ничего полезного, когда происходит промах кэша или остановка конвейера . Преимущества использования процессоров-баррелей по сравнению с однозадачными процессорами включают:
У барабанных процессоров есть несколько недостатков.
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка )