缓存在SSD中的作用

   随着SSD固态硬盘的普及,如今带有缓存的SSD价格也逐渐被用户接受,虽然我们知道没有缓存的SSD在价格上会比有缓存的略贵一些,但是缓存究竟在SSD固态硬盘中发挥了怎样的作用并不是每个用户都了解。

  其实“缓存”一词单纯从字面上理解可解释为延缓存放,简单的说“缓存”是为了平衡高速设备和低速设备之间的速度差异而存在的。作用是让低速设备尽量的不拖高速设备的后退。这里之所以用“尽量”一词,主要是各类产品中的缓存容量有限,算法也不可能100%的准确命中,所以低速设备多多少少还是会拖高速设备的后腿,缓存的作用只能是“尽量”减少这种现象。


  例如CPU缓存;每当CPU从内存里读数据时,会向内存控制器发出一个读指令,要求内存控制器返回其要求的数据,可是因为内存响应速度相对于CPU是很慢的,所以在数据返回之前CPU只有无所事事的“等待”,如果经常出现这样的情况,再快的CPU也会被内存拖后腿,效率也不会提高。

  如图所示,在主内存(RAM)和CPU之间,放一块小容量的SRAM。当CPU申请RAM数据的时候,先在SRAM里面寻找,如果找到了数据,就不用花费很多时间到RAM里去读了(同步读取)。如果SRAM里没有数据,再到RAM去读,当RAM返回数据的时候,不仅仅返回原来所需要的数据,同时“捎带”返回所需数据“前后”的一些看似无关的数据,并将这些数据放入SRAM中。

  下次CPU再次到SRAM里读数据的时候,如果所需数据正好在SRAM里,就可以“命中”了。从原理上可以看出,命中率越高,CPU的效率就越高。而命中率又是被“捎带”返回的数据所决定的,哪些数据被捎带返回,这个就要依CPU内部的缓存算法而定了。由此可见,由于缓存容量远远小于主内存容量,而缓存算法也不可能100%的准确命中。

  缓存在机械硬盘中的作用:

  以上是以CPU缓存做例子。但是在电脑系统里,缓存并不仅仅是CPU独有,因为高速设备与低速设备的矛盾并不仅仅体现在CPU和内存之间。现在假如说,我要把数据从内存写入硬盘,由于硬盘相当缓慢,需要等待很长的时间才能完成此任务。那么用户体验就是电脑非常慢。实际上,这里CPU不慢,内存不慢,只是硬盘太慢了。

  解决机械硬盘速度过慢的问题,就在其内部安置了一个小容量的内存,也就是硬盘的缓存,数据首先写入到缓存里。那么在操作系统层面,就会认为数据已经写入了,用户的感觉就是快速。随后硬盘自己再从缓存写入到盘片,这个过程无需用户干预了。

  不过需要注意的是,其实硬盘的缓存并不全都用于缓存数据,还有其他用途,所以不见得缓存越大,性能就越好。而且还有个缓存算法问题。如果算法不优秀,命中率就不会高,这样大容量缓存形同虚设。

  缓存在SSD固态硬盘中的作用:

  刚才为大家介绍了什么是缓存,以及它在机械硬盘和内存中发挥的作用,其实缓存在SSD固态硬盘中发挥的作用也相差不远。SSD上的缓存一般都是1或者2颗DRAM颗粒构成,起到数据交换缓冲作用。一款SSD产品是否有缓存这样的设计,往往是厂商根据产品定位和用途做得决定,一般一些入门级产品或者低速产品,在设计上就会考虑不带缓存方案,而一些高速产品由于数据交换量大,就设计有缓存,以提高产品的读写效率。

  通常带有缓存的SSD在价格上或比不带缓存的略高一些,虽然SSD带缓存读取小文件的速度会快些,但对SSD来说,快的太有限了。就反应速度来说,SSD的反应速度一般都在0.2毫秒以内,不比缓存慢。所以带缓存对读取速度的提升,几乎可以忽略。其次带不带缓存并不影响SSD的寿命,决定SSD寿命的是NAND FLASH的写入次数。其次,主控芯片的好坏才是是决定SSD性能和使用寿命的重要因素。

  文章总结:

  通过笔者的介绍相信大家对缓存的作用有了深入的了解,另外我们可以看出缓存在内存、机械硬盘和SSD固态硬盘身上发挥作用的强弱是不一样的。缓存是为了平衡高速设备和低速设备之间的速度差异而存在的,其作用是让低速设备尽量的不拖高速设备的后脚。

  缓存的主要功能在于是电脑有资料放到HDD时,因为HDD机械式运作比电脑慢很多,所以在HDD上放上缓存,暂时存储资料以便电脑能够继续做其他事情,不会因为HDD的动作慢,而拖慢了电脑的效能。

  而SSD的速度大幅提升,已经能够实时处理数据,缓存作为提升速度的作用就不大了。由此我们可以得出依据缓存大小判断SSD速度并不科学,固态硬盘速度快慢主要由主控芯片和闪存颗粒品质决定。

时间: 2024-10-30 06:40:58

缓存在SSD中的作用的相关文章

float是什么?浮动在CSS中的作用

文章简介:float深入剖析. float是什么? float即为浮动,在CSS中的作用是使元素脱离正常的文档流并使其移动到其父元素的"最左边"或"最右边".下面解释下这个定义中的几个名词的概念: 文档流:在html中文档流即为元素从上至下排列的顺序. 脱离文档流:元素从正常的排列顺序被抽离. 最左边/最右边:上述的移动到父元素最左和最右是指元素往左或往右移动直到碰到另一个浮动元素或父元素内容区的边界(不包括padding). float造成的影响 对其父元素的影响

TAG标签在SEO优化中的作用

1.TAG标签是什么 很多人还不了解沈阳SEO优化中TAG标签具体是什么东西,对网站沈阳SEO优化又会带来什么样的影响,首先我网站用的CMS里面已经有了添加TAG标签的功能,但是沈阳SEO优化一直以来应用的并不是十分充分,有的时候是空着,有的时候就直接写关键词,这对于一个健康的网站沈阳SEO优化来说也许是不会带来什么fu/mian的影响的,那么这个TAG标签究竟有什么作用呢? TAG标签与关键词有着同样的重要的地位,我认为关键词是写给搜索引擎看的,而TAG标签针对的却是用户,是直接的浏览者.很多

谈谈逆向思维在网站优化中的作用

站长界每天有很多新站诞生,然而伴随的是很多老站胎死腹中.老站有这样的结局很大程度上是因为这些站太古老,墨守成规,总之是思路不对;那是不是我们就应该创新呢?创新固然好,但笔者认为创新是行业领军人物的事情,我们所做的就站在旧思路的肩膀上用逆向思维的方式打破胎死腹中的传说,本文就逆向思路在网站优化过程中的作用对这种观点进行简单论证. 使用逆向思维实现建站 不管是新站长还是老站长几乎都是这样的建站思维:即先找个产品或服务类型建个网站,然后通过网站优化或其他方式实现流量导入,最后通过挂广告的方式实现盈利;

实战浅析分析网站tags标签在SEO中的作用

关于网站tags标签的文章,在网络有许多,但是都是纸上谈兵,今天放弃就用实战的形势展现出tags的强大之处.Tags能给我们带来什么?收录是站长朋友们一直关注的焦点,那么tags就能给站长带来巨大的收录量,那么它是如何给网站带来收录量的呢? 下面我们就用历趣手机下载站分析,首先上一张历趣的网站收录截图.   (案例网站百度收录截图) 相信270余万的收录不少了吧,今天就抛开其他因素,我们只分析历趣的tags标签.看了许多站点,包括强哥的www.yijie029.com他的tags标签都是以动态的

元数据(metadata)在企业应用开发中的作用

数据 元数据(metadata)在企业应用开发中的作用 元数据(metadata)介绍:Metadata(元数据),它是"关于数据的数据"(data about data),近年来在软件设计中Metadata有广泛的应用.在编程中,元数据不是被处理的对象,而是通过改变元数据的一些"值"来改变程序的运行的数据.可以"解释"程序的运行时,不同的元数据值可以让同一段程序有不同的运行结果.元数据(metadata)应用: 在以前的工作中,经常遇到这样的问

SQL Server日志在高可用和灾难恢复中的作用

简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性.本篇文章主要讲述日志在SQL Server中提供的几种高可用性中的作用以及在灾难恢复中的角色. 日志损坏 日志可能会由于IO子系统的故障而损坏,当出现日志损坏时,如果您对日志的原来略有了解,并能在日志损坏的情况下尽量挽救数据,那么感觉一定是非常好的:-),下面我们来了解几种日志损坏的情况下的恢复情况. 1.数据库正常

aspnet-.net mvc架构的model(不是用code first那种)是不是把数据缓存在model中的?

问题描述 .net mvc架构的model(不是用code first那种)是不是把数据缓存在model中的? 我发现用page模式修改了数据,但是数据库中数据并没有改变,如果是的话是不是创建网站时所选择的数据库空间可以小一点? 解决方案 如果你不用任何一种方法将model写回的话,那么是不会自动存入数据库的. 解决方案二: 而且我取了数据之后建立了实体模型后是不是可以抛弃了数据库了 解决方案三: 第一个问题:你在page上修改了数据,必须要调用相应的action把你的修改保存到数据库中.否则,

wakelock在android中的作用

问题描述 wakelock在android中的作用 看到android的源码里面有wakelock,一直不知道是什么意思,想请问下 解决方案 Android WakelockAndroid: wakelockAndroid WakeLock 介绍 解决方案二: Android为了确保应用程序中关键代码的正确执行,提供了Wake Lock的API,使得应用程序有权限通过代码阻止AP进入休眠状态. http://blog.csdn.net/ryantang03/article/details/862

linux编程-怎么让自己写的头文件在一个.c文件中其作用?

问题描述 怎么让自己写的头文件在一个.c文件中其作用? count.h 1 #ifndef COUNT_H 2 #define COUNT_H 3 int count(int x); 4 #endifcount.c 1 #include 2 int count(int x) 3 {return 2*x; } num.c 1 #include""stdio.h"" 2 #include""count.h"" 3 int main