Q:その性能を上げる話ですが、今、複数繋げるってちょっと仰いましたが、複数個を繋げる場合は、各々のDAPが各々のDNAををコントーロールして、後はDAP同士が協調するイメージなんでしょうか? それとも一つのDAPが複数のDNAをコントロールして、他のDAPは別の処理を送ろうとしているみたいな形なのでしょうか?
A:まだ完全にFIXではないんですが、構想上は対称性というものをできるだけ持たせたいと思ってます。対称性というのは、たとえば一つの組み合わせがある場合、その組み合わせが対称的に出来ていた方が、ツールの構造上とかアーキテクチャ上はいいと思っています。ただ、会社の体力の問題もありまして。美しい構造を創りだす為には、それなりに投入しなければいけない資源とか時間があるわけです。私自身は理想的には対称性でやった方がいいと思ってます。例えばMulti Processorですね。Multi-Thread環境で、とにかく色々なものの性能を上げようと思ったら、Threadレベルでスケジューリングをしてどんどん実行してゆく。で、空いているCPUがあれば、CPU間でお互いに(Threadを)交換実行できるというものですね。ただ、これをするためにはハードウェア側でかなり大きい仕掛けが要ると思ってます。
ただこうした並列処理というのは、PCの様なアプリケーションを動かす場合、システム全体が並列処理になっているので、空いているCPUがどんどんThreadを引っ張ってきて実行するというSystemになっているわけで、これは思想的にはすごく正しいと私自身は思っています。もう一つはTaskとか重いところにProcesserを割り当てる方法です。これですとTask単位で管理ができるので、処理を行うモジュールとかに対して、DAPとDNAをコンビネーションさせて実行させるとかですね。こうしたやり方には(現在のハードウェア構成は)向いてると思います。
ただ問題は、先ほども言いましたが、一つの処理に固めてしまうと、その処理が動いていない時に別の処理を、という事がやりにくい場合があるんですよ。勿論ポテンシャル的にはやれるわけですが。一番良い例は、割り込み処理ですね。CPUが例えば2個とか4つとか8つとかあって、割り込み要因も十何個かありますというケースですね。で、実際に何本も割り込みが入った場合、本来ならば空いてるCPUにその割り込みを突っ込むことで、割り込み優先順位に同時並列に実行できるわけですよね。
Q:理論上はその通りです。
A:ところが、実際には割り込み処理だけのCPUといった形で役割分担を固定的にすると、対称的ではなくなってしまう。誰かは(実際には)遊んでたとしても、腕組んでて「これ貴方の仕事でしょ」(といって仕事をしない)という事になってしまう訳です。組織でも、機動性が高くて優れた組織の場合、仮に誰かが間に合って無いとしたら、補完的に動ける仕掛けが当然必要で、その為にはやっぱり対称的でないといけないみたいな感じでしょうか。自分の組織がなんか頭の固い連中で組みあがってて、「誰々さんが今日倒れているから誰かヘルプして」と言った瞬間に「それボクの仕事じゃないですよ、ボクはゆっくりやりますからこの仕事」なんて、そんな事をやってる場合ではないんですよね。(非対称型は)トータルのスループットでは効率悪くなりますよね。ですから、そこをやはり対称的に出来るのでしたら対称にした方がいいし、無駄を排除する形の思想なりやり方の方が優れているだろうと個人的には思います。
ただ問題は、そんな奇麗事を言うけれど、これを実装するコストはどうするんだとか、どこかの会社のパテントに抵触する/しないかとかですね。あるいはここはすでにここの方式がやっているとか。ではオリジナリティをどこに入れるんだとか、思想的には当然あります。しかも有限の時間で物を創らなければいけないと。株主からは、時間あまりかけずに、とにかく効率の良い競争力のある物を創れと言われます。ですので、そこはやはりバランスという事になりますね。
Q:今のAXLinuxですと、そのあたりはどうなるんでしょう? 例えば複数繋いで終わりとか。
A:今後の課題になると思います。