フラッシュメモリの基礎と電源障害に強いファイルシステムの構築

リード/ライトのパフォーマンス

NAND型フラッシュのデータポートは、通常20MHz (50ns) のリードサイクルに対応できます。
つまりフラッシュ内部のバッファへのデータの読み書きは、20Mバイト/s (×8) ないし 40Mバイト/s (×16) の転送スピードが出せるのです。

しかしながら、実際のシステムに接続した場合には、さまざまな要因によってこれだけのスループットを出すことは不可能です。

まず、チップ自身のオーバヘッドがあります。
読み出しのセットアップタイムや書き込みの処理時間、さらにはコマンドとアドレスを投入するサイクルの時間などのオーバヘッドがかかります。

次にメモリバスがこれだけのスループットを出せません。
CPUからI/Oマッピングされたデバイスへアクセスするには、アドレスサイクルとデータサイクル、それにいくらかのウェイトサイクルが必要です。
さらに読み出したデータはメインメモリ上のバッファ領域に書き込まれるので、こちらの書き込み動作でもバスがふさがれてしまいます。

ファイルシステムなどを通じてデータをアクセスする場合は、データの転送だけでなく、ソフトウェアでECCを計算するオーバヘッドなどもあり、最大でも2~3Mバイト/sが目安になるでしょう。
上記のようにメモリバスのサイクルを考慮して、 CPUのキャッシュをぎりぎりまで使ったとしてこの倍程度が限界でしょう。
これ以上のパフォーマンスが必要ならば、何か特殊なハードウェアの支援が必須です。

NANDフラッシュからのデータ転送をNANDコントローラのDMA機能を使ったとしても、同様にメモリバスのバンド幅がボトルネックになってくるので、データ転送の性能はそれほど向上しません。
DMAを使うことでCPUを空けることができるので、システム全体の効率向上には効果があるでしょう。

以上から、データ転送速度を試算したものを表3に示します。

フラッシュ
ページサイズ528バイト (512+16)
メモリセル読み出し時間25μs
プログラミング時間200μs
アドレス投入4サイクル
データサイズ8ビット
メモリバスクロック 50MHz (20ns) 4wait
リード/ライト 6clock 120ns
表3-1 データ転送速度の試算 フラッシュ
リード
リードコマンド1×120ns = 120ns
アドレス4×120ns = 480ns
メモリセル読み出し25ns
データ転送528×120ns = 63,360ns
合計88,960ns
転送速度512バイト/88,960ns = 5.76Mバイト/s
表3-2 データ転送速度の試算 リード
ライト
データ投入コマンド1×120ns = 120ns
アドレス4×120ns = 480ns
データ528×120ns = 63,360ns
プログラムコマンド1×120ns = 120ns
プログラミング時間200μs
合計264,080ns
転送速度512バイト/264,080 = 1.94Mバイト/s
表3-3 データ転送速度の試算 ライト

ページ: 1 2 3 4 5 6 7 8 9 10 11 12 13

まずはお気軽にお問い合わせください

弊社の持つあらゆるナレッジからお客様のビジネスニーズに適したソリューションをご提供します。

株式会社京都ソフトウェアリサーチをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む