当前位置:首页 » 硬盘大全 » 缓存的静态存储
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

缓存的静态存储

发布时间: 2022-04-17 23:24:39

A. 比较动态存储器dram和静态存储器sram的异同点

SRAM中文含义为静态随机访问存储器,它是一种类型的半导体存储器。“静态”是指只要不掉电,存储在SRAM中的数据就不会丢失。这一点与动态RAM(DRAM)不同,DRAM需要进行周期性的刷新操作。然后,我们不应将SRAM与只读存储器(ROM)和Flash Memory相混淆,因为SRAM是一种易失性存储器,它只有在电源保持连续供应的情况下才能够保持数据。“随机访问”是指存储器的内容可以以任何顺序访问,而不管前一次访问的是哪一个位置。

SRAM中的每一位均存储在四个晶体管当中,这四个晶体管组成了两个交叉耦合反向器。这个存储单元具有两个稳定状态,通常表示为0和1。另外还需要两个访问晶体管用于控制读或写操作过程中存储单元的访问。因此,一个存储位通常需要六个MOSFET。对称的电路结构使得SRAM的访问速度要快于DRAM。SRAM比DRAM访问速度快的另外一个原因是SRAM可以一次接收所有的地址位,而DRAM则使用行地址和列地址复用的结构。

SRAM不应该与SDRAM相混淆,SDRAM代表的是同步DRAM,这与SRAM是完全不同的。SRAM也不应该与PSRAM相混淆,PSRAM是一种伪装成SRAM的DRAM。

从晶体管的类型分,SRAM可以分为双极性与CMOS两种。从功能上分,SRAM可以分为异步SRAM和同步SRAM(SSRAM)。异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。同步SRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。

DRAM:动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。

SRAM:静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且,一般不是行列地址复用的。

SDRAM:同步的DRAM,即数据的读写需要时钟来同步。主要是存储单元结构不同导致了容量的不同。一个DRAM存储单元大约需要一个晶体管和一个电容(不包括行读出放大器等),而一个SRAM存储单元大约需要六个晶体管。DRAM和SDRAM由于实现工艺问题,容量较SRAM大,但是读写速度不如SRAM。一个是静态的,一个是动态的,静态的是用的双稳态触发器来保存信息,而动态的是用电子,要不时的刷新来保持。 内存(即随机存贮器RAM)可分为静态随机存储器SRAM,和动态随机存储器DRAM两种。我们经常说的“ 内存”是指DRAM。而SRAM大家却接触的很少。

SRAM其实是一种非常重要的存储器,它的用途广泛。SRAM的速度非常快,在快速读取和刷新时能够保 持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU 内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM

B. 什么是缓存是不是慢慢保存的意思

许多人认为,“缓存”是内存的一部分

许多技术文章都是这样教授的

但是还是有很多人不知道缓存在什么地方,缓存是做什么用的

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

CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度差异是多么的大

缓存是为了解决CPU速度和内存速度的速度差异问题

内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多

这里要特别指出的是:
1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。

2.因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的

3.关于一级缓存和二级缓存
为了分清这两个概念,我们先了解一下RAM

ram和ROM相对的,RAM是掉电以后,其中才信息就消失那一种,ROM在掉电以后信息也不会消失那一种

RAM又分两种,

一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。

有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的数据越多,系统不就越快了吗

缓存通常都是静态RAM,速度是非常的快,

但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍),

价格高(同容量的静态RAM是动态RAM的四倍),

由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为,

但是为了提高系统的性能和速度,我们必须要扩大缓存,

这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存,

这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,

我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。

一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。
通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了

以上技术文章原创于私人网站海市蜃楼

C. 网络中的缓存是什么

CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。

缓存是为了解决CPU速度和内存速度的速度差异问题。内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多。

这里要特别指出的是:
1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。

2.因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访问最频繁的。

缓存的工作原理
[编辑本段]
缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。

一级缓存和二级缓存
[编辑本段]
为了分清这两个概念,我们先了解一下RAM 。RAM和ROM相对的,RAM是掉电以后,其中的信息就消失那一种,ROM在掉电以后信息也不会消失那一种。

RAM又分两种,一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们现在使用的内存一般都是动态RAM。

有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的数据越多,系统不就越快了吗?缓存通常都是静态RAM,速度是非常的快, 但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍), 价格高(同容量的静态RAM是动态RAM的四倍), 由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为, 但是为了提高系统的性能和速度,我们必须要扩大缓存, 这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做为缓存, 这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢, 我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。

一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的存在都是为了减少高速CPU对慢速内存的访问。 通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了。

缓存的技术发展
[编辑本段]
最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。英特尔公司在推出Pentium 4处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为12KμOps,表示能存储12K条微指令。

随着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。现在再用集成在CPU内部与否来定义一、二级缓存,已不确切。而且随着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传输速度。

二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二级缓存上有差异,由此可见二级缓存对于CPU的重要性。

CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。目前的较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。

为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。

CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、256KB、512KB、1MB、2MB、4MB等。一级缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键。二级缓存容量的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部晶体管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高。
现在主流的CPU二级缓存都在2MB左右,其中英特尔公司07年相继推出了台式机用的4MB、6MB二级缓存的高性能CPU,不过价格也是相对比较高的,对于对配置要求不是太高的朋友,一般的2MB二级缓存的双核CPU基本也可以满足日常上网需要了。

D. 动态存储区与静态存储区的区别

我理解吧,这个动态跟静态主要是针对指针而言的。而且对于单个变量来说,动态跟静态的概念体现的不是特别清楚,下面主要介绍数组吧。
如果你声明一个数组int a[100],那么这个数组的大小就是100,在内存中的位置也固定,如果后来发现数组不够大,你就只能重新定义一个更大的数组,而不能直接改变数组a的大小。这就是静态存储。
如果你声明一个指针int *p,一开始你想开辟一个100的数组,就写p = new int[100],后面发现100不够大,你可以先delete []p,把原来的空间释放掉,然后让p = new int[200],p就会指向一个大小为200的数组,这个数组的大小以及在内存中的位置可以根据需要不断变化。这就是动态存储。

E. 什么是静态存储器什么是动态存储器

静态存储器(SRAM):读写速度快,成本高,需要电源才能工作,断电信息将丢失,多用于容量较小的高速缓冲存储器.
动态存储器(DRAM):读写速度较慢,集成度高,成本低,要求配置动态刷新电路,多用于容量较大的主存储器.

F. 什么是静态存储区和动态存储区啊

1. 全局变量和静态数据放在静态存储区,生命周期为从申请到程序退出。因此局部变量若定义为static,则存储在静态存储区,否则存储在函数的栈内,生命周期为本函数内。
2 动态存储放自动变量和局部变量

G. 在C语言中,什么是动态存储,什么是静态存储

动态存储是auto关键字,例如我们定义的int
a;
默认就是动态存储,具体应该是
auto
int
a;一般是用于函数参数,局部变量,超出作用域范围会失效,变量产生在动态存储区
静态存储时static关键字,例如,我们定义一个
static
int
a;
就是存储在静态存储区,相当于一个全局变量
一楼的理解出现了问题

H. 关于缓存的问题

缓存(Cache)大小是CPU的重要指标之一,其结构与大小对CPU速度的影响非常大。简单地讲,缓存就是用来存储一些常用或即将用到的数据或指令,当需要这些数据或指令的时候直接从缓存中读取,这样比到内存甚至硬盘中读取要快得多,能够大幅度提升CPU的处理速度。
所谓处理器缓存,通常指的是二级高速缓存,或外部高速缓存。即高速缓冲存储器,是位于CPU和主存储器DRAM(Dynamic RAM)之间的规模较小的但速度很高的存储器,通常由SRAM(静态随机存储器)组成。用来存放那些被CPU频繁使用的数据,以便使CPU不必依赖于速度较慢的DRAM(动态随机存储器)。二级高速缓存一直都属于速度极快而价格也相当昂贵的一类内存,称为SRAM(静态RAM),SRAM(Static RAM)是静态存储器的英文缩写。由于SRAM采用了与制作CPU相同的半导体工艺,因此与动态存储器DRAM比较,SRAM的存取速度快,但体积较大,价格较高。

I. 静态存储器sram是依靠什么记忆信息

静态RAM是靠双稳态触发器来记忆信息的;动态RAM是靠MOS电路中的栅极电容来记忆信息的。由于电容上的电荷会泄漏,需要定时给与补充,所以动态RAM需要设置刷新电路。但动态RAM比静态RAM集成度高、功耗低,从而成本也低,适于作大容量存储器。所以主内存通常采用动态RAM,而高速缓冲存储器(Cache)则使用静态RAM。另外,内存还应用于显卡、声卡及CMOS等设备中,用于充当设备缓存或保存固定的程序及数据。 RAM可分为动态(Dynamic RAM)和静态(Static RAM)两大类。所谓动态随机存储器DRAM是用MOS电路和电容来作存储元件的。由于电容会放电,所以需要定时充电以维持存储内容的正确,例如互隔2ms刷新一次,因此称这为动态存储器。所谓静态随机存储器SRAM是用双极型电路或MOS电路的触发器来作存储元件的,它没有电容放电造成的刷新问题。只要有电源正常供电,触发器就能稳定地存储数据。DRAM的特点是集成密度高,主要用于大容量存储器。SRAM的特点是存取速度快,主要用于调整缓冲存储器。

J. 什么是三级缓存

这就要先了解什么是CPU缓存。简单来说,缓存就是介于CPU核心的寄存器和内存之间的缓冲存储结构。

CPU的执行单元中有寄存器用于计算,由于是计算使用的,所以不能用于海量存储执行数据,只能是计算时将数据调入,计算完了就输出并清除,准备进行下一次计算。所以寄存器速度虽然快,但是却不能用于长期存储数据。而内存则是CPU堆放临时计算数据的地方(如果需要永久存储则会被放到速度更慢但是容量更大的硬盘里)。但是内存是动态存储器,由于需要刷新动作,虽然容量相对大但是是片外寻址,访问速度比CPU慢。这就需要在CPU寄存器和内存之间建立缓存。缓存为静态存储器。集成度低(缓存会占去CPU上十分可观的一块面积)但速度极高。虽然相比内存来说容量很小,但是速度快了很多。抛开早期的外置结构不谈,目前的CPU缓存都与CPU在同一块芯片上。因此寻址速度也很快。CPU执行程序时先从缓存找数据,遍历缓存后没有找到需要的数据称为没有“命中”。如果缓存未命中,则CPU会转向内存寻找所需数据。

好了,知道啥是缓存了,那缓存为啥要分一二三级呢?

因为缓存速度虽然快,但是CPU效率十分高。对缓存的速度还是有要求。而如果缓存越大,遍历一遍寻找数据的速度也就越慢。因此需要对缓存内的数据进行有效的管理。不是最常用的数据就要踢出缓存给最常用的数据腾出空间。这就是缓存分级的原理。缓存的大小需要适度,否则会影响遍历速度。将近几个时钟中最常用的数据保存在一级缓存能大幅提升执行效率。

不过这只是理论,是牺牲者缓存的一般原理。目前intel处理器采用的是一级缓存是二级缓存的索引目录,二级缓存内存实际数据。这样仅需遍历很小的一级缓存就能知道较大的二级缓存内都保存了哪些数据,是否是CPU需要的。如果一级缓存命中,直接按照地址去二级缓存找。如果一级缓存未命中,也不用遍历二级缓存了,直接去下一级缓存或者内存中寻找了。

了解以上内容我们就可以了解二级缓存和三级缓存的差异了。正入上面所说,类似于intel的一二级缓存结构仅能服务CPU的一个核心。每个CPU核心都有独立的一级缓存和二级缓存结构。但是CPU内的各个核心有时需要协同工作,这在科学计算等应用中十分常见。这就需要各个核心共享一部分数据。显然私有的一二级缓存不能成为交流媒介。而跑去内存交换效率实在太低了。所以一个各个核心能共享使用的三级缓存就应运而生了。也就是说三级缓存实际上是CPU的各个核心共享的公共缓存结构。