计算机组成原理计算题.doc

更新时间:2023-04-07 09:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算题:

【第三章】

交叉方式的片选方法,交叉方式的地址分配,交叉存取度的概念,交叉存储器的带宽的计算多模块交叉存储器采用低位地址做偏选。

模块存取一个字的存储周期为T ,总线传送时间为t ,存储器的交叉模块数为m,称m=T / t为交叉存取度。

【例5】存储器容量32字,字长64位,模块数m=4,存储周期T=200ns,数据总线宽度为64位,总线传送周期t=50ns,若连续读出4个字,顺序和交叉的带宽各为多少?

信息总量q=64b*4=256b

所需时间:交叉t1=T +(m-1)*t =350ns ;顺序t2=m*T=800ns;

带宽:交叉W1=q / t1 =730Mb / s ;顺序W2=q / t2 =320Mb / s.

【2007】

1.设阶码3位,尾数6位,按浮点运算方法(否则不计分),完成x-y运算,x=2-011×0.100101,

y=2-010×(-0.011110)。(共9分)

2.有一个1024K×16位的存储器,由256K×8位的SRAM芯片构成。(9分)问: (1) 总共

需要多少DRAM芯片? (3分) (2) 设计此存储体组成框图。(6分)

3. 已知 x= -0.101011 , y=0.111010 ,要求:(共7分)

(1)写出变形补码[x]补和[y]补和[-y]补;(3分)

(2)用变形补码计算[x+y]补和[x-y]补,并判断是否溢出。(4分)

4.已知x= 0.10101, y=–0.11001,计算[x*y]补和其真值(要求有补码直接乘法的算式)。(9分)

5. 设有一微指令格式字长为24位,其中下址字段8位;判别测试字段3位;其余为操作控制字段。操作控制字段采用混合编码方式,有5位分别经一个3:8译码器和一个2:4译码器输出,其它均为直接控制。问:(共5分,要求有算式)

(1) 这种指微指令格式中最多可以表示多少个微命令?(2分)

(2) 一条微指令最多可同时发出多少个微命令?(2分)

(3) 可直接寻址的控制存储器最大单元数是多少?(1分)

----------------------答案------------------

1.设两数均以补码表示,阶码和尾数均采用双符号位,则它们的浮点表示分别为:

[x]浮=11101,0.100101 [-y]浮=11110, 0.011110 1’

(1)求阶差并对阶 1’

ΔE=Ex-Ey=[Ex]补-[Ey]补=[Ex]补+[-Ey]补=11101 + 00 010 =11 111

即ΔE为-1,x阶码小,应使Mx右移1位,Ex加1

[x]浮=11 110,00.010010(1)

(2)尾数求和 2’

0 0. 0 1 0 0 1 0 (1)

+0 0. 0 1 1 1 1 0

0 0 1 1 0 0 0 0 (1)

(3)规格化 2’

可见尾数运算结果的符号位与最高位不相同,不需要执行规格化处理

(4)舍入处理 11 110, 00.110001。 1’

(5)判溢出

阶码两符号位为11,无溢出。1’

故最后结果为[x]浮+[y]浮=11 110, 00.110001,真值为2-2*0.110001。 1’

2. (1)

1024*16

4*28256*8

K K == 3’

(2) 存储体组成框图如下: 6’

3. x= -0.101011 , y=0.111010

(3) [x]补=11.010101 [y]补=00.111010 [-y]补=11.000110 (4) [x+y]补=[x]补+[y]补 [x-y]补=[x]补+[-y]补

11.010101 11.010101 00.111010 11.000110

00.001111(没有溢出) 10.011011(有负溢出)

x+y=0.001111 x-y=-1.110101 4. 解:x= 0.10101, [x]补=0.10101

y=–0.11001,[y]补=1.00111 (0).1 0 1 0 1 (1).0 0 1 1 1 (0) 1 0 1 0 1

(0) 1 0 1 0 1

(0) 1 0 1 0 1 0 (1)(0)(1)(0)(1)

1. 0 1 1 1 1 0 1 0 1 1 [x] 补*[y]补=1.0111101011

其值x*y=-0.1000010101=-(512+8+4+1)/1024=-525/1024. 5. 解:

(4) 由题意可知,其操作控制字段共24-8-3=13位,13位的操作控制字段采用混合编码,直接表示的位数为13-3-2=8,3位译码后可表示7个微命令,2位译码后可表示3个微命令,所以该格式最多可以表示8+7+3=18个微命令。 (2分) (5) 一条微指令最多可同时发出8+1+1=10个微命令(2分)

(6) 因为其下址字段为8位,可直接寻址的控制存储器最大单元数是256。(1分) 【2008】

1 用8k*2位的RAM 构成32k*8位的存储器,需要多少片,说明原因,画出组成的逻辑框图。

2用变形补码计算 X-Y ,X+Y ,并判别结果的正确性。设:X=0.11011,Y=-0.10010

3 存储器容量为32字,字长64位,模块数为8,用交叉方式进行组织,存储周期为200ns,数据总线宽度为64位,总线传输周期为50ns,问该存储器的带宽是多少?

4 已知某机采用微程序控制,其控制存储器容量为512×48位。微程序可在控制存储器中实现转移,可控制微程序转移的条件共4个。微指令采用水平型格式,微命令采用直接控制,后继微指令地址采用断定方式,问微指令格式中三个字段分别应为多少位?

5已知x= 0.10101, y=–0.11001,计算[x*y]补和其真值(要求有补码直接乘法的算式)

-------------------------------答案-------------------------------------

1 (32k*8)/(8k*2)=4*4=16

4片为一组,共需要4组。

2 [X]

补=0011011 [Y]

=1101110 [-Y]

=0010010

[X]

+[-Y]

=0101101 溢出

[X]

+[Y]

=0001001 无溢出 X+Y = 0.01001

3连续读出8个字的信息量是64位×8=512位

连续读出8个字所需的时间是200+7×50=5.5×10-7s

交叉存储器的带宽是 512位/5.5×10-7s=93×107位/s

4假设判别字段中每一位作为一个判别标志,那么由于有4个转移条件,故该字段为4位。由于控存容量为512单元,所以下地址字段为9位。故微命令字段字长为48-9-4=35位。

5 解:x= 0.10101, [x]补=0.10101

y=–0.11001,[y]补=1.00111

(0).1 0 1 0 1

(1).0 0 1 1 1

(0) 1 0 1 0 1

(0) 1 0 1 0 1

(0) 1 0 1 0 1

0 (1)(0)(1)(0)(1)

(1).0 1 1 1 1 1 0 0 1 1

[x]补*[y]补=1.0111110011

其值x*y=-0.1000001101=-(512+8+4+1)/1024=-525/1024.

其值x*y=-0.1000010101=-(512+8+4+1)/1024=-525/1024.

【2009】

1. 设有两个浮点数x=2Ex×Sx,y=2Ey×Sy,Ex=(-10)2,Sx=(+0.1001)2,Ey=(+10)2,Sy=(+0.1011)2。若尾数4位,数符1位,阶码2位,阶符1位,求x+y=?并写出运算步骤及结果。(7分)

2已知X=-0.01111,Y=+0.11001,求[X]补,[-X]补,[Y]补,[-Y]补,X+Y=?,X-Y=?(用变形补码计算,并说明结果是否出现溢出)。(6分)

3 如下图所示的CPU逻辑框图中,有两条独立的总线和两个独立的存储器。已知指令存储器IM最大容量为16384字(字长18位),数据存储器DM最大容量是65536字(字长16位)。各寄存器均有“打入”(R in)“送出”(R out)控制命令,但图中未标出。(8分)

(1)指出下列寄存器的位数:

程序计数器PC,指令寄存器IR,累加器AC0、AC1,通用寄存器R0~R3,指令存储器地址寄存器IAR,,指令存储器数据存储器IDR,数据存储器地址寄存器DAR,数据存储器数据寄存器DDR。(3分)

(2) 设机器指令格式为

OP X

