2015-01-26
秋葉原勝山鯖江と未来のエンジニアを育成するワークショップが続きました。

IchigoJamの核になるのは、NXPという会社のLPC1114(正確にはLPC1114FN28/102)という32bit CPU(セントラル・プロセシング・ユニット=中央処理装置)です。最大動作周波数50MHzのところ、12MHz x 4の8MHzで動かしています。

コンピューターは手拍子に合わせるように、プログラムで指定された処理をひとつひとつこなしていきます。周波数とは時間あたりの数のことで、48MHz、1秒間に4800万回の手拍子に合わせて計算してくれる様子を想像してみましょう。

IchigoJamの組み立てが終わったら、早速プログラミングです。コンピューターがいかに速いかを実験してみます。

即座に答がでました!ってこれくらい誰でもできますよね。

速いですね。数を大きくしていくと様子がおかしくなりますが、桁あふれ(オーバーフロー)という現象です。詳しくはまた次の機会にご紹介します。待てない方は検索してみてください。

1から100まで100回計算させてみるとちょっと間があって答がでます。

繰り返す回数を1000回に変えて、時間を測ってみます。TICK()は1/60秒に1進む数を返すコマンドで、CLTでリセットできます。16秒、きっとみなさんが計算するより速いですが、1秒間に4800万回処理できるコンピューターなら1000回の計算は1秒間に4.8万回できる計算なので、一瞬のはずでは?

その秘密はBASICという言語にあります。IchigoJamは、画面を表示したり音を出したり、キーボードからの信号を文字にしながら、BASIC言語でかかれたプログラムをCPUが直接分かる言葉にひとつひとつ照らし合わせながら動かしているから遅いわけです。もしマシン語でプログラムを書けば、一瞬ですよ!


IchigoJamでベンチマークした結果、1万回の計算に164秒かかりました。32年前に発売されたパソコン、MZ-2000で同様のベンチマーク結果は26秒と負けています。ただし、値段は22万円 vs 1,500円と圧勝です!(2015.10.10追記 ver1.1beta6 93秒、2017.11.26追記 ver1.2.3 43秒)

※マシン語について補足:CPUが直接わかる言葉は、足したり引いたりいろいろな処理をする命令を数値で表したものです。この数値のカタマリをマシン語といいます。数値をひとつひとつ調べて書くのは大変なので、アセンブリ言語というマシン語に対応する人間用の言語を使います。アセンブリ言語は国によって言葉が違うように、CPUの種類によって言葉が違い、独特のお作法があって大変です。そこで人間に理解しやすく、各CPUに合わせたアセンブリ言語に自動的に翻訳するC言語などが登場しました。ちなみに、IchigoJam自体はC言語で作っています。

links
- Armマシン語入門

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS