分站导航--->>>‖企业吧企业黄页网站导航免费信息友情链接竞价排名法律检索邮编查询在线黄历手机定位IP定位更多>>>
德佳网络资讯频道 加盟德佳网络企业吧!免费企业黄页注册
加入收藏
设为首页
免责声明
企业注册
主页
奥运 新闻 社会 百科 生活 家庭 奇闻 体坛 数码 彩信 摄影 设计 法制 电脑 科技 资源
 您当前位置:德佳网络 >>> 图文资讯频道 >>电脑常识
高速缓存的作用和功能
作者(未知) 来自(news.w798.com 德佳网络图文资讯频道) 点击数(1)加入时间(2008-7-5)
将本文推荐给QQ/MSN好友:
 缓存(Cache memory)主要的原理是程序的时间局部性和空间局部性。一般的cpu中往往都有多级的缓存(一般都是寄存器)。通过高速缓存,可以使计算机以较小的成本,实现较大的内存和较快的存储速度。

谈谈硬盘的高速缓存:

   缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器。由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用。缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能。当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,如果有大缓存,则可以将那些零碎数据暂存在缓存中,减小外系统的负荷,也提高了数据的传输速度。

  硬盘的缓存主要起三种作用:一是预读取。当硬盘受到CPU指令控制开始读取数据时,硬盘上的控制芯片会控制磁头把正在读取的簇的下一个或者几个簇中的数据读到缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高),当需要读取下一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据,直接把缓存中的数据传输到内存中就可以了,由于缓存的速度远远高于磁头读写的速度,所以能够达到明显改善性能的目的;二是对写入动作进行缓存。当硬盘接到写入数据的指令之后,并不会马上将数据写入到盘片上,而是先暂时存储在缓存里,然后发送一个“数据已写入”的信号给系统,这时系统就会认为数据已经写入,并继续执行下面的工作,而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据写入到盘片上。虽然对于写入数据的性能有一定提升,但也不可避免地带来了安全隐患——如果数据还在缓存里的时候突然掉电,那么这些数据就会丢失。对于这个问题,硬盘厂商们自然也有解决办法:掉电时,磁头会借助惯性将缓存中的数据写入零磁道以外的暂存区域,等到下次启动时再将这些数据写入目的地;第三个作用就是临时存储最近访问过的数据。有时候,某些数据是会经常需要访问的,硬盘内部的缓存会将读取比较频繁的一些数据存储在缓存中,再次读取时就可以直接从缓存中直接传输。

  缓存容量的大小不同品牌、不同型号的产品各不相同,早期的硬盘缓存基本都很小,只有几百KB,已无法满足用户的需求。2MB和8MB缓存是现今主流硬盘所采用,而在服务器或特殊应用领域中还有缓存容量更大的产品,甚至达到了16MB、64MB等。

  大容量的缓存虽然可以在硬盘进行读写工作状态下,让更多的数据存储在缓存中,以提高硬盘的访问速度,但并不意味着缓存越大就越出众。缓存的应用存在一个算法的问题,即便缓存容量很大,而没有一个高效率的算法,那将导致应用中缓存数据的命中率偏低,无法有效发挥出大容量缓存的优势。算法是和缓存容量相辅相成,大容量的缓存需要更为有效率的算法,否则性能会大大折扣,从技术角度上说,高容量缓存的算法是直接影响到硬盘性能发挥的重要因素。更大容量缓存是未来硬盘发展的必然趋势。

