但替换出去的数据可能马上又要使用,降低了Cache命中率和工作效率,这是随机替换算法。16.易实现、开销小,但需要记录每个块进入Cache的先后次序,而且一些经常需要使用而又最早进入Cache的程序有可能被替换掉,这是先进先出(或FIFO)替换。17.以近期最少使用的块为被替换块是近期最少使用(或LRU)替换算法。18.要求cache的命中率接近于1。三.简答题和应用题1.数据在主存中有哪些存放方式?各有何特点?(1)64位存放方式:不同长度的数据在主存中一个接着一个地存放,一个Tm最多从主存中读/写64位数据,主存空间被充分利用,但双字、单字、半字通常会跨越2个存储字存放,CPU访存时需要2个存储周期,因此速度降低一半,并且存储器读写控制较复杂。(2)起始位置存放方式:不同长度的数据一律从一个存储字的起始位置开始存放,访问任何长度的数据都能在一个存储周期完成,速度较快,但当不同长度的数据出现的概率相同时,主存空间50%被浪费掉了。(3)边界存放方式:这是64位存放方式和起始位置存放方式的折中方案。双字数据的起始地址最末3个二进制位必须是000(8的整倍数),单字数据的起始地址的最末2位必须是00(4的整倍数);半字数据的起始地址的最末1位必须是0(偶倍数)。访问双字、单字、半字、字节,都能在一个存储周期内完成,存储空间利用率比起始位置存放法高,但仍有部分空间浪费。2.某机字长32位,主存储器按字节编址,现有4种不同长度的数据(字节、半字、单字、双字)。现在有10个数据,依次为字节、半字、双字、单字、字节、单字、双字、半字、单字、字节。若要将这10个数据顺序存入主存(不能改变给定的顺序),并保证既省存储空间,又能确保任何长度的数据都能在单个存取周期内完成读写,请问应当选择何种数据存放方式?并画出主存中数据存放示的意图。解:(1)边界存放方式。(2)主存中数据存放示意图如下: