计算机原理及应用作业 第三次
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算机原理与应用》作业第三次
四、缓冲技术与浮点数
1、缓存块、相联性和平均存储器访问时间(27分)
假设有16位的地址空间,时钟周期频率为2GHz。设计的缓存参数如下:
缓存大小:4Kb
块大小:1 word(4 byte)
缓存命中时间:2个周期
缓存缺失时间:100个周期
再假设,依次访问如下的地址:0x0000, 0x0004, 0x0008, 0x000c, 0x1000, 0x1004, 0x1008, 0x100c, 0x0000, 0x0004, 0x0008, 0x000c
a.如果使用直接映射缓冲技术
(1)地址中的tag、set index、block offset字段分别是多少宽度?(3分)
Tag:4位set index:10位block offset:2位
(2)在每次存储访问时,缓存是否命中/缺失?如果是缺失的话,请给出缺失类型
(3)请计算缓冲的缺失率,及AMAT。与没有使用缓冲技术相比,访问存储的时间
的效率提高了多少?(3分)
缺失率=100%;T=0.5ns,AMAT=(2+100*100%)T=51ns;没有缓冲技术时,AMAT=100 cycles=50ns,故缓冲技术使得效率降低2%。
b.假设缓存大小不变,而将块大小变为2字(8字节)请回答问题。
(4)地址中的tag、set index、block offset字段分别是多少宽度?(3分)
4;9;3
(5)在每次存储访问时,缓存是否命中/缺失?如果是缺失的话,请给出缺失类型(Compulsory, Capacity, or Conflict), 请将结果填入下表。(3分)
(6)请计算缓冲的缺失率。注:由于增加了块大小,命中和缺失的时间都有可能增加。请在下述给出的参数中选择合理的时间参数,来计算AMAT。与没有使用
缓冲技术相比,访问存储的时间的效率提高了多少?(3分)
●Cache hit time: 1, 2, 3 cycles
●Cache miss time: 90, 100, 110 cycles
hit time=2 cycles, miss time=110 cycles, 1 cycle=0.5ns;
miss rate=50%;
AMAT=(2+110*50%)cycles=28.5ns;
未使用缓冲时,AMAT=100 cycles=50ns,缓冲使得访问效率提高43%。
c.将b中的缓存设计,进一步提高缓存的相联性,缓存大小不变,块大小仍为2字,使用2路分组相连方式。
(7)地址中的tag、set index、block offset字段分别是多少宽度?(3分)
5;8;3
(8)在每次存储访问时,缓存是否命中/缺失?如果是缺失的话,请给出缺失类型(Compulsory, Capacity, or Conflict), 请将结果填入下表。(3分)
(9)请计算缓冲的缺失率。注:由于增加了块大小,命中和缺失的时间都有可能增加。请在下述给出的参数中选择合理的时间参数,来计算AMAT。与没有使用
缓冲技术相比,访问存储的时间的效率提高了多少?(3分)
●Cache hit time: 1, 2, 3 cycles
●Cache miss time: 90, 100, 110 cycles
hit time=3 cycles, miss time=110 cycles, 1 cycle=0.5ns;
miss rate=33.3%;
AMAT=(3+110*33.3%)cycles=19.8ns;
未使用缓冲时AMAT=100 cycles=50ns,缓冲技术使效率提高了60.33%。
2、适应缓存的程序编写(11分)
如下的C程序(非优化方式)运行在一个处理器上,其缓存使用直接映射方式,cache 大小为1Kb,块大小为16 bytes。
int i, j, array[256*256];
/* ... */
for (i = 0 ; i < 255 ; i++) {
for (j = 0 ; j < 256 ; j++) {
array[256*j] += array[256*j + i + 1];
}
}
假设int为4字节,array开始于0x4000
(10)请计算代码执行时的缓存访问缺失率。(4分)
一次访问有两次读操作和一次写操作,总访问次数为3*255*256=195840;
当i=0~2时,array[256*j]和array[256*j+i+1]只有一个会缺失,当i>2时,array[256*j]和array[256*j+i+1]在访问时都会缺失,总缺失次数为3*1*256+(255-3)*2*256=129792;
Miss rate=129792/195840=66.27%
(11)重写代码提高执行效率(不要使用cache blocking算法)。重写后代码的缺失率是多少?(5分)
for (ij= 0 ; j < 256 ; j++) {
for (i = 0 ; i< 255 ; i++) {
array[256*j] += array[256*j + i + 1]; } }
总访问次数3*256*255,缺失访问次数256*[255/3]=256*64;
Miss rate=8.37%
(12)对于重新编写的代码使用write-back策略是否有效?请使用1-2句话简要分析。
(2分)
有效,重新编写后的代码会连续修改某一个元素的值,采用写回策略,每次只
修改缓存,直到移出才存回内存,这比每次都写回内存的效率要高。
3、浮点数(12分)
请参考IEEE 32位浮点表示法,但本题使用的指数部分为6位,偏置数使用30。请完成下述问题。//第十七讲结束时,即可做本题了
(13)将-42.375转化为浮点表示,并用十六进制样式写出答案。(2)0xC6A60000(14)将0xD3510000转化为十进制的数。(2)-3396
(15)请指定+∞、-∞、NaN的表示法。(2)
+∞:0x7E000000;
-∞:0xFE000000;
NaN:exponent为111111,significand非零即可
(16)它能表示的最小正整数(在小数点右边没有任何数)是多少?把答案写成十进制(例如12)的形式。(2)
(17)它能表示的最小的非变形的正数是多少?把答案写成2的幂(例如2的x次方)形
2
式。(2)-29
(18)它能表示的最小的正数是多少?把答案写成2的幂(例如2的x次方)形式。(2)-54
2
以上为第二次作业的全部题目,共50分。
(1)~(9)每个问题为3分;