1:一个电脑可以安装多个cpu, 根据电脑主板是否支持。
2:每个cpu有多个核,多个核提升cpu并行的处理能力
3:cpu有三级缓存,镶嵌在cpu中,解决内存性能跟不上的问题
4:一个cpu有多个核, 每一个核处理一个线程。 l1,l2缓存是每个核独有的,l3缓存是多个核共享的。
5:当加cpu的和处理 处理一段加法运算。先从l1缓存找数据,没有依次从l2,l3找,都找不到,去内存中加载数据,依次在l3,l2,l1中复制该数据
6:l1,l2,l3 最小存储单位是缓存行,64字节(byte)
7: cpu的空间局部性,当cpu在一个内存中加载数据到缓存中,它会把该数据周围连续的数据加载缓存中去。
8:cpu的时间局部性,当一个数据被加载,cpu会认为一段时间,该数据还会被使用,不会立马清除
9:例子:一个long类型的二维数组,数据相加 ===== long[ 1024 ] [ 6 ]
一维数组是1024个数据,二维是6个数据,要把1024*6相加。
第一种方式:先加二维数组6个数据
第二种方式:先加一维数组1024个数据
=================================================================
先从内存中加载 [0][1] 到内存中去,根据cpu空间局部性,会把[0][1]这个数据的连续数据加载到内存中去。
如果按照第一种方式,它会把[0][1],[0][2],[0][3],[0][4],[0][5],[0][6]同时加载到内存中去
如果按照第二种方式,它会只把[0][1]加载到内存中去,其它的连续数据在其它维度里。不相邻
所以第一种方式,cpu请求内存1024次。第二种方式1024*6次。