キャッシュは特別な種類のバッファで正しいと言っていますか?どちらも同様の機能を実行しますが、欠けている根本的な違いはありますか?
Wikipediaの data buffers に関する記事から:
バッファは、ある場所から別の場所に移動されている間、データを一時的に保持するために使用される物理メモリストレージの領域です
bufferは、1つの保管場所から別の保管場所に送信されるすべてのデータを循環して保持します(オーディオ処理で循環バッファーを使用する場合など)。バッファはそれを可能にします-データストリーム内の現在の位置の前後のデータの「バッファ」。
実際、バッファとキャッシュにはいくつかの共通の側面があります。ただし、従来の意味でのキャッシュは、通常、データが移動されたときにすべてのデータを格納しない(つまり、CPUキャッシュ)。
cacheの目的は、透過的な方法でデータを格納することです。これにより、十分なデータがキャッシュされ、パフォーマンスを低下させることなく残りのデータを転送できます。このコンテキストでは、キャッシュは少量のデータを「プリフェッチ」するだけです(転送速度、キャッシュサイズなどによって異なります)。
主な違いは、バッファが最終的にすべてのデータを保持することです。逆に、キャッシュはデータのすべて、一部、またはまったく保持していない場合があります(設計によって異なります)。ただし、キャッシュは、あたかも直接データに直接アクセスしているかのようにアクセスされます。正確にキャッシュされるものは、キャッシュの「ユーザー」に対して透過的です。
違いはインターフェースです。キャッシュを使用してデータソースにアクセスする場合は、キャッシュと同じように使用しますisデータソース-キャッシュを介してデータソースのすべての部分にアクセスでき、キャッシュによって決定されますデータのソース(キャッシュ自体、またはソース)。キャッシュ自体がデータのどの部分をプリロードするか(通常は最初だけですが、場合によってはすべて)を決定しますが、使用中の キャッシュ置換アルゴリズム は、キャッシュから何をいつ削除するかを決定します。これの最も良い例は、システムです CPUキャッシュ 自体は別として プリフェッチャー / 先読み です。どちらも、最も使用すると思われるデータの部分をメモリにロードし、何かがキャッシュされていない場合はハードドライブに戻します。
逆に、新しいパーツが既にバッファーに移動されていない限り、バッファーを使用してデータストリーム内の位置を瞬時に移動することはできません。これを行うには、バッファを再配置する必要があります(新しい場所がバッファの長さを超える場合)。新しい場所からバッファを「再起動」する必要があります。これの最も良い例は、YouTube動画のスライダーを動かすことです。
バッファのもう1つの良い例は、Winampでオーディオを再生することです。オーディオファイルはCPUでデコードする必要があるため、曲が読み込まれてからオーディオが処理されてからサウンドカードに送信されるまでに時間がかかります。 Winampはオーディオデータの一部をバッファリングするため、「ロックアップ」を回避するためにすでに処理された十分なオーディオデータがあります(つまり、CPUは常に数百ミリ秒で聞こえるオーディオを準備しているため、リアルタイムになることはありません。 ;あなたが聞くものはバッファから来ます、それは過去にCPUが準備したものです)。
キャッシュはバッファの特定の使用パターンであり、同じデータの複数回の使用を意味すると言う方が正確です。 「バッファ」のほとんどの使用は、1回の使用後にデータが排出または破棄されることを意味します(これは必ずしもそうではありませんが)、「キャッシュ」はデータが複数回再利用されることを意味します。キャッシュは、データが同時に使用されるときにも格納されることを意味しますが、これは必ずしも(プリフェッチなどの場合)必ずしもそうではありませんが、バッファリングは、後で使用するためにデータが格納されることを意味します。
ただし、実装と使用の両方で確かに大きなオーバーラップがあります。
キャッシュとバッファの重要な違いは次のとおりです。
バッファは一次メモリの一部です。これらは、存在し、プライマリメモリ(RAM)からアクセスされる構造です。
一方、キャッシュは、コンピュータのメモリ階層における個別の物理メモリです。
バッファは、バッファキャッシュとも呼ばれます。この名前は、バッファの使用がキャッシュの使用、つまりデータの保存に似ていることを強調しています。一方、違いはその使用状況にあります。
バッファは、データをあるオブジェクトから別のオブジェクトに移動する間、一時的にデータを格納するために使用されます。例:ビデオがインターネットからPCに移動されると、ディスプレイバッファーは、次に表示されるビデオのフレームを保存するために使用されます。 (これにより、ビデオが正常にバッファリングプロセスの後にスムーズに実行されるため、QoSが向上します。)例:別の例は、ファイルにデータを書き込むシナリオです。新しく書き込まれたデータは、二次メモリに瞬時にコピーされません。加えられた変更はバッファに保存され、設計されたポリシーに従って、変更がセカンダリメモリ(ハードディスク)のファイルに反映されます。
一方、キャッシュは、プライマリメモリとプロセッサの間で使用され、RAM)の実行速度とプロセッサの間のギャップを埋めます。また、最も頻繁にアクセスされるデータは、 RAMへのアクセスを減らします。
共通点:どちらも計算と「メイン」ストレージの間の中間データストレージコンポーネント(ソフトウェアまたはハードウェア)です。
私にとっての違いは次のとおりです:
バッファ:
キャッシュ: