第四章 存储体系
解决Cache的透明性所带来的问题,和中央处理机写Cache,使主存内容跟不上Cache内对应内容的变化造成的不一致的问题的关键是选择好更新主存内容的算法,一般有两种写直达法(存直达法)和写回法(即抵触修改法)两种。
写直达法,又称存直达法,是指在CPU对Cache进行写操作时,如果命中Cache,不仅将数据写入Cache,而且写入主存,使两者的对应内容统一起来,这样,当Cache中的块被替换时,就不必再花时间写回主存了。
写回法,又称抵触修改法,是指在CPU对Cache进行写操作时,如果命中Cache,就只将数据写入Cache,而暂时不写入主存,只有当变化了的Cache块被替换时,才花一个主存周期,将其写回主存相应的位置上,使两者的对应内容统一起来。
Cache采用按需取进算法和预取进算法来提高Cache的命中率。
按需取进算法是指在Cache块失效时才将要访问的字所在的块取进Cache。预取进算法是指在用到某Cache块之前就将该块预取进Cache。
预取进算法包括恒预取进算法和不命中时预取进算法。
恒预取进算法是指访问主存第i块时,不论其是否在Cache中命中,恒将主存第i+1块预取进Cache。不命中时预取进算法是指访问到主存第i块的信息时,只有当其不在Cache中时,才将主存第i+1块预取进Cache。
1.按位编址和按字编址?
现在从内存中读数据都是按字节为单位。
P86第二段第一行:“目前不少机器的指令地址码已达24-32位,相当于每个用户的程序空间已达16MB-8192MB”。这里有一层隐含的意思,就是地址码一般是按字节编码。
2.相等比较电路的个数=组内块数?
我不知道是不是可以这么理解,遇到过一道题,其中存在这种关系,不知道是不是巧合?
一个采用位选择组相联映象方式的Cache,要求Cache的每一块在主存周期内取得。主存采用4个存储体的低位交叉方式访问,每个存储体的字长为4个字节,总容量为256MB,Cache的容量为512KB,每一组内有4块。采用按地址访问存储器构成相联目录表,实现主存地址到Cache地址的变换,采用4个相等比较电路。
(1)设计主存地址格式,并标出各字段的长度。(5分)
(2)设计Cache的地址格式,并标出各字段的长度。(5分)
(3)设计相联目录表结构,并求出该表的行数及每一行的格式。(5分)
(4)画出实现位选择组相联地址变换的逻辑示意图。(5分)
3.采用多级状态位技术、比较对法实现LRU算法时需要比较对触发器的个数
设组内有b块,每组g群,每群p对,每对l行。
每组g群,组中选群需C2(g)个比较对触发器。
每群p对,群中选对需gC2(p)个比较对触发器。
每对l行,对中选行需gpC2(l)个比较对触发器。
共需C2(g)+gC2(p)+gpC2(l)个比较对触发器。
1.在一个页式虚拟存储器中,虚地址空间为4G字节,页大小为1K字节,页表项的大小为4字节。试问: (1)共需要多少个页表项?
(2)每个页面可存放多少个页表项?
(3)需要几级页表构成表层次?
解答: (1)2^22个或4M个 (2)1024/4=256个 (3)3级