内容发布更新时间 : 2025/5/6 9:37:31星期一 下面是文章的全部内容请认真阅读。
块位置,两者的地址转换简化为块号的转换
(3)组相联映像:组相联映像方式是直接映像和全相联映像方式的一种折衷方案。 按这种映像方式,组间为直接映像,而组内的各字块为全相联映像方式。 主存地址:区号+组号+组内块号+块内地址 Cache地址:组号+组内块号+块内地址
? 替换算法:当新的主存字块需要调入cache存储器而它的可用位置又已被占满时,就
产生替换算法问题。只有在全相联和组相联映射时,才使用替换算法,直接映射时,不需要替换算法。
介绍两种替换算法:先进先出(FIFO)算法和近期最少使用(LRU)算法。 先进先出算法(FIFO):即按进入cache的先后决定淘汰顺序。采用这种算法,有可能产生较大的失效率。近期最少使用算法(LRU):选择“近期最少使用”块作为调出块,这种算法能比较正确反映程序的局部性,因为当前最少使用的块一般来说也是未来最少被访问的块。
? 主存地址和Cache地址的计算:主存地址位数A由主存容量N决定,A=log2N Cache地址位数B由Cache容量H决定,B=log2H
如主存按Cache容量分区则区号位数=主存地址位数-Cache地址位数
主存块、 Cache块大小相同,块内地址位数M取决于块容量Q ,M=log2Q
? 设cache容量为2K字,每块为16字,求:1)该cache可容纳多少个块? 2)如果主存容量为256K字,则有多少个块? 3)主存的地址有多少位? Cache地址有多少位? 4)直接映像方式下,主存地址分为哪几部分?每部分有多少位?主存中第j块映像到Cache中的哪一块?
解:1)cache可容纳多少个块:2K/16=128块 2)主存有多少个块:256K/16=16*1024=16384块
3)主存的地址有多少位log2256K=18位Cache地址有多少位:log22K=11位 主存有256K/2K=128个区
4)主存的地址分为:区号、块号、块内地址 块号位数log2128=7位,区号位数18-11=7位
主存中第j块映像到Cache中的j mod 128(块的数目) ? 虚拟存储器:
1、段式虚拟存储器:虚-存地址变换:CPU根据虚地址访存时, 先将段号与段表的起始地址相拼接, 形成访问段表对应行的地址, 再根据段表内装入位判断该
段是否已调入主存。若已调入主存, 则从段表中读出该段在主存中的起始地址, 与段内地址(偏移量)相加, 得到对应的主存实地址。
▲ 虚拟地址由段号和段内地址组成。▲ 通过段表把虚拟地址变换成实存地址 2、页式虚拟存储器(重点)
在页式虚拟存储器中, 把虚存空间和实存空间划分为等长的页, 称为虚页和实页, 每页长度是2的整数幂, 通常为512或几KB。
每个地址由两部分组成:页号和页内地址。信息往内存调入以页为单位的, 所以实地址与虚地址间的页内地址相同。因此, 虚-实地址的转换主要是虚页号向实页号的转换,这个转换关系由页表给出。
存储管理软件根据主存的运行情况,自动为每个程序建立一张页表, 存放在主存的特定区。页表的内容按虚页号顺序排列, 页表长度等于该程序的虚页数。每一虚页的使用情况占用一个存储字, 叫页表信息字。该信息字包含装入位、修改位、替换控制位和实页号等 虚地址=虚页号+ 页内地址 实地址=实页号+ 页内地址(页地址+字地址) ? 页式管理的地址变换:
17
虚存地址到主存实地址的变换是由放在主存中的页表来实现。页表是由操作系统建立的。用主存页面地址作为实(主)存地址的高字段,与虚存地址的页内地址字段相拼接,就产生了完整的实存地址,用来访问主存。
▲ 在页式虚拟存储器系统中,把虚拟空间分成页,称为逻辑页;主存空间也分成同样大小的页,称为物理页。
虚存地址分为两个字段:高位字段为逻辑页号,低位字段为页内地址。 实