アカウント名:
パスワード:
推測を含むけど、高速起動へのアプローチは...
・ブートローダがDMA対応。FlashからSDRAMへのカーネル転送が高速かつ、その間ビデオ周りなどの初期化を走らせてる・カーネルイメージは非圧縮の方が早い (結果、DMA転送だけでの展開が可能になり、高速化とその間のCPUリソース確保に貢献)・時間のかかるデバイスの初期化、サービスの起動は後回しにして勘定に入れない(カーネル起動後、後でゆっくり)・カーネル起動後、ユーザプロセスを起動する前にFlash上に保存してある「ユーザプロセス起動後の画面と同じ画像」をフレームバッファに叩き込み、見た目だけは見繕う(
the boot performance was achieved through careful turning of the software stack starting with the bootloader, a highly optimized kernel that's kept uncompressed in NOR flash, and loading only required drivers.
まず、カーネルはロードするのではなく主記憶(NORフラッシュ)空間に非圧縮(ご明察)で最初からある、そして必要なドライバしかロードしない。
lunuxザウルスもそうですが、組み込み系ではカーネルやユーザーランドプログラムの入ったROM/flashを主記憶に配置してプログラムのロードを
lunuxザウルスもそうですが、組み込み系ではカーネルやユーザーランドプログラムの入ったROM/flashを主記憶に配置してプログラムのロードをそもそも不要にする(データ/スタック/ヒープセグメントの割り当て+初期化は必要)のは定番です。
lunuxザウルスがどんなものかは知りませんが、linux搭載のザウルスの起動速度は決して速いといえるような代物ではありません。1分弱といったところではないでしょうか?また、ブートローダがフラッシュストレージからメインメモリに展開しますので「プログラムのロードが不要」と言うこともありません。ついでに言うとカーネルなどはNANDからのロードです。
そもそもメモリ空間に貼り付けられたフラッシュの方が外部ストレージより速い。というのも相当な思い込みです。
普通、NANDフラッシュを主記憶にはできませんよ。
できますよ。件のSheevaPlugなんかどこにもNORフラッシュ付いてませんしね。普通にオンチップNANDフラッシュコントローラの先のフラッシュから立ち上がってきます。
で、これを普通でないと言うつもりなら...
書き込みは遅いですが、読み出しはSDRAMなみのスピードが出ます。サイズも2Gbのものまでありますよ。
は確実に普通じゃないと思いますね。#SDRAM並はちょっと大げさだなぁ。
> できますよ。> 件のSheevaPlugなんかどこにもNORフラッシュ付いてませんしね。> 普通にオンチップNANDフラッシュコントローラの先のフラッシュから立ち上がってきます。
たいていこの手のものは、CPUのオンチップROMかシーケンサでNANDコントローラから(初期化データ+)ブートローダをDRAMにコピーしてから起動(というかジャンプ)のはず。SheevaのMarvelのチップはどうだったかな~?
いずれにせよ、NANDフラッシュはアドレスの概念ではなくセクタの概念での制御なのでCPUが主記憶として直接コードをフェッチするものは聞いたことがないですね。NANDはエラー検出&訂正もセクタ単位だし。ま、立ち上がるという表現ならNANDフラッシュからに見えますが、主記憶というわけではないですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
ハイバネーションではない模様 (スコア:2, 興味深い)
推測を含むけど、高速起動へのアプローチは...
・ブートローダがDMA対応。FlashからSDRAMへのカーネル転送が高速かつ、その間ビデオ周りなどの初期化を走らせてる
・カーネルイメージは非圧縮の方が早い (結果、DMA転送だけでの展開が可能になり、高速化とその間のCPUリソース確保に貢献)
・時間のかかるデバイスの初期化、サービスの起動は後回しにして勘定に入れない(カーネル起動後、後でゆっくり)
・カーネル起動後、ユーザプロセスを起動する前にFlash上に保存してある「ユーザプロセス起動後の画面と同じ画像」をフレームバッファに叩き込み、見た目だけは見繕う
(
Re: (スコア:2, 参考になる)
まず、カーネルはロードするのではなく主記憶(NORフラッシュ)空間に非圧縮(ご明察)で最初からある、そして必要なドライバしかロードしない。
lunuxザウルスもそうですが、組み込み系ではカーネルやユーザーランドプログラムの入ったROM/flashを主記憶に配置してプログラムのロードを
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フラッシュからに見えますが、主記憶と
いうわけではないですね。