1.DRAM用电容存储,需要定时刷新,优势在于集成度可以做到很高,需要注意DRAM的地址是行和列地址分开来送的,送完行地址再送列地址,意思就是在同一组地址线上送行列地址,因此相对于SRAM来说地址线的数量可以减半。
在设计时,注意到DRAM是按行进行刷新的,因此如果要减少开销的话,尽可以能选择行地址数量较小的组合。
2.SRAM采用突发式的读写方式
3.多端口存储器,常见的是双端口存储器,两边可以同时进行读写操作,比如cpu和cache,cache和主存之间就可以采用双端口存储器,或者多机系统的cpu。
4.多体交叉存储器主要目的是提高访问的速度
一般有两种实现方式,1是多个存储体并行的工作,每个存储体都需要n个数据线,2是轮流交叉访问n个存储体,类似流水线的访问方式,当需要进行读写任务时,对A存储体的地址进行访问后,在下一个时间片段内,那么可以对B存储体进行读写,达到每隔一个时间段就可以完成一次读写任务。
5.相联存储器:使用SRAM作为存储体,有多少个存储单元就有多少个数字比较器。
应用:快速查找,容量不大,cache目录表、页表等等
6.cache的时空局部性原理
时间局部性,对同一个变量的频繁访问,比如循环体的变量
空间局部性:对一片连续的空间的访问,比如数组空间
7.全相联的地址映射方式
简述:(脑袋爆炸!)全相联==全自由,主存中任意一块都可以放入cache,主存只分块
主存地址:为主存块号+块内地址
cache地址:cache块号+块内地址
全相联映射表:主存块号+cache块号+标志位(作为主存和cache之间的桥梁)
流程:由主存地址的块号查地址映射表,对比主存块号对应的cache地址,用得到的cache块号拼接上主存的块内地址就可以达到cache地址
缺点:制造成本高,并且映射表容量有限,由于相联存储器,地址变换最复杂,有块的替换算法。
优点:块冲突小
8.直接映射
简述:主存分区,cache大小和主存每一区的大小和块号编号是一一对应的,因此地址表中不需要记住主存的块号,在查表时,根据主存地址的块号看地址表中和主存地址给出的区号是否时对应的,如果对应说明目前cache内装入的就是这一区的cache块,直接将主存地址后的主存块号和块内地址一拼接就是所得的cache地址。
主存地址:主存区号+块号+块内地址
cache地址:块号+块内地址
地址映射表:区号标记+属性位(地址编号和cache以及和主存一区的地址编号是一一对应的)
注意:直接映射没有替换算法,当发生冲突时,直接替换需要的主存区即可,这也导致块冲突较大,优势在于,地址变换最简单,直接去掉主存地址的区号就是cache地,对比全相联,可以发现任何便利都是有代价的,有得必有失。
9.组相联(组间直接映射,组内全相联)
概述:主存先分区,分完区再在区内分组,组内再分块。组与组之间采用直接映射方式,组内的块与块之间全相联,注意:全相联下只有组号是一一对应的。假如说cache内已经装入了主存的某一区的第一组,主存又给出一个新地址在cache里找不到,新地址给出的组号是第二组,那么cache的第二组又是空的,那么就可以把这个第二组装入到cache里,记录上这个第二组的区号和标记位(这个区号和第一组的区号是可以完全不同的),下次又要这个第二组的地址就直接对比给出的主存地址的组号,在映射表里看组号列对应的区号和主存地址给出的区号是否一致,若一致,直接将组号和组内cache的块号再加上块内地址拼接就得到cache地址
以两路组相联为例:
为什么引入多路组相联?
如果只有一路组相联,那么两个相同的组号的地址要装入cache就很容易引起冲突,当有多个相同的组号地址作为“备用”时,冲突率会大大减小
cache和地址映射表内设置两个完全相同的映射表和cache,分为第一路和第二路,主存同一块可以装入到cache内第一路也可以是第二路的具有相同块号位置的块,主存内不再分组,以cache的路作为分组,cache的第一路的第一块和第二路的第一块成为一个组
主存地址:区号+主存组号+块内地址
映射表:主存区号+标记位
注意:主存地址给出的组号就是cache对应的组号(路内的组号),所以不需要记录组号,前面说主存不再分组,是因为实际上主存中每一区的每一块都是一个组,将整个主存看作很多个区,每个区里面都有唯一的一个组,一个组就是一块,第一区的第一块,第二区的第二块,第三区的第一块都可以装入cache两路内的第一组,有两路就有两个装入选择。
查找过程:给出主存地址,按照组号去查目录表对比第一路和第二路的地址编号(怎么知道哪个地址编号,因为组号是一一对应的,每一路cache都唯一对应一个地址表,根据组号,比如说01,就去找目录表中第一行的区号,看是不是和主存中给出的区号一致)如果某一路的区号是一致的,那么cache就算命中
10.加速比:没有引入cache之前的平均访问时间/引入cache之后的平均访问时间
12.虚拟存储器(软件+硬件)
概述:将三种地址空间联系在了一起,虚拟地址空间(由虚存大小决定),主存实际空间和磁盘存储器地址空间,是主存与硬盘间的桥梁。
流程:给出一个主存地址,在页表中查询数据是否存放在主存中,如果没有,就访问磁盘,如果存在就访问主存,由此构成超大容量的虚存地址空间。
注意:由cpu的MM管理地址变换,操作系统负责段页表的建立和维护
13.页式虚拟存储器
流程:给出虚拟地址:虚页号+页内地址,cpu根据虚页号(偏移量)+页表基址寄存器的起始地址到页表中查对应的实页号,将实页号和页内地址拼接就构成主存物理地址
优点:主存利用率高,形成的主存碎片小,基于全相联地址映射,地址变换速度较快,页的大小固定,导致程序的模块性差,页表很长
14.段式虚拟存储器
和前者类似,不同在于段式的一段大小是不固定的,也导致程序的模块性较好,缺点在于会形成较大的主存空间浪费,碎片多
15.段页式
先分段再在段内分页,实际以页的大小为基本单位,总共一个段表,一个段有多个页表,由段号+段内基址查出本段页的起始地址,再在本段的页表中根据虚页号查出对应的实页号,将实页号和页内地址拼接得到物理地址