質問: l1、l2キャッシュ、dramでは、シーケンシャルアクセスはランダムアクセスよりも高速ですか? l1、l2キャッシュおよびdramでは、先読みを確立する可能性があるため、シーケンシャルアクセスはランダムアクセスよりも高速ですか? hddの場合、これはもちろん桁違いに高速です。
回答: [〜#〜]はい[〜#〜]、いくつかは同じですが、正確には同じではありません。プロセッサのマニュエルによると:-) http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf 特定のハードウェアプリフェッチがあり、プログラマーはプリフェッチするように指示できます。さらに、データのチャンクサイズで機能する方法があり、認識しているプログラマーが利点を得ることができます。また、同じハードウェアまたはソフトウェアの方法がわずかに正しく行われていないと、プリフェッチが何度も何度もスローされる可能性があります。さらに、このようなことはプロセッサごとに異なります。必要になると想定してデータを上位レベルに移動し(先読みなど)、データがチャンクサイズ内にあるため、それらのレベルに移動します(シーケンシャルであることが役立つ場合があります)。 プロセッサは、そこでクォーリングされた命令セット、または実行することのリストを知っているので、そのデータを準備します。 2.1.5.4データのプリフェッチデータは、ソフトウェアのプリフェッチ、ハードウェアのプリフェッチ、またはその2つの任意の組み合わせを使用して、l1dcacheに投機的にロードできます。 。 。 。 - ストリーマー:このプリフェッチャーは、アドレスの昇順および降順のシーケンスについて、l1キャッシュからの読み取り要求を監視します。監視対象の読み取り要求には、ロードおよびストア操作とハードウェアプリフェッチャーによって開始されるl1 dcache要求、およびコードフェッチのためのl1icache要求が含まれます。要求の順方向または逆方向のストリームが検出されると、予想されるキャッシュラインがプリフェッチされます。プリフェッチされたキャッシュラインは、同じ4kページにある必要があります。 。 。 。 -wide dynamic execution smart memory access - prefetches data branch prediction unit instruction fetch unit instruction predecode このリストは、先を見据えた多くの機能を備えたものです。リンクされたドキュメントの60ページから始めます。 https://stackoverflow.com/questions/1922249/c-cache-aware-programming stack overflowではさらに多くのpdfがリンクされており、それについてもっと多くの情報があると確信しています。これとテクニックに関するデータはここに投稿するのに長い時間がかかります、そしてプログラマーからのすべての「それが実際にどのように機能するか」もまた長いでしょう。それだけでなく、私はそれをほとんど理解していません。それ(およびプログラマー情報)を読んだ後、あるソフトウェアがほぼ同じことを実行し、別のソフトウェアよりも50倍速くなる、細心の注意を払ってテストおよび再テストされ、究極の最適化が行われるのも不思議ではありません。いくつかのことを見逃し、正常になります。&[〜#〜] no [〜#〜]、ramはすべて完全にランダムアクセスであり、待ち時間はごくわずかで、「ram」です。 「ハードドライブが先読みアクションを実行するために使用し、バースト転送はプラッターから読み取ることができます。ヘッドの移動には時間がかかり、プラッターからデータを取得しないため、ハードドライブでは順序性が非常に重要です。頭がその場所に到着した後、データがローテーションで現れるまで待たなければなりません。 ハードドライブを先読みすると、同じ回転でデータをプルする可能性があり、ミリ秒の時間を節約できます。2について同様の何かがあると仮定することは、想像力の大きな広がりかもしれません:-)。