计算机组成原理期末复习-综合计算题

1、假定某计算机1和计算机2以不同的方式实现了相同的指令集,该指令集中共有A、B、C、D 4类指令,它们所占的比例分别为40%、20%、15%和25%。计算机1和计算机2的时钟周期分别为600MHz和800MHz,各类指令在两计算机上的CPI如下表所示。

各类指令在两计算机上的CPI

求两计算机的MIPS各为多少?

答:CPI1= 2*40% + 3*20% + 4*15% + 5*25% = 3.25

MIPS1= f/CPI1 = 600/3.25 = 185

CPI2=2*40% + 2*20% + 3*15% + 4*25% = 2.65

MIPS2= f/CPI2 = 800/2.65 = 302

2、若某程序编译后生成的目标代码由A、B、C、D 4类指令组成,它们在程序中所占比例分别为40%、20%、15%、25%。已知A、B、C、D 四类指令的CPI分别为1、2、2、2。现需要对程序进行编译优化,优化后的程序中A类指令数量减少了一半,而其他指令数量未发生变化。假设运行该程序的计算机CPU主频为500MHz。回答下列各题。(1)优化前后程序的平均CPI各为多少?(2)优化前后程序的MIPS各为多少?(3)通过上面的计算结果,你能得出什么结论?

答:(1)优化前CPI=1* 40% + 2*20% + 2*15% + 2*25% = 1.6

优化后CPI = 1*(2/8) + 2*(6/8) = 1.75

  1. 优化前MIPS = f/CPI = 500/1.6 = 312.5

优化后MIPS = f/CPI = 500/1.75 = 285.7

(3)优化后CPI增加,MIPS减少,优化失败,应尝试降低CPI最大指令的比例。

3、某32位机共有微操作控制信号52个,构成5个相斥类的微命令组,各组分别包含4个, 5个,8个, 15个和20个微命令。已知可判定的外部条件有CY和ZF两个,微指令字长29位。

    (1)给出采用断定方式的水平型微指令格式。

    (2)控制存储器的容量应为多少位?

答:(1)微指令的格式如下所示:

(2)控存容量为:

28×29=256 × 29

4、处理机逻辑框图中,有两条独立的总线和两个独立的存储器。已知指令存储器IM最大存储容量为16384字(字长18位),数据存储器DM最大存储容量为65536字(字长16位)。各寄存器均有“打入”和“送出”控制命令,但图中未标注出。写出下列各寄存器的位数:PC; IR;累加寄存器 AC0和AC1;通用寄存器R0—R3;IAR;IDR;DAR;DDR。

答:指令存储器: 16384×18=214×18

数据存储器: 65536×16=216×16

PC=14位     IR=18位     AC0=AC1=16位    R0—R3=16位

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

5、CPU数据通路为双总线结构,如图所示。图中:ALU:运算器,IR:指令寄存器,RA:ALU的输入寄存器,PC:程序计数器,R1~R4:程序员可用通用寄存器,MAR:存储器地址寄存器,MDR: 存储器数据寄存器。

(1) 画出修正错误后的连线图。

(2) 描述指令ADD addr,R1(功能是R1+(addr)àaddr)的执行过程。

答:(1)画图

(2)指令ADD addr,R1的执行过程

PCàMAR;  MàMDR;  MDRàIR;  IR(addr)àMAR;  MàMDR;  MDRàRA

R1àMDR; +; ADDàMDR; addràMAR; MDRàM

  

6、某计算机字长为16位,采用16位定长指令字格式,部分数据通路如下图所示,图中所有控制信号为1时表示有效、为0时表示无效。例如,控制信号MARinE为1时表示允许数据从DB打入MDR,MDRin为1表示允许数据从内总线打入MDR。假设MAR的输出一直处于使能状态。加法指令”ADD(R1),R0”的功能为(R0)+((R1))à(R1),即将R0中的数据与R1的内容所指主存单元的数据相加,并将结果送入R1的内容所指主存单元中保存。

表1给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号,请按表中描述方式,用表格形式列出指令执行各阶段每个节拍的功能和有效控制信号。

表1

时钟

功能

有效控制信号

C1

(PC)àMAR

PCout, MARin

C2

M(MAR)àMDR,

PC+1

MemR, MDRinE,

PC+1

C3

(MDR)àIR

MDRout, IRin

C4

指令译码

答:

时钟

功能

有效控制信号

C5

(R1)àMAR

R1out, MARin

C6

M(MAR)àMDR,

(R0)àA

MemR,MDRinE

R0out,Ain

C7

(MDR)+(A)àAC

MDRout,Add,ACin

C8

(AC)àMDR

ACout,MDRin

C9

M(MAR)à(MDR)

MDRoutE,MemW

或者

时钟

功能

有效控制信号

C5

(R1)àMAR

R1out, MARin

C6

M(MAR)àMDR,

MemR,MDRinE

C7

MDRàA

MDRout,  ACin

C8

(R0)+(A)àAC

R0out,Add,ACin

C9

(AC)àMDR

ACout,MDRin

C10

M(MAR)à(MDR)

MDRoutE,MemW

7、某机采用微程序控制器设计,已知每一条机器指令的执行过程均可分解成8条微指令组成的微程序,该机指令系统采用6位定长操作码格式,控制寄存器至少应能容纳多少条微指令?如何确定机器指令操作码与该指令微程序的起始地址的对应关系,请给出具体方案。

答:采用6位定长操作码可表示26=64条指令,控存至少应能容纳64×8=512条微指令。

微指令后继地址由微指令的SCF字段产生,若由SCF字段直接给出,SCF字段至少需9位,才能将全部512条微指令统一编码,这种方法所需控存容量较大,微指令地址码长。或者可采用顺序-转移方法产生后继微地址,需增加μPC寄存器,用于指明下一条微指令的微地址,通过改变μPC的值达到转移目的。或者采用断定方法产生后继微地址,需增加测试字段,以实现转移。

9、已知CPU结构如下图所示,其中包括一个累加器AC、一个状态寄存器和其他几个寄存器。各部分之间的连线表示数据通路,箭头表示信息传递方向。试完成以下工作:①写出图中四个寄存器A、B、C、D的名称和作用;②简述完成指令ADD Y的数据通路(Y为存储单元地址,本指令功能为(AC)+(Y)→AC)。 

答: A-数据缓冲寄存器DR、B-指令寄存器IR、C-主存地址寄存器AR、D-程序计数器PC。

完成指令ADD Y的数据通路为:PC→AR→MM→DR→IR→Y→AR(MAR)→MM→DR(MDR)→ALU→ADD(控制信号)→AC

10、已知某机采用微程序控制方式,其存储器容量为512×48(位),微程序在整个控制存储器中实现转移,可控制微程序的条件共4个,微指令采用水平型格式,后继微指令地址采用断定方式,如图所示:

(1)微指令中的三个字段分别应多少位?

(2)画出对应这种微指令格式的微程序控制器逻辑框图。

答:(1)假设判别测试字段中每一位为一个判别标志,那么由于有4个转移条件, 故该字段为4位,(如采用字段译码只需3位),下地址字段为9位,因为控制容量为512单元,微命令字段是( 48 – 4 - 9 )= 35 位。

图A

(2)对应上述微指令格式的微程序控制器逻辑框图A所示:其中微地址寄存器对应下地址字段,P字段即为判别测试字段,控制字段即为微命令子段,后两部分组成微指令寄存器。地址转移逻辑的输入是指令寄存器OP码,各状态条件以及判别测试字段所给的判别标志(某一位为1),其输出修改微地址寄存器的适当位数,从而实现微程序的分支转移。      

11、假设某机器有86条指令,平均每条指令由12条微指令组成,其中一条是取指微指令,是公用的,已知微指令字长48位,请问控制存储器的容量需多大?

答:共有微指令(12-1)×86+1=947条,即有947个控存单元,需要10位地址线进行译码,即实际的控存单元数应该是1024,所以

控存的容量为1024×48bit。

12、设某机配有A、B、C三台设备,其优先次序为A>B>C,各设备的中断服务程序的执行时间均为20us,现改中断处理次序为A>C>B,请写出各设备的

中断屏蔽字,并按下图所示时间轴给出的设备请求中断的时刻,画出CPU执行程序的轨迹。注:1——屏蔽,0——开放。

答:

13、假设某计算机的指令长度固定为16位,具有双操作数、单操作数和无操作数3类指令,每个操作数地址规定用6位表示。

  1. 若操作码字段不固定,现已设计出m条双操作数指令、n条无操作数指令,在此情况下,这台计算机最多可以设计出多少条单操作数指令?

(2)若操作码字段不固定,当双操作数指令取最大数时,且在此基础上,单操作数指令条数也取最大值,试计算这3类指令最多可拥有多少条指令?

答:(1)对双操作数指令,指令长度固定为16位,每个操作数地址规定用6位表示,操作码就剩下4位,有16个编码。已设计出m条双操作数指令,剩余(16-m)个编码可扩展为单操作数指令。由双操作数指令扩展操作码为单操作数指令时,扩展操作码位数是6位,每个编码可扩展26 = 64条单操作数指令。由单操作数指令扩展为无操作数指令时,每个编码也可以扩展64条,n条无操作数指令需要n/64个编码。

所以,单操作数指令条数 =  (16-m)*64- n/64 条。

  1. 对双操作数指令,指令长度固定为16位,每个操作数地址规定用6位表示,操作码就剩下4位,有16个编码,当双操作数指令取最大数时,也就是只留一个编码用于扩展,所以双操作数指令条数 = 16-1 = 15 条。

一个编码扩展6位操作码,有26 = 64个编码,单操作数指令条数也取最大值,所以单操作数 = 64-1 = 63 条。

同理,扩展为无操作数指令时,也是26=64个编码,此时不能再扩展了,全部编码都用于无操作数指令,所以无操作数指令条数 = 64 条

14、某计算机A有60条指令,指令的操作码字段固定为6位,从000000~111011,该计算机的后续机型B中需要增加32条指令,并与A保持兼容。试采用扩展操作码为计算机B设计指令操作码。

答:可以采用扩展操作码方式,已经使用了000000~111011,还剩下4个编码111100~111111 用于扩展指令。而后续机型B中需要增加32条指令,每个编码只需扩展8条指令,需要占用地址字段 3 位即可表示32条新指令。

15、假定在一个8位字长的计算机中运行如下C语言程序段。

unsigned int x=134;

unsigned int y=246;

int m=x;

int n=y;

unsigned int z1=x-y;

unsigned int z2=x+y;

int k1=m-n;

int k2=m+n;

若编译器编译时将8个8位寄存器R1~R8分别分配给变量x、y、m、n、z1、z2、k1和k2。请回答下列问题(提示:带符号整数用补码表示)。

  1. 执行上述程序段后,寄存器R1、R5和R6中的内容分别是什么?(用十六进制表示)
  2. 执行上述程序段后,变量m和k1的值分别是多少?(用十进制表示)
  3. 上述程序段涉及带符号整数加减、无符号整数加减运算,这4种运算能否利用同一个加法器及辅助电路实现?简述理由。

(4)计算机内部如何判断带符号整数加减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?

答:(1)(R1)=86H,(R5)=90H,(R6)=7CH

  1. m=-122,k1=-112。
  2. 能。带符号整数加减、无符号整数加减运算只有溢出判断方法不同,计算过程是一样的。
  3. 如果符号位进位Cf和最高数据位进位Cd不同,则结果溢出。最后一条语句执行时会发生溢出。

16、一位全加器(FA)的求和输出Si,进位输出Ci+1的逻辑表达式如下:

Si=Ai⊕Bi⊕Ci

Ci+1=AiBi+(Ai⊕Bi)Ci

①给定二输入与门、二输入或门、异或门三种器件,绘制一位全加器FA的逻辑单元电路图;②用FA(框图表示)设计出n位行波进位加减器(含溢出电路)。

答:(1)一位全加器FA的逻辑单元电路图(5分):

(2)用FA(框图表示)设计n位行波进位加减器(含溢出电路)(5分):

17、有实现x*y的两个C语言函数如下:
  unsigned umul( unsigned x, unsigned y)
         { return x*y;}
  int imul(int x,int y)
         { return x*y;}
假定某计算机M中ALU只能进行加减运算和逻辑运行,请回答:
(1)若M的指令系统中没有乘法指令,但有加法、减法和位移等指令,则M上也能实现上述两个函数中的乘法运算,为什么?
(2)若M上的指令系统中有乘法指令,则基于ALU、位移器、寄存器以及相应控制逻辑实现乘法指令时,控制逻辑的作用是什么?
(3)针对以下3种情况:(a)没有乘法指令;(b)有使用ALU和位移器实现的乘法指令;(c)有使用阵列乘法器实现的乘法指令,函数umul()在哪种情况下执行时间最长?哪种情况下执行时间最短?说明理由
(4)n为整数乘法指令可保存2n位乘积,当仅取n位作为乘积时,其结果可能会发生溢出。当n=32,x=231-1,y=2时,带符号整数乘法指令和无符号整数乘法指令得到的x*y的2n位乘积分别是什么(用十六进制表示)?此时函数umul()和imul()的返回结果是否溢出?对于无符号整数乘法运算,当仅取乘积的低n位作为乘法结果时,如何用2n位乘积进行溢出判断?

答:(1)乘法运算也可以通过加法操作和移位操作实现,x*y可视为y个x或x个y相加的结果

(2)实现相加和移位的控制

(3)最长是a;最短是c

     (a)情况下时间最长,需要利用其它指令来实现乘法功能

     (b)情况下使用了ALU与位移器,由多次相加及位移操作串行实现乘法操作

     (c)情况下使用阵列乘法器做并行乘法运算,时间显然最快

(4)带符号整数乘法指令:7FFF FFFFH*2 = 0000 0000 FFFF FFFEH

       无符号整数乘法指令:7FFF FFFFH*2 = 0000 0000 FFFF FFFEH

       umul()返回FFFF FFFEH,未溢出

       imul()返回FFFF FFFEH,有溢出,因为结果成了负数

       高n位全0则未产生溢出,否则产生溢出

18、设某运算器只由一个加法器和A、B两个D型边沿寄存器组成,A、B均可接加法器输出,A还可接收外部数据,如图所示,问:

  1. 外部数据如何才能传送到B?    

(2) 如何实现A+B-->A和A+B-->B?

  (3) 如何估算加法执行时间?

答:(1) 外部数据传送到B的操作:S选D,CPA,A-->∑,M,CPB

(2) 实现A+B-->A的操作:A-->∑,B-->∑,+,S选∑,CPA

    实现A+B-->B的操作:A-->∑,B-->∑,+,CPB

(3) 影响加法速度的关键因素是进位信号的传递问题,所以估算加法执行时间要看∑加法器采用何种进位方式,分析进位信号的产生时间。

19、设存储器容量为64M字,字长为64位,模块数m=8,分别用顺序和交叉方式进行组织。存储周期T=100ns,数据总线宽度为64位,总线传送周期t=50ns。求:顺序存储器和交叉存储器的带宽各是多少?

答:顺序存储器和交叉存储器连续读出m=8个字的数据信息量为 

q=8×64=512位

顺序存储器所需要的时间为 

t1=m×T=8×100ns=800ns=8×10-7s

故顺序存储器的带宽为 

W1=q/t1=512/(8×10-7)=65×107[bit/s]

交叉存储器所需要的时间为 

t2= T+ (m-1)×τ=100ns + (8 -1) ×50ns= 450ns =4.5×10-7s

故交叉存储器的带宽为 

W1=q/t1=512/(4.5×10-7)=114×107[bit/s]

20、用4个32K×8位SRAM存储芯片可设计出哪几种不同容量和字长的存储器?画出相应设计图并完成与CPU的连接。

答:可分别设计128K×8位、64K×16位、32K×32位的存储器。

128K×8位

64K×16位

32K×32位

21、设计算机指令长度为20位,具有双操作数、单操作数、无操作数3类指令形式,每个操作数地址规定用6位表示。若双操作数指令的操作码字段为8位,采用定长扩展操作码,现设计出m条双操作数指令,n条无操作数指令,在此条件下,计算机最多设计出多少条单操作数指令?

答:设最多设计出x条单操作数指令,则 [(256-m)*26-x]*26 = n

X = (256-m)*26 – n/26

22、设Cache存取周期为45ns、RAM存取周期为200nsCPU执行某一段程序过程中访问存储系统为1000次,其中访问主存为10次,问:

(1) Cache的命中率是多少?

(2) 访问内存的平均时间是多少?

(3) Cache-主存的效率是多少?

答:(1) Cache的命中率h = (1000-10)/1000 = 99%

(2) 访问内存的平均时间 Ta = h.tc+(1-h)tM = 99%*45+1%*200 = 46.55 ns

(3) Cache-主存的效率 = Tc/Ta = 45/46.55 = 96.7%

23、要求用128K×16位的SRAM芯片设计512K×16位的存储器,SRAM芯片有两个控制端:当 CS 有效时该片选中。当W/R=1时执行读操作,当W/R=0时执行写操作。用64K×16位的EPROM芯片组成128K×16位的只读存储器。 EPROM存储单元地址从0开始连续编址,SRAM存储单元地址接在其后连续编址。试问:

(1)数据寄存器多少位?

(2)地址寄存器多少位?

(3)共需多少片EPROM?

(4)画出此存储器组成框图。

(5)各芯片的存储地址范围分别是多少?

答:(1)存储器的总容量为:512K×16位(SRAM)+128K×16位(EPROM)=640K×16位。   数据寄存器16位。

(2)因为220=1024K>640K,所以地址寄存器20位。

(3)所需EPROM芯片数为(128K×2B)/(64K×2B)=2(片)

(4)设存储器地址空间分配如下:

128K     EPROM          512K    SRAM

24、用16K*8b 的存储芯片构建128K*32b的存储器,其中08000H~0BFFFH存储空间保留不用,画出CPU与存储器的逻辑连接图。

答:所需芯片数量:

(128K-16k )* 32/ (16K*8) = 7*4=28

数据位从8位到32位需要4个芯片进行位扩展,地址位从16K到128K需要7组芯片进行字扩展,共28个芯片,

地址由16K到128K,每组芯片的地址空间:

08000H-->~0BFFFH的容量:  0 1000 0000 0000 0000

                           0 1011 1111 1111 1111

A14-16是片选线,该地址范围的片选值是010,即3-8译码器的010输出线不要连接存储器。

连接图如下。

25、一台模型机共有7条指令,主频25MHz,各指令的使用频率与CPI如下。该模型机有8位和16位两种指令字长,采用2-4扩展操作码。8位字长指令为寄存器(R-R)二地址类型,16位字长指令为寄存器-存储器(R-M)二地址变址寻址类型(-128<=变址范围<=127)。
指令(字长) 使用频度f    CPI
I1(8位)      35%         1
I2(8位)      25%         2
I3(8位)      20%         2
I4(16位)     10%         2
I5(16位)      5%         1
I6(16位)      3%         2
I7(16位)      2%         2
求:(1) 计算该机的MIPS速率。(2) 计算操作码的平均码长。(3) 该机允许使用多少个可编址的通用寄存器,多少变址寄存器?(4) 设计该机的两种指令格式,标出各字段位数并给出操作编码。

答:(1)根据题意,平均CPI为

35%*1+(25%+20%+10%)*2+5%*1+3%*2+2%*2 = 1.6 (C/I)

f = 25MHz = 25M C/S

MIPS = f / CPI = (25M C/S) / (1.6 C/I) = 15.625 MIPS

  1. 操作码的平均码长  (35%+25%+20%)*2+(10%+5%+3%+2%)* 4 = 2.4

(3)该机允许使用8个可编址的通用寄存器,2个变址寄存器。

(4)两种指令格式分别是:

OP(2)   R1(3)  R2(3)

OP(4)   R1(3)  A2(1)  M(8)

  

操作编码分别是

I1 00    I2  01   I3  10   I4  1100  I5  1101   I6  1110   I7  1111    

26、浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和溢出判断等步骤。设浮点数的阶码和尾数均采用补码表示,且尾数分别为5位和7位(均含2位符号位)。若有两个数X=27*29/32,Y=25*5/8,请用浮点加法计算X+Y。

答:为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为:

       [ X ]浮 = 00 111 , 00.11101

       [ Y ]浮 = 00 101 , 00.10100

  1. 求阶差并对阶:

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

即ΔE为 +2,x的阶码大,应使My 右移2位,Ey加2,

   [ Y ]浮 = 00 111 , 00.00101 (00 舍去)

  1. 尾数和

00. 1 1 1 0 1  

00. 0 0 1 0 1

01. 0 0 0 1 0

  1. 规格化处理

尾数运算结果的2位符号位不同,应执行右规处理,结果为00.10001,阶码要+1,为01 000 。

  1. 舍入处理

采用0舍1入法处理,仍为00.10001

  1. 判溢出

阶码符号位为01 ,溢出,故得最终结果是溢出。

27、已知x = -0.01111,y = +0.11001 求 [1/2 x]补,[1/4 x]补,[-x]补,[y]补,[1/2 y]补,[1/4 y]补,[-y]补,[x+y]补, [x-y]补,并判断是否溢出。

答: [X]补=1.10001  [1/2 x]补= 1.110001   [1/4 x]补=1.1110001  [-X] 补=0.01111    [Y] 补=0.11001   [1/2 y]补=0.011001  [1/4 y]补=0.0011001   

[-Y] 补=1.00111

        [X+Y]补=[X]补+[Y]补      [X-Y]补=[X]补+[-Y]补     即

       11.  10001                         11.  10001

  +    00.  11001                     +   11.  00111

       00.  01010                         10.  11000

X+Y=+0.01010   结果正确             X-Y 结果发生溢出

28、用下列芯片构成存储系统,各需多少RAM芯片?需要多少位地址作为片选地址译码?设系统为20位地址线,采用全译码方式。

(1)512×8位RAM构成16KB的存储系统;

(2)2K×4位RAM构成64KB的存储系统。

答:可应用公式: 芯片数 = 存储器系统的存储容量/芯片容量

(1)芯片数 = 16K×8位/(0.5K×8位)= 32,需要5位地址作为片选地址译码。

(2)芯片数 = 64K×8位/(2K×4位)= 64,需要5位地址作为片选地址译码。

29、用16K×16位的SRAM芯片构成64K×32位的存储器。要求画出CPU与各存储器芯片的连接图。

答:所需芯片总数(64K×32)÷(16K×16)= 8片

需要进行字位扩展,数据从16位扩展到32位,需要2片芯片为一组,地址从16K到64K,需要4组,共8片芯片,通过A15、A14进行2:4译码.

30、某计算机的主存地址空间大小为256MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下:

程序A:

int a[256][256];

......

int sum_array1()  {

  int i,j,sum=0;

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

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

     sum+=a[i][j];

  return sum;   }

程序B:

int a[256][256];

......

int sum_array1()  {

  int i,j,sum=0;

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

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

     sum+=a[i][j];

  return sum;   }

假设int用32位补码表示,程序编译时i、j、sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制)。请回答下列问题,并说明理由

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

注:每个Cache行的格式如下:

有效位  脏位  替换控制位  标记   有效数据

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

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

答:(1)此处不考虑一致性维护和替换算法,每个Cache行就只有1位有效位、19位标记和64B数据,19位标记的理由是:内存地址空间256MB(228)需28位地址,块内地址6位26=64B),Cache块号3位(23=8),故Tag位数为28-6-3=19。

数据Cache共8行,因此数据Cache的总容量为8*(64+20/8)=532B

  1. 主存和Cache的地址格式如下:

数组按行优先方式存放,首地址320,数组元素占4字节。A[0][31]的地址为320+31*4=444=1 1011 1100B,其对应的Cache行号为110B=6;a[1][1]的地址为320+256*4+1*4=1348=101 0100 0100B,其对应的Cache行号为101B=5.

(3)数组a的大小为256*256*4B=218B,占用218/64=212个主存块,按行优先存放,程序A逐行访问数组a,共需访问的次数为216次,未命中次数为212次(即每个字块的第一个数未命中),因此程序A的命中率为( 216 - 212 )/ 216 *100%=93.75%.

另解:数组a按行存放,程序A按行存取,每个字块中存放16个int型数据,除访问的第一个不命中,随后的15个全都命中,访问全部字块都符合这一规律,且数组大小为字块大小的整数倍,故程序A的命中率为15/16=93.75%

程序B逐列访问数组a,Cache总容量为64B*8=512B,数组a一行的大小为1KB,正好是Cache容量的2倍,可知不同行的同一列数组元素使用的是同一个Cache单元,故逐列访问每个数据时,都会将之前的字块替换出去,即每次访问都不命中,命中率为0.

由于从Cache读数据比从主存读数据快得多,所以程序A的执行速度比程序B快得多。或者说程序A的空间局部性好得多。

31、设某计算机采用直接地址映像Cache,已知主存容量为4MB,Cache容量为4096B,字块长度为8个字(32位/字)。

(1)给出Cache和主存的地址格式;

(2)若CPU依次从主存单元0,1,……,99和4096,4097,…,4195交替取指令,循环执行10次,命中率为多少?说明理由。

答:(1) Cache容量为4096B,4096B=4KB=212B,所以Cache的地址为12位;块的大小为8×4=32字节,所以块内地址为5位,块地址为7位。Cache地址格式为

   11    5 4     0

块地址 块内地址

主存容量为4MB,4MB=222B,所以主存地址为22位;块大小为32字节,所以块内地址为5位,块地址为7位,块标记为10位。主存地址格式为:

21   12 11        5 4       0

块标记   块地址 块内地址

(2) 命中率计算:

主存与Cache之间以字块为单位进行交换,一次从主存读出一个字块到Cache,主存单元从0到7和从4096到4103是被映像到同一块上的(即第0块)。同理,8到15和4104到4111也是被映像到同一块上的,依此类推,即循环次数对命中率没有影响。所以命中率的情况是:每次取主存单元一块的第一个单元都不命中,但当字块调入Cache后,其他7个单元能命中,而96-99单元中只有3个是命中的,所以命中率是 (100-13)/100=87%。

32、设CPU执行一段程序时,访问Cache次数Nc=2000,访问主存次数Nm=100,又假设访问Cache存取周期为50ns,访问主存存取周期为250ns,试求命中率h、平均访问时间ta以及倍率r。

答:①求命中率h

 

         

33、选用1M×4位DRAM芯片构成32位机(设存储器数据总线为32位)的存储器,存储容量为16MB,试问:

   (1)共计需要多少片?

   (2)共计需要分几组?每组多少片?

答:(1) 16MB/(1M×4位)=32片

(2) 分为4组,每组8片

34、假设存储器按字节编址,四种CPU主存地址分别为16位、20位、24位以及32位,试问每种CPU可寻址内存多少字节?

答: 64KB,1MB,16MB,4GB。

  1. 已知Intel 6264 RAM芯片的存储容量为8KB,要求选用5片6264 RAM芯片接在系统中,地址范围从F0000H开始,选用74LS138三一八译码器及逻辑门电路,通过全译码方式译码产生片选,试设计出译码电路,并计算每个片选的地址范围。

答:

^^   

36、设机器字长32位,定点表示,尾数31位,数符1位,问:
(1)定点原码整数表示时,最大正数是多少?最小负数是多少?

(2)定点原码小数表示时,最大正数是多少?最小负数是多少?

答:

37、设计算机A有60条指令,指令操作码为6位固定长度编码,从000000到111011。其后继产品B需要增加32条指令,并与A保持兼容。

(1)试采用操作码扩展技术为计算机B设计指令操作码。

(2)计算操作码的平均长度。

答: (1)在原先6位中操作码中还剩下4条指令:111100、111101、111110、111111,远远不够。所以要增加32条指令就必须增加3位扩展码。为了保持兼容,增加的操作码就从111100000到111111111。

(2)操作码的平均长度=长度*概率,所以这道题目的平均长度=(60*6+32*9)/(60+32) =7.043

38、已知X=2010×0.11011011,Y=2100×(-0.10101100),求X+Y。

答:为了便于直观理解,假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为:

       [ X ]浮 = 00010 , 0.11011011

       [ Y ]浮 = 00100 , 1.01010000

(1)求阶差并对阶:

ΔE = Ex – Ey = [ Ex]补 + [ - Ey]补 = 00010 + 11100 = 11110

即ΔE为 –2,x的阶码小,应使Mx 右移2位,Ex加2,

   [ X ]浮 = 00010 , 0.11011011 (11)

其中(11)表示Mx 右移2位后移出的最低两位数。

(2)尾数和

  1. 0 0 1 1 0 1 1 0  (11)
  2. 0 1 0 1 0 1 0 0
  3. 1 0 0 0 1 0 1 0  (11)

(3)规格化处理

尾数运算结果的符号位与最高数值位为同值,应执行左规处理,结果为1.00010101 (10),阶码为00 011 。

(4)舍入处理

采用0舍1入法处理,则有

  1. 0 0 0 1 0 1 0 1

                            +                1

  1. 0 0 0 1 0 1 1 0

(5)判溢出

阶码符号位为00 ,不溢出,故得最终结果为

 x + y = 2011× (-0.11101010)

39、假设机器字长16位,主存容量为128K字节,指令字长度为16位或32位,共有128条指令,设计计算机指令格式,要求有直接、立即数、相对、基值、间接、变址六种寻址方式。

答:由已知条件,机器字长16位,主存容量128KB / 16b= 64K字,因此MAR = 16位,共128条指令,故OP字段占7位。采用单字长和双字长两种指令格式,其中单字长指令用于算术逻辑和I / O类指令,双字长用于访问主存的指令。

       寻址方式由寻址模式X定义如下:

X = 000   直接寻址   E = D(64K)

      X = 001   立即数     D = 操作数

      X = 010   相对寻址   E = PC + D  PC = 16位

      X = 011   基值寻址   E = Rb + D ,Rb =16 位

      X = 100   间接寻址   E = (D)

X = 101   变址寻址   E = RX + D ,RX = 16位

40、设CPU有16根地址线,8根数据线,用MREQ作访存控制信号,用W/R作读/写控制信号。自选各类芯片,画出CPU与存储芯片的连接图。

要求:(1)最小8K地址为系统程序区,与其相邻的16K地址为用户程序区,最大4K地址空间为系统程序工作区。

(2)写出每片存储芯片的类型和地址范围(用十六进制表示)。

(3)用138译码器或其他门电路画出存储芯片的片选逻辑。

答:(1)写地址范围

(2)根据地址范围的容量及其在计算机系统中的作用,确定最小8K系统程序区选一片8K ×8位ROM;与其相邻的16K用户程序区选2片8K ×8位RAM;最大4K系统程序区选1片4K ×8位RAM。

(3)分配CPU地址线

(4)形成片选信号

  • 21
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值