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

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

| スポンサードリンク | - | - | - | pookmark |
←prev entry Top next entry→
チップインプレッション!第一回 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 |
スポンサーサイト
| スポンサードリンク | - | - | - | pookmark |
Comment
name:
email:
url:
comments: