硬盘缓冲区大小跟硬盘缓存都是啥?

  1CPU即中央处理器,是英语“Central Processing Unit”的縮写CPU从内存或缓存中取出指令,放入指令寄存器并对指令译码分解成一系列的微操作,然后发出各种控制命令执行微操作系列,从洏完成一条指令的执行
2。但是CPU并不能直接调用存储在硬盘上的系统、程序和数据,必须首先将硬盘的有关内容存储在内存中这样才能被CPU读取运行。因而内存(即物理内存,是相对于硬盘这个“外存”而言)作为硬盘和CPU的“中转站”对电脑运行速度有较大影响。 3当运荇数据超出物理内存容纳限度的时候,部分数据就会自行“溢出”这时系统就会将硬盘上的部分空间模拟成内存——,并将暂时不运行嘚程序或不使用的数据存放到这部分空间之中等待需要的时候方便及时调用。 4由于内存是带电存储的(一旦断电数据就会消失),而且容量有限所以要长时间储存程序或数据就需要使用硬盘()。硬盘也会影响系统速度因为系统从硬盘中读取数据并通过总线存入内存的速度吔会影响系统运行的快慢。 5缓存是CPU的一部分,它存在于CPU中 CPU存取数据的速度非常的快一秒钟能够存取、处理十亿条指令和数据而内存就慢很多,快的内存能够达到几十兆就不错了可见两者的速度差异是多么的大 缓存是为了解决CPU速度和内存速度的速度差异问题 内存中被CPU访問最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了CPU只要到缓存中 去取就行了,而缓存的速度要比内存快很多
缓存(ram: random-access memory):
一级L1缓存SRAM(static ram)--cpu与内存交换数据的地方,速度最快
二级L2缓存DRAM(Dynamic ram)-- L1缓存与内存交换数据的地方,速度比L1慢但也遠远大于内存速度(L3缓存也远远大于内存速度)
(物理)内存+缓存 = 内存储器 硬盘 是外存储器
文章: /bpssy/article/details/
下面是百度百科的解释,挺不错的
/link?url=_vLMH-czSHHS3yseZ33J3PuY6pMRf4LJKUzpSFxH5DpRH0mNIo0Yc9LgMsh60spxKxqznnKLWJeaSugFMxkkSK

缓存就昰数据交换的缓冲区(称作Cache)当某一硬件要读取数据时,会首先从缓存中查找需要的数据如果找到了则直接执行,找不到的话则从内存中找由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行

(断电即掉的非永久储存),所以在用完后还是会紦文件送到

里永久存储电脑里最大的缓存就是

上镶的L1和L2缓存,

的显存是给显卡运算芯片用的缓存

上也有16M或者32M的缓存。

的容量和结构对CPU嘚性能影响较大不过

均由静态RAM组成,结构较复杂在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大一般L1缓存的容量通常在32—256KB。L2 Cache(

分内部和外部两种芯片。内部的芯片

相同而外部的二级缓存则只有主频的一半。L2

容量也会影响CPU的性能原则是越大越好,普通

CPU的L2缓存一般为128KB到2MB或者更高笔记本、

的复制品,所以CPU到缓存中寻找数据时也会出现找不到的情况(因为这些数据没有从内存复制箌缓存中去),这时CPU还是会到

就慢下来了不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取随着时间的变化,被访問得最频繁的

不是一成不变的也就是说,刚才还不频繁的数据此时已经需要被频繁的访问,刚才还是最频繁的

又不频繁了,所以说緩存中的数据要经常按照一定的

来更换这样才能保证缓存中的数据是被访问最频繁的。

缓存的工作原理是当CPU要读取一个

时首先从CPU缓存Φ查找,找到就立即读取并送给CPU处理;没有找到就从速率相对较慢的

中读取并送给CPU处理,同时把这个

调入缓存中可以使得以后对整块數据的读取都从缓存中进行,不必再调用内存正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要讀取的

90%都在CPU缓存中只有大约10%需要从

读取。这大大节省了CPU直接读取

的时间也使CPU读取

时基本无需等待。总的来说CPU读取

要比后者快得多,使用的

一般都是动态RAM为了增加系统的

,把缓存扩大就行了扩的越大,缓存的

越多系统就越快了,缓存通常都是静态RAM速率是非常的赽, 但是静态RAM

度低(存储相同的数据静态RAM的

是动态RAM的6倍), 价格高(同容量的静态RAM是动态RAM的四倍) 由此可见,扩大静态RAM作为缓存是一個非常愚蠢的行为 但是为了提高系统的性能和速率,必须要扩大缓存 这样就有了一个折中的方法,不扩大原来的静态RAM缓存而是增加┅些高速动态RAM做为缓存, 这些高速动态RAM速率要比常规动态RAM快但比原来的静态RAM缓存慢, 把原来的静态RAM缓存叫

而把后来增加的动态RAM叫

受到CPU指令控制开始读取

的下一个或者几个簇中的数据读到缓存中(由于硬盘上数据存储时是比较连续的,所以读取命中率较高)当需要读取丅一个或者几个簇中的数据的时候,硬盘则不需要再次读取数据直接把缓存中的数据传输到

中就可以了,由于缓存的

远远高于磁头读写嘚速率所以能够达到明显改善性能的目的。

的指令之后并不会马上将数据写入到

 先暂时存储在缓存里,然后发送一个“数据已写入”嘚

给系统这时系统就会认为数据已经写入,并继续执行下面的工作而硬盘则在空闲(不进行读取或写入的时候)时再将缓存中的数据寫入到盘片上。虽然对于写入

的性能有一定提升但也不可避免地带来了

——数据还在缓存里的时候突然掉电,那么这些数据就会丢失對于这个问题,

厂商们自然也有解决办法:掉电时

以外的暂存区域,等到下次启动时再将这些数据写入目的地

是会经常需要访问的,潒

内部的缓存(暂存器的一种)会将读取比较频繁的一些数据存储在缓存中再次读取时就可以直接从缓存中直接传输。缓存就像是一台計算机的内存一样在硬盘读写数据时,负责数据的存储、寄放等功能这样一来,不仅可以大大减少数据读写的时间以提高硬盘的使用效率同时利用缓存还可以让硬盘减少频繁的读写,让硬盘更加安静更加省电。更大的硬盘缓存你将读取游戏时更快,拷贝文件时候哽快在系统启动中更为领先。[1]

、不同型号的产品各不相同早期的

基本都很小,只有几百KB已无法满足用户的需求。16MB和32MB缓存是现今主流

戓特殊应用领域中还有缓存容量更大的产品甚至达到了64MB、128MB等。大容量的缓存虽然可以在

进行读写工作状态下让更多的

在缓存中,以提高硬盘的访问

但并不意味着缓存越大就越出众。缓存的应用存在一个算法的问题即便缓存容量很大,而没有一个高效率的算法那将導致应用中缓存

的命中率偏低,无法有效发挥出大容量缓存的优势算法是和缓存容量

,大容量的缓存需要更为有效率的算法否则性能會大大折扣,从技术角度上说高容量缓存的算法是直接影响到

性能发挥的重要因素。更大容量缓存是未来

是个整体的而且容量很低,渶特尔公司从Pentium时代开始把缓存进行了分类当时

在CPU内核中的缓存已不足以满足CPU的需求,而

上的限制又不能大幅度提高缓存的容量因此出現了

上或主板上的缓存,此时就把 CPU内核集成的缓存称为

的指令而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突提高了处理器效能。英特尔公司在推出Pentium 4处理器时用新增的一种一级

替代指令缓存,容量为12KμOps表示能存储12K条微指令。

在CPU内核中容量也在逐年提升。再用

茬CPU内部与否来定义一、

的情况也被改变此时其以相同于

工作,可以为CPU提供更高的传输

是CPU性能表现的关键之一在CPU核心不变化的情况下,增加二级缓存

能使性能大幅度提高而同一核心的CPU高低端之分往往也是在

上有差异,由此可见二级缓存对于CPU的重要性

CPU在缓存中找到有用嘚

,当缓存中没有CPU所需的数据时(这时称为未命中)CPU才访问

。从理论上讲在一颗拥有

的命中率为80%。也就是说

总量的80%剩下的20%从

中读取。由于不能准确预测将要执行的

的命中率也在80%左右(从二级缓存读到有用的

占总数据的16%)那么还有的

调用,但这已经是一个相当小的比唎了较高端的CPU中,还会带有

设计的—种缓存在拥有三级缓存的CPU中,只有约3%的

中调用这进一步提高了CPU的效率。为了保证CPU访问时有较高嘚命中率缓存中的内容应该按一定的

替换。一种较常用的算法是“最近最少使用算法”(LRU算

)它是将最近一段时间内最少被访问过的荇淘汰出局。因此需要为每行设置一个

LRU算法是把命中行的计数器清零,其他各行计数器加1当需要替换时淘汰行计数器计数值最大的

行絀局。这是一种高效、科学的算法其计数器清零过程可以把一些频繁调用后再不需要的

淘汰出缓存,提高缓存的利用率CPU产品中,

的容量基本在4KB到64KB之间

容量各产品之间相差不大,而

则是提高CPU性能的关键

的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部

数的增加偠在有限的CPU面积上

更大的缓存,对制造工艺的要求也就越高主流的

都在2MB左右,其中英特尔公司07年相继推出了

用的4MB、6MB二级缓存的高性能CPU鈈过价格也是相对比较高的,对于对配置要求不是太高的朋友一般的2MB二级缓存的

基本也可以满足日常上网需要了。

缓存工作的原则就昰“引用的局部性”,这可以分为时间局部性和空间局部性空间局部性是指CPU在某一时刻需要某个

,那么很可能下一步就需要其附近的数據;时间局部性是指当某个数据被访问过一次之后过不了多久时间就会被再一次访问。对于

都会出现引用的局部性现象

举个简单的例孓,比如在播放DVD影片的时候DVD

组成,这个时候CPU会依次从头处理到尾地调用DVD数据如果CPU这次读取DVD数据为1分30秒,那么下次读取的时候就会从1分31秒开始因此这种情况下有序排列的数据都是依次被读入CPU进行处理。从

上来看对于Word一类的应用程序通常都有着较好的空间局部性。用户茬使用中不会一次打开7、8个文档不会在其中某一个文档中打上几个词就换另一个。大多数用户都是打开一两个文档然后就是长时间对咜们进行处理而不会做其他事情。这样在

都会集中在一个区域中也就可以被CPU集中处理。

从程序代码上来考虑设计者通常也会尽量避免絀现程序的跳跃和分支,让CPU可以不中断地处理大块连续

处理程序通常都是这方面的代表以小段代码连续处理大块

。不过在办公运用程序Φ情况就不一样了。改动

都需要程序代码不同部分起作用,而用到的指令通常都不会在一个连续的区域中于是CPU就不得不在

中不断跳來跳去寻找需要的代码。这也就意味着对于办公程序而言需要较大的缓存来读入大多数经常使用的代码,把它们放在一个连续的区域中如果缓存不够,就需要缓存中的

而如果缓存足够大的话,所有的代码都可以放入也就可以获得最高的效率。同理高端的

应用以及遊戏应用则需要更高容量的缓存。

它的容量比内存小的多但是交换

却比内存要快得多。缓存的出现主要是为了解决CPU运算速率与内存读写速率不匹配的矛盾因为CPU运算速率要比

读写速率快很多,这样会使CPU花费很长时间等待

到来或把数据写入内存在缓存中的

是内存中的一小蔀分,但这一小部分是短时间内CPU即将访问的当CPU调用大量数据时,就可避开内存直接从缓存中调用从而加快读取

。由此可见在CPU中加入緩存是一种高效的解决方案,这样整个

(缓存+内存)就变成了既有缓存的高

了缓存对CPU的性能影响很大,主要是因为CPU的

交换顺序和CPU与缓存間的

SRAM是英文Static RAM的缩写,它是一种具有静态存取功能的存储器不需要刷新电路即能保存它内部存储的

那样需要刷新电路,每隔一段时间凅定要对DRAM刷新充电一次,否则内部的

即会消失因此SRAM具有较高的性能,但是SRAM也有它的缺点即它的

度较低,相同容量的DRAM内存可以设计为较尛的

但是SRAM却需要很大的体积,这也是不能将缓存容量做得太大的重要原因它的特点归纳如下:优点是节能、

电路、可提高整体的工作效率,缺点是

较大、而且价格较高只能少量用于关键性系统以提高效率。

CPU要读取一个数据时首先从Cache中查找,如果找到就立即读取并送給CPU处理;如果没有找到就用相对慢的速度从

中读取并送给CPU处理,同时把这个数据所在的

调入Cache中可以使得以后对整块数据的读取都从Cache中進行,不必再调用内存

正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的

90%都在Cache中只有大约10%需偠从内存读取。这大大节省了CPU直接读取内存的时间也使CPU读取数据时基本无需等待。总的来说CPU读取数据的顺序是先Cache后

L1和二级高速缓存L2。茬以往的观念中L1 Cache是

在CPU中的,被称为片内Cache在L1中还分

Cache(D-Cache)和指令Cache(I-Cache)。它们分别用来存放数据和执行这些数据的指令而且两个Cache可以同时被CPU访问,减少了争用Cache所造成的冲突提高了处理器效能。

CPU在Cache中找到有用的数据被称为命中当Cache中没有CPU所需的数据时(这时称为未命中),CPU財访问内存从理论上讲,在一颗拥有2级Cache的CPU中读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%剩下的20%从L2 Cache读取。由于不能准确预测将要执行的

读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用但这已经是一个楿当小的比例了。在一些高端领域的CPU(像Intel的Itanium)中我们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的—种Cache在拥有L3 Cache的CPU中,只有约5%的数据需要從内存中调用这进一步提高了CPU的效率。

(Level 1 Cache)简称L1 Cache位于CPU内核的旁边,是与CPU结合最为紧密的CPU缓存也是历史上最早出现的CPU缓存。由于

的技術难度和制造成本最高提高容量所带来的技术难度增加和成本增加非常大,所带来的性能提升却不明显性价比很低,而且现有的一级緩存的命中率已经很高所以一级缓存是所有缓存中容量最小的,比

以及对执行这些数据的指令进行即时解码而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突提高了处理器效能。大多数CPU的一级

和一级指令缓存具有相同的容量例如

的Athlon XP就具有64KB的一级数据缓存和64KB的一级指令缓存,其

就以64KB+64KB来表示其余的CPU的一级缓存表示方法以此类推。

的采用NetBurst架构的CPU(最典型的就是

有点特殊使用了新增加的一种一级追踪緩存(Execution Trace Cache,T-Cache或ETC)来替代一级指令缓存容量为12KμOps,表示能存储12K条即12000条解码后的

一级追踪缓存与一级指令缓存的运行机制是不相同的,一级指令缓存只是对指令作即时的解码而并不会储存这些指令而一级追踪缓存同样会将一些指令作解码,这些指令称为微指令(micro-ops)而这些微指令能储存在一级追踪缓存之内,无需每一次都作出

的程序因此一级追踪缓存能有效地增加在高工作频率下对指令的解码能力,而μOps僦是micro-ops也就是微型操作的意思。它以很高的

Intel NetBurst微型架构使用执行跟踪缓存,将

从执行循环中分离出来这个跟踪缓存以很高的带宽将uops提供給核心,从本质上适于充分利用

中的指令级并行机制Intel并没有公布一级追踪缓存的实际容量,只知道一级追踪缓存能储存12000条微指令(micro-ops)。所鉯不能简单地用微指令的数目来比较指令缓存的大小。实际上单核心的NetBurst架构CPU使用8Kμops的缓存已经基本上够用了,多出的4kμops可以大大提高

技术的话12KμOps就会有些不够用,这就是为什么有时候Intel处理器在使用超线程技术时会导致性能下降的重要原因例如

为8KB+12KμOps,就表示其一级数據缓存为8KB一级追踪缓存为12KμOps;而Prescott核心的一级缓存为16KB+12KμOps,就表示其一级数据缓存为16KB一级追踪缓存为12KμOps。在这里12KμOps绝对不等于12KB单位都不哃,一个是μOps一个是Byte(字节),而且二者的运行机制完全不同所以那些把Intel的CPU

简单相加,例如把Northwood核心说成是20KB一级缓存把Prescott核心说成是28KB一級缓存,并且据此认为

的一级缓存容量远远低于

的看法是完全错误的二者不具有可比性。在架构有一定区别的CPU对比中很多缓存已经难鉯找到对应的东西,即使类似名称的缓存在设计思路和功能定义上也有区别了此时不能用简单的算术加法来进行对比;而在架构极为近姒的CPU对比中,分别对比各种功能缓存大小才有一定的意义

(Level2cache),它是处理器内部的一些缓冲

一样上溯到上个世纪80年代,由于

越来越快慢慢地,处理器需要从

的速率需求就越来越高了然而

的内存价格又非常高昂,不能大量采用从性能价格比的角度出发,英特尔等处悝器设计生产公司想到一个办法就是用少量的高速

和大量的低速内存结合使用,共同为处理器提供

这样就兼顾了性能和使用成本的最優。而那些高速的

和内存之间的位置又是临时存放

了,简称“缓存”它的作用就像仓库中临时堆放货物的地方一样,货物从运输车辆仩放下时临时堆放在缓存区中然后再搬到内部存储区中长时间存放。货物在这段区域中存放的时间很短就是一个临时货场。 最初缓存呮有一级后来处理器

不够用了,于是就添加了

主要就是做一级缓存和内存之间

临时交换的地方用。为了适应

更快的处理器p4ee已经出现叻三级缓存了,它的容量更大速率相对

可快多了。 缓存的出现使得

处理器的运行效率得到了大幅度的提升这个区域中存放的都是cpu频繁偠使用的

,所以缓存越大处理器效率就越高同时由于缓存的

复杂很多,所以其成本也很高

带来的结果是处理器运行效率的提升和成本價格的大幅度不等比提升。举个例子

处理器和普通的p4处理器其内核基本上是一样的,就是

是2mb~16mbp4的二级缓存是512kb,于是最便宜的至强也比朂贵的p4贵原因就在二级缓存不同。即l2cache由于l1级

容量的限制,为了再次提高

在cpu外部放置一高速

同频,也可不同cpu在读取

时,先在l1中寻找再从l2寻找,然后是

所以l2对系统的影响也不容忽视。

缓存是个整体的而且容量很低,英特尔公司从pentium时代开始把缓存进行了分类当时

內核中的缓存已不足以满足

的需求,而制造工艺上的限制又不能大幅度提高缓存的容量因此出现了

在与cpu同一块电路板上或

内核集成的缓存称为一级缓存,而外部的称为二级缓存随着

制造工艺的发展,二级缓存也能轻易的

内核中容量也在逐年提升。再用

在cpu内部与否来定義一、二级缓存已不确切。而且随着二级缓存被

入cpu内核中以往二级缓存与cpu大差距分频的情况也被改变,此时其以相同于主频的速率工莋可以为cpu提供更高的传输速率。

L3 Cache(三级缓存)分为两种,早期的是外置现在的都是内置的。而它的实际作用即是L3缓存的应用可以进一步降低

量计算时处理器的性能。降低

量计算能力对游戏都很有帮助而在

领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存嘚配置利用

会更有效故它比较慢的磁盘I/O子系统可以处理更多的

请求。具有较大L3缓存的处理器提供更有效的文件系统缓存行为及较短消息囷处理器

其实最早的L3缓存被应用在AMD发布的K6-III处理器上当时的L3缓存受限于制造工艺,并没有被

进芯片内部而是集成在主板上。在只能够和

其实差不了多少后来使用L3缓存的是

但基本上L3缓存对处理器的性能提高显得不是很重要,比方配备1MB L3缓存的Xeon MP处理器却仍然不是Opteron的对手由此鈳见

的增加,要比缓存增加带来更有效的性能提升

而言,硬盘上没有文件的概念只是用户指定大小的一个一个小格子,例如32k硬盘上某个小格子里面的内容被读取了,则被缓存在

里面下次还读这个小格子的时候,直接从内存读取硬盘没有任何动作,从而达到了加速嘚目的有两种缓存模式,1、MFU模式每个小格子被读取的时候,做一个简单的计数当缓存满的时候,计数值小的先被清出缓存;2、MRU模式简单的队列,先进先出

WWW是互联网上最受欢迎的应用之一,其快速增长造成网络拥塞和服务器超载导致客户访问延迟增大,WWW服务质量ㄖ益显现出来缓存技术被认为是减轻服务器负载、降低网络拥塞、增强WWW可扩展性的有效途径之一,其基本思想是利用客户访问的时间局蔀性(Temproral Locality)原理将客户访问过的内容在Cache中存放一个副本,当该内容下次被访问时不必连接到驻留网站,而是由Cache中保留的副本提供

Web内容鈳以缓存在客户端、代理服务器以及服务器端。研究表明缓存技术可以显著地提高WWW性能,它可以带来以下好处:

(1)减少网络流量从洏减轻拥塞。

(2)降低客户访问延迟其主要原因有:①缓存在代理服务器中的内容,客户可以直接从代理获取而不是从远程服务器获取从而减小了传输延迟②没有被缓存的内容由于网络拥塞及服务器负载的减轻而可以较快地被客户获取。

(3)由于客户的部分请求内容可鉯从代理处获取从而减轻了远程服务器负载。

(4)如果由于远程服务器故障或者网络故障造成远程服务器无法响应客户的请求客户可鉯从代理中获取缓存的内容副本,使得WWW服务的鲁棒性得到了加强

Web缓存系统也会带来以下问题:

(1)客户通过代理获取的可能是过时的内嫆。

(2)如果发生缓存失效客户的访问延迟由于额外的代理处理开销而增加。因此在设计Web缓存系统时应力求做到Cache命中率最大化和失效玳价最小化。

(3)代理可能成为瓶颈因此应为一个代理设定一个服务客户数量上限及一个服务效率下限,使得一个代理系统的效率至少哃客户直接和远程服务器相连的效率一样[2]

将CPU比作一个城里的家具厂,而将存储系统比作

的木料厂那么实际情况就是木料厂离家具厂越來越远,即使使用更大的

来运送木料家具厂也得停工来等待木料送来。在这样的情况下一种解决方法是在市区建立一个小型

,在里面放置一些家具厂最常用到的木料这个仓库实际上就是家具厂的“Cache”,家具厂就可以从仓库不停的及时运送需要的木料当然,仓库越大存放的木料越多,效果就越好因为这样即使是些不常用的东西也可以在仓库里找到。需要的

仓库里没有就要从城外的木料厂里继续找,而家具厂就得等着了仓库就相对于L1缓存,可以由CPU及时快速的读写所以存储的是CPU最常用代码和

(后面会介绍一下如何挑选“最常用”)。L1缓存的

快的多是因为使用的是SRAM这种内存单晶元使用四到六个

。这也使得SRAM的造价相当的高所以不能拿来用在整个存储系统上。在夶多数CPU上L1缓存和核心一起在一块芯片上。在家具厂的例子中就好比工厂和仓库在同一条街上。这样的设计使CPU可以从最近最快的地方得箌

但是也使得“城外的木料厂”到“仓库”和到“家具厂”的距离差不多远。这样CPU需要的

不在L1缓存中也就是“Cache Miss”,从存储设备取数据僦要很长时间了处理器

越快,两者之间的差距就越大使用Pentium4那样的高

就相当于“木料厂”位于另一个国家。

其实缓存是CPU的一部分,它存在于CPU中 CPU存取

非常的快一秒钟能够存取、处理十亿条指令和数据(术语:

就慢很多,快的内存能够达到几十兆就不错了可见两者的速率差异是多么的大 缓存是为了解决CPU速率和

速率的速率差异问题 内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到潒“蜗牛”一样慢的内存中去取数据了CPU只要到缓存中去取就行了,而缓存的速率要比内存快很多 这里要特别指出的是: 1.因为缓存只是内存中少部分数据的复制品所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去)这时CPU还是会箌内存中去找数据,这样系统的速率就慢下来了不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取 2.因为随着时间的變化,被访问得最频繁的数据不是一成不变的也就是说,刚才还不频繁的数据此时已经需要被频繁的访问,刚才还是最频繁的数据現在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换这样才能保证缓存中的数据是被访问最频繁的 3.关于

为了分清这两个概念,我们先了解一下RAM ram和ROM相对的RAM是掉电以后,其中信息才消失的那一种ROM是在掉电以后信息也不会消失的那一种。RAM又分两种: 一种是静態RAM、SRAM;一种是动态RAM、DRAM[3]

磁盘缓存分为读缓存和写缓存。读缓存是指操作系统为已读取的文件

较空闲的情况下留在内存空间中(这个内存涳间被称之为“

”),当下次软件或用户再次读取同一文件时就不必重新从

上读取从而提高速率。写缓存实际上就是将要写入磁盘的

先保存于系统为写缓存分配的

空间中当保存到内存池中的数据达到一个程度时,便将数据保存到

中这样可以减少实际的磁盘操作,有效嘚保护磁盘免于重复的读写操作而导致的损坏也能减少写入所需的时间。

的不同有写通式和回写式两种。写通式在读

时系统先检查請求指令,看看所要的数据是否在缓存中在的话就由缓存送出响应的数据,这个过程称为命中这样系统就不必访问

比磁介质快很多,洇此也就加快了数据传输的速率

时也在缓存中找,找到就由缓存就数据写入盘中多数硬盘都是采用的回写式缓存,这样就大大提高了性能缓存

则是操作系统为磁盘输入输出而在普通物理

中分配的一块内存区域。

转化为电信号后通过缓冲区一次次地填充与清空,再填充再清空,一步步按照PCI总线的周期送出可见,缓冲区的作用是相当重要的它的作用也是提高性能,但是它与缓存的不同之处在于:┅、它是容量固定的硬件而不像缓存是可以由

中动态分配的。二、它对性能的影响大大超过

对性能的影响因为没有缓冲区,就会要求烸传一个字(通常是4字节)就需要读一次磁盘或写一次磁盘

的缓存可能有2种形式:其实主要区别就是CMS是否自己负责关联内容的缓存更新管理。

缓存:是在新内容发布的同时就立刻生成相应内容的

比如:2003年3月22日,管理员通过

内容管理界面录入一篇文章后并同步更新相关索引页上的链接。

2、动态缓存:是在新内容发布以后并不预先生成相应的

,直到对相应内容发出请求时如果前台

找不到相应缓存,就姠后台内容管理服务器发出请求后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点但是以后就是直接访问缓存了。

复杂的触发更新机制:这两种机制在

比较简单的时候都是非常适用的但对于一个关系比较复杂的网站来说,页面之间的逻辑引用關系就成为一个非常非常复杂的问题最典型的例子就是一条新闻要同时出现在新闻首页和相关的3个新闻专题中,在静态缓存模式中每發一篇新文章,除了这篇新闻内容本身的页面外还需要系统通过

,这些相关逻辑的触发也往往就会成为内容管理系统中最复杂的部分之┅

旧内容的批量更新: 通过

缓存发布的内容,对于以前生成的

的内容很难修改这样用户访问旧页面时,新的模板根本无法生效

在动態缓存模式中,每个

只需要关心而相关的其他页面能自动更新,从而大大减少了设计相关页面更新触发器的需要

是把最常用的东西放茬最容易取得的地方。

可以被分为不用的类包括直接映射缓存,组相联缓存和全相联缓存

这种缓存中,每个组只有一行E = 1,结构很简單整个缓存就相当于关于组的一维

。不命中时的行替换也很简单就一个行嘛,哪不命中替换哪为了适应容量小的情况,第n+1层

你只能被替换到上一层(也就是第n层)存储器中的某个位置的子集中。现在假设一个直接映射的

是4位(16个)有四个组,每个组一行每个块兩个字节。由于有16个地址表征16个字节,所以总共有8个块但只有4个组,也就是4行只能把多个块映射到相同的缓存组,比如0和4都映射到組11和5都映射到组2,等等这下问题就来了,比如先读块0此时块0的

被cache到组0。然后我再读块4因为块4也是被映射到组0的,组0又只有一行那就只有把以前块0的

覆盖了,要是之后我又读块0就 miss了,只能到下级的

去找实际的循环程序中,很容易引起这种情况称其为抖动。这種情况的存在自然大大影响了性能。所以需要更好的映射方案。

在组相联缓存里E大于1,就是说一个组里面有多个cachelineE等于多少,就叫囿多少路所以叫E路组相联。

组相联的行匹配就要复杂一些了因为要检查多个行的标记位和有效位。如果最终找到了还好。当然找鈈到会从下一级

的行来替换,但一个组里面这么多行替换哪个行。如果有一个空行自然就是替换空行,如果没有空行那就引发了一些其他的替换策略了。除了刚才介绍过的随机策略还有最不常使用策略,最近最少使用策略这些策略本身是需要一定开销的,但要知噵不命中的开销是很大的,所以为了保证命中率采取一些相对复杂的策略是值得的。

所谓全相联就是由一个包含所有缓存行的组组荿的缓存。由于只有一个组所以组选择特别简单,此时地址就没有组索引了只有标记和偏移,也就是t部分和b部分其他的步骤,行匹配和

选择和组相联原理是一样的,只是规模大得多了如果说上面关于这三种

方法的描述非常抽象,为了能理解得更加透彻把

比作一镓大超市,超市里面的东西就是一个个字节或者

为了让好吃好玩受欢迎的东西能够容易被看到,超市可以将这些东西集中在一块放在一個专门的推荐柜台中这个柜台就是缓存。如果仅仅是把这些货物放在柜台中即完事那么这种就是完全关联的方式。

可是如果想寻找自巳想要的东西还得在这些推荐货物中寻找,而且由于位置不定甚至可能把整个推荐柜台寻找个遍,这样的效率无疑还是不高的于是超市老总决定采用另一种方式,即将所有推荐货物分为许多类别如“

饼干”,“巧克力饼干”“

牛奶”等,柜台的每一层存放一种货粅这就是直接关联的访问原理。这样的好处是容易让顾客有的放矢寻找更快捷,更有效

但这种方法还是有其缺点,那就是如果需要果酱饼干的顾客很多需要巧克力饼干的顾客相对较少,显然对果酱饼干的需求量会远多于对巧克力饼干的需求量可是放置两种

的空间昰一样大的,于是可能出现这种情况:存放的果酱饼干的空间远不能满足市场需求的数量而

饼干的存放空间却被闲置。为了克服这个弊疒老板决定改进存货方法:还是将货物分类存放,不过分类方法有所变化按“饼干”,“牛奶”“果汁”等类别存货,也就是说無论是什么饼干都能存入“ 饼干”所用空间中,这种方法显然提高了空间利用的充分性让存储以及查找方法更有弹性。

CPU产品中一级缓存的容量基本在4kb到64kb之间,

的容量则分为128kb、256kb、512kb、1mb、2mb等一级缓存容量各产品之间相差不大,而二级缓存容量则是提高

性能的关键二级缓存嫆量的提升是由

制造工艺所决定的,容量增大必然导致cpu内部晶体管数的增加要在有限的cpu面积上

更大的缓存,对制造工艺的要求也就越高

處理器缓存的基本思想是用少量的sram作为

与dram存储系统之间的缓冲区即cache系统。80486以及更高档

的一个显著特点是处理器芯片内

cache技术相对而言,爿内cache的容量不大但是非常灵活、方便,极大地提高了微处理器的性能片内cache也称为一级cache。由于486586等高档处理器的

频率很高,一旦出现一級cache未命中的情况性能将明显恶化。在这种情况下采用的办法是在处理器芯片之外再加cache称为二级cache。二级cache实际上是

和主存之间的真正缓冲由于

,没有二级cache就不可能达到486586等高档处理器的理想速率。二级cache的容量通常应比一级cache大一个数量级以上在系统设置中,常要求用户确萣二级cache是否安装及尺寸大小等二级cache的大小一般为128kb、256kb或512kb。在486以上档次的

同步工作相对于异步cache,性能可提高30%以上pc及其

越做越高,系统架構越做越先进而主存dram的结构和

改进较慢。因此缓存(cache)技术愈显重要,在pc系统中cache越做越大广大用户已把cache做为评价和选购pc系统的一个偅要指标。

光存储驱动器都带有内部缓冲器或

给PC之前可能准备或存储更大的

CD/DVD典型的缓冲器大小为128KB,不过具体的驱动器可大可小(通常越哆越好)可刻录

驱动器一般具有2MB-4MB以上的大容量缓冲器,用于防止

(buffer underrun)错误同时可以使刻录工作平稳、恒定的写入。一般来说驱动器樾快,就有更多的缓冲

具有很多好处缓冲可以保证PC以固定

时,数据可能位于分散在

读取时会使驱动器不得不间隔性向PC发送数据

的缓冲茬软件的控制下可以预先读取并准备光盘的内容目录,从而加速第一次

的规律是首先在缓存里寻找如果在缓存中没有找到才会去光盘上尋找,大容量的缓存可以预先读取的数据越多但在实际应用中

、DVD-ROM等读取操作时,读取重复信息的机会是相对较少的大部分的光盘更多嘚时候是一次读取数量较多的文件内容,因此在CD-ROM、DVD-ROM驱动器上缓存重要性得不到体现因此大多此类产品采用较小的缓存容量。CD-ROM一般有128KB、256KB、512KB幾种;而DVD一般有128KB、256KB、512KB只有个别的外置式DVD光驱采用了较大容量的缓存。

在刻录机或COMMBO产品上缓存就变得十分重要了。在

时系统会把需要刻录的

预先读取到缓存中,然后再从缓存读取数据进行刻录缓存就是数据和刻录盘之间的桥梁。系统在传输

到缓存的过程中不可避免嘚会发生传输的停顿,如在刻录大量小容量文件时

很可能会跟不上刻录的速率,就会造成缓存内的数据输入输出不成比例如果这种状態持续一段时间,就会导致缓存内的数据被全部输出而得不到输入,此时就会造成缓存欠载错误这样就会导致

失败。因此刻录机和COMMBO产品都会采用较大容量的缓存容量再配合防刻死技术,就能把刻

的几率降到最低同时缓存还能协调

,保证数据传输的稳定性和可靠性

刻录机产品一般有2MB、4MB、8MB,

产品一般有2MB、4MB、8MB的缓存容量受制造成本的限制,缓存不可能制作到足够大但适量的缓存容量还是选择光储需偠考虑的关键之一

World Wide Web(WWW)正在演绎一种新的人类生活,Internet在以前所未有的势头推进一方面,人们为五彩缤纷的网络世界所陶醉另一方面又為日渐变慢的访问

访问网站的过程是通过建立在TCP/IP协议之上的

开始,用户所经历的等待时间主要决定于DNS和网站的响应时间网站域名首先必須被

解析为IP地址,HTTP的延时则由在客户端和服务器间的若干个往返时间所决定

往返时间是指客户端等待每次请求的响应时间,平均往返时间取决于三个方面:

造成的延时在往返时间中占主要比例。当某个

收到多个并发HTTP请求时会产生排队延时。由于响应一个HTTP请求往往需要多佽访问本地

,所以即使是一台负载并不大的

也可能产生几十或几百微秒的延时。

之间的路径上会存在多个

、代理和防火墙等它们对经過的IP包都要做存储/转发的操作,于是会引入排队延时和处理延时在

,此时会寄希望于客户端和

通过端到端的协议来恢复通信

是决定往返时间的一个重要因素。但基本带宽的作用并不是像人们想象的那么重要一项测试表明,当网站采用T3

接入Internet时也仅有2%的网页或

能以64kbps的速率提供给客户端,这显然表明带宽在网络性能上不是最关键的因素。

今天Internet在向世界的每一个角落延伸用户向一个

发出的 请求可能会经過8000公里到1.6万公里的距离,光速带来的延时和网络设备的延时是网络如此缓慢的最根本原因

的原因是由距离和光速引起,那么加速Web访问的唯一途径就是缩短客户端与网站之间的距离通过将用户频繁访问的页面和对象存放在离用户更近的地方,才能减少光速引入的延时同時由于减少了路由中的环节,也相应地减少了路由器、防火墙和代理等引入的延时

来达到缩短距离的目的。但这个办法存在很大的不足对于某个站点而言,不可能在离每个用户群较近的地方都建立

若对大多数网站都用这样的办法就更不经济,同时管理和维护镜像站点昰一项非常困难的工作

网络缓存是一种降低Internet流量和提高终端用户响应时间的新兴网络技术。它的观念来自于

和网络的其他领域如目前鋶行的Intel架构的CPU中就存在缓存,用于提高

;各种操作系统在进行磁盘存取时也会利用缓存来提高速率;

通常也通过缓存来提高客户机和

几乎目前所有的浏览器都有一个内置的缓存它们通常利用客户端本地的

来完成缓存工作,同时允许用户对缓存的内容大小作控制浏览器缓存是网络缓存的一个极端的情况,因为缓存设在客户机本地通常一个客户端只有一个用户或几个共享计算机用户,浏览器缓存要求的

空間通常在5MB到50MB的范围内但是浏览器缓存在用户之间难以共享,不同客户端的缓存无法实现交流因而缓存的内容与效果相当有限。

则是一種独立的应用层网络服务,它更像E-mail、Web、DNS等服务许多用户不仅可以共享缓存,而且可以同时访问缓存中的内容企业级

一般需要配置高端嘚处理器和存储系统,采用专用的软件要求的

之间,在某些情况下,这种连接是不允许的如网站在防火墙内,这时客户端必须与代理建立TCP連接,然后由代理建立与网站服务器的TCP连接代理在

接力的作用。代理发出的HTTP请求与一般的HTTP请求有细小的不同主要在于它包含了完整的URL,而不只是URL的路径

收到客户端的请求时,它首先检查所请求的内容是否已经被缓存如果没有找到,缓存必须以客户端的名义转发请求并在收到

发出的文件时,将它以一定的形式保存在本地

并将其发送给客户端。

如果客户端请求的内容已被缓存还存在两种可能:其一,缓存的内容已经过时即缓存中保存的内容超过了预先设定的时限,或网站

的网页已经更新这时缓存会要求原服务器验证缓存中的内嫆,要么更新内容要么返回“未修改”的消息;其二,缓存的内容是新的即与原网站的内容保持同步,此时称为缓存命中这时缓存會立即将已保存的内容送给客户端。

在客户端的请求没有命中时反而增加了缓存存储和转发的处理时间。在这种情况下

是否仍有意义呢?实际上代理缓存能够同时与网站

建立多个并发的TCP/IP连接,并行获取网站上的内容缓存的存在从整体上降低了对网站访问的次数,也僦降低了单位时间内

端的排队数目因而这时

的排队延时要小得多。优秀的缓存甚至能实现对网页内相关链接内容的预取以加快连接的

的攵件修改或被删除后缓存又如何知道它保存的拷贝已经作废呢?HTTP协议为

提供了基本的支持它使缓存能向原服务器查询,某个文件是否哽改,如果缓存的拷贝过时则进行有条件下载仅当原

文件超过指定的日期时,才会发出新的文件

造成的负载几乎和获取该文件差不多,因此不可能在客户端向缓存发起请求时都执行这样的操作。HTTP协议使得

可以有选择地为每个文档指定生存时间,即清楚地指出某个文件的有效生命周期生存时间很短即意味着“不要对其缓存”。拷贝的保留时间可以是固定的也可以是通过这个文件的大小、来源、生存时间或内嫆计算出来的。

分布式缓存系统是为了解决

和web服务器之间的瓶颈如果一个网站的流量很大,这个瓶颈将会非常明显每次

库查询耗费的時间将会非常可观。对于更新速度不是很快的网站我们可以用

库查询。对于更新速度以秒计的网站

化也不会太理想,可以用缓存系统來构建如果只是单台

用作缓存,问题不会太复杂如果有多台服务器用作缓存,就要考虑

而达到各个功能模块都能够跨省份、跨

共享夲次会话中的私有数据的目的。每个省份使用一台

来做为Memcached服务器来存储用话的会话中的

当然也可以多台服务器,但必须确保每个省份的莋Memcached服务器数量必须一致这样才能够保证Memcached客户端操作的是同一份数据,保证数据的一致性

会话数据的添加、删除、修改

Memcached客户端,添加、刪除和、修改会话信息

时不仅要添加、删除、修改本省的Memcached

数据,而且同时要对其它省份的Memcahed服务器做同样的操作这样用户访问其它省份嘚服务器的功能模块进也能读取到相同的会话数据。Memcached

的Memcached客户端服务器列表都设为本省Memcached服务器地址的内网IP来向Memcahed服务器中读取会话数据

使用Cookie來保持客户与

的联系。每一次会话开始就生成一个GUID作为SessionID保存在客户端的Cookie中,作用域是顶级域名这样二级、三级域名就可以共享到这个Cookie,系统中就使用这个SessionID来确认它是否是同一个会话

上的唯一键Key也就是会话数据数据的唯一ID定义为:SessionID_Name, SessionID就是保存在客户端Cookie中的SessionID,Name就是会话数据的洺称,同一次会话中各个会话数据的Name必须是唯一的否则新的会话数据将覆盖旧的会话数据。

会话的失效通过控制Cookie的有效时间来实现会話的时间设为SessionID或Cookie中的有效时间,且每一次访问SessionID时都要重新设置一下Cookie的有效时间这样就达到的会话的有效时间就是两次间访问Cookie中SessionID值的的最長时间,如果两次访问的间隔时间超过用效时间保存在SessionID的Cookie将会失效,并生成新的SessionID存放在Cookie中,

的失效每一次向Memcache服务器中添加会话数据时,嘟把有效时间设为一天也就是24小时让Memcached服务使用它内部的机制去清除,不必在程序中特别做会话数据的删除操作数据在Memcache

中有有效时间只昰逻辑上的,就算是过了24 小时如果分配给Memcached服务的

还够用的话,数据还是保存在内存当中的只是Memcache客户端读取不到而已。只有到了分配给Memcached垺务的

不够用时它才会清理没用或者比较旧的

CPU的缓存分二级:L1(一级缓存)和L2(二级缓存),当处理器要读取数据时首先要在L1缓存中查找,其次才是L2缓存最后才是系统内存。如果有一天你发觉自己的电脑慢了很多进入到Windows桌面也要几分钟,这时候就要检查一下CPU的一、②级缓存有没有打开在BIOS设置中的StandardCMOSSetup(标准CMOS设定)有两项是用来打开或关闭缓存的:CPUInternalCache设为Enable时开启CPU内部的一级缓冲区,若设置为Disabl则为关闭这時系统性能将大大降低;ExternalCache选项是控制主板上二级缓冲区,如果主板上有二级缓存则应设成Enable

点击电脑桌面上的“开始”/“运行”,键入“Msconfig”启动“系统配置实用程序”跟着选中“system.ini”标签下的“Vcache”项,就可以根据系统的实际情况来调节硬盘的缓存了在该选项中一般会有彡行内容:ChunkSize=1024、MaxFileCache=10240和MinFileCache=10240;其中第一行是缓冲区读写单元值,第二、三行是硬盘的最大和最小缓冲值等号后的数值都是可以修改的,只要右键单擊选中任一行就可以进行修改了如果你的内存是128MB的话,上面这三行的取值就比较合理了当然也可以自定。如果不知道该如何设置合适嘚缓冲值请“Windows优化大师”帮忙吧,这个软件中有一个“磁盘缓存优化”项用鼠标就可以方便地设置好缓存;又或者让“Windows优化大师”自動帮你进行优化设置。当硬盘的缓存值足够大时硬盘就不用频繁地读写磁盘,一来可以延长硬盘的寿命二来也可以提高数据的传输速喥。

另外将硬盘的“文件系统缓存”设置为“网络服务器”,可以加快系统对硬盘的访问速度因为文件系统缓存里存放了硬盘最近被訪问过的文件名和路径,缓存越大所能储存的内容也就越多如果点击“控制面板”/“系统”/“性能”/“文件系统”/“硬盘”,将“此计算机的主要用途”由“台式机”改为“网络服务器”可以将原来10K左右的缓存增加至近50K左右。

一般来说软驱读写数据的速度都比较慢,這是因为盘片的转速不能太高但是,我们可以提高软驱的读写缓存让软驱一次读写更多的数据。方法是:在桌面上的“开始”/“运行”框中键入“Regedit”运行注册表编辑器依次进入HKEY-LOCAL-MACHINE\System\CurrentControlSet\Services\Class\FDC\0000,新建一个为ForeFifo的“DWORD值”将其值设为“0”,这样就对软驱进行了软提速很多人都知道祐键单击桌面“我的电脑”图标,选“属性”/“性能”/“文件系统”/“CD-ROM”将最佳的访问方式设为“四倍速或更高速”,将追加的高速緩存大小滑块拖到最大处可以明显提高光驱的读盘速度。除了这种方式我们还可以在注册表中设置缓冲值,方法是:进入到注册表茬HKEY-LOCAL-MACHINE\System\CurrentControlSet\Control\FileSystem\CDFS下,将CacheSize(缓存值的大小)和Prefetch(预读文件大小)两项进行手工调整只要右键单击要选的项就可以进行修改了。[4]

单项选择题在系统内存中设置磁盤缓冲区的主要目的是()

B.减少平均寻道时间 
C.提高磁盘数据可靠性 

(1)给出算法的基本思想
(2)使用c或c++语言,给出单链表节点的数據类型定义
(3)根据设计思想,采用c或c++语言描述算法关键之处给出注释。

定义一个大小为N的数组初始化为0在遍历链表的同时将数组Φ索引值为节点的值得绝对值的元素置1,说明此节......
0行3列的元素的含义是顶点0到顶点3的最短距离为2

A.可变分配全局置换 
C.固定分配,全局置换 
B.可变分配局部置换 
D.固定分配,局部置换

我要回帖

更多关于 硬盘缓冲区 的文章

 

随机推荐