Бочковой процессор
Бочковой процессор — это ЦП , который переключается между потоками выполнения в каждом цикле . Этот метод проектирования ЦП также известен как «чередующаяся» или «мелкозернистая» временная многопоточность . В отличие от одновременной многопоточности в современных суперскалярных архитектурах, она обычно не позволяет выполнять несколько инструкций за один цикл.
Как и в случае с вытесняющей многозадачностью , каждому потоку выполнения назначается собственный программный счетчик и другие аппаратные регистры каждого потока ( архитектурное состояние ). Барабанный процессор может гарантировать, что каждый поток будет выполнять одну инструкцию каждые n циклов, в отличие от машины с вытесняющей многозадачностью , которая обычно выполняет один поток выполнения в течение десятков миллионов циклов, в то время как все остальные потоки ждут своей очереди.
Метод, называемый C-замедлением , может автоматически генерировать соответствующий проект цилиндрического процессора на основе проекта однозадачного процессора. -процессорный процессор n Созданный таким образом действует во многом как n отдельных многопроцессорных копий исходного однозадачного процессора, каждая из которых работает со скоростью примерно 1/ n от исходной скорости. [ нужна ссылка ]
История [ править ]
Одним из первых примеров бочкового процессора была система обработки ввода-вывода в суперкомпьютерах серии CDC 6000 . Они выполняли одну инструкцию (или часть инструкции) от каждого из 10 различных виртуальных процессоров (называемых периферийными процессорами), прежде чем вернуться к первому процессору. [1] В серии CDC 6000 мы читаем, что «Периферийные процессоры в совокупности реализованы как бочкообразный процессор. Каждый выполняет процедуры независимо от других. Они являются свободным предшественником управления шиной или прямого доступа к памяти ».
Одной из причин создания бочковых процессоров было снижение затрат на оборудование. В случае PPU CDC 6x00 цифровая логика процессора была намного быстрее, чем основная память, поэтому вместо десяти отдельных процессоров имеется десять отдельных блоков основной памяти для PPU, но все они используют один набор логика процессора.
Другой пример — Honeywell 800 , который имел 8 групп регистров, что позволяло использовать до 8 одновременных программ. После каждой инструкции процессор (в большинстве случаев) переключался на следующую активную программу по порядку. [2]
Процессоры Barrel также использовались в качестве крупномасштабных центральных процессоров. Tera (1988) представлял собой MTA крупномасштабный процессор с 128 потоками на ядро. [3] [4] Архитектура MTA продолжала развиваться в последующих продуктах, таких как Cray Urika-GD , первоначально представленная в 2012 году (как YarcData uRiKA) и предназначенная для приложений интеллектуального анализа данных. [5]
Процессоры Barrel также используются во встроенных системах, где они особенно полезны благодаря своей детерминированной производительности потоков в реальном времени .
Ранним примером является версия четырехбитного COP400 с двумя процессорами , представленная National Semiconductor в 1981 году. Этот однокристальный микроконтроллер содержит два якобы независимых процессора, которые совместно используют инструкции, память и большинство устройств ввода-вывода. На самом деле два процессора представляют собой один двухпоточный процессор. Он работает путем дублирования определенных разделов процессора — тех, которые хранят состояние архитектуры — но не дублирования основных ресурсов исполнения, таких как ALU , шины и память. Отдельные архитектурные состояния создаются с дублированием A (аккумуляторы), B (регистры указателей), C (флаги переноса), N (указатели стека) и PC (программные счетчики). [6]
Другой пример — XMOS XCore XS1 (2007 г.), четырехступенчатый процессор с восемью потоками на ядро. (Новые процессоры XMOS также имеют архитектуру такого же типа.) XS1 используется в Ethernet, USB, аудиоустройствах и устройствах управления, а также в других приложениях, где производительность ввода-вывода имеет решающее значение. Когда XS1 запрограммирован на языке «XC», прямой доступ к памяти может быть реализован , управляемый программным обеспечением.
Процессоры Barrel также использовались в специализированных устройствах, таких как восьмипоточный Ubicom сетевой процессор ввода-вывода IP3023 (2004 г.).Некоторые 8-битные микроконтроллеры Padauk Technology оснащены процессорами с числом потоков до 8 на ядро.
Сравнение с однопоточными процессорами [ править ]
Преимущества [ править ]
Однозадачный процессор проводит много времени в простое, не делая ничего полезного, когда происходит промах кэша или остановка конвейера . Преимущества использования бочковых процессоров по сравнению с однозадачными процессорами включают в себя:
- Возможность выполнять полезную работу над другими потоками, пока остановившийся поток ожидает.
- Проектирование n -путевого процессора с n глубины конвейером намного проще, чем проектирование однозадачного процессора, поскольку у процессора никогда не бывает остановок конвейера и ему не нужны схемы прямой связи .
- Для приложений реального времени бочковый процессор может гарантировать, что поток «реального времени» может выполняться с точным соблюдением тайминга, независимо от того, что происходит с другими потоками, даже если какой-то другой поток блокируется в бесконечном цикле или постоянно прерывается аппаратные прерывания .
Недостатки [ править ]
У бочковых процессоров есть несколько недостатков.
- Состояние каждого потока должно храниться внутри кристалла, обычно в регистрах, чтобы избежать дорогостоящих переключений контекста вне кристалла. Для этого требуется большое количество регистров по сравнению с типичными процессорами.
- Либо все потоки должны использовать один и тот же кэш , что замедляет общую производительность системы, либо для каждого потока выполнения должна быть одна единица кэша, что может значительно увеличить количество транзисторов и, следовательно, стоимость такого ЦП. Однако во жесткого реального времени встроенных системах , где часто встречаются бочковые процессоры, затраты на доступ к памяти обычно рассчитываются с учетом наихудшего поведения кэша, поэтому это не является проблемой. [ нужна ссылка ] Некоторые бочковые процессоры, такие как XMOS XS1, вообще не имеют кэша.
См. также [ править ]
- Суперпоточность
- Многозадачность компьютера
- Одновременная многопоточность (SMT)
- Гиперпоточность
- Векторный процессор
- Крей XMT
Ссылки [ править ]
- ^ Компьютерные системы CDC Cyber 170; Модели 720, 730, 750 и 760; Модель 176 (Уровень Б); Набор инструкций ЦП; Набор инструкций PPU. Архивировано 3 марта 2016 г. на Wayback Machine . На стр. 2-44 приведена иллюстрация вращающегося «цилиндра».
- ^ Справочное руководство для программистов Honeywell 800 (PDF) . 1960. с. 17.
- ^ «Архивная копия» . Архивировано из оригинала 22 февраля 2012 г. Проверено 11 августа 2012 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Крейская история» . Архивировано из оригинала 12 июля 2014 г. Проверено 19 августа 2014 г.
- ^ «Подразделение YarcData компании Cray запускает новое графическое устройство для больших данных» (пресс-релиз). Сиэтл, Вашингтон, и Санта-Клара, Калифорния: Cray Inc., 29 февраля 2012 г. Архивировано из оригинала 18 марта 2017 г .. Проверено 24 августа 2017 г.
- ^ «Справочник по микроконтроллерам COPS» . Национальный полупроводник . Проверено 19 января 2022 г.
Внешние ссылки [ править ]
- Мягкая периферия В статье Embedded.com рассматривается процессор Ubicom IP3023.
- Оценка конструкции Gamma 60
- История и архитектура Гаммы 60 (французский и английский)