Для чего нужен сопроцессор
Сопроцессор
Различают следующие виды сопроцессоров:
* математические сопроцессоры общего назначения, обычно ускоряющие вычисления с плавающей запятой,
* сопроцессоры ввода-вывода (например — Intel 8089), разгружающие центральный процессор от контроля за операциями ввода-вывода или расширяющие стандартное адресное пространство процессора,
сопроцессоры для выполнения каких-либо узкоспециализированных вычислений.Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например, Intel выпускала для процессоров 8086 и 8088 сопроцессоры 8087 и 8089, Motorola — сопроцессор Motorola 68881) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).
Связанные понятия
В области компьютеризации под аппаратным ускорением понимают применение аппаратного обеспечения для выполнения некоторых функций быстрее по сравнению с выполнением программ процессором общего назначения. Примерами аппаратного ускорения может служить блоковое ускорение выполнения в графическом процессоре и инструкции комплексных операций в микропроцессоре.
Суперскалярный процессор (англ. superscalar processor) — процессор, поддерживающий так называемый параллелизм на уровне инструкций (то есть, процессор, способный выполнять несколько инструкций одновременно) за счёт включения в состав его вычислительного ядра нескольких одинаковых функциональных узлов (таких как АЛУ, FPU, умножитель (integer multiplier), сдвигающее устройство (integer shifter) и другие устройства). Планирование исполнения потока инструкций осуществляется динамически вычислительным.
Программи́руемая логи́ческая интегра́льная схе́ма (ПЛИС, англ. programmable logic device, PLD) — электронный компонент (интегральная микросхема), используемый для создания конфигурируемых цифровых электронных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в.
AMP или ASMP (от англ.: Asymmetric multiprocessing, рус.: Асимметричная многопроцессорная обработка или Асимметричное мультипроцессирование) — тип многопроцессорной обработки, который использовался до того, как была создана технология симметричного мультипроцессирования (SMP); также использовался как более дешевая альтернатива в системах, которые поддерживали SMP.
Как устроены DPU, сопроцессоры для обработки данных
Специализированные процессоры ASIC для конкретных областей — один из способов «перезапустить» закон Мура и преодолеть ограничения универсальных CPU общего назначения. Сейчас это очень перспективная область развития микроэлектроники. Собственные проекты есть у Google, Amazon и других компаний. Например, Google выпускает тензорные процессоры Google TPU, а в дата-центрах Amazon работают чипы AWS Graviton на ядре ARM.
Первые представляют собой ASIC для нейронных сетей, вторые — 64-битные ARM общего назначения для оптимизации соотношения цены и производительности в рабочих нагрузках, требующих больших вычислительных ресурсов.
Еще один класс универсальных ASIC, где в последнее время идут активные эксперименты, — это специализированные сопроцессоры для обработки данных (data processing unit, DPU), разновидность умных сетевых карт (SmartNIC). Вот некоторые представители этого вида: Nvidia BlueField 2, Fungible и Pensando DSC-25.
Что они из себя представляют? Для каких задач подходят? Давайте посмотрим.
Что такое SmartNIC
Обычные сетевые карты (NIC) построены на интегральной схеме специального назначения (ASIC), которая спроектирована на работу Ethernet-контроллером. Часто эти микросхемы проектируют для выполнения вторичных функций. Например, контроллеры Mellanox ConnectX также поддерживают высокоскоростной протокол Infiniband. Это отличные специализированные чипы, но их функциональность нельзя изменить.
В отличие от простых сетевых карт, SmartNIC допускает загрузку в контроллер дополнительного программного обеспечения уже самим пользователем, то есть после покупки аппаратного обеспечения. Это расширяет или изменяет функциональность ASIC. Процедура чем-то похожа на покупку смартфона и установку на него различных приложений.
Чтобы такое стало возможным, SmartNIC требует повышенной вычислительной мощности и дополнительной памяти, по сравнению с обычными NIC. Речь идет о более мощных многоядерных ARM-процессорах, установке специализированных сетевых процессоров (flow processing cores, FPC) и программируемых пользователем вентильных матриц (FPGA).
Схема Xilinx Alveo U25
На платах SmartNIC зачастую выделяют отдельное ядро ARM для уровня управления, некоторые платы допускают загрузку модифицированного ядра Linux. Эти специализированные ядра ARM распределяют нагрузку по остальным вычислительным модулям, собирают статистику и логи, отслеживают состояние SmartNIC. Непосредственно сетевой трафик через них не проходит.
Для каких задач подходят DPU
Сопроцессоры для обработки данных (DPU) — типичное расширение сетевых плат SmartNIC, к которым добавляют функциональность NVMe или NVMe over Fabrics (NVMe-oF). Такая плата позволяет разгрузить центральный процессор, забрав себе все задачи ввода-вывода.
Для примера можно рассмотреть устройство SmartNIC микроконтроллера Broadcom NetXtreme-S BCM58800. Он работает как программируемая сетевая карта и поддерживает (NVMe-oF).
Архитектура карты Broadcom Stingray на базе микроконтроллера BCM58800
В Broadcom Stingray установлено восемь ядер ARM v8 A72 на частоте 3 ГГц, и это, возможно, самая высокая тактовая частота среди ARM на любых SmartNIC. Сетевая карта комплектуется до 16 ГБ памяти DDR4. На аппаратном уровне поддерживается шифрование на скорости до 90 Гбит/с и некоторые функции по обработке данных: дедупликация, удаляющее кодирование RAID 5 и RAID 6.
На схеме также отмечен ускоритель TruFlow. Это патентованная технология Broadcom для аппаратного ускорения сетевых операций, в том числе операций программного коммутатора Open vSwitch (OvS) и др.
Nvidia BlueField 2
Mellanox — один из первопроходцев в разработке умных сетевых карт, и ведущим продуктом сейчас считается плата BlueField 2, которая позиционируется как Data Processing Unit (DPU).
Архитектура Nvidia/Mellanox BlueField 2
Ключевые приложения DPU:
Здесь реализован массив из восьми ядер ARM v8 A72, контроллер памяти DDR4 и двухпортовый сетевой адаптер Ethernet или InfiniBand (два на 100 Гбит/с или один 200 Гбит/с), плюс специализированные ASIC-блоки для ускорения различных функций: регулярных выражений, хэширования SHA-2 и др.
Pensando
Один из новых стартапов в области SmartNIC — компания Pensando, которая предлагает на рынке так называемые Distributed Services Card, это Pensando DSC-25 (для корпоративных серверов) и Pensando DSC-100 (для облачных провайдеров).
Pensando DSC-25 и Pensando DSC-100
Основным продуктом считается Pensando DSC-25. Это карта с одним DPU-процессором P4 (Capri) для обработки данных, дополнительными ARM-ядрами и аппаратными ускорителями отдельных функций.
Схема Pensando DSC-25
Основной процессор DPU и ARM-ядра через общую шину межсоединения подключены к контроллеру PCIe и массиву оперативной памяти (до 4 ГБ).
Отдельные аппаратные ускорители здесь называются Service Processing Offloads. Как и в карте Mellanox, они берут на себя шифрование, обработку дисковых операций и другие задачи.
Fungible
Высокоуровневая архитектура Fungible
Что дальше?
Вокруг концепции DPU в последнее время много хайпа. В этом обзоре упомянуты не все компании, которые пытаются выйти на этот рынок (Intel, Xilinx и другие).
Факт в том, что концепция SmartNIC появилась уже давно, а крупные компании вроде Google и Amazon разработали и внедрили собственные внутренние решения. В то же время был сформирован рынок, который заполнили сторонние игроки.
Сейчас появляется второе поколение SmartNIC на основе FPGA. Технология программируемых пользователем вентильных матриц созрела до такой степени, что теперь может стать основополагающей технологией для SmartNIC. Десять лет назад рынок буквально наводнили графические ускорители — это была первая значительная волна в технологиях аппаратного ускорения. Теперь, когда FPGA преодолели рубеж в три миллиона логических блоков, эти микросхемы тесно интегрируются с другими составными блоками для обработки сетевого трафика, памятью, системой хранения и вычислительными ядрами. Технологии SmartNIC и FPGA отлично дополняют друг друга.
На этом фоне можно ожидать вторую волну аппаратных ускорителей. И тогда к комплекту CPU + GPU добавится третий элемент — DPU. Сопроцессор для обработки данных освободит серверные процессоры от инфраструктурных задач. Исследования показывают, что в сильно виртуализированных средах сетевые процессы, такие как транзакции OvS, могут занимать более 30% процессорного времени на хосте. Представьте, что дисковые операции, шифрование, DPI и сложная маршрутизация выполняются отдельным модулем. Это потенциально снимет значительную часть нагрузки с CPU.
Стартапы вроде Pensando и Fungible со своими инновациями столкнулись на рынке с технологическими лидерами, такими как Xilinx, Intel, Broadcom и Nvidia. Это технологическое соревнование, за которым всегда интересно наблюдать.
Сопроцессор
Сопроцессор — специализированный процессор, расширяющий возможности центрального процессора компьютерной системы, но оформленный как отдельный функциональный модуль. Физически сопроцессор может быть отдельной микросхемой или может быть встроен в центральный процессор (как это делается в случае математического сопроцессора в процессорах для ПК начиная с Intel 486DX).
Различают следующие виды сопроцессоров:
Сопроцессоры могут входить в набор логики, разработанный одной конкретной фирмой (например Intel выпускала в комплекте с процессором 8086 сопроцессоры 8087 и 8089) или выпускаться сторонним производителем (например, Weitek (англ.) 1064 для Motorola m68k и 1067 для Intel 80286).
Сопроцессор в программировании
Сопроцессор расширяет систему инструкций центрального процессора, поэтому для его использования, программа (компилируемая без интерпретации и вызова внешних библиотек) должна содержать эти инструкции. Настройки современных компиляторов для языков высокого уровня под процессоры семейства x86 зачастую позволяют выбирать: использовать математический сопроцессор или нет, что особенно важно при создании кода, который будет исполняться внутри обработчика аппаратного прерывания.
См. также
Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её. Это примечание по возможности следует заменить более точным. |
Архитектура | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параллелизм |
| ||||||||
Реализации | DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер | ||||||||
Компоненты | Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · control unit · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) | ||||||||
Управление питанием | APM · ACPI · Clock gating · Динамическое изменение частоты • Динамическое изменение напряжения |