替换算法、虚拟存储器、TLB、RAID
1、需要替换算法的原因1.2、4种常见的替换算法1.2.1、先进先出法——FIFOFirst in First out1.2.2、最不经常使用法——LFULeast Frequently Used 1.2.3、近期最少使用法——LRULeast recently used1.3、FIFO替换算法的抖动问题二、虚拟存储器由于冯诺依曼的计算机结构中程序只有调入到计算机的存储中才能够被cpu访问并且执行因此在冯诺依曼的计算机结构无法执行比主存空间更大的程序。因此有了虚拟存储器2.1、虚拟存储器的概述虚拟存储器是处于主存和辅存这个层次的主要作用是解决主存容量不足的问题为程序设计者提供比主存空间大的编程空间主要分为以下3类①、页式虚拟存储器②、段式虚拟存储器 ③、段页式虚拟存储器。2.2、虚拟存储器的地址访问2.3、虚拟存储器的地址访问2.4、逻辑地址与物理地址的转换cpu在访问有虚拟存储器的存储系统的时候用的是虚拟地址cpu通过MMC将物理地址转换为虚拟地址。页表中的每一行叫做页表项若干个页表项的集合构成了页表页表的长度与序列号的位数相关联为了实现基于页表的逻辑地址和物理地址的转换首先需要由mmu当中的页表寄存器作为一个基地址来指示页表在主存中的起始地址由于对虚拟存储器进行了页划分分为页内偏移地址VPO和虚拟页号VPN当cpu访问的时候会基于虚拟页号VPN和页表寄存器MMU的值做一个偏移就找到了与这个序号相对应的一个页表项在主存当中的一个物理地址如果有效位为1的话那么我们就从主存中将这个页表项取出来也就是将这个页表项对应的物理页号取出来并与本次访问的虚拟地址当中取出来的页内偏移地址相拼接这样就得到物理地址从而实现基于mmu和页表的逻辑地址向物理地址的转换过程。如下三、TLB地址转换后备缓冲器3.1、虚地址转换过程中存在的问题cpu在基于虚拟地址由本次虚地址当中剥离出来的序列号与在mmu当中的一个页表寄存器的值进行偏移去找到存放在主存的那个列表当中与虚页号对应的页表项的物理地址访问mmu时需要去判断与这个虚地址对应的物理页是否在主存当中所以要把页表读回来去判断我们假定与这个虚地址对应的这个虚页对应的物理页在主存当中那么这一次访问就是命中的当命中之后就得到了与这个虚地址对应的那个数据在主存的哪个物理地址上之后再基于物理地址去访问主存这次从主存当中得到的将是与这个虚地址相对应的那个数据。如下所示上述过程基于虚地址访问存储数据时访问了2次主存第1次访问主存是要拿回页表项并判断页表项是否在主存当中如果在的话第2次访问主存才能得到数据。这个过程对于cpu的高速特性是一个巨大的损失。并且在虚实地址转换过程中当发生缺页的时候它对于存储系统的性能会带来更大的损失如下基于以上2种情况需要引入TLB。3.2、TLB的工作原理3.3、基于TLB的虚实地址转换如上图所示采用了TLB之后我们还会对这个地址进行二次划分主要是针对VPN划分出TLB Tag和TLB Index页内偏移地址VPO不变有了TLB Index就可以去找特定位置该位置存放着在TLB当中经过变换以后的一个页表该页表跟主存当中的页表有差别相当于主存当中页表的子集该子集中的Tag就是判断与虚页对应的物理页是否存在。由于TLB存放的是子集的原因因此不可能基于这个地方剥离出来的index或者原来的vpn去找到所有的列表项如果要找到所有的列表项那么就需要做列表的变换根据Tag去判断与虚页对应的物理页是否存在如果存在且有效位唯一的话我们就把TLB当中与这个index字段指向的特定行的物理地址读出来该物理地址只是一个物理页号如果要构成一个完整的物理地址还需要将该物理页号与本次虚地址中剥离出来的页内偏移地址去做拼接最终才得到一个物理地址。整个过程抽象成下图