(Last update:)

esカーネルの概略


 HMシリーズの利点は、人間型のその外観だけではない。ユーザーとの自然な所作での対話を行うFTF(マルチモーダル)インタフェイスや多様な環境・状況下での柔軟な自律判断を可能にしたHM-VEGOT(仮身自我タスク)が、es(エス)と呼ばれるホロダイナミックカーネルセットをベースにして構築されているのである。esは、強力な通信機能を備えた、マルチタスク、マルチスレッド専用のOS(マイクロカーネル)であり、特に並列動作プロセッサ数が十万を越える様な超々並列システムで秀でた性能を発揮する。さらに、その簡素な構成から新たなハードウェア(プロセッサ)に移植することが比較的たやすく、これら特徴故に、esは様々な汎人機用OSのベースとなってきた。

 ここではesの歴史を振り返り、その機能について概略を紹介する事にしよう。しかし、あくまでもesの構造を知らない人の為の概念的な描写にとどめていることをご了承いただきたい。このドキュメントを読み、esに関して興味を持たれた方は、ぜひ様々な技術資料に目を通していただきたい。esに関する技術資料はいずれも優れたもので、現在は書籍として、あるいはネット上で、様々な形で手に入れることができる。


歴史

 esの歴史は、御奈山工業大学(Minayama Institure of Technology)で2000年代半ばに開発されたMID(Minayama Intelligent Dataprocessor)と呼ばれたOSに遡ることができる。MIDは当時のAT互換機上で動作するCTRON準拠のOSとして設計された。その最も重要な目標とされたのが、マイクロプロセッサ内臓の家電製品や当時のパーソナルコンピュータ(PC)などを一つの情報伝達手順(プロトコル)によって結び、ユーザーの利便性を高め、更に情報伝達手順によって接続された家電製品やPC全体を一つの『系(システム)』と見た際に、単一のそれらより柔軟性が高まることを示すことであった。MIDはこれを達成し、後にユビキタスコンピューティング環境(HFDS)につながる通信技術の先陣を切ることになった。
 MID設計者の1人である神野謙太郎は、東京大学に移ってからもTRON準拠OSの研究を続けた(東京大学は、TRON研究・開発の総本山でもあった)。彼の開発した第二世代のeTRON-OS(正しくは、eTRONのインプリメンテーション)は当初OPEN Mac OS上で動作する仮想マシン(エミュレータ)で動作した。Soulと名づけられたこの新しいOSは、MIDの諸機能を拡張したものである。SoulはMIDに対して、主に堅牢なメモリ管理システムと、高速なカーネル/プロセス間通信などの機能が実装されている。

 esの原型となるidは、御奈山工業大学に戻った神野が、TRONの1インプリメンテーションに過ぎなかったSoulを、全く新しいオープンアーキテクチャOSとして抜本的に再構築し始めたことからはじまった。idはSoulより更に高度な並列動作を可能にするため、1プロセッサ=1タスクという、見掛け上シングルタスクのみをサポートするOSとして設計・開発が行われた。
 idは、十全な機能を持たない単一プロセッサが、複数個ある状態において、それぞれが通信手順(プロトコル)によって結合され、通信を行いながら動作することが前提になっている(編注:この場合の『プロセッサ』とは、CPUではなく、単体で機能する完結した機能単位を指す。)。
 あるユーザーが『ビデオの予約』をする場合を例にとって見てみよう。

 ユーザーは、ビデオデッキに対して口頭(音声)で、ある時間からのビデオ予約を要求したとする。
 その要求に対して、ビデオデッキは以下の様な動作を行い、命令を実行する。
  1. ユーザーの音声による命令を解析できる、連携可能な家電(機能単位)に引き渡す(音声データストリームにタグを付けて送信する)。
  2. 音声データストリームを解析できる家電(機能単位)(例:複合電話機)が、この音声データストリームを音素(語要素)に分解し、それを構文解析可能な家電(機能単位)に引き渡す(語要素にタグを付けて送信する)。
  3. 構文解析可能な家電(機能単位)(例:翻訳機能付き電子手帳)は、語要素を家電共通のメッセージタグに変換し、ビデオデッキに引き渡す。
  4. ビデオデッキは、録画予約を実行し、それが成功したことをユーザーに音声で通達するために家電共通メッセージタグとして送信する(ユーザーが口頭で指示した場合、その結果は音声で伝えられる事が望ましい)。
  5. 音声合成が可能な家電(機能単位)が、そのメッセージを受信し、ユーザーへの音声メッセージを合成し、音声データストリームとして発信する。
  6. 発生可能な任意の家電(機能単位)のうち一つが、音声データストリームを再生する。

 この様に、idはユーザーからのアクションを解析し、そのアクションに対するレスポンスを各家電(機能単位=プロセッサ)が連動しながら、それぞれの機能を『持ち寄って』『よってたかって』処理する。こうして、複数のプロセッサが連携しながら『一つのシステムであるふり』をするのである。

 複数プロセッサが必須となった代わりに、完全なパラレルマルチプロセッシング、1対1対応マルチスレッドタスク、そして高度な相互通信機能をサポートしたidは、まず日本の家電大手メーカーによって採用された。
 多くの企業が商用製品にidカーネルの様々なバージョンを用いてきたが、来栖川重工社製人型介護/自立支援システム・HASSシリーズのCNS(中枢処理システム)には同社R&Dによって改良を加えられたid4.0カーネルが採用された。これは、idカーネルの相互連携を強化したもので、HASSシリーズのユーザビリティを高めることに大きく貢献した。

 来栖川重工の子会社、来栖川エレクトロニクスは、id4.0カーネルの並列処理能力は『情報家電=システム』系だけでなく、HASSシステムの様な知能機械システムの情報処理能力向上にも有効であると考え、自社の超並列処理システムへのidカーネルの移植(ポーティング)を御奈山工業大学に打診。御奈山工業大学と来栖川エレクトロニクスR&Dの協力のもと、idカーネルの超並列処理システム上での情報処理能力向上への改良が行われた。この過程で、家電システム制御など、外部入出力に関わる部分がid本体から大幅に削除され、並列処理をより効率的に行えるように、カーネル(プロセッサ)間の非同期通信の能力が更に強化された。目標が、家電の統合的な制御から超並列処理システムでの高度情報処理へと変化したことから、改良型カーネルはesと呼称されるようになり、当初は来栖川エレクトロニクスのスーパーコンピュータ、KEX2200/256で稼働した。HASSシステムで使用されたesカーネルは、CNS(中枢処理システム)の関係からes1.1に留まることになったが、esはそのベースとなったidとの親和性も高く、各情報家電の制御とユーザーに対する支援動作を同時にこなす事も可能となった。

 esは、idとは異なり、純粋なマイクロカーネルとなった事から、ネイティブな動作はカーネル内のみで行われる。それ以外の全ての動作はユーザー・スペース上でのエミュレーションである。
 来栖川重工社による試作型汎人機用アクチェータフレーム(基本フレーム)、HMX-1x用CNS(中枢処理システム)の初期段階では、来栖川エレクトロニクスR&Dによって多少の機能が加えられたes1.2が用いられた。HMX-11ロールアウト時には、『誤解し続ける思考エンジン』(Continuous Misunderstanding Thought Engine)アーキテクチャを採用したHM-VEGOT(仮身自我タスク)と共に、ホロダイナミックアーキテクチャが取り入れられたes2.0が採用された。その後、量産化されたHM-1xシリーズには、更に改良が加えられたes2.5が採用されている。
 御奈山工業大学でのid及びesに関する研究は既に終了しているが、id/esに関しては、Open Id/Es Foundation東京本部が、またTRON準拠のSoulに関しては東京大学の総合情報処理センター(General Intelligence Processing Center)が、それぞれ研究と改良が引き続き行われている。

 現在、来栖川重工社製の汎人機に使用されているHM-VEGOTは、オープンアーキテクチャベースのesマイクロカーネルをベースとしている。



