一、计算机系统概述
·计算机硬件系统=运算器+存储器+控制器+输入、输出设备
·(集成到一个芯片上)运算器+控制器=CPU(中央处理器)
·计算机软件分为:系统软件(OS/DBMS)、应用软件(应用程序)
·语言(从低到高):机器语言,汇编语言,高级语言
·翻译程序:高级语言转为机器语言,分为:解释/编译
解释:逐条翻译,立即执行,不会生成目标程序
编译:一次性翻译为目标程序(会生成目标程序)后执行,时间长,运行速度比解释快
·汇编:把汇编语言源程序翻译为机器语言程序的翻译程序
·从源程序到可执行文件:
预处理:将.h文件插入,生成.i文件
编译阶段:生成汇编语言程序,.s文件
汇编阶段:讲.s翻译为机器语言指令,打包重定向为目标文件.o
链接阶段:生成可执行文件
·冯诺依曼机到基本工作方式是:控制流驱动方式
特点:按地址访问并顺序执行指令
指令和数据均以二进制的形式放在存储器中,CPU用指令周期的不同阶段区分它们
程序功能都通过中央处理器实现
程序执行前,指令和数据需要预先存放在存储器中
·欲执行指令在IR中;下一条指令地址在PC中
·CPU内包括:控制器CU、ALU、PC、IR、MAR、MDR、标志寄存器、通用寄存器组GPRs
·地址译码器在主存中
·位数:MAR=地址码长度;MDR=存储字长
·相联存储器:既可以按地址寻址又可以按内容寻址
·计算机硬件能够直接执行的只有机器语言
·字长:一次整数运算能处理的二进制位数,一般等于内部寄存器大小,通常取字节的整数倍
机器字长:CPU进行一次整数运算所能处理的二进制数据位数(通常与ALU直接相关)
指令字长:一条指令的总长度,取决于操作码与操作数的长度(可能会改变)
存储字长:一个存储单元中的二进制代码位数(通常与MDR位数相同)
(指令字长和机器字长必须为字节的整数倍)
(机器字长(一般)=内部寄存器的位数=存储字长(的1,2,4…倍))
p.s.半/单/双指令:指令长度是机器字长的半/单/双倍(会影响取一条指令的访存次数)
数据字长:数据总线一次能并行传送的信息位数
·数据通路带宽:数据总线一次并行传输的信息位数
·主存容量: 字数(MAR)字长(MDR)
MAR位数反映存储单元的个数、可寻址的最大范围;
MDR位数=存储字长=每个存储单元大小
·运算速度:吞吐量:取决于主存的存取周期
响应时间:通常包括CPU时间与等待时间(磁盘访问、存储器访问、IO操作、等开销
主频:CPU时钟频率,CPU时钟周期的倒数
CPI:执行一条指令所需的(平均)时钟周期数
与系统结构、指令集、计算机组织有关(与时钟频率无直接关系)
MIPS:每秒执行多少百万条指令
M/G/T/P/EFLOPS:每秒执行多少百万106/十亿109/万亿1012/亿亿1015/10^18
次浮点运算
·寄存器由触发器构成
·CPU内部的寄存器:IR、MAR、MDR对任何人均为透明的
汇编程序员可通过指令设置PC的值,也可见状态寄存器和通用寄存器
·程序执行时间=(CPI指令条数)/时钟频率f
[补充]计算机系统组成
计算机系统=硬件系统+软件系统
硬件系统:主机(CPU+内存)、系统总线、外部设备(外存储器+输入、输出设备)
软件系统:系统软件(OS,编译和解释程序,DBMS)、应用软件(文字处理)
CPU=控制器+运算器(ALU+通用寄存器组+状态条件寄存器)
内存=Cache+主存(随机存取存储器RAM+只读存储器ROM)
二、数据的表示和运算
【数制与编码】
·二进制优点:运算简单、造2个稳态的器件容易、便于利用逻辑门电路实现算术运算
·二进制转八/十六进制:以小数点为分界线,往左往右每3/4个划为一组,不足位时补0
八进制和十六进制互转以二进制为中介
·任意进制转十进制:各位数码与位权乘积的和
·十进制转任意进制:整数部分:除基取余;小数部分:乘基取整
·不是每一个十进制小数都可以准确的用二进制表示(反过来可以)
·BCD码(二进制编码十进制数):8421码、余3码、2421码
BCD转二进制:每4个一组,表示范围0-9
·原码、补码、反码、移码
原码中0有两种表示:+0和-0
补码和反码中:正数==原码;
负数:(除符号位)反码:各位取反;补码:各位取反,末位加1
补码中0的表示唯一,小数补码比小数原码多表示一个最小负数-1;
整数补码多一个最大负数-2
变形补码(模4补码):双符号位多补码小数
移码:常用于表示浮点数的阶码,只能表示整数,0的表示唯一
整数的补码和移码,符号位相反,数值位相同
·n位无符号整数的表示范围:0~2^n-1
·无符号整数的最大值为相同位数的有符号整数的最大负数(-1)
·216=65536;215=32768
·补码的补码是原码
·使用补码表示时,若符号位相同,数值位越大码值越大
·若寄存器的内容为1111 1111,且等于+127,则为移码
0000 0000,等于-128,则为移码
·在求8位移码机器数0000 0000的[-x]移时,会发生溢出
【运算方法与运算电路】
·加法
进位信号Gi=AiBi;进位传递信号Pi=Ai异或Bi
·标志(OF、SF、ZF、CF)
溢出标志OF:=1时,有符号整数运算溢出
符号标志SF:运算结果的符号,1负0正
零标志ZF:=1时,运算结果为零
进位/借位标志CF:=1时,无符号整数,加法结果溢出或减法有借位
(有符号考虑OF,无符号考虑CF)
·移位
算术移位:有符号数移位,移位过程中符号位固定
补位规则:若为正数,原反补左右移均补0
为负数,原码补0,反码补1;补码左移补0,右移补1
补码算术左移的前提:原最高位和符号位相同
双符号位算术移位,只有低符号位参加
逻辑移位:无符号数的移位,左移舍高位,右移舍低位,均补0
循环移位:分为带进位标志CF的和不带的(应用:低字节与高字节数据互换)
(不带CF不代表不会影响CF里的值,左移:最高位进入CF;右移:最低位进入CF)
·溢出判别方法:一位符号位:两操作数符号相同,但与结果不同
双符号位(模4补码):S1S2相同不溢,01:正溢,10:负溢,S1代表真正的符号
符号位进位Cs与最高数据位进位C1异或,为0(相同)不溢,为1(不同)溢出
·仅当两个符号相同的数相加++/ - -或两个不同符号数相减± -/- -+时才有可能溢出
·ACC:累加器,用于存放操作数或运算结果(乘积高位,初始为0)
MQ:乘商寄存器,在乘,除运算时,用于存放操作数或运算结果(乘积低位,乘数)
X:通用的操作数寄存器,用于存放操作数(被乘数)
·乘法
原码一位乘:符号位与数值位分开,符号位异或得到,数值位两数绝对值的乘积
先加法再逻辑右移,重复n次(数值位n位)
MQ中最低位=0:1?+0 : |x|
无符号数乘法电路:可能产生进位,设置进位位
补码一位乘(booth算法)
符号参与运算,n轮加法和算数移位,最后再加一次(乘数的符号位参与运算)
双符号位,辅助位初始为0
辅助位-MQ中最低位=1/0/-1,+|x补|/+0/+|-x补|
·除法
原码除法:符号位单独异或处理
(1)恢复余数法(2)加减交替法(不恢复余数法)
恢复余数法:默认上商1(MQ最低位),若ACC中(被除数-除数)为负,改为上商0(恢复余数),再逻辑左移
加减交替法/不恢复余数:若余数为负,上商0,并让余数左移移位后加上|除数|
最后一步若余数为负,还需最后恢复一次余数
加/减n+1次,左移n次
如第一次上商1,可判断被除数>除数,结果大于1,无法用定点小数表示,不算
补码除法:加减交替法
符号参与,双符号位
余数和除数同号:商1,余数左移一位减去除数
异号:商0,余数左移移位加上除数
重复n次,末位恒置1
异号相除时,够减商0,不够商1
·大字长向小字长强制类型转换:多余高位部分直接截断
·小到大:高位扩展
零扩展:无符号数,补0
符号扩展:原数符号位填充
·char:8位无符号整数;int/float:4B;double:8B;short:2B
·大端/小端方式存储:从最高到最低/最低到最高有效字节顺序存储
(小端:高字节存放在大地址里,如i地址位0800H,i=01H 23H 45H 67H
0800H:67H,0801H:45H,0802H:23H,0803H:01H)
·机器代码字节编址,从左往右,地址从低到高(所以若采用小端方式存储,在机器代码里是逆的
·边界对齐:访问一个字/半字只需一次访存;不对齐可能两次
(采用边界对齐,半字2B会被填充为4B)
·在定点运算中,无论采用双or单符号位,都必须有溢出判断电路,一般用异或门实现
·模4补码
优于模2补码,更易于检查加减运算中的溢出问题
在ALU中运算时位两位符号位,但存储时只存一位
·实现n位(不含符号位)补码一位乘时,乘积为2n+1位
·低位进位信息:1:做减法;0:做加法
【浮点数的表示与运算】
·IEEE 754标准(短浮点数)
数符(1)|阶码(8):移码表示|尾数(23):隐藏位策略的原码表示
偏置值=127,阶码范围(1,254),对应原范围(-126,127)
全0阶码全0位数:+0/-0
全1阶码全0尾数:+∞/-∞
全1阶码尾数不全为0:NaN(非数)
·正/负上溢:报错;正/负下溢:零处理
·规格化:左规可能多次,右规只需1次
·浮点数扩大了表示数的范围,但降低了精度,运算比定点复杂,
·尾数溢出,结果不一定溢出,规格化后阶码超出表示范围才溢出
·浮点数的加减运算
对阶、尾数求和、规格化、舍入、溢出判断
·判断一个浮点数是否为规格化数
原码:尾数第一位是1
补码:小数点后一位(尾数最高位)与符号位相反
·右规和尾数舍入可能导致阶码上溢;左规可能导致阶码下溢
【强化课程补充】
1、加减法
(1)有、无符号数的加减运算共用同一个电路
加法:直接按位相加
减法:被减数+减数的相反数的补码
a-b=a+[-b]补([-b]补=~b+1)
(2)OF和CF的判断
OF:对于有符号数,次高位进位Cn-1和最高位进位Cn的异或
CF:对于无符号数,进位Cout与sub的异或
(Cn=Cout,sub=Cin,sub=0:1?加法:减法)
sub=1时,这个“1”就是原码转补码中“各位取反,末位加1”里的“1”
(3)ALU不区分有符号数和无符号数的运算,但两种运算对应不同的指令(如addu/addi)利用指令不同来区分接下来要进行的微操作(是查看OF还是CF标志)
(4)标志存储在程序状态字寄存器PSW中
2、乘除法:
(1)乘法判溢出:两个n位相乘,用2n位保存中间结果,不会溢出
但结果只保留低n位,所以
对于无符号数的除法,当且仅当前n位全0时不溢出
对于有符号数的乘法,仅当前n+1位全0或1时不溢出
(2)除法的溢出:当除数为小数时可能溢出
3、精度丢失
整数与浮点数的转换
E.g. int转float(32bit->23+1bit)精度可能丢失
精度丢失问题,本质就是有效位的比较问题,对于浮点数就是尾数能表示的位数
补充:(1)浮点数的尾数有效位数bit:
float:23+1;double:52+1;long double:64+1;
(2)整数有效位数:
short(2B):15bit;int(4B):31bit;unsigned int:32bit;long(8B):63bit
辨别:精度与表示范围
三、存储系统
【概述】
·存储器包括:主存、闪速存储器(FlASH)、辅存、缓存(Cache)
主存=随机存储器RAM(静态SRAM,动态DRAM)+只读存储器ROM(M/P/EP/E^2PROM)
闪存位于主存与辅存之间
辅存:磁盘、磁带、光盘
缓存位于CPU与主存之间(现代:在CPU内部)
·RAM:断电,信息消失,易失性存储器;ROM:断电,内容不丢失
·ROM和RAM的存取方式:随机存取
·串行访问存储器:按物理地址的先后顺序寻址,包含顺序存取(磁带),
直接存取(磁盘DAM、光盘)
·存取时间:从启动一次存储器到操作完成的时间,包含读出时间和写入时间
存取周期:读写/访问周期,存储器进行一次完整的读写操作所需的全部时间=连续两次独立访存操作的最小时间间隔,通常大于存取时间
·数据传输率=数据的宽度/存储周期(=主存带宽)
·Cache-主存层:解决CPU与主存速度不匹配问题;
主存-辅存层:解决容量问题
·主存和Cache间的数据调用由硬件自动完成,对所有程序员透明;
主存和辅存间数据调动由硬件和操作系统共同完成,对应用程序员透明
·CPU不能直接访问硬盘
·速度由快到慢:寄存器、Cache、主存、辅存
【主存储器】
·主存由DRAM实现,Cache:SRAM实现,都为易失性存储器
SRAM:双稳态触发器(六晶体管MOS),非破坏性读出(不需再生)
DRAM:存储元电路中栅极电容上的电荷来储存信息,(集成)密度高于SRAM,必须定时刷新
·刷新方式: 集中刷新:存在死区,存储周期0.5us
分散刷新:每次读写完都刷新一行,无死区,存储周期增加变为1us
异步刷新:结合前两种方法,以刷新周期为2ms的特点,2ms内每行刷新 一次即可
·刷新操作=读出一行后,重新写入
·刷新对CPU是透明的,DRAM以行为刷新单位
·DRAM读写周期信号控制
目的:行列地址分两次传送,正确接收行、列信息
行选通信号RAS先有效,列选通CAS滞后一段时间后有效,读写控制WE至少在CAS前有效
·DRAM行列信息分两次送;SRAM同时送
原因:DRAM芯片通常容量大,地址数较多,为了减少芯片的地址引脚数,采用地址引脚复用技术
·存储器芯片=存储体+IO读写电路+地址译码+控制电路(片选CS、读/写WE)
·ROM:只读存储器,支持随机存取,非易失存储器,结构简单位密度高
包括:掩膜式MROM;一次可编程PROM;可擦除可编程EPROM;Flash;固态硬盘SSD
·地址线的位数决定了主存地址空间的最大可寻址范围
·提升主存速度:双口RAM、多模块存储器
双端口RAM作用:优化多核访问一根内存条的速度
要求:两组完全独立的数据线、地址线、控制线(控制电路复杂)
·多模块存储器:空间并行技术,包括:单体多字/多体并行存储器
单体多字存储器:一个存储体,优点:可一次并行读出多个字
(每个存储单元=总线宽度=并行读出字数)
缺点:不灵活
多体并行存储器,包括:高位交叉、低位交叉
高位/低位:用高位/低位地址码区分每个存储体
(简单记忆)把存储体看作内存条,高位:读完一条再读下一条,低位:轮着读
假设:存储周期=T,存储时间=r,T=4r,则连续存储n个存储字耗时:
高位交叉:nT(每读完一个单元都需要恢复的时间)
低位交叉:T+(n-1)r(加上最后的恢复时间,宏观上趋近于r)
·为了实现低位交叉流水线,存储体数应>=存储周期T/传输周期r
·高位四体交叉存储器可能在一个存储周期内连续访问4个模块(但是概率小)
·关于闪存Flash:是E^2PROM的进一步发展,可读可写,用MOS管的浮栅上有无电荷来存储信息;
是一种ROM,写入时必须先擦除原有数据,因此写速度慢于读速度;
是非易失性存储器,采用随机访问方式,可替代计算机外部存储器;
固态硬盘SSD是由Flash芯片组成的
·SDRAM:同步动态随机存储器,是一种DRAM
【主存储器与CPU的连接】
·主存储器通过数据、地址、控制总线与CPU相连
·主存容量扩展方式:位扩展,字扩展,字位扩展
·产生片选信号:线选法:线路简单,不需要译码电路;地址资源浪费;译码片选法
·地址存储器的位数要确保能访问到整个主存空间
【外部存储器】
·硬盘存储器=磁盘驱动器(磁头组件+盘片组件)+磁盘控制器(硬盘存储器和主机度接口)+盘片
·一块硬盘=若干记录面(盘面,磁头数)=若干磁道(柱面数)=若干扇区(块)
·扇区是磁盘读写的最小单元,磁盘按块存取
·格式化:按照某种特定的格式存储信息,故格式化后的磁盘比未格式化的容量小
·记录密度:道密度,位密度,面密度
·平均存取时间=寻道时间+旋转延迟时间+传输时间(前两个通常取平均值)
·磁盘地址:驱动器号|柱面(磁道)号|盘面号|扇区号
·硬盘的读写操作是串行的,不能同时读写或同时读/写两组数据
·RAID:独立冗余磁盘列阵(交叉存储、并行访问、更好的存储性能、可靠性、安全性)
RAID0:无冗余无校验,没有容错能力
RAID1:镜像,容量少一半;
2:海明码纠错;3:位交叉奇偶校验;4:块交叉奇偶校验;5:无独立校验奇偶校验
0~5可靠性增加
·固态硬盘SSD(EPROM)
(1)组成:多个闪存芯片(Flash)+闪存翻译层(相当于磁盘控制器)
(2)SSD包含多个闪存芯片=多个块=多个页
以页为单位读写(块类比磁道,页类比扇区)
以块为单位擦除,擦除后才能写入新数据
(3)若要擦除的数据所在块,有其他数据,需先将其余数据复制到已经擦干净的块中,再写入新页
故SSD读快,写慢
(4)支持随机访问
(5)与机械硬盘比较:SSD读写速度快(电路控制访问位置);
SSD的一个块若擦除次数过多,会坏;机械硬盘不会因为写次数多坏
(6)磨损均衡技术:动态:写时,优先选择累计擦除次数少的;
静态:SSD监听并自动进行数据分配、迁移
·考点:1、计算存取时间;2、计算数据传输率;3、常识
【高速缓冲存储器】
·程序访问的局部性原理:
时间局部性:程序中存在循环;空间局部性:指令顺序存放,顺序执行
·写策略:
(1)全写法(写直通法):Cache命中时,将数据同时写入Cache和主存
实现简单,保证准确;增加访存次数,降低效率
与非写分配法搭配(不命中时只写入主存,不进行调块)
(2)回写法:命中时不写回主存,直到该块被替换出Cache
需设置修改位(脏位),存在隐患;减少开销
与写分配法搭配(不命中时,加载主存中的块到Cache中后更新Cache块)
·Cache和主存的映射方式:
(1)直接映射:Cache行号=主存块号mod Cache总行数
主存块号=主存地址/块大小
地址结构:标记|Cache行号|块内地址
(2)全相联映射:主存中每一块可以装入Cache中的任意一块
地址结构:标记|块内地址
(3)组相联映射:组间直接相连,组内全相联
地址结构:标记|Cache组号|块内地址
·Cache替换算法:先进先出FIFO、最近最少使用LRU、最不经常使用LFU
·考点:1、cache命中率,计算平均访问时间,性能提高多少
2、计算不同映射方式下主存对应的Cache地址
3、通过推算地址结构,计算Cache总容量
(1)通过主存地址空间大小,得出主存地址位数M;
(2)行号占位数n=log2行数,块内地址占位数m=log2行长;(行长=每行存储的数据量)
(3)计算tag位数t=M-n-m;
(4)总容量(单位为位)=行数*(1+t+每行数据量位数);(“1”—有效位,一定有!!!)
注意:标记的位数不一定全部使用,按需分配,
如,脏位、页面替换控制位
4、访存过程分析(以直接映射为例)
(1)根据分析划分访存地址(主存标记位|行号|块内地址)
(2)通过主存块号计算对应Cache行号
(3)查看对应Cache行的标记位是否与主存标记位相同,相同再查看有效位
(4)相同且有效位为1则命中,通过Cache中记录的块内地址读出对应数据
(5)若未命中,访问主存取出相应数据分别送入CPU和Cahce,修改Cache的tag位,有效位1
5、计算Cache的一次损失时钟周期(是否支持突发传送)
6、计算Cache缺失率(数组行/列优先访问)
·CPU与Cache/主存交换信息以字为单位;Cache与主存交换信息以块为单位
【虚拟存储器】
·地址:
实地址=主存页号+页内字地址
虚地址=虚存页号+页内字地址
辅存地址=磁盘号+盘面号+磁道号+扇区号
·页表一般包存在内存中
·采用全相联映射机制与写回法
·标志位:
有效位:对应页面是否在主存中
脏位:页面是否被修改
引用位:用于配合替换策略
·虚拟地址转换为物理地址的步骤:
用虚拟地址的虚拟页号查询页表,若有效位为1,则取出页表项中记录的物理页号,将物理页号与虚拟地址的页内地址进行拼接,得到物理地址
·页式虚拟存储器
优点:长度固定,页表简单,调入方便;
缺点:页不是逻辑上独立的实体,处理、保护、共享不如段式存储器方便
·快表TLB
(1)作用:页表项的高速缓存(相应的,存放在主存里的页表称为慢表)
(2)组成:SRAM或相联存储器组成,采用全相联或组相联;
页表项=标记tag字段(虚页号)+有效位+实页号
(3)速度快于页表的原因:
1、TLB:SRAM;慢表:DRAM;2、TLB是相联存储器,可根据内容寻访(硬件支持)
(4)TLB与Cache
1、TLB是页表项的副本;Cache是主存的副本(以块存储)
2、TLB存储信息量小;Cache信息量大
3、目的:TLB:加快逻辑地址转换为物理地址;Cache:加快对物理地址的访问
4、缺失后都需要访问主存;缺失处理都能由硬件处理(TLB可软可硬,Cache只能硬)
·TLB、Page、Cache的命中与缺失
(1)三中,无需访存
(2)在page命中的前提下,缺TLB或Cache会增加一次访存
(3)TLB或Cache命中其一,Page必命中
(4)全不中,缺页异常,需访问磁盘,且至少两次访存
·TLB命中则page一定命中;page命中,信息一定在主存里,但不一定在Cache中
·段式虚拟存储器
(1)按程序的逻辑结构划分,各段长度因程序而异
(2)虚拟地址=段号+段内地址;虚实变换由段表实现,段表中包含:各段起始地址和段长
(3)优点:具有逻辑独立性,易于编译、管理、修改、保护以及多道程序的共享
缺点:段长不定,分配空间不易,易产生碎片,浪费
·段页式虚拟存储器
(1)按程序逻辑分段,再将每段分页
(2)虚拟地址=段号+段内页号+页内地址
(3)优点:兼具页式和段式的优点;缺点:两次地址变换需两次查表,加大系统开销
·Cache不命中时能与CPU直接通信;
虚拟存储器不命中时,只能先由硬盘调入主存,不能与CPU通信
·内存=主存+Cache;TLB和慢表都在内存中,不等于在主存中
·缺页是在地址转换时CPU检测到的一种异常,由操作系统提供的缺页处理程序处理,处理程序通过页故障地址从外存读入所缺失的页,处理完成后返回发生缺页的指令继续执行
四、指令系统
【指令格式】
·指令=操作码+(若干)操作数(地址码)
根据操作数中地址码数目的不同,分为:
零地址指令:两个操作数隐含存放在栈顶和次栈顶中(例,空指令)
一地址指令:单操作数指令或隐含目的地址的双操作数指令(如在ACC寄存器中)
二地址指令:给出目的与源操作数地址,结果保存在目的操作数的地址中
三地址指令:最后一个地址放结果;四地址:最后一个放下一条指令地址
·指令字长与机器字长无固定关系
·根据指令系统中所有指令的长度是否相等分为:定长/变长指令字结构
·指令操作类型:
数据传送:MOV/LOAD/STORE
算术和逻辑运算:ADD/SUB/CMP/MUL/DIV/INC/DEC/AND/OR/NOT/XOR
移位操作:算法/逻辑/循环移位
转移操作:JMP/BRANCH/CALL/RET/TRAP
输入输出操作:CPU与外部设备交换数据或传送控制命令及状态信息
·指令系统是计算机软/硬件度界面
·指令的地址由程序计数器PC给出
·中断隐指令不属于程序控制指令,由硬件实现
·程序控制指令主要包括:无/有条件转移、子程序调用、返回指令、循环指令等
·寻址单元数=存储器容量/寻址字长
·采用扩展操作码:保持指令字长不变,增加指令等数量
·变长指令设计中,n地址指令要在操作码中留出一位,用于(n-1)地址指令的扩展(不一定是最后一位)
而(n-1)地址指令的数量=[2(操作码长度)-n地址指令数]*2(地址码位数)
例,32位单字长指令,地址码12位,若有250条二地址指令,则还可以有几条单地址指令?
2^8-250=6, 6*2^12=24K
·大/小端方式:指令中给出的地址是操作数的最高/低有效字节所在地址
·变长操作码=哈夫曼树=变长子网划分(短码不能是长码的前缀)
【指令的寻址方式】
·形式地址:A;有效地址EA(虚拟地址),A->EA=VA(CPU完成)
寻址方式 | 有效地址 | 访存次数
1、隐含寻址 | 程序指定 | 0
缩短指令字长;增加存储操作数或硬件
2、立即寻址 | A为操作数 | 0
不访存,执行时间最短,适用于给寄存器赋初值;A位数限制
3、直接寻址 | EA=A | 1
简单;A有位数限制
4、一次间接寻址 | EA=(A) | 2
可扩大寻址范围;多次访存(多次:主存字第一位为0时才为操作数的地址)
5、寄存器寻址 | EA=Ri | 0
不访存访寄存器,执行快,可缩短地址段位数;寄存器个数有限
6、寄存器间接一次 | EA=(Ri) | 1
比一般的间接寻址快
7、相对寻址 | EA=(PC)+A | 1
转移指令,便于程序浮动(操作数的地址随PC的值变化)
8、基址寻址 | EA=(BR)+A | 1
面向操作系统的,有利于多道程序的设计(重定位)(可类比为相对寻址)
9、变址寻址 | EA=(IX)+A | 1
面向用户编程的,循环程序,数组问题
10、堆栈寻址 |入/出栈时EA的确定方式不同
地址由堆栈指针SP给出,表面上表现为无操作数指令
硬堆栈:寄存器堆栈;软堆栈:主存中划出一片区域
·基址寻址与变质寻址:都是寄存器内容+偏移地址
基址:操作(改变)偏移地址,基址寄存器中内容不能变;变址则相反
·若采用定长指令字结构,指令字长=存储字长=2B,主存按字/字节编址,(PC)+1/2->PC
若采用变长,则先读入一个字,再根据操作码判断这条指令的总字节数,(PC)+n->PC
·特权指令,通常仅用于实现系统软件,一般不提供给用户
【程序的机器级代码表示】
x86
1、相关寄存器:8个32位bit的通用寄存器
EAX:累加器,EBX:基地址寄存器,ECX:计数寄存器,EDX:数据寄存器,
ESI/EDI:变址寄存器,EBP:堆栈基指针,ESP:堆栈顶指针
前4个通用寄存器可划分EAX=AX(16)+AH(8)+AL(8)
2、常见指令
(1)算术运算类 op d,s(结果存入d)
add;sub;mul/imul(无/有符号乘法);
div/idiv:edx:eax(拼在一起使用,拓展为64位),商存入eax,余数存入edx
neg:取负;inc:自增;dec:自减
(2)逻辑运算类
and;or;not;xor;shl;shr
(3)其他
分支,循环:cmp,test,jmp,jxxx,bxxx;函数调用:push,pop,call,ret;数据转移:mov
·AT&T与intel格式的区别
1、操作数d与s位置互换;2、立即数前加$;3、主存地址[]变为前加%;
4、读写长度的表示:在指令后加b、w、l分别表示读写长度为byte、word、dword
5、主存地址偏移量的表示:偏移量(基址,变址,比例因子)
·dword:双字32bit;word:单字16bit;byte:字节8bit
·假设P为调用过程,Q为被调用过程,涉及操作步骤:
(1)P将实参存放到Q能访问到的地方
(2)P将返回地址存放到特定处,并跳转到Q执行
(3)Q保存P到现场,并为非静态局部变量分配空间
(4)执行Q
(5)Q恢复P到现场,并释放局部变量所占空间
(6)Q取出返回地址,并转跳回到P执行
【CISC和RISC的基本概念】
·CISC:复杂指令系统计算机
指令数目、格式,寻址方式多,指令长度不固定;访存指令不受限;
控制器大多数采用微程序控制;难以用优化编译生成高效目标代码
·RISC:精简指令系统计算机
指令简单种类少,格式一致,长度固定
只有Load/Store指令访存
RISC机一定采用流水技术
增加寄存器数目,以尽量减少放存次数(内部寄存器数量相对于CISC多)
大多数指令在一个时钟周期内完成
指令数、寻址方式、指令格式相对于CISC少
以硬布线控制为主,不用或少用微程序控制
【强化补充】
1、编译器、汇编器、链接器
C语言(高级语言)to 汇编语言:编译器
汇编语言 to 机器语言(一一对应):汇编器
链接:链接使用到的库等,使之形成一个完整的VA,可执行文件
2、选择结构语句的机器级表示
if-else=cmp+j(je/jle/jg/jge…)
goto:破坏了程序的局部性原理(可能导致频繁缺页,Cache缺失)
3、循环结构语句的机器级表示
4、过程(函数)调用
(1)调用指令call
例,程序a调用程序b(call b())
call指令压入返回地址;程序员压入a栈栈底,作为b栈的栈底,由EBP指向
b栈获取调用参数:EBP+偏移量;b栈获取局部变量:EBP-偏移量
(2)返回指令ret’
当前信息出栈;恢复上一层函数的运行现场,包括栈底指针、ebp、pc等
五、中央处理器
【CPU的功能和基本结构】
·CPU的功能包括:指令控制、操作控制、时间控制、数据加工、中断处理
·CPU=运算器+控制器(硬布线/微程序)
运算器=算术逻辑单元ALU+暂存寄存器(从主存来度数据;对应用程序员透明)
+累加寄存器ACC(可作为ALU的一个输入端)+通用寄存器组(如AX、BX、SP)
+程序状态字寄存器PSW(OF、SF、ZF、CF;表征程序和机器运行的状态)
+移位器+计数器CT(控制乘除)
控制器=程序计数器PC(下一条指令地址;自增)+指令寄存器IR(保存正在执行的指令)
+指令译码器(译操作码)+存储器地址寄存器MAR(存放要访问的主存单元地址)
+存储器数据寄存器MDR(存放向主存中写入或从主存中读出的信息)
+时序系统+微操作信号发生器
·CPU内部寄存器
用户可见:通用寄存器组、PSW;用户不可见(透明,不可编程):MAR、MDR、IR
汇编语言程序员可见:PC
·n位CPU,即CPU一次能处理的数据位数=数据总线位数
·PC的位数一般=MAR的位数,取决于存储器的容量
【指令执行过程】
·指令周期:CPU从主存中取出并执行一条指令的时间
指令周期=若干机器(CPU)周期(指令周期内大机器周期数可以不等)=若干时钟周期
机器周期通常由存取周期决定
·不同指令的指令周期包含的阶段不同(取指、间址、执行、中断)
·指令周期数据流
1、取指:根据PC取出指令放入IR(自动进行)
PC=>MAR=>Bus=>主存(取出指令)=>MDR=>IR(放到指令寄存器);PC+1
2、间址:取操作数的有效地址
IR/MDR=>MAR=>Bus=>主存=>Bus=>MDR
3、执行:ALU产生执行结果
4、中断:若有中断请求时(不一定有)CPU只有在一条指令结束后才会响应中断
(SP指向栈顶,SP-1)SP=>MAR=>Bus=>主存;
PC=>MDR=>Bus=>主存(程序断点存人主存);CU(中断服务程序的入口地址)=>PC
·单指令周期:指令周期取决于执行时间最长的指令
多指令周期:每条指令需要几个就分配几个
流水线:每个时钟周期都启动一条指令,各自处于不同的执行步骤中
·使用DMA方式传送数据时,每传送一个数据就需花费一个存取周期
·指令字长=存储字长,则取指周期=机器周期
【数据通路的功能和基本结构】
·CPU数据通路结构包括:单总线、多总线、专用数据通路
单/双总线,属于CPU内部总线方式传送数据,特点是:结构简单,性能低,冲突多;
使用专用数据通路的特点:结构复杂,硬件量大,基本不存在数据冲突现象
·单总线CPU中,ALU只能有一个输入端与总线相连,另一个输入端需要通过暂存寄存器与总线相连;输出端也需一个暂存寄存器与总线相连
原因:若其中一个输入端不与暂存寄存器相连,则ALU大两端会同时收到相同的数据,不能进行正确的计算
·单周期CPU不能采用单总线:一个周期内无法同时输入输出
单周期CPU特点:时钟频率较低;指令执行过程中控制信号不变;每条指令CPI=1
·程序员可见的寄存器:通用寄存器(R0/1/2…)、PC(JMP指令改)
不可见:MAD、MDR、IR、SR(移位)
【控制器的功能和工作原理】
·总线:数据、地址、控制
·控制器分类:硬布线控制器、微程序控制器
PC和IR相同,指令执行和给出控制信号的方式不同
·硬布线控制器:逻辑门+触发器,又称组合逻辑控制器
1、工作原理:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,即时生成
2、应用:RISC CPU
3、设计步骤
(1)分析每个阶段的微操作序列(FE、IND、EX、INT/取指、间址、执行、中断)
(2)选择CPU的控制方式(定长or 不定长)
(3)安排微操作时序
(4)电路设计
4、一些微操作缩写
CLA:清ACC/COM:取反/SHR:算术右移/CSL:循环左移/STP:停机/ADD:加法/STA:存数指令/LDA:取数指令/JMP:跳转/BAN:ACC为负时跳转
5、补充:
(1)控制信号的形成主要与指令译码信号和时钟有关
·微程序控制
1、工作原理:以微程序的形式存放在控制存储器中(每条指令都需从控制存储器中取一次),执行指令时读出即可(存储逻辑实现)
控制存储器CM用于存放微程序,在CPU内部,用ROM实现
(主存储器,程序与数据,CPU外部,RAM)
2、应用:CISC CPU
3、微命令、微操作、微指令、微程序、机器指令
(1)微命令与微操作一一对应;微程序与机器指令一一对应
(2)微指令由微命令组成,微操作指挥
(3)一条微指令存储在一个控制存储器单元中
(4)通常,一个微程序周期=一个指令周期
若系统有n种指令,则控制存储器中的微程序数至少为n+1(1为公共取指微程序)
4、编码方式:
(1)直接编码:n个微命令需n位指令操作字段,造成控制存储器体积大
(2)字段直接编码:分成若干字段,互斥微命令组合在同一字段,相容(兼容)性的指令的放不同字段,需要译码电路(兼容:指可以同时产生、共同完成某些微操作的微命令)
比直接译码慢,每个小段需留出一个状态,表示该字段不发出任何命令
(3)字段间接编码(隐式编码):削弱了微指令的并行控制能力,进一步缩短微指令字长
5、地址形成方式
(1)直接由微指令的下地址字段指出,又称断定方式
(2)微程序的入口地址:根据机器指令的操作码形成
(3)其他:增量计数器法、标志决定分支转移地址、测试网络、硬件产生
uPC:在微程序中指向下一条微指令地址的寄存器(无法得知下一条指令)
6、微指令格式
(1)水平型:微程序短,执行速度快,并行能力强,灵活;微指令长,编写麻烦
(2)垂直型:类似机器指令,微指令短,简单规整,便于编写;微程序长,执行速度慢
(3)混合型:在垂直的基础上增加不太复杂的并行操作
7、微程序控制单元设计步骤
(1)分析每个阶段的微操作序列
(2)写出对应机器指令的微操作命令及节拍安排
取址微程序中除第一条微指令,其余微指令的地址均由上一条微指令的下地址字段直接给出
(3)确定微指令格式(位数、编码方式,微指令字长)
(4)编写微指令码点
·动态微程序设计:能根据用户的要求改变微程序,需要可写控制寄存器的支持(EPROM)
毫微程序设计:用于解释微程序,代替微程序直接控制硬件
·对比:硬布线方式更快;但更不规整;不易扩充
·时钟脉冲信号:
(1)由机器脉冲源发出的脉冲信号经整形和分频后形成;
(2)其宽度称为时钟周期,倒数为机器主频
(3)时钟周期以相邻状态单元间的组合逻辑电路的最大延迟为基准制定
【异常和中断机制】
处理:中断硬件电路+中断服务程序
·异常:又称为内中断,CPU内部产生
分为:
(1)硬故障中断:硬连接出错。如,存储器校验错、总线错误
(2)程序性异常:因执行指令引起的。如,整除0、溢出、断点、单步跟踪、非法指令、栈溢出、地址越界、缺页。(Cache缺失由CPU硬件实现,不需要异常处理程序)
按异常发生原因和返回方式不同,可分为:故障、自陷和终止
·故障Fault:
发生阶段:指令启动后,执行结束前
举例:非法操作码;缺段/缺页;除数为0
处理与返回:可以通过异常处理程序解决的,如缺页,在调页后返回故障点继续执行;
不能解决的则终止进程的执行
·自陷Trap
一种“预先”安排的异常,如断点设置、单步跟踪
完成后返回下一条指令继续执行,若为跳转指令,则转移到目标指令执行
·终止Abort
计算机无法继续执行的硬件故障,如控制器出错、存储器校验错
调出中断服务程序重启系统
(终止异常和外中断属于硬件中断)
·中断:又称为外中断,CPU外部产生,与指令无关
如I/O中断:键盘输入、打印机缺纸;特殊事件:按Esc键、定时器计数时间到
通过特定的中断请求线告知CPU,CPU每执行完一条指令就检查该信号线
分为:可屏蔽中断(由INTR线发出,CPU可通过设置屏蔽字来决定是否接受信号)
不可屏蔽中断(NMI,如硬件故障、电源掉电等)
·异常于中断区别
(1)异常与指令有关,中断与指令无关
(2)异常的检测由CPU完成;中断则需要通过中断请求线告知CPU
·CPU对异常和中断的响应过程:
关中断、保存断点和程序状态、识别异常和中断并转到响应的处理程序
(1)关中断:设置中断允许IF触发器:0/1:关/开中断
(2)保存断点和程序状态:为了处理结束后能正确返回断点,将断点(返回地址)送入栈或特定的寄存器,栈可支持异常或中断的嵌套
(3)识别并转移:分为软件/硬件识别;异常大都用软件识别,中断软硬均可
软件识别:操作系统使用中断查询程序,按优先级查询异常状态寄存器,顺序查询处理,转到内核中相应的处理程序中
硬件识别:又称向量中断
异常或中断处理程序的首地址称为中断向量,所有中断向量存放于中断向量表中
每个异常或中断都被指定一个中断类型号,与中断向量一一对应
根据查表,快速找到对应处理程序
【指令流水线】
·并行:时间上的:流水线;空间上的:设置多个执行相同任务的功能部件
·流水线阶段:取指IF、译码ID、执行EX、访存MEM、写回WB
·理想情况下,每条指令的CPI=1
·指令集特征:指令长度一致、格式规整;使用Load/Store指令;数据和指令对齐存放
·冒险:
(1)结构冒险/资源冲突:多条指令在同一时间争用同一资源(硬件)
解决:前一条访存访存与后一条指令相关,插入空指令;
设置单独的数据和指令寄存器
(2)数据冒险:下一条指令会用到上一条指令的计算结果;分为:写后读、读后写、写后写
(流水线按序流动时,只会出现写后读相关)
解决:暂停几个时钟周期;硬件阻塞stall/软件插入NOP;
设置相关专用通路(数据旁路技术);编译优化,调整指令顺序
(3)控制冒险:遇到如执行转移、调用或返回等指令时指令执行顺序改变
解决:分支预测
·流水线性能指标
(1)吞吐率:单位时间内流水线所完成的任务数量
(2)加速比:完成同样一批任务,不使用与使用流水线的时间之比
·高级流水技术
(1)超标量流水线技术/动态多发射技术
每个时钟周期内并发多条独立指令,并行操作、编译执行,需要配置多个功能部件
(2)超长指令字技术/静态多发射技术
利用编译程序,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字,需要多个处理部件
(3)超流水技术
通过提高流水线的主频来提高性能(增加流水级数)
但级数越多,寄存器开销越大(硬件要求:Cache容量大),控制更复杂
·计算一条流水线执行n条指令所需的时间,假设流水线分为取址、分析和执行三部分,分别用时a/b/c ns(a>b>c)
T=(a+b+c)+(n-1)a
流水线的CPU/时钟周期由所需时间最长的功能段决定
·流水线的数据通路:由控制部件控制的,包含ALU、通用寄存器、取指部件的,由组合逻辑电路和时序逻辑电路组合而成
·理想情况下,CPI为1的处理器:(1)基本流水线CPU(2)单周期CPU
【多处理器的概念】
·SISD:单指令流单数据流结构(单处理器)
SIMD:单/多;MISD:多/单(不存在);MIMD:多/多(多处理器)
·硬件多线程
为了减少线程切换过程中的开销;CPU为每个线程提供单独的通用寄存器组、程序计数器等
实现方式:
(1)细粒度多线程:多个线程间轮流交叉执行指令,可乱序并行
(2)粗粒度多线程:仅在一个线程出现了较大开销的阻塞时才切换线程(如Cache缺失)
线程切换开销大于细粒度
(3)同时多线程SMT:上述两种的变体,同一时钟周期中,发射不同线程中的多条指令执行
实现指令级和线程级的并行
超线程技术就是SMT,即一个单处理器或单核中设置两套线程状态部件,共享高速缓存和功能部件
需要芯片组、操作系统和应用软件的支持,模拟实体双核心
·多核处理器
(1)若要充分发挥硬件性能,必须采用多线程(或多进程)执行
(2)是真正意义上的并行执行
·共享内存多处理器SMP
分为(1)统一存储访问UMA多处理器(每个处理器对所有存储单元的访问时间大致相同)
根据与共享存储器连接的方式,分为:基于总线/交叉开关网络/多级交换网络处理器
需解决的问题:Cache一致性问题
(2)非统一存储访问NUMA多处理器(取决于哪个处理器提出访问请求以及访问哪个字)
不带/带高速缓存:NC-NUMA:CC-UNMA
·双核:在CPU上集成两个运算核心
·组合逻辑电路和时序逻辑电路的区别
(1)记忆性:组合逻辑电路的输出状态仅取决于该时刻各个输入信号的状态组合,不含存储信号的记忆单元
(2)数据流向:组合逻辑电路输入与输出间无反馈通路,信号单向传输
(3)时钟控制:组合逻辑无同一时钟;时序逻辑必须在时钟节拍下工作
【强化课程】
1、指令实现逻辑
·取指
(1)根据PC取指令到IR:PC=>MAR;MDR=>IR
(2)PC+“1”
·执行
(1)操作数的来源,怎么获取
(2)对操作数做什么运算?需要什么部件实现
(3)结果存哪,怎么存
2、指令的执行
·硬件的实现
(1)控制硬件的信号
XXXin/XXXout:允许数据的进入/输出
XXXop:具体的控制信号
(2)常见的硬件
操作元件:
三态门:;控制信号位数:1bit(in/out)
加法器:1bit
ALU:根据支持的运算数量
MUX:多路选择器(多出入一输出);若有2^n个输入,需要nbit控制
译码器:3-8/2-4;无控制信号(一输入,多输出)
存储元件:
普通寄存器(MAR、MDR、IR、PC),控制信号:允许读/允许写
暂存寄存器(单总线中配合ALU使用);允许读/写
通用寄存器组:控制信号1:允许读、写;2:选择哪个寄存器
特殊功能:移位、自增
六、总线
总线
【总线概述】
·特点:(1)分时:同一时刻只允许一个部件向总线发送信息;(2)共享:总线上可挂载多个部件;各个部件通过总线传递消息,可同时从总线上接收消息
·主设备:有控制功能的,能获得总线控制权的设备;从设备:只能响应从主设备发来的总线命令
·总线特性:(1)机械特性(尺寸、形状);(2)电气特性(传输方向和有效电平范围);(3)功能特性(每根传输线的功能);(4)时间特性(信号和时序的关系)
·按功能分类:(1)片内总线:CPU内部
(2)系统总线:CPU、主存、I/O接口之间,
分为数据/地址(指定主存和I/O设备接口电路的地址)/控制总线
(3)I/O总线:USB、PCI
(4)通信总线(外部总线):计算机系统之间或计算机系统与其它系统之间
·按时序控制分类:同步/异步总线
·按数据传输格式分类:并行/串行总线
·总线结构
1、单总线结构
优点:结构简单,便宜,易接入新设备;缺点:带宽低,负载重,多个部件争用唯一总线,不支持并发传送(注意,单总线≠只有一根信号线)
2、双总线结构(主存总线+I/O总线)
优点:将低速I/O设备从单总线上分离出来,实现存储总线与I/O总线的分离;缺点:需要增加通道等硬件设备
3、三总线结构(主存总线+I/O总线+直接内存访问总线DMA)
优点:提高了I/O设备性能,更快地响应命令,提高系统吞吐量;缺点:系统工作效率低
主存总线:CPU与内存之间传送地址、数据和控制信息
I/O总线:CPU和各类外设之间通信
DMA总线:内存和高速外设之间直接传送数据
·总线标准
(宽度/带宽/时钟频率/寻址能力/是否支持突发)
(1)ISA:工业标准体系结构,系统总线(IBM的AT)(2)EISA:扩展总线(32位CPU)
(3)VISA:视频电子标准协会,局部总线(多媒体PC)
(4)PCI:外部互联设备(显卡、声卡、网卡)局部总线
(CPI:每条指令的时钟周期数)
(5)AGP:加速图形接口,局部总线
(6)PCI-E:(将全面取代PCI和AGP)串行
(7)RS-232C:串行通信总线
(8)USB:通用串行总线,设备总线,可通过级联方式连接多台外设,通信总线,即插即用、热插拔
(9)PCMCIA/IDE/SCSI/SATA
·采用局部总线技术的作用:节省系统的总带宽
·性能指标
(1)传输周期(2)时钟周期(3)工作频率(4)时钟频率(5)宽度(6)复用(7)信号线数
总线带宽=总线工作频率×(总线宽度/8)
·总线复用:不同信号在同一信号线上分时传输
·突发传输:一次总线事务中,主设备只需给出一个首地址,从设备就能从首地址开始的若干单元的读出或写入多个数据
·并行总线的传输速率不一定大于串行总线
原因:当时钟频率升高时,并行总线之间的干扰也更严重,造成传输数据不可恢复的损坏;而串行总线,线少,干扰易控制,可通过提高f来提高传输速率
·多总线的总线间通过桥接器相连
【总线事物和定时】
·总线定时:总线在双方交换数据的过程中时间上的配合关系控制,是一种协议或规则,分为同步和异步
·总线事务:从请求总线到完成总线使用的操作序列,在一个总线周期中发生的一系列活动,
包括:请求/仲裁/寻址/传输/释放阶段,传输阶段一般只能传输一个字节的数据
突发、猝发传送方式能够进行连续成组数据的传送,直到一组数据全部传送完成后再释放总线
·同步定时:采用一个统一的时钟信号;优点:传送速度快、速率高、控制简单;缺点:强制性同步,不能及时进行数据校验,可靠性差;适用:总线长度较短,存取时间较接近
·异步定时:没有统一时钟和固定时间间隔,通过“握手”实现定时控制;优点:总线周期长度可变;缺点“控制较复杂,速度慢于同步方式
根据“请求”和“回答”信号是否互锁,分为:不互锁/半互锁/全互锁方式
·引入总线结构的优点:
简化系统结构,便于设计;减少连线数目;便于接口设计;便于系统的扩充、更新与灵活配置,实现系统模块化;便于设备软件设计;便于故障诊断和维修
七、输入/输出系统
【基本概念】
·外部设备:包括I/O设备和通过I/O接口访问的外存储设备
接口:协调外设与主机之间数据传输的逻辑部件
输入设备(鼠标、键盘);输出设备(打印机、显示器);外存设备(硬磁盘、光盘)
·I/O系统=I/O软件+I/O硬件
I/O软件:驱动程序、用户程序、管理程序、升级补丁
I/O硬件:外部设备、设备控制器和接口、I/O总线
·I/O控制方式
(1)程序查询方式:CPU不断查询I/O设备是否已做好准备
(2)程序中断方式:只在I/O设备准备就绪并向CPI发出中断请求时才给予响应(鼠标、键盘)
(3)DMA方式:主存和I/O设备间有一条直接数据通路
(4)通道方式:系统中设有通道控制部件,每个通道挂若干外设,通道程序置于主存中
主机执行I/O命令时,启动相关通道,通道执行通道程序
3、4主要用于高速设备
·打印机:
(1)按工作方式分类:点阵打印机、针式打印机、喷墨式打印机、激光打印机
(2)按打字原理:打击式、非打击式
(3)按是否能打印汉字:点阵式、活字式
·在微型机系统中,I/O设备通过设备控制器与主板的系统总线相连接
·I/O指令是CPU系统指令的一部分,是一类机器指令,格式和通用格式不同
·计算机中一个汉字内码在主存中占2B
每个汉字用16×16点阵表示,占用16×16/8=32B
【I/O接口】
·I/O接口:主机与外设之间的交界界面,通过接口实现主机与外设之间的信息交换
·主要功能:(1)进行地址译码和设备选择(2)主机与设备间的通信联络控制(时序)(3)数据缓冲
(4)信号格式转换(电平、数据格式、串并)(5)传送控制命令和状态信息
·CPU通过数据总线发送控制命令到I/O接口的控制寄存器中;
I/O接口通过数据总线将存储在状态寄存器中的设备状态传送给CPU
状态端口和控制端口可以合用同一个寄存器
·I/O指令只能在操作系统内核的底层I/O软件中使用,是一种特权指令
·I/O端口=接口电路中用于读/写的寄存器,可被CPU直接访问的寄存器;
I/O接口=若干I/O端口+相应控制逻辑
·I/O接口类型
(1)根据数据传送发送:并/串行接口;
(2)根据主机访问接口控制方式:程序查询接口;中断接口;DMA
(3)根据功能选择的灵活性:可编程/不可编程接口
·I/O端口分为:数据/状态/控制端口
·I/O端口编址方式分为
(1)统一编址/存储器映射方式:优点:不需要专门的I/O指令(使用访存指),CPU对I/O的访问更灵活,使端口具有较大的编址空间;缺点:占用存储器地址,使内存容量变小,执行速度较慢
(区分:不同的地址码,I/O地址要求相对固定在地址的某部分)
(2)独立编址/IO映射方式:需设置专门的IO指令,优点:指令不同,编程清晰;缺点:增加控制复杂性
·I/O总线的数据线上传输的信息包括:I/O接口的命令字/状态字、中断类型号
通常发生在通用寄存器和I/O端口之间
·I/O接口有:打印机适配器、网络控制器、可编程中断控制器(磁盘驱动器不是!)
【I/O方式】
·程序查询方式
(1)概念:完全由CPU执行程序实现,接口中设置数据端口和状态端口
(2)工作方式:CPU执行程序初始化并预置待传参数;向IO接口发出命令字启动IO设备;从外设接口读取其状态信息;CPU不断轮询IO状态直到IO就绪;传送一次数据;修改地址和计数参数;判断传送是否结束(直接计数器为0)
(3)特点:CPU一旦启动IO就必须停止现进程的运行,CPU与IO串行工作;接口设计简单,设备量少,但CPU会花费较多时间进行查询和等待,效率低
·程序中断方式
1、概念:出行某些急需处理的异常情况,CPU暂停终止现行进程,转去处理异常,处理完毕后再返回断点处继续执行原程序
2、功能:(1)实现CPU与IO设备并行工作;(2)处理硬件故障和软件错误;(3)实现人机交互;(4)实现多道程序、分时操作;(5)实现应用程序和操作系统的切换(管态程序;软中断);(6)多处理器系统中各处理器之间信息交换和任务切换
3、工作流程
(1)中断请求(INTR:可屏蔽中断、NMI:不可屏蔽中断;内部异常在关中断模式下也会被响应)
(2)中断响应判优:不可屏蔽中断>内部异常>可屏蔽中断;硬件故障>软件中断;DMA请求优先于IO设备中断请求;高速设备优先于低速设备;输入设备优先于输出设备
(3)CPU响应中断的条件
中断源有请求;CPU允许中断及开中断;一条指令执行完毕(内部异常没有一条指令执行完毕的要求)
(4)中断响应过程
CPU进过一些操作后,转去执行中断服务程序,操作由硬件直接(自动)实现,称为中断隐指令
包括:关中断、保存断点、引出中断服务程序
(5)中断向量(回看第5章)
中断识别分为向量中断和非向量中断(软件查询)法
其中采用中断向量法的中断称为向量中断
(6)中断处理过程:关中断;保存断点;中断服务程序寻址;
保存现场和屏蔽字;(现场:用户工作寄存器内容,通过指令保存在栈中,软件实现;
断点:在CPU响应中断时,自动保存在栈或特定寄存器中,硬件实现)
开中断(允许响应更高级的中断);执行中断服务程序;
关中断(保证恢复现场和屏蔽字时不受干扰);恢复现场和屏蔽字;开中断;中断返回
(注意)恢复现场是在中断返回前,由中断服务程序完成
4、多重中断和中断屏蔽技术
(1)单重中断:CPU在处理一个中断期间,对新的优先级更高的中断不予响应
多重中断/中断嵌套:(反之)
(2)条件:在中断服务程序中提前设置开中断指令;优先级高的中断有权中断低的中断
·中断处理优先级:指多重中断的实际优先级处理次序,可通过中断屏蔽技术动态调整
每个中断源有一个屏蔽触发器,所有组合构成屏蔽字寄存器
若不使用中断屏蔽技术,则处理优先级=响应优先级
·DMA方式
1、特点:
(1)与CPU并行工作,在外设与内存之间开辟一条“直接数据通路”,提升了系统效率
(2)数据传送不经过CPU,降低了CPU在传送数据时的开销,CPU不需要进行保护、恢复现场等操作
(3)主存既可以被CPU访问也可以被外设访问,主存开辟专用缓冲区,即时供给和接受外设数据
(4)完全由硬件实现,在进行数据块的传送时,主存地址的确定、传送数据计数等
(5)适用于磁盘、显卡、声卡、网卡等高速设备大批量的数据传送,硬件开销比较大
(6)DMA在开始传送前要通过程序进行预处理,结束后要通过中断方式进行后处理
2、DMA控制器的组成
DMA控制器(DMA接口):对数据传送过程进行控制的硬件
功能:
(1)接受外设的DMA请求,并向CPU发出总线请求
(2)CPU响应请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
(3)确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度
(4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
(5)向CPU报告DMA操作结束
DMA控制器内包含:主存地址计数器、传送长度计数器、数据缓冲寄存器、DMA请求触发器、控制/状态逻辑、中断机构
(注意)在DMA传送过程中,DMA控制权将接管CPU等地址、数据、控制总线,故DMA控制权必须具有控制系统总线的能力
3、DMA传送方式
当IO设备与CPU同时访问主存产生冲突的解决办法
(1)停止CPU访存
(2)周期挪用(周期窃取):当CPU不在访存时,不冲突;当CPU在访存时,必须等待访存周期结束;IO和CPU同时请求,优先IO
(3)DMA与CPU交替访存(CPU工作周期>主存存取周期)
4、DMA传送过程:分为预处理、数据传送和后处理
5、DMA方式和中断方式的区别
(1)中断是程序的切换,需保护和恢复现场;DMA除预处理和后处理外不占CPU资源
(2)中断请求的响应只能发生在一条指令执行完毕后;DMA每个机器周期结束时
(3)中断传送需要CPU的干预;DMA不需要
(4)DMA请求优先于中断请求
(5)中断具有对异常事件的处理能力;DMA只适用于传送数据块的IO操作
(6)中断靠程序;DMA靠硬件
【习题补充】
·中断判优逻辑和总线仲裁方式
(1)在总线仲裁方式中,独立请求方式响应最快,以增加控制线数为代价
定时器查询方式,有一根总线请求BR线,和log2n条设备地址线(n个设备)
(2)总线仲裁方式:指IO争用总线判优;中断判优:IO争用CPU
(3)中断判优可以通过硬件或软件实现
·Cache缺失由硬件实现,不能提出中断
·能产生DMA请求的总线部件是具有DMA接口的设备
·中断响应优先级从高到低:访管、程序性、重新启动
·中断向量地址:中断服务程序入口地址的地址
·在配有通道的计算机系统中,用户程序需要输入/输出时,引起访管中断
·在中断响应周期中,由中断隐指令将允许中断触发器置0(硬件完成)
·硬件排队电路,决定中断响应次序
通过设置中断屏蔽字可改变多个中断服务程序执行完的次序(中断处理次序)
·响应中断时保护PC和PSW两个硬件
·中断:与CPU并行;与主程序串行;DMA:与CPU并行;与主程序并行
·程序中断方式的中断请求:为了进行数据传送;
DMA的中断请求:为了获得总线控制器或交回总线控制权
·一个完整的DMA过程需要DMA控制器控制和CPU控制
(1)传送前由设备驱动器设置传送参数(2)传送结束后的处理由中断服务程序完成;
但数据传送过程中完全由DMA控制器控制
·中断隐指令完成:(1)关中断(2)保护断点(3)引出中断服务程序(形成中断服务程序入口地址并送入PC)
·单级中断系统中,中断服务程序内的执行操作顺序:
保护现场(保存通用寄存器内容)、中断事件处理、恢复现场、开中断、中断返回
·CPU处于关中断状态时,也能响应NMI传来的不可屏蔽的中断请求
程序查询方式/定时查询IO方式:
cpu需要定时查询缓冲区内数据,
设备输出输出与IO接口速率,cpu定时查询频率,高于才不会丢失数据
查一次的时间开销,1秒查询几次
缓冲区大小,取数据的频率