加法指令可写为“ADD X(R i)0i→AC1,其中((R i) + X)部分通过寻址方式指向数据存储器DM。现取R i为R1。画出ADD指令的指令周期流程图,写明“数据通路”和相应的微操作控制信号。(5分)

4 某计算机的主存地址空间大小为256 MB,按字节编址。指令Cache和数据Cache分离,

均有8个Cache行,每个Cache行大小为64 B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示:

程序A: 程序B:

int a[256][256]; int a[256][256];

……

int sum_array1() int sum_array2()

{ {

int i,j,sum=0; int i,j,sum=0;

for (i=0;i<256;i++) for (j=0;j<256;j++)

for(j=0;j<256;j++) for(i=0;i<256;i++)

sum+=a[i][j]; sum+=a[i][j];

return sum; return sum;

} }

假定int类型数据用32位补码表示,程序编译时i, j, sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。(5分)

(1)若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少?(2分)

(2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)?(2分)

(3)程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?(1分)

5有一个1024K×16位的存储器,由512K×4位的DRAM芯片构成(5分)。问: (1) 总共需要多少DRAM芯片? (2分) (2) 设计此存储体组成框图。(3分)

6已知x= 0.11101, y=–0.10011,计算[x*y]补和其真值(要求有补码直接乘法的算式)(4分)-----------------------答案--------------------------

1 对阶:

△J=Ex-E Y=(-10)2-(+10)2=(-100)2所以Ex

SX右移四位后S X=0.00001001,经过舍入后S X=0001,经过对阶、舍入后,X=2(10)2×(0.0001)2

尾数求和:S X+S Y

0.0001(S X)

+ 0. 1011(S Y)

S X+S Y=0. 1100

结果为规格化数。所以:

X+Y=2(10)2×(S X+S Y)=2(10)2(0.1100)2=(11.00)2

2 [X]原=1.01111 [X]补=1.10001 ∴[-X]补=0.01111

[Y]原=0.11001 [Y]补=0.11001 ∴[-Y]补=1.00111

[X]补11.10001

+ [Y]补00.11001

[X+Y]补00.01010

X+Y=+0.01010

[X]补11.10001

+ [-Y]补11.00111

[X-Y]补10.11000

因为符号位相异,所以结果发生溢出。

3 pc=14位IR=18位AC0=AC1=16位R0-R3=16位

IAR=14位IDR=18位DAR=16位DDR=16位

4 (1)主存容量256MB,按字节寻址的地址位数应为28位,数据Cache分为8行(用3位地址),每行64B(用6位地址),因此Cache中每个字块的T ag字段的位数应是28-9=19位,还要使用一个有效位,二者合计为20位;因此数据Cache的总容量应为:64B×8+(20/8×8)B = 532B。

(2)数组A[0][31]所在的主存块对应的Cache行号是:

(320+31×4)p 64 = 6,

数组A[1][1]所在主存块对应的Cache行号:

((320+256×4+ 1×4) p 64) mod 8 = 5。

所以a[0][31]所在主存块映射到Cache第6行,

a[1][1]所在主存块映射到Cache第5行。

(3)编译时i, j, sum均分配在寄存器中,故数据访问命中率仅考虑数组a的情况。

①这个程序的特点是数组中的每一个int 类型的数据只被使用一次。数组A按行优先存放,数据Cache正好放下数组半行中的全部数据,即数据的存储顺序与使用次序有更高的吻合度,每个字块存16个int类型的数据,访问每个字块中头一个字不会命中,但接下来的15个字都会命中,访问全部字块都符合这一规律,命中率是15/16,即程序A的数据访问命中率为93.75%;

②程而程序B是按照数组的列执行外层循环,在内层循环过程中,将连续访问不同行的同一列的数据,不同行的同一列数据使用的是同一个Cache单元,每次都不会命中,命中率是0,程序执行特别慢。

根据上述计算出的命中率,得出程序B每次取数都要访问主存,所以程序A的执

行比程序B快得多。

本文来源:https://www.bwwdw.com/article/24tl.html

Top