• 2.10 MB
  • 2022-04-22 11:18:38 发布

计算机组成原理(任国林)课后习题答案.pdf

  • 54页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'一、《计算机组成原理》习题解答第1章1.解释概念或术语:实际机器、虚拟机器,机器指令、机器指令格式,主机、CPU、主存、I/O、PC、IR、ALU、CU、AC、MAR、MDR,机器字长、存储字长、指令字长、CPI、TC、主频、响应时间、吞吐量、MIPS、MFLOPS。答:略2.如何理解计算机系统的层次结构?说明高级语言、汇编语言及机器语言的差别与联系。答:⑴计算机系统是由软件和硬件结合而成的整体。为了提高计算机系统的好用性,程序设计语言的描述问题能力越来越强,各种程序设计语言大体上是一种层次结构,即高等级编程语言指令包含低等级编程语言指令的全部功能。对于使用不同层次编程语言的程序员来说,他们所看到的同一计算机系统的属性是不同的,这些属性反映了同一计算机系统的不同层次的特征,即同一计算机系统可划分成多个层次结构,不同层次的结构反映的计算机系统的特征不同而已。⑵机器语言是能够被计算机硬件直接识别和执行的程序设计语言,机器语言是一种面向硬件的、数字式程序设计语言;汇编语言和高级语言均用符号表示机器语言指令,指令很容易阅读和编写、但不能被硬件直接识别和执行,它们均是一种面向软件的、符号式程序设计语言;相对于汇编语言而言,高级语言描述问题的能力更强;高级语言和汇编语言程序必须翻译成机器语言程序后,才能在计算机硬件上执行。3.计算机系统结构、计算机组成的定义各是什么?两者之间有何关系?答:计算机系统结构是指机器语言程序员或编译程序编写者所看到的计算机系统的属性,包括概念性结构和功能特性两个方面。主要研究计算机系统软硬件交界面的定义及其上下的功能分配。计算机组成是指计算机硬件设计人员所看到的计算机系统的属性。主要研究如何合理地逻辑实现硬件的功能。计算机组成是计算机系统结构的逻辑实现。4.冯·诺依曼模型的存储程序原理包含哪些内容、对计算机硬件和软件有哪些要求?冯·诺依曼模型计算机的特点有哪些?答:存储程序原理是指程序和数据预先存放在存储器中,机器工作时自动按程序的逻辑顺序从存储器中逐条取出指令并执行。存储程序原理要求存储器是由定长单元组成的、按地址访问的、一维线性空间结构的存储部件;要求软件指令支持用地址码表示操作数在存储器中的地址,指令长度为存储单元长度的倍数,编程语言中必须有转移型指令,以实现程序存储顺序到程序逻辑顺序的转变。冯·诺依曼模型计算机的特点可归纳为如下几点:⑴计算机由运算器、控制器、存储器、输入设备和输出设备组成;⑵存储器是由定长单元组成的、按地址访问的、一维线性空间结构;⑶程序由指令组成,指令和数据以等同地位存放在存储器中;⑷机器工作时自动按程序的逻辑顺序从存储器中逐条取出指令并执行;⑸指令由操作码和地址码组成,操作码用于表示操作的性质,地址码用于表示操作数在1 存储器中的地址;⑹指令和数据均采用二进制方式表示,运算亦采用二进制方式;⑺机器以运算器为中心,输入/输出设备与存储器间的数据传送都经过运算器。5.现代计算机均采用冯·诺依曼模型、但进行了改进,画出现代计算机硬件组成及结构图,并说明各部件的作用。答:现代计算机结构大多在冯·诺依曼模型基础上进行了改进,以进一步提高系统的性能。改进主要包括以存储器为中心、多种存储器共存、采用总线互连三个方面。基本的硬件组成及结构图如下:CPU主存系统总线I/O接口I/O接口磁盘接口……I/O设备I/O设备磁盘CPU由运算器和控制器组成,运算器负责实现数据加工,实现算术逻辑运算;控制器负责指挥和控制各部件协调地工作,实现程序执行过程。存储器由主存和辅存(如磁盘)组成,负责实现信息存储。主存由小容量、快速元器件组成,存放近期常用程序和数据;辅存由大容量、低价格元器件组成,存放所有的程序和数据;主存可被CPU直接访问,这样在提高访存速度的同时,可降低存储器总成本。I/O设备负责实现信息的输入和输出,以及信息的格式变换。通过总线实现部件互连的好处是可以实现CPU的操作标准化,而操作标准化的具体实现部件是I/O接口,它负责缓冲和中转相关操作。6.若某计算机的机器指令格式如表1.2所示,请写出求s=a+b+c的机器语言程序,其中a、b、c存放在起始地址为0000100000的连续3个主存单元中,而s则要求存放到地址为0000001000的主存单元中。解:假设程序第一条指令存放在第1000000000号存储单元中,则程序清单如下:主存单元地址指令(二进制)注释(二进制)操作码地址码……0000001000s结果数据s……0000100000a原始数据a0000100001b原始数据b0000100010c原始数据c……10000000000000010000100000取数a到累加器AC中10000000010000110000100001(AC)+b,结果存于AC中10000000100000110000100010(AC)+c,结果存于AC中10000000110000100000001000将AC中内容存到s所在主存单元中1000000100000100**********停机,地址码空闲(值可任意)7.画出基于累加器CPU的主机框图,说明题6的机器语言程序的执行过程(尽可能详细)。简述执行过程与冯·诺依曼模型的存储程序原理的关系。2 答:基于累加器CPU的的主机框图如下:运算器控制器…主存储器控制信号I/OALU时序形成部件地部件址……设存储备译AC+“1”ID码阵列器PCIR…MARMDRI/O电路CPUI/O接口AddrDataCmd系统总线假设s=a+b+c程序已被调入主存、首指令地址已写入到PC中,即(PC)=1000000000。程序运行启动后,计算机硬件自动地、逐条地、按(PC)为指令地址实现取指令、分析指令、执行指令的对应操作,直到执行到停机指令为止。假设IR中操作码记为OP(IR)、地址码记为AD(IR),则s=a+b+c程序执行过程的具体操作如下:(1)PC→MAR、MAR→ABus、Read→CBus;MAR=PC=1000000000,取指令开始(2)WMFC,(PC)+1→PC;PC=1000000001(下条指令地址)(3)MDR→IR;IR=0000010000100000,取指令完成ID对OP(IR)译码;CU得知当前为取数指令(4)AD(IR)→MAR、MAR→ABus、Read→Cbus;MAR=0000100000,执行指令开始(5)WMFC(6)MDR→AC;AC=MDR=a,执行指令完成(7)PC→MAR、MAR→ABus、Read→CBus;MAR=PC=1000000001,取指令开始(8)WMFC,(PC)+1→PC;PC=1000000010(下条指令地址)(9)MDR→IR;IR=0000110000100001,取指令完成ID对OP(IR)译码;CU得知当前为加法指令(10)AD(IR)→MAR、MAR→ABus、Read→CBus;MAR=0000100001,执行指令开始(11)WMFC(12)(MDR)+(AC)→AC;AC=a+b,执行指令完成(13)PC→MAR、MAR→ABus、Read→CBus;MAR=PC=1000000010,取指令开始(14)WMFC,(PC)+1→PC;PC=1000000011(下条指令地址)(15)MDR→IR;IR=0000110000100010,取指令完成ID对OP(IR)译码;CU得知当前为加法指令(16)AD(IR)→MAR、MAR→ABus、Read→CBus;MAR=0000100010,执行指令开始(17)WMFC(18)(MDR)+(AC)→AC;AC=a+b+c,执行指令完成(19)PC→MAR、MAR→ABus、Read→CBus;MAR=PC=1000000011,取指令开始(20)WMFC,(PC)+1→PC;PC=1000000100(下条指令地址)(21)MDR→IR;IR=0000100000001000,取指令完成ID对OP(IR)译码;CU得知当前为存数指令(22)AD(IR)→MAR、MAR→ABus、Write→Cbus;MAR=0000100000,执行指令开始(23)AC→MDR、MDR→DBus、WMFC;MDR=AC=a+b+c,执行指令完成(24)PC→MAR、MAR→ABus、Read→Cbus;MAR=PC=1000000100,取指令开始(25)WMFC,(PC)+1→PC;PC=1000000101(下条指令地址)(26)MDR→IR;IR=000100**********,取指令完成ID对OP(IR)译码;CU得知当前为停机指令(27)机器自动停机;执行停机指令完成从程序执行过程可以看出:由于指令存放在存储器中,故指令执行过程分为取指令(含3 分析指令)、执行指令两个阶段;由于存储器同时只接收一个访问操作,故程序执行过程是循环的指令执行过程,循环变量为PC中的指令地址;只要按照程序逻辑顺序改变(PC),可以实现按程序逻辑顺序执行程序的目标。8.指令和数据均存放在存储器中,计算机如何区分它们?答:由于存储器访问只使用地址和命令(Read/Write)信号,而指令和数据均以二进制编码形成存放在存储器中,因此,从存储器取得的信息本身是无法区分是指令还是数据的。计算机只能通过信息的用途来区分,即取指令时取得的是指令,指令执行时取操作数或写结果对应的信息是数据。即计算机通过程序执行过程或指令执行过程的不同阶段来区分。9.在某CPU主频为400MHz的计算机上执行程序A,程序A中指令类型、执行数量及平均时钟周期数如下表所示。指令类型指令执行数量平均时钟周期数(/指令)整数450001数据传送750002浮点数80004条件转移15002求该计算机执行程序A时的程序执行时间、平均CPI及MIPS。解:CPU时钟周期TC=1/f=1/(400×106)=2.5ns程序执行时间TCPU=[45000×1+75000×2+8000×4+1500×2]×2.5=0.575ms。平均CPI=(45000×1+75000×2+8000×4+1500×2)÷(45000+75000+8000+1500)=1.776(时钟周期/指令)MIPS=(45000+75000+8000+1500)/(0.575×10-3×106)=225.2百万条/秒10.冯·诺依曼模型计算机的性能瓶颈有哪些?简述缓解性能瓶颈严重性的方法。答:冯·诺依曼模型计算机的性能瓶颈有CPU-MEM瓶颈、指令串行执行瓶颈两个。对缓解CPU-MEM瓶颈而言,主要目标是减少MEM访问延迟、提高MEM传输带宽,常用的方法有采用多种存储器构成层次结构存储系统、采用多级总线互连、采用并行结构存储器等。对缓解指令串行执行瓶颈而言,主要目标是尽可能实现并行处理,常用的方法有采用流水线技术、数据流技术、超标量技术、超线程技术、多核技术等。4 第2章1.解释概念或术语:进制、机器数、原码、补码、移码、变形补码、BCD码、交换码、内码、奇校验、CRC、上溢、下溢、左规、对阶、溢出标志、进位标志、部分积、Booth算法、交替加减法除法、警戒位、全加器、并行加法器、行波进位、先行进位。答:略2.完成下列不同进制数之间的转换(1)(347.625)10=()2=()8=()16(2)(9C.E)16=()2=()8=()10(3)(11010011)2=()10=()8421BCD解:(1)(347.625)10=(101011011.101)2=(533.5)8=(15B.A)16(2)(9C.E)16=(10011100.1110)2=(234.7)8=(156.875)10(3)(11010011)2=(211)10=(001000010001)8421BCD3.对下列十进制数,分别写出机器数长度为8位(含1位符号位)时的原码及补码。(1)+23/128(2)-35/64(3)43(4)-72(5)+7/32(6)-9/16(7)+91(8)-33解:(1)[+23/128]原=0.0010111,[+23/128]补=0.0010111;(2)[-35/64]原=1.1000110,[-35/64]补=1.0111010;(3)[43]原=00101011,[43]补=00101011;(4)[-72]原=11001000,[-72]补=10111000;(5)[+7/32]原=0.0011100,[+7/32]补=0.0011100;(6)[-9/16]原=1.1001000,[-9/16]补=1.0111000;(7)[+91]原=01011011,[+91]补=01011011;(8)[-33]原=10100001,[-33]补=11011111。4.对下列机器数(含1位符号位),若为原码时求补码及真值,若为补码或反码时求原码及真值。(1)[X]原=100011(2)[X]补=0.00011(3)[X]反=1.01010(4)[X]原=1.10011(5)[X]补=101001(6)[X]反=101011解:(1)[X]补=111101,X=-00011=-3;(2)[X]原=0.00011,X=+0.00011=+3/32;(3)[X]原=1.10101,X=-0.10101=-21/32;(4)[X]补=1.01101,X=-0.10011=-19/32;(5)[X]原=110111,X=-10111=-23/32;(6)[X]原=110100,X=-10100=-20/32。5.(1)若[X]补=1.01001,求[-X]补及X;(2)若[-X]补=101001,求[X]补及X。解:(1)[-X]补=0.10111,X=-0.10111=-23/32;(2)[X]补=010111,X=+10111=+23。6.(1)若X=+23及-42,分别求8位长度的[X]移;5 (2)若[X]移=1100101及0011101,分别求X。解:(1)[+23]移=10010111,[-42]移=01010110;(2)[X]移=1100101时的X=+100101=+37,[X]移=0011101时的X=-100011=-35。7.若[X]补=0.x-1x-2x-3x-4x-5,[Y]补=1y4y3y2y1y0,求下列几种情况时,x-i或yi的取值。(1)X>1/4(2)1/8≥X>1/16(3)Y<-16(4)-32<Y≤-8解:(1)[1/4]补=0.01000,故[(x-1=0)∧(x-3=1∨x-4=1∨x-5=1)]∨(x-1=1)时X>1/4;(2)[1/8]补=0.00100,[1/16]补=0.00010,故(x-1=0∧x-2=0)∧[(x-3=1∧x-4=0∧x-5=0)∨(x-3=0∧x-4=1∧x-5=1)]时1/8≥X>1/16;(3)[-16]补=110000,故y4=0时Y<-16;(4)[-8]补=111000,[-32]补=100000,故(y4=1∧y3=1∧y2=0∧y1=0∧y0=0)∨(y4y3=1)∨[y4=0∧y3=0∧(y2=1∨y1=1∨y0=1)]时-32<Y≤-8。8.冗余校验的基本原理是什么?答:数据发送时,除发送数据信息外,还冗余发送按某种规律形成的校验信息;数据接收时,用所接收数据信息形成新的校验信息,与所接收的校验信息比较,以此判断是否发生了错误,出错时报告出错或自动校正错误。9.若采用奇校验,下述两个数据的校验位的值是多少?(1)0101001(2)0011011答:(1)数据0101001的奇校验位值为01010011=0;(2)数据0011011的奇校验位值为00110111=1。10.若下列奇偶校验码中只有一个有错误,请问采用的是奇/偶校验?为什么?(1)10001101(2)01101101(3)10101001答:上述奇偶校验码采用的是偶校验编码方式。由于三个奇偶校验码中分别有偶数、奇数、偶数个“1”,而只有一个校验码有错误,故第2个奇偶校验码(01101101)有错误;又由于第2个奇偶校验码有奇数个“1”,故校验码采用的是偶校验编码方式。11.设有8位数据信息01101101,请写出求其海明校验码的过程。解:本题中数据位数n=8,数据信息m8…m1=01101101,设检验信息位数为k位,(1)先求得校验信息位数k,根据2k-1≥8+k的要求,可得k=4位;(2)列出n+k=8+4=12位校验码中的信息排列:m8m7m6m5p4m4m3m2p3m1p2p1。(3)设各校验组采用偶校验编码方式,各校验组校验位的值为:p4=m8m7m6m5=0110=0,p3=m8m4m3m2=0110=0,p2=m7m6m4m3m1=11111=1,p1=m7m5m4m2m1=10101=1;(4)海明偶校验码为:011001100111。12.若机器数表示时字长为8位,写出下列情况时它能够表示的数的范围(十进制)。(1)无符号整数;(2)原码编码的定点整数;(3)补码编码的定点整数;(4)原码编码的定点小数;6 (5)补码编码的定点小数。解:(1)无符号整数的表示范围是00000000~11111111,即0~255;(2)原码定点整数的表示范围是-1111111~+1111111,即-127~+127;(3)补码定点整数的表示范围是-(1111111+1)~+1111111,即-128~+127;(4)原码定点小数的表示范围是-0.1111111~+0.1111111,即-127/128~+127/128;(5)补码定点小数的表示范围是-1.0000000~+0.1111111,即-128/128~+127/128。13.对两个8位字长的定点数9BH及FFH,分别写出它们采用原码编码、补码编码及移码编码时的十进制整数的真值,并写出它们表示为无符号数时的十进制真值。解:机器码9BHFFH原码编码的真值(整数)-27-127补码编码的真值(整数)-101-1移码编码的真值(整数)+27+127无符号编码的真值(整数)15525514.若浮点数表示格式(从高位到低位)为:阶码6位(含1位阶符)、尾数10位(含1位数符),请写出51/128、-27/1024、7.375、-86.5所对应的机器数。(1)阶码和尾数均为原码;(2)阶码和尾数均为补码;(3)阶码为移码、尾数为补码。解:(1)阶码和尾数均为原码时,[51/128]浮=[0.0110011]浮=1000010110011000或0000000011001100或…,[-27/1024]浮=[-0.0000011011]浮=1001011110110000或1000011000011011或…,[7.375]浮=[111.011]浮=0000110111011000或0001100000111011或…,[-86.5]浮=[-1010110.1]浮=0001111101011010或0010001010101101或…;(2)阶码和尾数均为补码时,[51/128]浮=1111110110011000或0000000011001100或…,[-27/1024]浮=1110111001010000或1111111111100101或…,[7.375]浮=0000110111011000或0001100000111011或…,[-86.5]浮=0001111010100110或0010001101010011或…;(3)阶码为移码、尾数为补码时,[51/128]浮=0111110110011000或1000000011001100或…,[-27/1024]浮=0110111001010000或0111111111100101或…,[7.375]浮=1000110111011000或1001100000111011或…,[-86.5]浮=1001111010100110或1010001101010011或…。15.若浮点数表示格式采用6位阶码(含1位阶符)、10位尾数(含1位数符),阶码和尾数均采用补码编码。(1)写出浮点数能表示的正数及负数的范围;(2)写出规格化浮点数能表示的正数及负数的范围。-9-32-9+31解:(1)浮点数正数区的范围为:+2×2~+(1-2)×2,+31-9-32浮点数负数区的范围为:-1×2~-2×2;-1-32-9+31(2)规格化浮点数正数区的范围为:+2×2~+(1-2)×2,+31-1-9-32规格化浮点数负数区的范围为:-1×2~-(2+2)×2。16.若浮点数表示格式为:6位阶码(含1位阶符)、10位尾数(含1位数符)。分别写7 出阶码和尾数均为原码及均为补码时,下列数值为规格化数时的机器码。(1)+51/128(2)-51/128(3)-1/64解:(1)阶码和尾数均为原码时,规格化数的机器码为1000010110011000,阶码和尾数均为补码时,规格化数的机器码为1111110110011000;(2)阶码和尾数均为原码时,规格化数的机器码为1000011110011000,阶码和尾数均为补码时,规格化数的机器码为1111111001101000;(3)阶码和尾数均为原码时,规格化数的机器码为1001011100000000,阶码和尾数均为补码时,规格化数的机器码为1110101000000000。17.若机器中单精度浮点数采用IEEE754标准表示。(1)对机器码为(99D00000)16及(59800000)16的浮点数,请写出它们的真值;(2)请写出-51/128的机器码。解:(1)由于机器码(99D00000)16=10011001110100000000000000000000B,故浮点数的符号码S=1、阶码E=00110011、尾数码M=10100000000000000000000,因1<E<255,故机器码表示的为规格化浮点数,151-127-76(99D00000)16的真值N=(-1)×2×1.10100000000000000000000=-0.1101×2;由于机器码(59800000)16=01011001100000000000000000000000B,故浮点数的符号码S=0、阶码E=10110011、尾数码M=00000000000000000000000,因1<E<255,故机器码表示的为规格化浮点数,0179-127+53(59800000)16的真值N=(-1)×2×1.00000000000000000000000=+0.1×2。1125-127(2)(-51/128)10=(-0.0110011)2=(-1)×(1.10011)×2,则用IEEE754标准表示时,符号码S=1、阶码E=125、尾数M=0.10011,故-51/128的单精度浮点数机器码为10111110110011000000000000000000。18.字符在计算机中的表示可看作无符号定点整数,对字符的操作有比较是否相同、判断前后次序等关系运算,需要哪些支持才能用算术运算和逻辑运算实现关系运算?答:由于字符数据可看作无符号定点整数,故字符操作的结果可以用两个无符号定点整数关系运算的结果表示。设NA及NB为无符号定点整数,NC为有符号定点整数,且NA-NB=NC,则①当NA>NB时,NC的符号为正,②当NA<NB时,NC的符号为负,③当NA=NB时,NC的值为零,④当NA≥NB时,NC的符号为正、或者NC的值为零,⑤当NA≤NB时,NC的符号为负、或者NC的值为零;即对算术运算(减法)结果的符号、是否为零进行逻辑运算(逻辑与、逻辑或),就可以得到关系运算的结果。因此,运算器中设置“结果符号是否为负”及“结果是否为零”两个标志位,并且有对这2个硬件标志位的5种逻辑操作硬件时,就可以用算术运算和逻辑运算实现关系运算了。19.各种应用数据在计算机中一般表示成哪几种数据类型?对某个机器数,如何才能够知道它的数据类型?答:计算机中的应用数据一般有数值数据和非数据数据两大类型,数值数据的运算均为算术运算,数据可表示为定点数或浮点数两种数据类型;非数值数据的运算比较复杂,可能为逻辑运算,或算术运算或关系运算,数据可表示为逻辑数,或定点数或浮点数。故应用数据在计算机中一般表示成定点数、浮点数及逻辑数三种数据类型。由于计算机中均用二进制表示数据和指令,只能通过约定方式隐含表示符号及小数点8 等。而这种约定只在数据操作时才有实际意义,因此,对于某机器数,从数据本身无法知道它的数据类型,只能通过对其操作的指令来表明这个数的数据类型。如对32位机器数99D00000H,当它为浮点运算指令的操作数时,它是浮点数;当它为定点运算指令的操作数时,它是定点数。20.若8位机器码为0010100,请问逻辑左移多少次后溢出?逻辑右移多少次后再左移同样多次数时机器码开始不同?请分别说明原因。答:逻辑左移3位后溢出,因为左起第一个“1”被移丢,故溢出。逻辑右移3位后再逻辑左移3位时机器码与原来不同,因为机器码0010100→0000010→0010000,右起第一个“1”被移丢,损失精度后再左移3位机器码发生变化。21.设机器数字长为8位(含1位符号),分别写出对下列机器数算术左移1位、2位,算术右移1位、2位的结果,并说明结果是否正确。[X]原=0.0011010;[X]补=1.1101000;[X]反=1.0101111;[X]原=1.0011010;[X]补=1.1001101;[X]反=1.1001110解:结果见下表,其中√表示结果正确、×表示结果溢出、∠表示结果精度受损失。算术左移1位算术左移2位算术右移1位算术右移2位[X]原=0.00110100.0110100√0.1101000√0.0001101√0.0000110∠[X]原=1.00110101.0110100√1.1101000√1.0001101√1.0000110∠[X]补=1.11010001.1010000√1.0100000√1.1110100√1.1111010√[X]补=1.10011011.0011010√1.0110100×1.1100110∠1.1110011∠[X]反=1.01011111.1011111×1.0111111×1.1010111√1.1101011√[X]反=1.10011101.0011101√1.0111011×1.1100111∠1.1110011∠22.若[X]补=xSxn-1…x0,请推导[2X]补=2[X]补及[12X]补=xS*2n-1+12[X]补。解:(1)因[2X]补=2n+2X≡2n+2n+2X=2×(2n+X)=2[X]补,故[2X]补=2[X]补。(2)当X≥0时,xS=0,[X]补=2n+X=0xn-1…x0,X=+xn-1…x0,则[12X]补=2n+12X=2n+xn-1…x0/2=0xn-1…x0/2=12[X]补;=0*2n-1+1[X]Sn-112补=x*2+2[X]补;当X<0时,xS=1,X=[X]nn-1n-1n-1补-2=1xn-1…x0-2-2=-2+xn-1…x0,则[1X]nn-12补=2+(-2+xn-1…x0)/2=2n-1+2n-1+(-2n-1+xn-1n-1n-1…x0)/2=2+(2+xn-1…x0)/2=2n-1+1xn-11Sn-11n-1…x0/2=2+2[X]补=x*2+2[X]补。故对任意X,均有[12X]补=xS*2n-1+12[X]补。23.若机器数字长为8位(含1位符号),请用补码运算规则计算下列各题。(1)A=9/64,B=-13/32,求A+B;(2)A=19/32,B=-18/128,求A-B;(3)A=-87,B=13,求A-B;(4)A=115,B=-24,求A+B解:(1)因A=+0.0010010、B=-0.0110100,则[A]补=0.0010010、[B]补=1.1001100,[A+B]补=[A]补+[B]补=0.0010010+1.1001100=1.1011110,则A+B=-0.0100010=-17/64;9 (2)因A=+0.1001100、B=-0.0010010,则[A]补=0.1001100、[-B]补=0.0010010,[A-B]补=[A]补+[-B]补=0.1001100+0.0010010=0.1011110,则A-B=0.1011110=47/64;(3)因A=-1010111、B=+0001101,则[A]补=10101001、[-B]补=11110011,[A-B]补=[A]补+[-B]补=10101001+11110011=10011100,则A-B=-100;(4)因A=+1110011、B=-0011000,则[A]补=01110011,[B]补=11101000,[A+B]补=[A]补+[B]补=01110011+11101000=01011011,则A+B=+91。24.若机器数字长为6位(含1位符号),请用补码计算A+B,并判断结果是否溢出。(1)A=0.11011,B=0.00011;(2)A=0.11011,B=-0.10101;(3)A=-0.10111,B=-0.01011;(4)A=0.10011,B=0.01111解:(1)由题意[A]补=0.11011,[B]补=0.00011,[A+B]补=[A]补+[B]补=0.11011+0.00011=0.11110,A+B=+0.11110,[A+B]补的溢出标志OVR=(00)(00)=0,故A+B结果不溢出;(2)由题意[A]补=0.11011,[B]补=1.01011,[A+B]补=[A]补+[B]补=0.11011+1.01011=0.00110,A+B=+0.00110,[A+B]补的溢出标志OVR=(00)(10)=0,故A+B结果不溢出;(3)由题意[A]补=1.01001,[B]补=1.10101,[A+B]补=[A]补+[B]补=1.01001+1.10101=0.11110,A+B=+0.11110,[A+B]补的溢出标志OVR=(10)(10)=1,故A+B结果溢出;(4)由题意[A]补=0.10011,[B]补=0.01111,[A+B]补=[A]补+[B]补=0.10011+0.01111=1.00010,A+B=-0.11110,[A+B]补的溢出标志OVR=(01)(01)=1,故A+B结果溢出。25.若机器数字长为7位(含2位符号),请用变形补码计算A-B,并判断结果是否溢出。(1)A=0.11011,B=-0.11111;(2)A=0.10111,B=-0.01010解:(1)由题意[A]变补=00.11011,[B]变补=11.00001,[-B]变补=00.11111,则[A-B]变补=[A]变补+[-B]变补=00.11011+00.11111=01.11010,A+B=-0.00110,[A-B]变补的溢出标志OVR=01=1,故A-B结果溢出;(2)由题意[A]变补=00.10111,[B]变补=11.10110,[-B]变补=00.01010,则[A-B]变补=[A]变补+[-B]变补=00.10111+00.01010=01.00001,A+B=-0.00001,[A-B]变补的溢出标志OVR=01=1,故A-B结果溢出。26.对下列A和B,请用原码一位乘法求A×B。(1)A=0.110111,B=-0.101110;(2)A=19,B=35解:(1)由题意[A]原=0.110111,[B]原=1.101110,|A|=0.110111,|B|=0.101110,[A×B]原的符号位为01=1,按原码一位乘法规则,|A|×|B|需进行6次判断-加法-移位操作,其过程如下表所示:10 乘数循环次数部分积高位说明(及部分积低位)60.000000101110初始部分积P0=0.000000+0.000000乘数最低位为0,应+00.00000050.000000010111部分积及乘数同时右移1位+0.110111乘数最低位为1,应+|A|0.11011140.011011101011部分积及乘数同时右移1位+0.110111乘数最低位为1,应+|A|1.01001030.101001010101部分积及乘数同时右移1位+0.110111乘数最低位为1,应+|A|1.10000020.110000001010部分积及乘数同时右移1位+0.000000乘数最低位为0,应+00.11000010.011000000101部分积及乘数同时右移1位+0.110111乘数最低位为1,应+|A|1.00111100.100111100010部分积及乘数同时右移1位即|A|×|B|=0.100111100010,故[A×B]原=1.100111100010。(2)由题意,[A]原=0010011,[B]原=0100011,|A|=010011,|B|=100011,[A×B]原的符号位为00=0,|A|×|B|需进行6次判断-加法-移位操作,其过程如下表所示:乘数循环次数部分积高位说明(及部分积低位)6000000100011初始部分积P0=000000+010011乘数最低位为1,应+|A|00100116位加法,0为加法器的进位5001001110001部分积及乘数同时右移1位+010011乘数最低位为1,应+|A|00111004001110011000部分积及乘数同时右移1位+000000乘数最低位为0,应+000011103000111001100部分积及乘数同时右移1位+000000乘数最低位为0,应+000001112000011100110部分积及乘数同时右移1位+000000乘数最低位为0,应+000000111000001110011部分积及乘数同时右移1位+010011乘数最低位为1,应+|A|00101000001010011001部分积及乘数同时右移1位即|A|×|B|=001010011001,故[A×B]原=0001010011001。27.若A=0.011011,B=-0.100110,请用原码两位乘法求A×B。解:由题意[A]原=0.011011,[B]原=1.100110,|B|=0.100110,[|A|]补=0.011011,[-|A|]补=1.100101,[2|A|]补=0.110110,[A×B]原的的符号位为01=1,11 由于|B|为6位(偶数个),乘法运算时需在|B|的最高位前增加两个0,以处理乘法运算结束时可能的T=1的情况,故共循环4次,前3次进行判断-加法-移位操作、最后1次进行判断-加法操作,运算过程如下表所示:循环乘数部分积高位T说明次数(及部分积低位)4000.000000001001100初始部分积P0=000、T=0+000.110110b1b0T=100,应+[2|A|]补、T←0000.1101103000.001101100010010算术右移2位(最高符号位为真符号位)+000.011011b1b0T=010,应+[|A|]补、T←0000.1010002000.001010001000100算术右移2位+000.110110b1b0T=100,应+[2|A|]补、T←0001.0000001000.010000000010000算术右移2位+000.000000b1b0T=000,应+00000.010000000010不移位,乘积数值部分为0.0100000000010即|A|×|B|=0.010000000010,故[A×B]原=1.010000000010。28.对下列A和B,请用补码一位乘法(Booth算法)求A×B。(1)A=0.110111,B=-0.101010;(2)A=19,B=35解:(1)由题意[A]补=0.110111,[B]补=1.010110,[-A]补=1.001001,因连同符号一起运算,故共循环7次,进行判断-加法-移位操作(最后1次不移位)。运算过程如下表所示:循环部分积乘数附加位操作说明70.00000010101100初始[P0]补=0,b-n=0+0.000000b-n-1b-n=00,部分积+00.00000060.00000001010110部分积和乘数同时算术右移1位+1.001001b-n-1b-n=10,部分积+[-A]补1.00100151.10010010101011部分积和乘数同时算术右移1位+0.000000b-n-1b-n=11,部分积+01.10010041.11001001010101部分积和乘数同时算术右移1位+0.110111b-n-1b-n=01,部分积+[A]补0.10100130.01010010101010部分积和乘数同时算术右移1位+1.001001b-n-1b-n=10,部分积+[-A]补1.01110121.10111011010101部分积和乘数同时算术右移1位+0.110111b-n-1b-n=01,部分积+[A]补0.10010110.01001011101010部分积和乘数同时算术右移1位+1.001001b-n-1b-n=10,部分积+[-A]补1.01101101.011011111010最后一次不右移故[A×B]补=1.011011111010。(2)由题意[A]补=0010011,[B]补=0100011,[-A]补=1101101,共循环7次,进行判断-加法-移位操作(最后1次不移位)。运算过程如下表所示:12 循环部分积乘数附加位操作说明7000000001000110初始[P0]补=0,b-n=0+1101101b-n-1b-n=10,部分积+[-A]补11011016111011010100011部分积和乘数同时算术右移1位+0000000b-n-1b-n=11,部分积+011101105111101101010001部分积和乘数同时算术右移1位+0010011b-n-1b-n=01,部分积+[A]补00011104000011100101000部分积和乘数同时算术右移1位+0000000b-n-1b-n=00,部分积+000001113000001110010100部分积和乘数同时算术右移1位+0000000b-n-1b-n=00,部分积+000000112000000111001010部分积和乘数同时算术右移1位+1101101b-n-1b-n=10,部分积+[-A]补11011101111011101100101部分积和乘数同时算术右移1位+0010011b-n-1b-n=01,部分积+[A]补000101000001010011001最后一次不右移故[A×B]补=0001010011001。29.对下列A和B,请用不恢复余数法(交替加减法)原码除法求A÷B。(1)A=0.100111,B=-0.101010;(2)A=0100100110,B=10101解:(1)由题意[A]原=0.100111,[B]原=1.101010,[|A|]补=0.100111,[|B|]补=0.101010,[-|B|]补=1.010110,不恢复余数法原码除法求解过程如下表所示:被除数(余数)商说明0.100111*******被除数=[|A|]补,商=任意值+1.010110减去除数,+[-|B|]补1.1111010.余数为负,除法不溢出,上商为01.1110100.余数与部分商同时逻辑左移1位+0.101010因q0=0(即余数为负):加上除数,+[|B|]补0.1001000.1余数为正,上商为11.0010000.1余数与部分商同时逻辑左移1位+1.010110因q1=1(即余数为正):减去除数,+[-|B|]补0.0111100.11余数为正,上商为10.1111000.11余数与部分商同时逻辑左移1位+1.010110因q2=1(即余数为正):减去除数,+[-|B|]补0.0100100.111余数为正,上商为10.1001000.111余数与部分商同时逻辑左移1位+1.010110因q3=1(即余数为正):减去除数,+[-|B|]补1.1110100.1110余数为负,上商为01.1101000.1110余数与部分商同时逻辑左移1位+0.101010因q4=0(即余数为负):加上除数,+[|B|]补0.0111100.11101余数为正,上商为10.1111000.11101余数与部分商同时逻辑左移1位+1.010110因q5=1(即余数为负):减去除数,+[-|B|]补0.0100100.111011余数为正,上商为1,因q6=1,余数不用修正13 所以|商|=0.q1q2q3q4q5q6=0.111011,|余数|=0.010010。由于商符sQ=10=1,故[A/B]原=1.111011,[A%B]原=0.010010,A/B=-0.111011,A%B=+0.010010。30.对于不恢复余数法原码除法而言,图2.16的运算流程并不完全适用于整数除法,因为整数除法开始时,被除数存放在REGA及REGQ中,请将图2.16改成适合整数除法的流程图(提示:应先移位、后上商)。解:图2.16的原码除法中,“判溢出”阶段的“REGQ0←0”对应的是最后结果的符号位,可省略(最后被覆盖);“相除”阶段的“REGQ0=1?”可用“REGAn-1=0?”代替。开始REGA←被除数(原码),REGB←除数(原码)准备CNT←n-1SQ←REGAn-1REGBn-1,SR←REGAn-1求商及余数符号REGAn-1←0,REGBn-1←0变为绝对值REGA←(REGA)+[-(REGB)]补NY判溢出REGAn-1=1?OVR←1NYREGAn-1=0?REGA、REGQ同时REGA、REGQ同时逻辑左移1位逻辑左移1位REGA←(REGA)+(REGB)REGA←(REGA)+[-(REGB)]补相除REGQ0←(REGAn-1)取反CNT←(CNT)-1NCNT=0?YNREGQ0=1?余数修正REGA←(REGA)+(REGB)YREGQn-1←SQ,REGAn-1←SR置商及余数符号结束31.若A=-0.10101,B=0.11011,请用不恢复余数法补码除法求A÷B。解:由题意[A]补=1.01011,[B]补=0.11011,[-B]补=1.00101,不恢复余数补码除法过程如下表所示:14 被除数(余数)商[Q]反说明1.01011******[A]补与[B]补异号+0.11011求[R0’]补时+[B]补0.001101.[R0’]补与[B]补同号,不溢出、q0←10.011001.余数与部分商同时左移1位+1.00101求新余数时+[-B]补1.100011.0[R1’]补与[B]补异号,q1←01.000101.0余数与部分商同时左移1位+0.11011求新余数时+[B]补1.111011.00[R2’]补与[B]补异号,q2←01.110101.00余数与部分商同时左移1位+0.11011求新余数时+[B]补0.101011.001[R3’]补与[B]补同号,q3←11.010101.001余数与部分商同时左移1位+1.00101求新余数时+[-B]补0.011111.0011[R4’]补与[B]补同号,q4←10.111101.0011余数与部分商同时左移1位+1.00101求新余数时+[-B]补0.000111.00111[R5’]补与[B]补同号,q5←1+1.00101q0=1、q5=1,即不够减,修正余数+[-B]补1.01000所以,[Q]反=1.00111,[Q]补=1.00111+0.00001=1.01000,[R]补=1.01000。32.若浮点数用4位阶码(含1位阶符)、7位尾数(含1位数符)格式表示,阶码及尾数均为补码,请用浮点运算方法计算A+B。-011-010(1)A=2×0.101100,B=2×(-0.011100);101100(2)A=2×(-0.100101),B=2×(-0.001111)解:假设运算时采用2位警戒位、双符号位和舍入法。(1)由题意[A]浮=11010101100,[B]浮=11101100100,①对阶,[ΔE]补=11101-11110=11111,ΔE=-1,A的尾数右移1位、阶码加1,即[MA’]补=00.01011000,[MB’]补=11.10010000,[EA’]补=[EB’]补=11110②尾数加减,[MA’]补+[MB’]补=00.01011000+11.10010000=11.11101000,即[A+B]浮=111101111101000③规格化,尾数不溢出、(补码)符号位与最高数值位相同,左规3次后,得[A+B]浮=110111101000000④尾数舍入,警戒位为00,选择“舍”(即“不舍不入”),即[A+B]浮=1101111010000⑤溢出判断,阶码符号为11,A+B结果不溢出。-101故[A+B]浮=10111010000,A+B=2×(-0.110000)。(2)由题意[A]浮=01011011011,[B]浮=01001110001,①对阶,[ΔE]补=00101-00100=00001,ΔE=1,B的尾数右移1位、阶码加1,即[MA’]补=11.01101100,[MB’]补=11.11100010,[EA’]补=[EB’]补=00101②尾数加减,[MA’]补+[MB’]补=11.01101100+11.11100010=11.01001110,即[A+B]浮=001011101001110③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,即[A+B]浮=00101110100111015 ④尾数舍入,由于尾数为负、警戒位为10,选择“舍”,即[A+B]浮=0010111010011⑤溢出判断,阶码符号为00,A+B结果不溢出。+101故[A+B]浮=01011010011,A+B=2×(-0.101101)。33.若浮点数表示格式为:5位阶码(含1位阶符)、8位尾数(含1位数符),阶码用移码表示、尾数用补码表示,浮点运算时采用双符号位运算、警戒位为3位、采用舍入法,请用浮点运算方法计算下列各题,并写出运算结果的机器码。1511139(1)[2×16]+[2×(-16)];-1313-145(2)[2×16]+[2×(-8)]解:(1)由题意[A]浮=1111101011000,[B]浮=1110110111000,①对阶,[EB]补=01101,[-EB]补=10011,[ΔE]移=[EA]移-[EB]补=[EA]移+[-EB]补=111111+110011=110010,ΔE=2,B的尾数右移2位、阶码加2,即[MA’]补=00.1011000000,[MB’]补=11.1101110000,[EA’]移=[EB’]移=111111②尾数加减,[MA’]补+[MB’]补=00.1011000000+11.1101110000=00.1000110000,即[A+B]浮=111111001000110000③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,即[A+B]浮=111111001000110000④尾数舍入,由于警戒位为000,选择“舍”(即“不舍不入”),即[A+B]浮=111111001000110⑤溢出判断,阶码符号位为11,A+B结果不溢出。故[A+B]浮=1111101000110。(2)由题意[A]浮=0001101101000,[B]浮=0001010110000,①对阶,[ΔE]移=[EA]移-[EB]补=[EA]移+[-EB]补=000011+001110=010001,ΔE=1,B的尾数右移1位、阶码加1,即[MA’]补=00.1101000000,[MB’]补=11.1011000000,[EA’]补=[EB’]补=000011②尾数加减,[MA’]补+[MB’]补=00.1101000000+11.1011000000=00.1000000000,即[A+B]浮=000011001000000000③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,即[A+B]浮=000011001000000000④尾数舍入,由于警戒位为000,选择“舍”(即“不舍不入”),即[A+B]浮=000011001000000⑤溢出判断,阶码符号位为00,A+B结果不溢出。故[A+B]浮=0001101000000。34.若浮点数表示格式为:6位阶码(含1位阶符)、10位尾数(含1位数符),阶码用原-13101-4码表示、尾数用补码表示,浮点乘法结果保留1倍长度,请用浮点乘法求[2×128]×[2×(-135)]。256解:由题意,[A]浮=1011010110010100,[B]浮=1001001011110010,①阶码运算,[EA]原=101101、[EB]原=100100,则[EA]补=110011、[EB]补=111100,[EA+EB]补=[EA]补+[EB]补=110011+111100=101111,[EA+EB]原=110001;②尾数相乘,[MA]补=0.110010100,[MB]补=1.011110010,[-MA]补=1.001101100采用Booth算法相乘,得[MA×MB]补=1.100101010111101000,即[A×B]浮=110001110010101011110100016 ③规格化,因符号位与最高数值位相同,需左规格化,左规1次后,即[A×B]浮=1100101001010101111010000④舍入处理,由于尾数保留1倍长度,需进行舍入处理,因尾数为负,按负数补码的舍入规则,选择“入”,-18即[A×B]浮=1100101001010110,A×B=2×(-0.110101010)。35.对图2.22的先行进位电路进行修改,形成一个便于级联的先行进位电路,即输入端为G3~G0、P3~P0及C-1,输出端为C2~C0、G及P。其中G及P实现的逻辑是该进位电路的进位产生函数和进位传递函数。解:由于图2.22的先行进位电路没有进位产生函数和进位传递函数信号,故多个这种电路间只能实现串行进位、不能实现先行进位;先行进位电路的改进主要是增加进位产生函数信号G和进位传递函数信号P的逻辑。根据先行进位逻辑可知:C0=G0+P0C-1C1=G1+P1C0=G1+P1G0+P1P0C-1C2=G2+P2C1=G2+P2G1+P2P1G0+P2P1P0C-1C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C-1若C3=G+PC-1,则G=G3+P3G2+P3P2G1+P3P2P1G0,P=P3P2P1P0新改进的先行进位电路的C2~C0、G及P的逻辑如下图所示:GPC2C1C011111≥1≥1≥1≥1&&&&&&&&&&&&&&C-1G3P3G2P2G1P1G0P036.试用74181、图2.22的先行进位电路及题35的先行进位电路构建一个64位并行ALU,画出各部件或电路间的连接图。解:题35改进的先行进位电路与74182芯片完全相同,本题记为74182。64位并行ALU可由4个16位先行进位加法器、采用先行进位逻辑电路连接而成,而16位先行进位加法器可由4个74181、1个74182连接而成。(1)16位先行进位加法器的逻辑如下图所示:16位先行进位加法器GPC2C1C074182G3P3G2P2G1P1G0P074181741817418174181C-117 (2)64位并行加法器的逻辑如下图所示:64位先行进位加法器C3C2C1C0C634位先行进位产生电路G3P3G2P2G1P1G0P016位先行16位先行16位先行16位先行C-1进位加法器进位加法器进位加法器进位加法器37.图2.28中29C101输出状态信号C及OVR,用于表示无符号及有符号运算结果是否溢出,这很正常。相对于只输出一个溢出信号,输出两个信号有什么好处?29C101还输出F15及F=0两个状态信号,有什么功效?答:(1)由于有/无符号运算的溢出逻辑不同,因此,ALU的功能选择信号必须能够区分是有符号运算、还是无符号运算;而29C101同时输出C及OVR两个信号,使得功能选择信号不需要区分有/无符号运算,减少了功能选择信号线的数量,而运算是否溢出由软件根据需要选择C或OVR进行判断。(2)由于CPU中的关系运算通常用算术运算(减法)和逻辑运算实现,而ALU刚好能实现算术运算和逻辑运算;而关系运算的结果可以用算术运算(减法)的“结果是否为零”、“结果是否为负”状态组合表示,如结果为零是表示A=B、结果为负时表示A<B;而F=0及F15这两个信号刚好可以表示“结果是否为零”、“结果是否为负”的状态,因此,F15及F=0这两个状态信号有效地支持了基于ALU的关系运算实现。18 第3章1.解释概念或术语:RAM、SAM、DAM、ROM,主存、辅存、存储元、存储单元、存储字、存储阵列、二维译码。答:略。2.说明存取时间、存储(存取)周期和带宽的区别。答:存取时间(TA)指存储器从接收到操作命令到完成操作(信息被送到数据引脚上或引脚上信息被存到存储元中)的时间;存取周期(TM)指存储器完成访问并恢复到就绪状态的全部时间,即存储器连续两次完成访问的最短间隔时间;带宽(BM)指存储器单位时间内可以提供数据的最大速率,即单位时间内最多可读写的二进制位数;由此可见,TA及TM反映存储器完成访问的延迟,与数据线数量无关,而BM反映存储器传输数据的速度,与数据线数量有关;TM比TA多了恢复到就绪状态时间,因此TM≥TA。3.层次结构存储系统能够满足用户大容量、高速度、低价格的原因是什么?不同层存储器中的内容有什么关系?CPU按哪种存储器的地址访问存储系统?答:假设层次结构存储系统由Cache、主存、辅存三种存储器组成。(1)若将近期常用信息放在高速度的Cache中,可满足用户高速度需求,而程序访问的局部性规律使得将近期常用信息放在Cache和主存中成为可能;由于所有信息最终均存放在辅存中,若使辅存容量较大,自然满足了用户大容量需求;若使每位价格CCache>C主存>C辅存、容量SCache<>主存空间),对这种全相联映像的虚存管理表格,硬件查表方式速度很快、但实现成本不可想象,故只能采用软件查表方式实现,即虚存-主存间管理采用以虚存地址为索引的索引表(非目录表)结构,这样一次查表即可获得结果、但管理表格更27 大,因辅存速度太慢,故虚存管理表通常存放在主存中。(3)由于虚存管理表采用索引表结构、管理表存放在主存中,因此,查管理表有①用管理表主存基址+虚拟地址形成管理表项对应的主存索引地址,②用该主存索引地址访问主存获得管理表项内容这两个步骤。23.程序逻辑地址由8位段号及16位段内地址组成,主存按字节编址、最大容量为512KB,若虚拟存储器采用段式管理,则虚存段表最多有多少行?只考虑映像的实现时,主存中段表每行至少有多少位?CPU中快表的每行至少有多少位?解:(1)由于虚存采用段式管理,故虚存段表最多有28=256行;(2)由题意,主存地址长度为log2(512KB/1B)=19b,由于只考虑映像的实现,故段表表项最少由装入位、段基址及段长组成,即主存中段表每行至少有1b+19b+16b=36b;(3)由于CPU中快表为目录表结构,故快表表项最少由有效位、段号、段基址及段长组成,即快表每行至少有1b+8b+19b+16b=44b。24.程序逻辑地址及主存参数同题22,若虚拟存储器采用页式管理、页大小为4KB,则虚存页表最多有多少行?只考虑映像的实现时,页表每行至少有多少位?CPU中快表的每行至少有多少位?解:(1)由题意,页内地址长度为log2(4KB/1B)=12b,程序逻辑页号长度为8b+16b-12b=12b,故虚存页表最多有212=4096行;(2)由题意,主存物理页号长度为19b-12b=7b,由于只考虑映像的实现,故页表表项至少由装入位、物理页号组成,即主存中页表每行至少有1b+7b=8b=1B;(3)由于CPU中快表为目录表结构,故快表表项最少由有效位、逻辑页号及物理页号组成,即快表每行至少有1b+12b+7b=20b。25.虚拟存储器的地址映像及变换与Cache有哪些不同?解:(1)虚拟存储器存在虚存-主存、虚存-辅存两种地址映像及变换,而Cache只存在主存-Cache一种地址映像与变换;(2)虚存-主存间信息交换粒度可为段或页,而Cache-主存间信息交换粒度为块,块大小<<页大小或段大小;(3)虚拟存储器只采用全相联映像方式,而Cache可采用直接映像、全相联映像或组相联映像方式;(4)虚拟存储器的管理表存放在主存中、采用索引表结构,而Cache的管理表则存放在Cache中、采用目录表结构;(5)虚拟存储器的查表及地址变换用软件方式实现,而Cache的查表及地址变换用硬件方式实现。28 第4章1.解释概念或术语:机器指令、指令系统、指令格式、指令字长、扩展编码、堆栈、边界对齐、寻址方式、形式地址、规整性、兼容性、CISC、RISC。答:略。2.为什么说指令系统是软件和硬件间的约定?约定有哪些内容?答:(1)指令系统为所有机器指令的集合,包含所有机器指令的功能。对计算机系统而言,为了保证应用需求与应用结果相一致,计算机软件(程序)必须是按照指令系统的约定(功能及格式)、根据应用需求而形成的,计算机硬件必须是按照指令系统的功能约定、根据指令格式进行设计而组成的。由此可见,指令系统是计算机软件和硬件间的约定。(2)指令系统中,每条机器指令约定的信息需包括:操作类型、操作数类型、操作数长度、各操作数地址、各操作数的源/目标属性、下条指令地址等。3.指令字长、机器字长、存储字长三者间有何关系?为什么有些指令字中有空闲位置?答:(1)由于CPU按地址访问存储器中数据,故机器字长必须是存储字长的倍数,为尽量节省数据所占存储空间,机器字长通常等于多个存储字长;由于指令存放在存储器中,下条指令地址为存储器地址,故指令字长必须为存储字长的倍数,指令字长是否等于多个存储字长,取决于指令系统的风格及具体指令的约定。(2)由于不同指令所需约定的信息不同,而所有指令字长必须是存储字长的倍数,因此,必然存在部分指令无需使用指令字长中的所有位,这就导致了有些指令字中有空闲位置。4.若某指令系统中共有10种性质的操作,使用频率分别为0.25、0.20、0.15、0.10、0.08、0.08、0.05、0.04、0.03、0.02,请分别用定长编码法、霍夫曼编码法、同时有两种长度的霍夫曼扩展编码法进行编码,并计算三种方式编码的平均码长。解:定长编码的位数为log210=4位,霍夫曼编码及霍夫曼扩展编码根据霍夫曼树求得,编码如下表所示:操作Ii频率Pi定长编码霍夫曼编码霍夫曼扩展编码I10.25000000000I20.20000110001I30.150010010010I40.100011110011I50.0801000110100I60.0801011110101I70.05011001110110I80.0401110111111100I90.0310001111011101I100.0210011111111110平均码长(∑IiPi)42.993.18码长种类142注意:霍夫曼扩展编码亦可采用2位和5位,则平均码长=0.6×2+0.4×5=3.2位,可见表中答案较优。29 5.某指令系统中,指令字长为16位,指令操作码采用扩展编码法,有单地址指令、双地址指令两种指令。若每个地址码均为6位,且双地址指令为A条,则单地址指令最多有多少条?4解:双地址指令操作码长为16b-2×6b=4b,由题意,空闲2-A种编码,单地址指令操作码长为16b-6b=10b,可分为4b和6b两部分,46则单地址指令最多有(2-A)×2条。6.假设计算机约定主存按字节编址,数据在存储器中采用小端次序存放,CPU中设置有4个通用寄存器(记为R0~R3),设置有寄存器SP指向存储器堆栈的栈顶,入栈操作时SP向递减方向移动。若(SP)=1002H、(R0)=0020H、(R1)=0022H、(R2)=0024H,连续进行将R0入栈、将R1入栈、出栈到R2、将R1入栈、将R2入栈、出栈到R0操作后,请画出每一个操作后的SP及堆栈内部的数据变化,同时说明R0~R2的当前值。解:堆栈操作时,堆栈内部、SP及R0~R2的变化过程如图所示:……主存……主存……主存……主存0FFCH0FFCH0FFCH0FFCH0FFDH0FFDH0FFDH0FFDH0FFEH0FFEH0FFEH22HSP0FFEH0FFFH0FFFH0FFFH00H0FFFH1000H1000H20HSP1000H20H1000H20HSP1001H1001H00H1001H00H1001H00H1002HSP1002H1002H1002H空堆栈R0入栈R1入栈出栈到R2(SP)=1002H(SP)=1000H(SP)=0FFEH(SP)=1000H(R0)=0020H(R0)=0020H(R0)=0020H(R0)=0020H(R1)=0022H(R1)=0022H(R1)=0022H(R1)=0022H(R2)=0024H(R2)=0024H(R2)=0024H(R2)=0022H……主存……主存……主存0FFCH0FFCH22HSP0FFCH0FFDH0FFDH00H0FFDH0FFEH22HSP0FFEH22H0FFEH22HSP0FFFH00H0FFFH00H0FFFH00H1000H20H1000H20H1000H20H1001H00H1001H00H1001H00H1002H1002H1002HR1入栈R2入栈出栈到R0(SP)=0FFEH(SP)=0FFCH(SP)=0FFEH(R0)=0020H(R0)=0020H(R0)=0022H(R1)=0022H(R1)=0022H(R1)=0022H(R2)=0022H(R2)=0022H(R2)=0022H7.指令寻址方式通常有哪些?顺序型指令和转移型指令的地址码内容有何不同?答:(1)指令寻址方式通常有直接寻址、寄存器间接寻址、相对寻址、隐含寻址等;(2)顺序型指令的功能是实现处理操作,故地址码中包含有操作数地址,下条指令地址为(PC)+“1”、与当前指令内容无关,可隐含表示,故地址码的内容仅为操作数地址码;转移型指令的功能仅是改变指令逻辑顺序,故地址码中不包含操作数地址码,而下条指令地址由当前指令形成、形成方法与当前指令内容有关,需显式表示,因此地址码内容仅为下条指令地址码。30 8.试比较间接寻址与寄存器间接寻址、基址寻址与变址寻址的不同点。答:间接寻址与寄存器间接寻址不同点:虽然形式地址A均为存放存储器操作数地址的部件地址,但部件类型不同;操作数有效地址EA的形成性能不同,间接寻址的EA=[A]、需访存形成(性能差),寄存器间接寻址的EA=(A)、无需访存形成(性能好);寄存器间接寻址的形式地址A较短。基址寻址与变址寻址的不同点:虽然两者均有EA=(REG)+A,但所用REG不同,分别为从零编址的基址REG和变址REG;有些机器的变址REG具有自动变址功能,而基址REG则没有,这是因为变址寻址主要用于数据块的规律操作,而基址寻址主要用于存储管理。9.设存储器按字节编址,相对寻址的转移指令字长为2B,第二字节为相对偏移量,用补码表示。CPU取指时每取出一个字节自动完成PC←(PC)+1操作。假设某相对寻址的转移指令的第一字节地址为2000H,请分别写出欲转移到地址为2008H的指令和地址为1FF8H的指令时,该转移指令指令字的第二字节的内容是什么?解:读取当前指令后(PC)=2000H+02H=2002H,(1)当前转移指令的下条指令EA=2008H时,相对偏移量为2008H-2002H=+06H,[+06H]补=06H,故当前指令字的第二字节内容为:06H;(2)当前转移指令的下条指令EA=1FF8H时,相对偏移量为1FF8H-2002H=-0AH,[-0AH]补=F6H,故当前指令字的第二字节内容为:F6H。10.某机器字长为16位,存储器按字编址,指令字长同机器字长。指令格式如下:5bit3bit8bit操作码OP寻址方式位MOD形式地址D其中,MOD=000~100分别表示立即寻址、直接寻址、间接寻址、变址寻址和相对寻址,变址寻址只使用唯一的变址寄存器(记为RI),形式地址D在MOD=000及100时为补码表示、其余寻址方式时为无符号编码表示。(1)该指令格式能定义多少种不同的操作?立即寻址的操作数范围是多少?(2)写出各种寻址方式时,地址码对应的数据或地址表达式。(3)写出MOD=001、010、100时,能访问的最大主存区为多少个机器字。5解:(1)由于操作码为5位,故可以定义2=32种不同的操作;由于立即寻址的D用8位补码表示,故立即寻址的操作数范围为-128~+127。(2)设D=[DZ]补,则立即寻址的地址码表示的是:操作数=DZ;直接寻址的地址码表示的是:操作数EA=D;间接寻址的地址码表示的是:操作数EA=[D];变址寻址的地址码表示的是:操作数EA=(RI)+D;相对寻址的地址码表示的是:下条指令EA=(PC)+DZ。(3)MOD=001(直接寻址)时,操作数EA长度=D的长度=8bit,8可访问的主存区为2=256个机器字;MOD=010(间接寻址)时,操作数EA长度=存储字长=机器字长=16bit,16可访问的主存区为2=64K个机器字;MOD=100(相对寻址)时,下条指令EA长度=max{PC的长度,D的长度}=16max{16bit,8bit}=16bit,可访问的主存区为2=64K个机器字。11.某计算机约定数值数据采用定点表示,有符号数采用原码编码方式,主存按字节编址,机器字长为8位。CPU中有4个通用寄存器(记为R0~R3)可被指令使用,CPU处理的定31 点数长度只有8位这一种,CPU取指令时每取出一个字节自动完成PC←(PC)+1。指令系统的部分指令格式如图4.20所示。请按指令格式要求编写求Y=A[19]+…+A[0]的程序,其中A、Y分别为主存中数组和变量。解:假设A的地址为10H、Y的地址为24H,则程序如下图所示:地址程序对应的C语言程序00H000000**BYTER0=0;01H0000000002H000001**BYTER1=14H;//2003H0001010004H000010**BYTER2=23H;//&A[19]05H0010001106H000011**BYTER3=24H;//&Y07H00100100do08H01010010{R0=R0+*R2;09H011110**R2--;0AH011101**R1--;0BH1000****}while(R1≠0);0CH000010000DH00111100*R3=R0;……10H**//A[0]……23H**//A[19]24H**//Y12.试简单比较CISC机及RISC机的优缺点。答:程序执行时间TCPU=IN×CPI×TC,CISC机侧重增强指令功能,减少程序中指令数IN以提高性能,而RISC机侧重简化指令功能、提高指令执行速度CPI以提高性能。CISC机采用变长指令字结构,因而指令系统的可扩展性及兼容性较好;由于支持较多种寻址方式,大多数指令支持存储器操作数,因而程序的代码效率较高,只需设置少量寄存器,但指令执行时间较长,编译程序的设计相对复杂;由于指令系统较为复杂,因而指令的执行控制复杂,不利于使用VLSI技术。RISC机采用定长指令字结构,因而指令中操作数较多,有利于扩充指令功能,但指令系统的可扩展性及兼容性较差;由于支持的寻址方式种类较少,除LOAD/STORE指令外,其余指令的操作数均为寄存器类型,因而指令格式规整,指令译码及执行速度很快,但需要设置大量通用寄存器,又导致编译程序简单;由于指令系统简单,指令的执行控制简单,有利于使用VLSI技术,有利于提高主频。32 第5章1.解释概念或术语:ALU、CU、BIU、MAR、MDR、指令周期、CPU周期、微操作、微操作步、数据通路、机器周期、节拍周期、节拍脉冲、微命令、微指令、微程序、CM、毫微程序、动态微程序、并行性、线性流水线、动态流水线、超级流水线、超标量流水线、吞吐率、加速比、效率、结构相关、数据相关、控制相关、RAW相关。答:略2.CPU有哪些功能?说明实现这些功能各需要哪些部件,并画出CPU基本结构图。答:CPU的基本功能有指令控制、操作控制、时间控制、数据加工和中断处理5大功能,除数据加工外,其余功能均由控制器实现。指令控制功能的实现,需要程序计数器PC、指令寄存器IR、及指令译码器ID支持;操作控制和时间控制功能的实现,需要时序系统、微操作控制信号形成部件支持;数据加工功能的实现,需要算术逻辑运算部件ALU、状态寄存器、及数据寄存器支持;中断处理功能的实现,需要中断处理机构的支持。CPU基本结构图如下图所示:REG0MAR总线AB……CPUBIUCBMDR逻辑DBREG(n-1)内部CU时序系统数PC据中断ReqALU通IRID操作控制信机构Ack路号形成电路状态REG……CPU3.CPU内部有哪些基本操作?这些基本操作各包含哪些微操作?答:CPU内部的基本操作有寄存器间数据传送、存储器读、存储器写、算逻运算4种。(1)寄存器间数据传送为原子操作,微操作序列为:R源→R目标。(2)存储器读的微操作序列为:①1→Read;②M(MAR)→MDR。(3)存储器写的微操作序列为:①1→Write;②MDR→M(MAR)。(4)算逻运算的微操作序列为:①R源1→ALU;②R源2→ALU;③OP→ALU;④ALU→R结果。4.若将图5.8中12H主存单元的内容改为01010011B,写出该指令执行过程的微操作序列。解:执行12H主存单元中指令的微操作序列为①PC→MAR②1→Read,(PC)+1→PC;1→Read包含(MAR)→AB、Read→CB操作③M(MAR)→MDR④MDR→IR;ID译码后发现指令操作为R0←(R0)+[(R3)]⑤R3→MAR⑥1→Read⑦M(MAR)→MDR⑧MDR→ALU33 ⑨R0→ALU,ADD→ALU⑩ALU→R05.CPU结构如图5.60所示,a~d为4个寄存器,主存储器MM各部分之间的连线为数据通路,箭头表示信息传送方向。a(1)说明图中a~d这4个寄存器的名称。(2)简述从开始取指令到产生控制信号的数据cbAC流动的过程。d微操作解:(1)a为存储器数据寄存器(MDR),b为指令ALU信号形寄存器(IR),c为存储器地址寄存器(MAR),d为程序+“1”成部件状态REG计数器(PC)。图5.60基于累加器CPU例(2)①PC→MAR;②MAR→MM,Read→MM,(PC)+1→PC;③MM→MDR;④MDR→IR;⑤IR→微操作信号形成部件。6.为什么说数据通路会影响指令执行的性能?单总线数据通路对基于寄存器的CPU中运算器的组织有何要求?为什么?基本算逻运算的微操作步序列是什么?答:由于数据通路的个数决定了每个微操作步中传送操作微操作的最大数量,而具体指令执行过程中的数据传送微操作的数量是固定的,因此,数据通路会影响指令执行过程的微操作步序列的步数;又由于指令执行时间=∑微操作步执行时间,因此数据通路会影响了指令执行的性能。单总线数据通路要求运算器的2个入端、1个出端不同时使用总线通路,即要求运算器设置一个入端暂存器(常记为Y)、一个出端寄存器(常记为Z),或两个入端暂存器。这是因为ALU是组合逻辑部件,只能加工数据、不能存储数据。基本算逻运算的微操作步序列为:①R源1→Y②R源2→ALU,OP→ALU,ALU→Z7.单总线数据通路的CPU结构如图5.11(b)所示,PC具有计数功能。写出下列指令的微操作步序列。(1)单字长指令[(R2)]←(R1)+(R0),目标数操作为寄存器间接寻址;(2)单字长指令R1←(R1)+[(R0)+DISP],DISP为变址寻址的偏移量;(3)双字长指令R1←(R1)+[(R0)+DISP];(4)单字长指令[(R1)+DISP]←[(R1)+DISP]+(R0)。解:取指令的微操作步序列为t1:PC→MAR,1→Readt2:(PC)+1→PC,M(MAR)→MDRt3:MDR→IR(1)单字长指令[(R2)]←(R1)+(R0)的微操作步序列为t1~t3:同取指令微操作步序列t4:R0→Yt5:R1→ALU,ADD→ALU,ALU→Zt6:R2→MAR,1→Write34 t7:Z→MDR,MDR→M(MAR)t8:1→End(2)单字长指令R1←(R1)+[(R0)+DISP]的微操作步序列为t1~t3:同取指令微操作步序列t4:R0→Yt5:IR(DISP)→ALU,ADD→ALU,ALU→Zt6:Z→MAR,1→Readt7:R1→Y,M(MAR)→MDRt8:MDR→ALU,ADD→ALU,ALU→Zt9:Z→R1,1→End(3)双字长指令R1←(R1)+[(R0)+DISP]的微操作步序列为t1~t3:同取指令微操作步序列t4:PC→MAR,1→Readt5:(PC)+1→PC,M(MAR)→MDRt6:MDR→Y;设指令第二字内容为DISPt7:R0→ALU,ADD→ALU,ALU→Zt8:Z→MAR,1→Readt9:R1→Y,M(MAR)→MDRt10:MDR→ALU,ADD→ALU,ALU→Zt11:Z→R1,1→End(4)单字长指令[(R1)+DISP]←[(R1)+DISP]+(R0)的微操作步序列为t1~t3:同取指令微操作步序列t4:R1→Yt5:IR(DISP)→ALU,ADD→ALU,ALU→Zt6:Z→R2,Z→MAR,1→Read;设用R2暂存目标操作数地址t7:R0→Y,M(MAR)→MDRt8:MDR→ALU,ADD→ALU,ALU→Zt9:R2→MAR,1→Writet10:Z→MDR,MDR→M(MAR)t11:1→End8.单总线数据通路的CPU结构如图5.11(b)所示,PC具有计数功能,CPU中还设置有堆栈指针寄存器SP(图中未标出)。过程调用指令CALL[(RO)]为寄存器间接寻址的单字长指令,约定(RO)为所调用过程的入口地址、过程返回地址保存到主存堆栈中,堆栈栈顶由SP指向;返回指令RET为无显式操作数的单字长指令,返回地址存放在SP指向的主存堆栈顶部。请写出这两条指令的微操作步序列。解:CALL[(RO)]指令的微操作步序列为t1:PC→MAR,1→Readt2:(PC)+1→PC,M(MAR)→MDRt3:MDR→IR;ID译码后发现为CALL指令t4:(SP)-1→SP;假设存储字长=机器字长,否则为“-x”;假设入栈操作时SP向递减方向移动t5:SP→MAR,1→Writet6:PC→MDR,MDR→M(MAR);(PC)已进行过“+1”,为下条指令地址t7:R0→PC,1→End35 RET指令的微操作步序列为t1:PC→MAR,1→Readt2:(PC)+1→PC,M(MAR)→MDRt3:MDR→IR;ID译码后发现为RET指令t4:SP→MAR,1→Readt5:(SP)+1→SP,M(MAR)→MDRt6:MDR→PC,1→End9.某双总线CPU结构如图5.61所示,ALU有F=A+B及F=A两个功能,指令系统如图5.5所示,请写出指令系统中MOV、ST、ADD及JNZ指令的微操作步序列。…AREG0REG1REG2REG3FALU状态信号形成MARMDRYIRPCREGB指令译码图5.61双总线CPU结构例解:(1)MOV指令的微操作步序列为t1:PC→MAR,1→Readt2:(PC)+1→PC,M(MAR)→MDRt3:MDR→IR立即寻址方式时t4:PC→MAR,1→Readt5:(PC)+1→PC,M(MAR)→MDRt6:MDR→RD,1→End寄存器寻址方式时t4:RS→ALU,(F=A)→ALU,ALU→RD,1→End(2)ST指令的微操作步序列为t1~t3:同MOV指令取指令微操作步序列t4:RD→MAR,1→Writet5:RS→MDR,MDR→M(MAR)t6:1→End(3)ADD指令的微操作步序列为t1~t3:同MOV指令取指令微操作步序列寄存器寻址方式时t4:RD→Yt5:RS→ALU,(F=A+B)→ALU,ALU→RD,1→End寄存器间接寻址方式时t4:RS→MAR,1→Readt5:RD→Y,M(MAR)→MDRt6:MDR→ALU,(F=A+B)→ALU,ALU→RD,1→End(4)JNZ指令的微操作步序列为t1~t3:同MOV指令取指令微操作步序列Z≠0(即运算结果为零)时36 t4:1→EndZ=0(即运算结果不为零)时t4:PC→Yt5:IR(DISP)→ALU,(F=A+B)→ALU,ALU→PC,1→End10.联合控制方式实现同步控制与异步控制间转换的思路是什么?需要哪些微操作控制或状态信号?实现相互转换的原理是什么?答:实现思路是延长节拍周期,即节拍周期长度为异步方式长度对应的节拍周期数。通常需要1个微操作控制信号表示是否已转入异步控制方式,需要1个状态信号表示异步控制方式是否已结束。以访存操作为例,分别为WMFC和MFC。实现原理是异步控制方式时封锁节拍周期信号发生器的CP,即CP=CLK&CTL、CTL=WMFC+WMFC&MFC。即同步方式时(WMFC=0),信号发生器CP=CLK;转入异步方式时(存储器使MFC=0、控制器使WMFC=1),信号发生器CP=0被封锁;异步方式结束时(存储器使MFC=1、控制器使WMFC=1),信号发生器CP=CLK封锁被解除,恢复到同步方式(下个节拍周期使WMFC=0)。11.某CPU主频为200MHz,每个机器周期平均包含4个节拍周期,每个指令周期平均包含3个机器周期(其中有2个机器周期需要访存)。(1)若每次访存时,机器周期中不需要插入等待周期,求该机的平均指令周期。(2)若每次访存时,机器周期中需要插入2个等待周期,求该机的平均指令周期。6解:由于CPU主频为200MHz,故节拍周期=时钟周期=1/(200×10)=5ns。(1)机器周期=4*5ns=20ns,平均指令周期=3*20ns=60ns。(2)访存的机器周期=(4+2)*5ns=30ns,不访存的机器周期=20ns,平均指令周期=2*30ns+1*20ns=80ns。12.若CPU结构如图5.11(b)所示,分别写出4种CPU基本操作的微操作命令序列。解:假设CPU内部与外部采用联合控制方式,微操作控制信号为WMFC;(1)寄存器间数据传送(Rx→Ry)的微操作命令序列为:Rxout、Ryin;(2)存储器读的微操作命令序列为:①Read,②WMFC;(3)存储器写的微操作命令序列为:①Write,②WMFC;(4)算逻运算(R1+R2)的微操作命令序列为:①R1out、Yin,②R2out、ADD、Zin。13.写出题7的微操作步序列对应的微操作命令序列。解:取指令的微操作命令序列为t1:PCout、MARin,Readt2:PC+1,WMFCt3:MDRout、IRin(1)单字长指令[(R2)]←(R1)+(R0)的微操作命令序列为t1~t3:同取指令微操作命令序列t4:R0out、Yint5:R1out、ADD、Zint6:R2out、MARin,Writet7:Zout、MDRin,WMFCt8:End(2)单字长指令R1←(R1)+[(R0)+DISP]的微操作命令序列为t1~t3:同取指令微操作命令序列37 t4:R0out、Yint5:SEout、ADD、Zint6:Zout、MARin,Readt7:R1out、Yin,WMFCt8:MDRout、ADD、Zint9:Zout、R1in,End(3)双字长指令R1←(R1)+[(R0)+DISP]的微操作命令序列为t1~t3:同取指令微操作命令序列t4:PCout、MARin,Readt5:PC+1,WMFCt6:MDRout、Yint7:R0out、ADD、Zint8:Zout、MARin,Readt9:R1out、Yin,WMFCt10:MDRout、ADD、Zint11:Zout、R1in,End(4)单字长指令[(R1)+DISP]←[(R1)+DISP]+(R0)的微操作命令序列为t1~t3:同取指令微操作命令序列t4:R1out、Yint5:SEout、ADD、Zint6:Zout、R2in、MARin,Readt7:R0out、Yin,WMFCt8:MDRout、ADD、Zint9:R2out、MARin,Writet10:Zout、MDRin,WMFCt11:End14.写出题8的微操作步序列对应的微操作命令序列。解:CALL[(RO)]指令的微操作命令序列为t1:PCout、MARin,Readt2:PC+1,WMFCt3:MDRout、IRint4:SP-1t5:SPout、MARin,Writet6:PCout、MDRin,WMFCt7:R0out、PCin,EndRET指令的微操作命令序列为t1~t3:同取指令微操作命令序列t4:SPout、MARin,Readt5:SP+1,WMFCt6:MDRout、PCin,End15.某单总线通路的、基于累加器的CPU如图5.62所示,控制器采用硬布线控制方式,CPU工作流程暂不考虑中断与DMA处理,若信号时序采用联合控制方式,同步控制方式的时序中暂不考虑节拍脉冲。该CPU的指令系统由5条单字长指令组成。请设计组合逻辑控制器38 的微操作控制信号形成电路。PCMAR总线指令功能指令格式PC+1MDR逻辑CLA:AC←0000AYADD:AC←(AC)+[A]001AIRSERWLDA:AC←[A]010AALUADDSTA:[A]←(AC)011ACLAID时序系统JNZ:转移时PC←A100AEndACWMFC中微操作断…机信号形成构图5.62CPU结构及指令系统例解:该控制器的微操作控制信号形成电路设计的过程如下:第一步,列出所有的微操作命令序列。由于不考虑中断及DMA处理,5条指令格式共有6个微操作命令序列,其中取指周期的微操作命令序列是通用的。取指令阶段的微操作命令序列如下:t1:PCout、MARin,Readt2:PC+1,WMFCt3:MDRout、IRinCLA指令执行阶段的微操作命令序列如下:t4:CLA,EndADD指令执行阶段的微操作命令序列如下:t4:SEout、MARin,Readt5:Yin,WMFCt6:MDRout、ADD、ACALUin,EndLDA指令执行阶段的微操作命令序列如下:t4:SEout、MARin,Readt5:WMFCt6:MDRout、ACin,EndSTA指令执行阶段的微操作命令序列如下:t4:SEout、MARin,Writet5:ACout、MDRin,WMFCt6:EndJNZ指令执行阶段的微操作命令序列如下:Z=0时Z≠0时t4:SEout、PCin,Endt4:End第二步,确定时序系统相关参数。由上述微操作命令序列可以看出,序列的每一行为一个节拍周期,执行阶段的节拍周期数有3个和1个两种。因题目无要求,时序系统的参数确定为:指令周期由取指(IF)、执行(EX)2个机器周期组成,每个机器周期由3个节拍周期组成。第三步,形成所有微操作命令的使用时间表及有效逻辑表达式。首先微调微操作命令序列,将CLA、JNZ指令中的End放在t6步,其余不变。同时用机器周期IF/DF/EX和节拍周期T0/T1/T2代替序列中的t1、t2、…。39 满足指令系统需求的所有微操作命令的信号-时序二维表如下,其中IF的T0/T1/T2等价于t1、t2、t3,EX的T0/T1/T2等价于t4、t5、t6,“|”表示“逻辑或”。IFEXT0T1T2T0T1T2PCoutALLPCinJNZ(Z)PC+1ALLIRinALLSEoutADD|LDA|STA|JNZ(Z)CLACLAACoutSTAACinLDAACALUinADDYinADDADDADDMARinALLADD|LDA|STAMDRoutALLADD|LDAMDRinSTAReadALLADD|LDAWriteSTAWMFCALLADD|LDA|STAEndALL根据上表,所有微操作命令的有效逻辑表达式如下:PCout=IF&T0PCin=JNZ&Z&EX&T0…SEout=(ADD+LDA+STA+JNZ&Z)&EX&T0…MARin=IF&T0+(ADD+LDA+STA)&EX&T0…End=EX&T2第四步,画出微操作控制信号形成电路及与相关部件的连接图。可以简单地用18个组合逻辑电路实现上表中18个微操作命令的有效逻辑达式。至此,微操作控制信号形成电路的所有微操作控制信号已经形成。微操作控制信号形成电路与相关部件的连接如下图所示:IROPA状态REGIDIFMFC时EX形成微操作命令……制操序T0信作的组合逻辑电路系T1号控统T2EndWMFC40 16.简述微程序控制的基本思想。相对于组合逻辑控制器,微程序控制器的微操作控制信号形成电路由哪些基本部件组成?答:微程序控制的基本思想是:将CPU工作流程对应的每个微操作命令序列编写成微程序(微程序由若干微指令组成、每条微指令对应一个或几个微操作命令),所有的微程序存放一个只读存储器中;控制器自动按照微程序的逻辑顺序,逐条取出微指令并执行,以实现CPU工作流程的控制。微程序控制器的微操作控制信号形成电路由微程序存储部件(CM)及微指令部件(μAR、μIR、微操作控制电路、微地址形成电路)组成。具体结构如下图所示:机器状态IR状态寄存器……微地址形成电路时序系地址…μAR控制存储器CM统译码μIR操作控制字段顺序控制字段微操作控制信号形成电路操作控制译码电路…………所有的微操作控制信号17.假设某机器有45种机器指令平均由6条微指令组成,其余30种机器指令平均由10条微指令组成,其中有3条取指微指令是所有指令公用的。已知微指令长度为64位,请估算控制存储器的最小容量及微指令地址位数。解:所有机器指令的微指令条数共有:45×(6-3)+30×(10-3)+3=348条;控制存储器的最小容量为:348×64bit=348×64/8=2784B;由于256<348<512,故微指令地址位数为log2512=9位。18.简述水平型微指令格式和垂直型微指令格式的特点。答:水平型微指令格式能够同时定义并执行多个微命令(≤全部微命令数),微指令的微操作能力强、灵活性强、效率高,机器指令执行速度快,代码效率较低(少数有效);垂直型微指令格式能够同时定义并执行一个或几个微命令(有限几个),微指令格式由微操作码及微地址码组成,代码效率高,但微指令的微操作能力、灵活性、效率均较弱。19.某微程序控制器中,CM容量为512×40位,微指令采用水平型格式,顺序控制字段采用下址法+测试网络法(断定法),测试网络有2种外部测试条件。(1)请设计该微程序控制器的微指令格式。(2)该微程序控制器中最少有多少个微命令。解:CM的地址为log2512=9位;(1)微指令格式顺序控制字段中,寻址方式位为log2(1+2)=2位,下址为9位,则顺序控制字段为2+9=11位,操作控制字段为40-11=29位,顺序控制字段及微指令格式如下图所示:顺序控制字段操作控制字段顺序控制字段下址法:方式位00下址(29b)(11b)测试网络法1:方式位01地址高位测试条件字段1…字段m方式位形成信息测试网络法2:方式位10地址高位测试条件41 29(2)该微程序控制器中最少有29个微命令,最多有2个微命令。20.某微程序控制器中,微指令采用水平型格式、长度为26位,操作控制字段采用字段直接编码法,共5组,每组共有5个、8个、15个、27个、3个微命令;顺序控制字段采用下址法+测试网络法(断定法),测试网络有2种外部测试条件。(1)请设计该微程序控制器的微指令格式。(2)控制存储器CM的容量最大应为多少?解:(1)操作控制字段中,由于每组分别有5个、8个、15个、27个、3个微命令,而每组需各留出一种编码表示微命令全部无效,故每组字段编码位数分别为3位、4位、4位、5位、2位。顺序控制字段中,由于微指令地址有3种形成方法,故寻址方式为log2(1+2)=2位,顺序控制字段总长为26-3-4-4-5-2=8位。该微程序控制器的微指令格式为:操作控制顺序控制3位4位4位5位2位2位6位字段1字段2字段3字段4字段5方式位地址高位测试条件(2)由于顺序控制字段总长为8位,其中方式位为2位,则下址法中的微指令地址长6度为8-2=6位,即CM地址为6位,CM容量最大应为2×26bit=208B。21.将指令执行过程分为取指IF、译码ID、取数OF、执行EX、写结果WB共5个阶段,各阶段的操作时长分别为10ns、5ns、10ns、8ns、10ns。若将这5个阶段组织成线性流水线,则(1)流水线的拍长应为多少?(2)采用串行方式执行10000条指令时,共需要多少时间?(3)若用流水方式执行同样数量指令,流水线的吞吐率、加速比、效率各是多少?解:(1)流水线拍长=max{10ns,5ns,10ns,8ns,10ns}=10ns;(2)若采用串行方式,每条指令执行时间为10ns+5ns+10ns+8ns+10ns=43ns,执行10000条指令共需要10000×43ns=0.43ms;(3)T流水=5Δt+(10000-1)Δt=10004×10ns,8吞吐率Tp=10000/T流水=10000/(10004×10ns)≈10,加速比S=T串行/T流水=0.43ms/(10004×10ns)≈4.3,效率E=(10000×5×10ns)/[5×(10004×10ns)]≈1。22.简述解决流水线结构相关中访存冲突的方法。解:指令流水线通常包含有取指(IF)、译码(ID)、取操作数(OF)、执行(EX)、写结果(WB)这几个段,解决访存冲突实际上是解决IF、OF及WB段的冲突。通常有4种方法,其中第4种方法是必须的,其余的都可以不采用。⑴增设一个存储器,两个存储器分别存放指令和数据。如现代计算机中L1级Cache采用哈佛结构,大大降低了IF段与OF/WB段的访存冲突概率。⑵增设数据存储缓冲器(记为MOB),暂存WB段需写数据,在OF段不访存时再写回存储器。大大降低了OF段与WB段的访存冲突概率(MOB满时才可能产生冲突)。⑶增设指令预取缓冲器,采用指令预取技术。由于指令缓冲器有空闲位置时就预取,降低了指令存储器(如L1$)访问通用存储器(如MEM)的访存优先级。⑷各个冲突段串行访问存储器,彻底解决访存冲突,通常使IF段的访存优先级低于OF/WB段。42 三总线L2Cache内部通路OFWBWBOF总后线端定转浮寄存储顺序L1D-Cache主EX点ALU移JEU点FPU存缓冲器BIU前端器MOBL1I-Cache总线存组……IDIF信号形成译码器IR指令预取缓冲器823.若将例5.9的计算要求改为(ab),请计算实现该运算时流水线的吞吐率、iii1加速比和效率。解:适合流水线的解题算法是先计算所有ai+bi、再用折叠法实现累乘求积。由于是静态流水线,功能切换时必须先排空流水线。流水线完成题目要求的时-空图如下图所示:a1+b1…a8+b8段S61…8㈠…㈣㈤㈥㈦S51…8S4㈠…㈣㈤㈥㈦S3㈠…㈣㈤㈥㈦S2㈠…㈣㈤㈥㈦S11…8㈠…㈣㈤㈥㈦拍181114192428a1a8a1+b1a7+b7b1b8a2+b2a8+b8算法共需15条指令,流水方式运算时间T流水=28Δt,串行方式运算时间T串行=8×3Δt+7×5Δt=59Δt;吞吐率Tp=15/(28Δt);加速比Sp=T串行/T流水=(59Δt)/(28Δt)=2;效率E=(59Δt)/(6×28Δt)=1/3。24.某5段线性、动态流水线如图5.63所示,转移型指令在EX段形成转移目标地址、在WB段写入PC。数据相关采用重定向法,控制相关可以采用冻结法+重定向法、或者静态分支预测法。采用静态分支预测法处理时,总是预测转移不发生,预测错误时回头准备工作在WB段完成。分别计算当流水线的控制相关处理采用冻结法+重定向法和静态分支预测法时,下列程序段的执行时间。R0←0相关专用通路R2←1MUXMUXIFIDOFEXWBR3←100PCLOOP1:R1←(R2)*(R2)控制器(微操作控制信号形成电路)R0←(R0)+(R1)图5.63流水线例R2←(R2)+1R3←(R3)-1JNZLOOP1;状态寄存器(Z)=0时(即前驱算术运算结果不位零)转移R0←(R0)/100解:上述程序中,由于指令R1←(R2)*(R2)与拍12345678指令R0←(R0)+(R1)存在RAW相关,采用重定向法I1IFIDOFEXWB解决时流水线将停顿1拍,如右图所示:I2IFIDOFEXWB43 (1)控制相关处理采用冻结法+重定向法解决时,JNZ指令导致流水线停顿3拍:拍指令123456I1:JNZLOOP1IFIDOFEXWBIx:???IFID上述程序执行时流水线时-空图如下:段8拍WBI1I2I3I4I5I6I7I8I4I5I6I7I8…I9EXI1I2I3I4I5I6I7I8I4I5I6I7I8…I9OFI1I2I3I4I5I6I7I8I4I5I6I7I8…I9IDI1I2I3I4I5I6I7I8I4I5I6I7I8…I9IFI1I2I3I4I5I6I7I8I4I5I6I7I8…I9拍12345678912则程序执行时间为5Δt+(3-1)Δt+8Δt×100+Δt=808Δt;(2)控制相关处理采用静态分支预测法解决时,由于总是预测转移不发生,对JNZ指令预测错误导致流水线停顿4拍:拍指令123456I8:JNZLOOP1IFIDOFEXWBI9:???IFIDOFIFIFIDIF上述程序执行时流水线时-空图如下:段9拍6拍WBI1I2I3I4I5I6I7I8I4…I4I5I6I7I8I9EXI1I2I3I4I5I6I7I8I4…I4I5I6I7I8I9OFI1I2I3I4I5I6I7I8I4…I4I5I6I7I8I9IDI1I2I3I4I5I6I7I8I4…I4I5I6I7I8I9IFI1I2I3I4I5I6I7I8I4…I4I5I6I7I8I9拍12345678913则程序执行时间为5Δt+(3-1)Δt+9Δt×99+6Δt+Δt=900Δt。44 第6章1.解释概念或术语:总线、系统总线、通信总线、总线宽度、总线带宽、总线周期、总线传输周期、地址期、数据期、主设备、从设备、总线仲裁、总线复用、总线桥。答:略。2.为什么现代计算机中广泛采用总线结构实现部件互连?答:计算机中功能部件的连接方式有分散连接和总线连接两种,前者的优点是多对部件可同时通信、通信性能好,缺点是可扩展性差;后者的优点是可扩展性好,缺点多对部件间只能分时通信。随着计算机应用领域的不断扩大,I/O设备的种类和数量也越来越多,可扩展性成为计算机系统必备的特性,而总线连接的缺点又可以通过相关技术得以缓解,因此现代计算机中广泛采用总线结构实现部件互连。3.总线有哪些特点?分别包含哪些内容?答:(1)总线的特性有物理特性、功能特性、电气特性、时间特性4个方面。(2)物理特性又称机械特性,指总线上部件在物理连接时的一些特性;功能特性指每根信号线在总县操作过程中的功能;电气特性指每根信号线上的信号方向及表示信号有效的电平范围;时间特性又称逻辑特性,指在总线操作过程中所有信号线上信号的时序关系约定。4.某32位宽度的同步总线中,总线时钟频率为66MHz,若每个总线传输周期需要4个时钟周期,请计算该总线带宽。若想提高总线带宽,可采取哪些措施?解:(1)由于每次总线传输都需要4个时钟周期,故总线传输次数/秒=66MHz/4=16.5MHz,总线带宽=32bit×16.5MHz=528Mb/s=66MB/s;(2)增加同步总线的数据宽度,提高总线时钟的频率,采用猝发传输模式等都可以提高总线带宽。5.某总线时钟频率为33.3MHz,支持猝发传输模式,连续传输的速度是每个时钟一个数据,若总线的数据传输率为532.8MB/s,寻址空间为4G个地址,问该总线的地址总线和数据总线宽度各为多少?解:由于该总线支持猝发传输模式,故最大总线传输次数/秒=33.3MHz/1=33.3MHz;设总线的数据总线宽度为DN,则532.8MB/s=DN×33.3MHz,DN=16B=128bit;30地址总线宽度为log2(4G)=log2(4×2)=32bit。故该总线的地址总线和数据总线宽度各为32位和128位。6.一个总线周期包含哪些阶段?各阶段主要完成的工作是什么?答:一个总线周期包含总线申请及仲裁、寻址、数据传送和结束4个阶段。总线申请及仲裁阶段:总线仲裁机构根据主设备的总线请求信号,按照一定算法,决定将下个传输周期的总线使用权授予哪个申请者;寻址阶段:获得总线使用权的主设备发出本次访问的目标设备地址和命令,从设备根据总线上的地址及命令,主动判别自身是否为目标设备,被选中时响应总线传输操作;数据传送阶段:根据主设备发出的操作命令,主设备和从设备进行数据交换,数据由源设备发出,经总数据总线流入目标设备;结束阶段:数据传输结束时,主设备、从设备均从总线上撤除自己所发出的信号,让出总线使用权,本次总线传输周期结束。45 7.为什么要进行总线仲裁?链式查询方式仲裁时,各主设备的仲裁逻辑是什么、有什么特点?计数器定时查询方式仲裁时,查询为什么要定时进行?如何实现循环优先级仲裁?答:(1)由于总线是多个部件共用的传输介质,故同时只允许一个部件发送信息;为解决多个主设备同时竞争总线控制权的问题,必须要进行总线仲裁,用某种方式选择某个主设备为下个总县传输周期的总线使用权拥有者。(2)链式查询方式仲裁时,各主设备的仲裁逻辑是BSi=BGiIN&BRi、BGiOUT=BGiIN&BRi,即该设备被询问、且有总线请求时获得下个总线传输周期的总线使用权;链式查询方式仲裁采用的是静态优先级策略,所需仲裁信号线最少,可扩展性强,但对电路故障很敏感,容易产生断链现象。(3)计数器定时查询方式仲裁时,没有请求的主设备不会产生任何响应信息,因此必须询问必须定时切换,以保证轮询工作方式的有效进行;每次仲裁时,若均从0开始计数,则实现的是静态优先级仲裁策略;若均从上次仲裁结束时的计数值继续开始计数,则实现的是循环优先级仲裁策略。8.图6.4~图6.6中,总线仲裁机构是否可不连接控制总线?为什么?答:链式查询方式、计数器定时查询方式的总线仲裁机构可以不连接控制总线,因为这两种方式通过信号线BS表示仲裁何时结束,连接控制总线只是可以实现隐藏式仲裁,但要求各信号功能及时序必须有所改变;而独立请求方式的总线仲裁机构必须连接控制总线,因为这种方式没有BS信号线,只能通过总线状态得知何时开始与结束仲裁,由于仲裁时长固定,故常采用隐藏式仲裁方式。9.画出独立请求式仲裁时,BR0→BR7降序的优先级形成电路图。答:BR0→BR7优先级降序可用优先编码器实现,输出为当前最高优先级对应请求;再用译码器输出仲裁结果即可:I0BR0Y0优先…BG0Y1编码器…Y274LS148I7BR7BG7CY0BA译码器…74LS138G1G2AG2BY710.某64位总线支持猝发传输模式,每个时钟周期都能传输数据或地址,总线传输周期由3个时钟的地址期、若干个数据期组成。若存储器数据传输速度为每两个时钟周期才传输64位数据,每次访存最多传输4次数据。请计算下列两种应用情况下,总线和存储器所能提供的最大带宽各是多少?(1)每次总线操作只传输32位数据。(2)每次总线操作都传输包含4个数据期的数据块。解:设总线始终频率为f,(1)对总线而言,每个总线传输周期由3个CLK(地址期)及1个CLK(数据期)组成,总线最大带宽为32bit×(f/4)=8f(bps),对存储器而言,每个总线传输周期由3个CLK(地址期)及2个CLK(数据期)组成,46 存储器的最大带宽为32bit×(f/5)=6.4f(bps);(2)对总线而言,每个总线传输周期由3个CLK(地址期)及4个CLK(数据期)组成,总线最大带宽为(64bit×4)×(f/7)=36.57f(bps),对存储器而言,每个总线传输周期由3个CLK(地址期)及8个CLK(数据期)组成,存储器的最大带宽为(64bit×4)×(f/11)=23.28f(bps)。11.异步通信协议有哪几个阶段?简述异步通信时各阶段的具体操作。答:(1)异步协议包括请求、响应、撤消请求、撤消响应4个阶段。(2)请求阶段:主设备在有传输需求、从设备就绪时,发出操作请求信号REQ;响应阶段:从设备收到请求信号后进行相应操作,操作完成时发出应答信号ACK;地址线地址③撤消请求阶段:主设备收到应答信号后接收操作读命令RD①④结果,然后撤消操作请求信号;应答ACK②撤消响应阶段:从设备收到请求信号撤消后也撤数据线数据消应答信号,一次异步通信结束。12.在起止式异步串行通信协议中,若信息格式为1个起始位、7个数据位、1个停止位,约定波特率为3600bps,请问每秒最多能传输多少个字符?解:由题意,传送一个字符需要1+7+1=9位,故每秒最多能传输的字符数为3600/(1+7+1)=400个。13.若起止式异步串行通信协议的信息格式为1个起始位、7个数据位、1个偶检验位、1个停止位,若连续发送字符15H及37H,请画出数据信号线D上的传送波形图。解:15H的偶校验位为0+0+1+0+1+0+1=1,37H的偶校验位为0+1+1+0+1+1+1=1;根据信息格式约定,每个字符需要1+7+1+1=10位,字符数据中低位先传送,D上信号时序如下图所示:起校停起校停始D验止始验止0D1D2D3D4D5D6D0D1D2D3D4D5D6位位位位位位10101001110110字符15H字符37H14.采用不互锁方式进行异步通信时,若并行传送方式的数据宽度为16位,传送的频率不固定,可以省略请求信号线吗?请说明理由。答:不可以省略请求信号线。由于异步不互锁方式通过口头约定实现操作时长估计、通过请求信号表示有无操作。理论上讲,请求信号与数据信号可分时用一根信号线上表示,但性能会成倍下降。当采用串行传送方式通信时,若多个数据位捆绑传送,请求信号与数据信号分时表示带来的性能损失很小,可以省略请求信号线;若单个数据位单独传送,请求信号与数据信号分时表示带来的成倍性能损失,导致不可以省略请求信号线;而采用并行传送方式通信时,通常每根数据线每次传送一个数据位,更不可能省略请求信号线了。15.为什么说半同步定时方式同时具备了同步定时和异步定时的优点?答:半同步定时方式在同步定时方式的基础上,增设了一条等待(WAIT)信号线。当WAIT信号无效时,主从设备以同步定时方式工作,所有信号在CLK的边沿发出,保持了同步方式双方配合简单、传输频率高的优点;当WAIT信号有效时,主从设备以异47 步定时方式工作,从设备完成操作时撤消WAIT,主设备在CLK边沿转入同步方式,保持了异步方式设备速度可相差较大的特点。因此,半同步定时方式同时具备了同步定时和异步定时的优点。由于以同步定时方式为基础,故异步定时方式的传输距离可较长的特点无法体现出来。16.PCI总线的信号线中,PCI总线采用的总线仲裁方式是什么?从设备比主设备少了哪两根信号线?PCI总线有哪些特点?答:PCI总线具有集中式的总线仲裁机构,采用的是独立请求总线仲裁方式。由于PCI总线采用独立请求仲裁方式,故从设备比主设备少了总线请求、总线允许两根信号线。PCI总线的特点较多,主要有独立于处理器、支持多主设备、功能较强(操作类型多/即插即用)、性能较高(猝发传输/半同步方式)等特点。17.简述单总线和多总线结构的特点。说明在总线桥中集成I/O接口等部件有什么好处?答:(1)单总线结构的特点是控制简单、可扩展性强,但系统工作效率较低,总线易成为计算机系统的瓶颈。在多总线结构中,不同速度的设备连接在不同的总线上,各总线通过总线桥芯片进行连接,其特点是在不影响可扩展性的同时,可提高总线传输性能,如不同总线速度不同、多条总线可以同时传输。(2)总线上部件必须按照总线标准进行传输,而在总线桥中集成I/O接口等部件,有三个好处:一是可减少总线长度;二是这些部件间传输可不受总线标准约束,提高传输性能;三是这些部件间传输可不使用总线,减少总线使用率。48 第7章1.解释概念或术语:数据传输率、NRZ、RAID、I/O接口、I/O端口、中断、I/O中断、中断请求、中断响应、中断服务、中断返回、向量中断、中断向量表、中断判优、中断嵌套、中断屏蔽、DMA、周期窃取、DMA预处理、DMA后处理、通道。答:略。2.现代计算机中,为什么I/O设备通常通过总线与主机连接?答:随着计算机应用的普及,现代计算机中I/O设备种类越来越多、速度大不相同,并且要求计算机可随时可接入这些设备。由于总线连接方式具有可扩展性好、能够实现操作标准化等优点,可以满足相关应用需求,故I/O设备通常通过总线与主机连接。3.简述I/O设备有哪两种编址方式?它们对指令系统及总线信号线有哪些影响?答:I/O设备有统一编址和独立编址两种编址方式。统一编址方式时存储器和I/O设备地址不重叠,只通过地址即可区分这两种部件,故指令系统无需任何变化,总线信号也不受任何影响(只需MEMR#、MEMW#两根控制线),只是系统可扩展性不够好、指令格式较长;独立编址方式的存储器和I/O设备地址重叠,只通过地址无法区分这两种部件,故指令系统需增设两条I/O指令,总线信号相应地也需增设IOR#、IOW#两根控制线。4.I/O设备与主机交换信息时,共有哪几种控制方式?简述其特点。答:I/O设备与主机交换信息时,共有程序查询、程序中断、DMA、通道等4种方式。程序查询方式中,CPU不停地查询I/O设备状态,只有在设备就绪时才进行信息传送,其特点是I/O设备及主机组成简单,但CPU工作效率较低(CPU与外设串行工作);程序中断方式中,CPU启动I/O设备后,继续执行现行程序,I/O设备就绪后提出请求时,才响应请求进行信息传送,其特点是CPU工作效率较高(CPU与外设部分并行工作),但I/O设备及CPU需增设与中断相关软硬件;DMA方式中,I/O设备直接与存储器进行信息传送,传送无需CPU干预、只需CPU让出总线使用权,CPU仅负责传送准备及结束处理工作,其特点是CPU工作效率在程序中断方式基础上有进一步提高,但I/O设备硬件组成更复杂、CPU需增设DMA请求/响应机制。通道方式中,CPU仅负责将传送需求编制成通道程序,其余工作基本全部由通道独立完成,其特点是CPU工作效率在DMA方式基础上有进一步提高,但需增设通道处理器。从上述传送控制方式可见,系统性能提高是以增加硬件成本为代价的,但性能/价格有明显上升。5.对某I/O设备,简述其驱动器、控制器及适配器的功能与组成。答:I/O设备通常由设备部件及设备控制器组成,设备部件由机、电、光、磁等器件组成,以实现设备的约定功能。设备驱动器是一种设备部件,对某些需多个设备部件组合来实现功能的I/O设备,其中的一些设备部件常称为设备驱动器,如磁盘存储器的设备部件由磁盘和磁盘驱动器组成,驱动器负责实现电信号与机械、光、磁等信号的转换,由机械、光、磁、电等器件组成。设备控制器负责外部的设备操作命令(数字信号)与内部的设备部件控制信号或驱动信号的转换,设备控制器由各种信号及时序转换电路组成。设备适配器又称为I/O接口,主要实现标准化的总线操作信号与非标准化的I/O设备操49 作命令间的转换,由设备选择电路、锁存器或寄存器、控制逻辑电路、信号转换逻辑电路等组成。6.某图形显示器最大分辨率为1280×1024,最大灰度级为32位时,为充分发挥显示器性能,显示卡中VRAM的容量应为多少?解:欲充分发挥显示器性能,显示卡中VRAM至少应能存储最大分辨率的各像素点信息。因此,显示卡中VRAM容量至少应为:1280×1024×32bit=5120KB。7.图7.19中打印机与打印机接口所采用的是哪种联络方式?设置了响应信号后再设置忙信号的好处是什么?答:采用的是异步联络方式,通过“选通”、“响应”信号实现异步操作的握手时序。异步联络方式中,对设备的各种操作均是串行的,为提高设备性能,某些操作是可以重叠进行的,如打印当前字符与接收下个字符数据可以重叠。而当前时刻重叠操作能否进行,需要通过状态信号表示。打印机中设置“忙”信号,可以使字符打印与字符数据接收重叠进行,隐藏了字符数据接收的延迟,提高了打印机工作效率。8.画出RZ、NRZ、NRZ1、PM、FM写入数字串1011001的写电流波形图。解:几种编码方式的写电流波形图如下图所示,NRZ及NRZ1编码方式写第一个“1”时的写电流与前一位有关,暂定为如此:T数据序列1011001RZNRZNRZ1PMFM9.某磁盘组有6个盘片,最外两侧盘面为保护面、不记录信息。盘片存储区域内径为22cm,外径为33cm,磁道间距最小为0.25cm,磁道位密度为1600b/cm。(1)此磁盘组的存储容量是多少?(2)当磁盘转速为5400r/min,且同时仅一个磁头工作时,数据传输率是多少?解:(1)每个盘面磁道数=(33-22)÷2÷0.25=22个,每个磁道信息量=2×3.14×11×1600=110528bit=13816B,磁盘组存储容量=(6×2-2)×22×13816=3039520B;(2)数据传输率=记录密度×盘面转速=13816×(5400÷60)=1243440B/s。10.简述I/O接口的基本功能及接口硬件的基本组成,分析两者间关系。答:I/O接口的基本功能主要有设备寻址功能、数据缓冲功能、操作中转功能、信号转换功能及设备状态监视功能。I/O接口硬件主要由设备选择电路、寄存器、控制逻辑电路、信号转换逻辑电路等组成。I/O接口硬件中,设备选择电路主要实现设备寻址功能;寄存器主要实现数据、所接收操作、所监视设备状态的暂存功能;控制逻辑电路主要实现操作中转功能,同时负责其它功能的时序控制;信号转换逻辑电路主要实现信号转换功能。由此可见,I/O接口的各项功能由I/O接口硬件中相应组成部分实现,其中控制逻辑电路是核心,负责各组成部分的控制与协调。50 11.若I/O接口连接在系统总线上,对I/O接口操作的控制总线信号为IOR#和IOW#,某I/O接口数据口、状态口的I/O端口地址分别是0020H、0021H,假设指令执行过程的访存操作均不产生使用系统总线(即均在Cache中命中),请画出采用程序查询方式向该I/O接口写数据0001H时,总线(AB、CB、DB)上的信号及时序。解:程序查询方式中,CPU不停地查询设备状态、测试并比较设备状态,直到设备就绪时才向I/O接口写数据。读设备状态指令所用I/O端口地址为0021H,比较指令不使用总线、总线空闲(IOR#、IOW#均无效),写数据指令所用I/O端口地址为0020H。假设状态口最高位为1时表示设备就绪,则程序查询方式向该I/O接口写数据0001H时总线上的信号及时序如下图:CPU程序IN指令(读状态)比较指令…IN指令(读状态)比较指令OUT指令(写数据)AB0021H…0021H0020HIOR#…IOW#…DB0000H…8000H0001H12.在程序(指令串)执行过程中,I/O中断请求什么时候可能产生?为什么说I/O中断请求是可屏蔽中断请求?如何表示当前是否处于屏蔽I/O中断请求状态?何时响应I/O中断请求,硬件实现成本最低?答:I/O设备请求数据传送的中断称为I/O中断。I/O设备准备就绪即可产生中断,相对于CPU的程序执行,I/O中断请求在任何时候均可能产生,因为两个部件独立工作。可屏蔽中断请求只可稍后处理的中断请求,由于I/O中断请求稍后处理不会影响正确性,如键被按下、移动鼠标等,因此I/O请求属于可屏蔽中断请求。为表示当前是否处于屏蔽I/O中断请求状态,通常在CPU中设置一个称为“中断允许”的标志位(记为IF),用IF=0和IF=1分别表示当前是屏蔽还是允许I/O中断请求。由于CPU的工作流程是循环地取出并执行指令,而指令执行过程内部通常前后关联、不易分割,因此,I/O中断请求(可屏蔽请求)放在两轮循环之间,即两条指令执行过程之间处理时硬件实现成本最低。13.对于向量中断,简述中断响应的功能及各个阶段的具体任务。并说明I/O中断请求被响应的条件。答:中断响应指CPU从当前程序转入中断服务程序的过程,主要包括识别中断源、保存现场、获得中断服务程序入口地址、转入中断服务阶段4项工作。识别中断源的任务是从当前所有中断请求中选择一个最紧急的中断请求,并取得所选中断请求对应中断源的中断向量地址;保存现场的任务是保存程序返回点硬件现场,通过关中断(即IF←0)可实现默认的单重中断方式;获得中断服务程序入口的任务是用所选中断源的中断向量地址查中断向量表IVT,得到所选中断请求对应的中断服务程序入口地址(中断向量);转入中断服务阶段的任务最简单,只需将所获得的中断服务程序入口地址置入PC即可。CPU按(PC)执行指令即进入了中断处理阶段。I/O中断请求被响应的条件:中断请求信号有效、无DMA请求或更紧急的中断请求、“中断允许”位IF=1、当前指令结束(End信号有效)时。14.为什么中断返回用机器指令表示?通常中断返回点如何获得?若不采用上述方法,有哪些麻烦?答:由于中断服务的具体功能通过中断服务程序实现,而中断服务程序何时结束只能在51 程序中通过中断返回指令表明,因此中断返回用机器指令表示。现代计算机系统中,为减小中断的实现复杂度,中断返回后总是执行一条新指令,即中断返回点是中断返回处的指令地址。由于中断请求类型决定了中断返回时的指令地址(当前指令/下条指令地址),因此,中断响应时保存硬件现场通常保存中断返回点、而非中断断点。若中断响应时保存的不是中断返回点,则中断返回时需根据断点及中断源类型来计算中断返回点,一是需额外保存中断源类型、增加了硬件成本,二是返回时再计算、降低了返回性能。15.某系统采用中断方式对设备进行数据采样,中断处理时读取数据,并存至主存缓冲区中,该中断处理需要2ms。此外,缓冲区中每存储1000个数据,主程序就要将其取出并处理,这个处理时间需50ms。试问该系统每秒可以采样多少个数据?解:采样并处理1000个数据总时间为:1000×2+50=2050ms=2.05s,系统每秒采样数据个数=1000/2.05=487.8个/秒。16.某计算机的主频为50MHz,与某个数据宽度为32位、数据传输率为32Kbps的设备进行数据I/O时,程序查询方式的一次查询操作需200个时钟周期,一次数据传送操作需100个时钟周期,程序中断方式的一次中断处理需500个时钟周期。(1)若程序查询方式中,CPU每查询10次就可以传送一次数据,此时I/O占CPU时间的百分比是多少?(2)程序中断方式中,I/O占CPU时间的百分比又是多少?解:该设备每秒最多可进行数据I/O的次数为32Kbps/32bit=1000次/秒,6-6(1)每次I/O所占CPU时间为(200×10+100)/(50×10)=42×10s,-6程序查询方式中,I/O占CPU时间的百分比为[1000×(42×10)]/1=4.2%;6-6(2)每次I/O所占CPU时间为500/(50×10)=10×10s,-6程序中断方式中,I/O占CPU时间的百分比为[1000×(10×10)]/1=1.0%。17.在数据传送过程中,I/O接口应何时产生中断请求?如何使接口既支持中断方式、又支持程序查询方式工作?如何实现中断响应时撤销中断请求?答:若I/O接口用状态口中RD位表示I/O设备状态,用触发器INTR表示中断请求状态,(1)I/O接口应在I/O设备准备就绪(或传送完成)时提出中断请求,即RD←1时、INTR←1,即RD从0→1时、INTR从0→1;(2)应在I/O接口的控制口中增设“允许中断”位(EI),EI=1时表示当前采用的是中断方式,EI=0时表示当前采用的是程序查询方式;(3)I/O接口的中断响应(记为INTA)信号有效时,撤消中断请求(CPU准备处理该I/O接口的中断请求),即INTA←0(即1→0)时,INTR←0(即1→0),由于此时RD=1,故INTR用触发器实现,产生中断请求时S引脚0→1,撤消中断请求时R引脚0→1。18.相对于串行判优,并行判优有哪些优缺点?为了扬长避短,实际应用中的I/O中断请求的常用连接及判优方法是什么?答:串行判优的优点是可扩展性好,缺点是响应速度慢、优先级不可改变、存在断链问题、中断向量地址需各I/O接口预先约定好;并行判优不需要I/O接口参与,优点是响应速度快、优先级可变、不存在断链现象、中断向量地址统一形成等,缺点是可扩展性不好。为解决可扩展性问题,通常采用串行判优与并行判优相结合方式,即I/O请求采用独立请求方式连接到中断控制器,实现并行判优;中断控制器采用共享连接方式连接到CPU,实现串行判优;通常中断控制器还支持级联方式进一步提高可扩展性。19.什么是多重中断?如何表示当前是否是多重中断?实现多重中断的基本条件有哪52 些?答:多重中断指中断过程中可以响应新的I/O中断请求,暂停执行现行中断程序、转去执行新中断程序的中断方式,又称中断嵌套。由于I/O中断请求属可屏蔽中断请求,通常用IF位表示当前是否处于屏蔽I/O中断请求状态,不屏蔽时才可能实现多重中断方式效果,故通常用IF表示当前是单重/多重中断。实现多重中断的基本条件有:中断判优逻辑中须设置正在服务请求、尚未服务请求的请求寄存器、排队器(编码器)、比较器,以及实现I/O指令复位某中断请求功能的硬件;CPU的中断响应机构中需用后援寄存器堆栈代替后援寄存器保存多的中断现场。20.DMA方式有何特点?由谁实现传送过程控制?需要哪些条件?答:DMA方式的主要特点有:传送过程不占用CPU时间,可按总线周期速度传送,采用批量传送方式。传送过程由DMA接口控制,DMA接口是一种功能更强的I/O接口。DMA方式需两方面的支持:一是需在主存中开辟好缓冲区,以支持批量传送;二是传送时需CPU让出存储器总线控制权,现代计算机的层次结构存储系统提供了较好的支持。21.当DMA接口分别采用暂停CPU访问方式与周期挪用方式传送时,请说明DMA接口在申请总线控制权方面有何不同。答:DMA接口采用暂停CPU访问方式工作时,开始传送时,DMA接口向CPU提出总线使用请求,DMA接口获得总线使用权后,在所有数据全部传送结束前,均不放弃总线使用权(CPU无法访问总线),故称为暂停CPU访问方式。DMA接口采用周期挪用方式工作时,每当I/O设备准备就绪(准备传送单个数据)时,DMA接口才向CPU提出总线使用请求,DMA接口获得总线使用权后控制传送,然后立即向CPU交回总线使用权,I/O设备准备就绪时再申请,故称为(总线)周期挪用方式。在申请总线控制权方面的主要不同点在于一次申请还是多次申请,周期挪用方式对CPU的影响较小,CPU效率得到了较好的发挥。22.请说明DMA接口为了实现其控制的批量传送,硬件电路中应具有哪些部件?答:DMA接口电路中应具有主存地址计数器(MAC)、传送字数计数器(WC),以支持一个字/次的批量数据传送;应具有传送完毕(WC←0)的中断请求逻辑,请求CPU进行后续处理。23.结合DMA接口电路,简述DMA方式传送过程中各个阶段的具体工作。答:DMA方式传送过程包括预处理、数据传送及后处理三个阶段。预处理阶段,CPU向DMA接口写入本次的传输参数,并启动I/O设备,然后继续执行现行程序。传输参数包括主存缓冲区首址、传送字数、传送方向及传送方式等参数(与I/O设备无关),启动I/O设备指设置操作参数(与I/O设备有关)。数据传送阶段,DMA接口按照传送方式规则、使用循环方式、组织与控制数据传送(一个字/次)。以周期窃取方式的DMA读为例:①I/O设备就绪时,数据以送至数据缓冲寄存器(BR)中,DMA接口向CPU提出总线使用请求(HRQ);②CPU在当前访存周期结束时,将总线使用权授予给DMA接口(HLDA);③DMA接口通过总线实现主存-I/O设备的数据传送操作,即AB←(MAC)、CB←MEMW、DB←(BR);④DMA接口实现循环,即MAC←(MAC)+1、WC←(WC)-1,若WC≠0,撤销HRQ(交回总线使用权)、等待I/O设备就绪(即转①),若WC=0,产生EOP(计数器溢出)、向CPU提出中断请求(传送已结束)。后处理阶段,CPU响应DMA接口的中断请求,完成传送结束处理工作,如数据校验、启动下次DMA传送等。24.比较程序中断方式与DMA方式的区别。53 答:DMA方式与程序中断方式主要有如下区别:①DMA方式的传送控制由DMA接口用硬件实现、CPU每干预一次传送一批数据,中断方式由CPU用程序实现、CPU每干预一次传送一个字;②DMA方式的数据传送需CPU暂停访问主存、无其它开销,中断方式需CPU暂停现行程序、有中断响应开销;③DMA方式的最大传送速度为一个字/存储周期,中断方式为一个字/指令周期;④DMA方式的DMA请求优先级高于中断方式的中断请求,CPU在当前存取周期结束时响应DMA请求,CPU在一条指令完成时响应中断请求;⑤DMA方式无传送异常处理能力,中断方式可以处理传送异常(中断程序实现)。25.某CPU的主频为500MHz、CPI等于5,假设某外设数据传输率为0.5MB/s,采用中断方式进行数据传送,以4B长度为传送单位,对应的中断程序共18条指令,中断处理的其它开销相当于2条指令时间。(1)中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比?(2)若外设数据传输率提高到5MB/s,改用DMA方式传送,每次DMA传送的块大小为5000B,DMA预处理及后处理共需500个时钟周期,假设CPU与DMA接口间无访存冲突,则CPU用于该外设I/O的时间百分比?6-6解:(1)CPU每次中断开销=(18+2)×5TC=100TC=100/(500×10)=0.2×10s,-6外设的中断请求频率=0.5MB/s÷4B=125000Hz,中断请求间隔=1/125000=8×10s,-6-6I/O时间占CPU时间百分比=(0.2×10)÷(8×10)=2.5%。6-6(2)CPU每次DMA处理开销=500TC=500/(500×10)=1×10s,-3外设的DMA请求频率=5MB/s÷5000B=1000Hz,DMA请求间隔=1/1000=1×10s,-6-3I/O时间占CPU时间百分比=(1×10)÷(1×10)=0.1%。54'