当方ではCPUやGPUでは実現できない、超リアルタイムなコンピューティングを研究しております。必然的に我々の生活する時空間で動く、すなわちエッジコンピューティングの領域となります。
そしてそれは決して特殊なデバイスを用いるのではなく、マイコンやCPUやGPUと同じ価格帯で調達可能なFPGA(Field Programmable Gate Array)という、再構成可能な回路デバイスをプロセッサとしてプログラミングすることで達成されます。FPGAは直接目にする機会は少ないかもしれませんが、多くの電子機器の中に組み込まれて活用されており、近年AI用途への活用でも注目が集まっています。
CPU/GPUでは逆立ちしてもできない、面白い計算機とアルゴリズムの世界をお楽しみください。
入力されたとたんに出力が更新される計算機
パソコンなどの現在の計算機は、その構造上メモリ上にあるデータに対してしか計算が行えません。これは今の主流の計算機の心臓部であるCPUがノイマン型と呼ばれるもので、すべてのプログラムはメモリ上の値を計算してメモリに書き込むように記述することになっています。したがって、例えばロボットなどでカメラの画像を処理するプログラムをCPUで動かすには、画像を一度メモリに書き込む装置がCPUとは別に必要になります。ビデオキャプチャボードなどがそれに相当します。
このときCPUと外部装置と同期をとるために必ずメモリを介してタイミング合わせを行うため、大きな遅延が生じます。スマホカメラの表示など、見てわかるぐらい遅れて表示されてしまいます。

一方でFPGAを用いると、メモリを介さずデバイスからの入力を直接演算することや、演算結果を直接外部デバイスに出力することが可能となります。「いつ計算するか」も細かく制御できるため、カメラなどのデバイスのシャッタータイミングなどに同期して、読み出し画素を直接的に演算したり、その結果で即座にモーターを駆動力を変更することなども出来ます。
また、計算機の仕組みが変わると、それに適した新しいアルゴリズムも生れてきます。観測データは古くなるほど価値が下がっていきますので、新しいデータと古いデータをうまく使って今もっとも価値のある出力は何かを考える事ができます。あまつさえ予測をミスしても素早くリカバリすることで状態回復を図ることもできます。これはメモリ上のデータをオフラインで処理するCPU用のプログラミングでは取り扱わない要素です。
下記は、FPGAでカメラ画像のAI認識に応用した例ですが、入力と同時に演算結果がディスプレイに表示されるので、まるでただのガラスの向こう側が遅れることなく表示されます。
でも、ちゃんと、AI認識して画像加工ができてしまっているのです。


リアルタイムな計算機
人間には高度な知能をつかさどる大脳があり、難しいことを考えたり判断したりできます。
一方で、自転車を運転しながらバランスを取ったり、急に水しぶきが飛んできたときに目をつぶってしまったり、「考える前に対応する仕組み」も持っています。人間でいうと小脳や反射神経などが担当している分野です。
これを計算機でも実現しようというのが当方の考えるのがリアルタイムコンピューティングです。

LLMなどAIの登場でCPUやGPUで行えることは大幅に人間に近づきました。まさに大脳の機能は計算機によって大幅に代替されるようになってきています。
一方で、先に述べたようにCPUやGPUは今の計算機アーキテクチャでは、応答性を早めたりリアルタイム保証を行うことは困難です。
世の中にはリアルタイム性が重要なものが沢山あります。ぶつかってからブレーキを掛けたのではもう間に合わないのです。人は大脳で考える前に反射でとっさの判断ができます。また、急に躓いてもそこからバランスを取り直してリカバリするようなこともできます。 考えるより先に体が動く、これを計算機でも実現したいと思います。
世の中は思っている以上に素早く変化します。スマホで秒60コマもあるはずの動画撮影をして、一時停止すると、動いているものは思った以上にブレて写ってるのがわかるかと思います。普通の静止画撮影でもよくブレてしまうのは1コマという短時間に世の中がそれだけ変化しているからです。
人が歩く程度の速度でも秒速2メートル程度はあり、1コマの16.6ミリ秒の間に 3cm も移動してしまうのです。
これらの動きの中には予測できるものもありますが、そうでないものも沢山あります。不規則に動くものが沢山ある我々の生活空間にコンピュータを進出させるうえで実は大きな課題です。
しばし人間の方がコンピュータに合わせることで解決を図るため、無人レジでセンサーの前でバーコードを停止した状態でかざす、ラインを都度都度停止させて検査機を作動させる、コンピューター制御の機器と人間とは区画を分けて作業する。大雑把な表示で遅延をごまかす。などといったことは私たちの周りにあふれています。気づかないうちに人間の方が計算機に合わせさせられているのです。
リアルタイムコンピューティングが目指す姿は
- 動いているものを動いたまま認識してフィードバックを行う
- 人が転倒するなど予測不能なことが起こっても咄嗟に対応できる
- 揺れる環境、急な振動などに対処できる
- 遅延で人に違和感を感じさせない自然なUI
- 人の同線の中で共存できるコンピュータ
などといった、計算機の方を人間の生活空間の都合に合わせる技術を開発することです。
人間と計算機が同じ空間で共存できる世界を目指して日々研究を行っています。