2A

 そう。去年の暮れには、C言語を使うハードウェア組込システムなど。車載システム関連の専門書を、に持ち込むことへ承認を貰っていたから。ボスには、僕が「事件」のことを調べ始めたのが解っていた筈なのだ。


 そうした分野の本が、窓際の棚に何冊も並び始めた頃から。ロージーもジェンも薄々は感づいていただろうけれど、面と向かって「ずいぶん詳しくなったようね?」などと訊かれるのは、が初めてで。


「ビルには?」

「特に何も。僕が勝手にやっていることですから。」

「調べてそれでどうするの。」


 やっぱりというか、ロージーの追求が始まった。


「別に……オタクが自室に籠ってネットでのと変わりませんよ。機密の類にはアクセスできないんですから。」

「自分の所属を明かして、どこかへ書き込むんじゃないの?」


 ――なるほど、そういうのが怖いんだ。曲がりなりにも「意図せざる加速事件」を担当してるノヴァル社員が、世の中に向かって、キャブラのエンジン制御システムについて……何かを独白することが。


を書かれると困るんですか?」


 と。聞きようによっては、脅してる感じになることを言ってみた……ロージーなら絶対は受け取らない、むしろ「何処でも話すつもりはない」と。理解することを確信しながら。

 ロージーは応えず、ただ僕の顔を注視していたから。僕はこう続けた。


「四階層ある筈の安全対策が、たったしかなかったことでしょうか?」

「マット、それは」

「ノヴァル側も認めてますよね。」

「決して、そんなことは……。」


 ロージーは明らかに、僕の言いたい内容について完全に理解している表情かおだった。ノヴァルが主張していた四階層からなる安全対策のこと。

 そのうち「第一の階層」は、「メモリ上での重要データの保護」だ。少し説明が必要だろう。


 コンピュータ上で扱うデータは、メモリという部品のなかに「仮置き」する必要がある。コンピュータの頭脳であるMPUマイクロ・プロセッシング・ユニットが、メモリまでデータを取りに行き、必要な計算処理をして、その結果のデータを、またメモリへ戻しにいく……そんなイメージでいい。

 メモリに仮置きしているといっても、実際には。無数の「バケツ」が一列に並んでいて、その「バケツ」のそれぞれに「高」・「低」どちらかの電圧が保持されてるだけなのだ。要するに、ひとつひとつの「バケツ」はON/OFFしか表わせない。しかし、例えば二つの「バケツ」を組み合わせると……


(1)ON  (2)ON

(1)ON  (2)OFF

(1)OFF (2)ON

(1)OFF (2)OFF


……というように、四通りの状態をとることができる。もし、スロットルの開き方が16段階でいいのなら、「バケツ」を四つ組み合わせればいい。


 しかし、思い出してほしい。「バケツ」に保持しているのは電圧なのだ。ちっぽけなメモリの中に電気を貯める「バケツ」が無数にある、というのは、それぞれが極小サイズだからで、ある意味「吹けば飛ぶような」状態なのだ。だから、何かの拍子で「高」の筈が「低」になったり、逆に「低」だったのが「高」にひっくり返るフリップことも……大いにあり得て。専門用語では、この現象を「ビット・フリップ」と呼んでいる。


 そして問題は、「バケツ」ビットのどれか一つでもひっくり返ってフリップしまうと。例えば、


(1)ON  (2)ON


……の筈が、(1)の「バケツ」がひっくり返ると、


(1)OFF  (2)ON


……になってしまうわけで。

 メモリまで取りに来たMPUにしてみれば、最初からと勘違いしても責められないだろう。

 しかし、もしそうだとすると。ドライバーが足でアクセルを調整して、エンジンに指示した「踏み込み量」が、データとしてコンピュータで処理されていくなかで、何かの拍子に。全く別の「量」に化けてしまう……ということではないか。それは、まさしく「意図せざるUnintended」結果になることでは?


 いや、そうさせない「データ保護」の対策は万全だった……と、僕たちノヴァルは言う。それが安全対策「第一の階層」だ。


 まず。メモリ内でデータを「仮置き」するときは、一カ所だけにしないで、二カ所に「仮置き」する。四つの「バケツ」を組み合わせる場合、それが二カ所だと合計で八つ必要になる。同じデータを「仮置き」するのに倍の「バケツ」が必要になるが、無数にあるというならそれ位できるだろう。

 そして、MPUが「仮置き」データを取りに来るときも、両方のデータを持って行く。そして二カ所に置いてあったデータが「同じまま」かをチェックする。「ビット・フリップ」は出鱈目ランダムに起きる現象だから、同時に同じように二カ所で起きることはまずない…そう仮定すれば、二カ所のデータが同じであることで、そのデータが「化けて」いないと確認できるのだ。

 専門用語では、このような保護手段を「ミラーリング」という。


 もう一つの保護手段。それは、メモリ部品そのものに「ビット・フリップ」の発生を検知できる仕掛けを組み込むこと。専門用語では、この仕掛けを「EDAC」Error Detection And Correctionという。

 もっとも、自動車メーカー自身では「EDAC」を組み込めないので、あらかじめ「EDAC」が組み込まれた専用のメモリ部品をサプライヤから購入することになる。

 ノヴァル・キャブラの場合、エンジン制御コンピュータをベッソー・エレクトリック社から調達しているので、このベッソー社が「EDAC」メモリ部品を調達するのだろう。


 僕らノヴァル側は。重要データの「ミラーリング」処理と「EDAC」メモリ部品の採用によって、メモリ内での「データ化け」を検知できている……と主張していた。

 後者「EDAC」については、先に説明したように、専用部品を購買するしかない。

 一方の「ミラーリング」については、キャブラのエンジン制御ユニットが積むMPUには、そのような二重保管・読み出し比較の機能は備わっていないため、データを計算処理するソフトウェアのなかで具体的な手順をプログラムとして書き込まなければならない。

 つまり、ノヴァルはエンジン制御ソフトウェアに、「ミラーリング」の手順を入れていました……と主張したわけだ。


 ところが。原告側の専門家証人エキスパート・ウィットネスであるマクシミリアン・バイエル技師は、この両方に対し異を唱えた。


 少し前に触れたけど。裁判所のディスカバリ命令のもとで、ノヴァルの施設にてエンジン制御ソフトウェアのソースコードを調べていたのは、バイエル証人のチームだったのだ。

 バイエル証人によれば、ソフトウェア内部で「ミラーリング」手順がきちんと書かれている場合と、そうでない場合とがあり。何と!紛れもなく最重要である筈の「スロットル開度の変数データ」が「ミラーリング」されて!……というのだ。


 さらに「EDAC」メモリ部品について、バイエル証人は。事故車の年式のキャブラについて「EDAC:非採用」との記載のある、ノヴァル自身の文書を示すだけでよかったのだが。同じ年式を扱ったNUSA報告で「EDAC有り」としていたことに目を付けて。陪審員たちの前で、「ノヴァルはNUSAをダマしていた」と非難し続けた……BBL代理人バルブラウ氏の異議により、裁判官に制止されるまで。


 驚いたことに。バイエル証人への反対尋問では、同証人の攻撃材料を否定できるような証拠が、ノヴァル側から全く提示されていなかった。


 陪審員たちには、ノヴァルの主張する安全対策「第一の階層:メモリ上での重要データの保護」は……最初から存在しなかったように見えたことだろう。

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る