软考中级软件设计师——存储系统
- 存储系统(层次结构)
- 存储系统分类
- 高速缓存Cache
- Cache组成
- Cache的三种地址映像
- Cache的性能分析
- 主存的扩展
- 位扩展和字扩展
- 主存的编址
- 虚拟存储器
- 磁盘存储器
存储系统(层次结构)
核心:在存储层次中,层次越高,越靠近CPU,则存储介质的访问速度越快,容量越小,其价格也就越高。
CPU在存储系统中指的是它里面所包含的一些通用寄存器,其速度是最快的,一般要求在半个 CPU 时钟周期内完成读写,然后才是高速缓存Cache,Cache中还有L1 Cache,L2 Cache,L3 Cache,集成在CPU内部,同理,L1 Cache最靠近CPU,所以在三层Cache中L1 Cache访问速度最快,容量最小,价格最高,L1 Cache的访问速度几乎和寄存器一样快,通常只需要2~4个时钟周期,而大小在几十KB到几百KB不等。其次是L2 Cache和L3 Cache。L2 Cache 离CPU核心更远,它的大小比L1 Cache更大,通常在几百KB到几MB不等,访问速度更慢,速度在10~20个时钟周期。而L3 Cache通常是多个CPU核心共用的,位置更远,大小更大,通常在几MB到几十MB不等,访问速度更慢,在2060个时钟周期。Cache之后是内存,内存速度大概在200300个时钟周期之间。内存之后是硬盘,分为固体硬盘和机械硬盘。固体硬盘(SSD)结构和内存相似,但是它相比内存的优点是断电后数据还是存在的,而内存、寄存器、高速缓存断电后数据都会丢失。内存的读写速度比SSD大概快10~1000倍。机械硬盘(HDD)是通过物理读写的方式来访问数据,访问速度非常慢,它的速度比内存慢10w倍左右。由于SSD的价格快接近机械硬盘了,因此机械硬盘已经逐渐被SSD替代了。
存储系统有两套层次结构,分别是主存—辅存和Cache—主存。
主存—辅存:实现虚拟存储系统,解决了容量不够的问题
Cache—主存:解决了主存与CPU速度不匹配的问题
Cache相当于主存部分数据的一个复制,平衡主存和CPU中间速度不匹配的问题。
存储系统分类
①按位置分类
- 内存(主存)
用来存储当前运行需要的程序和数据,速度快,容量小 - 外存(辅存)
用来存储当前不参与运行的数据,容量大但速度慢
②按材料分类 - 磁存储器
用磁性介质做成。如磁芯、磁泡、磁盘、磁带等 - 半导体存储器
根据所用的元件可分为双极型和MOS型两类;根据是否需要刷新又可以分为静态和动态两类 - 光存储器
由光学、电学和机械部件等组成,如光盘存储器
③按工作方式分类 - 读写存储器(RAM)
即可读取数据也能存入数据的存储器 - 只读存储器(ROM)
工作过程仅能读取的存储器
根据数据的写入方法,又可细分为ROM、PROM、EPROM和EEPROM等类型
分类 | 说明 |
---|---|
固定只读存储器(ROM) | 这种存储器是厂家生产时就写好数据的,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制 |
可编程的只读存储器(PROM) | 其中的内容可以由用户一次性的写入,写入后不能再修改 |
可擦除可编程的只读存储器(EPROM) | 其中的内容既可以读出,也可以由用户写入,写入后还可以修改,紫外线照射擦除信息 |
电擦除可编程的只读存储器(EEPROM) | 与EPROM相似,EEPROM中的内容既可以读出,也可以进行改写,电擦除的方法进行数据的改写 |
闪速存储器(Flash Memory) | 简称闪存,闪存的特性介于EPROM和EEPROM之间,类似于EEPROM,也可以使用电信号进行信息的擦除操作。整块闪存可以在数秒内删除,速度远快于EPROM。 |
高速缓存Cache
Cache是位于CPU和主存之间的高速存储子系统
采用高速缓存的目的:提高存储器的平均访问速度,使存储器的速度与CPU的速度相匹配
Cache的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常Cache被集成到CPU内,以提高访问速度,其主要特点是容量小,速度快,成本高。
Cache组成
Cache由两部分组成。
1.Cache存储部分:用来存放主存的部分复制信息
2.控制部分的功能是:判断CPU要访问的底层信息是否在Cache中。若在,则命中,若不在则没有命中。
Cache的三种地址映像
因为处理机都是按主存地址访问,而应从Cache存储器中读写信息,因此就需要地址映像,即把主存中的地址映射成Cache存储器中的地址。地址映像方法有三种。
- 直接映像
直接映像就是主存的块与Cache中块的对应关系是固定的。主存中的块只能存放在Cache存储器的相同块号中,因此只要主存地址中的主存区号与Cache的主存区号相同,则表明访问Cache命中。
优点:地址变换简单,由于映射关系固定,地址变换过程可以非常迅速。
缺点:灵活性较差,当程序频繁访问两个相互冲突(即映射到同一缓存块)的主存块时,即使缓存中有其他空闲块,也会因为固定的映射关系而无法使用,导致缓存命中率下降 - 全相连映像
全相连映像就是允许主存任一块可以调入Cache的任一块空间。地址变换时,将主存地址高位表示的主存块号与Cache中的主存块号进行比较,若相同则命中。
优点:主存的块调入Cache的位置不受限制,十分灵活,缓存空间可以被充分利用,因为每个缓存块都可以存储来自主存的任何块,冲突的概率相对较低
缺点:无法从主存块号中直接获得Cache块号,需要一种机制来快速查找主存块在缓存中的位置,这通常需要一个专门的查找表或算法,变换比较复杂,速度比较慢 - 组相联映像
这种方式是前面两种方式的折中,具体方法是将Cache先分成组再分块,组相联映像就是组间采用直接映像方式,而组内的块采用全相连映像方式。
Cache的性能分析
若H为Cache的命中率, tc 为Cache的存取时间,tm为主存的访问时间,则Cache的等效访问时间ta为:
t a = H t c + ( 1 − H ) t m t~a~=Ht~c~+(1-H)t~m~ t a =Ht c +(1−H)t m
使用Cache比不使用Cache的CPU访问存储器的速度提高的倍数r可以用以下公式求得:
r = t m / t a r=t~m~/t~a~ r=t m /t a
知识点:
①Cache的设置不会扩大主存容量
②Cache命中率并不随器容量的增大线性提高,而是当上升到一定程度到达临界点后就会下降
③Cache与主存之间的地址映射由硬件自己完成
主存的扩展
位扩展和字扩展
主存的扩展主要涉及到位扩展和字扩展这两个方式。这两种扩展方式都是为了提高存储器的容量,以适应不同应用场景的需求。
位扩展:位扩展是指在不增加存储单元数量的情况下,通过增加每个存储单元的位数来扩展存储容量。需要将多个相同容量的存储器芯片并联起来,以实现位数的增加。这种方式主要用于提高数据总线的宽度,即CPU一次能够读取或写入的二进制位数。
字扩展:字扩展是指通过增加存储单元的数量来扩展存储容量,而每个存储单元的位数保持不变。需要将多个相同位数但容量不同的存储器芯片串联起来,以实现存储单元数量的增加。这种方式主要用于增加存储器的总存储单元数,以存储更多的数据。
现在有一个8*4位的存储器,分别进行位扩展和字扩展,如下图:
主存的编址
例题:内存地址从AC000H到C7FFFH,共有①____个地址单元,如果该内存地址按字(16bit)编址,由28片存储芯片构成。已知构成此内存的芯片每片有16K个存储单元,则该芯片每个存储单元存储②____位。
①地址单元:
要计算两个地址单元之间的长度,需要由末尾地址减去首地址,然后再加1
类比于种树问题,计算从第二棵树到第五棵树之间总共有几棵树,涉及到端点的问题,两端都有树的话,则种树的棵数应比要分的段数多1,即:棵数=间隔数+1。
C7FFFH-AC000H+1=1C000H
所以有112个地址单元。
②计算内存大小有两个方法
已知计算出共有112K个地址单元,一个字是16bit,所以内存大小共有:112K × 16bit;同时题目中告诉你是有28个存储芯片,每片有16K个存储单元,则内存大小共有:28 × 16K × 每个单元存储多少位,即可得出:
计算得出:每个单元存储46位
虚拟存储器
虚拟存储器是由主存、辅存、存储管理单元及操作系统中的存储管理软件组成的存储系统。程序员使用该存储系统时,可以使用的内存空间可远远大于主存的物理空间,但实际上并不存在那么大的主存,故称为虚拟存储器。
虚拟存储器使存储系统既具有相当于外存的容量,又具有接近于主存的访问速度。
工作原理:
虚拟存储器基于局部性原理工作,即应用程序在运行前,仅需将当前要运行的少数页面或段先装入内存,其余部分暂留磁盘上。当要执行的指令不在内存时,系统会自动将它们从外存调入内存。若内存空间不足,系统会选择部分内存空间的内容交换到磁盘上,并释放这些内存空间供其他进程使用。
特点:
- 逻辑容量远大于物理主存容量,扩大了程序可访问的存储空间,使得大型程序或多任务运行成为可能
- 虚拟存储器支持多任务多环境,每个人物都有独立的虚拟地址空间,便于实施多任务的保护和隔离
- 通过虚拟存储器的管理,操作系统可以更灵活地分配和回收内存资源,便于操作系统实现内存管理,提高内存使用效率
- 逻辑容量受限于计算机的地址结构和可用磁盘容量
- 管理方式有段式、页式和段页式三种
磁盘存储器
磁盘存储器是一种以磁盘为存储介质的存储器。它通过磁头在旋转的磁盘盘片表面进行数据的读写操作,是计算机系统中常用的外部存储设备,用于长期保存大量的数据信息。
存取时间 = 寻道时间 + 等待时间(平均定位时间+转动延迟)
寻道时间是指磁头移动到磁道所需时间;等待时间为等待读写的扇区转到磁头下方所用的时间