导读
缓存设计,
常见的一级缓存应用
计算机的二级缓存设计
常见的一级缓存应用
广义上的缓存技术,下面以memcached为例子,访问应用程序时,如果没有缓存技术应用服务直接读取数据库,第二次继续读取数据库
读取数据库速度则成了系统的瓶颈,为了解决这个瓶颈可以在在应用程序与数据之间加个缓存,当应用程序读取缓存的速度远高于读数据
库时这个缓存会显得更有意义,第一次应用程序会读取数据库,同时填充缓存,以后则可以直接读取缓存,当未命中时再去数据库中获取
计算机的二级缓存设计
没有CPU缓存前
我们可以形象地把CPU的运算单元想象成是一间坐落在城市中心的工厂,把内存看成是工厂设置在郊区的一间面积很大的仓库A。 工厂生
我们可以形象地把CPU的运算单元想象成是一间坐落在城市中心的工厂,把内存看成是工厂设置在郊区的一间面积很大的仓库A。 工厂生
产所需要的原材料每次都要花时间去远处的仓库A调运,而且到达仓库后,还要等待仓库准备好材料,中间浪费了不少时间。这就是CPU
频率未变的情况下,CPU与内存的数据交换不同步的现象。 而突然有一天,由于资金短缺,仓库A从近郊区“搬到”了远郊区,这样原料
和成品在工厂与仓库A之间的运输所花费的时间就更长了,工厂生产所需的原料供应不足,经常处于空运转的状态下。这就是说当CPU频
率增加后,CPU与内存交换数据等待需时间会变得更长。
增加L1Cache
要解决CPU与内存交换数据不同步这个系统瓶颈问题,其中一个办法是在靠近工厂的市区设置一个小型的仓库B(L1Cache)。 平时把生
产最迫切需要、用得最多的原材料(指令和数据)从仓库A(内存)调配到仓库B(L1Cache),这样工厂生产所需要的原材料就可以很快
地调配过来,减少空运转的时间。当所需的原材料在仓库B中找不到(缓存未命中)时,仍然要到仓库A(内存)里调配,虽然无可避免地
使工厂又进入空运转,或部分空运转(CPU等待若干个时钟周期),但这样毕竟使等待时间大大降低了。 小知识:缓存有一个“预读”功
能,也就是可以通过一定的算法,猜测接下来所要的数据,并预先取入缓存。
再添L2Cache
随着CPU的频率提高,与内存之间交换数据不同步的现象更明显了,可以理解为仓库A(内存)搬离郊区,迁到更远的地方了。解决这一问
题的一个更好的办法就是在城市的边缘再设立一个比仓库B大,的仓库C也就是我们说的二级缓存。 它的作用是把郊区之外的仓库A(内存)
中最迫切用的材料(指令)运到仓库C,而工厂如果在仓库B中找不到所需的材料,就可以到仓库C中找,而不必老远跑到仓库A那里找,节
省了不少时间。 通常情况下,L2包括L1所有的数据,另外还有一些附加的数据。换言之,L1与L2、L2与内存之间是子母关系,所以CPU缓
存的出现更有效地解决了CPU空等待所造成的资源浪费问题。
CPU缓存越大越好?
当然,CPU缓存并不是越大越好,因为缓存采用的是速度快、价格昂贵的静态RAM(SRAM),由于每个SRAM内存单元都是由4~6个晶体
管构成,增加缓存会带来CPU集成晶体管个数大增,发热量也随之增大,给设计制造带来很大的难度。 所以就算缓存容量做得很大,但如
设计不合理会造成缓存的延时,CPU的性能也未必得到提高。
无处不在的28法则
自从19世纪末帕累托提出“28法则”后,其重要的实用价值得到充分体现。无论是经济社会活动,还是人们日常生活,无不呈现出“28法则
”现象。20%的品牌占有80%的市场份额;20%的产品和20%的顾客,承担了企业约80%的营业额; 20%拥有80%的财富 80%拥有20%的
财富;等等;28法则在系统中的应用,80%的用户只使用了系统20%的功能,80%的用户会集中时间段登录,在架构中体现为,如何提高
80%用户的性能,系统如何迅速满足80%用户的用户体验。
系统架构二级缓存的应用
首页中