硬件和操作系统
2021-02-16 本文已影响0人
watermountain
缓存一致性协议
多核CPU的Cache中,某些数据Cache后,数据在“写入”和“读取”的时候必须满足一些规范,通常叫作“缓存一致性协议”。
使用这种规范来实现架构,以满足多个CPU对同一个变量修改时,相互之间都是知道的。
当有来自于内存的同一份数据Cache在多个CPU中,且要求这些数据的读写一致时,多个CPU之间就需要遵循缓存共享的一致性协议
内存单元有修改(Modified)、独占(Exclusive)、共享(Shared)、失效(Invalid)4个状态,多个CPU通过总线连接,每个CPU的Cache处理器除了要去响应本身所对应的CPU的读写操作外,还需要监听总线上其他CPU的读写操作,通过监听对自己的Cache做相应的处理,形成了一种虚共享,这个协议叫作MESI协议。
一个CPU加载一块内存是专用的;
当另一个CPU也加载了同一块内存时,那么此时两个CPU持有的信息将处于共享状态。
两者的区别是:CPU加载数据前是否监听到“读”广播;当发生写操作时会先尝试发起写广播(此时若有读,则会有一个优先问题),这个广播则会改掉数据,并且相应的其他CPU监听到数据被修改后,则会将自己的相应拷贝设置为失效状态。
一个数据修改了,需要告诉其他的CPU这份数据被修改。Intel的微架构技术时QPI(快速通道互联),又名CSI,公共系统接口。
CPU之间的交互是有一个时间差的,通常在20ns~40ns级别,频繁的交互会导致系统性能下降,而且CPU的使用量会飙高。
Cache Line
将“一段连续的内存区域”进行Cache。通常以64字节为单位进行Cache操作。