クリエイター手抜きプロジェクト[641]IoT IchigoJam編 最新版はRISC-V搭載
── 古籏一浩 ──

投稿:  著者:



今回は、久々にIchigoJamについてです。

昨年末、突如新しいIchigoJamが発表、発売されました。製品名はIchigoJam R。Rは新しく搭載されたCPUの名称RISC-Vから取ったものでしょう。

RISC-Vは特定の営利企業に依存しない、オープンソースなCPUです。このため、特定の企業に思惑に振り回されない、ライセンス料金がかからないというメリットがあります。

昨年と言えば、MacのCPUがIntelからApple製に変更になりました。

私も新しくなったMacBook Air(M1)を購入しました。コンピューターのCPUが変わるということは、けっこう大変なことです。人間で言えば、脳みそを入れ替えるようなものだからです。

他のCPUの方が性能がよくても、なかなか乗り換えができないのは、過去のソフトウェア資産やハードウェア設計のノウハウ・動作検証・実績などの資産を、簡単には切り捨てられないからです。

特に、複雑なハードウェアやソフトウェアが動作している場合は、なおさらです。(人間なら、日本で生活し日本語を話していたのに、明日から米国に移住し、英語で話し生活せよというようなものです)

切り捨てたくはないけど、高性能のCPUを使いたいというニーズもあります。この場合、すでにあるCPUと互換性を持ったCPUを作成する方法があります。

互換性のあるCPUを販売している、代表的なメーカーはAMDでしょう。Intel CPU(x86系)と互換性を持ち、より高性能なCPUを発売しています。

・AMD
https://www.amd.com/ja






ちなみに、CPUの命令セット自体には権利は発生しないので、頑張って自作しても構いません。

ここらへん、検索したらASCII.jpに詳しく書かれていました。

つまり、CPUのエミュレーターを作成したりしても、問題はないということです。実際、Z80、6502、80x86など、多くのCPUエミュレーターが存在しています。

・SoC技術論 プロセッサー製作のライセンス料とロイヤリティー
https://ascii.jp/elem/000/000/844/844489/


自分で勝手に設計した、オリジナルのCPUの命令セットを作って公開し、誰かに作ってもらうという方法もあります。ARMやRISC-Vがこれに近いと言ったところでしょうか。

古いところではJavaも似たようなものですが、こちらはCPUだけでなく、仮想マシンとのセットになっています。

https://ja.wikipedia.org/wiki/Java仮想マシン


1995年から2010年くらいまでは、Windows+Intel=Wintelと呼ばれるくらい、Intel CPUが多く使われていましたが、どのジャンルでもIntel CPUが使われていたわけではありません。

パチンコ台などは、8bit CPUのZ80が長い間使用されていたりしましたし(これは割り込みモード2の機能によるところが大きいと思いますが)、スマートフォンでは低消費電力のARMチップが使用されています。

PlayStation 2やNintendo 64などのゲーム機では、MIPSベースのCPUが使用されていました。組み込み系では、Arduinoで使用されているAVRというのもあります。

・Z80割り込み処理について
https://w.atwiki.jp/msx-sdcc/pages/41.html


・Emotion Engine
https://ja.wikipedia.org/wiki/Emotion_Engine


・MIPS
https://ja.wikipedia.org/wiki/MIPSアーキテクチャ


・AVR
https://ja.wikipedia.org/wiki/Atmel_AVR


お隣の中国では、MIPSベースのCPUが開発されています。中国オリジナルの高速なCPUが、設計・量産できれば他国に依存せずに済みます。これは、中国にとっては非常に重要でしょう。

すべて内製化できれば、Appleのような高性能パソコンなどを、超低価格で提供できるからです。また、チップ内に、極秘情報を処理する回路を組み込むこともできます。軍事利用にも好都合でしょう。

https://toyokeizai.net/articles/-/402328

https://business.nikkei.com/atcl/gen/19/00113/062600025/


ちなみに、日本で開発されたCPUもいくつかあり、日立のSHシリーズはわりと有名ではないかと思います。が、ここらへんは、CPUに興味がない人にとっては初めて聞く名前かもしれません。

https://ja.wikipedia.org/wiki/SuperH


国産CPUで、違った意味で有名なものとしては、Gmicroがあります。

