笔记: 理解CPU的并行性

理解CPU的并行性

影响性能的主要因素:

CPU : 核心数量、线程数据量,(C/T), 越多越强大, 每个核心拥有自己的L1 和 L 2 和L2 L2, L3 为 共 享 高 速 缓 存 , L 3 为共享高速缓存,L3 L3目前能搞32M以上。

SRAM: 静态随机存取存储器,CPU和芯片组的基材,高速缓存,以速度为目标。

DRAM:动态随机存取存储器,主存基材,以更高带宽和存储为目标,读取耗时。

内存带宽: 以千兆字节每秒为单位,越高意味着I/O速度越高。

核心: 按序核心即指令按照顺序串行执行, 低功耗,省钱;乱序核心即指令按照操作可用性顺序执行,高功耗,贵。

瘦线程和胖线程:当两个线程共享一个核心时,必须共享所以核心的资源;一个线程对核心资源需求量少为瘦线程,需要大量核心资源的为胖线程;每个线程都是胖线程,增加线程数量会使大家都挣抢资源降低性能。

开发的方式:

1.读取零碎数据或频繁读写的数据,存储在高速缓存中,高速缓存读取速度快,能保证性能

2.以批量的方式访问存储器DRAM中数据,存储量大,一次读取整行慢,但放入高速缓存再操作性能能够提升,在DRAM中不适合频繁I/O单字节的数据,耗时

3.隔离,每个核心中有独立缓存,每个线程读写数据不多于高速缓存,各自独立,性能能够提升。

4.瘦线程、胖线程协调搭配提升性能,即指令多的和资源消耗大的线程一起搭配。

5.了解计算设备高速缓存每个层次的大小,尽量使程序控制在这个范围内。

L1$ : L1 有 32 K B 的 数 据 缓 存 , 32 K B 的 指 令 缓 存 , 总 量 64 K B , L 1 有32KB的数据缓存,32KB的指令缓存,总量64KB , L1 32KB32KB64KB,L1的访问速度非常快(4个时钟),每个核心有独立的。

L2$ : 256KB, 不分数据和指令 ,访问速度很快(11~12个时钟),每个核心有独立的。

L3& : 15MB ,访问比DRAM快 ,(22个时钟),所以核心共享L3$

DRAM: 行读取访问,2KB~8KB, 访问速度很慢(200~400个时钟)

  • 每个线程尽量重复访问32KB范围内的数据
  • 尽可能将更大范围的访问限制在256KB内
  • 所有启动线程,尽量将整体的数据访问规模限制在L3 范 围 内 , 保 证 L 3 范围内,保证L3 L3较高的使用率

你可能感兴趣的:(高并发,缓存)