キャッシュには、読み取りキャッシュと書き込みキャッシュの 2 つの主要なクラスがあります。 読み取りキャッシュは、他の方法ではアクセスが遅くなるデータへの高速アクセスを提供するツールです。 書き込みキャッシュは、書き込み速度が高速であるかのように見せかけるツールであり、通常、メモリ デバイスの実際の低速をユーザーから隠します。
キャッシュの構造
通常、キャッシュは実際のデータよりも 1 つ下のメモリ層に格納されます。 ただし、1 つのキャッシュからのデータは、次のメモリ層にさらにキャッシュされる場合があります。 4 つのメモリ層があり、CPU キャッシュ/レジスタが最下位で最速の層であり、アーカイブ ストレージが最上位で最も遅い層です。 最下層から最上位層は、CPU キャッシュ/レジスター、システム RAM、ストレージ ドライブ、およびアーカイブ ストレージです。
メモリ階層を下げるたびに、アクセス速度は向上しますが、容量は減少します。 ほとんどのホーム ユーザーは、現実世界で最も低い 3 つのストレージ層しか持っていません。 一般に、アーカイブ ストレージとは、長期のオフライン ストレージを目的としたテープ ストレージを指します。 アーカイブ ストレージは、デバイスから取り外されてオフラインに保たれている光学式またはその他の標準的なストレージ メディアの使用を指す場合もあります。 これらの例は、家庭で見つかる可能性が非常に高いですが、まだそれほど一般的ではありません.
ノート: ある程度、クラウド ストレージはアーカイブ ストレージの変形と考えることができます。 それは非常にオンラインですが、必ずしもすぐにアクセスできるとは限らず、一般的にアクセスが遅くなります. USB メモリなどのリムーバブル メディアも、ストレージ ドライブとアーカイブ ストレージの境界をややまたいでいます。
ディスクキャッシュの種類
ディスク キャッシュとは、「ディスク」、つまり SSD や HDD などのストレージ ドライブ上の任意のキャッシュを指します。 ディスクキャッシュには 3 つのタイプがあります。 読み取りキャッシュには、必要なときにアクセスを高速化するために、一時的にアーカイブ ストレージから一部のデータをコピーすることが含まれます。 書き込みキャッシュは、SSD 上の SLC キャッシュの形式を取ることができます。 I/O キャッシュは、通常、読み取り操作と書き込み操作の両方をキャッシュするために使用されるフラッシュ メモリまたは DRAM です。 これらすべての決定的な特徴は、キャッシュがディスク自体にあることです。
ディスクキャッシュの読み取り
ディスク キャッシュの読み取りキャッシュ バージョンは、おそらく最も使用頻度の低いタイプのディスク キャッシュです。 アーカイブ ストレージは、その定義上、ほとんど必要ありません。 データは、アーカイブ メディアから直接読み取ることもできます。 問題は速度です。 データがオフラインであるためアクセス時間が遅く、適切なストレージ デバイスを識別して接続する必要があります。 読み取り速度はアーカイブ メディアによって異なりますが、通常はほとんどの場合十分です。 ただし、高解像度ビデオの表示などの高帯域幅要件には適していない場合があります。 これらのシナリオでは、読み取りディスク キャッシュを使用して、ビデオ ファイルのコピーをリアルタイムで再生できるストレージ メディアにキャッシュできます。
ディスクキャッシュの書き込み
最新の SSD は非常に高速で、信じられないほど高速な読み取りおよび書き込み速度を提供します。 あなたが気付いていないかもしれないことは、これが技術的に真実ではないということです. 市場に出回っているほとんどの SSD は TLC、別名トリプル レイヤー セルです。 これは、各メモリ セルが 3 ビットのデータを格納できることを意味します。 これは、セルあたり 1 ビットで生の SLC (Single Layer Cells) の 3 倍のストレージ密度を提供しますが、はるかに遅くなります。
ヒント: TLC フラッシュはまだ高速です。 これは、HDD や初期の SSD で使用される SATA 3 バスのピーク帯域幅よりも何倍も高速です。 QLC フラッシュまたはクアッド レベル セルはさらに遅く、一部のテストでは、実際には HDD よりも低速です。
SLC キャッシュは、遅い書き込み速度をユーザーから隠すために発明されました。 SLC キャッシュは、TLC フラッシュを SLC フラッシュとして単純に扱い、高速で動作できるようにします。 SLC キャッシュに書き込まれたデータは、書き込み速度が許す限り内部で TLC フォーマットにコピーされます。 この手法は非常にうまく機能し、新しいより高速な標準の開発を必要とする高速化を実現します。
ただし、SLC キャッシュにはいくつかの注意点があります。 SLC キャッシュのサイズは、SSD の残りの空き容量の 1/3 です。 SSD がいっぱいになると、SLC キャッシュのサイズが減少します。 これは、大容量の空のドライブではそれほど問題にはなりませんが、容量が小さいまたは大容量に近い SSD では問題になる可能性があります。 SLC キャッシュがいっぱいになると、ユーザーは本物の TLC 書き込み速度にさらされるため、書き込み速度が劇的に低下することがわかります。
ノート: 技術的には、将来データがアーカイブ メディアに書き込まれる場合、ストレージ ディスクはアーカイブ メディアの書き込みキャッシュと見なすことができます。 ただし、この意味は一般的に想定されていません。
I/O ディスクキャッシュ
HDD は、最適なワークロードであっても、一般的にかなり低速です。 これを可能な限りユーザーから隠すために、I/O キャッシュを使用できます。 I/O キャッシュは、必要に応じて読み取り操作と書き込み操作の両方をキャッシュします。 このキャッシュは通常、フラッシュ メモリまたはドライブ自体の DRAM で構成されます。 容量は一般的に小さいですが、フラッシュ メモリを搭載した SSHD またはソリッド ステート ハイブリッド ドライブ クラスは、最新の SSD 容量に匹敵するものではありませんが、より多くの機能を提供します。
キャッシュ読み取りとは、HDD がデータを見つけて読み取る必要がないことを意味します。 これにより、優れたパフォーマンス上の利点が得られますが、それは後続の読み取り操作でのみです。 最初の読み取りは常に遅いです。 書き込みをキャッシュするということは、小さな書き込み操作をキャッシュに吸収してから、可能な限り高速に実際の HDD に書き込むことができるということです。 これにより速度が向上しますが、キャッシュが使い果たされるとパフォーマンスが大幅に低下します。
I/O キャッシュは、特に小さなキャッシュしか利用できない場合、読み取り機能と書き込み機能の両方のニーズを慎重にバランスさせる必要があります。 キャッシュが大きいほど、この問題は多少解消されますが、大規模なデータ セットを使用するエッジ ケースでは、依然として最大の SSHD のフラッシュ キャッシュが圧倒される可能性があります。
ノート: SSD は、技術的にはオンボード DRAM を I/O キャッシュとして使用することもできます。 ただし、これは通常、SSD 上のデータを検索するために使用される論理アドレスから物理アドレスへの変換テーブルを格納するために主にまたは排他的に使用されます。
結論
ディスク キャッシュは、ストレージ ドライブに直接存在するキャッシュです。 これは、読み取りまたは書き込みキャッシュまたは I/O キャッシュの形式を取ることができます。 読み取りキャッシュは通常、低速のアーカイブ ストレージからデータをキャッシュします。 書き込みキャッシュは、ストレージ ディスクの遅い書き込み速度をユーザーから隠します。 I/O キャッシュは、遅い読み取り速度と遅い書き込み速度の両方をユーザーから隠します。
キャッシュは優れた使いやすさのツールですが、枯渇するとユーザーにとって頭痛の種になる可能性があります。 これは、SLC キャッシュなどの動的書き込みキャッシュに特に当てはまります。 技術者ではないユーザーは、書き込み速度が非常に遅い理由を理解していない可能性があるため、容量の問題に対処することでそれらを修正することはできません.