無料ブログ作成サービス JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | - | - | pookmark |
TI製フリーのライブラリについて
JUGEMテーマ:コンピュータ

さて、しばらく更新をさぼっていました。
すいません。
今日はハードではなくソフトウェアの話をしたいと思います。
まずは無料のものから。
TIのwebサイトからは、64x、67x各種コアに対応したライブラリをダウンロードして
無償で、ライセンスフリーで、使うことができます。
以下の4種類。
(1)DSPLIB
(2)IMGLIB
(3)FastRTS
(4)IQMATH
いづれもダウンロードするとライブラリとヘッダファイルとマニュアルのほかに
サンプルコードなんかもあります。
(1)のDSPLIBは、FFT,IIR,FIRといった、信号処理に使われる関数が入っています。
入出力のデータ型や、信号処理方式によってたとえばFFTでも数種類の関数が収録されて
います。
(2)は画像処理で使われそうな関数が収録されています。
JPEGなどで使われるDCTやウェーブレット変換、エッジを際立たせるSobelフィルタなどです。
(3)FastRTSは67x用のライブラリでは三角関数や対数演算の関数が収録されています。
64x用では浮動小数点⇔固定小数点の変換ライブラリが収録されています。
(4)最後のIQMATHはつい最近発表されたライブラリです。
もともと、C2000のDSPで存在していたようですが、これをC6000に移植したものの
ようです。
固定小数点のコアで、浮動小数点演算を、より簡単に行うためのライブラリです。
固定小数点では、多ビットの乗算などで、演算結果の精度を気にする場合、
小数点の位置をユーザーが意識しながらシフト演算などで桁の調節をしますが
この小数点の位置をQ値(Q-value)という値で表します。
IQMATHライブラリではこのQ値を関数の引数やdefineなどで簡単に調節できます。
またfloatで宣言した変数を一時的にQ値で読み替えて演算することができます。
こうすると何が良いか?
64xコアは固定小数点コアです。
プログラムソースでは普通にfloatやdoubleが使えますが、もともとが32bitの固定小数点コアなので演算自体は遅くなります。
そこでこのIQMATHを使うことで67xコアと同一クロックで比較してもそこそこ、
floatのまま演算するよりもかなり高速に、演算することができます。

というわけでおやすみなさい
| 了一 | DSP関連のソフトウェア | comments(0) | - | pookmark |
ペリフェラルの素性について
なんか時計ばかりなので、DSPの話題を。
DSPには当然ながらいろいろなペリフェラルが付いていますが
これは大雑把に下記のように分類できます。
(1)昔から付いているもの
(2)最近付いたもの
(A)ほとんどのDSPについているもの
(B)特殊なもの
あたりまえな分類ですいません。
DMA、CPU(コア)、内部メモリは搭載が当然なので省きますと、
(1-A)としては
・McBSP
・McASP
・EMIF
・HPI(PCI)
・Timer
・GPIO
この辺のものはC6000だけでなくC5000などにもあって
とてもベーシックなものです。
(1-B)としては
・VCP,TCP
・UTOPIA
この辺ものは、C6000DSPがテレコム系のアプリに
よく使用されている関係で付いているものと言えます。
(McBSPのA-law(ロウ)/u(みゅー)-lawもそうですね。
これらは、音声帯域のフィルタです)
(2-A)としては
・DDR I/F
・EMAC/GEMAC
・VideoPort/VPSS(VPBE/VPFE)
(2-B)としては
・ARM9、Cortex-A8コア
・CAN
・PWM
・VLYNQ
・UART
・SPI
・I2C
※I2C、SPI、UARTの機能はMcBSPやMcASPの
レジスタの設定によって実現可能です。
UART、SPI、I2Cが付いていないDSPでも、McBSPや
McASPがあればI/Fすることができます。

ということで、特定の特殊なペリフェラルを使うのでなければ、
(1-A)、(2-A)あたりを押さえられれば新しいDSPが出てきても
動揺が少なくて済みます楽しい
この辺のペリフェラルはマニュアルも日本語化が進んでいますし。

マニュアルですが、TIのドキュメントはマニュアルも含めて大量にあります。
私も初めてTIDSPをはじめたときは面食らいました。
というかほとんど拒否反応に近いものでした。ショック
しかし、(1-A)などはデバイスが変わってもほとんど機能には変化はありませんので
この辺の日本語マニュアルを見るところから馴れてみてはいかがでしょうか?

TIのドキュメントには3種類ほどカテゴリがあります。

1つはデータシート、エラッタです。
これは、そのデバイス固有の情報です。データシートには
ピンの名前や番号、レジスタのアドレス、メモリマッピングや信号タイミング、
パッケージの寸法などはすべてこれに記載されています。
エラッタにはそのデバイスで見つかったエラー情報が書かれています。
使いたかった機能が実はそのレジビジョンでは使えなかったということがないように
しっかり確認することが必要です。
特にハードウェアの設計では、取り返しが付かないこと(たとえばピン処理を間違って
デバイスが正常に動作しない、しかもBGAパッケージで、ピンが基板上に出ていない
といった場合、手も足もでません。。。)になりかねませんので、常に最新のエラッタ
情報がないかどうか確認しましょう。

次にユーザーズガイドというSPRUというファイル名で始まるPDF群があります。
ユーザーズガイドは、ペリフェラルについてのマニュアルです。
McBSPならMcBSPとしてマニュアル化されています。
その文書内で、641x向け、67x向けと具合に、動作に違いがあるところ、
レジスタ内容に違いがあるところで書き分けられています。

最後はアプリケーションノートです。これはSPRAというファイル名で始まります。
これは
・その時期
・そのデバイスで
・実現できたこと
がレポート形式でまとめられています。
たとえばDSPとNECのマイコンを接続するといったかなり具体的な情報です。
場合によってはサンプルプログラムがあります。
当てはまる事例があればかなり有用です。
ただし、内容はあくまで、
・その時期
・そのデバイスで
・実現できたこと
なので、デバイスが変わったり、リビジョンがあがったりなどの要因で
現在にはそぐわない場合もあるので注意したほうが良いでしょう。

TIのDSPのドキュメントはこの3種類に分類されます。
日本語化してある文書は上記のSPRAやSPRUではなく、SCJなどのファイル名に
なっていたりするので注意してください。


| 了一 | ペリフェラル | comments(0) | - | pookmark |
インターナショナル・リスト・ウォッチ No.17 (17)
えぇ。時計が好きです。
本格的に好きになったのは高校生のころ。その原因のひとつがこれ。
www.nigensha.co.jp/auto/bk_info.html?1007&INF=126
インターナショナル・リスト・ウォッチという洋雑誌の日本エディションです。
第一号から買い始め、10冊ほど買ったところで、それほど内容に
変わり映えしなくなったのでやめました。
しかし、第一号の表紙のクロノグラフをご覧ください。
すばらしいクロノグラフです。普通のデザインで。
穴が開くほど眺めました。
どうやら私は普通のデザインに惹かれるようです。
銀河鉄道999の鉄郎が食べるラーメンがすごくおいしそうに見えるのですが
関連はあるのでしょうか。
話がそれましたが、このインターナショナルリストウォッチという雑誌は
なんたら読本のようなムック本とは違い、半分以上を時計の格安販売の
広告で埋め尽くされていたりしません。
薄いながらも、内容が濃く、反復して読むのに十分耐える文章と良い写真です。
| 了一 | 時計が好き | comments(0) | - | pookmark |
【質 DS KATOU】替ベルト付き!! MHR マハラ MAHARA オートマ 黒文字盤 メンズ
時計が好きです。
本格的に好きになったのは高校生の頃です。
原因の1つがこのブランド。マハラ
もう今はありません。
(フランク・ミューラーに買収されたとのことですが
新作が出てこないので、今はもうないと言ったほうが良いでしょう)
高校生だった私は、なぜかこのメーカーに強く強く惹かれました。
理由はよくわかりません。。。
到底自分以外の人は納得しないでしょうが、
「普通の趣味の良いデザインに、良い機械を積んで、高い価格で出した」
というところでしょうか。。。
カタログを穴があくほど眺めました(カタログのできが良かったのかもしれません)
カタログには、メンズ、ボーイズ、レディースと、それぞれのモデルに
大きさが取り揃えてあって、交換ベルトが標準でついていました。
(革ベルトとリネンベルト、オプションで金属ベルト)
MONOマガジンという雑誌もこの時計メーカーとWネームで時計を出したようです。
最後に見たのは、2005年だったか、銀座の松坂屋のMONOショップでした。
懐かしいのと同時に、実物を見たのはそれが最初で最後でした。。。
カタログをもらったのですが、妻に捨てられてしまいました。。。悲しい
オークションなどに時折出品されます。
一番好きだったのは、スパルビエロというモデルの、白文字盤、黒数字の
18Kとステンレスのコンビケースのタイプでした。
これに茶色のレザーベルトが付きます。
リゾート向きの時計だと思います。
リネンの白いシャツに、白いコットンのパンツの裾を少し捲り上げて
ちょっと風が強めの、日没間近の海岸を歩くときなんかにどうぞ。
手にはワインボトルなんか持ったりして。晴れ
反対の手には「遠い太鼓」の文庫本なんか持ったりしてかたつむり
| 了一 | 時計が好き | comments(2) | - | pookmark |
OMAP35xの発表
JUGEMテーマ:コンピュータ

OMAP35xという新しいDSPの製品群が発表になりました。

OMAPという名前は、C5000DSPのラインナップでありました。
C5000+ARM9というマルチコアのデバイスです。また、携帯電話向けなどで
OMAPという名前をニュースサイトで見ることがありました。

今回のOMAPの新しい機能の紹介です。
まずARMコアですが、これがDM6446などに採用されていたARM9から
CORTEXトレードマーク A8というものに変わっています。
動作周波数も従来のDM6446/DM6443では297MHzでしたが、
これはその2倍の600MHzです。

今回発表された製品は4製品です。機能で分けると以下のようになります。
ARMのみ
 OMAP3503
ARMと2D/3Dグラフィックエンジン
 OMAP3515

ARMとC64x+のデュアルコア
 OMAP3525
ARMとC64x+のデュアルコアと2D/3Dグラフィックエンジン
 OMAP3550

グラフィックエンジンというのが新しいですね。
OpenGLにも対応しているそうです。
DM6446/DM6443などについていたビデオ入出力ポートにおそらく似ていると
思われるビデオ入出力関係のペリフェラルがついています。
(ISP、DisplaySubsystemという名称です)

