| デザイナー | アナログデバイス |
|---|---|
| ビット | 32ビット |
| 紹介された | 2000年 |
| デザイン | RISC |
| タイプ | ロード-ストア |
| エンコーディング | 可変 (16 ビットまたは 32 ビットの汎用、または 1 × 32 ビット命令 + 2 × 16 ビット命令の 64 ビット並列発行) |
| 分岐 | 条件コード |
| エンディアン | 少し |
| レジスター | |
| 汎用 | 8 × 32 ビット データ レジスタ (16 × 16 ビット ハーフ レジスタとしてアドレス指定可能)、2 × 40 ビット アキュムレータ、6 × 32 ビット アドレス レジスタ、スタック ポインタ、フレーム ポインタ |
ADI ブラックフィン ロゴ | |
| 一般情報 | |
|---|---|
| 発売 | 2008 |
| 製造中止 | 現在 |
| 販売元 | アナログデバイス |
| デザイン: | アナログデバイス |
| 共通メーカー | |
Blackfinは、アナログ・デバイセズが開発、製造、販売している16/32 ビットのマイクロプロセッサファミリです。このプロセッサには、16 ビットの積和演算(MAC) によって実行される固定小数点デジタル信号プロセッサ(DSP) 機能が組み込まれており、オンチップのマイクロコントローラが付属しています。[1]これは、オペレーティング システムを実行しながら、リアルタイムH.264ビデオ エンコーディングなどの複雑な数値タスクを同時に処理できる、統合された低消費電力プロセッサアーキテクチャ用に設計されました。[2] [3]
アーキテクチャの詳細
Blackfin プロセッサは、 IntelとAnalog DevicesがMSA (Micro Signal Architecture) として 共同開発したSIMDアーキテクチャ上の32 ビット RISC マイクロコントローラプログラミング モデルを使用します。
このアーキテクチャは 2000 年 12 月に発表され、2001 年 6 月の Embedded Systems Conference で初めてデモされました。
これは、ADI の旧SHARCアーキテクチャと Intel のXScaleアーキテクチャの側面を1 つのコアに統合し、デジタル信号処理 (DSP) とマイクロコントローラの機能を組み合わせたものです。Blackfin/MSA と XScale/ARM または SHARC のコア アーキテクチャには多くの違いがありますが、この組み合わせは、従来の DSP または RISC アーキテクチャ設計よりもパフォーマンス、プログラマビリティ、および消費電力を向上させるように設計されています。
Blackfinアーキテクチャには、それぞれ特定のアプリケーションを対象としたさまざまなCPUモデルが含まれています。[4] 2014年に導入されたBF-7xxシリーズは、いくつかの新しいプロセッサ機能と命令を追加してBlackfinアーキテクチャを拡張したBlackfin+アーキテクチャで構成されています。
アーキテクチャの特徴
コア機能
_(cropped)_ADSP-BF526_BBCZ-4A.jpg/500px-Siglent_1000X_Series_Oscilloscope_Teardown_(21642956565)_(cropped)_ADSP-BF526_BBCZ-4A.jpg)
Blackfin の「コア」と見なされるものは、状況によって異なります。一部のアプリケーションでは、DSP機能が中心となります。Blackfin には、2 つの 16 ビット ハードウェアMAC、2 つの 40 ビットALUとアキュムレータ、40 ビットバレル シフタ、4 つの 8 ビット ビデオ ALU があります。Blackfin+ プロセッサには、32 ビット MAC と 72 ビット アキュムレータが追加されています。これにより、コンパイラまたはプログラマによって実行される最適化のレベルに応じて、プロセッサはクロック サイクルごとに最大 3 つの命令を実行できます。2 つのネストされたゼロ オーバーヘッド ループと 4 つの循環バッファ DAG (データ アドレス ジェネレータ) は、命令を少なくする効率的なコードの作成を支援するように設計されています。他のアプリケーションでは、メモリ保護、さまざまな動作モード (ユーザー、カーネル)、シングル サイクルオペコード、データおよび命令キャッシュ、ビット テスト、バイト、ワード、または整数アクセスの命令、およびさまざまなオンチップ周辺機器などの RISC 機能を使用します。
ISAは高度な表現力を実現するように設計されており、アセンブリ プログラマ (またはコンパイラ) は、存在するハードウェア機能に合わせてアルゴリズムを最適化できます。標準の Blackfin アセンブリ言語は、他の多くのアセンブリ言語で使用されるプレフィックス コマンドではなく、代数構文を使用して記述されます。
メモリとDMA
Blackfin は、バイト アドレス指定可能なフラットメモリ マップを使用します。内部 L1 メモリ、内部 L2 メモリ、外部メモリ、およびすべてのメモリ マップされた制御レジスタは、この 32 ビット アドレス空間に存在するため、プログラミングの観点から見ると、Blackfin はフォン ノイマン アーキテクチャを備えています。
デバイスのコアクロック速度で動作するL1 内部SRAMメモリは、ハーバード アーキテクチャに基づいています。命令メモリとデータ メモリは独立しており、専用のメモリ バスを介してコアに接続され、コアと L1 メモリ間のデータ レートを高く維持するように設計されています。
命令およびデータ L1 SRAM の一部は、オプションで独立してキャッシュとして構成できます。
一部の Blackfin プロセッサには、64KB ~ 256KB の L2 メモリも搭載されています。このメモリはコア クロック速度よりも低速で動作します。L2 ではコードとデータが混在する可能性があります。
Blackfin プロセッサは、 SDRAM、DDR-SDRAM、NOR フラッシュ、NAND フラッシュ、SRAMなど、さまざまな外部メモリをサポートしています。一部の Blackfin プロセッサには、 ATAPIやSD/SDIOなどの大容量ストレージ インターフェイスも含まれています。これらのプロセッサは、外部メモリ空間で数百メガバイトのメモリをサポートできます。
コアとメモリ システムには、任意の周辺機器とメイン (または外部) メモリの間で動作できるDMAエンジンが組み合わされています。プロセッサには通常、周辺機器ごとに専用のDMA チャネルがあり、リアルタイムの標準解像度 (D1) ビデオのエンコードとデコードなど、それを使用できるアプリケーションのスループットが向上するように設計されています。
マイクロコントローラの機能
Blackfin のアーキテクチャには、マイクロプロセッサやマイクロコントローラに搭載されている通常の CPU、メモリ、および I/O が含まれています。これらの機能により、オペレーティング システムが有効になります。
すべての Blackfin プロセッサには、メモリ保護ユニット(MPU) が含まれています。MPU は、メモリ空間全体にわたる保護およびキャッシュ戦略を提供します。MPU により、Blackfin はThreadX、μC/OS-II、NOMMU Linuxなどのオペレーティング システム、 RTOS、カーネルをサポートできます。Blackfin のドキュメントでは、MPU はメモリ管理ユニット(MMU) と呼ばれていますが、Blackfin MPU は従来の MMU のようなアドレス変換を提供しないため、仮想メモリやプロセスごとの個別のメモリ アドレスをサポートしていません。このため、Blackfin は現在、 WinCEやQNXなどの仮想メモリを必要とするオペレーティング システムをサポートできません。
Blackfin は、スーパーバイザ、ユーザー、エミュレーションの 3 つのランタイム モードをサポートしています。スーパーバイザ モードでは、実行中のプロセスからすべてのプロセッサ リソースにアクセスできます。ただし、ユーザー モードでは、システム リソースとメモリ領域を保護できます (MPU の助けを借りて)。最新のオペレーティング システムまたは RTOS では、カーネルは通常、スーパーバイザ モードで実行され、スレッド/プロセスはユーザー モードで実行されます。スレッドがクラッシュしたり、保護されたリソース (メモリ、周辺機器など) にアクセスしようとしたりすると、例外がスローされ、カーネルは問題のあるスレッド/プロセスをシャットダウンできます。ADI からの公式ガイダンスでは、Blackfin を OS 以外の環境で使用する方法について、すべてのソフトウェアがスーパーバイザ空間で実行されるように、最も優先度の低い割り込みを汎用コード用に予約することが示されています。
Blackfinは、16 ビット、32 ビット、64 ビットの命令で構成される可変長のRISCのような命令セットを使用します。一般的に使用される制御命令は 16 ビットのオペコードとしてエンコードされ、複雑な DSP や数学的に集中的な機能は 32 ビットおよび 64 ビットのオペコードとしてエンコードされます。この可変長オペコード エンコードは、最新のマイクロプロセッサ アーキテクチャと同等の コード密度を実現するように設計されています。
メディア処理機能
Blackfin 命令セットには、ビデオ圧縮や画像圧縮および解凍アルゴリズムで一般的に使用されるピクセル処理操作を高速化するメディア処理拡張機能が含まれています。
周辺機器
Blackfin プロセッサには、プロセッサに応じてさまざまな接続周辺機器が含まれています。
- ATAPI
- CAN : 一部の自動車および産業用電子機器で使用される広域低速シリアルバス
- メモリ間 DMA と周辺 DMA をサポートするDMA
- MIIおよびRMIIを備えたEMAC (イーサネット メディア アクセス コントローラ)
- 外部メモリ: EBIU (外部バス インターフェイス ユニット) には、SDRAM、モバイル SDRAM、DDR1、DDR2、または LPDDR 用のコントローラと、SRAM、ROM、フラッシュ EPROM、およびメモリ マップ I/O デバイス用の非同期メモリ コントローラを含めることができます。
- レベルトリガー割り込みとエッジトリガー割り込みを含むGPIO
- I²C、別名 TWI (2線式インターフェース) : 低速の共有シリアルバス
- MXVR: MOSTネットワーク インターフェース コントローラ
- NANDフラッシュ
- PPI : LCD、ビデオ エンコーダー (ビデオ DAC)、ビデオ デコーダー (ビデオ ADC)、CMOS センサー、CCD、および汎用のパラレル高速デバイスへの接続に使用できるパラレル入力/出力ポート。PPI は最大 75 MHz で動作し、8 ビットから 16 ビットの幅で構成できます。
- PWMとタイマー/カウンター
- リアルタイムクロック
- SD/SDIO
- SPI : 一部の高速組み込み電子機器アプリケーションで使用される高速シリアルバス
- SPORT: ADC、DAC、その他のプロセッサ、FPGA などへの接続用に、 TDM、I²S、およびその他の構成可能なフレーミング モードをサポートできる同期高速シリアル ポート。
- UART : RS-232デバイス(PC、モデム、PC周辺機器など)、MIDIデバイス、IRDAデバイスとの双方向通信を可能にします。
- USB 2.0 OTG (オンザゴー)
- ウォッチドッグタイマー
すべての周辺制御レジスタは通常のアドレス空間に メモリマップされます。
開発ツール

