计算机组成原理期末总结「建议收藏」

文章目录写在前面计算机系统概论知识点习题运算方法和运算器知识点习题写在前面临近期末,总结了下知识点,供个人复习使用,仅供参考(近期不间断更新)。计算机系统概论知识点1.时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。2.主频(时钟频率):每秒钟含有多少个时钟周期(1.2GHz即每秒钟含有1.2×10^9个时钟周期)。3.CPI:一条指令所需要的时钟周期个数。4.MIPS:每秒钟能执行多少个100万条指令。5.MFLOPS:每秒百万次浮点操作次

大家好,又见面了,我是你们的朋友全栈君。

写在前面

为迎接期末,总结了下知识点,供个人复习使用,仅供参考。

本文用到的复习资料:点我跳转,提取码:1l49

为方便读者,markdown文件和PDF文件已发布到CSDN资源下载,点我跳转

如果想白嫖(点个关注也行啊),需要本文markdown或PDF文件下方评论留言留下邮箱看到即回

我总结的其它专业课:点我跳转

1.计算机系统概论

知识点

image-20200608144821042

1.时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。

2.主频(时钟频率):每秒钟含有多少个时钟周期(1.2GHz即每秒钟含有1.2×109个时钟周期)。

3.CPI:一条指令所需要的时钟周期个数。

4.MIPS:每秒钟能执行多少个100万条指令。
计算机组成原理期末总结「建议收藏」

5.MFLOPS:每秒百万次浮点操作次数。

6.CPU执行时间:TCPU=In×CPI×TC (指令条数*一条指令需要几个时钟周期*时钟周期长度)

In:执行程序中指令总数

CPI(Clock Cycle Per Instruction):执行每条指令所需的平均时钟周期个数
TC:时钟周期时间的长度

7.吞吐量:计算机某一时间间隔内能够处理的信息量(能吞多少)

8.响应时间:从事件开始到事件结束的时间,也称执行时间.

7.冯●诺依曼型计算机设计思想主要有两项:

  • 将十进制改为二进制,从而大大简化了计算机的结构和运算过程;
  • 存储程序的思想,将程序与数据一起存储在计算机内,使得计算机的全部运算成为真正的自动过程。

存储(程序)并按(地址)顺序执行,这是冯•诺依曼型计算机的工作原理。

8.用嘴(一句一句最后不生成目标程序)来解释,用手(一步到位最后生成目标程序)来编译

编译程序将高级语言转换为机器代码再执行,解释程序用源程序直接解释,解释一句执行一句不用转换成机器代码。所以编译要比解释速度快

9.控制器可根据不同的周期(取指周期或者执行周期)来区分该地址的存储单元存储的是数据还是指令。

习题

1.假定机器M的时钟频率为200MHz,程序P在机器M上的执行时间为12s。对P优化,将所有乘4指令都换成了一条左移两位的指令,得到优化后的程序P’。若在M上乘法指令的CPI为102,左移指令的CPI为2,P的执行时间是P’执行时间的1.2倍,则P中的乘法指令条数为_______4x106________

答:P’的执行时间为10s,比12少了2s,由时钟频率得每秒有2×108个时钟周期,即少了4×108个时钟周期

每条左移指令比乘法指令少了100个时钟周期,那么乘法指令个数即总共少的时钟周期/每条指令少的时钟周期

p和p’的时间差是因为指令被替换了,而所有被替换的指令个数就是乘法指令个数

2.此题MIPS为400

image-20200608152105898

答:平均CPI=2×0.5+ 3×0.2+4×0.1+5×0.2=3,即执行一个指令平均需要3个周期

MIPS为每秒可执行的百万条指令数,1.2GHZ为1200MHZ即一秒有1.2*109个周期,总周期=一个指令所需周期*有多少指令。1200/3=400(M=106,G=109

3.程序P在机器M上的执行时间是20s,编译优化后,P执行的指令数减少到原来的70%,而CPI增加到原来的1.2倍,则P在M上的执行时间是_______16.8s____

答:CPI即执行一条指令所需的时钟周期数。假设M机器原时钟周期为x,原CPI为y, P程序的指令数为z,可得P程序执行时间为xyz= 20s。

编译优化后M机器的CPI变为1.2y, P程序的指令数变为0.7z,则P程序执行时间为1.2*0.7xyz,故其执行时间为
16.8s。

4.某工作站采用时钟频率f为15MHz,处理速率为10MIP/S的处理机来执行一个已知混合程序。假定每次存储器存取为1周期延迟,此计算机的有效CPI是_______1.5_____________,假定将处理机的时钟频率提高到30MHz,但存储器子系统速率不变。这样,每次存储器存取需要两个时钟周期,如果30%指令每条只需要一次存储存取,而另外5%每条需要两次存储存取,还假定已知混合程序的指令数不变,并与原工作站兼容,则改进后的处理机性能相比原来的_______提高_____________

答:CPI即每个指令需多少周期,已知每秒有15*106个周期,每秒可以处理10*106个指令,那么总周期数/总指令数即为CPI

15*106/10*106=1.5 (注意和后面那个1周期延迟没有关系,不要被他迷惑,这个周期延迟已经被计算在前面的10MIP/s中了)

处理性能是否提高就看处理速率是否提高了。30%需要一次存取,由于每次存取增加了1周期延迟,那么这30%就得增加一个周期,而同理另外5%需要增加两周期。则CPInew=CPI+30%*1+5%*2=1.9 (原CPI已经包括原来的1周期延迟,只需将计算新增的即可)

又已知现在每秒有30*106个周期,那么处理速率为总周期数/每指令所需周期数=30×106/(1.9×106)= 15.79MIP/S,所以提高了

5.假定计算机M1和M2具有相同的指令集体系结构,主频分别为1.5 GHz和1.2 GHz。在M1和M2_上运行某基准程序P,平均CPI分别为2和1,则程序P在M1和M2_上运行时间的比值是?

答:M1的CPI为2即2周/指,而M2为1周/指。同样的程序P即指令数相同。M1的周期T1=1/1.5*109,M2的周期T1=1/1.2*109

那么每条指令所需时间分别为2×T1和1×T2,指令数相同,那时间比值就等于一条指令所需时间比值即(2×T1)/(1*T2)=8/5

2.运算方法和运算器

知识点

image-202006091432075611.数字0在原码反码补码的表示

[+0]原码=0000 0000, [-0]原码=1000 0000

[+0]反码=0000 0000, [-0]反码=1111 1111

[+0]补码=0000 0000, [-0]补码=0000 0000 (补码中是唯一的)

0的移码也是唯一的1000 0000

image-20200609151740827

由于补码0是唯一的所以补码范围要多一个负数(总共都是256个数)

2.对于规格化的浮点数,尾数有三种形式:(小数点左边的是符号位)

  • 原码表示时尾数的小数点后第一数位为1,数符任意

  • 补码和反码表示时尾数的符号位与小数点后第一数位不同

  • 1.1xx……X(原码)

  • 1.0XX……X(补码、反码)

  • 0.1xx……x(原码、补码、反码)

原理是保证 1> |M|≥ 0.5

3.余3码就是8421码加3所得

4.奇偶校验码:加上校验码后1的个数为奇数就是奇校验。不具备纠错能力。

5.海明码:设有k个数据位,则应设r个校验位,r满足2r-1 ≥ k + r 。发现两位错误纠正一位错误。

6.循环冗余检验码(CRC):k位校验位拼接在n位数据位后面,即为n+k,发现并纠正一位或多位错误

7.A的ascii码:65 a的ascii码:97

8.已知[x],求[-x]:将[x]连同符号位求反+1

9.移码就是补码的符号位求反

由于负数的补码如-21(101011)看着好像大于21(010101),实际正好是21更大,所以浮点数的阶码用移码表示能直观的看出大小便于加减运算

10.-1的补码永远是全1(可理解为全1加1等于全0)

11.由于补码溢出无法看出是上溢(大于最大数)还是下溢,因此引入变形补码

  • 两个符号位不同时表溢出(01为正溢出,10为负溢出(看第一位))
  • 最高位那个数代表真正的符号位
  • 两个符号位均参与运算,若进位舍去

12.IEEE754计算公式:真值x=(-1)S1.M2e(S为符号位(正还是负),E为阶码(转换成e代表多少次方),M为尾数(小数点后面的数),顺序为SEM)其中e=E-127(可记成大E大所以要减)

13.补码的1000 0000为什么代表-128

补码就是同余,比如-3的原码是1011而它的反码是1100则补码为1101,无符号的1101是13和-3正好模24同余

所以给出一个负数的补码将其看为无符号数减去2n(n为总位数)即代表真值

为什么会这样呢?4位二进制可表示16个数,那么想表示负数怎么办,就用同余的思想,-1就用15表示,-2就用14表示,-3就用13(1101)表示

回到本题,给出补码求真值,将其看成无符号数即为128,与128模28同余的负数即为-128(也可用128-28计算)

14.IEEE754的尾数用原码表示,阶码用指数的移码-1表示(所以E=e+127)

习题

1.写出D=101101的海明码

答:1️⃣首先确定检验位的个数:k=6,2r-1 ≥ k + r即2r ≥7+r,所以r=4

2️⃣确定检验码的位置:检验码Pi(i=1,2…)的位置为2i-1(20,21,22…)

注意从M10到M1,从大到小且没有0

image-20200609150117418

3️⃣求出检验码的值:校验位Pi的值即为所有需要Pi校验的数据位求异或。

image-20200609150430484

如P2对应M2,需要它的有D1即M3(2+1)、D3即M6(2+4)、D4即M7(2+4+1)…

所以最后的海明码为1011100100

2.已知x=11011,y=-10101,用变形补码计算x+y

image-20200609154616627

注意一定要先转换成补码再添符号位运算

3.假设M(x)=x3+1(发送信息的多项式),G(x)=x3+x+1(生成多项式,代表校验位信息)。

1️⃣ 那么M(x)代表的二进制码为: 1001(1*x3+1*x0),G(x)代表的二进制码为: 1011

2️⃣将M(x)的多项式左移G(x)的最高次数,变为1001 000

3️⃣将1001 000对1011做模2除法得到余数为110,将其与被除数1001合并得到CRC码1001 110

这里要注意第三步的模2除法和普通除法不同,模2除法不会向上一位借位也不比较被除数和除数的大小(位数相同即可),如图中第三位商数(1101>1000但仍可做减操作)image-20200609195155116

4.若浮点数x的754标准存储格式为(41360000)16 ,求其浮点数的十进制数值。

image-20200609225853843

注意阶码没有符号位

5.将数(20. 59375)10转换成754标准的32位浮点数的二进制存储格式。

image-20200609230432591

6.某机器数为1000 0000B,若它代表0,则它是(原)码形式。若代表-128,则它是(补)码形式。若代表-127,则它是(反)码形式。

答:若是原码形式,就是-0。若是反码形式时,转换为原码就是1111 1111即-127(-(27-1)) ,若是补码,1000 0000无符号时是27=128,所以该补码代表-128(详情见上面知识点)

7.某机字长32位,其中1位符号位,31位表示尾数,若用定点小数表示,则最大正小数为多少?(B)

A.(1-2-32) B.(1- 2-31 ) C.2-32 D.2-31

答:这样的题就用4位的先试试。4位最大小数就是 0 111,也就是0.875 即1-2-3 所以可推出32位时最大是 1-2-31

8.IEEE 754单精度浮点数格式表示的数中,最小的规范化正数为(A)

A.1.0×2-126 B.1.0×2-127 C.1.0×2-128 D.1.0×2-149

答:浮点数表示为1.M*2E,最小M为0,且E也要最小,这样往左移位越多数值越小,这样就转换成IEEE754中指数的最小值问题

对E来说,去除全1和全0(表0和无穷大),E的范围为1~254,而e=E-127即e的范围为-126~+127,即指数最小为-126

所以本题答案为1.0*2-126

9.若x=103,y=-25,则下列表达式采用8位定点补码运算实现时,会发生溢出的是 ( C )

A.x+y B.-x+y C.x-y D.-x-y

答:不用转换成补码再算,直接算。四个选项中B的-128和C的128绝对值最大最可能溢出

而8位补码范围是-128~127,那就是C的128溢出了 (注意补码的0是唯一的所以多了个最大负数-128)

image-20200620135418708

答:这题的关键点是计算机使用补码参与运算的。-9的原码是1000 1001,补码是1111 0111,扩展到16位高位补1(也可写完整的16位原码再转换成补码) x = 127,原码:0111 1111,补码:0111 1111,扩展到32位高位补0 z=x+y=118同理高位补0

11.整数x的机器数为1101 1000,分别对x进行逻辑右移1位和算术右移1位操作得到的机器数为_____________0110 1100、1110 1100______________

答:逻辑右移就是右移一位,左边补零即可。算术右移需要考虑符号位(算术要算所以补符号位),右移一位,左边补符号位。

12.已知x=10111,y=11011,用变形补码求x-y

答:[x-y]=[x]+[-y],[x]补=00 10111,[-y]补=11 00101

00 10111+11 00101 =11 11100,结果没溢出转换为原码为1 00100即-00100 (注意得到的是补码要转换为真值)

[y]补=00 11011,[-y]补=[y]补连同符号位求反加1=11 00101,当然也可直接求-11011的补码

13.假定有4个整数用8位补码分别 表示r1=FEH,r2=F2H, r3=90H, r4=F8H,若将运算结果存放在 一个8位寄存器中,则下列运算会发生溢出的是( B )

A.r1×r2 B.r2×r3 C.r1×r4 D.r2×r4

答:这种判断是否溢出的题就算出真值看看是否溢出。r1真值为-2,r2真值为-14,r3真值为-112,r4真值为-8

而这是补码运算最后得到的结果也是补码,8位补码范围为-128~127,所以显然r2*r3得到的结果转换为补码大于8位补码最大值

3.多层次的存储器

知识点

image-20200610135354300

1.存储器按存取方式可分为

  • 随机存取存储器(RAM)可读可写,断电即失(也称易失性)

    • 静态RAM(SRAM) 常用做高速缓冲存储器
    • 动态RAM(DRAM) 常用做主存
  • 只读存储器(ROM)只读不写,断电保留(也称非易失性)

  • 串行访问存储器

    • 顺序存取存储器(如磁带)

    • 直接存取存储器(如磁盘)

image-20200610140643769

2.这些存储器名称中带E的都表示可擦除(可能出选择题,Erasable:可擦)

3.为了解决存储器大容量、低价格、高速度三者之间的矛盾关系,常采用多级存储器结构

image-20200610140844977

缓存-主存层次主要解决CPU和主存速度不匹配的问题,数据交换由硬件完成。

主存-辅存层次主要解决存储系统的容量问题,数据交换由硬件和操作系统共同完成

4.存储器带宽就是每秒存储器存储的信息量

5.SRAM存取速度快但容量不如DRAM(记住SRAM用作高速缓冲存储器,速度肯定快)

DRAM需要刷新会影响速度,所以SRAM速度更快但是价格昂贵

6.DRAM采用电容存储,由于电荷量会减少所以必须定期(若不说明则是2ms)刷新,可分为

  • 集中刷新(集中到一段时间,集中歼灭)死时间是刷新总时间
  • 分散刷新(每存取一次就刷新一次,分散歼灭)加倍存取周期实现死时间为0
  • 异步刷新(折中方案,有计划的刷新)死时间就是一个存取周期

刷新的实质就是读出数据再写入(对行刷新,若不说明刷新一行等于一个存储周期)

7.ROM也是随机存取(像数组下标一样访问),但随机存取存储器要求可读可写,ROM只读,所以把ROM和RAM分开(第一个随机存取只是取信息的方式和存储器的随机存取含义不一样)

8.如果要求将容量为axb的芯片组成容量为cxd的芯片,假设需要芯片的数量为n,则n=(cxd)/axb (a是字线连接地址线,b是位线连接数据线)

9.命中率:CPU要访问的信息在Cache中的比例(cache存取次数/(cache存取+主存存取))

10.平均访问时间:ta=命中率×访问cache的时间+(1-命中率)×访问主存时间 (ta=htc+(1-h)tm)

11.访问效率:访问Cache时间/平均访问时间 (e=tc/ta)

12.CPU与Cache之间传送数据的基本单位是字,而主存与Cache之间传送数据的基本单位是块(一块包括多个字)。(可理解为CPU容量少传输的也少,主存容量大传输的也大)

13.为了把主存的部分内容放到Cache中要把主存地址转换为Cache地址(因为主存和Cache用块传输,所以主要是块号的转换)

  • 直接映射 根据行号指定特定行比(适合大容量Cache)
  • 全相联映射 与Cache所有行全都比(适合小容量Cache)
  • 组相联映射 先根据组号找到对应组,再在组中一个一个比(折中的方法)

image-20200610171302861

可以看到直接映射因为要找特定行,所以多了行号地址,组相联因为要找特定组所以多了组号地址,而全相联因为是一行一行比所以啥也没有

14.替换策略:当要放新的东西而Cache满时就要替换

  • 最不经常使用(LFU即Least Frequently Used)算法 首先淘汰一定时期内被访问次数最少的
  • 近期最少使用(LRU即Least Recently Used)算法 首先淘汰最长时间未被使用的
  • 随机替换 随缘替换

15.Cache要和主存内容保持一致(CPU对Cache的写入更改了它),所以要用到写操作策略

  • 写回法 只修改Cache的内容而不立即写入主存,此行被换出时写入主存
  • 全写法(直写法、写直达) Cache和主存同时修改
  • 写一次法 处理和写回法一致,只是第一次命中要同时写入主存(折中处理)

16.TLB(快表)、页表和Cache之间的命中关系

记住只要TLB(页表分为快表和慢表)和Cache有一个命中,页表一定命中,但页表命中那俩不一定命中(数据在主存不在Cache时),也可能都不命中 (即页表最大

17.DRAM采用地址复用技术,地址线为正常的一半,例如你计算的用10根地址线实际用5根就行 (先送行地址再送列地址)

习题

1.RAM和ROM的区别

image-20200610145652114

答:RAM断电会失去信息而ROM不会,二者访问信息的方式都是随机存取。Cache需要可读可写,而Rom只能读不能写,肯定不适合。DRAM(动态RAM)才需要刷新。

2.Flash存储器

image-20200610150200185

3.假定用若干个2K×4位芯片组成一个8K×8位存储器,则地址0B1FH所在芯片的最小地址是

答:8k*8/2k*4=8,需要8个芯片,8k=213,所以需要13位地址。2个4位的芯片构成一个8位的(存取数据一次最少8位),所以需要4组,片选地址为2位(位扩展两个要选中都是同时选中,所以只看字扩展),剩下的为片内地址

1️⃣ 每组芯片是2k*8即11个地址线,4组需要2位片选信号,所以每组后11位是从全0到全1

第1组芯片地址范围:0000 0000 0000 0000 ~ 0000 0111 1111 1111(黄色的为片选信号)

第2组芯片地址范围:0000 1000 0000 0000 ~ 0000 1111 1111 1111

第3组芯片地址范围:0001 0000 0000 0000 ~ 0001 0111 1111 1111

第4组芯片地址范围:0001 1000 0000 0000 ~ 0001 1111 1111 1111

0B1FH的地址格式是0000 1011 0001 1111,可知是第二组中的一个地址,这个地址所在芯片最小的为地址为0000 1000 0000 0000,即0800H

4.某计算机存储器按字节编址,主存地址空间大小为64MB,现用4MB×8位的RAM芯片组成32MB的主存储器,则存储器地址寄存器MAR的位数至少是(26位)。

答:MAR要能寻址整个存储器,虽然题目说组成32MB的主存,但是剩余的32MB以后也会用,所以也要考虑,64MB=226,所以最少26位

5.假设 Cache完成缓存的次数为 2000次,主存完成存取的次数为50次。已知Cache的存储周期为50ns,主存的存储周期为200ns,试求:命中率、平均访问时间、效率。

答:1️⃣命中率为 2000/(2000+50)=97%

2️⃣ta=htc+(1-h)tm=0.97*50ns+(1-0.97)*200ns=54.5ns(a表average,c表cache,m表main)

3️⃣效率e=tc/ta=50/54.5=91.7%

6.一个组相联cache由64个行组成,每组4行。主存储器包含4K个块,每块128字。请表示内存地址的格式。

答:128字=27,所以字地址位数为7

Cache共64行,每组4行,所以需要16组,16=24,即只需4位组号地址即可表示16组

1️⃣ 主存有4k个块,每块128字,所以总共4k*128=219,19-4-7=8即8位标记位

2️⃣ 主存有4K个块,4k=212,12-4=8,所以标记位需要8位

image-20200610172722721

注意这些地址是存放在主存的,所以总位数和主存的容量保持一致

7.某容量为256MB的存储器由若干4M×8位的DRAM芯片构成,该DRAM芯片的地址引脚和数据引脚总数是 __________19

答:注意是DRAM采用地址复用,4M=222,地址复用所以11根就行,11+8=19

注意地址线是2n(译码器译码),而数据线是一个线对应一位

8.下列各类存储器中,不采用随机存取方式的是( B)
A.EPROM B.CD-ROM C.DRAM D.SRAM

答:CD-ROM即光盘,采用串行存取方式,它是只读型光盘存储器,不属于只读存储器ROM

9.某存储器容量为64KB ,按字节编址,地址4000H-5FFFH位ROM区,其余为RAM区,若用8Kx4位的SRAM芯片设计,则需要该芯片的数量为_______14____

答:这题主要是计算ROM区的容量,4000~5FFFH有5FFF-4000+1=2000H,而2000H=213=8k(转换成二进制1在从右到左第13位(0开始)可类比10是2即21),剩下的56kb为RAM,(56k*8)/(8k*4)=7*2=14

10.某系统的存储器为2MB,每字块为8个字,每字32位,若Cache为16KB,采用字节编址方式。

(1)采用直接映射,主存地址格式是什么?

(2)采用全相联映射,主存地址格式是什么?

(3)采用16路组相联映射,主存地址格式是什么?

答:一般都只给每块多少字写字号地址就行,既然这题说明一个字多少位了那么就要有字节地址image-20200610231019657

image-20200610231039381

16路组相联即每组16块,16kb是214是字节即有214*23=217位,现在需要知道有多少组

组数=217/24(每组16块)*23(每字块8个字)*25(1个字32位)=25,所以组地址为5位

注意单位要一致,kb是字节,也可以32位换算成字节计算

注意行号和组号是Cache的,块号地址是主存的,根据Cache的行号或组号把主存的块号映射到Cache中,这也是上面根据Cache容量推行号位数的原因。

如全相联,给定一个地址,CPU先根据块内地址然后依次和Cache的每行比较(通过标记),若命中则按块内地址读取相关内容,若未命中就得到主存去读了(Cache命中率)

11.某计算机存储器按字节编址,采用小端方式存放数据。 假定编译器规定int型和short型长度分别为32位和16位 ,并且数据按边界对齐存储。 某C语言程序段如下:

struct{ 
    
  int a;
  char b;
  short c;
}record;
record.a=273

若record变量的首地址为0XC008, 则低地址0XC008中内容为()及record.c的地址是 ( )

答:273 = 0X0000 0111(注意是十六进制不是二进制),采用小端方式存放数据即高字节存放高地址,低字节存放低地址,273的低字节是11,所以低地址存11(往后依次是01,00,00)

image-20200610234723093

由上图看到0xC00D空了下来,因为题目说数据按边界对齐存储,b后面的c是short2字节,所以c的首地址也得是2的倍数(这样存储器访问一次就可取到数据,若不这样可能存储器一次取的正好是c的一部分,需要再访问一次才能得到完整的c,2的倍数则保证每次都能一次取到)

所以答案为0X11、0XC00E。

12.某计算机主存地址空间大小为256 MB, 按字节编址。虚拟地址空间大小为 4 GB,采用页式存储管理,页面大小为 4 KB, TLB(快表)采用全相联映射,有 4 个页表项, 内容如下表所示。则对虚拟地址03FF F180H 进行虚实地址变换的结果是( )

image-20200620230255835

答:虚存地址空间4GB,则虚地址长度为32位。主存地址空间256MB,则主存地址长度为28位。页面大小4KB,则页内地址长度为12位。虚拟地址03FF F180H中180H为页内地址(十六进制的3位即二进制的12位和页内地址长度对应),03FFFH(20位)为虚页号,查TLB(快表)发现,该页在主存中,其实页号为0153H,所以虚实地址变换后的结果为0153 180H(对应主存的28位)。

TLB根据标记找若找到了但是有效位是0代表TLB缺失。若没找到去页表找若找到了但有效位是0代表缺页。

13.某计算机的 Cache 共有 16 块,采用 2 路组相联映射方式,每个主存块大小为 32 字节,按字节编址。主存 129 号单元所在主存块应装入到 Cache 的组号是( C )

A.0 B.2 C.4 D.6

答:采用2路组相联,所以一共是8组,从0开始,0 1 2 3 4 5 6 7.主存的某一字块按模8映像到Cache中的任一字块中.比如说主存中第0、8、16 字块是映像到Cache里第0组。每个主存块大小32字节,0-31号单元在第0块,32-63号单元在第1块,64-95号单元在第2块,96-127号单元在第3块.由此可见,主存129号单元位于主存中第4块的位置那么对应第4组

注意块号和单元号都是从0开始

image-20200620233829884

14.若数组a及变量k均为int型,int型数据占4B,数据Cache采用直接映射方式,数据区大小为1KB、块大小为16B,该程序段执行前Cache为空,则该程序段执行过程中访问数组a的Cache缺失率约为 ( C )

for(k=0; k<1000; k++)   
	a[k] = a[k]+32;

A.1.25% B.2.5 % C.12.5% D.25%

答:块大小为16B而int数据4B即每块有4个int数据。a[k] = a[k]+32;首先读取a[k]需访问一次a[k],之后将结果赋值给a[k]又需要访问一次,即一个int访问两次。第一次访问a[k]未命中,并将该字所在的主存块调入Cache对应的块中。4个整数的各两次访问中只在访问第一个的第一个次时发生缺失,所以缺失率约为1/8=12.5%

4.指令系统

知识点

image-20200611145349442

1.CISC:复杂指令系统计算机 (常用的20%频率占80%)C表Complex

RISC:精简指令系统计算机 少、固定、小但是寄存器数量多

2.二地址指令中根据操作数的物理位置,可分为

  • SS(存储器-存储器) 速度最慢
  • RS(寄存器-存储器) 速度中间
  • RR(寄存器-寄存器) 速度最快
  • 助记:S表Storage即存储器,R表Register即寄存器

3.指令字长:一条指令所占的存储空间大小即二进制代码位数

机器字长:计算机一次能直接处理的二进制位数

若指令字长 = 机器字长,则称它为单字长指令,类比还有半字长指令、双字长指令

4.数据字和指令字的区别:一个字如果表数据那就是数据字,如果表指令那就是指令字

5.定长操作码指令:指令字的高位部分固定位数表示操作码,n位操作码最多表示2n条指令

6.不定长操作码设计规则

  • 不允许较短的是较长的前缀(这样可根据前缀直接判断它是零地址还是一地址…)
  • 频率较高的指令分配较短的指令

7.不定长操作码中的扩展位可理解成一个标志,你看到这个标志就知道它是0地址还是1地址…

8.指令寻址:找到下一条将要执行指令的地址

  • 顺序寻址 (按顺序来如1->2->3)
  • 跳跃寻址 (发生跳跃如1->2->6)

9.数据寻址:找到当前正在执行指令的数据地址 多种寻址方式是为了压缩地址码长度

  • 隐含寻址 操作数隐含在某寄存器中
  • 立即寻址 指令字中给出立即数,如MOV AX,1234H 操作数=A
  • 直接寻址 指令字中直接给出操作数的有效地址,如MOV AX,[8054H] EA=A
  • 间接寻址 指令字中给出的是操作数有效地址的地址 EA=(A)
  • 寄存器寻址 指令字中给出寄存器的编号,根据编号取寄存器的数值 EA=Ri
  • 寄存器间接寻址 与寄存器寻址不同的是寄存器存的数值是操作数的有效地址 EA=(Ri)
  • 偏移寻址 A由指令字给出,R隐含给出 A+R的内容 EA=A+®
    • 相对寻址 PC:程序计数器 EA=A+(PC)
    • 基址寻址 BR:基址寄存器 形式地址A可控,(BR)不可控 EA=A+(BR)
    • 变址寻址 IX:变址寄存器 形式地址A不可控,IX的内容可控 EA=A+(IX)

A表指令字给出的形式地址,(A)表A的内容,EA表有效地址

10.低字节地址为字地址:低位字节的地址是字的起始地址

0X1234(左边是高字节,右边是低字节(可理解成右面是个位所以小))

如0X4000:0X34 0X4001:0X12 即先存字符低位

习题

1.假设指令字长固定为16位,试设计一套指令系统满足以下要求:

1)有15条三地址指令。 2)有12条二地址指令。
3)有62条一地址指令。 4)有30条零地址指令。

答:三地址操作码15条用4位操作码即可,剩下的1111用作扩展(即只要看见前四个是1111那它就肯定是二地址指令)

12条二地址指令又需要4位操作码,即1111 0000 ~ 1111 1011(12条)

剩余的1111 1100 ~ 1111 1111可用来扩展一地址指令(即看到前缀是它就代表是一地址指令)

1111 1100 ~ 1111 1111有4种情况后面加4位可达24*4=64,大于一地址的62条,所以

1111 1100 0000 ~ 1111 1100 1111(16条)1111 1101 0000 ~ 1111 1101 1111(16条)

1111 1110 0000 ~ 1111 1110 1111(16条)1111 1111 0000 ~ 1111 1111 1101(14条)

剩余的1111 1111 1110 ~ 1111 1111 1111可用来扩展零地址指令

再加4位可表示16位,两种拓展码总共表示32种情况而题目0地址只有30条舍去最后两条即可

1111 1111 1110 0000 ~ 1111 1111 1110 1111(16条)

1111 1111 1111 0000 ~ 1111 1111 1111 1101(14条)

拓展码代表这个指令是0地址还是1地址,后面的才代表这种地址码有多少条指令

多地址指令操作码要最短(存放的地址多),0地址操作码占满16位,而三地址操作码仅占4位,剩下的12位用来存放三个地址

2.设相对寻址的转移指令占两个字节,第一节是操作码,第二字节是相对位移量(用补码表示),若CPU每当从存储器中取出一个字节时,即自动完成PC+1 -> PC。设当前PC的内容为2009H,要求转移到2000H地址,则该转移指令的第二字节的内容是(F5H)

答:当前PC为2009H,取指令后变为200BH(要先取指令再执行,取两次所以加2)

2000H-200BH=-11 (相对寻址都是加偏移量,只有偏移量是负的才能使PC数值减小)

-11的原码为1000 1011,反码为1111 0100,补码为1111 0101即F5H (题目说了用补码表示)

3.CISC和RISC的区别

image-20200611173134098

答:由于RISC比较简单,因此大多都是在一个时钟周期内完成。特殊的是RISC寄存器此CISC多,因此更能提高计算机速度。CISC更复杂因此种类啥的都比较多。RISC采用组合逻辑控制CISC才会用到微程序控制(可理解为RISC比较简单用不到那么复杂的微程序控制用逻辑电路即可)

4.某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令29条,二地址指令107条,每个地址字段为6位,则指令字长至少应该是____________24_________

答:三地址指令有29条,所以它的操作码至少为5位。25=32,它剩余32-29=3种操作码给二地址。而二地址比三地址少了一个地址的位数多了6位给操作码,因此它数量最大达3*64=192。所以指令字长最少为23位( 6 + 6 +6 + 5 = 23),因为计算机按字节编址,需要是8的倍数,所以指令字长至少应该是24位

同样是24位,3地址时是3个地址位+操作码5位,而2地址时是11位操作码和两个地址位

5.某计算机存储器按字编址(16位)读取这条指令后,PC的值自动加1,则说明该指令的长度是( 2 )个字节

答:主要看按字节编址还是按字编址。按字寻址可理解为把字编上号然后去找编号。PC加1的目的是自动指向下一条指令的地址即加了一个编号也就是16位,而16位占了2个字节

6.假设变址寄存器R 的内容为1000H,指令中的形式地址为 2000 H;地址 1000H 中的内容为2000H,地址 2000H 中的内容为 3000H,地址 3000 H 中的内容为 4000H, 则变址寻址方式下访问到的操作数是( D )。

A.1000H B.2000H C.3000H D.4000H

答:变址寻址中EA=A+®。这里的A即形式地址也就是指令中直接给出的,®表寄存器R的内容。EA=2000H+1000H=3000H,而这个3000H代表的是有效地址,根据地址取值即4000H

7.某计算机有16个通用寄存器,采用32位定长指令字操作码字段(含寻址方式位)为8位,Store指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式,若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则Store指令中偏移量的取值范围是 ( A )

A.-32768~+32767 B.-32767~+32768 C.-65536~+65535 D.-65535~+65536

答:采用32位定长指令字,其中操作码为8位,两个地址码一共占用32-8=24位。

而Store指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址,有 16 个通用寄存器,则寻址一个寄存器需要4 位。

源操作数中的寄存器直接寻址用掉4位, 而目的操作数采用基址寻址也要指定一个寄存器,同样用掉 4 位,则留给偏移址的位数为24-4-4=16 位。而偏移址用补码表示,16 位补码的表示范围为-32768~+32767

可类比8位补码表示范围是 -128~ +127,注意负数多一位

8.假定编译器将赋值语句“x=x+3;”转换为指令“add xaddr, 3”,其中xaddr是x对应的存储单元地址。若执行该指令的计算机采用页式虚拟存储管理方式,并配有相应的TLB,且Cache使用直写(Write Through)方式,则完成该指令功能需要访问主存的次数至少是( B )

A.0 B.1 C.2 D.3

答:上述指令的执行过程可分为取数、运算和写回过程,取数时读取xaddr可能不需要访问主存而直接访问Cache,但直写方式也即全写法必须要把数据同时写入Cache和主存,因此至少访问1次。

5.中央处理器

知识点

image-20200616172236584

1.CPU = 运算器(对数据加工) + 控制器(协调控制各指令序列) + Cache

2.CPU主要有如下5种功能

  • 指令控制:控制器自动形成指令的地址,并发出取指令的命令,将对应的指令取到控制器中。

  • 操作控制:取指令后,产生完成每条指令所需的控制命令

  • 时间控制:控制命令产生后,需要对各种控制命令加以时间上的控制

  • 数据加工:在执行的过程中,可能需要进行算术运算和逻辑运算

  • 中断处理:就是处理中断的能力

3.CPU至少需要六类寄存器,它们分别为

  • 数据缓冲寄存器(DR):暂存数据
  • 指令寄存器(IR):保存正在执行的一条指令
  • 程序计数器(PC):存放第一条指令的地址,每次加一更换成下条指令地址
  • 数据地址寄存器(AR):保存当前CPU访问的Cache中单元的地址
  • 通用寄存器(R0R3~):存放操作数和各种地址信息(如AX,BX等)
  • 状态字寄存器(PSW):保存各种状态条件控制标志,如进位标志、中断标志等

4.指令周期:CPU取出并执行一条指令的时间,由若干机器周期组成

机器周期: 完成某个独立操作的时间,由若干时钟周期组成

时钟周期: 最基本时间单位,由主频决定

5.指令执行方案:

  • 单指令周期 所有指令用相同的执行时间
  • 多指令周期 不同类型的指令用不同的步骤完成
  • 流水线方案 指令之间并行执行

6.CPU主频(时钟频率)对应的是时钟周期,每个机器周期(CPU周期)包含好几个时钟周期

7.大小顺序为:机器程序=微程序 > 微指令 > 微命令=微操作

命令:控制部件向执行部件发出的各种控制命令。而微操作是微命令的执行过程。

指令:若干微命令的集合

程序:若干微指令的有序集合,而一条机器指令对应着一个微程序

机器指令由微程序解释执行,微程序由微指令构成,微指令由微命令构成

8.微操作分为相容性和相斥性

  • 相容性:同一个CPU周期可以并行执行微操作(也叫兼容性)
  • 相斥性:同一CPU周期不能并行执行微操作

9.微命令编码

  • 直接控制法:每一位代表一个微命令。

  • 直接编码法:相斥的n个微命令可以采用编码法表示,占log2(n+1)位。

  • 混合编码法:相斥微命令采用直接编码法,相容微命令采用直接控制法。

10.数据相关分为以下三类,注意读后写(WAR)啥的英文缩写是从后往前读!

  • RAW(写后读):应该先写入再读,但现在没写入就读了,出现错误

  • WAR(读后写):应该先读再写,但现在是写入后再读了,出现错误

  • WAW(写后写):应该先一个写入另一个再写入,但现在写入的顺序反了,出现错误

数据旁路是解决数据相关的一种方法(不用等前一条指令把结果写回寄存器组,结果直接作为输入给下一个指令)

习题

1.XXX对程序员是透明的表示程序员看不见XXX(不可见就是不可改变)image-20200616192930989

2.判断RAW、WAR…image-20200617152100918

答:1️⃣ 先将结果送到R1,再取出R1参与运算。先写再读即写后读(RAW注意顺序)

2️⃣ 先读R2再将结果送到R2。先读再写即读后写(WAR)

3️⃣ 先将第一条指令结果送入R3再将第二条指令结果送到R3,先写后写即写后写

3.某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有33个微命令,构成5个互斥类,分别包含7、3、12、5和6个微命令,则操作控制字段至少有___________________15位___

答:33个微命令构成5个互斥类,分别包含7、3、12、5和6个微命令,另外每组必须增加一种不发命令的情况,则5个段分别需要8、4、13、6和7种状态,分别对应3(23=8)、2、4、3和3位,共15位。

4.CPU中跟踪指令后继地址的寄存器是_______程序计数器______

5.在微程序控制器中,构成控制信号序列的最小单位是( B )

A.机器指令 B.微命令 C.微指令 D.微程序

答:可以看到这几个选项中微命令最小所以选它

6.在微程序控制器中,执行指令微程序的首条微指令地址是( D )得到的。

A.程序计数器 B.前条微指令 C.μPC D.指令操作码映射

答:执行指令微程序的首条微指令地址由指令操作码译码的结果,通过专门的硬件提供。后续地址才会用到程序计数器。

7.指令流水线有取指(IF)、译码( ID)、执行(EX)、访存(MEM)、写回寄存器堆(WB)五个过程段,共有20条指令连续输人此流水线。

(1)画出流水处理的时空图,假设时钟周期为100ns。
(2)求流水线的实际吞吐率(单位时间里执行完毕的指令数)。
(3)求流水线的加速比。

答:(2)中20条指令花了24个时钟周期的时间直接计算即可(注意时间的单位)

(3)中的加速比指的是不使用流水线和使用流水线时间的比值也就是所需时钟周期个数之比。

不用流水线就是顺序执行,一个一个来即20*5(一个取值等过程需要一个时钟周期)

image-20200622154629411

6.总线系统

知识点

image-20200617162846524

1.总线:是连接多个部件的信息传输线,是各部件共享的传输介质。

2.总线大致分为三类:

  • 内部总线:CPU内部各寄存器与运算部件之间的总线
  • 系统总线:连接其他高速功能部件的总线
    • 数据总线:传送各功能部件之间的数据,为双向传输
    • 地址总线:指定主存和I/O设备接口电路地址,为单向传输
    • 控制总线:发出各种控制信号
  • I/O总线:中、低速I/O设备之间互相连接的总线

3.地址线和数据线复用:地址线和数据线用一条线,一个周期传地址,一个周期传数据

4.总线宽度:通常指数据总线的根数

总线带宽:单位时间内总线传输的位数 (可理解为数据传输速率)

5.总线结构可分为

  • 单总线结构:将CPU、主存、IO设备连接在一组总线上
  • 多总线结构:高速、中速、低速设备连接在不同的总线上同时工作,提高效率

6.CPU-PCI:北桥 PCI-ISA:南桥

CPU总线:也称CPU-存储器总线

PCI总线:连接高速的I/O设备

ISA总线:连接低速I/O设备

7.串行传送:每次一位传送,不管传多少数据只用一条线

并行传送:若有32条线,一次就能传送32位,快但是成本高

8.共享的总线会出现同一时刻多个设备竞争主线控制权,就要从中选择一个

  • 集中式仲裁 (重点)
    • 链式查询:离总线设备越近优先级越高
    • 计数器查询:地址线的计数值和请求总线的设备地址一致,该设备获得总线控制权
    • 独立请求:每个设备均有总线请求信号和总线同意信号,根据排队电路判定
  • 分布式仲裁

9.总线定时指事件出现在总线上的时序

  • 同步定时:采用统一的时钟信号协调发送和接收方的传送定时关系
  • 异步定时:同步是在各模块速度一致的情况使用,异步没有公共时钟,采用应答(握手)方式,主模块发请求信号待从模块反馈后开始通信

同步定时比异步定时传输频率高的原因正是其具有统一的公共时钟信号进行同步

10.系统总线标准分为:ISA、EISA、VESA、PCI、PCI-Express(可能出选择题)

习题

1.假设某系统总线在一个总线周期中并行传输4B信息,一个总线周期占用两个时钟周期,总线时钟频率为10MHz,则总线带宽是( 20MB/s )。

答:总线宽度是单位时间内传输的位数,通常用每秒钟传输的字节数表示。4B即4字节。总线时钟周期为1/10MHz=0.1us,由题意得每0.2us可传输4B。那么每秒可以传输4B/0.2us=4B/0.2*10-6s=20MB/s

2.答:CRT是纯平显示器 CPI是一条指令所需时钟周期个数 RAM是随机存储器image-20200617182657948

3.下列关于多总线结构的叙述中,错误的是 ____D

A.靠近CPU的总线速度较快 B.存储器总线可支持突发传送方式

C.总线之间须通过桥接器相连 D.PCI-Express×l6采用并行传输方式

答:突发传送方式把多个数据单元作为一个独立传输处理,从而最大化设备的吞吐量。一般用支持突发传送方式的总线提高存储器的读写效率。各总线通过桥接器相连,后者起流量交换作用PCI-Express总线都采用串行数据包传输数据

4.关于提高总线传输率的问题

image-20200617184609687

答:传输率就是每秒传输的数据。增加宽度、提高效率、突发传输(多个单元当做一个传送)都可以提高传输率。地址/数据线复用就是地址和数据线用一个线和每秒传输多少数据没关系。

5.某同步总线采用数据线和地址线复用方式,其中地址/数据线有32根,总线时钟频率为66MHz,每个时钟周期传送两次数据(上升沿和下降沿各传送一次数据),该总线的最大数据传输率(总线带宽)是 ___C

A.132MB/s B.264MB/s C.528MB/s D.1056MB/s

答:数据线32根代表一次传输32位即4字节(4B),66MHz即一秒有66M个时钟周期,而每个周期传两次(上下各一次),即66M/s×2×4B=528MB/s

6.下列关于总线设计的叙述中,错误的是 ___A

A.并行总线传输比串行总线传输速度快 B.采用信号线复用技术可减少信号线数量

C.采用突发传输方式可提高总线数据传输率 D.用分离事务通信方式可提高总线利用率

答:通常并行一次能传多位数据看着是比串行的速度快,但时钟频率达到一定程度时并行之间的导线会互相影响所以A不是绝对的。

信号线复用就是线复用不同周期传不一样的信息确实可以减少数量(注意复用)。

突发传输是一个总线周期可以传输多个存储地址连续的数据也可提高传输率。

分离事务通信即通过在不传送数据期间释放总线,使得其他申请者能使用总线,以此来提高总线利用率

7.在集中式总线仲裁中,(B)方式相应时间最快,(A)方式对(C)最敏感

A.菊花链方式 B.独立请求方式 C.电路故障 D.计数器定时查询

答:独立请求有请求信号和同意信号最快但也最贵。菊花链(链式)若ai位置发生故障则其之后的都不能工作

8.采用串行接口进行7位ASCII码传送,带有1位奇/偶校验位为1位起始位和1位停止位,当波特率为9600b/s时,字符传送速率为(A)

A.960 B.873 C.1371 D.480

答:波特率可理解为比特率,即每秒9600比特。7位ASCII和3位起始停止校验共10位,也就是1个字符要占10位。那传输率就等于总比特除1个字符所占比特即9600/10=960

7.外存与IO设备

知识点

1.磁道:就是磁盘的一个同心圆,每个磁道又分为多个扇区(磁道的某个弧段)

image-20200622202745718

2.密度:单位长度有多少个磁数(同心圆) 多少道

3.密度:单位磁道长度能记录的二进制的数 多少位

4.磁盘容量:面数×每面磁道数×每条磁道的二进制位数

5.磁盘平均存取时间:Ta=寻道(找哪一圈)+延迟(找圈中哪个扇区)+传输(读写扇区时间)

6.数据传输速率:磁盘单位时间向主机传送的字节数(字节/秒)

  • Dr=rN r为转速即每秒转多少圈(磁道),N为每个磁道的容量
  • Dr=D*v D为位密度即单位磁道的位数,v为线速度即每秒能沿着圈走多长

7.一个磁盘片有两个面,一个磁盘组有很多片(n),但最上面和最下面的面不能用(即2n-2可用)

8.显示器刷存带宽=分辨率×每个像素点颜色深度×刷新速率(帧频)

习题

1.磁盘组有6片磁盘, 每片有两个记录面,最上最下两个面不用。存储区域内径(直径)22cm,外径33cm,道密度为40道/cm,内层位密度400位/cm,转速6000转/分。问:

(1) 共有多少柱面?
(2)盘组总存储容量是多少?
(3)数据传输率多少?
(4)采用定长数据块记录格式,直接寻址的最小单位是什么?寻址命令中如何表示磁盘地址?
(5) 如果某文件长度超过一一个磁道的容量,应将它记录在同一个存储面上,还是记录在同一个柱面上?

答:(1):有效存储区域为16.5-11=5.5(cm),道密度为40道/cm,所以共40*5.5=220道即220个圆柱面(就是一面有多少圈)

要用半径而不是直径因为总圈数用半径算即可,另一半和这一半用的是同一个圈

(2):内层磁道周长为2πR=2X3.14X11= 69.08(cm) 因为给的是内径密度所以算内径周长
每道信息量=400位/cmX 69.08cm=27632 位= 3454B 即一圈信息量 位密度×圈长度
每面信息量= 3454BX 220= 759880B 一面一共220圈 道信息×道数
盘组总容量= 759880BX10=7 598 800B 6片可用的面为10 面信息×面数

(3):磁盘数据传输率Dr= rN N为每条磁道容量,N=3454B
r为磁盘转速,r=6000转/60秒=100转/秒 (注意换算单位!!!)
D,=rN= 100X 3454B= = 345400B/s 每条磁道容量×磁道数量

注意如果要转换成KB/s,除1024而不是除1000

(4):最小单位是一个记录块(一个扇区)

此地址格式表示有4台磁盘,每台有16个记录面,每面有256个磁道,每道有16个扇区

image-20200610184101789

台号(一般为2)—>磁道—>面数—>扇区(一般为4)

(5):如果某文件长度超过一个磁道的容量,应将它记录在同一个柱面上,因为不需要重新找道,数据读/写速度快。

同一柱面同时读的是多个存储面相同位置的那一圈,同一面那就得在不同圈,需要找道也就是找到那一圈的位置。

2.若磁盘转速为7200 转/分,平均寻道时间为 8ms,每个磁道包含 1000 个扇区,则访问一个扇区的平均存取时间大约是( B )

A.8.1ms B.12.2ms C.16.3ms D.20.5ms

答:存取时间=寻道时间+延迟时间+传输时间

延迟时间等于旋转半圈的时间,1分钟7200圈,那半圈时间为 (60/7200)/2=4.17ms

传输时间等于转过一个扇区的时间即为(60/7200)/1000=0.01ms

所以为4.17+0.01+8=12.18ms,保留一位小数则为 12.2ms

3.假定一台计算机的显示存储器用DRAM芯片实现,若要求显示分辨率为1600×1200,颜色深度为24位,帧频为85Hz,显存总带宽的50%用来刷新屏幕,则需要的显存总带宽至少约为( D )

A.245Mbit/s B.979Mbit/s C.1958Mbit/s D.7834Mbit/s

答:刷新所需带宽=分辨率×色深×帧频=1600×1200×24bit×85/s=3916.8Mbit/s

因为显存总带宽的50%用来刷新屏幕,所以显存总带宽为3916.8Mbit/s×2=7834Mbit/s

4.磁盘的盘面上有很多半径不同的同心圆,这些同心圆称为( B )

A、扇区 B、磁道 C、柱面 D、磁表面

答:可以把磁盘想象成一摞蚊香。磁道就是蚊香的一圈,扇区就是蚊香一圈的某个弧段。而柱面相当于在一摞蚊香中间插个柱子那个圆柱就是柱面。读取信息时同时读取一摞蚊香的同一圈(像老式留音机一样)

5.已知某磁盘存储器转速为2400转/分,每个记录面道数为200道,平均找道时间为60ms,每道存储容量为96Kb,求磁盘的存取时间与数据传输率。

答:存取时间=平均查找时间+平均等待时间(半圈时间)=60+(60/2400)*1/2*1000=72.5ms

Dr=96*(2400/60)=3840Kb/s=480KB/s

注意b是位,B是字节,1B=8b

8.输入输出系统

知识点

image-20200618151509519

1.CPU管理外围设备大致有三种方式 下面类比成让10个孩子分别吃两个雪糕的问题

  • 程序查询方式:先盯着甲吃完一个再给一个然后盯着乙吃完,以此类推
  • 程序中断方式:每人发一根,谁吃完举手报告再发第二根,等待过程可干其他的事
  • 直接内存访问(DMA)方式:每人拿两根,都吃完再报告

2.程序查询方式下,CPU和外围设备之间的传送完全靠计算机程序控制,需要输入输出时,CPU暂停主程序转去执行设备的输入输出服务程序。简单经济但浪费时间。

DMA方式传送数据,每传送一个数据就要占用一个存储周期时间

DMA方式下DMA控制器从CPU完全接管对总线的控制,数据交换不用经过CPU,直接在内存和I/O设备之间进行。

3.中断处理过程由硬件和软件完成

  • 响应中断:有请求就得有响应
  • 关中断:不再受理其它中断 (要用到状态条件寄存器PSW)
  • 保存PC:即保存断点,使得中断服务子程序处理完后可以返回原主程序
  • 保存现场:中断服务子程序修改的寄存器可能会与原寄存器冲突所以先保存 (栈实现)
  • 设备服务:也就是中断处理程序,该咋处理咋处理
  • 开中断:表示CPU现在可以受理中断了
  • 中断返回:先恢复现场(恢复原保存的寄存器和标志位)再恢复断点(返回原主程序)

image-20200618154711318

从图中我们也可以看出CPU是在结束一个指令周期后检测中断请求信号

4.中断屏蔽触发器(IM)置0表示CPU可受理外界中断请求,为1表不受理外界中断(1为真即屏蔽)

单级中断:所有中断源处于同一级,排成一行,离CPU近的优先权高

多级中断:把中断源分成若干级别,级别高的可以打断级别低的(同级的不行)

5.中断向量地址是指中断服务程序入口地址

习题

1.某机器有 4个中断源,中断响应优先级按1→2→3→4降序排列,若想将中断处理
次序改为3→1→4→2,则1、2、3、4中断源对应的屏蔽字分别是为___________________

答:屏蔽字为1表示真即屏蔽了,就是不能打断它的意思,那为0就是可以打断它

image-20200618160111614

主要是看中断处理次序,比如1的屏蔽字,1前面有3,即只有3可以打断它,那么把响应优先级的第三位置为0其他均为1。也可看1后面有4和2,意味着1、4、2不能打断他,即把第1、2、4位置1其他置0即可 (两种思想一个结果)

以后统一用第一种置0的不容易错

2.屏蔽字问题不要被迷惑,只看响应和处理优先级就行image-20200618161107440

答:本题给了中断屏蔽字格式为M4M3…,那么屏蔽字的第一位到底代表L4还是L0

M4对应L4级别也就是最高级别,而最高级别是L0,所以第一位代表的是L0

其实这种题只看优先级顺序就行,优先级为L0L4那么屏蔽字每位对应的也是L0~L4~

可以打断L1的为L4、L0和L2那么把优先级中这些位置置为0即可

3.某计算机处理器主频为50MHz,采用定时查询方式控制设备A的I/O,查询程序运行一次所用的时钟周期至少为500。在设备A工作期间,为保证数据不丢失,每秒需对其查询至少200次,则CPU用于设备A的I/O时间占整个CPU时间的百分比至少是( 0.2% )

答:每次查询需要500个周期,每秒要查询200次即需要200*500=105个周期

而主频为50MHz即每秒有50*106个周期

那么占比为 105/50*106=1/500=0.002= 0.2%

4.中断服务程序执行过程image-20200618164623663

答:此题选A。注意本题问的是中断服务程序的顺序也就是知识点中图片的右半部分,而保存断点(区别保存现场)和关中断都是中断隐指令的操作,由硬件完成

5.I/O总线:主机和I/O设备之前通过这个总线连接

image-20200618183826339

答:I/O总线即输入输出总线。肯定就得有指出啥指令的命令字。判断其状态的状态字。而且也得有中断,比如键盘输入引起的中断那肯定也得有中断类型号。

6.下列选项中,能引起外部中断的事件是( A )

A.键盘输入 B.除数为0 C.浮点运算下溢 D.访存缺页

答:服务于自己就是内中断,服务于别人就是外中断

A:键盘输入属于外部事件,CPU要想读取外部的输入就得执行中断暂停主程序转而去读取外部键盘输入

B:除数为0属于异常,也就是内中断,发生在CPU内部。

C:浮点运算下溢将按机器零处理,不会产生中断。

D:访存缺页属于CPU执行指令时产生的中断,也不属于外部中断。

此题只需看外部这两个字就可快速选择键盘,其他仨都是CPU内部的东西

7.中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存而子程序调用不需 要保存其内容的是____________B_________

A.程序计数器 B.程序状态字寄存器 C.通用数据寄存器 D.通用地址寄存器

答:程序计数器即PC二者都需要,因为都要返回原主程序。而程序状态字寄存器(PSW)里面保存中断允许标志位和系统工作状态(如进位标志等)等信息。执行中断隐指令时,需要关中断,保护PC需要PC和PSW。所以子程序调用和PSW无关

8.中断I/O和DMA的比较

image-20200618192202277

答:中断处理方式:在I/O设备输入每个数据的过程中,由于无需CPU干预,因而可使CPU与I/O设备并行工作。仅当输完一个数据时,才需CPU花费极短的时间去做些中断处理。因此中断申请使用的是CPU处理时间,发生的时间是在一条指令执行结束之后,数据是在软件的控制下完成传送。而DMA方式与之不同。DMA方式:数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;DMA方式每次申请的是总线的使用权,所传送的数据是从设备直接送入内存的,或者相反;仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。答案D的说法不正确。

9.某同步总线的时钟频率为100MHz,宽度为32位,地址/数据线复用,每传输一个地址或数据占用一个时钟周期。若该总线支持突发(猝发)传输方式,则一次“主存写”总线事务传输128位数据所需要的时间至少是( C )。

A.20ns B.40ns C.50ns D.80ns

答:总线频率为100MHz,则时钟周期为10ns。由于支持突发传送可以连续传送地址连续的数据。传送地址10ns,传送128位数据即4个数据40ns,共需50ns。

平常传送一个数据需要两个时钟周期,先传地址再传数据。突发传输下可将多个连续的数据看成一个数据(不是一周期传完是不用专门一个一个传地址),也就是先传首地址,之后就可每一个周期传一次数据

10.周期挪用方式常用于___________A___方式的输入/输出中。

A.DMA B.中断 C.程序传送 D.通道

答:周期挪用是指利用CPU不访问存储器的那些周期来实现DMA操作,此时DMA可以使用总线而不用通知CPU也不会妨碍CPU的工作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128676.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 千分位的写法_千分位格式

    千分位的写法_千分位格式之前看到一道面试题,要求使用js写千分位,当时面试时有点懵逼,但是后来参考网上的写法与自己的思考,写出了千分位。以下是通过网上的代码,本人进行了进一步优化后的代码,仅供参考。相比较与网上的方法,我

  • forkjoin用法_fork join_none

    forkjoin用法_fork join_noneFork/Join是一个分而治之的任务框架,如一个任务需要多线程执行,分割成很多块计算的时候,可以采用这种方法。动态规范:和分而治之不同的是,每个小任务之间互相联系。工作密取:分而治之分割了每个任务之后,某个线程提前完成了任务,就会去其他线程偷取任务来完成,加快执行效率。同时,第一个分配的线程是从队列中的头部拿任务,当完成任务的线程去其他队列拿任务的时候是从尾部拿任务,所以这样就避免了竞争。在Java的Fork/Join框架中,使用两个类完成上述操作:  1.ForkJoinTask:我们要使用F

    2022年10月22日
  • kafka的使用场景举例_kafka一般用来做什么

    kafka的使用场景举例_kafka一般用来做什么关于消息队列的使用一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步…

    2022年10月15日
  • vim编辑保存退出「建议收藏」

    vim编辑保存退出「建议收藏」vim编辑保存退出命令vim要打开的文件名字比如要打开test.log命令为:vimtest.log注意:如果不存在test.log则会自动创建进入编辑器后按字母“i”即可进入编辑状态(此时左下角会出现“插入”)退出的时候分为4种情况:保存退出、正常退出、不保存退出以及强制退出 2.1:保存退出:按“Esc”键后此时的“插入”会消失,然后按Shift+zz就可以保存修改内容并退出 2.2:不保存退出:当修改修改了一部分内容后发现修改错了,此时就会进

  • C/C++程序员必须熟练应用的开源项目

    作为一个经验丰富的C/C++程序员,肯定亲手写过各种功能的代码,比如封装过数据库访问的类,封装过网络通信的类,封装过日志操作的类,封装过文件访问的类,封装过UI界面库等,也在实际的项目中应

    2021年12月27日
  • python中isinstance函数

    python中isinstance函数1、描述python中isinstance()函数,是python中的一个内置函数,用来判断一个函数是否是一个已知的类型,类似type()。2、语法isinstance(object,class

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号