構造

 esが備えているのは少数の基本的サービス、メモリ管理、コミュニケーション、そしてI/Oのみである。これらのサービスだけでは、OSに必須とされる全ての機能を備えていることにはならない。ユーザー・スペース上で動作しているエミュレータが、esマイクロカーネルを土台として構築され、自律判断・自律学習やFTF(マルチモーダル)インタフェイスなどの高度なサービスを提供することになる。

 こうしたアプローチには様々な利点がある、第一に、カーネルは非常に小さいので、メンテナンスが行いやすい。第二に、OSエミュレータがユーザー・スペース上で動作しているために、その下位のハードウェアへの依存度が減り、新しいアーキテクチャ(ハードウェア)への移植を行いやすい。またOSはユーザー・タスクとして動作しているので、デバッグがしやすくなる。また、複数のOSエミュレーションを同時に行うことも可能である。たとえば、HMX-12ciなどで実際に行われたように、HM-VEGOT(仮身自我タスク)の様なデータドリヴン型のモダンOSとUNIXの様なクラシックなOSを同時に動作させ、相互に連携させる事も可能である。
 esマイクロカーネルが管理するのは、タスクという基本的概念だけである。タスクはプログラム実行のための環境と手段であり、トークンによって、タスクは、自身のカーネル/他プロセッサのタスク/他プロセッサのカーネルとも連動できる様になる。

 タスクはデータに自らを処理するための環境を与え、esにおけるリソース分配の基本的な単位となる。タスクは、データ実体と、四つ(カーネル、通知、例外、プロセス)の処理トークンから構成されている。
 カーネルトークンは、カーネル情報の記録に用いられる。これは処理を求めているデータ実体と、その影響をうけるリソース(データ処理に必要なカーネル、メモリ、タスク)を同定するための情報を記録する事になる。カーネルは通知トークンによって、データ実体のアクセス権の変化などの状況を他のカーネルが利用可能な状態で通知する。(不必要なデータ量や無限再帰的な処理要求の様な)例外は、例外トークンを通じて通知される。プロセストークンは、カーネルにデータ実体の処理方法を命令するほか、データ実体の処理に要している経過時間などを記録している。
 データ実体は受動的であり、処理トークン無しでは何もし得ない。処理トークンを持たない、あるいは処理が完結し、プロセストークンに初期化指示を与えられたデータ実体は、リソース内から消去される。

 esのタスクは、これ以外のデータを含まない。なんらかの意味合いを持つ情報としてのデータ(例えば、画像、音声、文章などの文字列)はユーザースペース上で動作するOSエミュレータが管轄する事になり、カーネルはそれらを単なる数値列と見做して処理する。
 タスク単位で非同期に動作し、データドリヴンな処理を行うesは、処理能力はデータ実体の大きさに反比例しない。各々のタスクは、処理トークンの指示に従ってデータ実体に対して処理を行うだけであり、情報量飽和以外でのパフォーマンスの低下は少ない。


