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 以上の性能の製品をリリースしないと GPUDSPブロックをたくさん積んだ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