モンタビスタ、1 秒でブート可能な組み込み型 Linux の動画を公開 34
ストーリー by reo
催眠術だとか超スピードだとかそんなチャチな (略) 部門より
催眠術だとか超スピードだとかそんなチャチな (略) 部門より
kieru_haim 曰く、
カリフォルニア州サンタクララに拠点を置き、組み込み型 Linux を手がける MontaVista は米国時間 7 月 14 日、同社の最新システムは 1 秒で起動可能だと述べ、車両用ダッシュボードシステムが電源投入から 1 秒後に「完全な動作」状態になる様子を収録した動画をリリースしました (YouTube 動画 (実際の再起動の様子は 1 分 3 秒付近からです)、The Register の記事より) 。
Linux の起動もどんどん高速化してきてますね。ハイバネーションの応用なのでしょうが、ここまでくるとさすがに驚きますね。
プレスリリース出てました (スコア:3, 参考になる)
http://www.montavista.co.jp/press_release_detail.php?pid=664 [montavista.co.jp]です。
# 1秒以内にリアルタイムデータの視覚的フィードバックが必要だった、とあります。つまりアプリケーションまで全部動いてるわけですよ奥さん(誰
「チューニング」(Re:プレスリリース出てました (スコア:1)
とりあえず、CANバス [interfacebus.com]などの車内データバスでぶら下がってるノード(と言うかデバイス)が電気的にActiveになっていれば、デバイスが起動指令に返事返さなくてもメーンの起動自体は可能ですので、起動に時間のかかるデバイスについてはデバイスのウオームアップ待ちの後に出来るんじゃないかと…
変な話ですが、起動にかかる最初の一秒は最低限のデバイスやファイルシステムの初期化とアプリの初期化確認に注力しておいて、その後やそれと並行してinsmodとかユーザランドドライバの起動とかで遅いデバイスの初期化を行って、すべてのデバイスの起動を待ってるんではないかと…どうせ、車内のセルフチェックというのは一秒で済む物でもないでしょうから、エンジンかけられるようになるまで30秒、せっかちな人でも10秒位は許されるのではないかと。
# 「ダッシュボードアプリの起動」であって、自動車システム全体の起動ではない事に注意。
こういう見た目の起動速度というのは無意味ではなくて、ヒューマンインタフェース的に不安を起こさない重要要素ですので…別にぶら下がってるノードが全て立ち上がってからアプリが起動する必要もなくて、「ノードが起動中であると分かり」なおかつ「最初の起動指令から規定時間以内に初期化終了もしくはエラーと返事が返ってくれば」無問題ですので、この手のシステムでは。
Re:「チューニング」(Re:プレスリリース出てました (スコア:1)
>こういう見た目の起動速度というのは無意味ではなくて、ヒューマンインタフェース的に不安を起こさない重要要素ですので…
「お、起動した。じゃあ早速ルート検索…ってGPS動いてねえ!」
ってのも十分に不安要素だと思うんだけど。
結局のところ全体高速化と言う王道以外の王道はないって話だよね。
#ゴマカシがゴマカシ以上になることはないからさ。
Re: (スコア:0)
>「お、起動した。じゃあ早速ルート検索…ってGPS動いてねえ!」
1.起動した時に、前回終了時と同じ場所にいるなら、現在地を起動と同時に測位する必要なし
(最近のカーナビならジャイロもあるし、前回終了時の地図を表示します。測位はそれから)
2.カーフェリー等で移動した場合はその限りではないが、船内では受信できないので必要なし
(まず誘導に従って速やかに下船し、開けた場所に停車してからどうぞ)
3.そもそもルート検索をするだけなら出発地を自由に設定できるので起動と同時に測位する必要なし
#あとでいい事を意味も無く先に要求するのはいかがなものかと。
#実際GPSレシーバとシリアルドライバの初期化なんて一瞬ですけど、衛星を掴むのに時間がかかるし
速い、素晴らしい (スコア:0)
「頑張れば(金をかければ)できるのは分かってるんだよ」
という言い訳は聞き飽きました。
# うちの社内の話なんですが…
電源ON/OFFの回数が多いCE機器で、起動時間が遅いのは
そこそこ致命的だと思うんですがねぇ。
是非、そっち方面の技術者さんにも頑張ってもらいたいです。
1秒後に何ができるか (スコア:2)
Re: (スコア:0)
Re: (スコア:0)
>1秒後に何ができるか問題なのだけどね。
それは、「何かを始めるために必要な1秒」って思考停止しちゃってるからですよ。
日本のような他国からすると品質の安定が高い国に住んでいると分からないけど、
他の国では「既にとりかかっていたら中断させられる」ってケースも少なくない。
じゃあノートPC使えばいいじゃんってある程度のハイスペックで増設の自由が利く
マシンを使うとなるとノートでは心もとない。
かといってUPSとなると、メディアPCのようなカジュアルな用途で使うユーザーには、
導入の必要性が感じられない大げさな代物。
…という指摘にも思考停止があり、それは「人が作業をしているPCにとっての1秒」という点。
定期再起動、およびエラーリカバリにかかる時間が短縮できるのは有用じゃないだろうか。
Re:1秒後に何ができるか (スコア:4, 参考になる)
この手の話題だと、何かと普通のPCとの比較がされますけど、
PCと組み込みでは条件が違いすぎるでしょう。
組み込み系だといつ電源切られるかわからないし、
電源が安定している保証もないし、
電気的なノイズとかで誤動作する可能性はあるし、
さらに、ウォッチドッグタイマーとか使って、
「とにかくトラブったらリセット」って運用が基本。
だから「スリープすればいい」とか「UPS使えば」なんてのは的外れ。
今回のデモも「車両用ダッシュボードシステム」ですが、
車載だとエンジン停止時には機器の電源も落ちてるし、
平常運用時の体感としても、イグニッションキー回してそこから1秒で使えるのか、
5秒かかるのか、といった違いは結構大きいと思います。
Re:1秒後に何ができるか (スコア:1, 興味深い)
いや、起動に時間のかかる装置の場合、ロック解除とかドアを開けた時点で電源を入れている。
イグニッションキーを回した時は、単にディスプレイがONになるだけ。
電源を切るのも、エンジン停止直後ではなく、ドアロックや一定時間停止した後など。
今の車だと、エアバッグやシートベルト未装着警報のために、シートに人が座っているかどうかをチェックするセンサがあるので、色々細工している。
#駐車場などにクルマを止めてドアロックした後に、ちょっとラインから出てるとかの理由で、エンジンをかけてクルマを動かすのは止めてくれーーーー!
Re: (スコア:0)
電源が切れても、スリープさせた状態からすぐに稼動できる仕組みが出てくれば、案外的外れではなくなるのでは?
Re: (スコア:0)
>「とにかくトラブったらリセット」って運用が基本。
そういや
「ノイズでトラブるのが当たり前だから、
数秒とかコンマ数秒という極めて短い周期で頻繁にリブートさせてる」
という運用な世界も有るんだっけ>車載用
ハイバネーションではない模様 (スコア:2, 興味深い)
推測を含むけど、高速起動へのアプローチは...
・ブートローダがDMA対応。FlashからSDRAMへのカーネル転送が高速かつ、その間ビデオ周りなどの初期化を走らせてる
・カーネルイメージは非圧縮の方が早い (結果、DMA転送だけでの展開が可能になり、高速化とその間のCPUリソース確保に貢献)
・時間のかかるデバイスの初期化、サービスの起動は後回しにして勘定に入れない(カーネル起動後、後でゆっくり)
・カーネル起動後、ユーザプロセスを起動する前にFlash上に保存してある「ユーザプロセス起動後の画面と同じ画像」をフレームバッファに叩き込み、見た目だけは見繕う
(もしかして、フレームバッファドライバ内でやってしまうかも)
辺りじゃないでしょうか。最後の見た目だけってのは多少誤摩化しが入ってる訳ですが、システムが1秒で起動したとして、ユーザーがそれを認識してアクションを起すのは更に1秒以上後と考えて良いので、問題が無いと言えます。
結構こう言った組込みLinux高速起動をデモしていた企業は今まで幾つか有ったはずです。
むしろ組込みLinuxでハイバネーションを利用し、数秒以内でユーザープロセスまで使用可能な状態にするようなシステムが見たい所。
Re:ハイバネーションではない模様 (スコア:2, 参考になる)
まず、カーネルはロードするのではなく主記憶(NORフラッシュ)空間に非圧縮(ご明察)で最初からある、そして必要なドライバしかロードしない。
lunuxザウルスもそうですが、組み込み系ではカーネルやユーザーランドプログラムの入ったROM/flashを主記憶に配置してプログラムのロードをそもそも不要にする(データ/スタック/ヒープセグメントの割り当て+初期化は必要)のは定番です。 また、デバイスプローブを一切なくするのも定番。 特定HW用の組み込みでは存在するデバイスがあらかじめ分かっているので、存在するデバイスしかカーネルに組み込まない。また、デバイスのアドレスや割り込みベクタも決め打ち。 シャープの地デジTV(?)ではそれすら省略して、デバイスドライバをアプリ側に持たせることによってカーネルのブートを早めたりしている(と、中の人が言ってました)。
いまどきのPCのようにGB単位のRAMが積んであると、起動時の最低限のメモリテストだけでも1秒経ってしまうでしょうね。 あと、HDDのように本質的にコールドブート(スピンアップ)に数秒かかるI/Oがあるとどうしようもない。
Re:ハイバネーションではない模様 (スコア:1)
どっちにしても、同じフラッシュメモリならを主記憶に置くのとI/Oにつなげといてそこからロードするのでは、主記憶に置いといてロードなしに直接実行できるほうが起動は早そう(まけおしみ)。
今回の記事の対象のHWに関しては、カーネルをフラッシュメモリ非圧縮で 置いとくことが起動高速化に貢献していることは確かですよね。でもよく読むとどこにも「主記憶にマップされてる」とは書いてなかった。がっくり。
Re: (スコア:0)
NORにカーネルをマッピングするXIPカーネルじゃないんですかね。
あとはPrelink+UserModeXIPでアプリ起動もガリガリに高速化してるということも。
もっとも、そんな贅沢にNORは使えませんけれども。。。
Re: (スコア:0)
userlandのXIPはやってると思いますが。
動画の後ろの方で、非圧縮vmlinuxとinitramfsと画面イメージを
DMAでNOR FLASH->SDRAMにコピーしてるんで速いよ。
てな事を説明しているので、NOR FLASHは結構贅沢に使ってるようで。
Re: (スコア:0)
カーネルがストレージ上のアプリのイメージをmmapして実行するよ
ページフォールトが起きるとカーネルがストレージからページをロードする
もしかしてPIザウルスのことを言っているのか?
Re: (スコア:0)
lunuxザウルスがどんなものかは知りませんが、linux搭載のザウルスの起動速度は決して速いといえるような代物ではありません。1分弱といったところではないでしょうか?
また、ブートローダがフラッシュストレージからメインメモリに展開しますので「プログラムのロードが不要」と言うこともありません。
ついでに言うとカーネルなどはNANDからのロードです。
そもそもメモリ空間に貼り付けられたフラッシュの方が外部ストレージより速い。というのも相当な思い込みです。
Re:ハイバネーションではない模様 (スコア:1)
普通、NANDフラッシュを主記憶にはできませんよ。
NANDフラッシュは外部ストレージと同じ扱いです。
NORフラッシュはオンチップなものだけではありません。
CPUのメモリバスにつなげてつかう汎用品があります。
32bitのバスに2個の16bit幅のNORフラッシュをつなげて使ったりします。
書き込みは遅いですが、読み出しはSDRAMなみのスピードが出ます。
サイズも2Gbのものまでありますよ。
欠点はNANDよりサイズが小さく、高価なことでしょう。
組み込みでは、ワークメモリはSDRAM(SDRやDDR,DDR2)、コードはNORフラッシュ、
ストレージはNANDフラッシュを使うということをよくやります。
# NORで性能が足りなければコードもSDRAMにロードしてしまうこともあります
Re: (スコア:0)
できますよ。
件のSheevaPlugなんかどこにもNORフラッシュ付いてませんしね。
普通にオンチップNANDフラッシュコントローラの先のフラッシュから立ち上がってきます。
で、これを普通でないと言うつもりなら...
は確実に普通じゃないと思いますね。
#SDRAM並はちょっと大げさだなぁ。
Re: (スコア:0)
> できますよ。
> 件のSheevaPlugなんかどこにもNORフラッシュ付いてませんしね。
> 普通にオンチップNANDフラッシュコントローラの先のフラッシュから立ち上がってきます。
たいていこの手のものは、CPUのオンチップROMかシーケンサでNANDコ
ントローラから(初期化データ+)ブートローダをDRAMにコピーしてから
起動(というかジャンプ)のはず。
SheevaのMarvelのチップはどうだったかな~?
いずれにせよ、NANDフラッシュはアドレスの概念ではなくセクタの概念での
制御なのでCPUが主記憶として直接コードをフェッチするものは聞いたことが
ないですね。NANDはエラー検出&訂正もセクタ単位だし。
ま、立ち上がるという表現ならNANDフラッシュからに見えますが、主記憶と
いうわけではないですね。
Re:ハイバネーションではない模様 (スコア:1)
Warp!! by Lineo Solutions
http://www.lineo.co.jp/products-services/services/warp.html [lineo.co.jp]
TP InstantBoot by TriPeaks Corporation
http://www.tripeaks.co.jp/p/product/TPIB.html [tripeaks.co.jp] (サーバが見つかりません)
http://74.125.153.132/search?q=cache:Gqbkd1fhxvMJ:www.tripeaks.co.jp/p... [74.125.153.132] (キャッシュ)
など組み込み向けのソリューションがありますよ。
Re: (スコア:0)
> システムが1秒で起動したとして、ユーザーがそれを認識してアクションを起すのは更に1秒以上後と考えて良いので、問題が無いと言えます。
そうかなぁ?
普通のPCですら、立ち上がる前からキーボードガチャガチャしたり、
マウスをひたすらカチカチしてる人って少なからずいますよ。
本来なら起動するのは1秒だって遅いんです。
だって使いたいと思ったその時からが本当の起動待機時間なんですから。
Re: (スコア:0)
モル(ry
1秒で起動したらつまらないじゃん (スコア:1, すばらしい洞察)
Re: (スコア:0)
要は (スコア:1)
周辺機器は1秒未満でウォームアップを完了させろってことか.
Re: (スコア:0)
勝手に周辺機器が動いたり活性化されたら困るよ。
乗り遅れた (スコア:1)
「組み込みLinuxの高速起動」を売りにしてる国内ベンダーを
いくつか知ってますが、そのベンダーの動きがきになりますね。
MontaVistaが1秒というもの実現した今、
「高速起動」だけでは、中小ベンダーのソフトは大手企業には買ってもらえないでしょう。
「MontaVista」というネームバリューだけで、負けてしまいかねません。
それ以外の付加価値を見出すしかないわけですが・・・。
ケータイも1秒くらいで立ち上がってほしい (スコア:0)
起動せよ!組み込みOS MontaVista!! (スコア:0)
MontaVista Linuxが起動する時間はわずか1秒に過ぎない。
では、そのブートプロセスを見てみよう
「起動!」
プロセッサがゼロアドレスにあるNORフラッシュメモリからブートローダーを
読み始める。
ブートローダーがレジスタを初期化した後、おもむろにメモリイメージが展開された
NORフラッシュメモリ上のアドレスにジャンプすると、すでに起動してしまっているのだ。
この間わずか1秒。
Re: (スコア:0)
Re: (スコア:0)