计算机组成原理课后习题解答 下载本文

《计算机组成原理》习题解答

第1章

1.解释概念或术语:实际机器、虚拟机器,机器指令、机器指令格式,主机、CPU、主存、I/O、PC、IR、ALU、CU、AC、MAR、MDR,机器字长、存储字长、指令字长、CPI、TC、主频、响应时间、吞吐量、MIPS、MFLOPS。

答:略 2.如何理解计算机系统的层次结构?说明高级语言、汇编语言及机器语言的差别与联系。 答:(1)计算机系统是由软件和硬件结合而成的整体。为了提高计算机系统的好用性,程序设计语言的描述问题能力越来越强,各种程序设计语言大体上是一种层次结构,即高等级编程语言指令包含低等级编程语言指令的全部功能。

对于使用不同层次编程语言的程序员来说,他们所看到的同一计算机系统的属性是不同的,这些属性反映了同一计算机系统的不同层次的特征,即同一计算机系统可划分成多个层次结构,不同层次的结构反映的计算机系统的特征不同而已。

(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号存储单元中,则程序清单如下:

主存单元地址 (二进制) ? 0000001000 ? 0000100000 0000100001 0000100010 ? 1000000000 1000000001 1000000010 1000000011 1000000100 000001 000011 000011 000010 000100 指令(二进制) 操作码 ? s ? a b c ? 0000100000 0000100001 0000100010 0000001000 ********** 地址码 结果数据s 原始数据a 原始数据b 原始数据c 取数a到累加器AC中 (AC)+b,结果存于AC中 (AC)+c,结果存于AC中 将AC中内容存到s所在主存单元中 停机,地址码空闲(值可任意) 注释 7.画出基于累加器CPU的主机框图,说明题6的机器语言程序的执行过程(尽可能详细)。简述执行过程与冯·诺依曼模型的存储程序原理的关系。

答:基于累加器CPU的的主机框图如下:

2

运算器 ALU AC 控制器 时序部件 控制信号形成部件 ID IR 主存储器 … +“1” PC 地址译码器 存储 阵列 … I/O电路 I/O 设备 …… MDR MAR CPU Addr Data I/O接口 系统总线 Cmd

假设s=a+b+c程序已被调入主存、首指令地址已写入到PC中,即(PC)=1000000000。

程序运行启动后,计算机硬件自动地、逐条地、按(PC)为指令地址实现取指令、分析指令、执行指令的对应操作,直到执行到停机指令为止。假设IR中操作码记为OP(IR)、地址码记为AD(IR),则s=a+b+c程序执行过程的具体操作如下:

(1)PC→MAR、MAR→ABus、Read→CBus (2)WMFC,(PC)+1→PC (3)MDR→IR

ID对OP(IR)译码 (5)WMFC (6)MDR→AC

;AC=MDR=a,执行指令完成

;MAR=PC=1000000001,取指令开始 ;PC=1000000010(下条指令地址) ;IR=000011 0000100001,取指令完成 ;CU得知当前为加法指令

(7)PC→MAR、MAR→ABus、Read→CBus (8)WMFC,(PC)+1→PC (9)MDR→IR

ID对OP(IR)译码 (11)WMFC

(12)(MDR)+(AC)→AC (14)WMFC,(PC)+1→PC (15)MDR→IR

ID对OP(IR)译码 (17)WMFC

(18)(MDR)+(AC)→AC (20)WMFC,(PC)+1→PC (21)MDR→IR

;AC=a+b+c,执行指令完成 ;MAR=PC=1000000011,取指令开始 ;PC=1000000100(下条指令地址) ;IR=000010 0000001000,取指令完成 ;CU得知当前为存数指令

;MDR=AC=a+b+c,执行指令完成 ;MAR=PC=1000000100,取指令开始 ;PC=1000000101(下条指令地址) ;IR=000100 **********,取指令完成 ;CU得知当前为停机指令 ;执行停机指令完成

(19)PC→MAR、MAR→ABus、Read→CBus

;AC=a+b,执行指令完成

;MAR=PC=1000000010,取指令开始 ;PC=1000000011(下条指令地址) ;IR=000011 0000100010,取指令完成 ;CU得知当前为加法指令

(13)PC→MAR、MAR→ABus、Read→CBus

;MAR=PC=1000000000,取指令开始 ;PC=1000000001(下条指令地址) ;IR=000001 0000100000,取指令完成 ;CU得知当前为取数指令

;MAR=0000100000,执行指令开始

(4)AD(IR)→MAR、MAR→ABus、Read→Cbus

(10)AD(IR)→MAR、MAR→ABus、Read→CBus ;MAR=0000100001,执行指令开始

(16)AD(IR)→MAR、MAR→ABus、Read→CBus ;MAR=0000100010,执行指令开始

ID对OP(IR)译码 (23)AC→MDR、MDR→DBus、WMFC (25)WMFC,(PC)+1→PC (26)MDR→IR

ID对OP(IR)译码 (27)机器自动停机

(22)AD(IR)→MAR、MAR→ABus、Write→Cbus ;MAR=0000100000,执行指令开始 (24)PC→MAR、MAR→ABus、Read→Cbus

从程序执行过程可以看出:由于指令存放在存储器中,故指令执行过程分为取指令(含分析指令)、执行指令两个阶段;由于存储器同时只接收一个访问操作,故程序执行过程是

3

循环的指令执行过程,循环变量为PC中的指令地址;只要按照程序逻辑顺序改变(PC),可以实现按程序逻辑顺序执行程序的目标。

8.指令和数据均存放在存储器中,计算机如何区分它们?

答:由于存储器访问只使用地址和命令(Read/Write)信号,而指令和数据均以二进制编码形成存放在存储器中,因此,从存储器取得的信息本身是无法区分是指令还是数据的。

计算机只能通过信息的用途来区分,即取指令时取得的是指令,指令执行时取操作数或写结果对应的信息是数据。即计算机通过程序执行过程或指令执行过程的不同阶段来区分。 9.在某CPU主频为400MHz的计算机上执行程序A,程序A中指令类型、执行数量及平均时钟周期数如下表所示。

指令类型 整数 数据传送 浮点数 条件转移 指令执行数量 45000 75000 8000 1500 平均时钟周期数(/指令) 1 2 4 2 求该计算机执行程序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)8421BCD

3. 对下列十进制数,分别写出机器数长度为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位校验码中的信息排列:m8 m7m6m5p4m4m3m2p3m1p2p1。 (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,分别写出它们采用原码编码、补码编码及移

码编码时的十进制整数的真值,并写出它们表示为无符号数时的十进制真值。

解:机器码 9BH FFH

原码编码的真值(整数) -27 -127 补码编码的真值(整数) -101 -1 移码编码的真值(整数) +27 +127 无符号编码的真值(整数) 155 255 14. 若浮点数表示格式(从高位到低位)为:阶码6位(含1位阶符)、尾数10位(含1位数符),请写出51/128、-27/1024、7.375、-86.5所对应的机器数。

(1)阶码和尾数均为原码; (2)阶码和尾数均为补码; (3)阶码为移码、尾数为补码。 解:(1)阶码和尾数均为原码时,

[51/128]浮=[0.0110011]浮=100001 0110011000或000000 0011001100或?,

[-27/1024]浮=[-0.0000011011]浮=100101 1110110000或100001 1000011011或?, [7.375]浮=[111.011]浮=000011 0111011000或000110 0000111011或?, [-86.5]浮=[-1010110.1]浮=000111 1101011010或001000 1010101101或?; (2)阶码和尾数均为补码时,

[51/128]浮=111111 0110011000或000000 0011001100或?, [-27/1024]浮=111011 1001010000或111111 1111100101或?, [7.375]浮=000011 0111011000或000110 0000111011或?, [-86.5]浮=000111 1010100110或001000 1101010011或?; (3)阶码为移码、尾数为补码时,

[51/128]浮=011111 0110011000或100000 0011001100或?, [-27/1024]浮=011011 1001010000或011111 1111100101或?, [7.375]浮=100011 0111011000或100110 0000111011或?, [-86.5]浮=100111 1010100110或101000 1101010011或?。 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)阶码和尾数均为原码时,规格化数的机器码为100001 0110011000,

阶码和尾数均为补码时,规格化数的机器码为111111 0110011000; (2)阶码和尾数均为原码时,规格化数的机器码为100001 1110011000,

阶码和尾数均为补码时,规格化数的机器码为111111 1001101000; (3)阶码和尾数均为原码时,规格化数的机器码为100101 1100000000,

阶码和尾数均为补码时,规格化数的机器码为111010 1000000000。 17. 若机器中单精度浮点数采用IEEE 754标准表示。

(1)对机器码为(99D00000)16及(59800000)16的浮点数,请写出它们的真值; (2)请写出-51/128的机器码。 解:(1)由于机器码(99D00000)16=1 00110011 10100000000000000000000B,

故浮点数的符号码S=1、阶码E=00110011、尾数码M=10100000000000000000000, 因1<E<255,故机器码表示的为规格化浮点数,

