CPU/内存/缓存行/Disruptor

来源:互联网 发布:java常用api详解 编辑:程序博客网 时间:2024/06/03 21:00
CPU/内存/缓存行/Disruptor:缓存分为多级缓存(L1/L2/L3...多级缓存)+主存mainMemory,内存中存储的是运行程序和所需数据,
不同级别的缓存大小分配不一样,而且反应速度不一样,一般反应速度越快的缓存所分配的大小越小;
每一级别的缓存又包括很多级别的缓存行,不同计算机分配的缓存行大小不同,eg:32字节、64字节、128字节等;
(备注:因为数组是连续地址存储的,所以一个缓存行上存放多个数组元素,剩余的元素也存放在相邻的缓存行上,所以访问数据时速度要比访问链式数据的速度要快)
加载缓存行上的数据时,程序会加载缓存行上所有的数据(如果一个缓存行上存储的多个数据是不相关的,互不影响的数据,这样就出现过度过多加载,浪费CUP等,
更危险的是一个缓存行上2个不同的数据同时被加载到2个线程中处理,因为处理速度不同,第二个线程处理完成时重写缓存中的数据可能会覆盖掉第一个线程处理写入的结果,
解决方式--伪共享、缓存行填充)
参考:http://blog.csdn.net/kobejayandy/article/details/41025391
0 0