TI C7000 情報
Texas Instruments の C6x シリーズ DSP の後継の C7x について、インターネットで収集した情報を記載する。
C6x シリーズの中でも KeyStone アーキテクチャの C66x コアを載せたDSPの性能は周波数やコア数によって違うけれど、9.6 ~ 179 GFLOPS だそうだ。QMPYSP という命令が 4 個の単精度浮動小数点数の乗算を行えて、M1とM2ユニットそれぞれで実行できるので1クロックに8個の乗算が出来るとすると、600 MHz × 8 だと 4800 MFLOPS なので、乗算だけじゃなくて L1,L2,S1,S2 ユニットで行う DADDSP 命令での加算もカウントしているようだ。メモリから値を読み書きする LDDW と STDW 命令はそれぞれ 8 バイトの読み書きが出来て D1,D2 ユニットで行うので 1 クロックで合計 16 バイトの読み書きが出来る。1クロックに読み込み 8 バイト & 書き込み 8 バイトとかも可能。
1クロックにVLIWでパックして発行出来る命令数は最大 8 命令。なので演算 6 命令もコンスタントに発行しつづけられるわけはなく、「レジスタに読み書きする値を置きっ放しの完全な理論値です、本当にありがとうございました。」的な数値だろう…。実性能はよっぽどカリカリチューニングしないと半値八掛け二割引き。それはともかくこのプロセッサ、融合積和演算命令が無いのが勿体ない…。
http://www.ti.com/processors/digital-signal-processors/c6000-floating-point-dsp/overview.html
https://e2e.ti.com/support/processors/f/791/t/485503?About-the-GFLOPS-number-of-C66x-DSP-
C66x の登場時期を把握していないけれど2010年頃なのかな?製造プロセスは 28nm らしいので、ハイエンドのスマフォに使われるチップが 7nm で製造されている事を考えると電力性能比的にどんどんと時代遅れになってきている。絶対的な性能に関しても、もうすぐ2020年になるんだし 1TFLOPS 以上の性能の製品をリリースしないと GPU や DSPブロックをたくさん積んだFPGAへの置き換えが進んでしまうと思う。
さてTIの次世代DSPの C7x の予想話に戻ると、まもなく 2019年の10月になるけれどC7000 のコード生成ツールのドキュメントがリリースされていた事が最近分かった。
http://www.ti.com/tool/C7000-CGT
まだISAの情報が載ったドキュメントが無いけれど、PCホスト環境でエミュレート実行とかが出来るようにしてるらしい。intrinsics 用のヘッダファイルも色々あるけどなんか記述が中途半端に思えるのは気のせいだろうか? 公式のドキュメントから読み取れる事は色々あるけれど、詳しい内容が知りたいので下記の特許情報を参照する事にした。
United States Patent Application | Kind Code | Title |
---|---|---|
20190095204 | A1 | Cache Management Operations Using Streaming Engine |
20180322061 | A1 | Streaming engine with compressed encoding for loop circular buffer sizes |
20190095205 | A1 | Cache Preload Operations Using Streaming Engine |
20190073222 | A1 | Streaming engine with cache-like stream data storage and lifetime tracking |
20170153959 | A1 | Streaming engine with deferred exception reporting |
20180246855 | A1 | Reconfigurable matrix multiplier system and method |
20180253402 | A1 | Implementing Fundamental Computational Primitives Using A Matrix Multiplication Accelerator (MMA) |
20180246855 | A1 | Reconfigurable matrix multiplier system and method |
2018126099 | A1 | Streaming engine with separately selectable element and group duplication |
20190243646 | A1 | Variable Latency Instructions |
20190188151 | A1 | Two address translations from a single table look-aside buffer read |
20190187986 | A1 | Transposing a Matrix Using a Streaming Engine |
20190187903 | A1 | Streaming engine with fetch ahead hysteresis |
20190171455 | A1 | Streaming engine with stream metadata saving for context switching |
20170168898 | A1 | Streaming engine with error detection, correction and restart |
20190102178 | A1 | Converting a Stream of Data Using a Lookaside Buffer |
20180322061 | A1 | Streaming engine with compressed encoding for loop circular buffer sizes |
20190026111 | A1 | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization |