购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 主存和辅存

2.3.1 内存

这里的存储器是中央处理器通过总线直接访问存储器,通常称为内存。硬盘等需通过I/O接口访问的存储器,常称为外存或者辅存。

存储器的作用显然是存储数据,包括指令、指令所带的数据(注意,这正是冯·诺依曼结构的特点之一)和中央处理器处理后的结果,包括中间结果。

中央处理器对存储器的访问需通过控制地址、数据总线方式进行。存储器的数据组织是线性的,所有存储的数据都有整齐地“编号”,即访问地址。存储器一般每个存储单元中有8位数据,其容量是其存储单元的总和。

当内存需要扩展时,位扩展是当存储器的容量要求与芯片的容量相同,但位数不同时,就需要进行位方向上扩展。字扩展是当存储器的位数与芯片的相同,但是容量不足时,就需要在字方向上扩展。字位同时扩展是指在内存容量和数据位长两个方向上同时扩展。

1.存储器的一些性能指标

(1)存取时间:指的是从中央处理器发出指令到操作完成的时间。

(2)传输率:或称为数据传输带宽,指单位时间内写入或读取的数据的多少,存取时间越少,传输率越高。

(3)存储密度:单位面积的存储容量。

2.存储器分类

传统意义上存储器分为RAM(Random Address Memory)和ROM(Read Only Memory),RAM是随机存储器,数据可读可写,一旦掉电,数据将消失。和ROM的命名方式不同,随机存储器强调的并非是它的可读可写特性,而是它的“随机”特性,也就是通过地址和数据总线,中央处理器可以“随机”读写存储器的任何某个字节的内容。ROM是只读存储器,掉电后数据依然保存。在个人计算机中,典型的ROM是BIOS,它里面是个人计算机的硬件检测和引导程序。事实上,有许多种不同类型的存储器,新的产品不断出现,正在打破通常意义上的RAM和ROM的分界线。既可读可写,又能掉电后仍保持数据的存储器已经出现,有的资料称之为“混合”类型。

RAM有静态和动态两种。最常用的动态RAM需要定时刷新电路才能保持数据,而静态RAM掉电后信息不丢失,无需刷新过程,所以速度上有优势,而且不需要额外的刷新电路,常作为芯片中的Cache使用。而动态RAM集成度高成本低,得到了广泛的应用。

PROM(可编程ROM):这种ROM可写一次,写完后就不能再更改了。

EPROM(可擦除可编程ROM):这种ROM可多次擦除和重写,擦除工作由紫外线照射来完成。

EEPROM(可擦除可编程ROM):使用电信号即可擦除的ROM,可多次重写。

普通的ROM最便宜,适合于已经成型和经过严格测试的大量生产的情况。而在开发的阶段,使用EEPROM则可以减少程序的刻录时间,提高开发效率,节约开发成本。

FLASH(闪存):在嵌入式系统中,它的特征和EEPROM相同,又有EPROM的高集成性,低廉的成本,广泛应用于掌上电脑和手机等嵌入式系统。特点是擦除和写信息必须是按照数据块来操作的,这和普通的随机存储内存不同。

NVRAM为非挥发性RAM,这实际上是静态RAM加上电池。加电时,它的表现和静态RAM一样,失去电力时,由电池供电以保持其中的内容不丢失,由于成本较高,所以其容量通常非常小,通常只有几百字节。表2-2所列为几种存储器之间的比较。

表2-2 几种存储器之间的比较

(续表)

2.3.2 外存

和内存相比,外存或辅存有的特点:中央处理器必须通过I/O接口和外存联系,容量大,速度较慢。

硬盘是最常见的外存,硬盘的容量越来越大,平均寻道时间越来越短,是大多数计算机不可缺少的组成部分。

软盘已经在很长的时间内没有发展了,现在仍然在使用3.5规格,容量为1.44MB,它曾经辉煌的地位已经让位给现在的闪存盘。

光盘、CD-ROM已经是软件发行最常见的载体,DVD的驱动器也很常见,光盘刻录也是备份的优先选择之一。

磁带的特点是顺序读写,容量很大,这使得磁带是重要数据备份的主要选择。

闪存盘以容量大(相对软盘而言),体积小而成为流行的便携式存储产品,闪存盘一般以USB接口和计算机相连,也常称为U盘。

硬盘是最常用的外部存储设备,它利用电磁特性,由一个或几个表面镀有磁性物质的盘片来记录数据信息,由盘片两面所安装的磁头来完成对数据的读写操作。

1)磁道、柱面和扇区

硬盘或者软盘都是将盘片化分成多个同心圆,称为磁道,从最外圈向内依次编为“0”道、“1”道等。

柱面是将硬盘中的所有盘片每面的任一磁道,如“0”道,重合起来就形成一个空心圆柱体。

扇区是再将盘片上每条磁道平均分为若干段。目前我们所使用的硬盘每磁道均分为64个扇区,编号为0~63,硬盘每扇区格式化后的容量和软盘相同,都是512B。

2)C/H/S

C/H/S是英语“柱面数量(Cylinder)/磁头数量(Head)/扇区数量(Sector)”的缩写。可以通过这些数量来计算硬盘的容量。随着硬盘容量突破8.4GB,许多容量在9.1GB或更大硬盘的C/H/S参数全部标为16383/16/63,这样就无法利用C/H/S参数正确计算出硬盘容量。

3)LBA扇区

LBA扇区是厂家将硬盘的逻辑扇区LBA规范折算出的扇区数,此时用户同样可以按LBA扇区参数来计算具体硬盘的实际容量。

4)硬盘容量和计算

和电脑专业领域中存储器的容量普遍以1024Byte为1KB,以(1024×1024)Byte为1MB不同,硬盘生产厂家则多以1000Byte为1KB计算容量,这就是许多硬盘在经过格式化之后显示的容量都比硬盘值要少的原因。

对容量小于8.4GB的硬盘可根据公式计算:

对于大于8.4GB的硬盘,或者利用“LBA扇区”参数按公式计算:

磁盘存储器有格式化容量和非格式化容量两个指标。其他格式化容量指按照某种特定的记录格式所能存储信息的总量,也就是用户真正可以使用的容量;非格式化容量是磁盘记录表面可以利用的磁化单元总数。将磁盘存储器用于计算机系统中,必须首先进行格式化操作,然后才能供用户记录信息,格式化容量一般约为非格式化容量的60%~70%。

5)单碟容量

单碟容量就是一张盘片的存储容量,一般包括了正、反两个存储面之和。

硬盘单碟容量取决于盘片的平滑程度、盘片表面磁性物质质量和磁头类型,随着盘片表面越来越光滑,表面的磁性物质质量越来越好,磁头的技术越来越先进,单碟容量也在不断提升,使得硬盘容量也日益提高。很多硬盘的最大单碟容量已经达到了100GB。

6)S.M.A.R.T

如果此时硬盘在运行时受到碰撞,则很可能使高速旋转的盘片与磁头相撞,造成磁头或盘片表面刮伤,而破坏硬盘的盘片。

S.M.A.R.T(Self-Monitoring Analysis and Reporting Technology,自我监测、分析和报告技术)是最早的硬盘保护技术。主要是对硬盘中盘片电机等主要部件及盘片表面的工作状态进行监测、分析,一旦发现问题便及时向用户发出信息以提醒用户及早进行处理,目前生产的硬盘都支持S.M.A.R.T。

7)最大数据传输速率

数据传输速率代表硬盘的数据读写速度,数据传输速率分为“最大内部传输速率”和“最大外部传输速率”。其中内部传输速率是指硬盘磁头至数据缓存之间的速率,外部传输速率则是指数据缓存至硬盘接口之间的速率,取决于接口标准,所以通常也能代表硬盘接口速率。

8)平均寻道时间

指硬盘在盘面上移动读写头至指定磁道寻找相应目标数据所用的时间,它描述硬盘读取数据的能力,单位为ms。当单碟片容量增大时,磁头的寻道动作和移动距离减少,从而使平均寻道时间减少,加快硬盘速度。

2.3.3 高速缓存

计算机的内存速度和外存速度之间,计算机中央处理器运算速度和访问主存时间之间,都有很大的差别。在计算机执行时,需要从主存中读取指令和数据,需要将外存的数据读入内存中,这些读取的过程都是造成计算机性能下降的瓶颈,为了尽可能减少速度慢的设备对速度快设备的约束,可以利用高速缓存技术。

