整理一下存储系统中cache和虚拟存储器的相关知识点
Cache是高速缓存,设置在CPU和主存之间,由高速的SRAM组成的容量不大,但速度很快的存储器。
引入cache的目的:解决CPU和主存之间的速度差异,提高整机的运算速度
Cache的特点:存取速度快(数倍于主存),容量小,价格高。好像还有点费电。。。
由于程序访问的局部性,比方说某个存储单元在很短的时间段很可能被重复访问,这时就要将主存中被频繁访问的活跃程序块和数据块复制到Cache中,这样的好处是大多情况Cache可向CPU直接提供指令和数据,不必访存
需要注意的是,仅仅是将主存中经常被用到的部分复制到Cache中,Cache存放的是主存内容的一小部分副本
Cache和主存空间都被划分为同样大小的区域,主存中的区域称为块。Cache中存放一个块的区域称为行,或槽
在访存过程中,若CPU访问单元所在的块在cache中,称命中;若不在cache 中,称不命中
访存时,CPU送出主存(大)地址,若命中,该主存地址变换成Cache(小)地址并送Cache,直接从cache读出字送到CPU的数据总线DB;若不命中,主存将读出的字送到DB,同时,将该字所在的块复制到Cache,若Cache中可以装入就直接写入,不能装入就根据一定的算法进行替换。
直接映像方式:比如说cache里有4个槽,内存中有200个块,那么内存第1块若被调用则放入cache第1个槽,第2块被调用放入第2个槽,以此类推,第5块放入第1个槽。
全相连映像方式:每个主存块能映像到cache中的任意一个槽,如果cache满了,就替换出任一行。
组相连映像方式:做个比喻吧,cache里分为4个小队,每个队有1号2号3号4号,内存中有200位选手,如果第1位被召唤出场,那他属于第1小队的,第2位属于第2小队的,以此类推,第5位属于第一小队的,每一位选手属于哪个小队是确定的,不确定的是他在该小队中的位置。第一位选手可能坐在1、2、3、4中的任意号位置,取决于cache的替换规则。
常用的替换算法有随机替换法,先进先出法和最近最少用法。
随机替换法:随机替换掉小队中的一人
先进先出法:谁最早进入这个小队,就把谁给替换掉
最近最少使用法:小队中最近一段时间,谁被用的次数最少就替换掉谁
再简单的说一下虚拟存储器
说到虚拟内存,印象最深的就是当初玩城市天际线,打了若干mod,还导入了上百个建筑模型,卡成狗了。。。加载的文件有六七个G,妥妥的把我渣机的内存爆掉了,然后设置了一下虚拟内存,才把一秒三四张的幻灯片顺滑到一秒十张,勉强能玩
虚拟存储器只是一个容量非常大的存储器的逻辑模型,不是任何实际的物理存储器。它是借助磁盘等辅助存储器来扩大主存容量,使之为更大或更多的程序所使用。在虚拟存储器中不仅有主存和辅存两级存储器,还必须有辅助软、硬件来对它们之间的数据实现控制。
虚拟存储系统的两大特点:(1)允许用户用比主存空间大得多的空间来访问主存。(2)每次访存都要自动进行虚实地址的转换。
虚拟存储系统中存在三个存储空间:(1)主存空间,它取决于系统中实际使用的主存容量;(2)虚存空间,它取决于虚地址的长度;(3)辅存空间,它取决于系统中实际使用的辅存的总容量。