|
top >
技術情報 >
「Interface」 2004年12月号
|
リード/ライトのパフォーマンス
|
NAND型フラッシュのデータ・ポートは,通常20MHz(50ns)のリード・サイクルに対応できます.
つまりフラッシュ内部のバッファへのデータの読み書きは20Mバイト/s(×8)ないし40Mバイト/s(×16)の転送スピードが出せるのです.
しかしながら,実際のシステムに接続した場合には,さまざまな要因によってこれだけのスループットを出すことは不可能です.
まず,チップ自身のオーバヘッドがあります.読み出しのセットアップ・タイムや書き込みの処理時間,
さらにはコマンドとアドレスを投入するサイクルの時間などのオーバヘッドがかかります.
次にメモリ・バスがこれだけのスループットを出せません.CPUからI/Oマッピングされたデバイスへアクセスするには,
アドレス・サイクルとデータ・サイクル,それにいくらかのウェイト・サイクルが必要です.
さらに読み出したデータはメイン・メモリ上のバッファ領域に書き込まれるので,こちらの書き込み動作でもバスがふさがれてしまいます.
ファイル・システムなどを通じてデータをアクセスする場合は,データの転送だけでなく,ソフトウェアでECCを計算するオーバヘッドなどもあり,
最大でも2〜3Mバイト/sが目安になるでしょう.上記のようにメモリ・バスのサイクルを考慮して,
CPUのキャッシュをぎりぎりまで使ったとしてこの倍程度が限界でしょう.これ以上のパフォーマンスが必要ならば,
何か特殊なハードウェアの支援が必須です.
NANDフラッシュからのデータ転送をNANDコントローラのDMA機能を使ったとしても,同様にメモリ・バスのバンド幅がボトルネックになってくるので,
データ転送の性能はそれほど向上しません.DMAを使うことでCPUを空けることができるので,システム全体の効率向上には効果があるでしょう.
以上から,データ転送速度を試算したものを表3に示します.
|
表3 データ転送速度の試算
|
フラッシュ
|
ページ・サイズ
|
528バイト(512+16)
|
メモリ・セル読み出し時間
|
25μs
|
プログラミング時間
|
200μs
|
アドレス投入
|
4サイクル
|
データ・サイズ
|
8ビット
|
メモリ・バス
|
クロック 50MHz(20ns) 4wait リード/ライト 6clock 120ns
|
リード
|
リード・コマンド
|
1×120ns = 120ns
|
アドレス
|
4×120ns = 480ns
|
メモリ・セル読み出し
|
25ns
|
データ転送
|
528×120ns = 63,360ns
|
合計
|
88,960ns
|
転送速度
|
512バイト/88,960ns = 5.76Mバイト/s
|
ライト
|
データ投入コマンド
|
1×120ns = 120ns
|
アドレス
|
4×120ns = 480ns
|
データ
|
528×120ns = 63,360ns
|
プログラム・コマンド
|
1×120ns = 120ns
|
プログラミング時間
|
200μs
|
合計
|
264,080ns
|
転送速度
|
512バイト/264,080 = 1.94Mバイト/s
|
|
|
|
|
|