计算机原理及应用作业 第三次

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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分;

相关文档
最新文档