浮点存储:1.若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。解:将16进制数展开后,可得二制数格式为01000001001101100000000000000000S阶码(8位)尾数(23位)指数e=阶码-127=10000010-01111111=00000011=(3)10包括隐藏位1的尾数1.M=1.01101100000000000000000=1.011011于是有x=(-1)S×1.M×2e=+(1.011011)×23=+1011.011=(11.375)102.将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。解:首先分别将整数和分数部分转换成二进制数:20.59375=10100.10011然后移动小数点,使其在第1,2位之间10100.10011=1.010010011×24e=4于是得到:S=0,E=4+127=131,M=010010011最后得到32位浮点数的二进制存储格式为:01000001101001001100000000000000=(41A4C000)163.假设由S,E,M三个域组成的一个32位二进制字所表示的非零规格化浮点数x,真值表示为(非IEEE754标准):x=(-1)s×(1.M)×2E-128问:它所表示的规格化的最大正数、最小正数、最大负数、最小负数是多少?(1)最大正数01111111111111111111111111111111x=[1+(1-2-23)]×2127(2)最小正数00000000000000000000000000000000x=1.0×2-128(3)最小负数11111111111111111111111111111111x=-[1+(1-2-23)]×2127(4)最大负数10000000000000000000000000000000x=-1.0×2-1284.用源码阵列乘法器、补码阵列乘法器分别计算xXy。(1)x=11000y=11111(2)x=-01011y=11001(1)原码阵列x=0.11011,y=-0.11111符号位:x0⊕y0=0⊕1=1[x]原=11011,[y]原=11111[x*y]原=1,1101000101带求补器的补码阵列[x]补=011011,[y]补=100001乘积符号位单独运算0⊕1=1尾数部分算前求补输出│X│=11011,│y│=11111X×Y=-0.1101000101(2)原码阵列x=-0.11111,y=-0.11011符号位:x0⊕y0=1⊕1=0[x]补=11111,[y]补=11011[x*y]补=0,11010,0010111011*111111101111011110111101111011110100010111111*110111111111111000001111111111110100010111011*1111111011110111101111011110111101000101带求补器的补码阵列[x]补=100001,[y]补=100101乘积符号位单独运算1⊕1=0尾数部分算前求补输出│X│=11111,│y│=11011X×Y=0.11010001015.计算浮点数x+y、x-yx=2-101*(-0.010110),y=2-100*0.010110[x]浮=11011,-0.010110[y]浮=11100,0.010110Ex-Ey=11011+00100=11111[x]浮=11100,1.110101(0)规格化处理:0.101100阶码11010x+y=0.101100*2-6规格化处理:1.011111阶码11100x-y=-0.100001*2-46.设过程段Si所需的时间为τi,缓冲寄存器的延时为τl,线性流水线的时钟周期定义为τ=max{τi}+τl=τm+τl流水线处理的频率为f=1/τ。一个具有k级过程段的流水线处理n个任务需要的时钟周期数为Tk=k+(n-1),所需要的时间为:T=Tk×τ11111*1101111111111110000011111111111101000101x+y11.110101+00.01011000.001011x-y11.110101+11.10101011.011111而同时,顺序完成的时间为:T=n×k×τk级线性流水线的加速比:*Ck=TL=n·kTkk+(n-1)内部存储器*闪存:高性能、低功耗、高可靠性以及移动性编程操作:实际上是写操作。所有存储元的原始状态均处“1”状态,这是因为擦除操作时控制栅不加正电压。编程操作的目的是为存储元的浮空栅补充电子,从而使存储元改写成“0”状态。如果某存储元仍保持“1”状态,则控制栅就不加正电压。如图(a)表示编程操作时存储元写0、写1的情况。实际上编程时只写0,不写1,因为存储元擦除后原始状态全为1。要写0,就是要在控制栅C上加正电压。一旦存储元被编程,存储的数据可保持100年之久而无需外电源。读取操作:控制栅加上正电压。浮空栅上的负电荷量将决定是否可以开启MOS晶体管。如果存储元原存1,可认为浮空栅不带负电,控制栅上的正电压足以开启晶体管。如果存储元原存0,可认为浮空栅带负电,控制栅上的正电压不足以克服浮动栅上的负电量,晶体管不能开启导通。当MOS晶体管开启导通时,电源VD提供从漏极D到源极S的电流。读出电路检测到有电流,表示存储元中存1,若读出电路检测到无电流,表示存储元中存0,如图(b)所示。擦除操作:所有的存储元中浮空栅上的负电荷要全部洩放出去。为此晶体管源极S加上正电压,这与编程操作正好相反,见图(c)所示。源极S上的正电压吸收浮空栅中的电子,从而使全部存储元变成1状态。*cache:设存储器容量为32字,字长64位,模块数m=4,分别用顺序方式和交叉方式进行组织。存储周期T=200ns,数据总线宽度为64位,总线传送周期=50ns。若连续读出4个字,问顺序存储器和交叉存储器的带宽各是多少?解:顺序存储器和交叉存储器连续读出m=4个字的信息总量都是:q=64b×4=256b顺序存储器和交叉存储器连续读出4个字所需的时间分别是:t2=mT=4×200ns=800ns=8×10-7st1=T+(m-1)=200ns+350ns=350ns=35×10-7s顺序存储器和交叉存储器的带宽分别是:W2=q/t2=256b÷(8×10-7)s=320Mb/sW1=q/t1=256b÷(35×10-7)s=730Mb/s*CPU执行一段程序时,cache完成存取的次数为1900次,主存完成存取的次数为100次,已知cache存取周期为50ns,主存存取周期为250ns,求cache/主存系统的效率和平均访问时间。解:h=Nc/(Nc+Nm)=1900/(1900+100)=0.95r=tm/tc=250ns/50ns=5e=1/(r+(1-r)h)=1/(5+(1-5)×0.95=83.3%ta=tc/e=50ns/0.833=60ns*存储器:已知某64位机主存采用半导体存储器,其地址码为26位,若使用256K×16位的DRAM芯片组成该机所允许的最大主存空间,并选用模块板结构形式,问:(1)每个模块板为1024K×64位,共需几个模块板?(2)个模块板内共有多少DRAM芯片?(3)主存共需多少DRAM芯片?CPU如何选择各模块板?(1)个模块64264*264*262026(2)1616*2*264*281020每个模块要16个DRAM芯片(3)64*16=1024块由高位地址选模块*用16K×8位的DRAM芯片组成64K×32位存储器,要求:(1)画出该存储器的组成逻辑框图。(2)设存储器读/写周期为0.5μS,CPU在1μS内至少要访问一次。试问采用哪种刷新方式比较合理?两次刷新的最大时间间隔是多少?对全部存储单元刷新一遍所需的实际刷新时间是多少?解:(1)根据题意,存储总容量为64KB,故地址总线需16位。现使用16K*8位DRAM芯片,共需16片。芯片本身地址线占14位,所以采用位并联与地址串联相结合的方法来组成整个存储器,其组成逻辑图如图所示,其中使用一片2:4译码器。(2)根据已知条件,CPU在1us内至少访存一次,而整个存储器的平均读/写周期为0.5us,如果采用集中刷新,有64us的死时间,肯定不行如果采用分散刷新,则每1us只能访存一次,也不行所以采用异步式刷新方式。假定16K*1位的DRAM芯片用128*128矩阵存储元构成,刷新时只对128行进行异步方式刷新,则刷新间隔为2ms/128=15.6us,可取刷新信号周期15us。刷新一遍所用时间=15us×128=1.92ms指令系统*某计算机字长16位,主存容量为64K字,采用单字长单地址指令,共有40条指令,试采用直接、立即、变址、相对四种寻址方式设计指令格式。解:40条指令需占用操作码字段(OP)6位,这样指令余下长度为10位。为了覆盖主存640K字的地址空间,设寻址模式(X)2位,形式地址(D)8位,其指令格式如下:寻址模式定义如下:X=00直接寻址有效地址E=D(直接寻址为256个存储单元)X=01立即寻址D字段为操作数X=10变址寻址有效地址E=(RX)+D(可寻址64K个存储单元)X=11相对寻址有效地址E=(PC)+D(可寻址64K个存储单元)其中RX为变址寄存器(16位),PC为程序计数器(16位),在变址和相对寻址时,位移量D可正可负。四、CPU*微指令:直接表示法特点:这种方法结构简单,并行性强,操作速度快,但是微指令字太长,若微命令的总数为N个,则微指令字的操作控制字段就要有N位。另外,在N个微命令中,有许多是互斥的,不允许并行操作,将它们安排在一条微指令中是毫无意义的,只会使信息的利用率下降。*编码表示法特点:可以避免互斥,使指令字大大缩短,但增加了译码电路,使微程序的执行速度减慢*编码注意几点:字段编码法中操作控制字段并非是任意的,必须要遵循如下的原则:①把互斥性的微命令分在同一段内,兼容性的微命令分在不同段内。这样不仅有助于提高信息的利用率,缩短微指令字长,而且有助于充分利用硬件所具有的并行性,加快执行的速度。②应与数据通路结构相适应。③每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。④一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此当某字段的长度为三位时,最多只能表示七个互斥的微命令,通常用000表示不操作。*水平型微指令和垂直型微指令的比较(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。(3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。*微地址寄存器有6位(μA5-μA0),当需要修改其内容时,可通过某一位触发器的强置端S将其置“1”。现有三种情况:(1)执行“取指”微指令后,微程序按IR的OP字段(IR3-IR0)进行16路分支;(2)执行条件转移指令微程序时,按进位标志C的状态进行2路分支;(3)执行控制台指令微程序时,按IR4,IR5的状态进行4路分支。请按多路转移方法设计微地址转移逻辑。答:按所给设计条件,微程序有三种判别测试,分别为P1,P2,P3。由于修改μA5-μA0内容具有很大灵活性,现分配如下:(1)用P1和IR3-IR0修改μA3-μA0;(2)用P2和C修改μA0;(3)用P3和IR5,IR4修改μA5,μA4。另外还要考虑时间因素T4(假设CPU周期最后一个节拍脉冲),故转移逻辑表达式如下:μA5=P3·IR5·T4μA4=P3·IR4·T4μA3=P1·IR3·T4μA2=P1·IR2·T4μA1=P1·IR1·T4μA0=P1·IR0·T4+P2·C·T4由于从触发器强置端修改,故前5个表达式可用“与非”门实现