さて今回は iRMX-86
後にも先にも、1回だけ使っただけだけど思い出深いOSです。
インテルさんのRISCチップCPUi860上で使いました。 ※i86ではありませんので念のため
iRMX-86は名前の通りi86系のCISCチップ向けのOSなのですが、何故RISC系のi860で使えたのかは「i860がi86の命令互換機能があったから」というオチです。
CISC vs RISC 当時は面白かったですね、この辺もどこかで語りたいネタです。
iRMX-86は一応「リアルタイムOS」です。 組込みの世界では重要なワードですね。
「リアルタイム」は「即座に」ということではありません、「応答が一定時間(予測時間)内にある」いう意味です。
ブレーキ制御する場合に「プログラムがOSの割込みでいつ次の動作に戻れるか解らない」では
「止まれの指示から止まるまで最悪何秒かかるかかわからない」ということになってしまいます。
なのでリアルタイムとは「素早い」ではなく、「時間保障」という感覚です。
制御と言っても有名な入門「Lチカ」とかの世界では「リアルタイム」は問題になりませんし、CPUの性能が向上してLinuxなど普通のOSでも普通は想定範囲内で応答あるので、意識して考える人は制御系といっても一部かもしれません。
逆に、超シビアな制御をする場合は不確定要素排除のため「OSを使わない」ケースもあります。
この仕事で初めてドライバーというものを勉強しました。それに英語も少々勉強しました。
作っていたのは工業用のモニタ(TV画面のようなもの)で、表示部品を画面で選択して配置し、パラメータを設定することでGUIが作れるという当時としては画期的なもので、私が担当したのは実際に画面を表示する(「〇を書け」という命令を受けて画面上に〇を書く)部分です。
画面を書く最終部分は画面の1画素1画素に対応したVRAMというメモリにデータ(色やら明るさ)を書き込むことで描画されるわけですがこの計算が面倒なわけです。
まあ半径20ドットの円をX=100,Y=100を中心に書けと言われたら意外と面倒であることを判ってもらえるでしょうか。
それをゲームの世界ではものすごい勢いで書き換えてるわけで、それを支えるH/WがGPUというやつですね。
こいつの演算能力の高さがビットコインのマイニング用として利用されてるわけです。
そのはしりみたいなLSIが当時発表されまして、そいつを使うと高速に描画できるということになったわけです。
こいつはそれこそさっきの「半径20ドットの円をX=100,Y=100を中心に書け」と言えば勝手にVRAMに書き込んでくれるわけですが、もちろん日本語で伝えてもやってくれません。
「それで英語を」って思ってくれた方はいませんよね。
この場合黎明編で書いたように機械語で書く必要があるわけです。で「〇」1つ書くにも、位置や色、大きさなど可変要素があるわけで、そこを含めて書き換える度に教えてやる必要があるわけです。
こういったアプリ(上位プログラム)の要求をH/Wにわかる機械語にして処理をさせる部分をドライバーと言います。
英語が必要だったのはLSIが最新すぎて日本語のデータシート(マニュアル)がなく英語の資料を読むしかなかったから、 その上最新すぎてバグも結構あって英語で質問し、英語の解答を見て対応するしかなかったからです。
結局のところ英語の文法的な部分は中学レベルで充分、技術単語とちょっとしたメールのやり取りのパターンを覚えれば、大したことはなかったです。
まあ小説を読むわけでなく、質問「○○が××だ、おかしいやろ!」、回答「○○を△△して」 みたいなもんですからね。
この頃から「高校以上の英語は以外と不要かも」と思うようになり、実際アメリカに派遣された時に実感しました。
英語が苦手だからと思っている皆さん、英語は度胸です。
話がそれました、この時の先輩ですごい人がいて、機械語にしていくのに私はデータシート見ながら書いていくんですが、その人は何も見ずに直接書くという信じられない光景、頭どうなってるんでしょうね。
この仕事が自分の方向性を決めてくれたのかもしれません。
これから何年か後にリアルタイムOSの代理店契約を進めるため、「技術者としてその(米国)会社のセミナーで勉強してこい」という任務が下りました。
これはまた別のところで。
▼この記事がいいね!と思ったらブックマークお願いします