课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
要知道,对于程序员来说,在计算机存储上的理解并不能简简单单停留在实力物理存储空间之中,而是需要根据不同情况将存储分为多层次结构,下面我们就通过具体案例来进行一下分析。
存储器结构
1.1存储器层次结构
由于访问速度、成本、功耗等指标的制约,计算机系统中的存储往往不是作为一个单一的大块存在,而是被设置成一个多级的层次结构。作为一个程序员,需要理解存储器层次结构,因为它对应用程序的性能有着巨大的影响。
和金字塔模型很像,越靠近金字塔顶端的存储器,离CPU越近,访问更便利且访问速度快,但同时它们的容量也越来越小;反之越靠近底层,存储容量越大,访问速度却越来越慢。
高层的L0,是CPU寄存器,CPU可以在一个时钟周期内访问他们;接下来是一个或多个小型到中型的基于SRAM的高速缓存存储器,可以在几个CPU时钟周期内访问它们;然后是一个大的基于DRAM的主存,可以在几十到几百个时钟周期内访问它们;接下来是慢速但容量很大的本地磁盘;后,甚至有些系统会通过网络访问其远程服务器上的磁盘。
高速缓存可以存在一级或多级,甚至不存在于一些低性能的单片机中。TIC64X架构中设计有2级的高速缓存,其数据和代码的存取机制在本订阅号之前的文章“TIC6000数据存储处理与性能优化”中有过描述。
1.2存储器的访问
一个编写良好的计算机程序常常具有良好的局部性(locality)。
局部性通常有两种不同的形式:时间局部性和空间局部性。
时间局部性:在一个具有良好时间局部性的程序中,被访问过一次的内存位置很可能在不远的将来再被多次访问。
空间局部性:在一个具有良好空间局部性的程序中,如果一个内存位置被访问了一次,那么程序很可能在不远的将来访问附近的一个内存位置。
存储类型
2.1随机访问存储器(RAM)
上电使用,掉电存储内容丢失。
静态RAM(SRAM):存储单元具有双稳态特性,上电就能保持它的值,对光和电噪声等干扰不敏感。它使用晶体管多,因而密集度低,更贵,功耗更大。
动态RAM(DRAM):对每个位存储为对一个电容的充电,因漏电的原因需要不断刷新来保持存储值。
SDRAM(SynchronousDRAM):用与驱动内存控制器相同的外部时钟信号的上升沿,来作为控制信号。
DDRSDRAM(DoubleData-RateSynchronousDRAM):通过使用两个时钟沿作为控制信号,从而使DRAM的速度翻倍。它是用提高有效带宽的很小的预缓冲区的大小来划分的,如DDR(2位)、DDR2(4位)、DDR3(8位)。
2.2非易失性存储器
非易失性存储器,即使在关电后仍能保存着它们的信息。由于历史的原因,它们也被整体成称为ROM(ReadOnlyMemory),但很多ROM类型是即可以读也可以写的。
PROM(ProgrambleROM):只能被编程一次,PROM的每个存储器单元有一种熔丝,只能用高电流熔断一次。
EPROM(ErasableProgrambleROM):可擦写可编程,对它的编程是通过一种把1写入EPROM的特殊设备来完成的。
EEPROM(ElectricallyErasableProgrambleROM):电子可擦除,不需要一个物理上独立的编程设备,因此可以直接在芯片上编程,能被编程的次数可以达到10e5次。
闪存(flash):基于EEPROM的一类非易失性存储器。对它写数据必须先将芯片中对应的内容清空,然后再写入,也就是通常说的“先擦后写”。
NANDflash:对它的操作以“块”为基本单位,因此要修改一个字节,必须重写整个数据块。它的容量大,适合做大量数据的存储。
NORflash:对它的操作以“字”为基本单位。它的容量相对较小,成本大,一般用来存储程序。
2.3磁盘
磁盘由盘片构成,它是广为应用的保存大量数据的存储设备。不过从磁盘上读信息的时间为毫秒级,比从DRAM读慢了10万倍,比从SRAM读慢了100万倍。
节选:订阅号:信号君
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。