导图社区 计算机组成原理教学思维导图
这是一篇关于计算机组成原理的思维导图,涵盖了计算机的基本概念,原理等等,快速掌握与计算机相关知识。适合学生备考复习。
编辑于2021-07-07 20:20:34计算机组成原理
计算机系统概述
计算机发展历程
第一代(1946-50s后期)
电子管计算机时代
第二代(50s中期-60s后期)
晶体管计算机时代
第三代(60s中期-70s前期)
集成电路计算机时代
第四代(70s初-至今)
大规模集成电路计算机时代
计算机系统层次结构
计算机硬件的基本组成
运算器
控制器
存储器
输入
输出
计算机软件的分类
系统软件
应用软件
计算机的工作过程
执行指令的过程
取指令阶段
指令译码阶段
指令执行阶段
计算机性能指标
吞吐量
单位时间内的数据输出数量
响应时间
从事件开始到事件结束的时间,也称执行时间
主频
CPU工作主时钟的频率,即机器主频
CPU时钟周期
机器主频的倒数
CPI
执行一条指令所需要的平均时钟周期
CPU执行时间
TCPU=In×CPI×TC
In执行程序中指令的总数
CPI执行每条指令所需的平均时钟周期数
TC时钟周期时间的长度
MIPS
每秒处理的百万级的机器语言指令数
衡量CPU速度的一个指标
MIPS = 指令数/(执行时间 * 10^6) = 指令数 / (指令数 * CPI / 时钟频率 * 10^6) = 时钟频率 / (CPI * 10^6)
如果一个新程序执行的指令数更多,但每条指令的执行速度更快,则MIPS的变化是性能无关的
数据的表示和运算
数制与编码
进位计数制及其相互转换
进位计数制
基数
进位计数制中所拥有数字的个数
权
每位数字的值等于数字乘以所在位数的相关常数,这个常数就是权
不同数制之间转化
各种数制转换成十进制
按权展开,求出各加权系数的和
十进制转换为二进制
数整数部分转换为二进制数采用“除2取法”;小数部分转换为二进制数采用“乘2取整法”
二进制和八进制间的相互转换
二进制数转换成八进制数
整数部分从低位开始,每三位二进制数为一组, 最后不足三位的,则在高位加0补足三位为止; 小数点后的二进制数则从高位开始,每三位二 进制数为一组,最后不足三位的,则在低位加 0补足三位,然后用对应的八进制数来代替,再 按顺序排列写出对应的八进制数
八进制数转换成二进制数
将每位八进制数用三位二进制数来代替,再按原 来的顺序排列起来,便得到了相应的二进制数
二进制和十六进制间的相互转换
二进制数转换成十六进制数
整数部分从低位开始,每四位二进制数为一组, 最后不足四位的,则在高位加0补足四位为止; 小数部分从高位开始,每四位二进制数为一组, 最后不足四位的,在低位加0补足四位,然后用 对应的十六进制数来代替,再按顺序写出对应的 十六进制数
十六进制数转换成二进制数
将每位十六进制数用四位二进制数来代替,再按 原来的顺序排列起来便得到了相应的二进制数
真值和机器数
真值
数据的数值通常以正(+)负(-)号后跟绝对值来表示,称之为真值
机器数
在计算机中正负号也需要数字化,一般用0表示正号,1表示负号,把符号数字化的数成为机器数
BCD码
含义
四位二进制数中的任意十种组合来表示一位十进制数,又称BCD码
修正规则
如果两个一位BCD码相加之和小于或等于(1001)2,即(9)10,不需要修正
如相加之和大于或等于(1010)2,或者产生进位,要进行加6修正,如果有进位,要向高位进位
字符与字符串
ASCII码
ASCII码用7位二进制表示一个字符,总共128个字符元素,包括10个十进制数字(0-9)、52个英文字母(A-Z和a-z)、34专用符号和32控制符号
EBCDIC码
为Extended Binary Coded Decimal Interchange Code的简称,它采用8位来表示一个字符
字符串的存放
向量存储法
字符串存储时,字符串中的所有元素在物理上是邻接的
串表存储法
字符串的每个字符代码后面设置一个链接字,用于指出下一个字符的存储单元的地址
校验码
奇偶校验码
基本思想
码距由1增加到2,若编码中有1位二进制数出错了,即由1变成0,或者由0变成1,这样出错的编码就成为非法编码,就可以知道出现了错误
在原有的编码之上再增加一位校验位,原编码n位,形成新的编码为n+1 位
分类
奇校验
增加位的0或1要保证整个编码中1的个数为奇数个
偶校验
增加位的0或1要保证整个编码中1的个数为偶数个
海明校验码
基本思想
在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中; 当某一位出错就会引起有关的几个校验组的值发生变化,这不但可以发现出错, 还能指出是哪一位出错,为自动纠错提供了依据
具体实现
假设为k个数据位设置r个校验位,则校验位能表示2^r个状态,可用其中的一个状态指出 "没有发生错误", 用其余的2 ^r-1个状态指出有错误发生在某一位,包括k个数据位和r个校验位
校验位的位数应满足关系为
2^r ≥ k + r + 1
如要能检出与自动校正一位错,并能同时发现哪位错, 此时校验位的位数r和数据位的位数k应满足关系为
2^r-1 ≥ k + r
循环冗余校验码(CRC校验码)
基本思想
在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码
对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x); 根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式
具体实现
假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*x的R次方,这样C(x)的右边就会空出R位, 这就是校验码的位置;通过C(x)*X的R次方除以生成多项式G(x)得到的余数就是校验码
生成步骤
将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数
将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方
用生成多项式(二进制数)对信息码做除,得到R位的余数
将余数拼到信息码左移后空出的位置,得到完整的CRC码
定点数的表示和运算
定点数的表示
无符号数的表示
无符号数就是指正整数,机器字长的全部位数均用来表示数值的大小,相当于数的绝对值
对于字长为n+1位的无符号数的表示范围为0~2^n+1-1
带符号数的表示
原码表示法
机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后,并以绝对值形式给出
补码表示法
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
反码表示法
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
举例
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
定点数的运算
定点数的位移运算
算术移位:带符号数移位
逻辑移位:无符号数移位
原码定点数的加/减运算
对原码表示的两个操作数进行加减运算时,计算机的实际操作是加还是减,不仅取决指令中的操作码, 还取决于两个操作数的符号。而且运算结果的符号判断也较复杂,因此在计算机中很少被采用
补码定点数的加/减运算
加法
整数
[A]补 + [B]补= [A+B]补(mod 2^n+1)
小数
[A]补 + [B]补= [A+B]补(mod 2)
减法
整数
[A]补 - [B]补= [A+(-B)]补=[A]补 + [-B]补(mod 2^n+1)
小数
[A]补 - [B]补= [A+(-B)]补=[A]补 + [-B]补(mod 2)
无需符号判定,连同符号位一起相加,符号位产生的进位自然丢掉
定点数的乘/除运算
一位乘法
原码定点一位乘法
两个原码数相乘,其乘积的符号为相乘两数的异或值,数值两数绝对值之积
定点补码一位乘法
有的机器为方便加减法运算,数据以补码形式存放。乘法直接用补码进行,以减少转换次数
具体规则为
[X·Y]补=[X]补(-Y0 + 0. Y1 Y2… Yn )
两位乘法
原码两位乘法
为了提高乘法的执行速度,考虑每次对乘法的两位进行判断以确定相应的操作,故称为两位乘法
运算规则
(1)符号位不参与运算,最后符号Pf=xf⊕yf
(2)部分积与被乘数均采用三位符号,乘数末位增加一位C,其初值为0
(3)按表中操作
(4)若尾数n为偶数,则乘数用双符号,最后一步不位移; 若尾数n为奇数,则乘数用单符号,最后一步移一位
补码两位乘法
(1)符号位参与运算,两数均用补码来表示
(2)部分积与被乘数均采用三位符号表示,乘数末尾加一位Yn+1,初值为0
(3)按表中操作
(4)若尾数n为偶数,则乘数用双符号,最后一步不位移; 若尾数n为奇数,则乘数用单符号,最后一步移一位
补码除法
定点原码一位除法
恢复余数法
被除数(余数)减去除数,如果为0或者为正值时,上商为1,不恢复余数; 如果结果为负,上商为0,再将除数加到余数中,恢复余数。余数左移1位
加减交替法
当余数为正时,商上1,求下一位商的办法,余数左移一位,再减去除数; 当余数为负时,商上0,求下一位商的办法,余数左移一位,再加上除数
溢出概念和判别方法
溢出
当运算结果超出机器数所能表示的范围时,称为溢出
三种判别方法
当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出
当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位, Cf为符号位的进位;如果C≠Cf ,则为溢出,所以溢出条件=C⊕Cf
采用双符号fs2fs1。正数的双符号位为00,负数的双符号位为11。 符号位参与运算,当结果的两个符号位甲和乙不相同时,为溢出。 所以溢出条件= fs2⊕fs1 ,或者溢出条件= fs2fs1 + fs2fs1
浮点数的表示和运算
浮点数的表示
浮点数的表示范围
N=M·R^E
其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16
IEEE754标准
常用的浮点数有两种格式
(1)单精度浮点数(32位),阶码8位,尾数24位(内含:位符号位)
2)双精度浮点数(64位),阶码11位,尾数53位(内含:位符号位)
浮点数的加/减运算
1)“对阶”操作
比较两浮点数阶码的大小,求出其差ΔE,保留其大值E,E=max(Ex, Ey); 当ΔE≠0时,将阶码小的尾数右移ΔE位,并将其阶码加上ΔE,使两数的阶码值相等
2)尾数加减运算
执行对阶之后,两尾数进行加减操作
3)规格化操作
规格化的目的是使得尾数部分的绝对值尽可能以最大值的形式出现
4)舍入
在执行右规或者对阶时,尾数的低位会被移掉,使数值的精度受到影响,常用“0”舍“1”入法; 当移掉的部分最高位为1时,在尾数的末尾加1,如果加1后又使得尾数溢出,则要再进行一次右规
5)检查阶码是否溢出
阶码溢出表示浮点数溢出。在规格化和舍入时都可能发生溢出,若阶码正常,加/减运算正常结束; 若阶码下溢,则设置机器运算结果为机器零,若上溢,则设置溢出标志
算术逻辑单元ALU
串行加法器和并行加法器
串行进位加法器
原理
逻辑电路比较简单,但是最高位的加法运算,一定要等到所有低位的加法 完成之后才能进行,低位的进位要逐步的传递到高位,逐级产生进位
特点
运算速度比较慢
并行进位加法器
原理
将加法器分成若干组,在组内采用并行进位,组间则采用串行进位或并行进位,由此形成多种进位结构
特点
运算速度很快,形成最高进位输出的延迟时间很短,但是以增加硬件逻辑线路为代价
算术逻辑单元ALU的功能和机构
ALU部件是运算器中的主要组成部分,又称为多功能函数发生器,主要用于完成各种算术运算和逻辑运算
ALU的算术运算部件包含加法器、减法器、乘法器、除法器、增量器(+1)、减量器(-1)、BCD码运算器等组件
ALU的主要工作是根据CPU的指令要求执行各种指定的运算,如加法、减法、乘法、除法、比较、逻辑移位等操作
存储器及存储系统
存储器概述
存储器的分类
按存储介质分类
半导体存储器
磁表面存储器
磁芯存储器
光盘存储器
按存取方式分类
随机存储器
只读存储器
顺序存取存储器
直接存取存储器
按作用分类
高速缓冲存储器
主存储器
辅助存储器
按信息的可保存性分类
易失性存储器
断电后,存储信息即消失的存储器
非易失性存储器
断电后,息仍然保存的存储器
存器器的分级结构
含义
为了解决存储容量、存取速度和价格之间的矛盾,通常把各种不同存储容量、 不同存取速度的存储器,按一定的体系结构组织起来,形成一个统一整体的存储系统
分类
Cache——主存存储层次(Cache存储系统)
主存——辅存存储层次(虚拟存储系统〕
主存储器
主存储器的基本结构
主存的组成框图
主存储器的主要技术指标
存储容量
对于字节编址的计算机,以字节数来表示存储容量; 对于字编址的计算机,以字数与其字长的乘积来表示存储容量
存储速度
存取时间
存取时间又称为访问时间或读写时间,它是指从启动一次存储器操作到完成该操作所经历的时间
存取周期
存取周期又可称作读写周期、访内周期,是指主存进行一次完整的读写操作所需的全部时间,即 连续两次访间存储器操作之间所需要的最短时间
主存带宽
与存取周期密切相关的指标是主存的带宽,它又称为数据传输率,表示每秒从主存进出信息的最 大数量,单位为字每秒或字节每秒或位每秒
可靠性
可靠性是指在规定的时间内,存储器无故障读写的概率
平均无故障时间(MTBF)
MTBF可以理解为两次故障之间的平均时间间隔,其越长,说明存储器的可靠性越高
功耗
功耗是一个不可忽视的问题,它反映了存储器件耗电的多少,同时也反映了其发热的程度
通常希望功耗要小,这对存储器件的工作稳定性有好处
大多数半导体存储器的工作功耗与维持功耗是不同的,后者大大地小于前者
半导体存储器芯片
SRAM存储器
SRAM静态存储单元的每个存储位需要四到六个晶体管组成
比较典型的是六管存储单元,即一个存储单元存储一位信息“0”或“1”
静态存储单元保存的信息比较稳定,信息为非破坏性读出,故不需要重写或者刷新操作; 另一方面,其结构简单、可靠性高、速度较快,但其占用元件较多,占硅片面积大,且功耗大,所以集成度不高
DRAM存储器
常见的动态RAM存储单元有三管式和单管式两种,它们的共特点是靠电容存储电荷的原理来寄存信息
若电容上存有足够的电荷表示“1”,电容上无电荷表示“0”
电容上的电荷一般只能维持1-2ms,因此即使电源不掉电,电容上的电荷会自动消失
因此,为保证信息的不丢失,必须在2ms之内就要对存储单元进行一次恢复操作,这个过程称为再生或者刷新
与静态RAM相比,动态RAM具有集成度更高、功耗更低等特点,目前被各类计算机广泛使用
只读存储器
只读存储器(ROM)
掩模式ROM由芯片制造商在制造时写入内容,以后只能读而不能再写入
其基本存储原理是以元件的“有/无”来表示该存储单元的信息(“1”或“0”), 可以用二极管或晶体管作为元件,显而易见,其存储内容是不会改变的
可编程序的只读存储器(PROM)
PROM可由用户根据自己的需要来确定ROM中的内容,常见的熔丝式 PROM是以熔丝的通和断开来表示所存的信息为“1”或“0”
刚出厂的产品,其熔丝是全部接通的;根据需要断开某些单元的熔丝(写入); 显而易见,断开后的熔丝是不能再接通了,因而一次性写入的存储器; 掉电后不会影响其所存储的内容
可擦可编程序的只读存储器(EPROM)
为了能修改ROM中的内容,出现了EPROM,利用浮动栅MOS电路保存信息, 信息的改写用紫外线照射即可擦除
可电擦可编程序只读存储器(E2PROM)
E2PROM的编程序原理与EPROM相同,但擦除原理完全不同, 重复改写的次数有限制(因氧化层被磨损),一般为10万次
其读写操作可按每个位或每个字节进行,类似SRAM, 但每字节的写入周期要几毫秒,比SRAM长得多
E2PROM每个存储单元采则2个晶体管,其栅极氧化层比EPROM薄, 因此具有电擦除功能
快除读写存储器(Flash Memory)
F1ash Memory是在EPROM与E2PROM基础上发展起来的,其读写过程 和E2PROM不同,F1ash Memory的读写操作一般是以块为单位
主存储器组织
主存储器与CPU的连接
位扩展
位扩展指的是用多个存储器器件对字长进行扩充
位扩展的连接方式是将多片存储器的地址、片选己、读写控制端R/W可相应并联,数据端分别引出
字扩展
字扩展指的是增加存储器中字的数量
静态存储器进行字扩展时,将各芯片的地址线、数据线、读写控制线相应并联,而由片选信号来区分各芯片的地址范围
字位扩展
实际存储器往往需要字向和位向同时扩充
双口RAM和多模块存储器
双端口存储器
双端口存储器是一种具有两个单独的读/写端口及控制电路的存储器
通过增加一个读/写端口,双端口存储器扩展了存储器的的信息交换能力
多模块存储器
为了解决CPU与主存储器之间的速度匹配问题,在高速存储器中,普遍采用并行主存系统; 即利用类似存储器扩展(位扩展、字扩展、字位扩展)的方法,将n个字长为W位的存储器并行连接, 构建一个更大的存储器。并行主存有单体多字方式、多体并行方式和多体交叉方式
高速缓冲存储器(Cache)
程序访问的局部性
局部性原理
从大量的统计中得到的一个规律是,程序中对于存储空间90%的访问局限于存储 空间的10%的区域中,而另外10%的访问则分布在存储空间的其余90%的区域中
访存的局部性规律的两个方面
时间局部性
如果一个存储项被访问,则可能该项会很快被再次访问
空间局部性
如果一个存储项被访问,则该项及其邻近的项也可能很快被访问
Cache的基本工作原理
处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元 是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache。否则,Cache不命中,则需要访问主存,并从 主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关 的地址映象关系
Cache和主存之间的映射方式
地址映象
把主存中的地址映射成Cache中的地址
分类
直接映射
直接映象就是将主存地址映象到Cache中的一个指定地址
任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的, 若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去
全相联映象
全相联映象就是任何主存地址可映象到任何Cache地址的方式
在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置; 只有在Cache中的块全部装满后才会出现块冲突
组相联映象
组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象, 而组内各块之间则是全相联映象
Cache中主存块的替换算法
替换算法
在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置
而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块。即替换算法
不同算法对比
Cache写策略
更新策略
对Cache的写操作,情况比读操作要复杂一些,由于写入Cache时, 并没有写入主存,因此就出现Cache和主存数据不一致的情况
如何处理Cache和主存不一致的方法就称为更新策略
不同策略对比
虚拟存储器
虚拟存储器的基本概念
虚拟存储器是主存的扩展,虚拟存储器的空间大小取决于计算机的访存能力而不是实际外存的大小,实际存储空间可以小于虚拟地址空间
从程序员的角度看,外存被看作逻辑存储空间,访问的地址是一个逻辑地址(虚地址),虚拟存储器使存储系统既具有相当于外存的容量又有接近于主存的访问速度
三种不同管理方式
页式虚拟存储器
把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置
页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映象机构将虚页号转换成主存的实际页号
页式管理用一个页表,包括页号、每页在主存中起始位置、装入位等。页表是虚拟页号与物理页号的映射表
段式虚拟存储器
把主存按段分配的存储管理方式,它是一种模块化的存储管理方式,每个用户程序模块可分到一个段, 该程序模块只能访问分配给该模块的段所对应的主存空间
段页式虚拟存储器
是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行; 段的长度必须是页长的整数倍,段的起点必须是某一页的起点
指令系统
指令格式
指令的基本格式
一条指令实际上包括两种信息即操作码和地址码
操作码
用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数
地址码
用来描述该指令的操作对象,或者直接给出操作数或者指出操作数的存储器地址或寄存器地址(即寄存器名)
定长操作码指令格式
零地址指令
图示
OPCODE--操作码
指令中只有操作码,而没有操作数或没有操作数地址
一地址指令
图示
OPCODE--操作码
A--操作数的存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址,又是操作结果的存储地址
二地址指令
图示
OPCODE--操作码
A1--第一个源操作数的存储器地址或寄存器地址
A2--第二个源操作数和存放操作结果的存储器地址或寄存器地址
对两个源操作数进行操作码所规定的操作后,将结果存入目的地址,在本例中即为A2指定的地址
三地址指令
图示
OPCODE--操作码
A1--第一个源操作数的存储器地址或寄存器地址
A2--第二个源操作数的存储器地址或寄存器地址
A3--操作结果的存储器地址或寄存器地址
其操作是对A1,A2指出的两个源操作数进行操作码(OPCODE)所指定的操作,结果存入A3中
多地址指令
在某些性能较好的大、中型机甚至高档小型机中,往往设置一些功能很强的,用于处理成批数据的指令,如字符串处理指令,向量、矩阵运算指令等
为了描述一批数据,指令中需要多个地址来指出数据存放的首地址、长度和下标等信息
扩展操作码指令格式
举例
某机器的指令长度为16位,包括4位基本操作码字段和三个4位地址字段
图示
4位基本操作码有16个码点(即有16种组合),若全部用于表示三地址指令,则只有16条。但是,若三地址指令仅需15条,两地址指令需15条, 一地址指令需15条,零地址指令需16条,共61条指令;显然,只有4位基本操作码是不够的,必须将操作码的长度向地址码字段扩展才行
扩展方法
(1)15条三地址指令的操作码由4位基本操作码从0000~1110给出,剩下一个码点1111用于把操作码扩展到A1,即4位扩展到8位
(2)15条二地址指令的操作码由8位操作码从11110000~11111110给出,剩下一个码点11111111用于把操作码扩展到A2,即从8位扩展到12位
(3)15条一地址指令的操作码由12位操作码从111111110000~111111111110给出,剩下的一个码点111111111111用于把操作码扩展到A3,即从12位扩展到16位
(4)16条零地址指令的操作码由16位操作码从1111111111110000~1111111111111111给出
指令的寻址方式
有效地址的概念
操作数的真实地址称为有效地址,记做EA,它是寻址方式和形式地址共同来决定的
常见寻址方式
立即寻址
所需的操作数由指令的地址码部分直接给出,就称为立即数(或直接数)寻址方式
这种方式的特点是取指时,操作码和一个操作数同时被取出,不必再次访问存储器,提高了指令的执行速度
但是由于这一操作数是指令的一部分,不能修改,而一般情况下,指令所处理的数据都是在不断变化的(如上条指令的执行结果作为下条指令的操作数), 故这种方式只能适用于操作数固定的情况
通常用于给某一寄存器或存储器单元赋初值或提供一个常数等
直接寻址
指令的地址码部分给出操作数在存储器中的地址
隐含寻址
操作数的地址隐含在操作码或者某个寄存器中
间接寻址
在寻址时,有时根据指令的地址码所取出的内容既不是操作数,也不是下一条要执行的指令,而是操作数的地址或指令的地址,这种方式称为间接寻址或间址
寄存器寻址
计算机的中央处理器一般设置有一定数量的通用寄存器,用以存放操作数、操作数的地址或中间结果
假如指令地址码部分给出某一通用寄存器地址,而且所需的操作数就在这一寄存器中,则称为寄存器寻址
通用寄存器的数量一般在几个至几十个之间,比存储单元少很多,因此地址码短,而且从寄存器中存取数据比从存储器中存取快得多, 所以这种方式可以缩短指令长度、节省存储空间,提高指令的执行速度,在计算机中得到广泛应用
寄存器间接寻址
寄存器中给出的是操作数的地址,因此还需要访问一次存储器才能得到操作数
基址寻址
在计算机中设置一个专用的基址寄存器,或由指令指定一个通用寄存器为基址寄存器; 操作数的地址由基址寄存器的内容和指令的地址码A相加得到
变址寻址
指令地址码部分给出的地址A和指定的变址寄存器X的内容通过加法器相加,所得的和作为地址从存储器中读出所需的操作数; 这是几乎所有计算机都采用的一种寻址方式
相对寻址
把程序计数器PC的内容(即当前执行指令的地址)与指令的地址码部分给出的位移量(disp)之和作为操作数的地址或转移地址,称为相对寻址
堆栈寻址
在一般计算机中,堆栈主要用来暂存中断和子程序调用时现场数据及返回地址,用于访问堆栈的指令只有压入(即进栈)和弹出(即退栈)两种, 它们实际上是一种特殊的数据传送指令
压入指令(PUSH)
把指定的操作数送入堆栈的栈顶
弹出指令(POP)
把栈顶的数据取出,送到指令所指定的目的地
CISC和RISC的基本概念
CISC(复杂指令集计算机)
随着VLSI技术的发展,计算机的硬件成本不断下降,软件成本不断提高,使得人们热衷于在指令系统中增加更多的指令和复杂的指令, 来提高操作系统的效率,并尽量缩短指令系统与高级语言的语义差别,以便于高级语言的编译和降低软件成本
另外,为了做到程序兼容,同一系列计算机的新机器和高档机的指令系统只能扩充而不能减去任意一条,因此,促使指令系统越来越复杂, 某些计算机的指令多达几百条。例如,DEC公司的VAX11/780计算机有303条指令,18种寻址方式,我们称这些计算机为复杂指令系统 计算机(complex instruction set computer,简称CISC)
Intel公司的180X86微处理器,IBM公司的大、中计算机均为CISC
RISC(简单指令集计算机)
RISC的产生
最长使用的是一些简单指令,占指令总数的20%,但在程序中出现的频率却占80%; 而占20%的复杂指令,为实现其功能而设计的微程序代码却占总代码的80%
CISC研制时间长、成本高、难于实现流水线;因此出现了RIC技术
RISC的特点
优先选取使用频率最高的一些简单指令
指令长度固定
只有取数/存数指令(load/store)访问内存
CPU中的寄存器数量很多
大部分指令在一个或小于一个机器周期完成
硬布线控制逻辑为主,不用或少用微码控制
一般用高级语言编程,特别重视编译优化,以减少程序执行时间
RISC的发展
1983年,一些中小型公司开始推出RISC产品,由于其高性能价格比,市场占有率不断提高
1987年SUN公司用SPARC芯片构成工作站;目前一些大公司,IBM、DEC、Intel、Motorola以将部分力量转移到RISC方面
CISC机与RISC机的主要特征对比
图示
中央处理器
CPU的功能和基本结构
控制器的功能
取指令
分析指令
执行指令
控制程序和数据的输入与结果输出
对异常情况和某些请求的处理
控制器的组成
程序计数器(PC)
指令寄存器(IR)
指令译码器或操作码译码器
脉冲源及启停线路
时序控制信号形成部件
指令执行过程
图示
第一个机器周期总是取指周期,而指令的地址总是从PC中获得,当发出读取存储器命令后,指令总是从数据总线DB送回, CPU接受到指令之后,将指令放在指令寄存器IR之中。指令在IR中一直保留到取下一条指令为止
第二个机器周期开始,根据指令有所不同
执行一次ALU运算,分配一个机器周期
执行访问一次存储器,分配一个机器周期
所以,根据指令执行的不同情况,将会得到不同指令执行所占用的机器周期
根据每个机器周期完成的任务不同,我们将每个机器周期按照任务命名,如同用取指周期命名第一个机器周期一样
数据通路的功能和基本结构
数据通路
数据在功能部件之间传送的路径称为数据通路
运算器与各寄存器之间的传送路径就是中央处理器内部数据通路
“数据通路”描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,都要加以控制
建立数据通路的任务,是由“操作控制部件”来完成
数据通路的功能
实现CPU内部的运算器和寄存器以及寄存器之间的数据交换
数据通路的基本结构
CPU内部总线方式
将所有的寄存器的输入端和输出端都连接到一条或多条公共的通路上,这种结构比较简单,但是数据传输存在较多的冲突现象, 性能较低,如果连接各部件的总线只有一条,则称单总线结构;如果CPU中有两条或更多的总线,则构成双总线结构和多总线结构
在双总线或多总线结构中,数据的传递可以同时进行
专用数据通路方式(不采用CPU内部总线方式)
根据指令执行过程中的数据和地址的流动放心安排连接线路,避免使用共享的总线,性能比较高,但硬件量大
控制器的功能和工作原理
硬布线控制器
概述
控制器控制信号的产生是采用逻辑电路,也称组合逻辑电路控制方式
“时序控制信号形成部件”是由硬逻辑布线完成的
结构方框图
基本原理
某一微操作控制信号C是指令操作码译码器输出Im 、时序信号(节拍电位Mi ,节拍脉冲Tk )和状态条件信号Bj 的逻辑函数
数学描述
C=f(Im,Mi,Tk,Bj )
控制信号C是用门电路、触发器等许多器件采用布尔代数方法来设计实现的
微程序控制器
微程序、微指令和微命令
微指令
在微程序控制的计算机中,将由同时发出的控制信号所执行的一组微操作称为微指令, 所以微指令就是把同时发出的控制信号的有关信息汇集起来而形成的
微命令
将一条指令分成若干条微指令,按次序执行这些微指令,就可以实现指令的功能,组成微指令的微操作又称微命令
微程序
计算机的程序由指令序列构成,而计算机每条指令的功能均由微指令序列解释完成,这些微指令序列的集合就叫做微程序
微指令的编码方式
直接控制法
在微指令的控制字段中,每一位代表一个微命令,在设计微指令时,是否发出某个微命令, 只要将控制字段中相应位置成“1”或“0”,这样就可打开或关闭某个控制门
字段直接编译法
选出互斥的微命令,并将这些微命令编成一组,成为微指令字的一个字段,用二进制编码来表示, 就是字段直接编译法
如果有若干个(一组)微命令,在每次选择使用它们的微周期内,只有一个微命令起作用,那么这若干个微命令是互斥的
所谓微周期,指的是一条微指令所需的执行时间
字段间接编译法
在字段直接编译法的基础上,进一步缩短微指令字长的一种编译法
微地址的形式方式
微程序入口地址的形成
一级转移方式
当操作码的位数与位置固定时,可直接使操作码与入口地址的部分位对应
多级转移方式
先按照指令类型标志转移到某条微指令,以区分出是哪一大类,然后可以 进一步按指令操作码转移,区分出是该指令中的哪一类具体操作
微程序后继地址的形成
以增量方式产生后继微地址
增量与下址字段结合产生后继微地址
指令流水线
指令流水线的基本概念
流水线基本原理
流水线技术是一种显著提高指令执行速度与效率的技术,方法是:指令取指完成后,不等该指令执行完毕即可取下一条指令
如果把一条指令的解释过程进一步细分,例如,把分析、执行两个过程分成取指、译码、执行、访存和写回寄存器五个子过程, 并用五个子部件分别处理这五个子过程
这样只需在上一指令的第一子过程处理完毕进入第二子过程处理时,在第一子部件中就开始对第二条指令的第一子过程进行处理; 随着时间推移,这种重叠操作最后可达到五个子部件同时对五条指令的子过程进行操作
影响流水线性能的因素
结构相关
当多条指令进人流水线后,硬件资源满足不了指令重叠执行的要求时产生的
数据相关
指令在流水线中重叠执行时,当后继指令需要用到前面指令的执行结果时发生的
控制相关
当流水线遇到分支指令和其他改变PC值的指令时引起的
流水线性能
吞吐率
在指令流水线中,吞吐率是指单位时间内流水线所完成的指令或输出结果的数量
加速比
流水线的加速比是指m段流水线的速度与等功能的非流水线的速度之比
效率
效率是指流水线中个功能段的利用率
超标量和动态流水线的基本概念
超标量
在超标量的处理器结构中,整数和浮点数运算、装入、存储以及条件转移等普通操作指令可以同时启动并独立执行
超标量流水CPU是指集成了多条流水线结构的CPU,当流水线满载时,每个时钟周期可以完成一条以上的指令
动态流水线
流水线按功能可分成单功能流水线和多功能流水线两种
单功能流水线只完成一种功能。如浮点加法或乘法流水线
多功能流水线则可完成多种功能,它允许在不同时间,甚至同 一时间内在流水线内连接不同功能段的子集来实现不同功能
流水线按工作方式可分为静态流水线和动态流水线两种
在静态流水线中,同一时间内它只能以一种功能方式工作。它可以是单功能的, 也可以是多功能的。当是多功能流水线时,则从一种功能方式变为另一种功能方式时, 必须先排空流水线,然后为另一种功能设置初始条件后方可使用。显然,不希望这种 功能的转换频繁的发生,否则将严重影响流水线的处理效率
动态流水线则允许在同一时间内将不同的功能段连接成不同的功能子集 (前提条件是功能部件的使用不发生冲突),以完成不同的运算功能; 显然,动态流水线必是多功能流水线,而单功能流水线则必是静态的
系统总线
概述
总线的基本概念
总线是连接各个部件的信息传输线,是各个部件共享的传输介质,总线上信息的传送分为串行和并行传输
总线的分类
片内总线
芯片内部的总线
系统总线
数据总线
双向与机器字长、存储字长有关
地址总线
单向与存储地址、 I/O地址有关
控制总线
部分出部分入 控制器控制所有部件
通信总线
用于计算机系统之间或计算机系统,与其他系统(如控制仪表、移动通信等)之间的通信
总线的组成
单总线结构
将CPU、主存、I/O设备(通过I/O接口)都挂在一组总线上
多总线结构
将速度较低的I/O设备从单总线上分离出来,形成主总线与I/O设备总线分开的结构
性能指标
总线宽度
数据总线的根数
总线带宽
数据传输率
时钟同步/异步
总线上的数据与时钟同步的称为同步总线,与时钟不同步的称为异步总线
总线复用
一条信号线上分时传送两种信号
信号线数
地址总线、数据总线和控制总线三种总线数的总和
总线控制方式
包括突发工作、自动配置、总裁方式、逻辑方式、技术方式等
负载能力
电源电压
总线宽度能否扩展
总线仲裁
概述
由于总线上连接着多个部件,何时由哪个部件发送信息,如何定时,如何防止信息丢失, 如何避免多个设备同时发送,如何规定接收部件等一系列问题都需要总线控制器统一管理, 主要包括总线的判优控制(仲裁逻辑)和通信控制
集中仲裁方式
原理
将控制逻辑集中在一处(如在CPU中)
分类
链式查询
当一个或多个设备同时发出总线使用请求信号BR时,中央仲裁器发出的 总线授权信号BG沿着链串行的从一个设备依次传送到下一个设备,到达 离出发点最近的发出总线请求的设备之后就不再往下传
计数器定时查询
总线上个设备通过总线请求信号BR,发出请求,中央仲裁器接收到请求信号后, 在总线忙信号BS为“0”的情况下,让计数器开始计数,计数值通过一组地址线发往各设备
每个设备有一个地址判别电路,如果地址线上的计数值与总线请求设备地址一致, 则该设备对BS线置“1”,表示该设备获得了总线使用权,同时中止计数查询
独立请求方式
每个连接到总线的设备都有一组单独的总线请求信号BRi与总线授权信号BGi
每个设备请求使用总线时,它们各自发出自己的总线请求信号
中央仲裁器中设置了一个专门的排队电路,由它根据一定的优先次序 决定优先响应哪个设备的请求,然后给该设备总线授权信号BGi
分布仲裁方式
原理
将控制逻辑分散在总线的各个部件之上
优点
不需要中央仲裁器,而是让各个主设备功能模块都有自己的仲裁号和仲裁电路
实现方法
需要使用总线时,各个设备的功能模块将自己唯一的仲裁号发送到共享的总线上, 各自的仲裁电路再将从仲裁总线上获得的仲裁号和自己的仲裁号相对比,获胜的 仲裁号将保留在仲裁总线上,相应设备的总线请求获得响应
总线操作和定时
主要操作
读和写
读是将从设备(如存储器)中的数据读出并经总线传输到主设备(如CPU);写是主设备到从设备的数据传输过程
块传送
主设备给出要传输的数据块的起始地址后,就可以利用总线对固定长度的数据一个接一个的读出或写入
写后读或读后写
主设备给出地址一次,就可以进行先写后读或者先读后写操作,先读后写往往用于校验数据的正确性, 先写后读往往用于多道程序的对共享存储资源的保护
广播和广集
主设备同时向多个从设备传输数据的操作模式称为广播
广集操作和广播操作正好相反,它将从多个从设备的数据在总线上完成AND或OR操作,常用于检测多个中断源
定时
是指事件出现在总线上的时间关系
分类
同步定时方式
同步定时方式要求所有的模块由统一的始终脉冲进行操作的控制,各模块的所有动作均在时钟周期 的开始产生,并且多数动作在一个时钟周期内完成
异步定时方式
异步定时方式是一种应答方式或者互锁机制的定时方式;对于异步操作,操作的发生由主设备或从 设备的的特定信号来确定;总线上一个事件的发生取决于前一个事件的发生,双方互相提供联络信号
总线标准
系统总线
ISA
工业标准体系(Industry Standard Architecture)
最早出现的微型计算机总线标准,应用在IBM的AT机上。直到现在,微型计算机主板或工作站主板上还保留有少量的ISA扩展槽
EISA
扩展工业标准体系(Extended Industry Standard Architecture)
主要用于286微机,EISA对ISA完全兼容
VESA
视频电子标准协会(Video Electronic Standard Association)
按照局部总线标准设计的一种开放总线,只适合于486的一种过渡标准,已淘汰
PCI
外围设备互联(Peripheral Component Interconnection)
PCI局部总线是高性能的32位或64位总线,它是专门为高集成度的外围部件、扩充插板和处理器/存储器系统而设计的互连机制
AGP
新型的视频接口的技术标准
专用于连接主存和图形存储器,AGP总线宽32位,时钟频率66MHz,能以133MHz工作,最高的传输速率可达533Mbps
设备总线
IDE
集成驱动电子设备(Integrated Drive Electronics)
它是一种在主机处理器和磁盘驱动器之间广泛使用的集成总线。绝大部分PC的硬盘和相当数量的CD-ROM驱动器都是通过这种接口和主机连接的
SCSI
小型计算机系统接口(Small Computer System Interface)
现在这种接口不再局限于将各种设备与小型计算机直接连接起来,它已经成为各种计算机(包括工作站、小型机、甚至大型机)的系统接口
RS-232
232标准(Recommended Standard-232C)
由美国电子工业协会EIA(Electronic Industries Association)推荐的一种串行通信总线标准
USB
USB(Universal Serial Bus)接口
基于通用的连接技术,可实现外设的简单快速连接,已达到方便用户、降低成本、扩展微机连接外设范围的目的
I/O系统
I/O系统基本概念
输入输出系统
除了CPU存储器两大模块之外,计算机硬件系统的第三个关键部分就是输入输出模块,也称输入输出系统
发展概况
早期
分散连接,CPU和I/O设备串行工作,程序查询方式
接口模块和 DMA 阶段
总线连接,CPU和I/O设备并行工作,中断方式和DMA方式
具有通道结构的阶段
具有 I/O 处理机的阶段
外部设备
输入设备
键盘
键盘是由一组排列成阵列形式的按键开关组成的,每按下一个键,产生一个相应的字符代码(每个按键的位置码), 然后将它转换成ASCII码或其他码,送至主机
目前常用的标准键盘有101个键,它除了提供通常的ASCII字符以外,还有多个功能键(由软件系统定义功能)、 光标控制键(上、下、左、右移动等)与编辑键(插入或消去字符)等
鼠标
机械式
金属球 电位器
光电式
光电转换器
输出设备
显示器
分类
按器件分
CRT显示器
LED显示器
等离子体显示器
按显示内容分
字符显示器
图形显示器
图像显示器
按设备功能分
普通显示器
仅供显示,也称监视器
显示终端
显示器和键盘组成的输入输出设备
打印机
分类
按印字原理分
打击式
点阵式打印机
非打击式
激光
静电
喷墨
按工作方式分
串行打印机
逐字打印
行式打印机
逐行打印
例子
激光打印机
激光打印机采用了激光技术和照相技术,印字的质量最好,在各个计算机系统中被广泛采用
激光打印机完成打印操作的基本工作过程大致是:充电→曝光→显影→转印→分离→定影→放电、清洁
喷墨打印机
喷墨打印机是串行非打击式打印机,印字原理是将墨水喷射到普通打印纸上;若采用红、绿、蓝三色喷墨头,便可实现彩色打印
外存储器
硬盘存储器
性能指标
存储密度
道密度 Dt
位密度 Db
存储容量
C = n × k × s
寻址时间
寻址时间=寻道时间 + 等待时间
辅存的速度=寻址时间+磁头读写时间
数据传输率
Dr = Db × V
误码率
出错信息位数与读出信息的总位数之比
硬磁盘存储器的类型
固定磁头和移动磁头
固定磁头
固定磁头的磁盘存储器,其磁头位置固定不动,磁盘上的每一个磁道都对应着一个磁头, 盘片也不可更换,其特点是省去了磁头沿着盘片径向运动所需的寻道时间,存取速度快, 只要磁头进入工作状态即可以进行读写操作
移动磁头
移动磁头的磁盘存储器在存取数据时,磁头在盘面上作径向运动,这类存储器可以由一个 盘片组成,也可以由多个盘片装在一个同心的主轴上,每个纪录面各有一个磁头
可换盘和固定盘
可换盘
可换盘磁盘存储器是指盘片可以脱机保存,这种磁盘可以在互为兼容的磁盘存储器之间交换数据, 便于扩大存储容量
固定盘
固定盘磁盘存储器是指磁盘不能从驱动器上取下,更换时要把整个头盘组合体一起更换
硬磁盘存储器的磁道记录格式
一个具有n个盘片的磁盘组,可将n个面上的同一半径的磁道看成一个圆柱面,这些磁道存储的信息称为柱面信息
盘面又分为若干个扇区,每条磁道有被分割为若干个扇段
磁盘阵列
例子
廉价冗余磁盘阵列
基本原理
将并行处理原理引入磁盘系统,采用低成本的小温盘,使多台磁盘构成同步化的磁盘阵列,数据展开存储在 多台磁盘上,提高了数据传输的带宽,并利用冗余技术提高可靠性,类似于存储器中的多体交叉技术
RAID分类
工业界公认的标准有6级别,分别为RAID0~RAID5
RAID-0级采用无冗余无校验的数据分块技术
RAID-1级采用磁盘镜像阵列技术
RAID-2级采用海明纠错码的磁盘阵列,通过增加校验磁盘实现单纠错双检错功能
RAID-3级是采用奇偶校验冗余的磁盘阵列,它也采用数据位交叉,阵列中只用一个校验盘
RAID-4级是一种独立传送磁盘阵列,它采用数据块交叉,用一个校验盘
RAID-5也是一种独立传送磁盘阵列,它采用数据块交叉和分布的冗余校验, 将数据和校验位都分布在各磁盘中,没有专门的奇偶校验驱动器
光盘存储器
概述
光盘存储器称光盘,是目前广泛使用的一种外存储器,更是多媒体计算机不可缺少的设备
它以介质材料的光学性质(如反射率、偏振方向)的变化来表示所存储信息的“1”和“0”
其突出的优点是,激光束可以聚焦到1μm以下,记录密度可达645Mb/i2
基本原理
光盘存储器利用激光束在介质表面上烧蚀凹坑存储信息。根据激光束及其反射光的强弱不同,可以完成信息的读和写
CD-ROM光盘
光盘的信息记录方式
光盘的信息记录方式以凹坑方式永久性存储
当激光束聚焦点照射在两个凹坑之间的盘面上时大部分光将返回,而照在凹坑上时将发生衍射, 反射率低,将反射光的光强变化在转换成电信号,即可读出记录信息
光盘的扇区数据结构
光盘扇区分为4个区域。2个全0字节和10个全1字节组成的同步(SYNC)区,标志着扇区的开始
4字节的扇区标示(ID)区用于说明此扇区的地址和工作模式
光盘的扇区标志地址以分(MN)、秒(SC)和分数秒(FR,1/75s)时间值为地址
I/O接口(I/O控制器)
I/O接口的基本功能
实现设备的选择
实现数据缓冲达到速度匹配
实现数据串并格式转换
实现电平转换
传送控制命令
反映设备的状态(“忙”、“就绪”、“中断请求”)
接口的基本组成
图示
DB:数据总线
AB:地址总线
CB:控制总线
I/O端口及其编址
CPU采用2种方法访问I/O设备,也称2种不同的I/O端口编址方法
分类
专门的I/O指令
例如,指令:IN完成输入,指令OUT完成输出操作。指令的地址码字段指出输入输出设备的设备代码
由相应的控制信号(如M/IO#)来区分CPU执行的是什么指令
利用访问存储器指令完成I/O功能
从主存的地址空间中分出一部分地址码作为I/O的设备代码,当访问到这些地址时, 表示被访的不是主存储器,而是I/O设备端口
没有控制信号区分存储器和端口,采用的是将该段地址译码输出连接到外设的端口
I/O方式
程序查询方式
CPU不断地询问外设是否准备好:如果准备好,CPU执行IO操作;否则,CPU一直等待
CPU大部分时间处于等待状态,利用率不高
程序中断方式
中断的基本概念
计算机在执行程序的过程中,当出现异常情况或者特殊情况时,CPU停止当前程序的运行,转向对这些异常情况或者特殊情况的处理, 处理结束之后再返回到现行程序的间断处继续运行,该过程就是中断
中断响应过程
当多个中断源向CPU提出中断请求时,CPU在任何一个时刻只能接受一个中断源的请求,所以,当多个中断源同时请求时, CPU必须对各个中断源的请求进行排队,且只能接受级别最高的中断源的请求,不允许低级别的中断源中断正在运行的中断服务程序
当多个中断源同时向CPU提出请求,CPU需要对这些中断源的请求进行排队,也称为中断判优,有两种判优的方法
中断判优方法
查询法
由测试程序按一定优先排队次序检查各个设备的“中断触发器”(或称为中断标志), 当遇到第一个“1”标志时,即找到了优先进行处理的中断源,通常取出其设备码, 根据设备码转入相应的中断服务程序
串行排队链法
由硬件组成一个串行的优先链,称作排队链
中断处理过程
关中断
保存断点和现场
判别中断源,转向中断服务程序
开中断
执行中’断服务程序
退出中断
多重中断和中断屏蔽的概念
多重中断
是指在处理某一个中断过程又发生了新的中断请求,从而中断该服务程序的执行,又转去进行新的中断处理
这种重叠处理中断的现象又称为中断嵌套
中断屏蔽
当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响立,称为中断屏蔽
实现方法
为每个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求
DMA方式
概述
DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送
数据传送是在DMA控制器控制下进行的,由DMA控制器给出当前正在传送的数据字的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束
在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据
在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理
DMA控制器的组成
主存地址寄存器(MAR)
寄存器初始值为主存缓冲区的首地址
外围设备地址寄存器(ADR )
该寄存器存放I/O设备的设备码,具体内容取决于I/O设备的数据格式和地址字编址方式
字数计数器(WC)
该计数器对传送数据的总字数进行统计
控制与状态寄存器(CSR)
该寄存器用来存放控制字和状态字
数据缓冲寄存器(DBR)
该寄存器用来暂存I/O设备与主存传送的数据
中断机构
当字计数器溢出(全“0”)时,表示一批数据交换完成,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作后处理
DMA传送过程
DMA预处理
在进行DMA数据传送之前要用程序做一些必要的准备工作。先由CPU执行几条输入输出指令,测试设备状态,向DMA控制器的设备地址寄存器中 送入设备地址并启动设备,在主存地址寄存器中送入交换数据的主存起始地址,在数据字数寄存器中送入交换的数据个数。在这些工作完成之后, CPU继续执行原来的程序
DMA控制I/O设备与主存之间的数据交换
I/O设备启动后,若为输入数据,则要进行的操作为
(1)从输入介质读入一个字到数据缓冲寄存器DBR中
(2)向CPU发DMA请求,在取得总线控制权后,将DBR中的数据 送人主存的数据寄存器
(3)将DMA中的MAR内容送主存的地址寄存器,启动写操作, 将数据写入主存
(4)将WC内容减1,将MAR的内容加1,给出下一个字的地址
(5)判断WC是否为“0”,若不是,说明还有数据需要传送, 检查无错后准备下一字的输入;若WC为0,表明一组数据已 传送完毕,此时应置结束标志,向CPU发中断请求
CPU中断原程序进行后处理
若需继续交换数据,则又要对DMA控制器进行初始化;若不需交换数据,则停止外设;若为出错,则转错误诊断及处理程序
DMA三种工作方式
CPU暂停方式
主机响应DMA请求后,让出存储总线,直到一组数据传送完毕后,DMA控制器才把总线控制权交还给CPU
CPU周期窃取方式
DMA控制器与主存储器之间传送一个数据,占用(窃取)一个或几个CPU周期,即CPU暂停工作一个或几个周期,然后继续执行程序
CPU和DMA交替工作方式
当CPU的工作周期比主存访问时间长时,使用这种方式;这种方式不需要总线使用权的申请、建立和归还过程
将CPU周期分成C1和C2两个周期,其中C1专门用于给DMA访问主存,C2提供给CPU访问主存; 总线使用权通过C1和C2分别控制;CPU和DMA各自有自己的访问地址寄存器、数据寄存器和读写信号
通道方式
概述
I/O通道是计算机系统中代替CPU管理控制外设的独立部件,是一种能执行有限I/O指令集合--通道命令的I/O处理机
在通道控制方式下,一个主机可以连接几个通道,每个通道又可连接多台I/O设备,这些设备可具有不同速度,可以是不同种类
优点
这种输入输出系统增强了主机与通道操作的并行能力以及各通道之间、同一通道的各设备之间的并行操作能力,同时也为用户提供了增减外围设备的灵活性
分类
字节多路通道(低速、分时)
一种简单的共享通道,在时间分割的基础上,服务于多台低速和中速面向字符的外围设备
字节多路通道包括多个子通道,每个子通道服务于一个设备控制器,可以独立地执行通直指令
字节多路通道要求每种设备分时占用一个很短的时间片,不同的设备在各自分得的时间片内与通道建立传输连接,实现数据的传送
选择通道(高速、独占)
选择通道每次只能从所连接的设备中选择一台I/O设备的通道程序,此刻该通道程序独占了整个通道
当它与主存交换完数据后,才能转去执行另一个设备的通道程序,为另一台设备服务
连接在选择通道上的若干设备,只能依次使用通道与主存传送数据
数据传送是以成组(数据块)方式进行,每次传送一个数据块,因此,传送速率很高, 选择通道多适合于快速设备(磁盘),这些设备相邻字之间的传送空闲时间极短
数组多路通道(综合)
数组多路通道把字节多路通道和选择通道的特点结合起来
它有多个子通道,既可以执行多路通道程序,像字节多路通道那样、所有子通道分时共享总通道; 又可以用选择通道那样的方式传送数据
数组多路通道具有多路并行操作能力,又具有很高的数据传送速率,赢得了吞吐率的较大提高
它的缺点是增加了控制的复杂性