これはTRONプロジェクトによるものですが、TRONプロジェクトのほとんどが、アメリカの圧力により消え去ったので、実質、CPUもほとんど生産されず終了しています(iTRONは、その後生き残りましたが)。

ちなみに、Gmicroの本が出ていて、命令セットが掲載された本は買った記憶があります。まだ、家のどこかにあるとは思いますが……。

OS(高レイヤー)も考慮したCPU設計はなかなか面白いのですが、Appleシリコンもそういう側面はあるかもしれません。どのみち、Gmicroの設計思想だと早々に行き詰まる感じはします。

https://ja.wikipedia.org/wiki/TRONCHIP

http://umdb.um.u-tokyo.ac.jp/DKankoub/Publish_db/1997DM/DM_CD/DM_TECH/BTRON/PROJ/CHIP.HTM


スーパーコンピューター(スパコン)なら、さぞかし凄いCPUが使われていると思われそうですが、15年くらい前からパソコンと同じCPUが使われています。

現状ではCPUパワー(演算速度)にかかる時間よりも、それぞれのCPUなどとやりとりする方が時間がかかるようになってしまっています(以下のインターコネクトのURL参照)。

CPUだけ速くても、全体の処理を高速化できません。ここらへん、AppleのM1チップが高速なのは、ネックとなる相互接続を高速化したせいではないかと思います。

・スーパーコンピューター「京」のインターコネクトTofu
https://www.fujitsu.com/downloads/JP/archive/imgjp/jmag/vol63-3/paper05.pdf

https://www.fujitsu.com/jp/about/businesspolicy/tech/k/whatis/network/


ちなみに日本のスパコン富岳では、スマートフォンと同じARM系のCPUが使われています。
https://ja.wikipedia.org/wiki/富岳_(スーパーコンピュータ)


このARM系のCPUを開発・設計したのは富士通です。富士通といえば、長年SPARCチップを作ってきた会社です。

SPARCチップは、今はなきサンマイクロシステムズが開発・設計した、RISCチップ(CPU)です。このSPARCチップ(と多分MIPSも…)の成功により、CPU設計はRISCへと向かっていくことになります。

https://ja.wikipedia.org/wiki/SPARC

https://ja.wikipedia.org/wiki/MIPSアーキテクチャ


SPARCチップには、レジスタウィンドウという面白い仕組みもあります。高級プログラミング言語(C言語など)での呼び出し時に、スタックにデータ&戻り先アドレスを積む処理があります(CPUには積まれたデータのアドレスを示す、スタックポインタというレジスタがあります)。

通常関数を読み出す場合、パラメーターなどの値はメモリにデータを格納(スタック)します。しかし、メモリにデータを格納すると、遅くなってしまいます。

メモリではなく、CPU内にあるレジスタを使えば、非常に高速に処理できます。レジスタが数多くあれば、より高速化できることになります。

しかし、単にレジスタが多いだけでは、関数呼び出しを高速化できません。そこで、データをレジスタに入れて参照するレジスタアドレスをずらして、高速化するという技がレジスタウィンドウです。

つまり、呼び出す関数に渡すデータのレジスタを呼び出された側の関数では引数となります。(どのレジスタが見えるかをずらすので、こうなります)

・レジスタウィンドウ
https://ja.wikipedia.org/wiki/レジスタ・ウィンドウ


スタックによる処理は長年使われていて、便利な部分もあるのですが、困った部分もあります。

特にスタックがあふれるスタックオーバーフローにより、プログラムが停止したり、セキュリティ問題を発生させるフックになったりします(呼び出し元に戻るアドレスをスタックに積んでおくことで、任意のプログラムに移動し実行させることができます)。

ちなみに、データ処理的にはスタックではなくキューにした方が、データがあふれにくくなります。

・スタック
https://ja.wikipedia.org/wiki/スタック


・キュー
https://ja.wikipedia.org/wiki/キュー_(コンピュータ)


長くなったので、今回はここまで。


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


コロナが長野県にもかなり広がったので、会議はZoomでやることに。離れていても簡単に会議ができるのは便利! のはずが、皆さん初めてのZoom会議ということで、あれやこれやと接続に手間取っている間に、40分の時間制限が来るというオチ……。

使用している環境(デバイス)がバラバラだけど、とりあえず全員接続できて会議は無事に行われました。が、いざとなったら電話しかない、というのが現実解……。

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram


・8K/4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/