Family of 16 /32 bit microprocessors
the DSP microprocessor
Blackfin – Analog Devices компаниясы әзірлеген, өндірген және сатқан 16/32 биттік микропроцессорлар отбасы. Процессорлар 16 биттік көбейту-қосу операцияларын (MAC) орындайтын, бекітілген нүктелік цифрлық сигналды өңдеу (DSP) функционалдығын, микроконтроллермен бірге микросхемада біріктіреді. Ол операциялық жүйелерді іске қосумен қатар, H.264 бейнесін кодтау сияқты күрделі сандық есептерді бір уақытта орындай алатын бірыңғай, төмен қуатты процессор архитектурасы үшін жасалған.
The Blackfin is a family of 16 /32 bit microprocessors developed, manufactured and marketed by Analog Devices. The processors have built in, fixed point digital signal processor (DSP) functionality performed by 16 bit multiply–accumulates (MACs), accompanied on chip by a microcontroller. It was designed for a unified low power processor architecture that can run operating systems while simultaneously handling complex numeric tasks such as real time H.264 video encoding.
Сәулет ерекшеліктері
Blackfin процессорлары Intel және Analog Devices компаниялары бірлесіп MSA (Micro Signal Architecture) ретінде әзірлеген SIMD архитектурасында 32 биттік RISC микроконтроллерлік бағдарламалау моделін пайдаланады. Архитектура 2000 жылдың желтоқсанында жарияланды және алғаш рет 2001 жылдың маусым айында Embedded Systems конференциясында көрсетілді. Ол ADI-дің бұрынғы SHARC архитектурасының және Intel-дің XScale архитектурасының элементтерін бір ядроға біріктіріп, сандық сигналды өңдеу (DSP) және микроконтроллерлік функционалдықты үйлестіреді. Blackfin/MSA және XScale/ARM немесе SHARC арасындағы негізгі архитектурада көптеген айырмашылықтар бар, бірақ бұл үйлесім дәстүрлі DSP немесе RISC архитектуралық шешімдерімен салыстырғанда өнімділікті, бағдарламалау мүмкіндігін және қуатты үнемдеуді жақсарту мақсатында жасалған. Blackfin архитектурасы әртүрлі CPU модельдерін қамтиды, олардың әрқайсысы нақты қолданыс салаларына бағытталған. 2014 жылы ұсынылған BF 7xx сериясы Blackfin+ архитектурасын құрайды, ол Blackfin архитектурасын жаңа процессорлық мүмкіндіктермен және командалармен кеңейтеді.
Blackfin processors use a 32 bit RISC microcontroller programming model on a SIMD architecture, which was co developed by Intel and Analog Devices, as MSA (Micro Signal Architecture). The architecture was announced in December 2000, and first demonstrated at the Embedded Systems Conference in June, 2001. It incorporates aspects of ADI's older SHARC architecture and Intel's XScale architecture into a single core, combining digital signal processing (DSP) and microcontroller functionality. There are many differences in the core architecture between Blackfin/MSA and XScale/ARM or SHARC, but the combination was designed to improve performance, programmability and power consumption over traditional DSP or RISC architecture designs. The Blackfin architecture encompasses various CPU models, each targeting particular applications. The BF 7xx series, introduced in 2014, comprise the Blackfin+ architecture, which expands on the Blackfin architecture with some new processor features and instructions.
Негізгі ерекшеліктері
Қара қанаттың "негізгі" бөлігі деп есептелетін нәрсе контекстке байланысты. Кейбір қолданбалар үшін DSP мүмкіндіктері басты рөлде. Blackfin процессорларында екі 16 биттік аппараттық MAC, екі 40 биттік ALU және аккумулятор, 40 биттік шеңберлік ауыстырғыш және төрт 8 биттік бейне ALU бар; Blackfin+ процессорлары 32 биттік MAC және 72 биттік аккумулятормен толықтырылған. Бұл процессорға компилятордың немесе бағдарламашының оңтайландыру деңгейіне қарай, секундтық цикл ішінде үшке дейін нұсқауды орындауға мүмкіндік береді. Екі ішкі нөлдік шығынды цикл және төрт дөңгелек буферлік DAG (деректер мекенжай генераторлары) тиімді кодты, аз нұсқаулармен жазуға көмектеседі. Басқа қолданбалар RISC мүмкіндіктерін пайдаланады, оларға жадты қорғау, әртүрлі жұмыс режимдері (пайдаланушы, ядро), бір циклді операциялық кодтар, деректер және нұсқаулар кэштері, біт тестілеу, байт, сөз немесе бүтін санға қол жеткізу нұсқаулары және түрлі чиптегі перифериялық құрылғылар кіреді. ISA жоғары деңгейдегі көрнекілік үшін жасалған, бұл құрастырушы бағдарламалаушыға (немесе компиляторға) алгоритмді қолданыстағы аппараттық мүмкіндіктерге орай оңтайландыруға мүмкіндік береді. Стандартты Blackfin құрастыру тілі алгебралық синтаксиспен жазылған, көптеген басқа құрастыру тілдерінде қолданылатын префикс командаларының орнына.
What is regarded as the Blackfin "core" is contextually dependent. For some applications, the DSP features are central. Blackfin has two 16 bit hardware MACs, two 40 bit ALUs and accumulators, a 40 bit barrel shifter, and four 8 bit video ALUs; Blackfin+ processors add a 32 bit MAC and 72 bit accumulator. This allows the processor to execute up to three instructions per clock cycle, depending on the level of optimization performed by the compiler or programmer. Two nested zero overhead loops and four circular buffer DAGs (data address generators) are designed to assist in writing efficient code requiring fewer instructions. Other applications use the RISC features, which include memory protection, different operating modes (user, kernel), single cycle opcodes, data and instruction caches, and instructions for bit test, byte, word, or integer accesses and a variety of on chip peripherals. The ISA is designed for a high level of expressiveness, allowing the assembly programmer (or compiler) to optimize an algorithm for the hardware features present. The standard Blackfin assembly language is written using an algebraic syntax: instead of prefix commands used in many other assembly languages.
Жады және DMA
Blackfin байт адресті, жазық жад картасын қолданады. Ішкі L1 жады, ішкі L2 жады, сыртқы жад және барлық жадқа бейімделген басқару тіркегіштері осы 32 биттік адрес кеңістігінде орналасқан. Сондықтан бағдарламалау тұрғысынан қарағанда, Blackfin фон Нейман архитектурасына ие. Құрылғының негізгі сағаттық жылдамдығымен жұмыс істейтін L1 ішкі SRAM жады Гарвард архитектурасына негізделген. Нұсқаулық жады мен дерек жады тәуелсіз және арнайы жад шиналары арқылы ядромен және L1 жадымен байланысады, бұл ядро мен L1 жады арасындағы жоғары тұрақты деректер жылдамдығын қамтамасыз етеді. Нұсқаулар мен деректердің L1 SRAM бөліктерін жеке кэш ретінде конфигурациялауға болады. Blackfin процессорларының кейбіреулерінде 64КБ-тан 256КБ-қа дейін L2 жады бар. Бұл жад негізгі сағаттық жылдамдықтан баяу жұмыс істейді. Код пен деректерді L2-де араластыруға болады. Blackfin процессорлары SDRAM, DDR SDRAM, NOR flash, NAND flash және SRAM сияқты әртүрлі сыртқы жадтарды қолдайды. Кейбір Blackfin процессорлары ATAPI және SD/SDIO сияқты жаппай сақтау интерфейстерін де қамтиды. Олар сыртқы жад кеңістігінде жүздеген мегабайт жадыны қолдай алады. Ядромен және жад жүйесімен байланысты DMA қозғалтқышы бар, ол кез келген шеткі құрылғылар мен негізгі (немесе сыртқы) жад арасында жұмыс істей алады. Процессорлар әдетте әрбір шеткі құрылғы үшін арналған DMA арнасына ие, бұл оны пайдалана алатын қосымшалар үшін жоғары өнімділікті қамтамасыз етеді, мысалы, нақты уақыт стандартты ажыратымдылықтағы (D1) бейне кодтау және декодтау.
The Blackfin uses a byte addressable, flat memory map. Internal L1 memory, internal L2 memory, external memory and all memory mapped control registers reside in this 32 bit address space, so that from a programming point of view, the Blackfin has a Von Neumann architecture. The L1 internal SRAM memory, which runs at the core clock speed of the device, is based on a Harvard architecture. Instruction memory and data memory are independent and connect to the core via dedicated memory buses, designed for higher sustained data rates between the core and L1 memory. Portions of instruction and data L1 SRAM can be optionally configured as cache independently. Certain Blackfin processors also have between 64KB and 256KB of L2 memory. This memory runs slower than the core clock speed. Code and data can be mixed in L2. Blackfin processors support a variety of external memories including SDRAM, DDR SDRAM, NOR flash, NAND flash and SRAM. Some Blackfin processors also include mass storage interfaces such as ATAPI and SD/SDIO. They can support hundreds of megabytes of memory in the external memory space. Coupled with the core and memory system is a DMA engine that can operate between any of its peripherals and main (or external) memory. The processors typically have a dedicated DMA channel for each peripheral, which is designed for higher throughput for applications that can use it, such as real time standard definition (D1) video encoding and decoding.
Микробақылаушының ерекшеліктері
Blackfin архитектурасында микропроцессорлар мен микроконтроллерлерде кездесетін стандартты CPU, жад және I/O бар. Бұл мүмкіндіктер операциялық жүйелерді іске қосуға мүмкіндік береді. Барлық Blackfin процессорларында Memory Protection Unit (MPU) бар. MPU бүкіл жад кеңістігінде қорғау және кэштеу стратегияларын қамтамасыз етеді. MPU Blackfin-ге операциялық жүйелерді, RTOS-терді және ThreadX, μC/OS II немесе NOMMU Linux сияқты ядроларды қолдауға мүмкіндік береді. Blackfin құжаттамасында MPU Memory Management Unit (MMU) деп аталғанымен, Blackfin MPU дәстүрлі MMU сияқты адрес аудармасын қамтамасыз етпейді, сондықтан ол виртуалды жадыны немесе процеске арналған жеке жад адресін қолдамайды. Осы себепті Blackfin қазіргі уақытта виртуалды жадты қажет ететін операциялық жүйелерді, мысалы WinCE немесе QNX қолдамайды. Blackfin үш жұмыс режимін қолдайды: қадағалаушы, пайдаланушы және эмуляция. Қадағалаушы режимінде барлық процессор ресурстарына жұмыс істеп тұрған процесс қол жеткізе алады. Алайда, пайдаланушы режимінде жүйелік ресурстар мен жад аймақтары MPU көмегімен қорғалуы мүмкін. Заманауи операциялық жүйеде немесе RTOS-та ядро әдетте қадағалаушы режимінде, ал жіптер/процестер пайдаланушы режимінде жұмыс істейді. Егер жіп құлап кетсе немесе қорғалған ресурсқа (жад, перифериялық құрылғылар және т.б.) қол жеткізуге тырысса, қателік туындайды және ядро бұл жіпті/процесті тоқтатуға мүмкіндік алады. ADI-дің Blackfin-ді OS жоқ ортада пайдалану туралы ресми ұсынымы – барлық бағдарламалық қамтамасыздама қадағалаушы кеңістігінде жұмыс істеуі үшін жалпы мақсаттағы кодқа ең төменгі приоритеттік үзіліс беру. Blackfin 16, 32 және 64 биттік нұсқаулардан тұратын, RISC-қа ұқсас өзгермелі ұзындықтағы нұсқаулар жиынтығын қолданады. Көбінесе қолданылатын басқару нұсқаулары 16 биттік опкодтар ретінде кодталса, күрделі DSP және математикалық есептеулерді қажет ететін функциялар 32 және 64 биттік опкодтар ретінде кодталады. Бұл өзгермелі ұзындықтағы опкодты кодтау заманауи микропроцессор архитектураларымен код тығыздығы бойынша үйлесімді болу үшін жасалған.
The architecture of Blackfin contains the usual CPU, memory, and I/O that is found on microprocessors or microcontrollers. These features enable operating systems. All Blackfin processors contain a Memory Protection Unit (MPU). The MPU provides protection and caching strategies across the entire memory space. The MPU allows Blackfin to support operating systems, RTOSs and kernels like ThreadX, μC/OS II, or NOMMU Linux. Although the MPU is referred to as a Memory Management Unit (MMU) in the Blackfin documentation, the Blackfin MPU does not provide address translation like a traditional MMU, so it does not support virtual memory or separate memory addresses per process. This is why Blackfin currently can not support operating systems requiring virtual memory such as WinCE or QNX. Blackfin supports three run time modes: supervisor, user and emulation. In supervisor mode, all processor resources are accessible from the running process. However, when in user mode, system resources and regions of memory can be protected (with the help of the MPU). In a modern operating system or RTOS, the kernel typically runs in supervisor mode and threads/processes will run in user mode. If a thread crashes or attempts to access a protected resource (memory, peripheral, etc.) an exception will be thrown and the kernel will then be able to shut down the offending thread/process. The official guidance from ADI on how to use the Blackfin in non OS environments is to reserve the lowest priority interrupt for general purpose code so that all software is run in supervisor space. Blackfin uses a variable length RISC like instruction set consisting of 16 , 32 and 64 bit instructions. Commonly used control instructions are encoded as 16 bit opcodes while complex DSP and mathematically intensive functions are encoded as 32 and 64 bit opcodes. This variable length opcode encoding is designed for code density equivalence to modern microprocessor architectures.
Медиа өңдеу ерекшеліктері
Blackfin нұсқаулар жиынтығында бейне және кескін қысу және ашу алгоритмдерінде кеңінен қолданылатын пикселдік өңдеу операцияларын жылдамдатуға арналған медиа өңдеуге қатысты кеңейтімдер бар.
The Blackfin instruction set contains media processing extensions to help accelerate pixel processing operations commonly used in video compression and image compression and decompression algorithms.
Даму құралдары
ADI өзінің бағдарламалық қамтамасыз етуді әзірлеу құралдар жиынтығын ұсынады. Алғашқы VisualDSP++ IDE әлі де қолдау көрсетіледі (оның соңғы нұсқасы 5.1.2 жылы шыққан), бірақ қызмет көрсету мерзімі аяқталуға жақын және жаңа BF6xx және BF7xx процессорларына қолдау қосылмаған. Жаңа құралдар жиынтығы – CrossCore Embedded Studio, ол барлық Blackfin және Blackfin+ процессорларын қолдайды, ішкі жағынан бірдей компилятор мен құралдардың жаңартылған нұсқаларын пайдаланады, бірақ Eclipse CDT негізіндегі интерфейспен жабдықталған. Екі құралдың да тегін нұсқасы жоқ; VisualDSP++ үшін бір пайдаланушыға арналған лицензия құны 3500 АҚШ доллары, ал CrossCore Embedded Studio үшін – 995 АҚШ доллары. Басқа нұсқаларға Green Hills Software-дің MULTI IDE және Blackfin процессорлар отбасы үшін GNU GCC құралдар жиынтығы кіреді. Алайда, VisualDSP++ сияқты, олар да жаңа BF6xx және BF7xx процессорларын қолдау үшін жаңартылмаған. Сонымен қатар, олардың ешқайсысы барлық BF5xx процессорларын толық қолдамайды. Green Hills MULTI BF50x, BF51x, кейбір BF52x, BF547 және BF59x процессорларын қолдамайды. GCC BF50x, BF566 және BF59x процессорларын қолдамайды, ал BF561 процессорларын толыққанды қолдау көрсетілмеген. Blackfin сонымен қатар National Instruments-тің LabVIEW Embedded модулімен де қолдалады, ол VisualDSP++ қажет етеді.
ADI provides its own software development toolchains. The original VisualDSP++ IDE is still supported (its last release was 5.1.2 in ), but is approaching end of life and has not had support added for the new BF6xx and BF7xx processors. The newer toolchain is CrossCore Embedded Studio, which uses supports all Blackfin and Blackfin+ processors using upgraded versions of the same compiler and tools internally, but with a UI based on Eclipse CDT. No free version of either tool is available; a single user license for VisualDSP++ costs $3500 USD, and CrossCore Embedded Studio $995 USD. Other options include Green Hills Software's MULTI IDE and the GNU GCC Toolchain for the Blackfin processor family. However, like VisualDSP++, these have not been updated to support the newer BF6xx and BF7xx processors. Moreover, neither support all BF5xx processors. Green Hills MULTI lacks support for BF50x, BF51x, some BF52x, BF547, and BF59x. GCC lacks support for BF50x, BF566, and BF59x, and has incomplete support for BF561. Blackfin is also supported by National Instruments' LabVIEW Embedded Module, which requires 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 және кейін NOMMU мүмкіндігімен Linux жүйесін қолдаған, бірақ кеңінен қолданылмағандықтан және оны қолдаушы болмағандықтан, 2018 жылдың 1 сәуірінде Linux қолдауы тоқтатылды; 4.16 нұсқасы Blackfin қолдауын қамтитын соңғы нұсқа болды.
Several commercial and open source operating systems support running on Blackfin. +OS/RTOS/Kernels on BlackfinTitle License Comments ThreadX Nucleus μC/OS II INTEGRITY RTEMS RTXC Quadros VDK ADI's real time kernel. Ships with VisualDSP++. NET Micro Framework Stand alone version from Microsoft. Integrated version from AxiomFount. Blackfin was previously supported by μClinux and later by Linux with the NOMMU feature, but as it was not ever widely used and no longer had a maintainer, support was removed from Linux on April 1, 2018; 4.16 was the last release to include Blackfin support.