そのほかのペリフェラルで特筆すべきところはUSBでしょうか。
OTGが1つ、Hostが2つで、合計3つのUSB2.0インターフェイスを持っています。
またUARTの1つはIrDAに対応しているそうです。
(IrDAに対応しているとは”具体的に”どういうことかという点については
勉強不足でまだわかりません。。。悲しい

DM6446/DM6443でもSDやMMCのインターフェイスはありましたが、このOMAPも
3つもI/Fがあります。

McBSPという汎用的なシリアルポートがこのデバイスにもついていますが、
従来は1bit程度しかバッファがなかったのですが、このOMAPのMcBSPは512Byteの
バッファを持っています。
(これでほんとにマルチチャンネル”バッファード”シリアルポートですねグッド

このチップ自体、CBBというパッケージではメモリスタックに対応していて
まさにPDA向けな製品だと思います。
IntelではATOMというのも出てきましたが、ペリフェラルリッチなのは
こちらかもしれません。(ATOMの詳細はまだ調べていないのでわかりませんが)
ATOMとの比較も時間があればやってみたいところです。

以上です。

| 了一 | あたらしい製品情報 | comments(0) | - | pookmark |
HPI
C6000 DSPのHPIというペリフェラルについて書きます。
HPIはHost Port Interfaceの略です。
これはC6000に限らず、C5000DSPにもついています。
機能としては、DSPのアドレス空間に対して、外からアクセスすることが
できるというものです。
C6000シリーズのDSPは、プログラム用、データ用と分かれておらず、
フラットなメモリ空間を持っています。
0番地からFFFFFFFF番地までの間に、内部SRAMやEMIFの4つの外部領域や
各ペリフェラルのレジスタまですべてマッピングされています。
ということで、HPI経由で接続されたホストマイコンから、これらすべてに
対してリード/ライトすることが可能です。(キャッシュ関係のレジスタなど
一部例外はありますが)

前回ブートのところで書いたように、ホストマイコンがこのHPIを使って
DSPのメモリ空間にプログラムを書き込み、ブートさせることができます。
また、HPIは結構高速なバスです。使い方やデバイスにもよりますが
100MB/s程度は出せます。そのため、ホストから画像データをDSPに接続された
SDRAMに書き込むなんていう使い方もできます。

注意点としては、HPI経由でDSPのすべての領域に対してアクセスが可能なので、
ホストのプログラムが間違ってDSPのリザーブエリアにアクセスしてしまったり
意図しないレジスタ操作をしてしまわないように、ホストのプログラムを作成
する必要があります。

HPIはホストからはDSPをSRAMのように見立てて接続することができます。
接続例は、TIのWebのアプリケーションノートやユーザーズガイドを見るのが
良いと思います。下記のようなドキュメントも参考になるでしょう。
http://focus.tij.co.jp/jp/dsp/docs/dspsupporttechdocsc.tsp?sectionId=3&tabId=409&abstractName=spra536b

アクセスシーケンスは、ホストから以下のDSPの3つのレジスタに対して操作をします。
HPIC
HPIA
HPID
HPICはコントロールレジスタです。
これから行うアクセスがリードかライトか、自動的にアドレスをインクリメントさせるか
といった設定を行います。
HPIAはアドレスレジスタです。
ホストがリードやライトをしたいアドレスを書き込みます。
HPIDはデータレジスタです。
HPIAで指定したアドレスのデータをホストからリードやライトをします。
以上のように、アクセスシーケンスとしては3ステップあります。
これではあまり高速ではなさそうですが、アドレスの自動インクリメントモードを
指定すると、HPIC、HPIAに対しては最初の1度だけの設定で、後はHPIが自動的に
アドレスを増やす(減らす)ながら指定されたアドレスへのリードライトを行います。
これは、画像データやレジスタなど、
まとまったデータをリードやライトしたいときなどに有効です。

さて、HPIからのアクセスとDSPのコアからのアクセスが、同じ場所に同時に起こったら
どうなるのでしょうか?
後からアクセスしたほうが待たされます。
DSPコアが待たされる場合はストールします。HPIが待たされる場合はHRDYというレディ
ピンがアサートされ、ホストマイコンにNotReadyを伝えます。
基本的にはプログラムで、コアとホスト両方が同時に同じ領域にアクセスすることを
回避したほうが、こういったことに頭を悩ませる必要がないのでお勧めです。

HPIにはいくつかの種類があります。
HPI16
HPI32
これはC641xやDM641/DM642についているHPIです。
もっともポピュラーなものでしょう。
16や32はHPIDのバス幅です。DSP自身は32bitのデータ幅なので、
HPI16のときはHPIAやHPIDには2回アクセスが発生します。
UHPI
これは6727や6455といったデバイスについているHPIです。
基本的にはHPI16やHPI32と変わりませんが、拡張されたモードとして
アドレス、データ分離モードというのがあります。
HPI16やHPI32では、データ線をアドレスとデータで共用しています。
UHPIではこのモードのほかにデータ線とアドレス線を物理的に
分離して配線することができるモードをサポートしています。
これにより、ホストからは本当にSRAMのような感覚でアクセスを行うことが
できます。

以上HPIでした。



| 了一 | ペリフェラル | comments(0) | - | pookmark |
ショパール ミッレミリア GTXL パワーコントロール / Ref.16/8457 【新品】【送料無料】
ショパールCHOPARDです。
近年LUCという名前で自社ムーブメントを生産することに成功しました。
この会社はあまりポピュラーではありませんが、ハッピーダイヤモンド
などの宝飾時計を作っていたころから渋いメーカーだなーと思っていました。
このミッレミリアは名前のとおり、クラシックカーレースのスポンサーの
関係で出ている時計です。
お値段はLUCムーブメントのものより安いです。
そして、多機能です。でも分厚いです。
オメガのスピードマスターやブライトリングと悩まれる方もいるかもしれません。
写真はラバーバンドだと思うのですが、これが面白くて、なんとバニラのにおいが
ついているのです。ゴム臭は一切ありません。
よいデザインと機能と価格を詰めていって、最後にベルトに1つアクセントを付ける。
最近高級家電というものもありますが、高機能高品質に、さらにもうひとアクセントで
心をホクリとさせる、製品を通して作る側と使う側がコミュニケートする瞬間というのも
大事だと思うのでした。

しかし、ショパールでお勧めなのはLUCムーブメントの時計です。
ネットで扱っているのはほとんどみません。
唯一吉祥寺の帝國堂さんくらいでしょうか。
『L.U.C』16/1905の質感は、すばらしいです。


| 了一 | 時計が好き | comments(0) | - | pookmark |
C6000DSPのブートについて
C6000DSPのブートについて。
どんな検索ワードでこのブログが探されているかを管理画面で見ることができまして、
そのなかにブートというキーワードでここまで来られた方がいるようなので、今回は
ブートの話。

C6000DSPはチップに内部にFlashROMなどプログラムを書いておけるエリアを持ちません。
C2000やMSP430というマイコンはFlashやOTPを内蔵しています。
C6000DSPのメモリはゼロ番地から内部SRAMが始まり(ゼロ番地からかどうかは
最近ではデバイスによりますが)、外部メモリ(EMIF)や、各種ペリフェラル設定の
レジスタまで、すべてフラットな1本のアドレス空間に存在します。

DSPは電源とクロックが供給され、リセットが解除されると、
まず最初にブートモードを決めるピンの状態を読みに行きます。
ブートモードは一般的に3種類ほどあります。
(1)ROM Boot
(2)PCI/HPI Boot
(3)NoBoot

それぞれのモードでDSPの動作は若干異なりますが、要点としては、
DSPはリセット解除後にゼロ番地からプログラムの実行を始めます。
しかしゼロ番地はSRAMで、リセット解除後は何もプログラムが書かれていません。
ブートモードは、このSRAMのエリアにどのような方法でプログラムを転送するのか
を決めるものです。

(1)ROM BootはEMIFの所定のCE領域に接続されたFlashメモリなどから
DSPのEDMAが自動的に内部SRAMへプログラムを転送するモードです。
ユーザーはDSPのプログラムをFlashROMに書き込んでおけば、リセット解除後に
DSPが自分でプログラムを内部SRAMに転送し、転送完了後にゼロ番地から実行を
はじめます。
制限としては、Flashメモリなどから転送できる最大サイズが0x400(1KByte)という
点です。これを超える転送はできません。
そのため、ユーザーが作成したプログラムが1KByteを超える場合(最近は大抵越えますが)
2段階ブートという手法をとります。
要するに1段目には2段目(ユーザープログラム)を転送するためのプログラムを
書いておき、ROM Bootで1段目をロードし、1段目のプログラムで本体のプログラムを
展開するという形を取ります。

(2)HPI/PCI Boot
これは、外部メモリにプログラムを置いておくのではなく、マイコンなど
ホストからDSPのメモリにプログラムを転送して、転送完了後DSPに
トリガを与えることでDSPが実行を始めるモードです。
DSPのほかにマスタとなることができるプロセッサがあれば、この方法が可能です。
HPIやPCIというペリフェラルはDSPのメモリ空間のほとんどすべてにアクセスが
できるペリフェラルです。すべてですので、ホストからDSPのペリフェラルレジスタに
値を設定することも可能ですし、DSPに接続されたSDRAMにアクセスすることも
可能です。
このブートモードでは1KByteという制限はありません。

(3)No Boot
このモードは、要するに何もしないというモードです。
デバッグ、開発の時に使います。
DSPは何かしらブートモードが設定されているとそこからプログラムをロードして
実行しようとしてしまいますので、場合によってはバグの原因となるレジスタ設定も
してしまう可能性もあります。 このモードに設定することでそうしたプログラムの
実行を停止させ、JTAGによるデバッグをしやすくします。

以上がC6000DSPの主なブート方法です。
デバイスによってはこのほかにSPIブートやSRIOからのブートをサポートするものも
あります。




| 了一 | ペリフェラル | comments(0) | - | pookmark |
チップインプレッション!第一回 TMS320DM648/DM647その2
だいぶ間が開いてしまいましたが、チップインプレッションの第2回目ということで、
引き続きDM647/DM648について。
(1)映像向けペリフェラルペリフェラル(ビデオポート)について
DM647/DM648のビデオポートは型名が3桁のことからも想像されるように、DM642系の
ビデオポートに似ている。DM644xやDM643xのVPSSとは性格が異なる。ここでは
DM647/DM648のビデオポートとDM644xやDM643xのVPSSとを比べながら紹介してみよう。

まず、名前についてだがDM644xやDM643xの映像向けペリフェラルはVPSSと呼ぶ。
これはVideoPortSubSystemの略になっている。対してDM647/DM648は
ビデオポート(VPと略記する)と呼ばれ、DM642のころの名前と同一だ。

VPSSはいろいろなことをH/Wでサポートしている。簡単にあげると
入力側(VPFE):デジタルBT656、YUV、RGB入力
・ベイヤー変換(Bayer→YUV)
・1/4〜4倍までのリサイズ(縦横個別に設定可能)
・Autoホワイトバランス、露出、フォーカス用のフィルタ
出力側(VPBE):デジタルBT656、YUV、RGB出力、アナログ出力
・DAC出力(デバイスによるが最大4ch)NTSC/PAL、SVIDEO、RGB
・OSD機能(Window2枚、OSD2枚、カーソル1枚、バックグランド1枚)
と実に多機能である。

一方VPはというと、16bit幅のデジタルBT656、YUV、RGB入出力ができるものが
5chついている。ポイントは入出力がユーザーの設定で自由に変更できることだ。
VPSSではVPFE、VPBEという名前で、最初から入力、出力が固定である。
DM647/DM648のVPは、たとえば、
1chをBT656で出力に設定。
残り4chをRGBで入力に設定。
として、RGBの映像データを4chそれぞれで受けて、DSPで処理をして
モニタ用にBT656でビデオコーデックに出力、かつJPEGに変換してTCP/IPで
LAN経由でサーバーに送るといったことが可能だ。
また、1つのVPは16bit幅だが、2つのVPを同期させてひとつのVPとして32bitを
入出力させることができる。
逆に、1つのVPを8bitの2つのVPとして分けて、それぞれ別のビデオコーデックへ
接続することもできる。
そのほか、VPではH/WでサポートしていることはVPSSよりは少ないが、
・デジタルBT656、YUV、RGB入出力
・水平方向のみ1/2あるいは2倍のリサイズ
といったものをH/Wで可能だ。
また、VPは内部に5120byteのFIFOを持っている。
レジスタにこのFIFOのスレッショルドを設定する項目があり、スレッショルドに達すると
EDMAなどにイベントを発生させることができる。

DM642のEVMやDM648EVMでは、S/Wでこの機能を使ったVP周りのフレームワークが
サンプルとしてついてくる。このフレームワークのおかげで、ユーザーはVPの
レジスタなどを細かく知る必要はなくなり、このフレームワークが格納、確保した
バッファにある画像データに対して行う処理を集中して開発することが可能だ。

フレームワークの動作はこんな感じ。
VPが映像を受け取ると、VP内部のFIFOに溜まり、スレッショルドに達するとEDMAへ
イベントを発行する。それを受けたEDMAが所定(DDRSDRAM)に確保されたバッファへ
VPのFIFOから転送を行う。これを繰り返す。
お分かりのようにこの処理ではDSPコアの負担はない。すべてVPとEDMAで行われる。
ユーザーはプログラムでは、画像サイズなどの設定をヘッダファイルで行い、
フレームワークの初期化、DDRSDRAMへの画像バッファの確保を行う。
後は、フレームワークが取得した画像バッファへのポインタを得ることができる関数を
使うだけだ。

以上のようにDM647/DM648のVPはDM4桁製品のVPSSよりは多機能ではないが、
多チャンネルで汎用性が高い。
一応VPということで映像を扱うためのペリフェラルだが、RGBを受けるモードでは
単にイネーブル信号がアサートされているときだけデータを受けるというモードなので
ビデオコーデックだけでなく、高速なA/DコンバータやDACを接続することもできるし、
DSP同士をこれでつなぎ、マルチDSPの構成を取った製品もサードパーティから出ている。

VPは入力は最大80MHz、出力は最大110MHzのピクセルクロックで動作させることができる。

以上がビデオポートでした。
ご指摘、ご質問大歓迎です。(いつ反応できるかは保障されませんが、、、てれちゃう





| 了一 | チップインプレッション! | comments(0) | - | pookmark |
チップインプレッション!第一回 TMS320DM648/DM647その1
パソコンでも、車でもファーストインプレッションなどと題してその物を使った感想やポイントを紹介している。半導体にもそんなカテゴリがあっても良いかと思って書いてみる。

まずは、題目のとおり、TIのDSP、TMS320DM648とDM647だ。
このチップはTMS320"DM"648とあるように通称DM型番と呼ばれるカテゴリに属するDSPである。(ちなみにTMS320"C"6416などはCパーツなどと呼ばれる)
DMシリーズはDigital Multimediaに特化したペリフェラルを持つことでCパーツとは異なる性格を持つ。具体的にはビデオポート、EMACなど1チップでアプリケーションを実現できるようなペリフェラルを持つのが特徴だ。リンク先のアプリケーション事例参照
 ところで、今回紹介するTMS320DM648/647と、DM6446、DM6437といった数字部分が4桁のものとは何が異なるのだろうか? そもそもDM型番はDM642/643/641が2002年に発表されたのが始まりだ。この頃はDaVinciテクノロジーといったソリューション名称は冠されず、単にCパーツにDigitalMultimediaに向いたペリフェラルをつけたデバイスという位置づけであったと記憶している。
 このDM642/643/641の後、2005年発表されたのが型名の数字部分が4桁のDM6446/6443であった。DM6446/6443とそれに続くDM643xのDSP群はDM642/643/641とは同じDMシリーズではあるが、ペリフェラルの構成や、ビデオポート(DM644x、DM643xではVPSSと別称している)の内容がかなり異なっている。DMの4桁型番のDSPについてはまた別の機会にインプレッションを書こうと思うので詳細は避けるが、DM642/643/641を使用してきたユーザーがDM4桁型番DSPに移行するのは容易ではない。
 そして、DM648/647が昨年発表された。これはDM642/643/641の正統な後継DSPと言っても良いDSPだ。したがってDM642と比較するとこのDSPの性格を容易につかむことができる。


(1)内部アーキテクチャ(コア編)
DM642はコア(CPU)がC64xコアである。DM648/647はC64x+コアを採用している。
C64x+コアと内部メモリ群はMegaModuleと呼ばれており従来のC64xコアからさらに性能を向上させている。具体的にはコアの性能が新しい命令セットやSPLOOPといった新機能を採用することにより、従来のC64xコアに比べて処理速度で2割増し、コードサイズで2割減の性能を持つ。
 処理速度の向上は主に新しい命令セットの追加の効果による。したがって新しい命令セットを有効に使うことができる処理内容であればC64xコアに比べて2倍の処理速度をたたき出す。コードサイズの削減はSPLOOPやコンパクト命令などの採用の結果だ。C6000シリーズはソフトウェアパイプラインという手法を使って高速に処理を行うため、速度を重視するとコードサイズが大きくなるという特徴を持つ。SPLOOPやコンパクト命令を採用することにより、平均して2割程度、従来のC64xコアに比べてコードサイズを削減させることに成功している。
 またMegaModuleにはC64x+コアのほかにL1、L2という2レベルのキャッシュ構造を持つ。これは従来のC64xコアの構成と同じである。しかしMegaModuleではL1のメモリがC64xコアではキャッシュとしてしか使用できなかったが、これがSRAMとしても設定して使うことができるようになった。そのため、より使用頻度の高いプログラムやデータをL1メモリに配置することで、少ない時間でプログラムやデータにアクセスすることが可能になっている。
 L1がSRAMとしてもコンフィグレーションできるようになったことを受けて、MegaModuleではIDMAという小さなDMAを装備している。これはL1⇔L2間のデータ転送をCPUとは別に行うことができるペリフェラルである。DSPはEDMAというDMAをペリフェラルとして持つが、それとは別のものがこのMegaModule内に入っている。
 そのほかにもメモリ保護機能などいくつかの機能が追加されているが主なところは今述べたあたりになるだろう。ちなみにC64x+コアになっても従来と同様バイナリベースでコード上位互換は保たれている(C64コアで動いていたコードはC64x+でも動作する)



(2)内部アーキテクチャ(内部構成編)
 DM642などC64xコア採用の製品は内部バスとしてEDMAを使う。EDMAはひとつのペリフェラルとして、CPUとは別にデータ転送を行うペリフェラルだが、EDMAがデータ転送を行う以外にも、CPUがMcBSPやEMIFなどへのデータ転送を行ったりする際にもEDMAのバスが使用されていた。
 EDMA自身は物理チャンネルとしては1chで、C64xコアではCPUの半分の周波数で動作する64bit幅のバスである。(この辺のPDFを参照のこと)そのため、DSPの使用状況によってはこの内部バスがボトルネックになる場合もあった。EDMAの転送設定を細切れにするなどといった回避方法が提示されている。
 DM648/647では内部バスアークテクチャにSCRという仕組みが取り入れられている。これは簡単に言うとCPUやHPI、EDMAといったマスタペリフェラル群と、McBSP、EMIFなどといったスレーブペリフェラル群がマトリックス状のバススイッチで接続されたものである。この構成にするとマスタ側とペリフェラル側がそれぞれ異なった相手であれば"同時"にデータ転送を行うことができる。そのためEDMAがEMIFから内部メモリにデータを転送し、CPUがMcBSPからDDRSDRAMへデータを置くといったことを同時に行うことができるようになった。
 SCRではそれぞれのペリフェラルごとに最小データサイズというのを決めている(サイズはデバイスによって異なる)。このため、EDMAなどでわざわざデータ転送の設定をバスアービトレーションしやすいように細切れにするといった配慮をしなくても、SCRがそれぞれのデータ最小単位で転送するので、転送の間隔に隙間があれば、他の転送をそこに挿入するようになった。ユーザーが気をつけねばならない点が緩和されているといってよいだろう。



コアと内部構成で結構たくさん書いてしまった。。
ビデオポートなどのインプレッションは次回ということで勘弁してください。嬉しい

| 了一 | チップインプレッション! | comments(0) | - | pookmark |