2007-01-27

組込みソフトの作り方[2]

組込みソフトの作り方[1] で、マイコンが登場したとき(1980年代前半)マイコンはハードウェアデバイスのシーケンスをトレースするために使われていたと書いた。マイコンはトレースする順番が変わってもROM上のプログラムを書き換えることで対応できるので重宝された。

マイコンに求められたシーケンス制御の次のステップは、リアルタイム性の実現だった。

リアルタイム制御システムで必ず必要になるのが“割り込み”の機能だ。

組込み機器の多くは、外界の状況変化にともなって制御シーケンスの流れを変える必要がある。いつも同じ処理をぐるぐる回していればいいような機器はあまりない。

このような外部状況の変化を察知して、制御シーケンスの流れを変える場合の一番簡単な方法はポーリングである。

外部状況をセンシングしその様子をマイコンの入力ポートで見られるようにし、このポートの状態をウォッチし続ける。そして状態が変化したら、これまでやっていた制御シーケンスの流れを変える。

ここで大事なのは、一般的なマイコンはコアとなるプロセッサはひとつであり、同時に2つのことはできないということだ。同時に2つのことはできないから、外部状況の変化を知るためには、たまに今やっている仕事を中断して外部の様子を見に行かなければいけない。

割り込みの機能を使わない場合、組込みソフトエンジニアはよく簡易モニタというしくみを使っていた。簡易モニタとは定常的にぐるぐる回るループを用意しておき、このループの中で外部状況の変化をウォッチしておき、外部状況の変化を察知したら制御シーケンスが書かれたサブルーチンに飛び、その処理が終わったらまたループに戻るというしくみだ。

外部状況が変化したときに、サブルーチンに飛ばさずにフラグを立てておいて、ループの切りの良いところで処理を行うという方法もあった。このやり方を新人のときに覚えてベテランになった組込みソフトエンジニアはグローバル変数を使ってフラグ処理を多用する者が多い。このグローバル変数を使ったフラグ処理を多用すると、フラグを通じて関数と関数の結合度が強くなってしまうためキレの悪いソフトウェアシステムができあがってしまう。

最初からオブジェクト指向言語でプログラムを書き始めたソフトウェアエンジニアがこのようなプログラムを見ると仰天するかもしれないが、この風習は組込みソフトの歴史がそうさせたともいえる。

さて、ループ処理で外部の変化を察知するやり方はリアルタイム性が強く求められるシステムには向かない。この問題を解決するためには、割り込みの機能が必要になる。

だから、初期のマイコンでは何はなくとも割り込みコントローラは付いていた。割り込みが発生したときに、今行っている処理を横に置いておいて、割り込み専用の処理を走らせることができる。(もちろん、それまで使っていたレジスタはスタックに退避しておく)

割り込みが使えるようになると、リアルタイム性をそれほど必要としない、ぐるぐる回る定常処理+割り込み処理という組み合わせで、ほとんどのことができるようになる。

これが、マイコンがシーケンス処理からリアルタイム制御のコントローラにステップアップした瞬間だ。

この後のマイコンの変遷は 組込みソフトの作り方[3]で紹介する。

2007-01-17

日本人と仕事

久しぶりの投稿です。「組込みソフトウェア工房」の投稿ルールを2007年からちょっとだけ変更することにします。

変更前:投稿は基本的にあるテーマについて分析・検討した記事で、「である」調で書く。
変更後:投稿はあるテーマについて分析・検討した記事と、四方山話を書いた日記の2種類とし、前者は「である」調、後者は「ですます」調で書く。

ということで「である」調なら記事、「ですます」調なら日記になります。今回はですます調なので日記です。

さて、昨日 EEBOFのイベントで福岡システムLSI総合開発センターにてプロダクトラインワークショップに参加してきました。

プロダクトラインワークショップの中身については EEBOF のサイトに載ることを期待しつつ、今日は別の話題について書きます。

【九州の産業について】

日経ビジネスのポッドキャストで聞いたのですが、今門司税関で取り扱われている物品の金額が非常に伸びているそうです。門司から輸出する金額はもちろん輸入も増えているとのこと。

