BLACKFINプロセッサ・コアの基本

高性能16/32ビット組込みプロセッサ・コアのBlackfinには、10段のRISC MCU/DSPパイプライン、コード密度を高める可変長命令セット、ビデオおよびマルチメディア信号の高速処理命令を備えた強力なSIMD機能が搭載されています。

Block Diagram of the Blackfin Processor Core

汎用レジスタ・ファイル

  • データ・レジスタ・ファイル
  • 8、16、32ビットの符号付きまたは符号なし整数、16または32ビットの符号付き固定小数のデータ型
  • 32ビット読出しパスと2つの32ビット書込みパス
  • アドレス・レジスタ・ファイル
  • スタック・ポインタ
  • フレーム・ポインタ

データ演算ユニット

  • 2つの16ビットMAC
  • 2つの40ビットALU
  • 4つの8ビット・ビデオALU
  • 1つのバレル・シフタ

アドレス演算ユニット

  • メモリ・フェッチ
  • インデックス、レングス、ベース、およびモディファイ・レジスタ
  • 循環バッファリング

プログラム・シーケンサ・ユニット

  • 条件付分岐とサブルーチン呼び出し
  • ネスト可能なゼロ・オーバーヘッドのループ
  • 高いコード密度

汎用レジスタ・ファイル

Blackfinプロセッサ・コアには、演算ユニットが使用する8エントリ×32ビットの汎用データ・レジスタ・ファイルがあります。8、16、32ビットの符号付きまたは符号なし整数、そして16 または32ビットの符号付き固定小数のデータ型に対応します。マルチポート構造のレジスタ・ファイルは、各クロック・サイクルで2回の32ビット読出しと2回の32ビット書込みが可能です。データ・レジスタは16エントリ×16ビットのデータ・レジスタ・ファイルとしてもアクセスできます。

アドレス・レジスタ・ファイルは、循環バッファリングとスタックの操作に対応するほか、汎用アドレッシング機能も備えています。レジスタ・ファイルは8本で構成され、フレーム・ポインタとスタック・ポインタがあります。フレーム・ポインタはサブルーチン・パラメータの受け渡し等に使用し、スタック・ポインタはサブルーチン・コールからのリターン・アドレスの保存に使用します。

データ演算ユニット

データ演算ユニットには、アナログ・デバイセズの過去の16ビット・アーキテクチャのほぼ2倍に相当するシステム・リソースが集積されています。以下の要素が実装されています。

  • 2個の16ビットMAC
  • 2個の40ビットALU
  • 4個の8ビット・ビデオALU
  • 1個のバレル・シフタ

演算リソースはすべて、R0~R7の各データ・レジスタ・ファイルからの8、16、32ビットのオペランドを処理できます。各レジスタは32ビットのレジスタか、上位ハーフまたは下位ハーフの16ビット・レジスタとしてアクセスできます。

SIMDアーキテクチャは1クロック・サイクルで最大2つの32ビット値の読出しおよび書込みが可能ですが、上位ハーフおよび下位ハーフのレジスタR0~R7を個別にアドレス指定できるため(Rx、Rx.H、またはRx.L)、入力データに対する制約なしに、各演算ブロックが2つの32ビット入力値または4つの16ビット入力値のいずれかを選択できます。この演算結果を32 ビット・データとして、あるいは上位ハーフまたは下位ハーフの16ビット・データとしてレジスタ・ファイルに書き込むことができます。さらに、データ・パスごとに累算方式を変更できるため、たとえばA0を定数加算としながら、同時にA1を定数減算にすることもできます。

2つのアキュムレータは40ビット長で、8ビットの拡張精度があります。汎用レジスタと同様に、アキュムレータも16、32、40ビットの各サイズでアクセスできます。Blackfinアーキテクチャはさらに、2つの16、32、40ビット結果、もしくは4つの16ビット結果を生成できる加算/減算結合命令も提供しています。16ビット結果が4つ必要な場合は、上位ハーフと下位ハーフの演算結果を交換できます。この機能は非常にパワフルであり、たとえばFFTベンチマークの結果などを大幅に向上します。

アドレス演算ユニット

2個のデータ・アドレス発生器(DAG)が、メモリから同時に実行する2つのオペランド・フェッチのためのアドレスを生成します。DAGはインデックス(I)、レングス(L)、ベース(B)、モディファイ(M)の4組の32ビットレジスタで構成される1つのレジスタ・ファイルを共有します。このほかに、P0~P5の8個の32ビット・アドレス・レジスタと、変数やスタック・ロケーションの一般的なインデックス用ポインタとして利用できるフレーム・ポインタとスタック・ポインタもあります。

I、L、B、Mの4組のレジスタは、循環バッファリングの実行に使用します。インデックス、レングス、ベースの各レジスタ・セットを併用すれば、内部または外部メモリで独自の循環バッファを実行できます。Blackfinアーキテクチャは、間接モード、オート・インクリメントとオート・デクリメント、インデックス、ビット反転などさまざまなアドレッシング・モードも提供します。アドレス・レジスタはすべて32ビット長で、Blackfinプロセッサ・アーキテクチャの最高4ギガバイトのアドレス範囲に対応します。

プログラム・シーケンサ・ユニット

プログラム・シーケンサは命令の実行フローを制御し、条件分岐とサブルーチン呼び出し、ネストされたゼロ・オーバーヘッドのループ機能を提供します。完全にインターロックされたパイプラインにより、コードが確実に予想通りに実行され、プログラマはデータ・ハザードを気にする必要がありません。この型のパイプラインは、正しい結果を得るために必要ならばストールすることによって、結果の正しさを維持します。これにより、ソフトウェア・エンジニアはパイプラインの遅延に関する細かい問題を理解する必要がなく、プログラミングが大幅に簡略化されます。内蔵インターロッキング・ハードウェアにより、何らかの命令が実行されるときは必ずオペランド・データが有効になっています。

Blackfinアーキテクチャは、制限つき多重発行の64ビット命令パケットのほか、16ビットと32ビット長の命令を提供します。このため、最も頻繁に使用する制御命令をコンパクトな16ビット・ワードにし、高度な算術演算命令を32ビットのダブル・ワードとして符号化することで最大限のコード密度が得られます。

沪ICP备09046653号
感想、意見を送る X
content here.
content here.

感想、意見を送る

閉じる