ADI は独自のソフトウェア開発ツールチェーンを提供しています。オリジナルの VisualDSP++ IDEはまだサポートされていますが (最終リリースは 2014 年 10 月の 5.1.2 )、サポート終了が近づいており、新しい BF6xx および BF7xx プロセッサのサポートは追加されていません。新しいツールチェーンは CrossCore Embedded Studio で、内部的に同じコンパイラとツールのアップグレード版を使用してすべての Blackfin および Blackfin+ プロセッサをサポートしていますが、UI はEclipse CDTに基づいています。どちらのツールも無料版はありません。VisualDSP++ のシングルユーザー ライセンスは 3,500 米ドル、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 は、VisualDSP++ を必要とするNational InstrumentsのLabVIEW Embedded Module でもサポートされています。
サポートされているオペレーティングシステム、RTOS、カーネル
いくつかの商用およびオープンソースのオペレーティング システムが Blackfin 上での実行をサポートしています。
Blackfinは以前はμClinuxでサポートされ、後にNOMMU機能を備えたLinuxでもサポートされていましたが、広く使用されておらず、メンテナーもいなくなったため、 [8] [9] 2018年4月1日にLinuxからサポートが削除されました。4.16がBlackfinサポートを含む最後のリリースでした。[10] [11] [12]
参照
参考文献
- ^ 「Blackfin プロセッサ アーキテクチャの概要 | Blackfin プロセッサ | プロセッサと DSP | Analog Devices」。2011 年 4 月 17 日時点のオリジナルよりアーカイブ。2011年4 月 9 日閲覧。
- ^ 「H.264 BP/MP エンコーダ」。アナログ・デバイセズ。2014 年 9 月 3 日閲覧。
- ^ 「H.264 BP/MP デコーダー ライブラリ」。アナログ デバイス。2014 年 9 月 3 日閲覧。
- ^ 「Blackfin プロセッサ | Analog Devices」。Analog.com。2016年6 月 24 日閲覧。
- ^ 「組み込み開発向けリアルタイム オペレーティング システム、Express Logic によるリアルタイム システム」Rtos.com。2016 年 5 月 23 日時点のオリジナルよりアーカイブ。2016年 6 月 24 日閲覧。
- ^ 「リアルタイムカーネル」。Micrium.com 。2016年6月24日閲覧。
- ^ 「INTEGRITY リアルタイム オペレーティング システム」。Ghs.com。2016年 6 月 24 日閲覧。
- ^ [1] メンテナー: arch/blackfin/とそのサブディレクトリを孤立化としてマークする
- ^ [2] RE: MAINTAINERS: arch/blackfin/とそのgubbinsを孤立化としてマークする
- ^ [3] arch: 廃止されたアーキテクチャポートを削除する
- ^ Simon Sharwood (2018-04-03). 「Linux 4.16 が到着、8 つの CPU を消去」theregister.co.uk . 2018 年 4 月 3 日閲覧。
- ^ Arnd Bergmann (2018-04-03). 「[GIT PULL] arch: 廃止されたアーキテクチャポートを削除」LKML . 2018-04-04閲覧。
外部リンク
- Blackfin プロセッサの Web サイト
- Blackfin プロセッサ プログラミング リファレンス
- blackfin.uclinux.org Blackfin 用のオープンソース ツールと Linux カーネル
- T2 SDE Blackfinへのクロスコンパイルをサポートするビルドシステム