それをふまえて、福岡システムLSI総合開発センターを訪ねるにあたって福岡システムLSI総合開発センターのWEBサイトを眺めてみました。すると、アジア地域(京畿道(韓国)、九州、上海、新竹(台湾)、香港、シンガポール等を結ぶシリコンシーベルト地帯というくくりがあって、シリコンシーベルトの中でサミットやワークショップが開催されていることがわかりました。

世の中東京中心に回っているような感覚もありましたが、九州が独自に経済活動の範囲を作って活動されていることに驚かされました。

福岡システムLSI総合開発センターも非常にきれいな建物でヤフードームも近くにあり、九州に拠点を置きたい企業のためのオフィススペースを用意するなど、いろいろなくふうをかいま見ることができました。

【日本人と仕事について】

九州のプロダクトラインワークショップが終わって羽田に着いたのが PM8:15。ここから電車で帰るか、リムジンバスで帰るのかが迷うところ。どっちも自宅までは2時間くらいはかかるので、乗り換えの回数を考えて今回はリムジンバスを選びました。羽田からリムジンバスで帰るのは初めてです。

非常に幸運なことに首都高は渋滞なし。首都高では環状線を通り5号池袋線に抜けて外環道方面に向かいます。

環状線を通るときに東京の都心のオフィスビルを30分近く眺めていました。オフィスビルで働いている人たちとそれをリムジンバスの窓から眺めている自分、このシーンがおもしろかったです。

火曜日の夜9時ごろ、10階建て以上の高層ビル、なぜかブラインドで中を隠していないオフィスがたくさんあります。夜9時だと、ほとんどの社員が帰っているのかと思うと、ある島だけは男女あわせてまだ帰宅しそうにない人たちもいます。オフィスに10~20%くらい人が残っているビルがたくさんあります。

不夜城というほどのイメージはありませんが、やっぱり日本人は夜遅くまで働いている・・・「エコノミックアニマル」と言われるのもしょうがないのかなあと思いました。

この働いている人たちとそれを眺めている自分という構図がおもしろいと思ったのは、オフィスの中で火曜日の夜9時に働いている人を瞬間的にリムジンバスに移動させて、自分たちの様子を客観的に見てもらうと「俺たちはなんでこんな時間まで働いているんだろう」とつぶやく人もいるだろうなと感じたからです。

組織という閉鎖された空間では当たり前となってしまっているいろいろな事柄が、組織の外から見ると普通ではなく見えることはよくあります。

日本人が働きすぎているということをイメージでとらえたいときには、夜9時ごろ首都高速をリムジンバスで走るといいですよ。

そのイメージをつかむと、自分や自分の組織を外から客観的に見たときの違和感みたいなものが見えてくるかもしれません。

2007-01-08

今後の予定

組込みソフトウェア工房の読者のみなさま、明けましておめでとうございます。

2007年になって、みなさまにお知らせすることがあります。このブログは2006年の下半期から毎週末更新することを目標にして、実際にそのペースで記事を書いてきました。

ブログだけが原因ではないのですが、2006年を振り返ると家庭と仕事とコミュニティ活動のバランスが均等ではなく、家族と過ごす時間が十分でなかったと反省しています。週一回のブログの更新を実現しないといけないという目標が他のいろいろなことの優先度を下げることになっていたことは事実です。

そこで2007年の年初の抱負として家庭と仕事とコミュニティ活動のあんばいがよい状態を保つことを考えることにしました。

これは家庭と仕事とコミュニティ活動をそれぞれちょうど1/3になるようにするということではありません。どれかを集中的に行うこともあると思います。

ということで、本ブログの更新は状況によって不定期になります。

ご面倒ではありますが、RSSを登録していただき更新があったかどうか定期的にチェックしていただきますようお願いいたします。

P.S.

睡眠時間を増やすと頭がスッキリし、体調がよくなることが正月休みでわかりました。テレビやインターネット、パソコンもしばらく触らないでいると、これまで見えていなかったものが見えてきたりもします。

ネット中毒というのも恐ろしいものです。人間らしさを維持することで人間の役に立つものづくりができるの考えると、たまにはネットから距離を置く、積極的に休むということも組込みソフトエンジニアに科せられた使命ではないかと休みの間、考えていました。

目に見えぬ読者がこのブログの記事を待っていると思って記事を書いてきましたが、これからは自分のひらめきを忘れないようにメモしておくのだと考えたいと思います。

バーチャルな世界が大きくなっても、現実世界は必ず存在し、現実世界は自分だけで動いているのではないということを常に認識していないといけませんね。