151-127-76

(99D00000)16的真值N=(-1)×2×1.10100000000000000000000=-0.1101×2; 由于机器码(59800000)16=0 10110011 00000000000000000000000B,

故浮点数的符号码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的单精度浮点数机器码为 1 01111101 10011000000000000000000。 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位 0.0001101 √ 1.0001101 √ 1.1110100 √ 1.1100110 ∠ 1.1010111 √ 1.1100111 ∠ 算术右移2位 0.0000110 ∠ 1.0000110 ∠ 1.1111010 √ 1.1110011 ∠ 1.1101011 √ 1.1110011 ∠ [X]原=0.0011010 0.0110100 √ 0.1101000 √ [X]原=1.0011010 1.0110100 √ 1.1101000 √ [X]补=1.1101000 1.1010000 √ 1.0100000 √ [X]补=1.1001101 1.0011010 √ 1.0110100 × [X]反=1.0101111 1.1011111 × 1.0111111 × [X]反=1.1001110 1.0011101 √ 1.0111011 × 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*2n1+12[X]补=xS*2n1+12[X]补;

当X<0时,xS=1,X=[X]补-2n=1xn-1?x0-2n1-2n1=-2n1+xn-1?x0,

则[12X]补=2n+(-2n1+xn-1?x0)/2

=2n1+2n1+(-2n1+xn-1?x0)/2=2n1+(2n1+xn-1?x0)/2

---

=2n1+1xn-1?x0/2=2n1+12[X]补=xS*2n1+12[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]补=1 0101001、[-B]补=1 1110011,

[A-B]补=[A]补+[-B]补=1 0101001+1 1110011=1 0011100, 则A-B=-100;

(4)因A=+1110011、B=-0011000,则[A]补=0 1110011,[B]补=1 1101000,

[A+B]补=[A]补+[B]补=0 1110011+1 1101000=0 1011011, 则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

循环次数 6 5 4 3 2 1 0 部分积高位 0.000000 + 0.000000 0.000000 0.000000 + 0.110111 0.110111 0.011011 + 0.110111 1.010010 0.101001 + 0.110111 1.100000 0.110000 + 0.000000 0.110000 0.011000 + 0.110111 1.001111 0.100111 乘数 (及部分积低位) 1 0 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 说明 初始部分积P0=0.000000 乘数最低位为0,应+0 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移1位 乘数最低位为0,应+0 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移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次判断-加法-移位操作,其过程如下表所示:

循环次数 6 5 4 3 2 1 0 部分积高位 000000 + 010011 0 010011 001001 + 010011 0 011100 001110 + 000000 0 001110 000111 + 000000 0 000111 000011 + 000000 0 000011 000001 + 010011 0 010100 001010 乘数 (及部分积低位) 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 说明 初始部分积P0=000000 乘数最低位为1,应+|A| 6位加法,0为加法器的进位 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移1位 乘数最低位为0,应+0 部分积及乘数同时右移1位 乘数最低位为0,应+0 部分积及乘数同时右移1位 乘数最低位为0,应+0 部分积及乘数同时右移1位 乘数最低位为1,应+|A| 部分积及乘数同时右移1位 即|A|×|B|=001010011001,故[A×B]原=0 001010011001。

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次进行判断-加法操作,运算过程如下表所示:

循环次数 4 3 2 1 0 部分积高位 000.000000 +000.110110 000.110110 000.001101 +000.011011 000.101000 000.001010 +000.110110 001.000000 000.010000 +000.000000 000.010000 乘数 (及部分积低位) 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 T 0 0 0 0 说明 初始部分积P0=000、T=0 b1b0T=100,应+[2|A|]补、T←0 算术右移2位(最高符号位为真符号位) b1b0T=010,应+[|A|]补、T←0 算术右移2位 b1b0T=100,应+[2|A|]补、T←0 算术右移2位 b1b0T=000,应+0 不移位,乘积数值部分为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次不移位)。运算过程如下表所示:

循环 7 6 5 4 3 2 1 部分积 乘数 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 附加位 0 0 1 1 0 1 0 操作说明 初始[P0]补=0,b-n=0 b-n-1b-n=00,部分积+0 部分积和乘数同时算术右移1位 b-n-1b-n=10,部分积+[-A]补 部分积和乘数同时算术右移1位 b-n-1b-n=11,部分积+0 部分积和乘数同时算术右移1位 b-n-1b-n=01,部分积+[A]补 部分积和乘数同时算术右移1位 b-n-1b-n=10,部分积+[-A]补 部分积和乘数同时算术右移1位 b-n-1b-n=01,部分积+[A]补 部分积和乘数同时算术右移1位 b-n-1b-n=10,部分积+[-A]补 最后一次不右移 0.000000 +0.000000 0.000000 0.000000 +1.001001 1.001001 1.100100 +0.000000 1.100100 1.110010 +0.110111 0.101001 0.010100 +1.001001 1.011101 1.101110 +0.110111 0.100101 0.010010 +1.001001 1.011011 0 1.011011

故[A×B]补=1.011011111010。

(2)由题意[A]补=0010011,[B]补=0100011,[-A]补=1101101,

共循环7次, 进行判断-加法-移位操作(最后1次不移位)。运算过程如下表所示:

12

循环 7 6 5 4 3 2 1 0 部分积 0000000 +1101101 1101101 1110110 +0000000 1110110 1111011 +0010011 0001110 0000111 +0000000 0000111 0000011 +0000000 0000011 0000001 +1101101 1101110 1110111 +0010011 0001010 0001010 乘数 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 附加位 0 1 1 0 0 0 1 操作说明 初始[P0]补=0,b-n=0 b-n-1b-n=10,部分积+[-A]补 部分积和乘数同时算术右移1位 b-n-1b-n=11,部分积+0 部分积和乘数同时算术右移1位 b-n-1b-n=01,部分积+[A]补 部分积和乘数同时算术右移1位 b-n-1b-n=00,部分积+0 部分积和乘数同时算术右移1位 b-n-1b-n=00,部分积+0 部分积和乘数同时算术右移1位 b-n-1b-n=10,部分积+[-A]补 部分积和乘数同时算术右移1位 b-n-1b-n=01,部分积+[A]补 最后一次不右移 故[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 * * * * * * * +1.010110 1.111101 0. 1.111010 0. +0.101010 0.100100 0.1 1.001000 0.1 +1.010110 0.011110 0.1 1 0.111100 0.1 1 +1.010110 0.010010 0.1 1 1 0.100100 0.1 1 1 +1.010110 1.111010 0.1 1 1 0 1.110100 0.1 1 1 0 +0.101010 0.011110 0.1 1 1 0 1 0.111100 0.1 1 1 0 1 +1.010110 0.010010 0.1 1 1 0 1 1 说明 被除数=[|A|]补,商=任意值 减去除数,+[-|B|]补 余数为负,除法不溢出,上商为0 余数与部分商同时逻辑左移1位 因q0=0(即余数为负):加上除数,+[|B|]补 余数为正,上商为1 余数与部分商同时逻辑左移1位 因q1=1(即余数为正):减去除数,+[-|B|]补 余数为正,上商为1 余数与部分商同时逻辑左移1位 因q2=1(即余数为正):减去除数,+[-|B|]补 余数为正,上商为1 余数与部分商同时逻辑左移1位 因q3=1(即余数为正):减去除数,+[-|B|]补 余数为负,上商为0 余数与部分商同时逻辑左移1位 因q4=0 (即余数为负):加上除数,+[|B|]补 余数为正,上商为1 余数与部分商同时逻辑左移1位 因q5=1 (即余数为负):减去除数,+[-|B|]补 余数为正,上商为1, 因q6=1,余数不用修正 13

所以|商|=0.q1 q2 q3 q4 q5 q6=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-1 求商及余数符号 SQ←REGAn ?-1REGBn-1, SR← REGAn-1 变为绝对值 REGAn-1←0,REGBn-1←0 REGA←(REGA)+[-(REGB)]补 N Y 判溢出

REGAn-1=1? OVR←1 N Y REGAn-1=0? REGA、REGQ同时REGA、REGQ同时 逻辑左移1位 逻辑左移1位 REGA←(REGA)+(REGB) REGA←(REGA)+[-(REGB)]补 相除

REGQ0←(REGAn-1)取反 CNT←(CNT)-1 N CNT=0? Y N REGQ0=1? 余数修正

Y REGA←(REGA)+(REGB) 置商及余数符号 REGQn-1←SQ,REGAn-1←SR 结束

31. 若A=-0.10101,B=0.11011,请用不恢复余数法补码除法求A÷B。 解:由题意[A]补=1.01011,[B]补=0.11011,[-B]补=1.00101, 不恢复余数补码除法过程如下表所示:

14

被除数(余数) 1.01011 +0.11011 0.00110 0.01100 +1.00101 1.10001 1.00010 +0.11011 1.11101 1.11010 +0.11011 0.10101 1.01010 +1.00101 0.01111 0.11110 +1.00101 0.00011 +1.00101 1.01000 商[Q]反 * * * * * * [A]补与[B]补异号 求[R0’]补时+[B]补 说明 1. [R0’]补与[B]补同号,不溢出、q0←1 1. 1.0 1.0 1.0 0 1.0 0 1.0 0 1 1.0 0 1 1.0 0 1 1 1.0 0 1 1 1.0 0 1 1 1 余数与部分商同时左移1位 求新余数时+[-B]补 [R1’]补与[B]补异号,q1←0 余数与部分商同时左移1位 求新余数时+[B]补 [R2’]补与[B]补异号,q2←0 余数与部分商同时左移1位 求新余数时+[B]补 [R3’]补与[B]补同号,q3←1 余数与部分商同时左移1位 求新余数时+[-B]补 [R4’]补与[B]补同号,q4←1 余数与部分商同时左移1位 求新余数时+[-B]补 [R5’]补与[B]补同号,q5←1 q0=1、q5=1,即不够减,修正余数+[-B]补 所以,[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]浮=1101 0101100,[B]浮=1110 1100100,

①对阶,[Δ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]浮=11110 1111101000

③规格化,尾数不溢出、(补码)符号位与最高数值位相同,左规3次后,

得[A+B]浮=11011 1101000000

④尾数舍入,警戒位为00,选择“舍”(即“不舍不入”),

即[A+B]浮=11011 11010000

⑤溢出判断,阶码符号为11,A+B结果不溢出。

-101

故[A+B]浮=1011 1010000,A+B=2×(-0.110000)。 (2)由题意[A]浮=0101 1011011,[B]浮=0100 1110001,

①对阶,[Δ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]浮=00101 1101001110

③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,

即[A+B]浮=00101 1101001110

15

④尾数舍入,由于尾数为负、警戒位为10,选择“舍”,

即[A+B]浮=00101 11010011

⑤溢出判断,阶码符号为00,A+B结果不溢出。

+101

故[A+B]浮=0101 1010011,A+B=2×(-0.101101)。

33. 若浮点数表示格式为:5位阶码(含1位阶符)、8位尾数(含1位数符),阶码用移码表示、尾数用补码表示,浮点运算时采用双符号位运算、警戒位为3位、采用舍入法,请用浮点运算方法计算下列各题,并写出运算结果的机器码。

(1)[2×1116]+[2×(-916)];

15

13

(2)[2×1316]+[2×(-58)] 解:(1)由题意[A]浮=11111 01011000,[B]浮=11101 10111000, ①对阶,[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]浮=111111 001000110000

③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,

即[A+B]浮=111111 001000110000

④尾数舍入,由于警戒位为000,选择“舍”(即“不舍不入”),

即[A+B]浮=111111 001000110

⑤溢出判断,阶码符号位为11,A+B结果不溢出。 故[A+B]浮=11111 01000110。

(2)由题意[A]浮=00011 01101000,[B]浮=00010 10110000,

①对阶,[Δ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]浮=000011 001000000000

③规格化,尾数不溢出、(补码)符号位与最高数值位不同,尾数无需规格化,

即[A+B]浮=000011 001000000000

④尾数舍入,由于警戒位为000,选择“舍”(即“不舍不入”),

即[A+B]浮=000011 001000000

⑤溢出判断,阶码符号位为00,A+B结果不溢出。 故[A+B]浮=00011 01000000。

-13

-14

34. 若浮点数表示格式为:6位阶码(含1位阶符)、10位尾数(含1位数符),阶码用原码表示、尾数用补码表示,浮点乘法结果保留1倍长度,请用浮点乘法求[2×101128]×[2

-13

-4

×(-135256)]。

解:由题意,[A]浮=101101 0110010100,[B]浮=100100 1011110010,

①阶码运算,[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]浮=110001 1100101010111101000

16

③规格化,因符号位与最高数值位相同,需左规格化,左规1次后,

即[A×B]浮=110010 1001010101111010000

④舍入处理,由于尾数保留1倍长度,需进行舍入处理,

因尾数为负,按负数补码的舍入规则,选择“入”,

-18

即[A×B]浮=110010 1001010110,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-1

C1=G1+P1C0=G1+P1G0+P1P0C-1

C2=G2+P2C1=G2+P2G1+P2P1G0+P2P1P0C-1

C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C-1 若C3=G+PC-1,则G=G3+P3G2+P3P2G1+P3P2P1G0,

P=P3P2P1P0

新改进的先行进位电路的C2~C0、G及P的逻辑如下图所示:

C2 C1 C0 G P

1 1 1 1 1

?1 ?1 ?1 ?1 & & & & & & & & & & & & & & C-1

G3 P3 G2 P2 G1 P1 G0 P0

36. 试用74181、图2.22的先行进位电路及题35的先行进位电路构建一个64位并行ALU,画出各部件或电路间的连接图。

解:题35改进的先行进位电路与74182芯片完全相同,本题记为74182。 64位并行ALU可由4个16位先行进位加法器、采用先行进位逻辑电路连接而成,而16位先行进位加法器可由4个74181、1个74182连接而成。

(1)16位先行进位加法器的逻辑如下图所示:

16位先行进位加法器

C2 C1 C0 G P

74182

G3P3 G2 P2 G1P1 G0P0 C-1 74181 74181 74181 74181

17

(2)64位并行加法器的逻辑如下图所示: 64位先行进位加法器 C2 C1 C3 C63

4位先行进位产生电路 G3P3 G1P1 G2P2 16位先行 16位先行 16位先行 进位加法器 进位加法器 进位加法器 C0 G0P0 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<

(2)前方存储器(离CPU近些)中信息为后方存储器(离CPU远些)中信息的副本。因为存储系统采用层次结构,而所有信息最初及最终均存放在辅存中。

(3)现代计算机中,主存是CPU默认访问的存储器,例如欲执行的指令和数据必须预先调入主存,CPU方可执行。而层次结构存储系统的目标仅仅是优化主存的性能及性能/价格,因此,CPU按主存地址访问存储系统。

4. 六管MOS型SRAM存储元存储、读、写信息的原理是什么?各种存储器芯片为什么常采用二维译码方式?SRAM芯片为什么要求地址引脚信号先于CS建立、后于CS撤销? 答:(1)六管MOS型SRAM存储元的核心是T1~T4构成的触发器电路,T5、T6的作用是操作开关、控制是否对该存储元进行操作。

对信息写入而言,需两个步骤实现:①在字选择线上加高电位(保持到写操作完成时),使T5、T6在写操作过程中均处于导通状态;②写“0”时,在D线上加低电位、D线上加高电位,则T1管导通、T2管截止,达到了“0”的状态,写“1”时,在D线上加高电位、D线上加低电位,则T1管截止、T2管导通,达到了“1”的状态。

对信息存储而言(T5、T6管处于截止状态),由于触发器的状态自锁电路可稳定地保持T1、T2管的状态不变,因此,只要不掉电,存储元可保持所写入的信息永远不变。

对信息读出而言,同样需两个步骤实现:①在字选择线上加高电位(保持到读操作完成时),使T5、T6在读操作过程中均处于导通状态;②若存储元信息是“0”,则D线上电位下降、D线上电位上升,用连接D线与D线的差动放大器可以输出所存信息是“0”还是“1”。

(2)因为存储器常将所有存储元排列成二维矩阵形式,这样可以使存储元间连线长

19

度最短、线路信号延迟最小;而采用二维译码方式可以有效地支持存储元二维排列方式的实现:减少连线数量、减少连线长度;

(3)由于CS有效时,SRAM内部的读/写控制电路根据WE引脚信号立即产生读或写操作;若CS有效时地址引脚信号尚未稳定,则将先对未知存储单元、再对目标存储单元进行读或写操作,读操作不会产生危害,写操作将会产生不可挽回的后果;因此,SRAM芯片要求地址引脚信号先于CS建立、后于CS撤销。

5.某容量为16K×16bit的SRAM芯片,其地址引脚(线)、数据引脚(线)各是多少?若某SRAM芯片容量为1K个存储元,地址引脚有8根,则其数据引脚有多少根?

解:(1)芯片的地址引脚有log2(16×210)=14根,数据引脚有16根; (2)数据引脚有(1×210)/28=4根。

6.若用16K×4bit SRAM芯片构成16K×16bit的SRAM,问: (1)需要SRAM芯片多少片?

(2)各芯片在所组成SRAM存储空间中的位置? (3)各芯片片选线的有效逻辑是什么?

(4)画出所组成SRAM的信号线与内部各芯片引脚的连接图。 解:(1)需要SRAM芯片(16K/16K)×(16bit/4bit)=4片 (2)各芯片在SRAM存储空间中的位置如下图: b15-12 b11-8 b7-4 b3-0

00000000000000 (0000H)

16K×4b 16K×4b 16K×4b 16K×4b

3# 2# 1# 0#

11111111111111 (3FFFH)

(3)各芯片的片选线有效逻辑为:CS0=CS1=CS2=CS3=CS; (4)SRAM的信号线与内部各芯片引脚的连接如下图: A13

A0 … … … … 16K×4b 16K×4b 16K×4b 16K×4b SRAM3# SRAM2# SRAM1# SRAM0# D15~D12

D11~D8

D7~D4

D3~D0

WE

CS

7.若用4K×16bit SRAM芯片构成16K×16bit SRAM,回答与题6相同的问题。 解:(1)需要SRAM芯片(16K/4K)×(16bit/16bit)=4片 (2)各芯片在SRAM存储空间中的位置如下图:

b15 ?? b0

00 000000000000 (0000H) … 4K×16b SRAM 0#

00 111111111111 (0FFFH)

01 000000000000 (1000H)

4K×16b SRAM 1#…

01 111111111111 (1FFFH)

… … … …

10 000000000000 (2000H)

10 111111111111 (2FFFH) 11 000000000000 (3000H)

11 111111111111 (3FFFH)

4K×16b SRAM 2#

4K×16b SRAM 3#

20

(3)各芯片的片选线有效逻辑为:CS0=CS&A13&A12、CS1=CS&A13&A12、

CS2=CS&A13&A12、CS3=CS&A13&A12

(4)SRAM的信号线与内部各芯片引脚的连接如下图: CS GE Y 0 2:4 A13

译码器 A12

A11

A0

… … … … 4K×16b 4K×16b 4K×16b 4K×16b

(0#) (1#) (2#) (3#) … … … …

D15~D0

WE

8.若用8K×8bit SRAM芯片构成16K×16bit SRAM,回答与题6相同的问题。

解:(1)需要SRAM芯片(16K/8K)×(16bit/8bit)=4片 (2)各芯片在SRAM存储空间中的位置如下图:

A13 A12… A0 b15… b8 b7… b0

00000000000000(0000H) 8K×8b 8K×8b

…… (1#) (0#) 01111111111111(1FFFH)

10000000000000(2000H) 8K×8b 8K×8b

…… (3#) (2#) 11111111111111(3FFFH)

(3)各芯片的片选线有效逻辑为:CS0=CS1=CS&A13、CS2=CS3=CS&A13

(4)SRAM的信号线与内部各芯片引脚的连接如下图:

CS & & A13

A12

A0

… … … … 8K×8b 8K×8b 8K×8b 8K×8b (2#) (3#) (0#) (1#)

… … … … D15~D8 D7~D0

WE

9.对单管MOS型DRAM芯片而言,存储元存储、读、写信息的原理是什么?读DRAM存储元比读SRAM存储元慢的原因有哪些?行刷新可以提高刷新效率,其对DRAM芯片的要求是什么?采用地址分两次传送方式有什么好处?

答:(1)单管MOS型DRAM存储元的信息存储用电容CS实现,T1管用作操作开关、控制是否对该存储元进行操作;

对信息写入而言,需两个步骤:①在字选择线上加高电位,使T1导通;②在数据线D上加所写数据,CS将随所写数据而被充电或放电,信息被写入。

对信息存储而言(T1管截止),CS中信息因无放电回路而得以保持,但因CS会缓慢泄漏电荷,需定时进行刷新操作以长久保持信息。

对信息读出而言,需三个步骤:①将D线预充电为高电位,通过CD实现;②在字选择线上加高电位,使T1导通,D线上电位将随CS中有无电荷而产生变化(CS无电荷时,D线上电位下降,否则D上电位基本不变),放大该电位变化可读出所存储信息;③立即进行数

… … … … … … … … …

21

… … … … … … 据再生操作(用所读出信息重新写入)。

(2)读DRAM存储元较慢的原因主要是因为DRAM增加了三方面的操作: ①读信息前需对CD与充电,②读信息后需再生信息,③存储元需定时刷新。 (3)由于DRAM芯片内部通常采用二维译码方式、各列存储元通过列译码器输出与I/O电路连接,行刷新指同一行所有存储元同时进行刷新操作,因此,要求DRAM芯片控制电路中增加刷新控制机构(区分读/写与刷新操作),每列增加存储元刷新部件(如刷新放大器等刷新操作功能部件),列译码器所有输出无效(即列地址刷新时无用、实现同时刷新功能)。 (4)可以减少地址引脚数量,进一步减小芯片封装面积,用RAS、CAS两个信号来区分当前地址信号是行地址还是列地址;可以不增加控制引脚数量,同样完成所有功能,使

RAS信号在整个操作过程中均有效,则RAS引脚可代替片选引脚CS,使CAS信号在刷新操作时一直无效(读/写操作时适时有效),则无需增加刷新命令引脚。

10.某DRAM芯片的存储阵列有1024行、存取时间为0.5μs、存储元的最大刷新周期为2ms,若CPU在1μs内至少要访问一次,请选择你认为较合理的芯片刷新方式,并说明理由。两次刷新的最大时间间隔是多少?芯片刷新一遍共花费多长时间。

解:(1)由于DRAM最大访问频率=1/(0.5μs)=2次/μs,而CPU访存频率?1次/μs, 采用分散式刷新时,CPU访存频率?2000μs/(0.5μs+0.5μs)=2000次/2ms,?1次/μs; 采用集中式刷新时,CPU访存频率?(2000μs/0.5μs-1024)=2976次/2ms,?1次/μs,其中有1024×0.5μs=512μs的CPU访存操作延迟巨大(在死区中);

采用异步式刷新时,CPU访存频率?2976次/2ms,?1次/μs,其中每2000μs/1024=1.95μs中,超过[(2000/1024-0.5μs)/0.5μs ]=2.9次的CPU访存操作延迟增加;

三种刷新方式中,分散式刷新不符合题目要求,最合理的芯片刷新方式是异步式刷新。 (2)采用异步式刷新时,两次刷新最大的时间间隔为2000μs/1024=1.95μs。 (3)芯片刷新一遍所需时间为1024×0.5μs=512μs。 11.现分别用16K×4bit、4K×16bit地址分两次传送的DRAM芯片构成16K×16bit的DRAM,请分别回答下列问题:

(1)需要DRAM芯片多少片?

(2)各芯片在所组成DRAM存储空间中的位置?

(3)画出所组成DRAM的信号线与内部各芯片引脚的连接图。 解:当用16K×4bit的DRAM芯片构成16K×16bit的DRAM时,

(1)需要DRAM芯片数=(16K/16K)×(16bit/4bit)=4片16K×4bit芯片; (2)各芯片在DRAM存储空间中的位置如下图: b15-12 b11-8 b7-4 b3-0

00000000000000 (0000H)

16K×4b 16K×4b 16K×4b 16K×4b

3# 2# 1# 0#

11111111111111 (3FFFH)

(3)所组成DRAM的信号线与内部各芯片引脚的连接如下图:

A6

A0

……… …16K×4b 16K×4b 16K×4b 16K×4b

DRAM3#DRAM2#DRAM1#DRAM0#D15~D12

D11~D8

D7~D4

D3~D0

WE RAS CAS

… … …… 22

当用4K×16bit的DRAM芯片构成16K×16bit的DRAM时,

(1)需要DRAM芯片数=(16K/4K)×(16bit/16bit)=4片4K×16bit芯片; (2)各芯片在DRAM存储空间中的位置如下图:

b15 ?? b0

00 000000000000 (0000H)

… 4K×16b DRAM 0#

00 111111111111 (0FFFH)

01 000000000000 (1000H)

4K×16b DRAM 1#…

01 111111111111 (1FFFH)

10 000000000000 (2000H)

… 4K×16b DRAM 2#

10 111111111111 (2FFFH)

11 000000000000 (3000H)

… 4K×16b DRAM 3#

11 111111111111 (3FFFH)

(3)所组成DRAM的信号线与内部各芯片引脚的连接如下图: A5 A0 … … … …

4K×16b 4K×16b 4K×16b 4K×16b DRAM0# DRAM1# DRAM2# DRAM3# … … … … D15~D0

WE

RAS3~RAS0

CAS

12.某计算机中,CPU有20根地址引脚(A19~A0)、8根数据引脚(D7~D0),控制引脚由ADS、IO/M及R/W三根引脚组成,若主存配置为64KB的ROM及192KB的SRAM,ROM在主存空间的低端。现有64K×4位ROM芯片、32K×8位SRAM芯片若干。

(1)主存的地址线、数据线各有多少位?各芯片在主存空间中的位置?

(2)相对于主存,各芯片片选线的有效逻辑是什么?画出主存信号线与内部各芯片引脚的连接图。

(3)相对于CPU,主存被选中的条件(主存有效的逻辑)是什么?画出CPU与主存内部各芯片引脚的连接图。

解:(1)主存总空间为64KB+192KB=256KB,由于CPU的数据引脚宽度为8位,即主存单元长度为8位,故主存的数据线有8位,地址线有log2(256KB/1B)=18位;

主存ROM空间需ROM芯片(64K/64K)×(8b/4b)=2片, 主存RAM空间需SRAM芯片(192K/32K)×(8b/8b)=6片; 各芯片在主存空间中的位置如下图:

A17A16A15 A14 …A0 b7… b4 b3… b0

0 0 0 000000000000000 (00000H) 64K×4b 64K×4b ??

0 0 1 111111111111111 (0FFFFH) ROM(1#) ROM(0#) 0 1 0 000000000000000 (10000H) 32K×8b

??

SRAM(0#) 0 1 0 111111111111111 (17FFFH) 0 1 1 000000000000000 (18000H) 32K×8b

??

SRAM(1#) 0 1 1 111111111111111 (1FFFFH)

?? ??

1 1 1 000000000000000 (38000H) 32K×8b

?? SRAM(5#) 1 1 1 111111111111111 (3FFFFH) (2)相对于主存,各芯片片选引脚有效逻辑为:

23

… … … … … … … … CSROM0=CSROM1=CS&A17&A16,

CSSRAM0=CS&A17&A16&A15,CSSRAM1=CS&A17&A16&A15, CSSRAM2=CS&A17&A16&A15,CSSRAM3=CS&A17&A16&A15, CSSRAM4=CS&A17&A16&A15,CSSRAM5=CS&A17&A16&A15; 主存的信号线与内部各芯片引脚的连接如下图: CS GE & & & & & & Y0 2:4 A17 译码器 A16 A15 A14 A0 … … … … … … … … 64K×4b 64K×4b 32K×8b 32K×8b 32K×8b 32K×8b 32K×8b 32K×8b ROM 0# ROM 1# SRAM 0# SRAM 1# SRAM 2# SRAM 3# SRAM 4# SRAM 5# … … D7~D 4 D3~D 0 WE … … … … … … … … … (3)由于主存空间通常与CPU存储空间的低端对应,故主存被选中的条件是:ADS为低电平、IO/M为低电平、A19及A18为低电平;

CPU与主存内部各芯片引脚的连接如下图: A19 & GE … & & & A18 Y0 2:4 A17 译码器 A16 A15 A14 A0 CPU … … … … … ADS 32K×8b 64K×4b 64K×4b 32K×8b 32K×8b IO/M … ROM 1# SRAM 0# SRAM 1# SRAM 5# ROM 0# R/W … … D7~D4 D3~D0

13.为什么说存储器的带宽比存储周期能更准确地反映性能?有哪些方法可以减小存储周期或平均存储周期,其原理是什么?在与存储周期或平均存储周期无关的情况下,又有哪些方法可以提高存储器的带宽,其原理是什么?

答:(1)存储周期指存储器连续进行两次访问的最短间隔时间,仅能反映存储器完成一次访问的性能,不能反映连续多次访问的性能,亦不能反映存储器数据引脚的性能;

而带宽指单位时间内存储器可以提供数据的速率,可以反映存储数据引脚及连续多次访问的性能,因此带宽比存储周期能更准确地反映存储器性能。

(2)扩展数据输出DRAM(EDO DRAM)在常规DRAM中增加一个小容量SRAM缓冲区,减小了行地址相同的连续读操作的存储周期(行地址相同时直接从SRAM中读);

同步DRAM(SDRAM)基于时钟信号进行信号锁存及I/O,缩短了异步方式的信号握手时间,猝发传输方式可缩短地址连续的多次访问的平均存储周期,同时可通过无须CPU等待的方法来隐藏CPU访存延迟;

多体交叉存储器的交叉工作方式使多个存储体轮流工作,减小了地址连续的多次访存的

… … … … … … … … … … … …

24

… … … 平均存储周期。

(3)多体交叉存储器的并行工作方式使多个存储体同时工作,可在一个存储周期内访问多个存储字,提高了存储器带宽;

双端口存储器可同时进行地址不相同的两个操作,提高了存储器带宽。 14. 若某存储体有8位数据线、存储周期为200ns,请问该存储体的带宽是多少?某多体存储器由4个这种存储体采用低位交叉编址构成,若多体存储器采用交叉工作方式,试问依次访问64个字时需要多少个存储周期?启动各存储体轮流工作的时钟频率是多少?

-97

解:存储体带宽为:8bit/(200×10s)=4×10bit/s=40Mbps; 设存储体的存储周期为TM,4个存储体采用交叉工作方式时,存储体轮流工作的启动间隔为TM/4,依次访问64个字共需要TM+(64-1)×TM/4=16.75TM;

7

启动各存储体轮流工作的时钟频率为:1/(200ns/4)=2×10Hz=20MHz。15. 为什么要求Cache支持按主存地址访问?Cache与主存间以字块为信息交换单位可以减小CPU平均访问时间吗?若可以,请说明所需要的条件;若不可以,请说明理由。

解:(1)由于主存是CPU默认的存储器,故CPU按主存地址访问存储器;而Cache是为提高主存速度而设置的、位置介于CPU和主存之间,对CPU而言Cache是透明的,因此CPU按主存地址直接访问Cache,即要求Cache支持按主存地址访问。

(2)可以。

设块大小=n个字、主存存储周期TMEM=T地址+T数据、从主存调入一个块的时间为T块, 存储系统靠程序访问具有局部性规律来减小CPU平均访问时间(TA),若T块=nTMEM,字块一次调入还是多次调入不影响TA,则称Cache与主存间以字块为信息交换单位不影响TA;若T块<nTMEM,则称Cache与主存间以字块为信息交换单位可以减小TA。

采用常规传送方式访问主存时T块=nTMEM=nT地址+nT数据,采用猝发传送方式访问主存时T块=T地址+nT数据<nTMEM,即Cache与主存间以字块为信息交换单位可以减小TA的条件是:主存支持猝发传送访问方式。

16.存储系统由Cache及主存组成,Cache的存储周期为40ns、调入块时采用请求字优先方式,主存的存储周期为200ns,若CPU执行程序时共有10000次访存、Cache有50次不命中。

(1)求Cache的命中率及CPU执行程序时的平均访问时间。

(2)相对于不设置Cache,CPU执行程序时的存储系统性能提高多少倍。 解:(1)Cache的命中率为:H=(10000-50)/10000=0.995; TA=HT命中+(1-H)T不命中,由于块调入时采用请求字优先方式,故T不命中=TMEM=200ns, CPU执行程序的平均访问时间为:TA=0.995*40ns+0.005*200ns=40.8ns。 (2)存储系统性能加速比为:S=TM/TA=200/40.8=4.902倍, 即存储系统性能为主存的4.902倍。 17.某计算机中,约定主存按字节编址,CPU有20根地址引脚、8根数据引脚,配置有64KB的Cache,若Cache与主存采用全相联映像、块大小为16B。

(1)画出Cache、主存的地址组成格式,并计算出各组成部分的长度。 (2)每个块的块标记长度是多少?为什么? (3)若CPU访存地址分别为2D058H和2D078H,求Cache命中时对应的块标记是多少? 解:(1)由题意,主存单元长度为8位、主存地址长度为20位,

Cache地址长度为log2(64KB/1B)=16位,其中块内地址长度为log2(16B/1B)=4位, 由于Cache与主存采用全相联映像,

25

则Cache地址组成格式如下:

块号(12b) 主存地址组成格式如下:

块号(16b) 块内地址(4b) (2)每个块的块标记长度为16位,因为全相联映像时某主存块可映射到Cache的任意块,故地址变换时需用主存地址中的块号与块标记比较。

(3)主存地址2D058H=(00101101000001011000)2中,块号(高16位)为2D05H,则Cache命中时(任意块)对应的块标记为2D05H;

主存地址2D078H=(00101101000001111000)2中,块号(高16位)为2D08H,则Cache命中时(任意块)对应的块标记为2D07H。

18.某计算机的CPU、主存编址单位、Cache容量均与题17相同,若Cache与主存采用直接映像、块大小为16B。回答与题17相同的三个问题。

解:(1)由题意,主存地址长度为20位、Cache地址长度为16位,块内地址长度为4位,由于Cache与主存采用直接映像,

则Cache地址组成格式如下: 块号(12b) 主存地址组成格式如下: 区号(4b) 区内块号(12b) 块内地址(4b) (2)每个块的块标记长度为4位,因为直接映像时区内块号为i的主存块只可映射到Cache的第i块,故地址变换时只需用主存地址中的区号与块标记比较。

(3)主存地址2D058H=(00101101000001011000)2中,区号(高4位)为2H,则Cache命中时(第D05H块)对应的块标记为2H;

主存地址2D078H=(00101101000001111000)2中,区号(高4位)为2H,则Cache命中时(第D07H块)对应的块标记为2H。

19.某计算机的CPU、主存编址单位、Cache容量均与题17相同,若Cache与主存采用4路组相联映像、块大小为16B。回答与题17相同的三个问题。

解:(1)由题意,主存地址长度为20位、Cache地址长度为16位,块内地址长度为4位,由于Cache与主存采用4路组相联映像,

则Cache地址组成格式如下: 组号(10b) 主存地址组成格式如下: 区号(6b) 区内块号(10b) 块内地址(4b) (2)每个块的块标记长度为6位,因为组相联映像时区内块号为i的主存块可映射到Cache的第i组的任意块,故地址变换时需用主存地址中的区号与组内每个块的块标记分别比较。

(3)主存地址2D058H=(00101101000001011000)2中,区号(高6位)为(001011)2,则Cache命中时(第105H组内任意块)对应的块标记为(001011)2;

主存地址2D078H=(00101101000001111000)2中,区号(高6位)为(001011)2,则Cache命中时(第107H组内任意块)对应的块标记为(001011)2。

20.某2路组相联Cache的容量为4个块、块大小为8个字、采用LRU替换算法。假设Cache初态为全部空闲,CPU先从地址0000H起升序连续访问48个字,再从地址002FH起降序连续访问48个字,求此时的Cache命中率。

组内块号(2b) 块内地址(4b) 块内地址(4b) 块内地址(4b) 26

解:由题意,CPU访存地址范围为0000H~002FH,共包含48/8=6个主存块(块号为0~5),故解题时主存空间只需考虑该地址范围。2路组相联地址映像效果如下:

主存 Cache

块0 块0 块0 块0 组0 区0 块1 块1 块1 块1 块0 块2 块2 块0 组1 区1

块1 块1 块3 块3

块4 块0 区2 块5 块1 由于CPU按连续地址访问主存,故CPU访存的块地址顺序为:0、1、2、3、4、5、5、

4、3、2、1、0,每个块连续访问8次;

由于是2路组相联映像,故采用LRU替换算法时每个块的LRU位只需log22=1位,若用a-b-c表示块状态,其中a为有效位,b为LRU位,c为块标记(区号),则CPU按上述块地址顺序访存时的Cache各块状态变化如下表所示:

主存块地址流 组0 0 1 2 3 4 5 5 4 3 2 1 0 块0 1-0-0 1-0-0 1-1-0 1-1-0 1-0-4 1-0-4 1-0-4 1-0-4 1-0-4 1-1-4 1-1-4 1-0-0 块状态

组1 块1 0-1-* 0-1-* 1-0-2 1-0-2 1-1-2 1-1-2 1-1-2 1-1-2 1-1-2 1-0-2 1-0-2 1-1-2 块0 0-1-* 1-0-1 1-0-1 1-1-1 1-1-1 1-0-5 1-0-5 1-0-5 1-1-5 1-1-5 1-0-1 1-0-1 块1 0-1-* 0-1-* 0-1-* 1-0-3 1-0-3 1-1-3 1-1-3 1-1-3 1-0-3 1-0-3 1-1-3 1-1-3 操作 第1次 调入 调入 调入 调入 替换 替换 命中 命中 命中 命中 替换 替换 状态 2~8次 命中 命中 命中 命中 命中 命中 命中 命中 命中 命中 命中 命中 CPU的48*2=96次访存中,有8次不命中,则Cache命中率为(96-8)/96=0.917。 21.某计算机中最大主存容量为2048个块,实际主存容量配置为1024个块,Cache容量为256个块,采用4路组相联映像、LRU替换算法、写回法写策略。请计算目录表的最小容量。

解:主存块地址长度为log22048=11位,与实际主存配置容量无关, Cache块地址长度为log2256=8位,

由于采用4路组相联映像,Cache组内块号地址长度为log24=2位,

Cache块地址组成格式为:组号(6b)+组内块号(2b), 主存块地址组成格式为:区号(5b)+区内块号(6b), 故每个Cache块的块标记长度为5b;

由于采用LRU替换算法,故每个Cache块的LRU位需log24=2位;

由于采用写回法写策略,故每个Cache块需用1位脏位表示该块是否被改写过; 因此,目录表的最小容量为(5b+2b+1b)×256=256B。 22.为什么虚拟存储器中存在虚存-辅存地址变换?为什么虚拟存储器的管理表格通常都放在主存中?用虚拟地址查管理表有哪两个步骤?

解:(1)由于虚拟存储器是对正在执行的程序而言的,而所有程序均存储在辅存中,因此,虚存中所有信息均需从辅存中取得,故存在虚存-辅存地址变换。

(2)由于辅存速度太慢,主存-辅存间信息传送代价很大,为了尽可能不替换已调入主存的信息,虚存-主存间只能采用全相联映像方式;

又由于虚存空间巨大(可>>主存空间),对这种全相联映像的虚存管理表格,硬件查表方式速度很快、但实现成本不可想象,故只能采用软件查表方式实现,即虚存-主存间管理采用以虚存地址为索引的索引表(非目录表)结构,这样一次查表即可获得结果、但管理表格更

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 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 码长种类 频率Pi 0.25 0.20 0.15 0.10 0.08 0.08 0.05 0.04 0.03 0.02 定长编码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 4 1 霍夫曼编码 00 10 010 110 0110 1110 01110 01111 11110 11111 2.99 4 霍夫曼扩展编码 000 001 010 011 100 101 110 11100 11101 11110 3.18 2 平均码长(∑IiPi) 注意:霍夫曼扩展编码亦可采用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的变化过程如图所示:

…… 主存 0FFCH 0FFDH 0FFEH 0FFFH 1000H 1001H 1002H …… 主存 0FFCH 0FFDH 0FFEH 0FFFH 1000H 20H 1001H 00H 1002H …… 0FFCH 0FFDH 0FFEH 0FFFH 1000H 1001H 1002H 主存 …… 主存 0FFCH 0FFDH 0FFEH 0FFFH 1000H 20H 1001H 00H 1002H SP 22H 00H 20H 00H SP SP SP

空堆栈 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

…… 0FFCH 0FFDH 0FFEH 0FFFH 1000H 1001H 1002H 主存 …… 0FFCH 0FFDH 0FFEH 0FFFH 1000H 1001H 1002H 主存 22H 00H 22H 00H 20H 00H SP …… 0FFCH 0FFDH 0FFEH 0FFFH 1000H 1001H 1002H 主存 22H 00H 20H 00H SP 22H 00H 20H 00H SP

R1入栈 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)=0022H

7. 指令寻址方式通常有哪些?顺序型指令和转移型指令的地址码内容有何不同? 答:(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位,存储器按字编址,指令字长同机器字长。指令格式如下:

5bit 3bit 8bit

操作码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的长度}=max{16bit,

16

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,则程序如下图所示:

地址程序

00H 000000** 01H 00000000 02H 000001** 03H 00010100 04H 000010** 05H 00100011 06H 000011** 07H 00100100 08H 01010010 09H 011110** 0AH 011101** 0BH 1000**** 0CH 00001000 0DH 00111100 ?? 10H ** ?? 23H ** 24H ** 对应的C语言程序 BYTE R0=0;

BYTE R1=14H;//20 BYTE R2=23H;//&A[19]

BYTE R3=24H;//&Y do

{ R0=R0+*R2; R2--; R1--;

} while (R1≠0);

*R3=R0; //A[0]

//A[19] //Y

12. 试简单比较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基本结构图如下图所示: AB REG0 MAR 总线BIU CB 逻辑 MDR DB REG(n-1)

内部 CU 时序系统 PC 数 据Req 中断ALU IR ID 操作控制信通Ack 机构 路号形成电路 状态REG …… CPU

3. 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→ALU

33

… CPU… ⑨ R0→ALU,ADD→ALU ⑩ ALU→R0

5. CPU结构如图5.60所示,a~d为4个寄存器,各部分之间的连线为数据通路,箭头表示信息传送方向。

(1)说明图中a~d这4个寄存器的名称。 (2)简述从开始取指令到产生控制信号的数据流动的过程。

解:(1)a为存储器数据寄存器(MDR),b为指令寄存器(IR),c为存储器地址寄存器(MAR),d为程序计数器(PC)。

(2)① PC→MAR;

② MAR→MM,Read→MM,(PC)+1→PC; ③ MM→MDR; ④ MDR→IR;

⑤ IR→微操作信号形成部件。

主存储器MM a c AC ALU 状态REG d +“1” b 微操作信号形成部件 图5.60 基于累加器CPU例

6.为什么说数据通路会影响指令执行的性能?单总线数据通路对基于寄存器的CPU中运算器的组织有何要求?为什么?基本算逻运算的微操作步序列是什么?

答:由于数据通路的个数决定了每个微操作步中传送操作微操作的最大数量,而具体指令执行过程中的数据传送微操作的数量是固定的,因此,数据通路会影响指令执行过程的微操作步序列的步数;又由于指令执行时间=∑微操作步执行时间,因此数据通路会影响了指令执行的性能。

单总线数据通路要求运算器的2个入端、1个出端不同时使用总线通路,即要求运算器设置一个入端暂存器(常记为Y)、一个出端寄存器(常记为Z),或两个入端暂存器。这是因为ALU是组合逻辑部件,只能加工数据、不能存储数据。

基本算逻运算的微操作步序列为:

① R源1→Y

② R源2→ALU,OP→ALU,ALU→Z 7. 单总线数据通路的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→Read

t2: (PC)+1→PC,M(MAR)→MDR t3: MDR→IR

(1)单字长指令[(R2)]←(R1)+(R0)的微操作步序列为 t1~t3: 同取指令微操作步序列

t4: R0→Y

t5: R1→ALU,ADD→ALU,ALU→Z

t6: R2→MAR,1→Write

34

t7: Z→MDR, MDR→M(MAR)

t8: 1→End

(2)单字长指令R1←(R1)+[(R0)+DISP]的微操作步序列为 t1~t3: 同取指令微操作步序列

t4: R0→Y

t5: IR(DISP)→ALU,ADD→ALU,ALU→Z

t6: Z→MAR,1→Read t7: R1→Y, M(MAR)→MDR

t8: MDR→ALU,ADD→ALU,ALU→Z

t9: Z→R1,1→End

(3)双字长指令R1←(R1)+[(R0)+DISP]的微操作步序列为 t1~t3: 同取指令微操作步序列 t4: PC→MAR, 1→Read t5: (PC)+1→PC,M(MAR)→MDR

t6: MDR→Y ;设指令第二字内容为DISP

t7: R0→ALU,ADD→ALU,ALU→Z

t8: Z→MAR,1→Read t9: R1→Y, M(MAR)→MDR

t10: MDR→ALU,ADD→ALU,ALU→Z t11: Z→R1,1→End

(4)单字长指令[(R1)+DISP]←[(R1)+DISP]+(R0)的微操作步序列为 t1~t3: 同取指令微操作步序列

t4: R1→Y

t5: IR(DISP)→ALU,ADD→ALU,ALU→Z

t6: Z→R2,Z→MAR,1→Read ;设用R2暂存目标操作数地址 t7: R0→Y, M(MAR)→MDR t8: MDR→ALU,ADD→ALU,ALU→Z t9: R2→MAR,1→Write t10: Z→MDR, MDR→M(MAR)

t11: 1→End

8. 单总线数据通路的CPU结构如图5.11(b)所示,PC具有计数功能,CPU中还设置有堆栈指针寄存器SP(图中未标出)。过程调用指令CALL [(RO)]为寄存器间接寻址的单字长指令,约定(RO)为所调用过程的入口地址、过程返回地址保存到主存堆栈中,堆栈栈顶由SP指向;返回指令RET为无显式操作数的单字长指令,返回地址存放在SP指向的主存堆栈顶部。请写出这两条指令的微操作步序列。

解:CALL [(RO)]指令的微操作步序列为

t1: PC→MAR, 1→Read t2: (PC)+1→PC,M(MAR)→MDR

t3: MDR→IR ;ID译码后发现为CALL指令

t4: (SP)-1→SP ;假设存储字长=机器字长,否则为“-x” ;假设入栈操作时SP向递减方向移动 t5: SP→MAR,1→Write

t6: PC→MDR,MDR→M(MAR) ;(PC)已进行过“+1”,为下条指令地址 t7: R0→PC,1→End

35

RET指令的微操作步序列为 t1: PC→MAR, 1→Read t2: (PC)+1→PC,M(MAR)→MDR

t3: MDR→IR ;ID译码后发现为RET指令 t4:SP→MAR, 1→Read

t5: (SP)+1→SP,M(MAR)→MDR t6: MDR→PC,1→End

9. 某双总线CPU结构如图5.61所示,ALU有F=A+B及F=A两个功能,指令系统如图5.5所示,请写出指令系统中MOV、ST、ADD及JNZ指令的微操作步序列。

… 信号形成 状态REG 指令译码 A F ALU 解:(1)MOV指令的微操作步序列为

t1: PC→MAR, 1→Read

t2: (PC)+1→PC,M(MAR)→MDR t3: MDR→IR 立即寻址方式时

t4: PC→MAR, 1→Read t5: (PC)+1→PC,M(MAR)→MDR t6: MDR→RD,1→End

寄存器寻址方式时

t4: RS→ALU,(F=A)→ALU,ALU→RD,1→End (2)ST指令的微操作步序列为

t1~t3: 同MOV指令取指令微操作步序列

t4: RD→MAR,1→Write

t5: RS→MDR,MDR→M(MAR)

t6: 1→End

(3)ADD指令的微操作步序列为

t1~t3: 同MOV指令取指令微操作步序列 寄存器寻址方式时

t4: RD→Y

t5: RS→ALU,(F=A+B)→ALU,ALU→RD,1→End 寄存器间接寻址方式时

t4: RS→MAR,1→Read

t5: RD→Y, M(MAR)→MDR

t6: MDR→ALU,(F=A+B)→ALU,ALU→RD,1→End (4)JNZ指令的微操作步序列为

t1~t3: 同MOV指令取指令微操作步序列 Z≠0(即运算结果为零)时

36

REG0 REG1 REG2 REG3 MAR MDR IR PC Y B 图5.61 双总线CPU结构例

t4: 1→End

Z=0(即运算结果不为零)时

t4: PC→Y

t5: IR(DISP)→ALU,(F=A+B)→ALU,ALU→PC,1→End

10.联合控制方式实现同步控制与异步控制间转换的思路是什么?需要哪些微操作控制或状态信号?实现相互转换的原理是什么?

答:实现思路是延长节拍周期,即节拍周期长度为异步方式长度对应的节拍周期数。 通常需要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,Read t2:PC+1,WMFC t3:MDRout、IRin

(1)单字长指令[(R2)]←(R1)+(R0)的微操作命令序列为 t1~t3: 同取指令微操作命令序列

t4: R0out、Yin

t5: R1out、ADD、Zin

t6: R2out、MARin,Write t7: Zout、MDRin,WMFC t8: End

(2)单字长指令R1←(R1)+[(R0)+DISP]的微操作命令序列为 t1~t3: 同取指令微操作命令序列

37

t4: R0out、Yin

t5: SEout、ADD、Zin

t6: Zout、MARin,Read

t7: R1out、Yin,WMFC t8: MDRout、ADD、Zin

t9: Zout、R1in,End

(3)双字长指令R1←(R1)+[(R0)+DISP]的微操作命令序列为 t1~t3: 同取指令微操作命令序列

t4: PCout、MARin,Read t5: PC+1,WMFC

t6: MDRout、Yin

t7: R0out、ADD、Zin

t8: Zout、MARin,Read

t9: R1out、Yin,WMFC t10: MDRout、ADD、Zin

t11: Zout、R1in,End

(4)单字长指令[(R1)+DISP]←[(R1)+DISP]+(R0)的微操作命令序列为 t1~t3: 同取指令微操作命令序列

t4: R1out、Yin

t5: SEout、ADD、Zin

t6: Zout、R2in、MARin,Read

t7: R0out、Yin,WMFC t8: MDRout、ADD、Zin

t9: R2out、MARin,Write t10: Zout、MDRin,WMFC t11: End

14. 写出题8的微操作步序列对应的微操作命令序列。 解:CALL [(RO)]指令的微操作命令序列为

t1:PCout、MARin,Read t2:PC+1,WMFC t3:MDRout、IRin t4: SP-1

t5: SPout、MARin,Write t6: PCout、MDRin,WMFC t7: R0out、PCin,End

RET指令的微操作命令序列为

t1~t3: 同取指令微操作命令序列 t4: SPout、MARin,Read

t5: SP+1,WMFC

t6: MDRout、PCin,End

15. 某单总线通路的、基于累加器的CPU如图5.62所示,控制器采用硬布线控制方式,CPU工作流程暂不考虑中断与DMA处理,若信号时序采用联合控制方式,同步控制方式的时序中暂不考虑节拍脉冲。该CPU的指令系统由5条单字长指令组成。请设计组合逻辑控制器

38

的微操作控制信号形成电路。

PC PC+1 Y ALU ADD CLA AC 总线 逻辑 MDR SE IR R W ID 时序系统 End 中WMFC 微操作 断 机信号形成 构MAR … 指令功能指令格式

000 A CLA:AC←0

ADD:AC←(AC)+[A] 001 A LDA:AC←[A] STA:[A]←(AC) JNZ:转移时PC←A

010 A 011 A 100 A 图5.62 CPU结构及指令系统例

解:该控制器的微操作控制信号形成电路设计的过程如下:

第一步,列出所有的微操作命令序列。

由于不考虑中断及DMA处理,5条指令格式共有6个微操作命令序列,其中取指周期的微操作命令序列是通用的。

取指令阶段的微操作命令序列如下: t1:PCout、MARin,Read t2:PC+1,WMFC t3:MDRout、IRin

CLA指令执行阶段的微操作命令序列如下: t4:CLA,End

ADD指令执行阶段的微操作命令序列如下: t4:SEout、MARin,Read t5:Yin,WMFC

t6:MDRout、ADD、ACALUin,End

LDA指令执行阶段的微操作命令序列如下: t4:SEout、MARin,Read t5:WMFC

t6:MDRout、ACin,End

STA指令执行阶段的微操作命令序列如下: t4:SEout、MARin,Write t5:ACout、MDRin,WMFC t6:End

JNZ指令执行阶段的微操作命令序列如下: 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,“|”表示“逻辑或”。 T0 PCout PCin PC+1 IRin SEout CLA ACout ACin ACALUin Yin ADD MARin MDRout MDRin Read Write WMFC End ALL ALL ALL IF T1 ALL ALL T2 JNZ(Z) ADD|LDA|STA| JNZ(Z) CLA ADD|LDA|STA ADD|LDA STA T0 STA ADD STA EX T1 LDA ADD ADD ADD|LDA ALL T2 ALL ALL ADD|LDA|STA 根据上表,所有微操作命令的有效逻辑表达式如下:

PCout=IF&T0 PCin =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个微操作命令的有效逻辑达式。至此,微操作控制信号形成电路的所有微操作控制信号已经形成。

微操作控制信号形成电路与相关部件的连接如下图所示: IR OP A

状态REG ID

IF EX 制操时MFC 形成微操作命令 信作 T0 序的组合逻辑电路 号控系 T1 统 T2 End WMFC

… … 40

16. 简述微程序控制的基本思想。相对于组合逻辑控制器,微程序控制器的微操作控制信号形成电路由哪些基本部件组成?

答:微程序控制的基本思想是:将CPU工作流程对应的每个微操作命令序列编写成微程序(微程序由若干微指令组成、每条微指令对应一个或几个微操作命令),所有的微程序存放一个只读存储器中;控制器自动按照微程序的逻辑顺序,逐条取出微指令并执行,以实现CPU工作流程的控制。

微程序控制器的微操作控制信号形成电路由微程序存储部件(CM)及微指令部件(μAR、μIR、微操作控制电路、微地址形成电路)组成。具体结构如下图所示:

机器状态 IR 状态寄存器 … …

微地址形成电路 时

序地址 系控制存储器CM μAR 统译码

μ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 下址 测试网络法1: 方式位01 地址高位测试条件 测试网络法2: 方式位10 地址高位测试条件

操作控制字段顺序控制字段 (29b) (11b) 字段1 …字段m

方式位形成信息

41

(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

29

OF WB WB 存储顺序缓冲器MOB IF IR 8三总线 内部通路 OF L1 D-Cache L1 I-Cache L2 Cache 定EX 点转移浮点寄存器组总线后端 主 前端 总线 存 BIU 信号形成 23. 若将例5.9的计算要求改为?(ai?bi),请计算实现该运算时流水线的吞吐率、

i?1加速比和效率。

解:适合流水线的解题算法是先计算所有ai+bi、再用折叠法实现累乘求积。由于是静态流水线,功能切换时必须先排空流水线。流水线完成题目要求的时-空图如下图所示:

a1+b1? a8+b8 段 S6 1? 8 ㈤㈥ ㈦ ㈠?㈣ S5 1? 8 S4 ㈤㈥ ㈦ ㈠?㈣ S3 ㈤㈥ ㈦ ㈠?㈣ S2 ㈤㈥ ㈦ ㈠?㈣ S1 1? 8 ㈤㈥ ㈦ ㈠?㈣ 拍

18 11 14 19 24 28 a1 a8 a1+b1 a7+b7

b1 b8 a2+b2a8+b8

算法共需15条指令,流水方式运算时间T流水=28Δt,

串行方式运算时间T串行=8×3Δt+7×5Δt=56Δt;

吞吐率Tp=15/(28Δt);

加速比Sp=T串行/T流水=(56Δt)/(28Δt)=2; 效率E=(56Δt)/(6×28Δt)=1/3。

24. 某5段线性、动态流水线如图5.63所示,转移型指令在EX段形成转移目标地址、在WB段写入PC。数据相关采用重定向法,控制相关可以采用冻结法+重定向法、或者静态分支预测法。采用静态分支预测法处理时,总是预测转移不发生,预测错误时回头准备工作在WB段完成。分别计算当流水线的控制相关处理采用冻结法+重定向法和静态分支预测法时,下列程序段的执行时间。

R0←0 相关专用通路 R2←1

IF ID OF EX WB PC R3←100

LOOP1: R1←(R2)*(R2) 控制器(微操作控制信号形成电路) R0←(R0)+(R1) 图5.63 流水线例

R2←(R2)+1 R3←(R3)-1

JNZ LOOP1 ;状态寄存器(Z)=0时(即前驱算术运算结果不位零)转移 R0←(R0)/100

解:上述程序中,由于指令R1←(R2)*(R2)与拍 12345 678 指令R0←(R0)+(R1)存在RAW相关,采用重定向法I1IFIDOFEXWB I2IFIDOFEXWB 解决时流水线将停顿1拍,如右图所示:

43 MUX MUX ALU …… FPU ID 译码器 JEU 指令预取缓冲器

(1)控制相关处理采用冻结法+重定向法解决时,JNZ指令导致流水线停顿3拍:

拍 1 2 3 4 5 6 指令 I1:JNZLOOP1IFIDOFEXWB Ix:???IF ID 上述程序执行时流水线时-空图如下:

8拍 段

WB I1I2I3 I4 I5 I6I7I8 I4 I5 I6I7I8 … I9

EX I1I2I3 I4 I5 I6I7I8 I4 I5 I6I7I8 … I9 OF I1I2I3 I4 I5 I6I7I8 I4 I5 I6I7I8 … I9 ID I1I2I3 I4 I5 I6I7I8 I4 I5 I6I7I8 … I9 IF I1I2I3 I4 I5 I6 I7I8 I4 I5 I6 I7I8 … I9 拍

1 2 3 4 5 67 8 9 12

则程序执行时间为5Δt+(3-1)Δt+8Δt×100+Δt=808Δt;

(2)控制相关处理采用静态分支预测法解决时,由于总是预测转移不发生,对JNZ指令预测错误导致流水线停顿4拍:

拍 1 2 3 4 5 6 指令

I8:JNZLOOP1IFIDOFEXWB I9:???IFIDOF IF IFID

IF 上述程序执行时流水线时-空图如下: 9拍 6拍 段

WB I1I2I3 I4 I5 I6I7I8 I4 … I4 I5 I6I7I8 I9 EX I1I2I3 I4 I5 I6I7I8 I4 … I4 I5 I6I7I8 I9 I1I2I3 I4 I5 I6I7I8 I4 … I4 I5 I6I7I8 I9 OF ID I1I2I3 I4 I5 I6I7I8 I4 … I4 I5 I6I7I8 I9 IF I1I2I3 I4 I5 I6 I7I8 I4 … I4 I5 I6 I7I8 I9 拍

1 2 3 4 5 67 8 9 13 则程序执行时间为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优先级降序可用优先编码器实现,输出为当前最高优先级对应请求;再用译码器输出仲裁结果即可:

I0 BR0

优先 BG0 Y0

Y1 编码器 Y2 74LS148 BR7 I7

BG7

C Y0

B A 译码器 74LS138 G1 Y7 G2A G2B 10. 某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上信号时序如下图所示:

校停起校停起始验止始验止 D0D1D2 D3D4 D5D6D0 D1 D2 D3 D4 D5 D6位位位位位位 1 1 1 0 1 1 01 0 1 01 0 0 字符15H字符37H 14. 采用不互锁方式进行异步通信时,若并行传送方式的数据宽度为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数据序列1 0 1 1 0 0 1

RZ NRZ NRZ1 PM

FM

9. 某磁盘组有6个盘片,最外两侧盘面为保护面、不记录信息。盘片存储区域内径为22cm,外径为33cm,磁道间距最小为0.25cm,磁道位密度为1600b/cm。

(1)此磁盘组的存储容量是多少?

(2)当磁盘转速为5400r/min,且同时仅一个磁头工作时,数据传输率是多少? 解:(1)每个盘面磁道数=(33-22)÷2÷0.25=22个,

每个磁道信息量=2×3.14×11×1600=110528 bit=13816 B, 磁盘组存储容量=(6×2-2)×22×13816=3039520 B;

(2)数据传输率=记录密度×盘面转速=13816×(5400÷60)=1243440B/s。

10. 简述I/O接口的基本功能及接口硬件的基本组成,分析两者间关系。

答:I/O接口的基本功能主要有设备寻址功能、数据缓冲功能、操作中转功能、信号转换功能及设备状态监视功能。

I/O接口硬件主要由设备选择电路、寄存器、控制逻辑电路、信号转换逻辑电路等组成。 I/O接口硬件中,设备选择电路主要实现设备寻址功能;寄存器主要实现数据、所接收操作、所监视设备状态的暂存功能;控制逻辑电路主要实现操作中转功能,同时负责其它功能的时序控制;信号转换逻辑电路主要实现信号转换功能。

由此可见,I/O接口的各项功能由I/O接口硬件中相应组成部分实现,其中控制逻辑电路是核心,负责各组成部分的控制与协调。

50