さて一方ADIの側であるが、2000年12月にMSAに基づく製品をBlackfinとして発表、2001年6月のESC(Embedded System Conference)でシリコンのデモも公開された。この時発表されたのはADSP-21535、現在の型番で言えばADSP-BF535であり、同年9月28日にADSP-21535と、低価格版のADSP-21532がサンプル出荷開始となった(参考)。ちなみに当初はADSP-21535が300MHz動作、ADSP-21532が200MHz動作として発表されたが、最終的にADSP-21535は350MHz、ADSP-21532は400MHzまで動作周波数が引き上げられている。
さてそんなBlackfinのコアの構造が図3である。SHARCとの最大の違いはVILWではなくSIMDベースな事だ。いやSHARCも第2世代では演算ユニットが2つに強化され、この2つをSIMD的に同時に稼働させられる様になっているが、1つの演算ユニットに対する命令フォーマットはVILWのままである。
図3:レジスタ(R0〜R7)は基本32bit長だが、16bit×2に分割も可能。ちなみにここには記載されていないが、40bit ALUにA0/A1という40bitレジスタが用意されており、これはA0/1.L・A0/1.H(それぞれ16bit)以外にA0/1.X(8bit)に分割されている[クリックで拡大] 出所:ADIこれに対してBlackfinというかMSAではVLIWを利用せず、演算ユニット内部がSIMD的に動作する。まず下側の演算ユニットだが、40bit ALU(16/32/40bitの算術演算+論理演算が可能)が2つで、そこに16×16のMACユニットがそれぞれ付属(ALUを動かす時だけ利用できる:逆に言えばALUを動かさないと使えない)。さらにShift/Rotate/Bit演算可能なバレルシフタも2つ付く。あと図3で、16bitのMACユニットの両脇に8bitのALUが並んでいるが、これはVideo ALUと呼ばれるもので、最大4つのALU演算を1cycleで実行可能だ(図4)。ついでに付け加えておけば、Blackfinは固定小数点演算のみのサポートで、浮動小数点演算はサポート外である。これもSHARCとの大きな違いと言えるだろう。
図4:このVideo ALUがそのままの名前でManitoba/Hermonに搭載されたかは不明だが、例えばEcho Cancellationなどは8bitで足りるので、機構そのものは搭載されていたものと思われる[クリックで拡大] 出所:ADI次がアドレス生成側であるが、DAG(Data Address Generator)が2組あり、2つのALUやMACユニットに対し、異なるデータアドレスを指定できる。これに伴い、Fetchユニットも2組あって、独立したアドレスからのデータ取り込みが可能だ(図5)。面白いのがレジスタセットで、ポインタ用のGPR(General Purpose Register)に加え、DSP風に使えるIndex Register、それとFrame Pointer/Stack Pointer/USP(User Stack Pointer)が用意されている。面白いのはI/L/B/Mの各レジスタである。IはIndex Address、LはLength Value、BはBase Address、MがModify Valueの意味であり、このうちBおよびLはCircular Bufferの定義に利用できる。
図5:ただのSPは、Programming ReferenceによればSupervisor SPという扱いになっており、ユーザープログラムからアクセスすると例外が発生する。ちなみにByte OrderingはLittle Endianである[クリックで拡大] 出所:ADIProgramの制御は図3で右端にあるControl Unitで行う。ProgramのFlowとしてはLinear(先頭から順に処理してゆく)/Loop/Jump/Subroutine/Interrupt/Idleが用意されている。Stack Pointerがレジスタ一つだから、SubroutineやInterruptのネストは対応が困難だろうが、Subroutineに関してはDSP Programでそうした事が発生する可能性は少ないから問題は無いという事だろう。一方InterruptなどのEventに関しては、Core Event Controllerというユニットが最大16個のEvent Queueを保持しており、これを利用して順次処理する格好になるので、それほど問題にはならないと判断されたようだ。これらの制御のために、Control Unit内のSequencerにも複数のRegisterが用意されている(図6)。
全体としてのパイプライン構成は10段になっており、それもあって最初のADSP-21535はTSMCの0.13μmプロセスを使いながら300MHz(のちに350MHz)まで動作周波数を引き上げることができた(図7)。ちなみにこの数字がどの世代の製品のものかは不明だが、ADIはBlackfinの効率を0.23mW/MHzと説明しており、これを当てはめると350MHz駆動のADSP-21535の消費電力はわずか80.5mWにすぎない。パイプライン段数の割に消費電力が低いのは、やはりDSPだからだろう。
Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング
コーナーリンク