在中央处理器和主存之间的高速缓存,在速度上可以和高速的中央处理器相匹配。当中央处理器需要从主存中读取数据或者指令时,先在其高速缓存中查找,如果高速缓存中已经存在需要访问的数据的备份,则不再从主存中读取,而直接从高速缓存中读取,否则再从主存中读取所需要的数据,并在缓存中留一个备份,以便下一次访问,这样就避免了访问相对低速的主存,提高了计算机的性能。

对于位于主存和外存之间的高速缓存的工作原理类似。

注意到如果没有从高速缓存中得到数据,那么必须从低速的设备中得到数据,这种情况实际上比直接从低速设备中读取数据更慢一些。如果缓存的命中率不够,那么由于缓存本身所带来的复杂性还可能使系统更加缓慢。

高速缓存中的数据必须和外存中的数据保持一致,通常有以下的方法:

(1)写通(Write through)。在写内存的同时,也写缓存。

(2)只写内存,将缓存中相应部分的内容置为无效。

(3)写回(Write back),只写缓存,由缓存控制器决定在合适的时候写内存。这是效率最高的方式,但存在一定的风险,特别是对于内存和磁盘直接写的缓存,可能会导致数据没有真正写入磁盘而造成数据丢失。在数据库应用中,大型数据库会采取一些其他措施来避免这样的事情发生。

判断是否命中,如果命中,则写缓存,否则写内存。

1.虚拟存储器

与内存和外存之间的高速缓存的功能相反,虚拟存储器是利用外存来虚拟内存,显然这不是为了提高速度,它主要的作用是提供给软件一个比实际主存大得多的地址空间,同时能使软件突破实际内存大小的限制,得到更多的空间,虽然不是实践的内存进行工作。更重要的是虚拟存储器对于软件而言是透明的,虚拟存储器的实现和调度不会对软件代码的执行带来影响,但是在虚拟存储器管理器进行存储器替换的时候,软件的使用者会明显地感觉到速度的降低。

虚拟存储器的出现,给程序员以很大的自由空间,程序员不再需要仔细计算内存的使用、分配,小心翼翼地控制内存的容量,以不要超过实际内存的容量。对于简单的程序不会太难,而对于复杂的大型应用,总内存的占有往往需要超过实际的内存容量,同时内存的使用分配工作也是程序员非常容易出现错误的方面。

在虚拟存储器中,有两个内存地址:虚拟内存逻辑地址和物理地址。虚拟内存逻辑地址和物理地址无法一一对应。虚拟内存地址的容量称为“虚拟容量”,程序员可以按照虚拟地址进行编程,可以使用比实际内存容量大很多的虚拟内存来进行编程,把主要精力用在应用逻辑上,对于虚拟内存逻辑地址和物理地址的转换,则交给操作系统来管理。

虚拟内存地址中的内容可能在某个时刻并不在物理内存中,而是在外存中,连续的虚拟内存地址可能在物理内存中并不连续,这都需要操作系统完成虚拟逻辑地址和实际物理地址的转换,这个转换对程序而言是不可见的。

2.高速缓存和虚拟存储器的替换算法

当高速缓存未命中,从低速设备读取数据,而这时如果高速缓存很慢,就必须将高速缓存的数据放弃一部分,填充需要的数据。

对于虚拟存储器而言,如果程序需要访问的内容不在物理内存中,就必须从外存存储的内存内容中读到物理内存中,如果物理内存已满,那么也必须把物理内存中的一部分转移到外存中去。

基本的替换算法有两种,一种是先进先出算法,另一种是最近最少使用算法。

先进先出(FIFO)算法是把高速缓存当做一个队列一样,当高速缓存满了后,就将最早读入高速缓存的数据替换。这样的算法简单,容易实现。

最近最少使用(LUR)算法则是当高速缓存需要替换内容时,把使用频率最低的部分替换掉。这种方法必须记录缓存的使用情况,统计不同缓存区域的使用率,相对FIFO算法而言要复杂得多,但这是一种更加有效率的方式,它基于这样的假设,利用率高的部分在以后的利用率也高。 HZ2jN4Pq2S9SuSVOTobgfIEMLKAl2/LE99HiYRZMpLmauJBCqdgRmrQp/1OpRCvn

点击中间区域
呼出菜单
上一章
目录
下一章
×