鳥なき里のマイコン屋(71) Kendryte K210、RISC-V搭載AIチップ

JosephHalfmoon

中国の方でRISC-Vがかなり人気になっているらしいことは伝わってきておりました。それが実感できる、何か「ガツン」とくる実例ないかいな、と思っていたのです。昨日投稿でとりあげさせていただいたK210、なかなか面白いチップであった上に、直ぐに購入できる上にお手頃価格でした。待っている新製品でたら購入の予定。その前にちょっと調べてみました。製造元は Canaan Creative社(北京)で、その会社のAI向けブランド名?がKendreteであるようです。

(K210を使い始めた件はこちら

まずは、Cannan Creative社です。リンクをクリックして会社のホームページへ飛べば直ぐに分かりますが、伝統的な「マイコン屋さん」ではありません。ビットコインなどの仮想通貨(今では暗号資産と書かないといけないのかな?)のマイニング用のシステム、そしてその核となるASICをつくっている会社でした。手前勝手な半導体屋の系統樹上は「ASIC屋さん」分類にさせてもらいたい感じです。仮想通貨のマイニングも一時期の大盛況からすれば、かなり落ち着いて(収益性厳しく)なってきていると想像するのですが、どうなんでしょうか。そういう本業があった上で、流行りといったら何ですが、成長性の見込める

エッジでAI

に攻め込むために作ったチップがK210のようです。もともとマイニング用のASICなどを作っていたことからして、アルゴリズムをハードウエア回路に落とし込むのはお手のものなんじゃないでしょうか。それで作った

SoC

がK210であり、そのCPUとして流行り?のRISC-Vが採用されていると。データシートを見れば、Canaan社はK210をSoCと呼んでおり、「ROM、RAM、CPUをワンチップに載せているのがマイコンだ」という当方の定義と矛盾はしません。といって本稿「マイコン」カテゴリに入れてしまったのは、近年増えている

Flashを含めた「マイコン」モジュール

として販売されているからであります。まあ、シングルチップにFlash積むのも、モジュール内にFlash積むのも使う側から言えば大きな違いじゃありませんし。それに、シングルチップ上にデフォルトのファームウエア書き込むためのOTP 128Kbitが搭載されているのです。OTP(One Time Programming)でも立派なROMはROM、マイコン条件に当てはまります。

さて、K210の仕様をみていく前に、ちょっと気になったことについて引用しておきます。K210系統(まだ1機種しかないが)のブランド名と思われる

Kendryte

という名前の意味です。クリックしていただければ、Cannanの会社のホームページとは別の、この系統の製品のみのホームページに飛ぶことができます。各種の資料やSDKなどはそちらからダウンロード可能(別に、GitHub上にもページがあり、ダウンロードできるようです。Kendryte GitHub )

データシートから1行引用させていただきましょう。Kendryteとは、

Kendryte in Chinese means researching intelligence.

だそうです。明快!

K210

 

TSMCの28nmプロセスで製造された、BGA144パッケージのSoCです。コア電圧0.9V、IOは1.8Vと3.3Vです。CPUはDUALコア、アーキテクチャは 64bit RISC-V IMAFDC(RV64GC)だそうです。動作周波数は400MHz。各コア32KBの命令キャッシュと32KBのデータキャッシュを持ちます。各コア独立のIEEE754-2008互換FPUを持ち、単精度、倍精度浮動小数計算が可能です。除算、平方根はハードウエアです。

メモリSRAMは合計8Mバイト積んでいますが、いくつかの領域に分割されており、並行にアクセスしてバンド幅が稼げるように工夫してあるようです。汎用SRAM 6Mバイト、AI SRAMと呼ばれるコンボルーション演算などを行うアクセラレータであるKPUが主に使う領域2Mバイトの合計で8Mバイト。AI SRAMは、KPUが稼働中はKPUに占有されるようですが、そうでない期間はCPUもアクセスできるみたいです。同一のRAMに2通りのアドレスが割り付けられているようで、一方はキャッシュされ、一方はキャッシュされない仕組みのようです。キャッシュされたくないDMA転送などはノンキャッシュ側のアドレスに押し込むのかな?また、汎用SRAM 6Mバイトはさらに4Mと2Mの2バンクに分割され、それぞれのバンクに並行してアクセスが可能にしてあるようです。

このチップの真のコアと言えるのが、Neural Network Processor(KPU)と呼ばれるアクセラレータです。コンボルーション、プーリング、平均化、活性化関数など計算するためのものです。メインはコンボルーション演算でしょう。ブロックダイアグラムを見ると、パラメータと処理すべき画像などのデータを別々のメモリにおいて並行にアクセスしながら演算ができそうな感じです。なおデータシートには、リアルタイム処理ではパラメータサイズの上限は5-5.9MB、リアルタイム処理でなければ無制限(外付けFLASHのリミット)とありました。

音声系のAIのためのアクセラレータも搭載しています。Audio Processor(APU)と呼ばれるもの。16ビットオーディオの8チャンネル入力データ(ステレオ4チャンネル)対応です。なお、音声系の処理のお供に、FFTアクセラレータも搭載されています。なかなかゴージャスです。APU+FFTには期待したいところ。

流石にアルゴリズムハード化のプロらしく、アクセラレータの搭載はテンコ盛り状態です。セキュリティ系統のために、以下の2つも搭載されています。

  • SHA256アクセラレータ
  • AESアクセラレータ

このチップは、SPI Flash(SDCARDなど)からユーザ・アプリケーション・プログラムを読み込んでSRAMに配置して実行するようになっています。そういう場合には、プログラムの改ざんなどが心配になるものですが、暗号化されたプログラムの解読にAES-128-CBCが利用でき、対タンパ検証にSHA256が使えるとあります。一通りそろっている感じです。

AIと言えば画像がメインなので、画像入力のためにカメラインタフェースを搭載しています。Digital Video Port(DVP)と呼ばれています。ただし、AIアプリはそれほど大きなサイズの画像を不要と見たのか、フレームサイズはVGAサイズのようです。この辺のスタンスはスマホ向けのSoCとはかなり違うように思えます。

また、音声の入力のためには I2S 3チャンネル が使えます。

IO関係は、FPIOA/IOMUX Field Programable IO Arrayなどと呼ぶPinに機能を割り付けるユニットで管理しているようです。やれることは普通のマイコンとほとんど変わらないようにも読めるのですが、ピンアサインとかかなりフレキシブルにできるような雰囲気だしてますが、詳細よくわかりませんでした。プログラミング用のSDKのドキュメントでも読むと分かるでしょうかね。他にマイコン定番のペリフェラルとして、32ビットタイマ3本、SPIマスタ3+スレーブ1、I2C 3チャンネル、DMA 8チャンネル、UART 4チャンネル(うち1チャンネル高速)、WDT、GPIO、PWMなど一通り搭載しています。

このチップのスペックを見てから、このチップの周りにLCDやら2次電池やらカメラやらセンサやら各種周辺部品を満載したM5StickVの「末端小売」価格を調べてくだされ。実にお手頃価格。このチップ、単価いくらで出しているのだかチト恐ろしく思うのは私だけでしょうかね。

そんな強烈なK210ですが、穴もありそうです。アルゴリズムをハード化するご専門の人がやっているせいか、多少、融通が利かないというか、特定のケースに合わせ込んでいる傾向があるのではないかと思われます。今のところ、ハマるケースをソフトツールやWeb上の開発環境等でカバーしているのであまり目立たないで済んでいますが、何でもできるフレームワーク上で制約なく開発したネットワークなどを移植しようなどと考えると引っかかるかもしれませんで。まあ、そのあたり分かった上での仕様と価格かも。M5StickV+出してくだされ、私は待っておりますで(値段もよろしく)。

鳥なき里のマイコン屋(70) Espressif Systems 上場! へ戻る

鳥なき里のマイコン屋(72) マイコンの範疇、揺らぐこのごろ へ進む