遅延書き込み

遅延書き込み (Lazy Write Back) とは、キャッシュのアルゴリズムの一つで、頻繁に更新される内容をいったん高速なメモリ上で処理し、最終的に書き込み完了と判断された時点で、低速な媒体に書き込む事である。

メモリキャッシュの遅延書き込み
キャッシュメモリはCPUのレジスタ速度よりは若干遅いものの、DRAMに比べると遥かに高速である。その為、頻繁に発生するメモリ書き込みをキャッシュ上で保持し、DRAMへの書き込みを行わない様にすると、書き込みに要するレイテンシが短縮され、CPUの処理能力は向上する。キャッシュメモリはCPUに直結された信頼できるメモリ領域であり、キャッシュラインの交代ないしは、命令によってDRAMへの出力を強制した時にキャッシュメモリからDRAMへの転記が行われる。この際、キャッシュライン全体にメモリアクセスを揃え、キャッシュラインの全体に揃わないメモリアクセスを一括する事により、DRAMのアクセスタイム全体に対するメモリアクセスの密度を高める事でさらにシステム全体の性能を向上させる事ができる。この実装は、インテルのCPUでは、P6マイクロアーキテクチャで採用され、その後の全てのCPUはこの機能を備えている。AMDもK6プロセッサ上で実現しており、DRAMのアクセスタイムにおけるレイテンシはキャッシュによって隠蔽される。

ファイルシステムの遅延書き込み
ファイルシステムでも遅延書き込みに対応している。この実装はまずハードディスクのコントローラー上で実装され、特にアクセスが集中するファイル管理領域へのアクセスをコントローラー上のキャッシュメモリで保持しておき、ハードディスクへのアクセスが中断されたアイドル時間中に管理領域の情報はハードディスクのプラッターに書き込まれる。この機能は高性能なSCSIハードディスクで実装されたが、高価なキャッシュメモリを必要とされる為、低廉なIDEハードディスクではATA規格が策定され、SCSIコマンドがIDEハードディスクでも使える様になるまで実装されなかった。

この問題はコンシューマー向けオペレーティングシステムを開発しているマイクロソフトに影響を与え、SCSIハードディスクの遅延書き込みと同等の機能をMS-DOSで実現する、ハードディスクキャッシュドライバSmartdrvが開発された。Smartdrvは、管理領域や頻繁に更新される領域へのアクセスをいったんDRAMキャッシュメモリに保持し、ファイルのクローズやディスクへのフラッシュシステムコールが発行されるまで、ハードディスクには書き戻さない事で性能の高速化を図った。同時に既にNetwareで実装されていたエレベーターシーキングも実装している。互換性と信頼性の問題から、IDEハードディスクは依然としてキャッシュメモリによる遅延書き込みはATAコマンドが発行されるまで有効化されなかった。Appleは標準ハードディスクにSCSIハードディスクを採用していた為、この問題が顕著になる事はなく、結果としてSmartdrvが開発されるまでは、Macintoshが高性能ワークステーションとして評価された。

マイクロソフトのAPI
OSのファイルシステム
アルゴリズム