Blackfin

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Blackfin は、デジタルシグナルプロセッサ(DSP)機能を組み込んだ16/32ビットマイクロプロセッサファミリであり、小型で省電力のマイクロコントローラとして使われている。オペレーティングシステムを動作させ、同時にH.264ビデオエンコーディングのような複雑な数値的タスクを並行して行う、低消費電力の統合プロセッサアーキテクチャである。

開発キットがいくつか存在し、Linuxもサポートされている。現在は、アナログ・デバイセズが製造している。

アーキテクチャ[編集]

Blackfin プロセッサは、インテルとアナログ・デバイセズが共同開発した MSA(Micro Signal Architecture)というSIMDアーキテクチャに基づく32ビットRISC MCU プログラミングモデルを使用している。

Blackfin プロセッサアーキテクチャは2000年12月に発表され、2001年6月の Embedded Systems Conference で実物が初公開された。

Blackfin アーキテクチャは、アナログ・デバイセズのSHARCアーキテクチャとインテルのXScaleアーキテクチャのそれぞれの長所を取り入れ、そこにデジタルシグナルプロセッサ機能とマイクロコントローラ機能を統合したものである。Blackfin/MSA と XScale/ARM や SHARC には様々な相違点があるが、統合によって性能とプログラム容易性が向上し、これまでのDSPやRISCにはない低消費電力を実現した。

Blackfin アーキテクチャを実装したCPUは各種あり、それぞれ特定の応用分野を想定している。Balckfin ファミリは下表の通りである。アナログ・デバイセズの製品一覧はこちらにある。

プロセッサ
ADSP-
最大 クロック
(MHz)
コア数 命令 L1 SRAM/
(cache)
(KB)
データ L1 SRAM/
(cache)
scratch
(KB)
L2 SRAM
(KB)
オン
チップ
フラッシュ
ホスト ポート コード セキュリティ イーサネット
MAC
SD/
SDIO
16-bit PPIs 18/24-bit PPIs SDRAM USB ATAPI CAN I²C (TWI) SPI UART SPORT GPIO MXVR
BF5221 600 1 64 (16) 64 (32)
4
- - Yes Yes - - 1 0 SDR
x16
- - - 1 1 2 2 48 pins -
BF5251 600 1 64 (16) 64 (32)
4
- - Yes Yes - - 1 0 SDR
x16
2.0
OTG
- - 1 1 2 2 48 pins -
BF5271 600 1 64 (16) 64 (32)
4
- - Yes Yes 1 - 1 0 SDR
x16
2.0
OTG
- - 1 1 2 2 48 pins -
BF542 600 1 64 (16) 64 (32)
4
- - - Yes - 1 1 0 DDR
x16
1 1 1 1 2 3 3 152 pins -
BF544 533 1 64 (16) 64 (32)
4
64 - Yes Yes - - 1 1 DDR
x16
- - 2 2 2 3 3 152 pins -
BF548 600 1 64 (16) 64 (32)
4
128 - Yes Yes - 1 1 1 DDR
x16
2.0
OTG
1 2 2 3 4 4 152 pins -
BF549 533 1 64 (16) 64 (32)
4
128 - Yes Yes - 1 1 1 DDR
x16
2.0
OTG
1 2 2 3 4 4 152 pins 1
BF531 400 1 32 (16) 16 (16)
4
- - - - - - 1 - SDR
x16
- - - - 1 1 2 16 -
BF532 400 1 48 (16) 32 (32)
4
- - - - - - 1 - SDR
x16
- - - - 1 1 2 16 -
BF533 600 1 80 (16) 64 (32)
4
- - - - - - 1 - SDR
x16
- - - - 1 1 2 16 -
BF534 500 1 64 (16) 64 (32)
4
- - - - - - 1 - SDR
x16
- - 1 1 1 1 2 48 -
BF536 500 1 64 (16) 32 (32)
4
- - - - 1 - 1 - SDR
x16
- - 1 1 1 1 2 48 -
BF537 600 1 64 (16) 64 (32)
4
- - - - 1 - 1 - SDR
x16
- - 1 1 1 1 2 48 -
BF538 500 1 80 (16) 64 (32)
4
- - - - - - 1 - SDR
x16
- - 1 2 3 3 4 54 -
BF538F 500 1 80 (16) 64 (32)
4
- 512
1024
- - - - 1 - SDR
x16
- - 1 2 3 3 4 54 -
BF539 500 1 80 (16) 64 (32)
4
- - - - - - 1 - SDR
x16
- - 1 2 3 3 4 38 1
BF539F 500 1 80 (16) 64 (32)
4
- 512
1024
- - - - 1 - SDR
x16
- - 1 2 3 3 4 38 1
BF561 600 2 64 (16)
per core
64 (32)
4
per core
128 - - - - - 2 - SDR
x32
- - - - 1 1 2 48 -
BF535 350 1 16 32
4
256 - - - - - - - SDR
x16
1.1 - - - 2 2 2 16 -

1 BF52xC ファミリには、48KHz、ステレオ音声CODEC (2xADCs, 2xDACs) が内蔵されている。

上の表に付け加えると、Blackfin プロセッサには共通して以下の周辺機器が内蔵されている。

機能[編集]

コア機能[編集]

Blackfin のコアが何であるかは、見方によって異なる。

ISAも高度な表現能力を有し、アセンブラプログラマやコンパイラがハードウェア機能を利用してアルゴリズムを高度に最適化することを可能にしている。

メモリとDMA[編集]

Blackfin はバイト単位のアドレス指定が可能な平坦なメモリ空間を使っている。内蔵L1メモリ、内蔵L2メモリ、外部メモリ、メモリマップされた制御レジスタ群などは、全てこの32ビットアドレス空間に存在している。

L1内蔵SRAMメモリは、ハーバード・アーキテクチャであり、コアのクロック速度で動作する。命令メモリとデータメモリは、それぞれ独立してコアと専用メモリバスで接続されていて、コアとL1メモリ間では高速なデータ転送が可能となっている。

L1メモリは、命令とデータそれぞれ独立してキャッシュメモリとして使うこともできる。

一部のBlackfinプロセッサには64KBから256KBのL2メモリがある。このメモリはコアのクロック速度より遅い。L2メモリ上では命令とデータが混在可能である。

Blackfinプロセッサは外部メモリとして SDRAM、DDR-SDRAM、NORフラッシュ、NANDフラッシュ、SRAM をサポートしている。また、一部のBlackfinには ATAPI や SD/SDIO といったインタフェースがサポートされている。これらは、外部メモリ空間として数百メガバイトをサポート可能である。

コアとメモリシステムの組み合わせでDMAエンジンを構成でき、任意の周辺機器と主メモリ(および外部メモリ)との間でやり取りが可能である。プロセッサは各周辺機器と専用のDMAチャンネルを持っていて、リアルタイムの動画エンコーディング/デコーディングなども可能とする程度の高いスループットを提供している。

マイクロコントローラとしての機能[編集]

Blackfinアーキテクチャは、マイクロプロセッサやマイクロコントローラに共通して見られる特徴を備えている。これによってBlackfinは商用またはオープンソースの各種オペレーティングシステムを効率的に実行できるようになっている。

メモリ保護ユニット(Memory Protection Unit、MPU)
全てのBlackfinプロセッサに内蔵されている。MPUは、メモリ空間全体について保護とキャッシュ戦略を提供する。これによって、ThreadX、µC/OS-II、Linux といったRTOSやカーネルが動作可能となっている。MPU はいわゆるメモリ管理ユニット(MMU)にあるようなアドレス変換機構は持たないため、仮想記憶やプロセス毎のアドレス空間はサポートしていない。このため、Blackfinでは仮想記憶を前提とした WinCE や QNX のようなOSはサポートできない。なお、Blackfin の文書には MPU を MMU と呼んでいるものが多いので注意が必要である。
ユーザー/スーパーバイザーモード
Blackfinには、スーパーバイザー、ユーザー、エミュレーションの3つのCPUモードがある。スーパーバイザーモードでは、全プロセッサリソースにアクセス可能である。しかし、ユーザーモードでは、システムリソースやメモリ領域を保護できる(MPUの機能を利用)。最近の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 (Media Oriented Systems Transport) Network Interface Controller。MOST は SMSCの登録商標である。
  • PPI (Parallel Peripheral Interface) : パラレル入出力ポート。LCD、ビデオエンコーダ(ビデオDAC)、ビデオデコーダ(ビデオADC)、CMOSイメージセンサCCDイメージセンサその他のデバイスを接続できる。PPIは最高65MHzまでの速度で動作し、8ビットから16ビット幅で構成可能である。
  • SPORT : 同期式の高速シリアルポート。TDM、I2S(Inter-IC Sound)などの転送モードをサポートし、ADC、DAC、他のプロセッサ、FPGA などと接続する。
  • CAN : 自動車や産業用エレクトロニクスでよく使われている広域かつ低速なシリアルバス。
  • UART(Universal Asynchronous Receiver Transmitter): RS-232機器(PC、モデム、PC周辺機器など)、MIDI機器、IrDA機器との双方向通信を可能にする。
  • SPI : 組み込みシステム向けの高速シリアルバス。
  • I²C : 低速シリアルバス。

全ての周辺制御レジスタは通常のアドレス空間内にメモリマップされているため、設定は容易である。

開発ツール[編集]

アナログ・デバイセズは独自の開発ツール CROSSCORE(VisualDSP++)を提供しているが、それ以外にも Green Hills Software の MULTI IDE、Blackfin 向けGNUコンパイラコレクション、National Instruments の LabVIEW Embedded Module などがある。

サポートOS[編集]

Blackfin をサポートするOSを下表に示す。

Blackfin向けOS/RTOS/カーネル
名称 種類 備考
µClinuxディストリビューション オープンソース/GPL 通常のLinuxカーネルに統合されており、各種アプリケーションがある。
ThreadX 商用
Nucleus 商用
Fusion RTOS 商用
µC/OS-II 商用/ソース利用可能
velOSity 商用
INTEGRITY 商用
RTEMS オープンソース/GPL
T2 SDE オープンソース/GPL
VDK 商用 アナログ・デバイセズのリアルタイム・カーネル。VisualDSP++ に同梱
TOPPERS/JSP オープンソース μITRON4.0仕様

外部リンク[編集]