Blackfinプロセッサの詳細解説
Blackfinは、
アナログ・デバイセズが製造する、
デジタルシグナルプロセッサ(DSP)機能を統合した16/32ビットの
マイクロプロセッサファミリです。小型で省電力であるため、組み込みシステムや
マイクロコントローラとして幅広く利用されています。
アーキテクチャ
Blackfinプロセッサは、
インテルと
アナログ・デバイセズが共同開発したMSA(Micro Signal Architecture)という
SIMDアーキテクチャに基づいています。これは32ビット
RISC MCUプログラミングモデルを採用しており、2000年12月に発表され、2001年6月のEmbedded Systems Conferenceで初めて公開されました。
Blackfinアーキテクチャは、
アナログ・デバイセズのSHARCアーキテクチャと
インテルの
XScaleアーキテクチャの良い点を組み合わせ、DSP機能と
マイクロコントローラ機能を統合したものです。これにより、性能とプログラミングの容易さが向上し、従来のDSPや
RISCプロセッサにはない低消費電力を実現しました。
Blackfinアーキテクチャを実装したCPUには様々な種類があり、それぞれ特定の用途を想定して設計されています。例えば、BF52xCファミリには、48kHzのステレオオーディオCODECが内蔵されています。
内蔵周辺機器:
Blackfinプロセッサには共通して以下の
周辺機器が内蔵されています。
デバッグ/JTAGインターフェース
リアルタイムクロック
コア電圧スイッチング電源
ウォッチドッグタイマー
タイマー/PWM出力/PWM入力ポート
コアタイマー (コアのクロック周波数で動作するタイマー)
機能
コア機能
Blackfinのコアは、
デジタルシグナルプロセッサとしても、
RISCコアとしても捉えることができます。
DSPとしての側面: 2つの16ビットMAC、2つの40ビットALU、1つの40ビットバレルシフタを搭載しており、同時に3つの命令を実行できます(コンパイラの最適化やプログラマのスキルによって異なります)。
RISCコアとしての側面: メモリ保護機能、CPUモード(ユーザーモードと
カーネルモード)、シングルサイクル
オペコード、データキャッシュと命令キャッシュ、ビット/バイト/ワードテスト命令、様々なオンチップ
周辺機器を備えています。
また、ISA(命令セットアーキテクチャ)も高度な表現能力を持ち、アセンブラ
プログラマやコンパイラがハードウェア機能を最大限に活用してアルゴリズムを最適化できるようになっています。
メモリとDMA
Blackfinは、バイト単位でアドレス指定が可能なフラットなメモリ空間を使用しています。内蔵L1メモリ、内蔵L2メモリ、外部メモリ、メモリマップされた制御レジスタなどは、すべてこの32ビットアドレス空間に存在します。
L1内蔵SRAMメモリはハーバード・アーキテクチャを採用しており、コアのクロック速度で動作します。命令メモリとデータメモリは独立してコアと専用メモリバスで接続されており、高速なデータ転送が可能です。
L1メモリは、命令とデータそれぞれ独立して
キャッシュメモリとして使用することもできます。
一部のBlackfinプロセッサには、64KBから256KBのL2メモリが搭載されています。このメモリはコアのクロック速度よりも遅く、命令とデータを混在させることが可能です。
Blackfinプロセッサは外部メモリとして、
SDRAM、DDR-
SDRAM、NORフラッシュ、NANDフラッシュ、SRAMなどをサポートしています。一部のモデルではATAPIやSD/SDIOインターフェースもサポートされており、数百メガバイトの外部メモリ空間を使用できます。
コアとメモリシステムの組み合わせでDMAエンジンを構成でき、任意の
周辺機器と主メモリ(および外部メモリ)との間でデータ転送が可能です。プロセッサは各
周辺機器と専用のDMAチャンネルを持っており、リアルタイムの動画エンコード/デコードなど、高い
スループットが要求される処理にも対応できます。
マイクロコントローラとしての機能
Blackfinアーキテクチャは、
マイクロプロセッサや
マイクロコントローラに見られる特徴を備えており、商用またはオープンソースの様々な
オペレーティングシステムを効率的に実行できます。
メモリ保護ユニット(MPU): 全てのBlackfinプロセッサに内蔵されており、メモリ空間全体の保護とキャッシュ戦略を提供します。これにより、ThreadX、µC/OS-II、LinuxなどのRTOSやカーネルが動作可能です。ただし、MPUはアドレス変換機構を持たないため、仮想記憶やプロセス毎のアドレス空間はサポートしていません。
ユーザー/スーパーバイザーモード: Blackfinには、スーパーバイザー、ユーザー、エミュレーションの3つのCPUモードがあります。スーパーバイザーモードでは、すべてのプロセッサリソースにアクセスできますが、ユーザーモードでは、システムリソースやメモリ領域を保護できます。これにより、OSが
カーネルをスーパーバイザーモードで、通常のスレッドやプロセスをユーザーモードで実行することができます。
可変長RISC風命令セット: Blackfinの命令は、16ビット、32ビット、64ビットのものが存在します。頻繁に使用される制御命令は16ビットで、DSPなどの命令は32ビットや64ビットです。これにより、コード密度を高めています。また、Blackfinの命令セットには、動画や画像の圧縮・伸張アルゴリズムで利用されるピクセル処理をサポートするmedia processing extensionsが含まれています。
周辺機器: Blackfinプロセッサは、多様な
周辺機器接続手段を備えています。
USB 2.0 OTG (On-The-Go)
ATAPI
MXVR (MOST Network Interface Controller)
PPI (Parallel Peripheral Interface)
SPORT (Synchronous serial ports)
CAN (
Controller Area Network)
UART (Universal Asynchronous Receiver Transmitter)
SPI (Serial Peripheral Interface)
I²C (Inter-Integrated Circuit)
すべての周辺制御レジスタは、通常のアドレス空間にメモリマップされており、設定が容易です。
開発ツールとサポートOS
アナログ・デバイセズは、独自の開発ツールであるCROSSCORE(VisualDSP++)を提供していますが、Green Hills SoftwareのMULTI IDE、Blackfin向けのGNUコンパイラコレクション、National InstrumentsのLabVIEW Embedded Moduleなど、他の開発ツールも利用可能です。
BlackfinをサポートするOSとしては、以下のものが挙げられます。
Linux
uClinux
ThreadX
* µC/OS-II
まとめ
Blackfinは、DSP機能と
マイクロコントローラ機能を統合した高性能・低消費電力のプロセッサであり、組み込みシステム開発において幅広い用途に対応できます。その柔軟性と拡張性の高さから、様々な分野で活用されています。