高速缓存产生作用的时机:

    我们虽然常常拥有大量数据,但最经常使用的往往只有其中一小部分。如国标汉字有6763个,但经常使用的只有3000个,其中几百个又占了50%以上的使用频率。因此人们想到,如果将这几百个放到存取最快的地方,就可以用很小的代价大大提高工作速度。高速缓存的工作原理基本就是这样。例如我们知道内存的存取速度比硬盘快得多,我们可以在一开机时就将宋体字的前3000个、黑体字最常用的500个装入内存专门开辟的区域,这样当使用这部分字的时候就可以从内存取字,其余的才会去读硬盘。内存开辟的这部分区域就叫做高速缓存,它可能只占所有字体存储量的十分之一,但可以将读写字库的速度提高几十倍。

    我们来具体看一下高速缓存起的使用。假设我们有100M数据,其中1M数据的使用频率占到了50%,又知内存存取时间只有硬盘时间的10万分之一,因此如果我们用1M内存做高速缓存存储最常用的1M数据就可以差不多将平均存取速度提高一倍。从这个例子可以看出,当数据使用越不平均,两种存储器之间的速度差越大时CACHE的作用就越大。

    以上是一类使用分布固定的例子,在这种情况下,只要固定将这一部分数据装入最快的存储器就可以了。但在许多情况下,数据的使用频率是不确定的,特别它是与时间相关的。如当我们在写一篇文章时,对这篇文章的内容存取就特别频繁。而过一会儿又去修一张照片,存取操作就转移到了这张照片的数据上去,文章的数据就基本不用了。要让一个系统能够自动地根据当前数据的使用频率改变高速存储器中的内容才能使我们专门开出的高速缓存起作用。因此整个高速缓存系统应该包含调度数据的软件。

CACHE系统怎样调度数据

    怡泓软件早在1983年就在软件内部使用了硬盘的CACHE系统,在早期内存很小的情况下有效地提高了硬盘上大量数据的存取速度。而PC DOS操作系统直到1990年的DR DOS 5.0和MS DOS 4.0中才内含了CACHE程序。从WINDOWS 3.0开始操作系统中都内建了硬盘CACHE系统,CACHE的概念也逐渐延伸到硬盘内部和CPU内部。

    CACHE对数据的调度不一定只在两种存储器之间进行,如现在的CPU就有片上的一级、二级和内存共3种存储器。为了便与理解,我们都以两种存储器为例。

    为使CACHE系统能够起到提高速度的作用,这两种存储器的速度必需有比较大的差异。如果用通用CPU来完成数据调度,两种存储器的速度差至少应该达到100倍以上。因为调度程序在每完成一次数据访问时至少要消耗20-30个指令周期,如果速度只差10倍,用CACHE比不用还要慢。

    数据的调度并不像我们想像地那样简单。第一高速存储器中的每一个数据必需带有地址信息,因为它从第二级存储器中提出来后已经不是按顺序排列。为了避免地址信息过多而造成的空间浪费和查询时间的浪费,必需将数据分成块。块的大小也很有讲究。太小了起不到压缩时间和空间的作用,太大了读一个数据会造成数百个可能用不着的数据涌入高速存储器,反而起不到压缩空间的作用。

    高速存储器中数据的地址信息查询是数据调度时运算的大头。当高速存储器很大时,它的地址表也会很长。从计算机指令发出的是对第二级存储器的存取指令,为了要看它是否在高速存储器中,必需去查询这个地址表。如果地址信息是顺序排列的,平均查询时间将是表长的一半。如果表长到了1000项,平均查一个数据地址就要500次比较。即使两级存储器的速度差达1000倍,这种方法也占不了任何便宜。一种方法是优先级排序法,即每经过一段时间的使用就根据每块数据的使用频率修改表的排列,让频率最高的数据块的地址排到最前面去,这样可以有效地缩短查表次数。这是我们过去使用的方法。Intel发明了一种抢队头的方法。即每一个数据一旦被使用,就将它放到地址表的第一位去。它的优点是重整地址表的算法最简单,缺点是地址表的排列通常不是最优化的。还有一种方法是通过散列表来用空间换时间,这种算法稍微复杂一点,但它通常可以在2次查询就找到所需的地址,不过计算散列地址也要消耗不少时间。

    我们从以上算法的简单介绍就可以看出,CACHE技术不是在什么地方都可以使用的灵丹妙药,它受调度计算的很大制约。在CPU内部,两级存储器的速度差往往到不了100倍以上,如何能实现有效的CACHE调度?它其中必须有专用的调度算法部件,以保证在1/3的速度差之内完成调度运算,否则最多只能实现一级缓存。

CACHE作用的局限性

    从上面对CACHE调度算法的简单介绍我们已经看到,在没有专用算法部件的情况下,只有当两级存储器速度差很大的时候CACHE才起作用。内存和硬盘的速度差通常为105数量级,因此用内存做硬盘的高速缓存通常是很有效的。

    另一方面,高频使用的数据必须远小于高速缓存的大小才行,如果大于高速缓存的大小就会造成刚进入缓存的数据马上就被后来的数据挤出去,非但没有加快速度,反而增加了一道间接传递的时间。当我们用PHOTOSHOP处理的图像数据大于内存的1/3时就会出现这种情况。好在内存的速度远大于硬盘的存取速度,这点变化我们通常感觉不出来。但在CPU中,就会非常明显。CPU在处理图像数据时,每次处理的数据量都远远超过它内部的一级和二级缓存,因此它的作用将大大降低,唯一的补偿是处理程序的指令在一个操作——如锐化——中是固定的,它可以常驻高速缓存,减少读指令的时间。这时不同CPU缓存的大小对运算速度的影响就很小了。因为即使再小的缓存,也存得下操作指令;再大的缓存也存不下被操作的图像数据。

    在CACHE调度中,为了保证数据的安全而做的回写操作也是阻碍效率的因素。在对数据进行写操作时,可以不将它写回二级存储器,如硬盘,一直到文件关闭甚至操作系统退出时再回写,这样的效率当然最高,但是非常不安全的。一旦一个程序崩溃,其它所有程序的数据就可能都损失了。所以现在的CACHE调度方案通常都内定必须立即回写。我们马上会想到,优化效率的一半没有了。实际情况并非如此。因为回写操作其实并不是立即发生的,它可以由一个优先级较低的线程去完成,当你在考虑怎么进一步调色时,操作系统插空将数据写回硬盘。

    即使内存非常大,PHOTOSHOP也将它的每一步操作写回硬盘,这可以从PHOTOSHOP每次崩溃后都留下一个巨大的临时文件看出。因此如果我们连续对图像做旋转、变形等操作,即使用了极大的内存,CACHE作用也只发生了一半。因此要全面提高PHOTOSHOP的效率,必须用RAID等技术提高硬盘的直接读写速度。同理,硬盘上的2M或4M缓存对于动辄几十M的图像数据是毫无作用的.
相关分类
常用软件
图形图像
软件应用
电脑常识
病毒防护
分类热门文章
·电子图书常用文件格式
·电脑维护基本常识
·操作系统
·注销有什么作用
·什么是镜像文件
·什么是超线程技术
·什么是html格式
·使用U盘要注意什么
·电脑死机故障分析
·高速缓存的作用和功能
栏目相关文章
  • 歹徒持刀闯入上海闸北公安局 致5死5伤(图)
  • 沪深两市双双高开
  • 遇到餐厅强行收取“消毒碗筷费”
  • 黄亮发生工伤事故
  • 遇到餐厅强行收取“消毒碗筷费”时可以拒付
  • 文章搜索
    文章编号-1136文章页数[1] 
    相关评论
    将本文推荐给QQ/MSN好友:
    餐饮住宿 医疗保健 家居装修 汽车超市 教育培训 文化体育 日用百货 灯饰照明 能源开发
    家用电器 农副食品 旅游观光 休闲娱乐 健身美容 社会福利 印刷包装 服装服饰 电脑it行业
    广告媒体 办公商务 五金交电 加工制造 机电设备 建筑工程 交通运输 绿化环保 电子工业
    专业服务 农林畜牧 金融投资 信息产业 专项事务 化工行业 行政事业 特种服务