この『マイコン屋』のシリーズでは、古典的なマイコン(マイクロコントローラ)として「ROM, RAM, CPUとペリフェラル(I/O)」をワンチップ(シングルチップ)に集積したものだよね、ということにこだわって来たのです。しかし、このごろ段々、そういう範疇に収まりきらないブツが増えているな、と感じとります。そろそろ考え直すべき時期なのか?
※「鳥なき里のマイコン屋」投稿順Indexはこちら
まずは、最近、投稿したもので「いままでとちょっと外れている感」がする奴らを上げてみましょう。
(71) Kendryte K210 シングルチップとしてはプログラムROMはありません。モジュールとしてはFlash ROMまで搭載しており、そこから、チップ内のRAMにブートして実行します。
(70) ESP32 やはりFlashは別チップ。
結局、違和感の原因はFlashにあることが分かります。Flash搭載していないのにマイコン扱い、というところ。ただ、上の2つ程度であれば、どちらもマイコン屋としては歴史ないし、とか言って済ませていられますが、以下のプレスリリースなど読むとそうも言っていられないことが分かります。
NXP、新時代の幕開けとなるGHzマイクロコントローラを発表
NXPといえば、マイクロコントローラの本流の一つと言って間違いないでしょう。そのプレスリリース読んで分かることは、この「マイクロコントローラ」Flash ROMなど積んでいないのです。確かに使用しているCPUコアは、Arm Cortex-M系列(といっても高性能のM7)でマイコンのコアの系統ではあるのです。しかし、スペックは限りなくSoC、動作周波数は1GHz。アプリケーションプロセッサに近い。もともとアプリケーションプロセッサだった筈のi.MX系統なので当然といっちゃ、当然ですが。それを、
CROSSOVER MCU
などという名に読み替えて、MCU扱いしておるのです。
そんなFlashの邪魔者扱いの理由、分からんでもありません。(昔、誰かが、これからはオールFlashとか言っていた時代が、Flashマイコン絶頂の頃だったんでしょうかね。Flashマイコン隆盛の影で消えていったのがMask ROMマイコンでしたが)大きな理由をあげると2つくらいでしょうか。
-
- Flashは遅い
- Flash製造プロセスは進歩がちと遅い、信頼性とかも辛い、それにCPUとかアナログとか混載するのはもっと辛い。
まず、Flashマイコンでプログラムしたことある人なら実感あると思うのですが、速度が遅い。同じプログラムをRAMの上で走らせることができるなら、Flash上から実行するより大分速い。なぜなら、Flash ROMへのアクセス、何ウエイトも入っているから。この辺は、Flash上から直接コードを実行する型式のマイコンはどこも苦しんでいる問題じゃないかと思います。Flashの速度がボトルネックになってCPUのクロックを上げても性能が思ったほど上がらないのですね。それに対する大まかな対策も2つくらいに分類できそうです。
-
- キャッシュを搭載する
- コード専用のSRAMを設ける
キャッシュを搭載するのはメモリの速度とCPUの速度のギャップを埋める王道です。しかし、いつも「同じタイミング」で動いて欲しいと思われている制御用のマイコンでは変動要因を抱えることになって好ましくない場合もある、と。その上、価格の厳しい組み込みの世界なので、キャッシュ容量など最低限にしたい。(パソコン用のCPUなどほとんどキャッシュにお金を払っているようなもの?)
一方、Flashに比べたらナンボか早いSRAM(キャッシュの本体もSRAMといえばそうですが、シンプルなSRAMの方が容量あたりのコストはお安い)にクリティカルなコード展開してしまえばよいじゃん、というのが後者じゃないかと思います。ただし、ミソはデータ用のSRAMと兼用しないこと。データと同じところにコードを置いても実行はできますが、コードアクセスとデータアクセスがケンカをしてしまうので足を引っ張り合ってしまう。そこで、コードとデータ、別々のバスでアクセスできるように配置をして速度を稼ぐというのが定番でしょうか。
この辺、カッコいいネーミングでうまくやっているように見えるのがSTマイクロエレクトロニクス社です。キャッシュの方は、ARTアクセラレータというお名前ついています。SRAMの方は、CCM-SRAM ルーチンブースタです。なにか凄そう。でもドキュメントを見る限り、ARTアクセラレータはささやかなサイズのキャッシュに、ちょっとプリフェッチャとの「コラボ」いれた感じのものです。デフォルトではプリフェッチャOFFらしいですから、ほぼキャッシュ。ルーチンブースタの方も、ぶっちゃけコード専用のSRAMに違いありません(ま、データ置くことも不可能ではないようですが)
一方、真正面からFlashの速度の遅さに挑んでいるかに見えるのが、日本を代表するマイコンメーカ、ルネサスエレクトロニクス殿です。いまやフラグシップ・マイコンになったらしい、RXファミリの最上位機種ともなると
Flashメモリ、120MHz動作でゼロウエイト
かなり速いっす。同じ会社の他の製品で何ウエイトも挿入しないとその速度はでないものもありますけど。しかし、RXの上位品種は240MHzとかもある。そのときはキャッシュ併用のようです。その上、元が120MHzでノーウエイトのFlashなので、ミスっても1ウエイト?本当か?
まあ、各社、Flash対策いろいろやっておりますな。
一方、フラッシュのプロセス的な問題も中々根深いものがあります。Flash ROMの書き換え保証回数、各社のデータシート見れば書いてあると思いますが、1万回くらいですかね。あまり少ないと、開発ボードで書き換えしている間にヘタってしまうしね。(毎日何十回も書き換えたりするし。。。)それだけでないですな、最近は車載など頭にあるから、動作温度範囲広いし、その高温のところで10年、20年、記憶を保持しつづる保証、大変そうです。そのフラッシュだけでも十分大変なのに、マイコンと言えば、ADコンバータとかアナログ系もアリ。そういう混載可能にするのはまたまた大変そう。別チップにしてモジュールで一個にする方が、よっぽど簡単かもしれません。このごろはパッケージ技術発達しているし。
やっぱり、マイコンの条件、Flash部分は多少緩和かな。。。