「キャッシュメモリ」の版間の差分

削除された内容 追加された内容
追加: 出典、整理: 節の追加
追加: 意義
4行目:
 
キャッシュの一般的な概念は[[キャッシュ (コンピュータシステム)]]を参照のこと。
 
== 意義 ==
 
=== データ帯域 ===
キャッシュメモリは再利用データのキャッシングによる実効データ帯域の増加という意義をもつ。
 
例えば SGEMV([[単精度浮動小数点数|単精度浮動小数点]]の[[Basic Linear Algebra Subprograms#GEMV|行列ベクトル積]])を考える。2.0 GHzで動作する [[Haswellマイクロアーキテクチャ|Haswell]] CPUのシングルコアはピーク時に128GB/sのデータアクセスを要求する<ref>"to sustain Haswell’s CPU peak (e.g., 16 multiply-adds per cycle), a core must access 16 matrix elements (= 64 bytes) per cycle, all from memory ... assuming 2.0GHz processor, it requires memory bandwidth of: ≈ 64 × 2.0 GHz = 128 GB/s" 田浦. (2016). ''[https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2016/slides/pdf/memory.pdf What You Must Know about Memory, Caches, and Shared Memory]''. [https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2018/ 並列分散プログラミング], 東京大学.</ref> (8 [<nowiki/>[[積和演算#%E8%9E%8D%E5%90%88%E7%A9%8D%E5%92%8C%E6%BC%94%E7%AE%97|FMA]]/[[命令 (コンピュータ)|inst.]]] ÷ 0.5 [CPI=cycle/inst.]<ref>"__m256 _mm256_fmadd_ps ... Throughput (CPI) ... Haswell ... 0.5" ''[https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#techs=FMA&text=fmadd&ig_expand=3202 Intel Intrinsics Guide]''. 2022-04-03閲覧.</ref> * 2.0G [Hz=cycle/sec] * 4 [Byte/FP32])。一方プロセッサ-メインメモリ間のレイテンシは数百サイクルであり、並列ロードをおこなっても高々5GB/sしかデータを読み出せない<ref>"A simple memcpy experiment ... 4.575611 GB/sec ... an almost proportional improvement up to 10 lists" 田浦. (2016). ''[https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2016/slides/pdf/memory.pdf What You Must Know about Memory, Caches, and Shared Memory]''. [https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2018/ 並列分散プログラミング], 東京大学.</ref>。すなわちメモリ律速でCPU性能の5%以下しか引き出すことができない<ref>"it requires memory bandwidth ... ≈ 20× more than it provides" 田浦. (2016). ''[https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2016/slides/pdf/memory.pdf What You Must Know about Memory, Caches, and Shared Memory]''. [https://www.eidos.ic.i.u-tokyo.ac.jp/~tau/lecture/parallel_distributed/2018/ 並列分散プログラミング], 東京大学.</ref>。もし行列をキャッシュに載せきることが出来れば、よりレイテンシの小さいキャッシュメモリからデータを供給し高いデータ帯域を確保できる。
 
== 構成 ==