计算题: 【第三章】
交叉方式的片选方法,交叉方式的地址分配,交叉存取度的概念,交叉存储器的带宽的计算
多模块交叉存储器采用低位地址做偏选。
模块存取一个字的存储周期为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)
1024K*16?4*2?8 3’
256K*8 (2) 存储体组成框图如下: 6’
D15~D8 D7~D0 R/W A17~A0 A18 A19 256K×8 ↑ ↑ 0 CSR/W 256K×8 ↑ ↑CS 1 R/W 256K×8 2 ↑ ↑CSR/W 256K×8 3 ↑ ↑CSR/W CS0 CS1 CS2 CS3 256K×8 0 ↑ ↑CSR/W 256K×8 1 ↑ ↑R/W CS256K×8 ↑ ↑ 2 CSR/W 256K×8 3 ↑ ↑CSR/W
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: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
C P U
(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位)。各寄存器均有“打入”(Rin)“送出”(Rout)控制命令,但图中未标出。(8分)
(1)指出下列寄存器的位数:
程序计数器PC,指令寄存器IR,累加器AC0、AC1,通用寄存器R0~R3,指令存储器地址寄存器IAR,,指令存储器数据存储器IDR,数据存储器地址寄存器DAR,数据存储器数据寄存器DDR。(3分) (2) 设机器指令格式为
17 13 12 0 OP X 加法指令可写为“ADD X(Ri)” ,其功能是(AC0) + ((Ri) + X)→AC1,其中((Ri) + X)部分通过寻址方式指向数据存储器DM。现取Ri为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-EY=(-10)(+10)(-100)则Sx右移4位,Ex+(100)2=(10)2=EY。2-2=2 所以Ex () SX右移四位后SX=0.00001001,经过舍入后SX=0001,经过对阶、舍入后,X=2102×(0.0001)2 尾数求和: SX+SY 0. 0001(SX) + 0. 1011(SY) SX+SY=0. 1100 结果为规格化数。所以: X+Y=2(10)2×(SX+SY)=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