Введение
Семья 16/32-битных микропроцессоров, DSP-микропроцессор
the DSP microprocessor
Blackfin – это семейство 16/32-битных микропроцессоров, разработанных, произведенных и поставляемых компанией Analog Devices. Эти процессоры обладают встроенной функциональностью цифровой обработки сигналов (DSP), реализуемой 16-битными умножителями-аккумуляторами (MAC), и дополнены микроконтроллером, интегрированным в ту же микросхему. Архитектура процессора была разработана как единая платформа с низким энергопотреблением, способная выполнять операционные системы и одновременно обрабатывать сложные вычислительные задачи, такие как кодирование видео H.264 в реальном времени.
Детали архитектуры
Процессоры Blackfin используют 32-битную модель программирования микроконтроллера RISC на архитектуре SIMD, совместно разработанной компаниями Intel и Analog Devices, известной как MSA (Micro Signal Architecture). Архитектура была анонсирована в декабре 2000 года и впервые продемонстрирована на конференции Embedded Systems Conference в июне 2001 года. Она объединяет элементы более ранней архитектуры SHARC от ADI и архитектуры XScale от Intel в единое ядро, сочетая функциональность цифровой обработки сигналов (DSP) и микроконтроллера. Существует множество различий в архитектуре ядра между Blackfin/MSA и XScale/ARM или SHARC, однако эта комбинация была разработана для повышения производительности, удобства программирования и энергоэффективности по сравнению с традиционными архитектурами DSP или RISC. Архитектура Blackfin включает в себя различные модели процессоров, ориентированные на конкретные области применения. Серия BF 7xx, представленная в 2014 году, реализует архитектуру Blackfin+, которая расширяет возможности архитектуры Blackfin за счет новых функций и инструкций процессора.
Основные особенности
То, что считается "ядром" Blackfin, зависит от контекста. Для некоторых приложений центральными являются функции DSP. Blackfin имеет два 16-битных аппаратных MAC-устройства, два 40-битных ALU и аккумулятора, 40-битный сдвигающий регистр и четыре 8-битных видео ALU; процессоры Blackfin+ добавляют 32-битное MAC-устройство и 72-битный аккумулятор. Это позволяет процессору выполнять до трех инструкций за один тактовый цикл, в зависимости от уровня оптимизации, выполненной компилятором или программистом. Два вложенных цикла с нулевыми накладными расходами и четыре DAG (генератора адресов данных) для организации круговых буферов предназначены для упрощения написания эффективного кода, требующего меньшего количества инструкций. Другие приложения используют функции RISC, включая защиту памяти, различные режимы работы (пользовательский, ядро), однотактные опкоды, кэши данных и инструкций, а также инструкции для проверки битов, доступа к байтам, словам или целым числам и разнообразные периферийные устройства на кристалле. ISA разработана для обеспечения высокой выразительности, позволяя программисту на языке ассемблера (или компилятору) оптимизировать алгоритм с учетом имеющихся аппаратных возможностей. Стандартный язык ассемблера Blackfin использует алгебраический синтаксис, в отличие от префиксных команд, используемых во многих других языках ассемблера.
Память и DMA
Blackfin использует байтно-адресуемое, плоское адресное пространство памяти. Внутренняя память L1, внутренняя память L2, внешняя память и все регистры управления с отображением в память расположены в этом 32-битном адресном пространстве, поэтому с точки зрения программирования Blackfin имеет архитектуру фон Неймана. Внутренняя SRAM-память L1, работающая на основной тактовой частоте устройства, основана на архитектуре Гарварда. Память инструкций и память данных независимы и подключены к ядру через выделенные шины памяти, разработанные для обеспечения более высокой устойчивой скорости передачи данных между ядром и памятью L1. Отдельные области SRAM L1 для инструкций и данных могут быть опционально сконфигурированы как кэш независимо друг от друга. Некоторые процессоры Blackfin также имеют от 64 КБ до 256 КБ памяти L2. Эта память работает медленнее основной тактовой частоты. Код и данные могут быть смешаны в L2. Процессоры Blackfin поддерживают различные типы внешней памяти, включая SDRAM, DDR SDRAM, NOR flash, NAND flash и SRAM. Некоторые процессоры Blackfin также включают интерфейсы для устройств хранения данных, такие как ATAPI и SD/SDIO. Они могут поддерживать сотни мегабайт памяти во внешнем адресном пространстве. В связке с ядром и системой памяти работает DMA-контроллер, который может осуществлять передачу данных между любым из периферийных устройств и основной (или внешней) памятью. Процессоры обычно имеют выделенный DMA-канал для каждого периферийного устройства, предназначенный для обеспечения более высокой пропускной способности в приложениях, которые могут его использовать, таких как кодирование и декодирование видео стандартной четкости (D1) в реальном времени.
Особенности микроконтроллера
Архитектура Blackfin содержит обычный процессор, память и ввод-вывод, которые можно найти в микропроцессорах или микроконтроллерах. Эти компоненты обеспечивают работу операционных систем. Все процессоры Blackfin содержат блок защиты памяти (MPU). MPU обеспечивает защиту и стратегии кэширования во всем адресном пространстве памяти. MPU позволяет Blackfin поддерживать операционные системы, RTOS и ядра, такие как ThreadX, μC/OS II или NOMMU Linux. Хотя в документации Blackfin MPU упоминается как блок управления памятью (MMU), MPU Blackfin не обеспечивает трансляцию адресов, как традиционный MMU, поэтому он не поддерживает виртуальную память или отдельные адреса памяти для каждого процесса. Именно поэтому Blackfin в настоящее время не может поддерживать операционные системы, требующие виртуальной памяти, такие как WinCE или QNX. Blackfin поддерживает три режима работы: режим супервизора, пользовательский режим и режим эмуляции. В режиме супервизора все ресурсы процессора доступны для выполняющегося процесса. Однако в пользовательском режиме системные ресурсы и области памяти могут быть защищены (с помощью MPU). В современной операционной системе или RTOS ядро обычно работает в режиме супервизора, а потоки/процессы – в пользовательском режиме. Если поток завершается с ошибкой или пытается получить доступ к защищенному ресурсу (памяти, периферийному устройству и т. д.), генерируется исключение, и ядро сможет завершить работу проблемного потока/процесса. Официальные рекомендации ADI по использованию Blackfin в средах без ОС заключаются в резервировании прерывания с наименьшим приоритетом для кода общего назначения, чтобы все программное обеспечение работало в пространстве супервизора. Blackfin использует RISC-подобный набор инструкций переменной длины, состоящий из 16-, 32- и 64-битовых инструкций. Обычно используемые инструкции управления кодируются 16-битными опкодами, а сложные DSP и математически интенсивные функции – 32- и 64-битными опкодами. Такое кодирование опкодов переменной длины разработано для обеспечения плотности кода, сопоставимой с современными архитектурами микропроцессоров.
Особенности обработки носителей
Набор инструкций Blackfin включает расширения для обработки мультимедиа, предназначенные для ускорения операций обработки пикселей, часто используемых в алгоритмах сжатия видео, а также сжатия и декомпрессии изображений.
Инструменты развития
ADI предоставляет собственные комплекты инструментов разработки программного обеспечения. Оригинальная IDE VisualDSP++ все еще поддерживается (ее последний релиз был 5.1.2 в 2013 году), но ее поддержка подходит к концу, и она не поддерживает новые процессоры BF6xx и BF7xx. Более новый комплект инструментов – CrossCore Embedded Studio, который поддерживает все процессоры Blackfin и Blackfin+ с использованием обновленных версий того же компилятора и инструментов, но с пользовательским интерфейсом на базе Eclipse CDT. Бесплатных версий ни одного из этих инструментов нет: лицензия VisualDSP++ для одного пользователя стоит 3500 долларов США, а CrossCore Embedded Studio – 995 долларов США. Другие варианты включают MULTI IDE от Green Hills Software и GNU GCC Toolchain для семейства процессоров Blackfin. Однако, как и VisualDSP++, они не были обновлены для поддержки новейших процессоров BF6xx и BF7xx. Более того, ни один из них не поддерживает все процессоры BF5xx. Green Hills MULTI не поддерживает BF50x, BF51x, некоторые BF52x, BF547 и BF59x. GCC не поддерживает BF50x, BF566 и BF59x, а также имеет неполную поддержку BF561. Blackfin также поддерживается встроенным модулем LabVIEW от National Instruments, для работы с которым требуется VisualDSP++.
Поддерживаемые операционные системы, RTOS и ядра
Несколько коммерческих и операционных систем с открытым исходным кодом поддерживают работу на Blackfin. +OS/RTOS/Kernels on BlackfinTitle Лицензия Комментарии ThreadX Nucleus μC/OS II INTEGRITY RTEMS RTXC Quadros VDK Ядро реального времени ADI. Поставляется вместе с VisualDSP++. NET Micro Framework Автономная версия от Microsoft. Интегрированная версия от AxiomFount. Ранее Blackfin поддерживался μClinux, а затем Linux с функцией NOMMU, но поскольку он не получил широкого распространения и больше не имел сопровождающего, поддержка была удалена из Linux 1 апреля 2018 года; версия 4.16 была последней, включающей поддержку Blackfin.