第一章 计算机系统概论
1.2.1计算机工作过程
1.2.4计算机性能指标
机器字长、指令字长、存储字长的区别和联系是什么?
- 机器字长:计算机能直接处理的二进制数据的位数,机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度。
- 指令字长:一个指令字中包含的二进制代码的位数。
- 存储字长:一个存储单元存储的二进制代码的长度。等于MDR的位数, 它们都必须是字节的整数倍。
- 数据字长:数据总线一次能传送信息的位数,它可以不等于MDR的位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2次访存来取出一条指令,因此取指周期为机器周期的2倍;若指令字长等于存储字长,则取指周期等于机器周期。
早期的计算机存储字长一般和机器的指令字长与数据字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指特别为64位架构的计算机而设计的操作系统,它能够利用64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是无法使用64位操作系统的。
1.3计算机硬件
“程序存储”:指令以代码的形式事先输入到计算机的主存储器中,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。即按地址访问并顺序执行指令
- 冯诺曼体系结构特点:
- 计算机硬件系统由五大部件组成(存储器、运算器、控制器、输出设备、输入设备)
- 指令和数据以同等地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心
-
冯•诺依曼计算机体系的基本思想是什么?按此思想设计的计算机硬件系统由哪些部分组成?
冯诺依曼计算机体系的思想是存储程序和程序控制,也就是将用指令序列描述的解题程序与原始数据一起存储到计算机中,计算机只要一启动,就能自动地逐条取出指令并执行,直至程序执行完毕,得到计算结果为止。
按此思想设计的计算机硬件系统包含运算器、控制器、存储器、输入设备和输出设备五个基本部件.
1.4计算机软件
- 机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。机器语言是计算机唯一可以直接识别和执行的语言。
- 汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
- 高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或直接由高级语言程序翻译成机器语言程序。
1.5 计算机系统的层次结构
计算机系统的五大层次结构:微程序机器、传统机器机器、操作系统机器、汇编语言机器、高级语言机器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KYYfSwtO-1675673236571)(C:\Users\sky\AppData\Roaming\Typora\typora-user-images\image-20221116163840686.png)]
1.5.1软硬件的等价性
软件与硬件的逻辑功能是等效的。因为任何操作可以由软件来实现,也可以由硬件来实现;任何指令的执行可以由硬件来完成,也可以由软件来完成。对于某一机器功能是采用硬件方案还是软件方案,取决于器件价格、速度、可靠性、存储容量和变更周期等因素。
软件和硬件是两种完全不同的形态,硬件是实体,是物质基础;软件是一种信息,看不见、摸不到。但在逻辑功能上,软件和硬件是等效的。因此,在计算机系统中,许多功能既可以由硬件直接实现,又可以在硬件的配合下由软件实现。
一个最大的区别就是,硬件实现比软件实现的速度快很多,但是成本也高!所以,芯片在流片之后,如果发现bug可以用软件修复就用软件修复!
例如,乘法运算既可用专门的乘法器(主要由加法器和移位器组成)实现,也可用乘法子程序(主要由加法指令和移位指令等组成)来实现。
第二章 运算方法和运算器
2.1数据与文字的表示方法
- 无符号数和有符号数
- 无符号数:指整个机器字长的全部二进制位均为数值位,没有符号位。若机器字长为8位,则数的表示范围 0~28-1 , 即0~255。
- 有符号数:在机器中,数的正负我们无法识别,但是我们可以用二进制数来代替正负号。一般‘0’为正,‘1’为负,符号位一般在有效数的最前面。若机器字长为8位,是有符号数,则数的表示范围为 -27~27-1 ,即-128~127。
-
原码,反码,补码
原码 反码 补码 移码 正数 01111010 01111010 01111010 11111010 负数 11111010 10000101 10000110 00000101 0 +0和-0,00000000,10000000 +0和-0,00000000,11111111 只有0,00000000 只有0,10000000
- 原码真值即符号位连接后面的数值
- 补码真值即当作无符号位累加求值
- 原码和对应的补码真值相同
- 正数的移码符号位取反,负数的全部取反
- 定点数的表示
-
定点整数
-
定点小数
例子:
(1)-58表示为二进制定点数表示(11位补码表示,其中含数符1位)
58的二进制表示为111010,定点数表示为10000111010,补码为11111000110
-
浮点数表示
例子
(1)-58表示为二进制浮点数表示(尾数补码表示取11 位,其中数符取1 位;阶码移码表示取5 位,其中含1位阶符)
-58的浮点数表示为
–( 0.1110100000 ) × 2 110 –\text{(}0.1110100000\text{)} \times 2\mathop{{}}\nolimits^{{110}} –(0.1110100000)×2110
所以二进制浮点数表示为10110(阶码用移码表示,正数的移码只改变符号位),10001100000 (先用原码移位)
-
奇偶校验
数据 偶校验码C 奇校验码C 10101010 101010100 101010101 01010100 010101001 010101000
- 看1的数量,为奇(偶)数,偶校验码添1(0),奇校验码添0(1)
- 奇偶校验不能纠正代码中出现的错误
- 溢出:运算过程中,出现大于字长绝对值的现象
- 正溢出:正数相加为负数
- 负溢出:负数相加为正数
检测方法:单符号位和双符号位
- 单符号位
最高有效位产生进位,符号位不进位,为正溢。最高有效位不产生进位,符号位进位,为负溢。
- 双符号位
运算时添加一位与符号位相同的二进制数进行运算,若运算结果双符号位相同,则不溢出,否则溢出(10为负溢,01为正溢)
在定点机中,当运算结果发生溢出时表示出错,机器通过逻辑电路时自动检查出这种溢出,并进行中断处理
2.2定点加、减法运算
-
采用补码就是了,注意正数的补码是自身就行,减法运算转换为加法运算
-
分数转换成二进制方法
例如:11/16
对分子分母分别进行带权分解,即
2 3 + 2 1 + 2 0 2 4 = 2 − 1 + 2 − 3 + 2 − 4 = 0.1011 {\frac{{{2\mathop{{}}\nolimits^{{3}}+2\mathop{{}}\nolimits^{{1}}+2\mathop{{}}\nolimits^{{0}}}}}{{2\mathop{{}}\nolimits^{{4}}}}=2}\mathop{{}}\nolimits^{{-1}}+2\mathop{{}}\nolimits^{{-3}}+2\mathop{{}}\nolimits^{{-4}}=0.1011 2423+21+20=2−1+2−3+2−4=0.1011
2.3定点乘法运算
1.带求补器的原码阵列的乘法器
- 先对符号位进行异或操作算出符号位,再将尾数相乘即可
2.带求补器的补码阵列的乘法器
步骤
- 写出A与B的补码,将A与B的符号位进行异或操作
- 算前求补器输出:A与B补码的尾数
- 计算A与B补码的尾数的乘积
- 算后求补器输出:第三点的结果,加上符号位得出最终结果并划算成十进制
2.4定点除法运算
1.恢复余数法
- 做除法时,机器不能判断够不够减,只能先做减法,若余数为正,则可以减,否则不能,并将余数和除数相加恢复到原来余数
2.加减交替法
- 运算过程出现不够减,则不必恢复余数,根据余数的符号,可以继续往下运算,因此步数固定,控制简单
运算一步加减完成时,遵循的规则:
- 当余数为正时,表示够减,即商上1,在进行下一次商时,将除数(此时为正)右移一位,减去除数。
- 当余数为负时,表示不够减,即商上0,在进行下一次商时,将除数(此时为正)右移一位,加上除数。
- 运算时需要双符号补码,所以应先把给定的定点数转换为补码形式,需要注意的是,除数的负数也要转换为双符号补码,方便后面作减法。因为在计算机中减一个数等于加这个数的负数。而补码正是用来做加减法的。
- 操作的步数n 是由要求的n位商决定的,如果第n步 余数为负,则需增加一步恢复余数,即 +Y ,增加的这一步不移位(除数的位数)。
例题:x=0.101001, y=0.111, 用加减交替法,求x÷y
[解:] [x]补=0.101001 , [y]补=0.111 , [-y]补=1.001
0.1 0 1 0 0 1 ;被除数
+[-y]补 1.0 0 1 ;第一步减除数y
————————————————————————
1.1 1 0 0 0 1 <0 q4=0 ;余数为负,商0
+[y]补→ 0.0 1 1 1 ;除数右移1位加
————————————————————————
0.0 0 1 1 0 1 >0 q3=1 ;余数为正,商1
+[-y]补→ 1.1 1 0 0 1 ;除数右移2位减
————————————————————————
1.1 1 1 1 1 1 <0 q2=0 ;余数为负,商0
+[y]补→ 0.0 0 0 1 1 1 ;除数右移3位加
————————————————————————
0.0 0 0 1 1 0 >0 q1=1 ;余数为正,商1
商q=q4.q3q2q1=0.101 , 余数r=(0.00r6r5r4r3)=0.000110
2.6 浮点运算方法与浮点运算器
- 浮点数补码表示规格化:数符和尾数小数点后第一位数不同
- 浮点数原码表示规格化:尾数的第一数位为1,数符任意
1.浮点数加减法
步骤:
-
舍入处理(对阶和向右规格化时)
就近舍入:0舍1入
朝0舍入:截尾
朝+∞舍入:正数多余位不全为”0”,进1;负数,截尾
朝-∞ 舍入:负数多余位不全为”0”,进1;正数,截尾
末位恒置“1 -
舍入后规格化,阶码溢出判断和处理
2.浮点数乘除法
不存在两个数对阶
-
在计算机中,为什么要采用二进制来表示数据?
从可行性来说,采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0、1两个数码。使用二进制,电子器件具有实现的可行性。
从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化(十进制的乘法九九口诀表有55条公式,而二进制乘法只有4条规则)从逻辑上来说,由于二进制0和1正好和逻辑代数的假( false)和真(true)相对应,有逻辑代数的理论基础,用二进制表示二值逻辑很自然
第三章 存储系统
3.1 存储系统概述
3.1.1 存储系统的层次结构
- 寄存器:存放正在执行的指令,正在参与运算的数据
- 高速缓冲存储器(cache):高速小容量半导体存储器。
- 主存储器(主存、内存):存放计算机运行期间的大量程序和数据。
- 外存储器(外存、辅存),它是大容量辅助存储器。 (不能直接被CPU访问)
1.为什么要将多种存储器组成多级存储系统?
存储器要求容量大、速度快、成本低(提高性价比 → 多级存储器)
2.构成多级存储系统的理论基础是什么?
程序的局部性原理:在某一段时间内频繁访问某一局部的地址空间,而对此范围以外的地址空间则很少访问的现象。
- 时间局部性: 最近被访问的信息很可能还要被访问。
- 空间局部性: 最近被访问的信息的邻近地址的信息也可能被访问
3.1.2 存储器的分类
- 按存储介质分类 :半导体/磁表面/光存储器
- 按存取方式分类:随机/顺序存取/半顺序存取
- 按读写功能分类:RAM,ROM
- RAM:静态SRAM,动态DRAM
- ROM:掩膜ROM,PROM,EPROM,EEPROM、FLASH
- 按信息易失性分类:易失性、非易失性
- 按存储器系统中的作用分类:主/辅
3.1.3 存储器的编址和端模式
- 存储单元:存放一个存储字的所有存储元集合
- 存储位元:存储一位二进制代码(最小的存储单位)
- 存储体:多个存储单元组成存储体
- 字存储单元:存放一个机器字的存储单元,相应的单元地址叫字地址。
- 字节存储单元:存放一个字节的单元,相应的地址称为字节地址。
- 端模式:一个存储字内部的多字节排列方式
- 大端模式:
- 小端模式:
3.1.4存储器的技术指标
- 存储容量:指一个存储器中可以存储的信息比特数。(KB、MB、GB、TB、PB、EB、ZB)
- 存取时间又称存储器访问时间:指从存储器接收到读/写命令开始到信息被读出或写入完成所需的时间
- 存储周期/存取周期:指一次完整的存取操作所需时间,即CPU连续两次访问存储器的最小间隔时间。
- 存储器带宽/数据传输速率:单位时间里存储器所存取的信息量,通常以位/秒或字节/秒做度量单位。
1.存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次?
- 存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。
- 综合下述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。
-
Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。
-
主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。
- 主存与CACHE之间的信息调度功能全部由硬件自动完成。而主存—辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部份通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。
这两个层次上的调度或转换操作对于程序员来说都是透明的。
2. 什么是高速缓冲存储器? 它与主存是什么关系? 其基本工作过程如何?
- 高速缓冲存储器位于主存和CPU 之间,用来存放当前正在执行的程序段和数据中的活跃部分,使CPU 的访存操作大多数针对Cache 进行,从而使程序的执行速度大大提高。
- 高速缓冲存储器的存取速度接近于CPU 的速度,但是容量较小,它保存的信息只是主存中最急需处理的若干块的副本。
- 当CPU 发出读请求时,如果Cache 命中,就直接对Cache 进行读操作,与主存无关;如果Cache 不命中,则仍需访问主存,并把该块信息一次从主存调入Cache 内。若此时Cache 已满,则须根据某种替换算法,用这个块替换掉Cache 中原来的某块信息。
3.2 静态随机存取存储器SRAM
3.2.1 基本的静态存储元阵列
地址线,6根,2^6=64根行线;数据线,4根 字长4位
- 32K*8位SRAM,有多少根地址线、选择线、数据线?
- 地址线15根、选择线32768根(32K)、数据线8根
数据线看位数,地址线等于存储容量除以位数
3.2.4 存储器容量的扩充
1.位扩展(给定芯片位数不够 →位扩展)
芯片数量=设计要求的存储器容量/选择芯片存储器容量
2.子扩展(给定芯片存储容量不够 →字扩展)
练习:存储器与cpu连接
设有若干片256K×8位的SRAM芯片,构成2048×32位的存储器问:
(1) 需要多少片RAM芯片?
(2) 该存储器需要多少字节地址位?
(3) 如何构成2048K×32位的存储器?画出该存储器与CPU连接的结构图,设CPU的接口信号有地址信号、数据信号、控制信号MREQ#和R/W#
进行了字扩展和位扩展,其中地址线最高三位作为片选地址,低21位作为片内地址,此处的”片“包含4片,A0,A1选择各字节
3.3 动态随机存取存储器DRAM
DRAM特点:
-
存储元件少,存储密度高(集成度高,容量大)
-
需要刷新,附属电路复杂,速度慢
DRAM为什么需要刷新?如何刷新?(两点原因)
读出过程破坏了电容上存储的信息(读后刷新),电容在不停漏电(定时刷新)
-
为什么DRAM需要分行列地址分时传送,而SRAM可以一次送地址?
DRAM容量大,地址线多
-
1M需要20根地址线,芯片只有10个地址引脚,怎么办
将地址分成行列地址两部分分时传送(减少芯片引脚数)
1.为什么每出现新一代存储器芯片,容量至少提高到4倍
行地址和列地址分时复用, 每出现新一代存储器芯片,至少要增加一根地址线每加一根地址线,则行地址和列地址各增加一位,所以行数和列数各增加一倍。因而容量至少提高到4倍。
3.4 只读存储器ROM
1.ROM
只读存储器,只能读出,不能写入。非易失性。存储不需要修改或不需要常修改的数据(引导加载程序,监控程序等)ROM内容必须在它工作以前写入。
2.分类
- 掩模ROM:存储内容固定,生产厂家先写入
- 可编程ROM:用户后写入,有些可多次写入
- 一次性编程的PROM
- 多次编程的EPROM和^2PROM
3.5 并行存储器
问题:CPU与主存速度不匹配
解决方法:
1、芯片技术
2、结构技术:改进CPU与主存直接的连接方式,提高CPU和主存之间的数据传输率(并行存储器)
3、系统结构技术:采用分层存储结构解决存储器访问速度(cache、虚拟存储器)
3.5.1 双端口存储器
同一个存储器具有两组相互独立的读写控制电路,可进行并行的独立读写操作(左端,右端)
3.5.2 多模块交叉存储器
1.顺序方式
地址:高位选模块,低位选块内地址
特点:某个模块进行存取时,其他模块不工作
优点:某一模块出现故障时,其他模块可以照常工作,通过增添模块来扩充存储器容量比较方便
缺点:各模块串行工作,存储器的带宽受到了限制。
2.交叉方式
特点:每个模块都有自己的读写控制电路、地址寄存器和数据寄存器,可以独立与CPU传送信息。优点:若程序或数据连续存放,会提高主存的访问速度。(n个存储体提高速度约n倍)
3.6 Cache存储器
3.6.1 cache基本原理
1、cache的功能
- 作用:cache介于cpu和主存之间,解决CPU和主存之间的速度不匹配问题
- 原理:局部性原理(空间、时间)
- 构成:小容量的高速的SRAM。
- 位置:Cache有在CPU内的cache和主板上的cache
- 实现:全由硬件实现,对程序员透明
- 数据交换单位:cache与CPU数据交换以字为单位,cache与内存数据交换以块为单位
问题:什么叫“对程序员透明”?
答:无论它的内部是如何实现的,它提供的对外接口是一致的,调用接口的人无需关心其内部实现原理。
2、cache基本原理
1、当CPU读取主存中一个字时,便发出此字的内存地址到cache和主存。
2、此时cache控制逻辑依据地址判断此字是否在cache中:
①若是,此字立即传送给CPU;
②若非,则用主存读周期把此字从主存读出送到CPU,与此同时,把含有这个字的整个数据块从主存读出送到cache中。
3、 Cache的命中率
增加cache的目的:使主存的平均读出时间尽可能接近cache的读出时间(cache的命中率应接近于1。由于程序访问的局部性,实现这个目标是可能的。)
4、 Cache设计原则
命中率:cache命中率尽可能高
透明性:cache对cpu而言是透明的。不论是否有cache,CPU访存的方法是一样的。软件不需要增加任何指令就可以访问
3.6.2 主存与Cache的地址映射
还是这篇文章好
(58条消息) 计算机组成原理——Cache与主存的地址映射_白芷加茯苓的博客-CSDN博客_主存地址和主存标记的位数
地址映射:采用某种方法把主存块地址定位到cache中。
三种映射方法:
- 全相联映射方法
- 直接映射方法
- 组相联映射方法
1、全相联映射
- cache分行,内存分块,行块等长,行/块内分字
- 将cache每行分为块地址(块号、块标记)和块内容(字)
- 内存的任意一个块都可以直接拷贝到cache的任何一行上。
访问过程:比较电路将内存地址的块号与Cache中的标记进行比较,相同表示命中,访问相应单元;如果没有命中访问内存,CPU 直接访问内存,并将被访问内存的相对应块写入Cache
优点:存放灵活,冲突少
缺点:比较电路设计难,成本高 →容量小
2、直接映射
- 多对一映射,但一个主存块只能拷贝到cache的一个特定行位置
- i (cache的行号) = j (主存块号) mod m (cache中的总行数)
访问过程:利用内存地址的区内块号(行号)选择相应cache行;把对应cache行的行标记与内存地址的区号进行比较,相同表示命中,访问Cache;如果没有命中,访问内存,并将相应块写入Cache
优点:硬件简单,成本低,地址变换速度快 → 大容量
缺点:冲突多 → 置换多 → cache效率下降
3、组相联映射
将cache分成u组,每组v行,主存块存放到哪个组是固定的,至于存到该组哪一行是灵活的,(组间采用直接映射方式,组内采用全相联的映射方式)
- m (cache总行数)=u (组数)×v (每组行数) 组号 q=j (内存块号) mod u (cache组数)
- 说明:u=1,全相联映射;v=1,直接映射一般v较小,是2的幂,称之为v路组相联cache
全相联映射特点:
优点:灵活性好,命中率高
缺点:比较电路设计难,成本高 →容量小
直接映射特点:
优点:硬件简单,成本低 → 大容量
缺点:冲突多
组相联:全相联映射和直接映射的组合(折中)
例题:某存储系统中,主存容量是Cache容量的4096倍,Cache被分为64个块,当主存地址和Cache地址采用直接映射方式时,地址映射表的大小就为(64×13bit)。(假设不考虑一致维护和替换算法位)
地址映射表也就是标记阵列,由于Cache分为64块,那么Cache有64行,采用直接映射,一行相当于一组。所以该标记阵列每行存储一个标记项,其中主存标记项为12bit,加上一位有效位,为13位
3.6.3 替换策略
- cache工作原理要求它尽量保存最新数据,(当cache满,但又有新块要进入cache时)必然要产生替换,即需要使用替换策略或替换算法。
- 对直接映射的cache来说,只要把此特定位置上的原主存块换出cache即可。(不需要替换算法)
- 对全相联和组相联cache来说, 就要从允许存放新主存块的若干特定行中选取一行换出
①最不经常使用(LFU)算法:
将一段时间内被访问次数最少的那行数据换出。每行设置一个计数器。从0开始计数,每访问一次, 被访行的计数器增1。当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。
②近期最少使用(LRU)算法
将近期内长久未被访问过的行换出。每行也设置一个计数器,cache每命中一次,命中行计数器清零,其它各行计数器增1。当需要替换时,将计数值最大的行换出。(命中率较高)
③随机替换(不需要算法)
从特定的行位置中随机地选取一行换出。在硬件上容易实现,且速度也比前两种策略快。
缺点是降低了命中率和cache工作效率。
LRU和LFU的区别
LRU关键是看数据最后一次被使用到发生替换的时间长短,时间越长,数据就会被置换;
LFU关键是看一定时间段内页面被使用的频率(次数),使用频率越低,数据就会被置换。
3.7 虚拟存储器
3.7.1 虚拟存储器的基本概念
1、实地址与虚地址
- 虚地址:用户编制程序时使用的地址,其对应的存储空间称为虚存空间或逻辑地址空间(由编译程序生成,受辅存容量限制)
- 实地址:计算机物理内存的访问地址,其对应的存储空间称为物理存储空间或主存空间(由CPU地址引脚送出,受地址总线宽度限制)
- 程序的再定位:程序进行虚地址到实地址转换的过程(虚存空间可远远大于实存空间,逻辑上扩大了内存容量)
2、虚存的访问过程
- 用户程序按照虚地址编程并存放在辅存中。
- 程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调入实存。
- 每次访存时,首先判断该虚地址所对应的部分是否在实存中:
- 如果是,则进行地址转换并用实地址访问主存;
- 否则,按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。
3、cache与虚存的异同
- 三级存储体系:cache存储器、主存、辅存。
- cache和主存构成了系统的内存。
- 主存和辅存构成虚存。
- cache-主存中间有辅助硬件,主存-辅存中间有辅助软硬件负责地址变换与管理
相同点:
①出发点相同:提高存储系统的性价比
②原理相同:利用了程序运行时的局部性原理
不同点:
①侧重点不同:cache解决主存与CPU的速度差异问题,虚存解决存储容量问题
②数据通路不同:
cache与CPU和主存之间均有直接访问通路,CPU可直接访问cache和主存;
辅存与CPU之间不存在直接的数据通路,辅存内容要先调入主存才能被CPU访问
③透明性不同:
cache的管理完全由硬件完成,对程序员透明
虚存由操作系统和硬件(软硬件)共同完成,对程序员不透明
④未命中时的损失不同:
cache比主存快5~10倍,主存比辅存快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失。
4、虚存机制要解决的关键问题
- 调度问题决定哪些程序和数据应被调入主存。
- 地址映射问题在访问主存时把虚地址变为主存物理地址(这一过程称为内地址变换);在访问辅存时把虚地址变成辅存的物理地址(这一过程称为外地址变换),以便换页。此外还要解决主存分配、存储保护与程序再定位等问题。
- 替换问题决定哪些程序和数据应被调出主存。
- 更新问题确保主存与辅存的一致性。
在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。
有页式、段式、段页式3钟虚拟存储器
3.7.2 页式虚拟存储器
1、页式虚存地址映射
- 逻辑页:虚地址空间被分成等长大小的页,称为逻辑页;
- 物理页:主存空间也被分成同样大小的页,称为物理页。(逻辑页大小 = 物理页大小)
- 虚地址:逻辑页号,页内地址(偏移量)
- 实存地址:物理页号,页内地址(偏移量)
- 地址映射:通过页表把虚地址(逻辑地址)转换成物理地址
2、内页表和外页表
- 内页表(页表):虚地址到主存物理地址的变换表
- 外页表:用于虚地址与辅存地址之间的变换
- 工作过程:访问主存时,先查内页表,看是否缺页,若缺页,再访问外页表,找到辅存中数据的位置。辅存地址包括磁盘机号、磁头号、磁道号和扇区号等。
- 位置:内页表一般常驻内存。外页表通常存于辅存,需要时调入主存。如“缺页中断”时。
3、转换后援缓冲器 (快表)
- 页表通常在主存中,至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。(2次访存)
- 为了避免对主存访问次数的增多,可以对页表本身实行二级缓存,把页表中的最活跃的部分存放在高速存储器中,组成快表。
- 这个专用于页表缓存的高速存储部件通常称为转换后援缓冲器(TLB)。
- 保存在主存中的完整页表则称为慢表。
- TLB作用相当于cache,由相联存储器构成,以内容检索,若命中可以快速实现地址转换。否则检索慢表甚至缺失需要调入
3.7.3 段式虚拟存储器和段页式虚拟存储器
1、段式虚拟存储器
- 分页优缺点:
分页方式页长固定,易于构造页表、易于管理,且没有外碎片
因某子程序的部分在主存,另外部分在辅存,不利于编程的独立性,并给换入换出处理、存储保护和存储共享等操作带来麻烦 - 段:段是按照程序的自然分界划分的,长度可以动态改变的区域
通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。 - 地址转换:在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。
2、段页式虚拟存储器
- 实存被等分成页。
- 每个程序则先按逻辑结构分段(每个进程一个段表),每段再按照实存的页大小分页(每个段一个页表)
- 优点:程序按页进行调入和调出操作,但可按段进行编程、保护和共享。
- 缺点:3次访存(查段表,查页表,访问内容)
- 多道程序:如果有多个用户在机器上运行,多道程序的每一道需要一个基号,由它指明该道程序的段表起始地址。
- 虚地址结构:
例:假设有三道程序,基号用A、B和C表示,其基址寄存器的内容分别为SA、SB和SC。程序A由4个段构成,程序C由3个段构成。段页式虚拟存储系统的逻辑地址到物理地址的变换过程如图所示。在主存中,每道程序都有一张段表,A程序有4段,C程序有3段,每段应有一张页表,段表的每行就表示相应页表的起始位置,而页表内的每行即为相应的物理页号。请说明虚实地址变换过程。
解:地址变换过程如下:
(1)由存储管理部件根据基号C找到段表基址寄存器表第c个表项,获得程序C的段表基址SC。再根据段号S(=1)找到程序C段表的第S个表项,得到段S的页表起始地址b。
(2)根据段内逻辑页号P(2)检索页表,得到物理页号(10)。
(3)物理页号与页内地址偏移量拼接即得物理地址。
注意:
①假如计算机系统中只有一个基址寄存器,则基号可不要。
多道程序切换时,由操作系统修改基址寄存器内容。
②实际上,上述每个段表和页表的表项中都应设置一个有效位。只有在有效位为1时才按照上述流程操作,否则需中断当前操作先进行建表或调页。
特点:可以看出,段页式虚拟存储器的缺点是在由虚地址向主存地址的映射过程中需要多次查表,因而实现复杂度较高.
3.7.4 虚存的替换算法
1.何时替换:当从辅存调页至主存而主存已满时
2.替换算法:FIFO算法、LRU算法、LFU算法等(与cache的替换算法类似)
3.写回操作:对于将被替换出去的页面,假如该页调入主存后没有被修改,就不必进行处理,否则就把该页重新写入外存,以保证外存中数据的正确性。为此,在页表的每一行应设置一修改位。
例题:假设主存只有a,b,c三个页面/页框/块,组成a进c出的FIFO队列,进程访问页面的序列是0,1,2,4,2,3,0,2,1,3,2号。若采用①FIFO算法(淘汰最先进入的页面),②FIFO算法+LRU算法(堆栈式LRU,最近最久未使用),用列表法分别求两种替换策略情况下的命中率。
1.段式虚拟存储器对程序员是否透明?请说明原因。
答:虚拟管理是由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理系统程序不透明。而段是按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。
由于分段是由程序员完成的,所以段式虚拟存储器对程序员而言不是透明的,但虚存到实存的地址映射是由系统软件辅助完成的,故对应用程序而言,段是虚拟存储器是“半透明”的。
2.在一个进程的执行过程中,是否其所有页面都必须处在主存中?
答:在虚拟存储管理系统中,程序并不是一次整体装入内存才运行,所以不是所有页面都必须处在主存中,而是根据程序的局部性,有的页面在主存,有的页面在辅存。
3.在虚存实现过程中,有些页面会在内存与外存之间被频繁地换入换出,使系统效率急剧下降。这种现象称为颠簸(或叫抖动)。请解释产生颠簸的原因,并说明防止颠簸的办法?
答:产生颠簸的原因主要有:①分配的页面数太少②替换策略不佳。
防止颠簸的办法:适当增加分配给用户程序的页面数,选取LRU或更好的替换策略。
4.为什么在页式虚拟存储器地址变换时可以用物理页号与页内偏移量直接拼接成物理地址,而在段式虚拟存储器地址变换时必须用段起址与段内偏移量相加才能得到物理地址?
答:由于物理页与虚拟页的页面大小相同,且为2的整数次幂,所以页式虚拟存储器地址变换时可以用物理页号与页内偏移量直接拼接成物理地址。
而段式虚拟存储器的各段大小不同,且段起始地址任意,所以必须用段起址与段内偏移量相加才能得到物理地址。
5.为什么段式虚拟存储系统比页式虚拟存储系统更容易实现信息共享和保护?
答:页式虚拟存储系统每个页面是分散存储的,为了实现信息共享和保护,页面之间需要一一对应起来,需要建立大量的页表项。
而段式虚拟存储系统中每个段都从0地址开始编址,并采用一段连续的地址空间。在实现信息共享和保护时,只需要为所共享和保护的程序设置一个段表项,将其中的基地址与内存地址一一对应起来即可。
第四章 指令系统
4.1 指令系统的发展与性能要求(了解CISC和RISC)
4.1.1指令系统的发展
计算机的程序是由一系列的指令组成的。
-
指令:就是要计算机执行某种操作的命令。
-
从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分。
- 微指令:微程序级的命令,它属于硬件;
- 宏指令:由若干条机器指令组成的软件指令,它属于软件;
- 机器指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算。(若干个微指令)
-
指令系统:一台计算机中所有机器指令的集合
RISC(精简指令系统计算机) 对比 CISC(复杂指令系统计算机) 的主要优点有哪些?
1)选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现。
2)指令长度固定,指令格式种类少,寻址方式种类少。
3)只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行。
4)CPU中通用寄存器的数量相当多。
5)RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成。
6)以硬布线控制为主,不用或少用微程序控制。
7)特别重视编译优化工作,以减少程序执行时间。
4.1.2对指令系统性能的要求
- 完备性 汇编指令足够使用(多)。
- 有效性 编写程序能够高效率(时、空)的运行(高效)
- 规整性 具体如下:
- 对称性:指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;
- 匀齐性:一种操作性质的指令可以支持各种数据类型;
- 指令格式和数据格式的一致性:指令长度和数据长度有一定的关系,以方便处理和存取。
- 兼容性 系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。一般只能做到“向上兼容”。
4.1.3低级语言与硬件结构的关系
高级语言:语句和用法与具体机器的指令系统无关。
低级语言:机器语言、汇编语言(面向机器)
一般可通过高级语言调用用汇编语言编写的外部过程或函数来提高运行效率。
4.2 指令格式 (重点,扩展指令码)
4.2.1操作码
指令字(简称指令):一条指令的机器字。
指令格式:
操作码:指令的操作特性与功能;
地址码:参与操作的操作数的地址。
4.2.2地址码
三地址指令、二地址指令、一地址指令、零地址指令:
指令格式(填充部分) | 指令功能 | |||
---|---|---|---|---|
操作码 | A1 | A2 | A3 | (A1)op(A2)→A3 |
操作码 | A1 | A2 | (A1)op(A2)→A1 | |
操作码 | A | (AC)op(A)→AC(隐含AC) | ||
操作码 | NOP、HALT等 |
80X86一般为二地址,可归结为三种类型。
存储器-存储器(SS)型指令:多次访问内存。
寄存器-寄存器(RR)型指令:不需要访问内存。
寄存器-存储器(RS)型指令:既访问内存,又访问寄存器
4.2.3指令字长度
指令字长度:一个指令字中包含二进制代码的位数。
机器字长:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。
使用多字长指令,目的在于提供足够的地址位来解决访问内存任何单元的寻址问题。主要缺点是必须两次或多次访问内存以取出一整条指令,降低了CPU的运算速度,又占用了更多的存储空间。
等长指令字结构:各种指令字长度是相等的。这种指令字结构简单,且指令字长度是不变的。如 RISC。
变长指令字结构:各种指令字长度随指令功能而异。结构灵活,能充分利用指令长度,但指令的控制较复杂。如 CISC。
4.2.4指令助记符
1.由于硬件只能识别1和0,所以采用二进制操作码是必要的,但是我们用二进制来书写程序却非常麻烦。
2.为了便于书写和阅读程序,每条指令通常用3个或4个英文缩写字母来表示。这种缩写码叫做指令助记符。(汇编语言)
3.需要注意的是,在不同的计算机中,指令助记符的规定是不一样的。因此,指令助记符还必须转换成与它们相对应的二进制码。这种转换借助汇编程序可以自动完成,汇编程序相当于一个“翻译”
4.4 指令和数据的寻址方式 (重点)
4.4.1指令的寻址方式
操作数或指令地址:存储单元的编号
寻址方式:形成操作数或指令地址的方式。
数据寻址方式:比较复杂。
指令的寻址方式简单,有顺序寻址和跳跃寻址两种方式。
1、顺序寻址
- 指令存放:在内存中按顺序存放
- 指令执行:一条指令接一条指令的顺序执行。
- 程序计数器(又称指令指针寄存器)PC :指令在内存中的地址
- PC 自动+1
2、跳跃寻址方式 (jmp、loop等)
- 使用时机:当程序转移执行的顺序时
- 指令地址决定:下条指令的地址码不是由程序计数器给出,而是由本条指令给出。
- 作用:实现程序转移或构成循环程序
- 类型:条件转移或无条件转移指令
4.3.2操作数寻址方式
操作码OP | 变址X | 间址I | 形式地址D |
---|
- 操作数的寻址方式:形成操作数的有效地址的方法。
- 地址码:形式地址 (D)+寻址方式特征位(X,I)
- 寻址过程:把操作数的形式地址,变换为操作数的有效地址的过程。
1.隐含寻址
- 在指令中不明显的给出而是隐含着操作数的地址。(操作数一般在专用寄存器中)
- 例如,单地址的指令格式 ( 如 ADD BX 指令,INC 指令),没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为第二操作数地址,AC对单地址指令格式来说是隐含地址。
2.立即寻址
- 指令的地址字段指出的不是操作数的地址,而是操作数本身。这种方式的特点是指令执行时间很短(快),不需要访问内存取数。
3.直接寻址
- 指令中地址码字段给出的地址A就是操作数的有效地址EA,即EA=A。
4.间接寻址
- 间接寻址意味着指令的地址码部分给出的地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。操作数的有效地址的计算公式为:EA=(A)
5.寄存器寻址方式
- 寄存器寻址方式:操作数在CPU的通用寄存器中。指令中通用寄存器的编号表示(见reg字段)。
6.寄存器间接寻址方式
- 寄存器间接寻址方式:操作数在CPU的通用寄存器内容所指内存单元中中。
7.偏移寻址
是直接寻址和寄存器间接寻址方式(3种)
相对寻址:隐含引用的专用寄存器是程序计数器(PC),即EA=A+(PC),它是当前PC的内容加上指令地址字段中A的值(补码形式)。
基址寻址: 基址寄存器Rb与偏移量A相加而成,即:EA=(Rb)+A。
变址寻址:基准地址A与CPU内某特定的变址寄存器Rx中的内容相加,以形成操作数的有效地址,即:EA=A+(Rx)。
补充:相对基址变址:有效地址由偏移量D+基址寄存器+变址寄存器,EA=(Rb)+(Rx)+A 组成,最复杂的寻址方式。
偏移寻址方式在遇到需要频繁修改操作数地址时,无须修改指令,只要修改Rx中的变址值就可以了,这对于数组运算、字符串操作等一些进行成批数据处理的指令是很有用的,其实质与C中指针类似。
8.段寻址方式
M存储空间需要20位的地址
16位寄存器如何构成20位地址?
段寄存器中的16位数会自动左移4位,然后以16位偏移量相加,即可形成所需的内存地址。
这种寻址方式的实质还是基址寻址。其来历是为了保持向上兼容。
9.堆栈寻址
- 堆栈有寄存器堆栈和存储器堆栈两种形式,它们都以先进后出的原理存储数据。
- 数据进栈时使用PUSH指令,将数据压入栈顶地址,堆栈指示器减1(x86系列顺序正好相反:指针先减,再压数);
- 数据出栈时,使用POP指令,数据从栈顶地址弹出,堆栈指示器加1 (一般是与压栈相反顺序)
4.5 典型指令
1.数据传送指令
2.算术运算指令
3.逻辑运算指令
4.程序控制指令
5.输入输出指令
6.字符串处理指令
7.特权指令
8.其他指令
第五章 中央处理器
5.1 CPU功能和组成
5.1.1 CPU的功能
- 指令控制(程序的顺序控制)
- 操作控制(一条指令由若干操作信号实现)
- 时间控制(指令各个操作实施时间的定时)
- 数据加工(算术运算和逻辑运算)
- 中断处理(处理异常和特殊请求)
5.2 指令周期
5.2.1 指令周期的基本概念
1.概念
- 指令周期:指取指令、分析指令到执行完该指令所需的全部时间。
各种指令的指令周期相同吗?为什么? - CPU周期通常又称机器周期
通常把一条指令周期划分为若干个机器周期,每个机器周期完成一个基本操作。
主存的工作周期(存取周期)为基础来规定CPU周期,比如,可以用CPU读取一个指令字的最短时间来规定CPU周期
不同的指令,可能包含不同数目的CPU周期。
一个CPU周期中,包含若干个时钟周期(T周期 / 节拍脉冲)。
- 为什么CPU周期要分为若干时钟周期?
在一个CPU周期内,完成一个操作(可包含若干个微操作)。这些微操作有的可以同时执行,有的需要按先后次序串行执行。因而需要把一个CPU周期分为若干个相等的时间段,每一个时间段称为一个 时钟周期 / 节拍脉冲 / T周期。
时钟周期通常定义为机器主频的倒数。
注意:不同的计算机系统中定义的术语未必相同。
1.能不能说机器的主频越快,机器的速度就越快,为什么?
不能说机器的主频越快,机器的速度就越快。因为机器的速度不仅与主频有关,还与数据通路结构、时序分配方案、ALU运算能力、指令功能强弱等多种因素有关,要看综合效果。
2.什么是指令周期?指令周期是否有一个固定值?为什么?
指令周期是CPU每取出并执行一条指令所需的全部时间,也即CPU完成一条指令的时间。由于各种指令操作的功能不同,因此各种指令的指令周期是不同的,指令周期的长短主要和指令在执行阶段的访问主存的次数和执行阶段所需要完成的操作有关。
3.什么是指令周期、机器周期和时钟周期?三者有何关系?
- 指令周期:CPU取出并执行一条指令所需的全部时间,即完成一条指令的时间。
- 机器周期:所有指令执行过程中的一个基准时间,取决于指令的功能及其间的速度。
- 时钟周期:用时钟信号来控制产生每一个微操作命令。一个机器周期内包含了若干个时钟周期,又称节拍或状态。在每个节拍内机器可完成一个或几个同时执行的操作。
5.3 时序产生器和控制方式
5.3.1 时序产生器作用和体制
1.作用:
- CPU中的控制器用它指挥机器的工作
- CPU可以用时序信号/周期信息来辨认从内存中取出的是指令(取指)还是数据(执行)
- 一个CPU周期中时钟脉冲对CPU的动作有严格的约束
- 操作控制器发出的各种信号是时间(时序信号)和空间(部件操作信号)的函数。
2.体制
- 组成计算机硬件的器件特性决定了时序信号的基本体制是电位—脉冲制(以触发器为例)
- D为电位输入端,CP(Clock Pulse)为脉冲输入端R,S为电位输入端
- 特性方程如下
D=0时,CP上升沿到来时,
D触发器状态置0
D=1时,CP上升沿到来时,
D触发器状态置1 - 硬布线控制器:主状态周期—节拍
电位—节拍脉冲三级体制微程序控制器:节拍电位—节拍脉冲二级体制
5.3.2 时序信号产生器
1.功能:产生时序信号
- 各型计算机产生时序电路不相同大、中型计算机的时序电路复杂,微型计算机的时序电路简单
2.构成:
- 时钟源
- 环形脉冲发生器
- 节拍脉冲和读写时序译码逻辑
- 启停控制逻辑
5.3.3 控制方式
1.机器指令所包含的CPU周期数反映了指令的复杂程度,不同CPU周期的操作信号的数目和出现的先后次序也不相同。
控制方式:控制不同操作序列时序信号的方法。分为以下几种:
- 同步控制方式(指令的机器周期和时钟周期数不变)
- 完全统一的机器周期执行各种不同的指令
- 采用不定长机器周期
- 中央控制于局部控制的结合
- 异步控制方式
- 每条指令需要多长时间就占多长时间
- 联合控制方式
- 大部分指令在固定的周期内完成,少数难以确定的操作采用异步方式
- 机器周期的节拍脉冲固定,但是各指令的机器周期数不固定(微程序控制器采用)
5.4 微程序控制器
5.4.1 微程序控制原理
基本思想:仿照解题的方法,把操作控制信号编制成微指令,存放到控制存储器里,运行时,从控存中取出微指令,产生指令运行所需的操作控制信号。从上述可以看出,微程序设计技术是用软件方法来设计硬件的技术
1、微命令和微操作
1.微命令:控制部件向执行部件发出的各种控制命令叫作微命令,它是构成控制序列的最小单位。
- 例如:打开或关闭某个控制门的电位信号、某个寄存器的打入脉冲等。
- 微命令是控制计算机各部件完成某个基本微操作的命令。
2.微操作:是微命令的操作过程。
- 微命令和微操作是一一对应的。
- 微命令是微操作的控制信号,微操作是微命令的操作过程。
- 微操作是执行部件中最基本的操作。
由于数据通路的结构关系,微操作可分为相容的和互斥的两种:
互斥的微操作,是指不能同时或不能在同一个节拍内并行执行的微操作。可以编码
相容的微操作,是指能够同时或在同一个节拍内并行执行的微操作。必须各占一位
2、微指令和微程序
**1.微指令:**把在同一CPU周期内并行执行的微操作控制信息,存储在控制存储器里,称为一条微指令。
- 它是微命令的组合,微指令存储在控制器中的控制存储器中
- 一条微指令通常至少包含两大部分信息:
- 操作控制字段,又称微操作码字段,用以产生某一步操作所需的各个微操作控制信号。
- 某位为1,表明发微指令
- 微指令发出的控制信号都是节拍电位信号,持续时间为一个CPU周期
- 微命令信号还要引入时间控制
- 顺序控制字段,又称微地址码字段,用以控制产生下一条要执行的微指令地址。
- 操作控制字段,又称微操作码字段,用以产生某一步操作所需的各个微操作控制信号。
2.微程序:
-
一系列微指令的有序集合就是微程序。
-
一段微程序对应一条机器指令。
3.微地址 :存放微指令的控制存储器的单元地址
5.4.2 微程序设计技术
1、微命令的编码方法
- 直接表示法:每一位代表 一个微命令
特点:简单直观,不用译码,但微指令字长较长 - 编码表示法:一组相斥的微命令信号组成一个小组/字段,小组/字段内经过译码器进行译码,如3位二进制可以表示7个微命令(为什么不是8个?)
特点:微指令字长大大缩短,但增加译码,执行速度变慢 - 混合表示法:直接法+编码法。
特点:综合考虑,微指令字长、灵活性,执行微指令速度
2、微地址的形成方法
两种方式
- 计数器的方式
- 多路转移的方式
1.计数器的方式
- 方法:
微程序顺序执行时,其后继微地址就是现行微地址加上一个增量(通常为1);
微程序计数器μPC,一般情况下都是将微地址寄存器μMAR作为μPC
当微程序非顺序执行时,由微指令的转移地址段来形成转移微地址。 - 特点:
优点:微程序的顺序控制字段较短、微地址产生机构简单
缺点:多路并行转移能力较弱,速度较慢,灵活性较差
2.多路转移的方式:具有多个转移分支
根据条件转移如图
条件:状态条件/测试/操作码
特点:多路并行转移方便,速度快
但转移地址逻辑需要用组合逻辑方法
3、微指令格式
两类:水平型微指令和垂直型微指令
**1.水平型微指令:**一次定义并执行多个并行微命令
控制字段 | 判别测试字段 | 下地址字段 |
---|
3种水平型微指令:
- 全水平型(不译码)
- 字段译码法水平型
- 直接和译码相混合的水平型
**2.垂直型微指令:**采用微操作码编译法。
类似于机器指令机构
设置微操作码字段,在一条微指令中只有1-2个微操作命令
水平型微指令和垂直型微指令的比较
(1)水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令则较差。
(2)水平型微指令执行一条指令的时间短,垂直型微指令执行时间长。
(3)由水平型微指令解释指令的微程序,有微指令字较长而微程序短的特点。垂直型微指令则相反。
(4)水平型微指令用户难以掌握,而垂直型微指令与指令比较相似,相对来说,比较容易掌握。
1.什么是微命令和微操作? 什么是微指令? 微程序和机器指令有何关系? 微程序和程序之间有何关系?
微命令是控制计算机各部件完成某个基本微操作的命令。微操作是指计算机中最基本的、不可再分解的操作。微命令和微操作是一一对应的,微命令是微操作的控制信号,微操作是微命令的操作过程。
微指令是若干个微命令的集合。微程序是机器指令的实时解释器,每一条机器指令都对应一个微程序。
微程序和程序是两个不同的概念。微程序是由微指令组成的,用于描述机器指令,实际上是机器指令的实时解释器,微程序是由计算机的设计者事先编制好并存放在控制存储器中的,一般不提供给用户;程序是由机器指令组成的,由程序员事先编制好并存放在主存储器中
2.试比较水平型微指令与垂直型微指令
水平型微指令是面向处理机内部控制逻辑的描述,而垂直型微指令则是面向算法的描述,两者各有其优缺点。
水平型微指令并行操作能力强,效率高,灵活性强,垂直型微指令差;
水平型微指令执行一条指令的时间短;垂直型微指令执行时间长;
由水平型微指令解释指令的微程序,具有微指令字比较长,但程序短的特点。垂直型微指令则相反,微指令比较短而微程序长;
水平型微指令用户难以掌握。而垂直型微指令与指令比较相似,相对来说较易掌握。
实际使用中,常常兼顾两者的优点,设计出一种混合型微指令,采用不太长的字长又具有一定的并行控制能力。
3.能否说水平型微指令就是直接编码的微指令,为什么?
不能说水平型微指令就是直接编码的微指令,因为水平型微指令是指一次能定义并执行多个并行操作的微命令:从编码方式看,直接编码,字段直接编码,字段间接编码以及直接和字段混合编码都属水平型微指令,只要在一条微命令中定义并执行多个并行操作,即可称为水平型微指令,与编码方式无关,但直接编码速度最快,字段编码要经过译码,故速度受影响。
4.请说出取指微指令的几个主要操作步骤?
① 指令地址送地址总线(PC → AB) ;
② 发访存控制命令,从存储器取指令送数据总线(W/R#=0; M/IO#=1);
③ 指令送指令寄存器(DB →IR);
④ 程序计数器+1(PC+1,ADS)。
5.微程序控制的基本思想?
把指令执行所需要的所有控制信号存放在控制存储器中,需要时从这个存储器中读取,即把操作控制信号编成微指令,存放在控制存储器中。一条机器指令的功能通常用许多条微指令组成的序列来实现,这个微指令序列称为微程序。微指令在控制存储器中的存储位置称为微地址。
第六章 总线系统
6.1 总线的概念和结构形态
6.1.1 总线的基本概念
总线 BUS:计算机中的各个系统功能部件之间进行数据传送的公共通道。
—— 实现地址、数据和控制信息的交换
—— 在争用资源的基础上进行工作。
总线分类:
- 内部总线:CPU内部连接各寄存器及运算器部件之间的总线。
- 系统总线:CPU和计算机系统中其他高速功能部件相互连接的总线。
- I/O总线:中低速I/O设备相互连接的总线。
1、总线的特性
物理特性:总线的物理连接方式
——根数、插头、插座形状,引脚排列方式
功能特性:每根线的功能
——地址线送地址,数据线传输数据,有宽度限制
——信号线功能各有定义
电气特性:每根线上信号的传递方向及有效电平范围。
——地址线单向输出、数据线双向,控制线单向
——地址线、数据线高电平有效,控制线有高有低
时间特性:规定了每根总线在什么时间有效。
—— 总线上各信号有效的时序关系
2、总线的标准化
相同的指令系统,相同的功能,不同厂家生产的各功能部件在实现方法上几乎没有相同的,但各厂家生产的相同功能部件却可以互换使用其原因何在呢?
因为它们都遵循了相同的系统总线的要求(系统总线的标准化)
总线带宽:总线本身所能达到的最高传输速率(MB/s)
ISA总线:16位,带宽 8 MB/s
EISA总线:32位,带宽 33.3 MB/s
VESA总线:32位,带宽 132 MB/s
PCI 总线:64位,带宽 127.2 MB/s
6.1.2 总线的连接方式
1.适配器(接口):实现高速CPU与低速外设之间工作速度上的匹配和同步,并完成计算机和外设之间的所有数据传送和控制。
2.单处理器系统中,总线类型: 单总线,多总线
-
单总线:使用单一的系统总线来连接CPU、内存和I/O设备。
单总线结构特点:
- 必须连接高速运行的设备
- 能迅速获得总线控制权;并迅速放弃总线控制权
- 避免因等待总线而导致很大的时间延迟。(分时使用)
-
多总线:
优点:确保高速、中速、低速设备连接到不同总线上同时工作,以提高总线的效率和吞吐量
**系统总线地址的功能是:**指定主存和I / O设备接口电路的地址;
**总线从设备是:**被主设备访问的设备
**总线的异步通信方式:**不采用时钟信号,只采用握手信号
**总线通信中的同步控制是:**由统一时序控制的方式
计算机使用总线结构便于增减外设,同时减少了信息传输线的条数
总线复用方式可以减少总线中信号线的数量
在单总线结构的CPU中,连接在总线上的多个部件某一时刻只有一个可以向总线发送数据,但可以有多个同时从总线接收数据
系统总线中的数据线、地址线和控制线是根据总线的传输内容来划分的
试比较同步通信和异步通信。
同步通信——由统一时钟控制的通信,控制方式简单,灵活性差,当系统中各部件工作速度差异较大时,总线工作效率明显下降。适合于速度差别不大的场合;
异步通信——不由统一时钟控制的通信,部件间采用应答方式进行联系,控制方式较同步复杂,灵活性高,当系统中各部件工作速度差异较大时,有利于提高总线工作效率
第七章 外围设备
在磁盘存储器中,查找时间是使磁头移动到要找的柱面上所需的时间
为什么需要I/O接口?I/O接口的基本功能?
需要I/O接口主要基于以下原因:
(1)各种外设的操作方法不同,由CPU统一控制不切合实际。
(2)外设的数据传输速率比存储器和CPU慢,使得高速总线不能直接与外设相连。
(3)外设所使用的数据格式各不一致。
I/O接口是连接主机(CPU、主存)和外部设备的桥梁,其基本功能有:
(1)控制和定时;
(2)CPU通信
(3)设备通信;
(4)数据缓冲
(5)检错
第八章 输入输出系统
8.1 CPU与外设之间的信息交换方式
一、外围设备的速度分级
- 外设种类繁多
- 机械式/电动式,电子式/非电子式,
输入数字式的电压/输入模拟式的电压或电流,……: - 不同种类的外设数据传输速率差别很大
- 机械式/电动式,电子式/非电子式,
- 问题:
高速的CPU与速度参差不齐的外设怎样高效和可靠的交互,在时间上同步呢?
二、CPU与外设的连接
I/O端口:接口内CPU能直接访问的寄存器,分为命令/控制端口、状态端口、数据端口
I/O端口编址:统一编址、独立编址
设备编址
-
统一编址
输入/输出设备中的控制寄存器、数据寄存器、状态寄存器(端口)等和内存单元一样看待,它们和内存单元联合在一起编排地址。这样就可用访问内存的指令(读、写指令)去访问I/O设备的某个寄存器,因而不需要专门的I/O指令组。 -
独立编址
内存地址和I/O设备地址是分开的,访问内存和访问I/O设备使用不同操作码的指令,即访问I/O设备有专门的I/O指令组。
8.1.2 输入/输出操作的一般过程
输入/输出设备同CPU交换数据的过程:
输入过程:
(1)CPU把一个地址值放在地址总线上,选择某一输入设备;
(2)CPU等候输入设备的数据成为有效;
(3)CPU从数据总线读入数据,并放在一个相应的寄存器中。
输入/输出设备同CPU交换数据的过程:
输出过程:
(1)CPU把一个地址值放在地址总线上,选择一个输出设备;
(2)CPU把数据放在数据总线上;
(3)输出设备认为数据有效,从而把数据取走。
8.1.3 I/O接口与外设间的数据传送方式
由于外设工作速度不同,因此,对于不同速度的外设,需要有不同的数据传送方式。
(1)速度极慢或简单的外设:无条件传送方式
如机械开关、显示二极管等等
→ CPU只需要接受或者发送数据即可(无须握手联络信号)
(2)慢速或中速的设备:应答方式(异步传送方式)
如键盘(在不规则时间间隔下操作)
→ 除有传送控制线之外,还需有若干握手信号线
(3)高速外设:同步传送方式
如磁盘(以相等的时间间隔操作)
→ 统一的时钟脉冲进行同步
8.1.4 CPU与I/O接口之间的数据传送
生活例子:幼儿园阿姨发糖(1个阿姨,10个孩子,2块糖)
CPU管理外设的方式:
- 无条件传送方式(简单I/O方式)
- 程序查询(轮询)方式 【发1块糖,盯着孩子吃完】
- 程序中断方式 【1次发1块糖,孩子吃完报告】
- 直接内存访问(DMA)方式 【1次发2块糖,吃完报告】
- 通道和输入/输出处理方式 【请一个老师负责发糖】
8.2 程序查询方式
1、设备编址
- 统一编址
I/O端口(控制寄存器、数据寄存器、状态寄存器)和内存单元联合在一起编排地址 - 独立编址
I/O端口、内存分别单独编址。
2、输入输出指令
当用程序实现输入/输出传送时,I/O指令功能:
① 置“1”或置“0”I/O接口的某些控制触发器,用于控制设备进行某些动作,如启动、关闭设备等。
② 测试设备的某些状态,如“忙”、“准备就绪”等,以便决定下一步的操作。
③ 传送数据,当输入数据时,将I/O接口中数据寄存器的内容送到CPU某一寄存器;当输出数据时,将CPU中某一寄存器的内容送到I/O接口的数据寄存器。
3、程序查询接口
设备选择电路:① 数据缓冲寄存器 ② 设备状态寄存器
①、设备选择电路:连接到总线上的每个设备预先都给定了设备地址码。CPU执行I/O指令时需要把指令中的设备地址送到地址总线上,用以指示CPU要选择的设备。每个设备接口电路都包含一个设备选择电路,用它判别地址总线上呼叫的设备是不是本设备。
②、数据缓冲寄存器:当输入操作时,用数据缓冲寄存器来存放从外部设备读出的数据,然后送往CPU;当输出操作时,用数据缓冲寄存器来存放CPU送来的数据,以便送给外部设备输出。
③、设备状态寄存器:接口中的标志触发器,如“忙”、“准备就绪”、“错误”等,用来标志设备的工作状态,以便接口对外设动作进行监视。一旦CPU用程序询问外部设备时,将状态标志信息取至CPU进行分析。
8.3 程序中断方式(重点)
8.3.1 中断的基本概念
1.中断(Interrupt)是指CPU暂时中止现行程序,转去处理随机发生的紧急事件(中断服务程序),处理完后自动返回原程序(断点)的功能和技术。
2.中断是一种程序随机切换的方式,也称为异常
3.中断系统是计算机实现中断功能的软硬件总称。一般在CPU中设置中断机构,在外设接口中设置中断控制器,在软件上设置相应的中断服务程序。
4.中断方式的典型应用:
-
实现CPU与外界进行信息交换的握手联络(I/O)
-
故障处理(掉电、校验错、运算错、溢出、地址越界……)
-
实时处理
-
程序调度
-
软中断(程序自动中断)
中断处理过程注意几个问题:
- 响应中断时机:外界中断请求时随机的,但CPU只有在当前指令执行完毕后,才转至公操作
- 断点保护问题(PC,寄存器内容和状态标志位 保存在堆栈中 → 保存现场)
- 开中断和关中断问题:中断屏蔽触发器
- 中断实现:是由软硬件结合起来实现的
- 中断分类:内中断(异常):机器内部原因导致出错外中断:外部设备请求服务
8.3.2 程序中断方式的基本I/O接口
1.中断源:引起中断的事件
2.中断处理过程:
① CPU在中断响应时需要确定中断源
② 有多个中断源时需要优先级判别和排队,确定先响应谁
③ 获取中断服务程序入口地址,转相应中断服务程序执行
3.2种确定中断服务程序入口地址方式:
① 中断向量
② 查询中断
4.中断向量:
每个中断源对应一个中断服务程序
中断向量:中断服务程序的入口地址PC
有的还包括程序状态字PSW的初始值
系统中所有的中断向量按顺序存放在内存指定位置的一张中断向量表中
当CPU识别出某中断源时,由硬件直接产生对应的中断向量地址,可快速在中断向量表中找到中断入口地址
查找中断源、中断排队和判优、获取中断服务程序入口地址都由硬件在中断中期自动完成。
5.中断查询:
为所有中断服务程序安排一个公共的中断服务程序
由它查询中断源,并跳转到相应中断服务程序去执行
中断优先级与软件查询中断源的顺序有关
8.3.3 单级中断
单级中断的概念:所有中断源属于同一级,离CPU越近,优先级越高。
当响应某一中断请求时,执行该中断源的中断服务程序。在此过程中,不允许其他中断源再打断中断服务程序,即使优先权比它高的中断源也不能再打断。
中断源的识别:串行排队链法
8.3.4 多级中断
多级中断系统:指计算机系统中有相当多的中断源,根据各中断事件的轻重缓急程度不同而分成若干级别,每一中断级分配给一个优先权。
优先权高的中断级可以打断优先权低的中断服务程序,以程序嵌套方式进行工作。
8.3.5 中断控制器
8.3.6 Pentium中断机制
8.4 DMA方式(重点)
8.4.1 DMA的基本概念
设置的原因:直接内存访问DMA方式是为了在主存储器
与I/O设备间高速传送成组数据而设置的。
实现:完成由硬件实现
基本思想:DMA控制器向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断的方式向CPU报告传送操作的结束(在传送过程中无需CPU的干预,数据传送是在DMA控制器控制下进行的)
优点:速度快(CPU不参与数据传送)
特点:①主存和I/O之间能进行快速成组数据传送,但DMA只能进行简单数据传送,不能进行判断和计数;②CPU的运算与I/O-DMA-内存之间的数据传送可以同时进行
8.4.2 DMA传送方式
问题:若CPU需要访存,外设需要通过DMA直接与内存进行数据传送,此时,如何分时使用内存
1.根据每提出一次DMA请求,DMA控制器将占用多少总线周期,将DMA传送分为:
-
成组连续传送方式(停止CPU访存)
① 当外设要求传送一批数据时,由DMA控制器发出一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线的使用权。
② DMA控制器获得总线控制权后,开始进行数据传送。
③ 在一批数据传送完毕后,DMA控制器通知CPU可以使用外存,并把总线控制权还给CPU优点: 控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点: 在DMA控制器访内存阶段,内存的效能没有充分发挥,相当一部分内存工作周期是空闲的。这是因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。 -
周期挪用方式 (单字传送方式,周期窃取方式)
外设没有DMA请求时,CPU按照程序有访存
一旦外设有DMA请求,则由外设挪用一个或几个内存周期。此时CPU有2种情况
① CPU不需要访问内存,挪用内存周期对CPU无影响
② CPU也需要访存,(访存冲突)则外设访存优先,因为I/O访存有时间要求,此时CPU访存延缓执行
周期挪用方式适用于I/O设备读写周期大于内存存储周期的情况。 -
透明DMA方式(DMA与CPU交替操作方式,总线周期分时方式)
当CPU的工作周期比内存存取周期长很多,采用该种方法
不需要总线使用权的申请、建立和归还过程,总线控制权通过C1、C2分时控制实现。C1用于DMA访存,C2用于CPU访存。
总线控制权的转移速度快,DMA效率高。
透明:DMA的传送对于CPU而言,如同透明的玻璃,没有任何感觉和影响。CPU不停止也不等待,高效但硬件复杂
8.4.3 基本的DMA原理
1、DMA控制器的基本构成
1)内存地址计数器:要交换的数据地址,初始化为数据块的起始地址,每传送一个数据,+1
2)字计数器:存放数据块长度,初始值由程序预置,补码表示,, 每传送一个数据,+1,当有进位时(溢出),表示一批数据传送完,DMA向CPU发中断信号
3)数据缓冲寄存器:外设与系统总线的数据缓冲
4)DMA请求标志:设备准备好一个字后(外设把数据放入数据呼缓冲器),向DMA发出DMA请求,DMA向CPU发出总线使用权请求信号HOLD,CPU发出总线使用权响应信号HLDA,DMA发出DMA响应信号,将数据从数据缓冲器中传送到总线上
5)“控制/状态”逻辑:由控制标志、状态标志和时序电路构成。对DMA内部进行控制,如内存地址计数器的+1,字计数器的+1等
6)中断机构:当一批数据传送结束,字计数器溢出,中断结构发出中断请求,告知CPU一批数据传送结束。
8.4.4 选择型和多路型DMA控制器
8.5 通道方式
8.5.1 通道的功能
1.通道的功能
进一步提高了CPU的效率。
通道是一个特殊功能的处理器,它有自己的指令(通道指令)和程序(通道程序)专门负责数据输入输出的传输控制
通道与CPU分时使用内存,CPU进行数据处理,通道进行数据数据传送(CPU与外设并行工作)
2种总线:系统总线、I/O总线
连接:一个通道可接多个I/O模块,一个I/O模块可接1或多个外设
4级结构:CPU和内存 ↔ 通道 ↔ I/O接口 ↔ 外设
应用:具有通道的机器一般是大、中型计算机,数据流通量很大。
设置:设置多个通道,对不同类型外设进行分类管理
通道优先权高于CPU:因为大多数I/O设备是旋转性的设备,读写信号具有实时性,不及时处理会丢失数据
通道的基本功能 :执行通道指令,组织外围设备和内存进行数据传输,按I/O指令要求启动外围设备,向CPU报告中断等
CPU对通道的管理:CPU是通过执行I/O指令以及处理来自通道的中断(数据传送结束中断,故障中断),实现对通道的管理。
通道对设备控制器的管理:
①从通道接受通道指令,控制外设完成所要求的操作
②向通道反映外围设备的状态;
③将各种外围设备的不同信号转换成通道能够识别的标准信号
通道的类型:选择通道、多路通道(数组多路、字节多路)
1.选择通道(高速通道)
★ 在物理上可以连接多个设备,逻辑上连接一个设备,在某一段时间内通道只能选择一个设备进行工作。
★ 类似于单道系统,只执行一个通道程序,为一个设备服务
★ 连接高速外围设备,如磁盘、磁带等,信息以数据块方式高速传输。数据传输率很高,但整个通道的利用率不是很高(磁盘需要寻道)。
2.多路通道(多路转换通道)
同一时间处理多个I/O设备的数据传输
① 数组多路通道
在物理上可以连接多个设备,逻辑上可以连接多个设备(高速设备),而且在一段时间内能交替执行多个设备的通道程序
基本思想:当某设备进行数据传送时,通道只为该设备服务;当设备在执行寻址等控制性动作时,通道暂时断开与这个设备的连接,挂起该设备的通道程序,去为其他设备服务,即执行其他设备的通道程序。类似于一个多道程序的处理器。
得到较多应用:高速传送数据,又充分利用了控制性操作的时间间隔为其他设备服务,使通道效率高
② 字节多路通道
在物理上可以连接多个设备,逻辑上可以连接多个设备(大量低速设备),而且在一段时间内能交替执行多个设备的通道程序,使多个设备同时工作
字节多路通道和数组多路通道的不同之处:
(1) 数组多路通道允许多个设备同时工作,但只允许一个设备进行传输型操作,其他设备进行控制型操作。
字节多路通道不仅允许多个设备同时操作,而且也允许它们同时进行传输型操作。
(2)数组多路通道与设备之间数据传送的基本单位是数据块,通道必须为一个设备传送完一个数据块以后,才能为别的设备传送数据块。
字节多路通道与设备之间数据传送的基本单位是字节,通道为一个设备传送一个字节后,又可以为另一个设备传送一个字节,因此各设备与通道之间的数据传送是以字节为单位交替进行。
I/O有哪些编址方式?各有何特点?
常用的I/O编址方式有两种: I/O与内存统一编址和I/O独立编址;
I/O与内存统一编址方式的I/O地址采用与主存单元地址完全一样的格式,I/O设备和主存占用同一个地址空间,CPU可像访问主存一样访问I/O设备,不需要安排专门的I/O指令。
I/O独立编址方式时机器为I/O设备专门安排一套完全不同于主存地址格式的地址编码,此时I/O地址与主存地址是两个独立的空间,CPU需要通过专门的I/O指令来访问I/O地址空间。
查询:CPU与设备串行工作,传送与主程序串行工作
中断:CPU与设备并行工作,传送与主程序串行工作
DMA: CPU与设备并行工作,传送与主程序并行工作
1.为什么说现代计算机中主存储器处于全机中心地位?
现代计算机中,存储器处于全机的中心地位,原因:
① 存储处在运行中的指令和数据;
②I/O设备数量增多,数据传送速度加快,因此采用了DMA技术和通道技术,在存储器和I/O设备间直接传送数据;
③共享存储器的多处理机的出现,利用存储器存放共享数据,并实现处理机之间的通信,更加强了存储器作为全机中心的地位。
2.试比较三种通道的优缺点及适用场合。
(1)字节多路通道。一种简单的共享通道,主要为多台低速或中速的外围设备服务。
(2)数组多路通道。适于为高速设备服务。
(3)选择通道。为多台高速外围设备(如磁盘存储器等)服务的。
3. 什么是中断?外部设备如何才能产生中断?
中断是指:计算机执行现行程序的过程中,出现某些急需处理的异常情况和特殊请求,CPU 暂时中止现行程序,而转去对随机发生的更紧迫的事件进行处理,在处理完毕后,CPU 将自动返回原来的程序继续执行。
外部设备(中断源)准备就绪后会主动向CPU 发出中断请求。通常由外设的完成信号将相应的中断请求触发器置成“1”状态,表示该中断源向CPU 提出中断请求。
4.说明中断向量地址和入口地址的区别和联系。
向量地址是硬件电路产生的中断源的内存地址编号,中断入口地址是中断服务程序首址。
中断向量地址和入口地址的联系:中断向量地址可理解为中断服务程序入口地址指示器(入口地址的地址),通过它访存可获得中断服务程序入口地址。
5.CPU对DMA 请求和中断请求的响应时间是否一样?为什么?
CPU对DMA请求和中断请求响应时间不一样,因为两种方式的交换速度相差很大,因此CPU 必须以更短的时间间隔查询并响应DMA请求(一个存取周期末)
6. DMA和中断的区别?
⑴中断方式是程序切换,需要保护和恢复现场;而DMA方式除了开始和结尾时,不占用CPU任何资源.
⑵对中断请求的响应只能发生在每条指令执行完毕时,而对DMA请求的响应可以发生在每个机器周期结束时.
⑶中断传送过程需要CPU的干预,而DMA传送过程不需要CPU的干预,故数据传送速率非常高,适合于高速外设的成组传送. DMA 请求的优先级应高于中断请求。
7. 常见的数据传送控制方式有哪几种?CPU 响应中断应具备哪些条件
常见的数据传送控制方式有:程序控制;中断控制;DMA;I/O通道控制;外围处理机控制。
CPU 响应中断应具备的条件:① CPU 接收到中断请求信号;② CPU 允许中断;③ 一条指令执行完毕。
8. 什么叫中断隐指令? 中断隐指令有哪些功能? 中断隐指令如何实现?
CPU响应中断之后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,称为中断隐指令。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。其所完成的操作主要有:① 保存断点;② 暂不允许中断;③ 引出中断服务程序。
9.试比较程序查询方式、程序中断方式和 DMA方式对CPU工作效率的影响。
程序查询方式要求CPU时刻查询I/O,直到I/O准备好为止,这种方式CPU工作效率很低。程序中断方式比程序中断方式提高了CPU的工作效率,消除了“踏步”现象。DMS方式中CPU的工作效率是这三种之中最高的一个。CPU启动I/O后,不必查询I/O是否准备好,当I/O准备就绪后,发出DMA请求,此时CPU不直接参与I/O和主存间的信息交换,只是把外部总线的使用权暂时交付DMA,仍然可以完成自身内部的操作,所以不必中断现行程序,只需暂停一个存取周期访存,CPU效率更高。
10. 以输入为例说明为什么DMA方式比中断方式具有更高的I/O 效率?
中断方式只是解决了CPU对 I/O设备状态的查询和等待,但数据传送仍然需要CPU参与和中转。输入时,CPU从外设读取数据到寄存器,再将寄存器中的数据存储到内存中;而在DMA方式下,数据传送在DMA控制器的控制下直接在内存和外设间传送,既不需要CPU的参与也没有了中断开销,DMA方式比中断方式具有更高的I/O 效率。
11. 在DMA方式下,主存和 I/O设备之间有一条物理通路相连吗?为什么?
没有。通常所说的DMA方式在主存和I/O设备之间建立了一条“直接的数据通路”,使得数据在和主存和I/O设备之间直接进行传送。其含义并不是在主存和I/O设备之间建立一条物理直接通路,二是主存和I/O设备通过I/O设备接口、系统总线及总线桥接部件等相连,建立一个信息可以相互通达的通路,这在逻辑上可视为直接相连。其“直接”是相对于要通过CPU才能和主存相连这种方式而言。
12. 中断周期的前后各是CPU的什么工作周期?
中断周期之前是执行周期,之后是下一条指令的取指周期。
重点例题
解析:(以下是对答案的解析,不是答案的内容)
第一问:
当程序级别为1时,12345都屏蔽,因为1的级别最高,需要优先处理
当程序级别为2时,比它高的有145,所以145为0,23为1.
以此类推
第二问:
用户程序执行时,其现行PSW中的中断屏蔽位均为1。当2、4级中断请求同时到来时,均进入排队器。按照响应级别高低,优先响应2级中断请求(中断用户程序执行,并设置用户程序的断点,建立2的新现场)。由于2级中断处理程序PSW中的4级中断屏蔽位为0,即4可以打断2,于是cpu转而去响应4(设置2的断点,建立3的新现场)。4级中断处理程序开启,没有中断源可以打断4,4级中断处理程序继续执行。执行后,回到断点2,1,3,5发出中断请求,由于2级中断处理程序PSW中的3级中断屏蔽位为1,不允许3进入中断响应排队器。按照响应级别高低,优先响应1级中断请求,由于1级中断处理程序PSW中的5级中断屏蔽位为1。继续处理1级中断程序。处理完成后,返回上一级断点(2的断点),紧接着完成排队器里的响应5级请求,再回到断点2。执行2级中断处理程序。待处理完成后回到主程序,完成未完成的中断服务。