博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Memory,Cache,Buffer的区别
阅读量:4229 次
发布时间:2019-05-26

本文共 1139 字,大约阅读时间需要 3 分钟。

无论是内存,缓存,缓冲本质上都是为解决不同设备读写速度不匹配的问题。而CPU读取数据的顺序是先缓存Cache后内存Memory。

一、内存 Memory

Memory,内存处理器,作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换数据的临时存储器。

二、缓存 Cache

缓存 Cache,即数据交换的缓存区,是位于CPU与主内存间的一种容量较小,速度较快的临时存储器。因为CPU处理速度远高于主内存,CPU直接从内存中读存数据需要等待一定周期,因此将待使用数据存放在Cache中可限制减少CPU的等待时间,提高了系统的效率,帮助硬件更好的运行。

Cache的工作原理是当CPU要读取一个数据时,首先从缓存中查询,如果没找到,就从较慢的内存中读取,同时把数据所在的数据块调入缓存,使得CPU之后对该数据块的读取从缓存中进行,提高了CPU读取缓存的命中率(80%),大大的提升了CPU读取数据的时间。

为了保证CPU的命中率,缓存中的内容按照一定的算法予以更换,常用的是 “最近最少使用算法,LRU算法”,将最近一段时间内最少访问的数据行淘汰出局,核心:为每行设置一个计数器,每次CPU命中某行数据,则该行数据计数器清零,其他行计数器+1,最后将计数器最大的数据行淘汰出Cache中,因此,read cache的数据随机的。

Cache分为L1 Cache,L2 Cache,L3 Cache三种,早期以是否集成在CPU内核为判断标准,但随着技术的发展,L2也可以集成在CPU内核中,所以定义的概念已经不准确了。理论上,读取Cache命中的概率为80%,那么在缓存中命中数据的概率为:P(L1)+P(非L1)*P(L2) = 0.96,极大的提高了命中数据的概率。

三 、缓冲 Buffer

Buffer,缓冲区,用于存储速度不同步的设备或优先级不同的设备之间的数据传输。通过Buffer可以减少进程间通信需要的等待时间,当存储速度慢的设备和存储速度快的设备进行通信时,存储速度慢的设备先将数据存放到Buffer中,每当Buffer满或者主动flush buffer时主动触发数据读取,对于少量数据,当Buffer满时才read一次;当数据量大时,可控制每次read的数据量,因此,无论数据量的大小每次read buffer的数据量都是按照buffer尺寸的数据量,因此,read buffer的数据是顺序访问的。

write buffer如同 read buffer一样,无论数据量的大小按照buffer尺寸写入,而write cache则是cache中保存需要多次写入的数据,两者没有明显的区别,本质上都减少了write的次数,因此在实际生产中,两者常共同使用。

转载地址:http://iaiqi.baihongyu.com/

你可能感兴趣的文章
Digital Image Processing: PIKS Scientific Inside
查看>>
Photoshop CS3 For Dummies
查看>>
Beginning DirectX 9
查看>>
Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#
查看>>
SQL Server 2005 Reporting Essentials
查看>>
Build Your Own Ruby on Rails Web Applications [ILLUSTRATED]
查看>>
Secure Your Network for Free [ILLUSTRATED]
查看>>
The Elements of UML(TM) 2.0 Style
查看>>
The OpenBSD 4.0 Crash Course
查看>>
Writing Scientific Software: A Guide to Good Style
查看>>
Pro Oracle Collaboration Suite 10g
查看>>
Oracle SQL Tuning Pocket Reference
查看>>
Pro XML Development with Java Technology
查看>>
Pro OGRE 3D Programming
查看>>
Pro ASP.NET 2.0 in VB 2005, Special Edition
查看>>
Pro ASP.NET 2.0 in C# 2005, Special Edition
查看>>
PowerPoint 2007 for Starters: The Missing Manual [ILLUSTRATED]
查看>>
Rails for Java Developers [ILLUSTRATED]
查看>>
LINQ: The Future of Data Access in C# 3.0
查看>>
Everyday Scripting with Ruby: For Teams, Testers, and You [ILLUSTRATED]
查看>>