【计算机组成原理】:存储系统学习(下)
Cache等存储系统请参考:存储系统学习(上)。
一、虚拟存储器
冯诺依曼计算机的工作原理是存储程序和程序控制。那么,如果程序比主存容量大该怎么运行呢?于是,虚拟存储器的概念被提出来。利用主存-辅存存储层次,解决主存容量不足的问题,为程序设计者提供比主存空间大的编程空间。常见的虚拟存储器划分为:页式虚拟存储器、段式虚拟存储器、段页式虚拟存储器。
虚拟存储器的设计有两个必须要解决的问题:
(1)CPU如何访问存储系统的地址属性(逻辑地址、物理地址)?
(2)如何判断CPU要访问的信息是否在主存中?
针对虚拟存储器的这两个问题,提出了解决方案。
(1)采用MMU(Memory Management Unit):管理虚拟存储器与物理存储器
(2)采用页表来判断CPU要访问的内容是否在主存,并与MMU配合实现逻辑地址与物理地址之间的转换?
具体而言,虚拟存储器是如何工作的呢?
首先CPU会根据虚拟地址进行访问,判断页表上的有效位,也即是判断该地址是否在主存上。如果该虚拟地址有效,就将虚拟地址转化为物理地址进行访问。如果该地址无效,就从磁盘上访问。
虚拟地址和物理地址之间的转换:
首先会将虚拟地址拆分成虚拟页号(VPN)和页内偏移地址(VPO)。MMU根据虚拟页号在页表中找到对应的物理地址。若物理地址有效,则将对应的物理页号(PPN)和页内偏移地址(VPO)拼起来作为物理地址。
二、TLB
虚实地址的转换会带来一些问题,与Cache类似,虚拟地址转换过程中存在页面命中和缺页的情况。不管是否命中都需要多次访问主存,会带来性能下降。缺页异常处理后再次进行虚实地址转换将再次访问主存。
因此,提出了一种TLB(Translation Lookaside Buffer,地址转换后备缓冲器)。TLB类似于Cache的映射方法,对来自CPU的虚页号进行逻辑划分,得到相应的标记和索引字段。根据索引找到对应行号,判断标记位,最后生成对应的物理地址。
三、RAID
RAID(Redundant Arrays of Independent Disks )的提出背景:
(1)很多人都有因磁盘故障而导致数据丢失的经历;
(2)磁盘访问速度过慢;
(3)多磁盘管理不方便
RAID的核心技术:
(1)将数据条带化后,存放在不同磁盘上,通过多磁盘的并行操作提高磁盘系统的读写速率。
(2)使用基于异或运算作为基础的校验技术恢复损坏的数据。如下图所示,异或和=可以交换,即其中一块儿磁盘损坏,可以用剩下两块磁盘异或得出。
常见的几种RAID技术:
(1)RAID0 - 数据以条带式方式均匀分散在各个磁盘
(2)RAID1 – 数据采用镜像的冗余方式,同以数据有多份拷贝
(3)RAID3/4 – 数据按位/条并行传输到多个磁盘上,同时校验数据存放到专用校验盘上。
(4)RAID5 – 数据按条带分布在不同磁盘上,校验信息被均匀分散到各磁盘上
(5)RAID10 - 结合RAID1和RAID0,先镜像。再条带化
RAID的实现方式分为软件实现和硬件实现。
软件RAID:功能都依赖于主机CPU完成,没有第三方的控制处理器和IO芯片。
硬件RAID:专门RAID控制处理器和IO处理芯片处理RAID任务,不占用主机CPU资源。