仮身自我タスク
VEGOT:Virtual EGO Task

 英和辞書で引くと分かるとおり、英単語の『Virtual』とは、よくこの語の意味として引き合いに出される『仮想』という意味ではなく、『実質上』という意味である(『仮想』という意味をさす英単語は『imagination』である)。つまり本来のVEGOTの意味は『実質上、自我の存在を認めても問題ない処理タスク』という事になる。しかし、この場合、VEGOTが人間と同等の自我を持っているという事を意味するのではなく、魂のないモノに、魂を感じる人間の心理構造…虚焦点を利用した、ある種の疑似人格である事をさしている。また、これらの詳細に関しては、人工知能心理学の分野となり、本ドキュメントの範囲を越えるために省略する。


物理レイヤ

 物理レイヤは、実際の動作機構や感覚装置にに対する入出力を受け持つ。CNSとは別に独自の判断を行い、実際の動作の可否を決める基幹動作システムも、HD-CNS側から見えれば、物理レイヤに含まれる。基幹動作システムは、CNSの指示が危険と判断した場合、その動作の差し止め(NMIによる緊急停止)を行うと同時に、CNSに対して最優先で『罰信号』を送信する。


反射動作監視レイヤ

 物理レイヤの中で、基幹動作システムと同じレベルで動作の監視を行う特殊レイヤ。感覚装置からの入力が異常な値を示した場合、物理レイヤに対して回避動作、つまり反射動作指示を行う。主に自己破壊や故障などを防ぐために設けられた、即時応答型の自己診断レイヤであるが、基幹動作システムや、より上位のレイヤからの干渉も受ける。


タスクレイヤ

 ある一つの動作に必要な、さまざまな感覚装置や動作機構の連動を行う、VEGOTの最も重要な基本的な処理レイヤである。タスクレイヤは能動的な作業を行うには充分な能力を持っていない、可能なのは、位置や状態などの単純化された(抽象化されない)情報のみを利用して行う単純作業のみである。例を挙げるとすれば、タスクレイヤ中の各タスクが可能な作業とは、一般的な工場で使われる、組み立てライン用の工業用ロボット程度の動作機構指示能力と不良品判定システム程度の情報処理・判断能力程度のものと言ってよい。しかし、各タスクは、より上位のレイヤ、連動作業レイヤや能動作業レイヤが行った試行錯誤の中で得られた最適動作を継承するため、効率的な動作が可能となっている。
 タスクレイヤは、自らの判断で動作の開始・終了を行うことはない。これらはより上位のレイヤからの指示によって決定される。タスクレイヤでは多数の作業が並行して行われるが、相互に干渉する動作を必要とする場合が発生した場合などはそれぞれの作業の優先度によってその処理順位が決定される。ただし、各作業の優先度は常に変動し、処理順位が衝突するような場合は作業の一時中断とより上位のレイヤへの処理の委譲が行われる。


能動作業レイヤ



連動作業レイヤ



仮身自我タスクレイヤ