1.1 计算机发展历程
1.1.1 计算机硬件发展
1.1946年第一台计算机ENIAC诞生,至今经历了四代:
(1)电子管时代(1946-1957):逻辑原件采用电子管,机器语言
(2)晶体管时代(1958-1964):高级语言,操作系统雏形
(3)中小规模集成电路(1965-1971):半导体存储器取代磁芯存储器
(4)超大规模集成电路(1972-):微处理器
2.计算机原件的更新换代
(1)摩尔定律:价格不变时,集成电路可容纳晶体管数目,每隔18个月便会增加一倍,性能也提升一倍
(2)半导体存储器的发展
(3)微处理器的发展:机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数
1.1.2 计算机软件的发展
操作系统从DOS发展到视窗Windows到网络操作系统UNIX
1.1.3 计算机分类与发展方向
(1)通用计算机分为巨型、大型、中型、小型、微型和单片机
1.2 计算机系统层次结构
1.2.1 计算机系统组成
硬件系统和软件系统:逻辑上是等效的,一般硬件效率比软件高
1.2.2 计算机硬件的基本组成
1.早期的冯诺依曼机:提出“存储程序”的概念,控制流驱动方式,特点如下:
(1)计算机硬件由运算器、存储器、控制器、输入和输出设备构成
(2)指令和数据以同等地位存在存储器中,并可按址寻访
(3)指令和数据均用二进制表示
(4)指令由操作码和地址码组成,操作码表示操作数的性质,地址码表示操作数在存储器中位置
(5)指令在存储器中按顺序存放,通常指令按顺序执行
(6)以运算器为中心,输入输出设备通过运算器与存储器传送数据
计算机中区分指令和数据的方式是在指令周期的不同阶段,取指阶段取出是指令,执行阶段取出是数据
2.现代计算机组织结构:以存储器为中心,使I/O操作尽可能绕过CPU,直接在I/O设备与存储器之间完成
3.计算机功能部件
(1)输入设备
(2)输出设备
(3)存储器:存放程序和数据。分为主存和辅存。主存由许多存储单元组成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码0或1,一串二进制代码称为存储字,这串代码位数称为存储字长,存储字长可以是一个字节(8位)或字节偶数倍。主存储器工作方式是按存储单元的地址进行存取的。存储器地址寄存器(MAR)存放访存地址,存储器数据寄存器(MDR)是主存和其他部件的中介机构,用于暂存要从存储器中读或者写的信息
MAR用于寻址,其位数对应着存储单元的个数,如MAR=10位,有1024个存储单元,记为1K,MAR长度与PC相等
MDR位数与存储字长相等,一般为字节的二次幂整数倍
(4)运算器:算术逻辑单元ALU,包括通用寄存器,用于暂存操作数和中间结果,如累加器ACC,乘商寄存器MQ,操作数寄存器X,运算器中还有程序状态寄存器PSW
(5)控制器:由程序计数器(PC)、指令寄存器(IR)、控制单元(CU)。PC存放当前欲执行指令的地址,可自动加1,与MAR之间有一条直接通道。IR存放当前指令,其内容来自MDR,指令中操作码OP(IR)送至CU,用以分析指令并发出操作命令,而地址码Ad(IR)送往MAR取操作数
1.2.3 计算机软件的分类
1.系统软件和应用软件:OS、数据库管理系统(DBMS)、语言处理程序、标准库程序等为系统软件
2.三个级别的语言:机器语言、汇编语言(经过汇编程序的系统软件翻译)、高级语言(经过编译程序编译成汇编语言,或者直接翻译成机器语言)
1.2.4 计算机工作过程
(1)把程序和数据装入到主存中
(2)从程序的起始地址运行程序
(3)用程序的首地址从存储器中取出第一条指令,经过译码、执行等完成指令,计算下一条指令地址
(4)每一条程序都是经过取指、译码和执行
以下为取数指令:
取指令:PC->MAR->M->MDR->IR
分析指令:OP(IR)->CU
执行指令:Ad(IR)->MAR->M->MDR->ACC
此外,(PC)+1->PC
1.2.5 计算机系统的多级层次结构
微程序机器层->传统机器层->操作系统层->汇编语言层->高级语言层
系列机基本特点是指令系统向后兼容
1.3 计算机的性能指标
1.3.1 主要性能指标
1.机器字长:计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU寄存器位数有关。字长越长,表示范围越大,计算精度越高
2.数据通路带宽:数据总线一次多能并行传送信息的位数
3.主存容量:可以字节衡量,或者字数X字长来表示,MAR反应了存储单元个数,MDR位数反应了可寻址范围
4.运算速度
(1)吞吐量和响应时间:吞吐量主要取决于主存的存取周期;响应时间包括CPU时间与等待时间
(2)主频与CPU时钟周期:时钟周期(或节拍脉冲)是主频的倒数,CPU中最小的时间单位;主频越高,完成指令的执行步骤所用时间越短,1Hz表示每秒1次
(3)CPI:执行一条指令所需的时钟周期数
(4)CPU执行时间:运行一个程序所花费时间,CPU执行时间=CPU时钟周期数/主频=(指令条数xCPI)/主频
(5)MIPS:每秒执行多少百万条指令,MIPS=指令条数/(执行时间x10^6)=主频/CPI
(6)MFLOPS:每秒执行多少百万次浮点运算
1.4 小结
1.翻译程序、汇编程序、编译程序和解释程序?
(1)翻译程序:把高级语言源程序翻译成机器语言程序(目标代码)的软件
(2)翻译程序有两种:编译程序和解释程序;编译程序将高级语言一次全部翻译成目标程序(如C++),只要源程序不变,就无需重新翻译;解释程序将源程序一条语句翻译成对应的机器目标代码并立即执行(如JavaScript)翻译一句执行一句,不会生成目标代码
(3)汇编程序:把汇编语言翻译成机器语言
2.在CPU中,IR、MAR、MDR对各类程序员都是透明的(看不见)
3.机器字长、指令字长和存储字长
(1)机器字长:计算机能直接处理的二进制数的位数,决定了计算机的运算精度
(2)指令字长:一个指令中包含二进制的位数
(3)存储字长:一个存储单元存储二进制的长度
他们都必须是字节的整数倍,指令字长一般取存储字长整数倍,如指令字长是存储字长的2倍,就需要两次访存取出一条指令
2.1 数制与编码
2.1.1 进位计数制及其相互转换
1.进位计数制
(1)二进制:基数为2,位权为 , 为所在位数
(2)八进制:基数为8,二进制中三位数码变为一组就是一位8进制数码
(3)十六进制:4位二进制对应一位16进制数
2.不同进制之间的相互转换
(1)2进制转化为8进制或16进制:以小数点为界,将每3位(或4位)转化为8进制(或16进制);8进制或16进制转化为2进制:将每一位变为3位二进制(或4位);16进制转化为8进制,可以先将16进制转化为2进制,再将2进制转化为8进制
(2)任意进制转化为10进制:将任意进制数码与其权值相乘,再把乘积相加
(3)10进制转化为任意进制:采用基数乘除法,对于整数部分除基数取余(最先得到的余数为数的最低位,商为0结束),对于小数部分乘基数取整(最先得到的整数为数的最高位)
注意:B(2)、O(8)、D(10)、H(16)
并不是每个十进制小数都可以表示为二进制小数,如0.3,但任何二进制小数都可以表示为十进制小数
2.1.2 真值和机器数
符号和数值一起编码,0表示正,1表示负,这样的数称为机器数
2.1.3 BCD码
二进制编码的十进制数,通常采用4位二进制数来表示一位10进制数中的0~9这10个数字,还剩6种状态为冗余状态
(1)8421码:有权码, ,若两个数相加大于等于1010(即10),则要加6修正,并向高位进位
2.1.4 字符与字符串
1.字符编码ASCII码:7位二进制数,031是控制字符,127是DEL,32是空格,32126是可印刷字符,4857是数字09,6590是AZ,97122是az
2.汉字的表示与编码:两个字节表示,包括汉字的输入编码、汉字内码、汉字字形码
2.字符串的存放:每个字节存储一个字符,在同一个主存字中,从低位字节向高位字节存放字符串内容称为小端模式,反之为大端模式
2.1.5 校验码(检错纠错编码)
增加一些冗余码来纠错;任意两个合法字之间最少变化的二进制位数称为数据校验码的码距,码距不小于2的数据校验码,有检错能力,检错能力大于等于纠错能力
1.奇偶校验码:原编码基础上加一个校验位,码距等于2,检测出一位错误(或奇数位错误),但不能确定出错位置,也不能检测出偶数位错误。奇校验码:整个校验码中1个数为奇数;偶校验码:整个校验码中1个数为偶数。常用于对存储器数据的检查或者传输数据的检查
注:若采用偶校验,收到数据是10101001,则未出错或出现偶数位错
2.海明校验码:可以发现错位,还能指出错误的位置; , ,即编码最小码距L越大,则其检错位数D越大,纠错位数C也越大;检测一位错时 :n为有效信息的位数,k为校验位位数,若要检测两位错,则相应k+1
3.循环冗余校验码(CRC):大量数据传送使用;在K位信息码后拼接R位校验码,整个编码的长度为N位;步骤:(1)将要传送的K位信息码左移R(生成多项式最高次幂)位(2)将它与生成多项式做模2除法,生成R位校验码(余数)
模2除法:(1)用除数对被除数最高几位做模2减法(异或),不借位(2)除数右移一位,若余数最高位为1,商则为1,并对余数做模2减。若最高位为0,商则为0,除数继续右移一位(3)循环直到余数位数小于除数时,该余数为最终余数
纠错检错:接收端接收到CRC码,用生成多项式做模2除法,若余数为0,则码字无错,若余数为010,则说明 出错,取反即可
注:大量数据传送检验用CRC
2.2 定点数的表示与运算
2.2.1 定点数的表示
1.无符号数和有符号数的表示
2.机器数的定点表示:机器数中小数点的位置固定不变,将小数点固定在最高位之前(定点小数)或固定在最低位之后(定点整数)
(1)定点小数:纯小数,符号位之后,数值之前, ,当 ,X表示最大正数= ,当 ,X表示最小负数=
(2)定点整数:与定点小数类似
3.原码、补码、反码、移码
(1)原码表示:用机器数的最高位表示该数的符号;若机器字长为n+1,纯小数原码范围 ,纯整数范围 ;
(2)补码表示:加减法统一采用加法;若机器字长n+1,纯小数范围 ,纯整数范围 ;真值0的补码表示唯一;变形补码(模4补码)双符号位00表示正,11表示负
(3)反码表示:字长为n+1,纯小数范围 ,纯整数范围为 ,
补充: 与 相互转化时,符号位取反,数值为取反加1
(4)移码表示:表示浮点数的阶码,只能表示整数;就是在真值X上加一个常数(偏置值),通常这个值取 ;机器字长为n+1, ;0表示唯一,移码和补码仅差一个符号位,移码全为0时,真值最小 ,移码全为1时,最大值 ,移码大真值就大
2.2.2 定点数的运算
1.移位运算
(1)算术移位(有符号数):不管正负数移位后符号位保持不变
码制 添补代码
正数 原、反、补 0
负数 原 0
反 1
补 左移添0
右移添1
(2)逻辑移位(无符号数):逻辑左移时,高位移丢,低位添0,逻辑右移时,低位移丢,高位添0
(3)循环移位:带进位标志位CF的循环移位(大循环)和不带进位标志位CF的循环移位(小循环);特点是移出的数位又被移入数据之中;适合将低字节数据和高字节数据互换
注:不带进位位的循环左移将最高位进入最低位和标志寄存器位
2.原码定点数的加减法运算:运算时注意机器字长,当左边溢出时,将溢出位丢掉
3.补码定点数加减运算(机器字长为n+1)
(1)符号位与数值位按同样规则运算,符号位产生的进位要丢掉结果的符号位由运算得出
(2)运算将溢出位丢掉
4.符号扩展:例如将8位扩展为32位;正数的扩展将所有扩展位补为0;负数:原码表示的负数符号扩展与正数相同,只不过符号位为1;补码中原有形式的符号位移动到新形式符号位上,新表示形式所有附加位都用1(对于整数)或0(对于小数)进行填充;反码中原有形式的符号位移动到新形式的符号位上,新表示形式的所有附加位都用1填充
5.溢出概念与判别方法:大于机器数所能表示的叫上溢,小于叫下溢;仅当两个符号相同的数相加或两个符号相异才会产生溢出。判别溢出方法:
(1)一位符号位:只要参加运算的两个数符号相同,结果与原操作数符号不同,则溢出
(2)双符号位:也称模4补码;两个符号位相同表示未溢出;00表示正,01表示正溢出,10表示负溢出,11表示负
(3)一位符号位根据数据位的进位情况判断:若符号位的进位与最高位的进位相同,表示没有溢出,否则溢出。
2.3 浮点数的表示与运算
2.3.1 浮点数的表示
1.浮点数表示格式: ,r是浮点数阶码的底(隐含),与尾数基数相同,通常为2,E和M都是带符号的定点数,E叫阶码,M称为尾数,浮点数格式如下:
阶码是整数,阶符和阶码的位数m合起来反映浮点数表示范围及小数点的实际位置;数符代表浮点数的符号,尾数的位数反映浮点数的精度
2.规格化浮点数:通过调整一个非规格化浮点数的尾数和阶码的大小,使非零浮点数在尾数的最高位上保证是一个有效值(非0)
为了增加数据的表示精度
(1)左规:尾数算术左移一位阶码减1,左规可能要进行多次
(2)右规:运算结果尾数溢出(双符号位为01或10),算术右移一位阶码加1,右规只需一次
①原码规格化后:
正数为0.1xxx形式,最大为0.11…11,最小为0.100…00,范围
负数为1.1xxx形式,最大为1.100…00,最小为1.11…11,范围
②补码规格化后:
正数为0.1xxx形式,最大为0.11…11,最小为0.100…00,范围
负数为1.0xxx形式,最大为1.01…11,最小为1.00…00,范围
注:尾数基数为2时,原码规格化数的尾数最高位一定是1,补码规格化尾数最高位一定与尾数符号相反;基数为4,原码规格化形式尾数最高两位不全为0
3.IEEE 754标准:格式如下:|
注:(1)尾数采用隐藏位原码表示,阶码采用移码表示,例如 ,将其规格化为 ,其中整数部分“1”不被存在23位当中
(2)存储浮点数阶码前,偏置值要先加到阶码真值上;即阶码为3时,对于短浮点数移码表示的阶码为130
(3)短浮点数真值为: ,E取值1~254
(4)长浮点数真值为: ,E取值1~2046
(5)只有规格化后阶码超出所能表示范围,才会发生溢出,计算后不一定溢出
2.3.2 浮点数的加减运算(阶码和尾数运算分开进行,一律采用补码)
(1)对阶:使两个操作数小数点对齐,先求阶差,按小阶向大阶看齐原则,将阶码小的尾数右移一位,阶加1,直到两个数阶码相等为止
(2)尾数求和:将对阶后的尾数按定点数加减运算
(3)规格化:双符号为例,尾数大于0时,补码规格化形式为00.1xxx,尾数小于0时,补码规格化形式为11.0xxx,即当尾数最高数值位与符号位不同时,即为规格化形式
①左规:尾数出现00.0xxx或11.1xxx时,需左规,直到尾数为00.1xxx或11.0xxx
②右规:尾数求和溢出,如尾数为10.xxx或01.xxx需右规
(4)舍入:对阶和右规中可能将尾数低位丢失(只有浮点数需要,定点数不需要)
①0舍1入法:尾数右移时,被移去的最高位为0则舍去,为1则在末尾添1,可能尾数又溢出,需再做一次右规
②恒置“1”
(5)溢出判断:只有将数右规后,再根据阶码来判断浮点数运算是否溢出;以双符号补码为例,阶码符号位为01上溢,中断处理,为10下溢,按机器0处理
注:对阶操作不会引起阶码上溢或下溢(小->大)、右规和尾数舍入都可能引起阶码上溢、左规时可能引起阶码下溢、尾数溢出时结果不一定溢出
(6)强制类型转换:char->int->long->double,float->double范围和精度都是从小到大,转换没有损失
①char为8位,转化为int,前面补0
②int和unsigned int可以相互转化
③int与float转化:int转化为float虽不会溢出,但int32位,而float24位,有可能舍入,而double不会;float转化为int精度损失
2.4 算术逻辑单元ALU
运算器由ALU、累加器、状态寄存器和通用寄存器组
2.4.1 串行加法器和并行加法器
1.一位全加器:全加器(FA)是最基本的加法单元,有加数Ai、加数Bi与低位传来进位Ci-1共3个输入,有本位和Si与向高位进位的Ci两个输出;和表达式 ,进位表达式
2.串行加法器:只有一个全加器,数据逐位串行送入加法器中进行运算,进位触发器用来寄存进位信号,以便参与下次运算;器件少成本低,但运算速度慢,多用于某些低速的专用运算器
3.并行加法器:多个全加器组成,位数与机器字长相同,每位同时进行运算,并行加法器最长运算时间主要是由低位进位信号的传递时间决定的
2.4.2 算术逻辑单元功能与结构
ALU核心是个并行加法器
3.1 存储器的层次结构
3.1.1 存储器分类
1.按在计算机中作用(层次)分类
(1)主存(内存):CPU可直接访问,也可以与Cache和辅存交换数据,特点是容量小、存取速度快、每位价格较高
(2)辅存(外存):存放当前暂时不用的程序数据以及一些需要永久保存的信息,不能与CPU直接交换信息,特点是容量大、存取速度慢、每位成本低
(3)Cache:位于主存与CPU之间,Cache存取速度与CPU匹配,但容量小,价格高
2.按存储介质分类
磁表面存储器(磁盘、磁带)、磁芯存储器、半导体存储器(MOS型存储器、双极型存储器)、光存储器(光盘)
3.按存取方式
(1)随机存储器(RAM):存储器的任意一个存储单元内容都可以随机存取;特点是读写方便、使用灵活,主要用作主存与Cache;分为静态RAM(以触发器原理寄存信息)、动态RAM(以电容充电原理寄存信息)
(2)只读存储器(ROM):只能随机读出而不能写入,信息一旦写入存储器就不能改变了,用于存放固定不变的程序、常数和汉字字库;它可以与随机存储器一起共同作为主存的一部分,统一构成主存地址域(与RAM一样,存取方式为随机存取)
(3)串行访问存储器:按其物理位置先后顺序寻址,包括顺序存取存储器(SAM,如磁带、CD-ROM)和直接存取存储器(DAM,如磁盘)
4.按信息的可保存性分类:易失性存储器,如RAM,非易失性存储器,如ROM;破坏性读出和非破坏性读出
3.1.2 存储器的性能指标
(1)存储容量=存储字数X字长,存储字数表示存储空间大小,字长表示数据长度
(2)单位成本:每位价格=总成本/总容量
(3)存储速度:数据传输率=数据宽度/存储周期
①存取时间:指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间与写入时间
②存取周期(读写周期):存储器进行一次完整的读写操作所需全部时间,即连续两次对的访问存储器操作之间所需最小时间间隔,通常包括存取时间+恢复时间,存储周期一般大于存取时间
③主存宽带宽(数据传输率):每秒从主存读出信息的最大量
3.2 存储器的层次化结构
3.2.1 多级存储系统:Cache-主存(解决CPU和主存速度不匹配)和主存-辅存(解决存储系统容量问题)
注:主存与Cache之间的数据调动是硬件自动完成的,对所有程序员都是透明的,而主存与辅存之间的数据调动则是由硬件和操作系统共同完成,对应用程序员是透明的
3.3 半导体随机存储器
3.3.1 半导体存储芯片
1.半导体存储芯片的基本结构
(1)存储矩阵(存储体):由大量相同的位存数单元阵列构成
(2)译码驱动器:将来自地址总线的地址信号翻译成对应存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读写操作
(3)读写电路:包括读出放大器和写入电路,用来完成读写
(4)读写控制线:决定芯片进行读写操作
(5)片选线:确定哪个存储芯片被选中
(6)地址线:单向,位数与存储字个数有关
(7)数据线:双向,位数与读出或写入数据位数有关
分为静态RAM和动态RAM,静态被用于Cache,动态用于主存
3.3.2 SRAM存储器和DRAM存储器
1.SRAM存储器工作原理:地址码相同的多个存储元构成存储单元,若各干存储单元构成存储体;SRAM存储元是用双稳态触发管(六管MOS)来记忆信息(非破坏性读出,但属于易失性半导体存储器);存取速度快,集成度低,功耗大(一般用来组成Cache)
2.DRAM存储器工作原理(采用地址复用技术,地址总线为原来的一半):利用存储元电路中栅极电容上的电荷来存储信息;容易集成、位价稍低、容量稍大、功耗低,但速度慢,一般用来组成主存;电容上电荷只能维持1~2ms,必须进行刷新
(1)集中刷新:优点是读写操作是不受刷新工作的影响,因此系统的存取速度比较高;缺点是在集中刷新期间(访存死区)不能访问存储器
(2)分散刷新:把对每一行的刷新分散到各个工作周期中去,因此存储器系统工作分为两部分,前半部分用于读写,后半部分用于刷新某一行;优点是没有死区,缺点是加长了系统的存取周期,降低整机的速度
(3)异步刷新:将刷新周期除以行数,得到两次刷新操作之间时间间隔t,利用逻辑电路每隔时间t产生一次刷新请求。这样可以避免使CPU连续等待多长的时间,而且减少了刷新次数。
(4)若将刷新安排在不需要访问存储器的译码阶段,则既不会加长存取周期,也不会产生死区,这是分散刷新的发展,也称“透明刷新”
DRAM刷新注意:(1)刷新对CPU透明,即刷新不依赖于外部访问
(2)动态RAM刷新单位是行,故刷新操作仅需要行地址
(3)刷新操作类似于读,但又有不同,刷新操作仅是给栅极电容补充电荷,不需要信息输出
(4)刷新时不需要选片,即整个存储器中的所有芯片同时被刷新
3.3.3 只读存储器
1.只读存储器特点(ROM):RAM与ROM都支持随机存取,其中SRAM与DRAM均为易失性存储器,ROM为非易失性存储器,一旦写入只能读
2.ROM类型
(1)掩膜式只读存储器(MROM):厂商直接写入内容,无法改变,优点可靠性高,集成度高,价格便宜,但灵活性差
(2)一次可编程只读存储器(PROM):一旦编程写入,不可更改
(3)可擦除可编程存储器(EPROM):需将其全部擦除,然后再编程,分为紫外线擦除(UVEPROM)和电擦除( )
(4)闪存(Flash Memory):既可在不加电情况下长期保存信息,又能在线进行快速擦除与重写
(5)固态硬盘(SSD):相对于传统硬盘,具有读写快,低功耗,缺点是价格高
3.4 主存储器与CPU的链接
3.4.1 连接原理
(1)数据总线的位数与工作频率的乘积正比于数据传输率
(2)地址总线的位数决定了可寻址的最大内存空间,MAR位数决定主存地址空间大小
(3)控制总线(读/写)指出总线周期类型和本次输入输出操作完成时刻
3.4.2 主存容量扩展
1.位扩展法:CPU数据线数与存储芯片的数据位数不一定相等,用多个存储器扩展,使其数据位数与CPU数据线数相等;例如用8片 位RAM芯片组成 位存储器(连接地址线方式相同,但连接数据线方式不同,片选信号要连接到所有芯片)
2.字扩展法:增加存储器的字的数量,而位数不变,例如用4片 位RAM组成 位存储器(连接地址线方式相同,连接数据线的方式也相同,某一时刻只需选中部分芯片)
3.字位扩展法:例如用8片 位RAM芯片组成 位存储器,每两片构成一组,一共有4组(连接地址线相同,数据线不同)
3.4.3 存储芯片的地址分配和片选
CPU要实现存数单元的访问,首先要选择存储芯片,即片选;然后选中芯片中的存储单元,进行数据存储,即字选;片选信号产生分为线选法和译码片选法
3.4.4 存储器与CPU连接
1.合理选择存储芯片:主要选择存储芯片类型和数量,ROM存储系统程序、标准子程序和各类常数,RAM存储用户编程而设置的
2.地址线的连接:通常CPU地址线低位与存储芯片地址线连接,以选择芯片中某一单元(字选),CPU地址高位则在扩充存储芯片时用,以用来选择存储芯片(片选)
3.数据线的连接:CPU数据线与存储芯片不同时,必须对存储芯片扩位
4.读写命令线的连接:通常高电平为读,低电平为写
5.片选线的连接:是CPU与存储芯片连接的关键
3.5提高访存的措施
3.5.1 双端口RAM:两个端口地址不相同,则读写一定不会错误
(1)两端口不同时对同一地址单元存储数据(不会错误)
(2)两端口同时对同一地址单元读出数据(不会错误)
(3)两端口同时对同一地址单元写入数据(写错误)
(4)两端口同时对同一地址单元,一个写入,一个读出(读错误)
解决方法:置“忙”信号为0,由判断逻辑暂停关闭一个端口
3.5.2 多模块存储器
1.单体多字存储器:一个存取周期,从同一地址取出m条指令,然后逐条送至CPU执行,增大了存储器带宽,提高了工作速度;缺点:指令和数据在主存内必须连续存放
2.多体并行存储器
(1)高位交叉编址:高位地址表示体号,低位地址表示体内地址
(2)地址交叉编址:低位地址表示体号,高位地址表示体内地址;可以在不改变每个模块存取周期的前提下,采用流水线方式并行存取,提高主存带宽,更好满足局部性原理,而高位不能
3.6 高速缓冲存储器
3.6.1 程序访问的局部性原理:时间和空间局部性
3.6.2 Cache基本工作原理
1.通常由SRAM组成,Cache和主存被分为若干大小相等的块(Cache块又称为Cache行),仅保存主存中最活跃的若干块副本,按照某种策略预测将CPU欲访问的主存放入Cache
2.CPU请求读时,若访存地址在Cache中命中,就将此地址转化为Cache地址,若不命中,仍需访问主存,并把此字所在的块一次从主存调入Cache内,若Cache已满需要替换算法将原来信息块替换,CPU与Cache交换以字为单位,Cache与主存交换以Cache块为单位
3.CPU请求写时,遇到Cache与主存内容不一致问题,如果Cache命中,需要按照一定的写策略处理,有全写法和写回法
4.Cache命中率(H)=Cache命中次数/(Cache命中次数+主存命中次数)
设 为命中时Cache访问时间, 为未命中访问时间,1-H表示未命中率,则平均访问时间为
效率: ,r为访问主存是访问Cache的多少倍
3.6.3 Cache和主存的映射方式
地址映射是指把主存地址空间映射到Cache地址空间,也就是把存放在主存中的程序按某种规则放入Cache;在Cache中要为每一块加一个标记,指明它是主存中那一块副本,为了说明标记是否有效,每个标记至少设置一个有效位,为1时表示Cache映射到主存块数据有效
3.6.4 Cache中主存块替换算法
1.随机算法(RAND):命中率低
2.先进先出(FIFO):也未依据局部性原理
3.近期最少使用(LRU):对每行设置一个计数器,Cache每命中一次,命中行计数器清0,而其他各行计数器均加1,需要替换时比较各特定行计数值,最大的行换出
4.最不经常使用(LFU):同理
3.6.5 Cache写策略
1.全写法(写直通法):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,当某一块需要替换时,不必写入主存,直接将调入块覆盖即可;实现简单,但增加访存次数,降低Cache效率;为减少全写法写入主存的时间损耗,在Cache和主存间加一个写缓冲
2.写回法:当CPU对Cache写命中时,只修改Cache,不立即写入主存,只有当此块被换出时才将其写回主存;减少了访存次数,但存在不一致的隐患,每个Cache行必须设置一个标志位(脏位),以反映此块是否被CPU修改过
3.若Cache不命中,还需要考虑是否调块至Cache,非写分配法只写入主存,不进行调块,而写分配法不仅写入主存,还要进行调块至Cache
4.1 指令格式:指令是计算机运行最小功能单位
4.1.1 指令的基本格式
5.寄存器寻址:指令字中直接给出操作数所在寄存器编号,即EA=Ri,操作数由寄存器给出;使得指令字短且不用访存,但寄存器昂贵
6.寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri);速度快,但要访存
9.变址寻址:形式地址A加上变址寄存器IX内容,即EA=(IX)+A;变址寄存器面向用户,变址寄存器可由用户改变(作为偏移量),形式地址A不变(作为基地址);扩大寻址范围,可用于数组处理,适于编制循环程序
10.堆栈寻址:存储区读写单元由特定寄存器给出,称为堆栈指针(SP),寄存器堆栈称为硬堆栈,主存中划出来一块区域称为软堆栈
4.3 CISC与RISC基本概念
复杂指令系统计算机(CISC)和精简指令系统计算机(RISC)
4.3.1 CISC
4.3.2 RISC
1.概念:尽量使用寄存器-寄存器操作指令
(1)只有load/store指令访存,其他指令在寄存器间进行
(2)通用寄存器数量多
(3)一定采用指令流水技术,大部分指令在一个时钟周期内完成
注意:CISC大多可以与老机器兼容,而RISC不能
4.3.3 CISC与RISC比较:CISC采用微程序控制,而RISC采用组合逻辑控制
RISC还有特点:指令格式规整长度一致,指令和数据按边界对齐存放,只有load、store指令才能对操作数存取访问
5.1 CPU功能及基本结构
5.1.1 CPU功能
1.指令控制:取指令、分析指令和执行指令
2.操作控制:CPU控制指令的操作信号
3.时间控制:对各种操作加以时间控制
4.数据加工:算术逻辑运算
5.中断处理:对异常和特殊请求(如IO请求)做出处理
5.1.2 CPU基本结构
1.运算器:算术逻辑单元、暂存寄存器(对应用程序员透明)、累加器(是个通用寄存器)、通用寄存器组(存放操作数,包括源操作数、目的操作数和中间操作数,SP是堆栈指针,指示栈顶地址)、程序状态字寄存器PSW、移位器、计数器
2.控制器:执行指令,每条指令的执行是由控制器发出的一组微操作实现的
(1)程序计数器(PC):用于指出下一条指令在主存的地址,PC有自增功能
(2)指令寄存器(IR):保存当前执行的指令
(3)指令译码器:仅对操作码字段进行译码
(4)存储器地址寄存器(MAR):存放所要访问的主存单元的地址
(5)存储器数据寄存器(MDR):存放向主存写入的信息或从主存读出的信息
(6)时序系统:产生各种时序信号
(7)微操作信号发生器:根据IR内容、PSW内容及时序信号,产生控制整个计算机的信号,结构有组合逻辑型和存储逻辑型
注:(1)寄存器可以分为两类,一是用户可见,可对其编程,如通用寄存器组、PSW、PC;二是用户不可见,如MAR、MDR、IR
(2)指令寄存器的位数取决于存储容量,通用寄存器位数取决于机器字长
5.2 指令执行过程
5.2.1 指令周期
1.指令周期分为若干机器周期,一个机器周期包含若干时钟周期,每个指令周期内机器周期数可以不等,每个机器周期内时钟周期也可以不等
2.对于无条件转移指令JMP X,执行时不需要访问主存,其指令包含取指周期(包括取指和分析)和执行周期
3.对于间接寻址的指令,为了取操作数,先访问一次主存,取出有效地址,再访问主存,取操作数,所以还包括间址周期,间址周期介于取值周期和执行周期之间
4.当CPU采用中断方式实现主机和IO设备交换信息时,CPU在每条指令执行结束前都要发中断查询信号,如果有中断请求,CPU进入中断周期
注:上述四个阶段都有CPU访存操作,但目的不同;取值周期为的是取指令,间址周期为的是取有效地址,执行周期为的是取操作数,中断周期为的是保存程序断点;4个标志触发器FE、IND、EX、INT依次代表上述四个不同周期,1表示状态有效;中断周期中进栈操作数是SP减1,因为计算机中堆栈向低地址增加
5.2.2 指令周期数据流
1.取指周期:根据PC的内容从主存取出指令代码并放到IR中,取指同时PC+1,取指操作是自动进行的,不需要得到信号
(1)PC->MAR->地址总线->主存
(2)CU发出控制信号->控制总线->主存
(3)主存->数据总线->MDR->IR(存放指令)
(4)CU发出读命令->PC+1
2.间址周期:取操作数有效地址,将IR中地址码送到MAR并送至地址总线,获取有效地址存放MDR
(1)AD(IR)->MAR->地址总线->主存
(2)CU发出读命令->控制总线->主存
(3)主存->数据总线->MDR(存放有效地址)
3.执行周期:根据IR指令字操作码和操作数进行运算,没有统一数据流
4.中断周期:处理中断请求,假设程序断点存放在堆栈中,并用SP指向栈顶,而且进栈是先修改栈顶指针,后存入数据;一条指令执行结束后响应中断
(1)CU控制将SP-1,SP->MAR->地址总线->主存
(2)CU发出写命令->控制总线->主存
(3)PC->MDR->数据总线->主存(程序断点存入主存)
(4)CU(中断服务程序入口地址)->PC
5.2.3 指令执行方案
1.单指令周期:对所有的指令都选用相同的执行时间完成,指令串行执行,因此指令周期取决于最长的指令的执行时间;降低系统速度
2.多指令周期:不同类型的指令选用不同的执行步骤完成,也是串行执行(即一条指令执行完另一条指令才开始,与流水线指令相反)
3.流水线方案:指令并行执行
注:指令字长一般取存储字长的整数倍,若指令字长等于存储字长,则取指周期等于机器周期;指令字长取决于操作码长度、操作数地址长度和操作数地址个数,与机器字长无关
5.3 数据通路的功能和基本结构
5.3.1 数据通路的功能
功能是实现CPU内部运算器与寄存器以及寄存器之间的数据交换
5.3.2 数据通路的基本结构
(1)CPU内部单总线结构:将所有寄存器输入端和输出端都连接到一个公共通路上;但冲突高
(2)CPU内部三总线结构:将所有寄存器输入端和输出端都连接到多条公共通路上,提高效率
(3)专用数据通路
在右图中,各部件大写表示,加“in”表示该部件允许输入控制信号,加“out”表示该部件允许输出信号
1.寄存器之间数据传送:可以通过CPU内部总线完成
以PC寄存器为例,PC内部送至MAR:
PC->Bus PCout有效,PC内容送至总线
Bus->MAR MARin有效,总线内容送至MAR
2.主存与CPU之间的数据传送
以CPU从主存读取指令为例
PC->Bus->MAR PCout和MARin有效
1->R CU发出读命令
MEM(MAR)->MDR MDRin有效
MDR->Bus->IR MDRout和IRin有效
3.执行算术和逻辑运算
被相加的两个数必须在ALU两个输入端同时有效,上图中暂存器Y用于该目的,现将一个操作数经CPU内部总线送至暂存器Y保存(通过寄存器与总线相连),Y的内容在ALU左端输入端始终有效,再将另一个操作数经总线送至ALU右端,结果暂存在暂存器Z中
注:采用内部总线:结构简单,容易实现,性能较低,存在冲突;不采用内部总线:结构复杂,硬件量大,不易实现,性能高,基本不存在数据冲突
5.4 控制器的功能和工作原理
5.4.1 控制器的结构和功能
1.控制器的功能
(1)从主存取出一条指令,并指出下一条指令在主存中的位置
(2)对指令进行译码,产生响应控制信号
(3)指挥控制CPU、主存、输入输出设备数据流向
根据控制器产生微操作控制信号方式不同,分为硬布线控制器和微程序控制器,两类PC和IR相同
5.4.2 硬布线控制器
按时间顺序发送一系列微操作控制信号,由复杂组合逻辑门电路和一些触发器构成,又称为组合逻辑控制器
1.硬布线控制单元
指令的操作码是决定控制单元发出不同操作指令的关键,为简化控制单元,将指令操作码译码和节拍发生器从CU分离出来,CU输入信号来源
(1)经指令译码器译码产生的指令信息
(2)时序系统产生的机器周期信号和节拍信号
(3)来自执行单元的反馈信息
2.硬布线控制器的时序系统和微操作
(1)时钟周期:用时钟信号控制节拍发生器,每个节拍宽度正好对应一个时钟周期
(2)机器周期:可看做是所有指令执行过程中一个基准时间,不同指令操作不同,指令周期也不同,访问存储器时间是固定的,因此,通常以存取周期作为基准时间,即内存中读取一个指令字的最短时间作为机器周期
(3)指令周期
(4)微操作命令分析
①取指周期微操作信号
PC->MAR 现行指令地址->MAR
1->R 命令存储器读
M(MAR)->MDR 现行指令从存储器读至MDR
MDR->IR 现行指令->IR
OP(IR)->CU 指令的操作码->CU译码
(PC)+1->PC 形成下一条指令地址
②间址周期微操作信号
AD(IR)->MAR 将指令字中地址码(形式地址)->MAR
1->R 命令存储器读
M(MAR)->MDR 将有效地址从存储器读至MDR
③执行周期微操作命令
3.CPU的控制方式
(1)同步控制方式:系统有一个统一的时钟,所有控制信号均来自这个统一时钟信号,通常选取最长和最复杂作为标准
(2)异步控制方式:通过应答进行联络
(3)联合控制方式:大部分采用同步,小部分采用异步
5.4.3 微程序控制器
采用存储逻辑实现,把微操作信号代码化,使每条机器指令转化为一段微程序并存入一个专门的存储器(控制存储器),微操作控制信号由微指令产生
1.微程序控制基本概念
(1)微命令与微操作:控制部件向执行部件发出的各种控制命令
(2)微指令与微周期
(3)主存储器和控制存储器:主存存放数据和程序,在CPU外,用RAM实现,控制存储器(CM)存放微程序,在CPU内部,由ROM实现
(4)程序与微程序
一条指令对应一个微程序,一个微程序由多条微指令构成,微指令会发出许多不同微命令,一个微程序周期对应一个指令周期
2.微指令编码方式:如何对控制字段编码,尽量缩短指令字长
(1)直接编码方式:无需进行译码,微指令的微命令字段中每一位都代表一个微命令;优点是编码简单,执行快,并行性好,缺点是指令字过长,控存容量极大
(2)字段直接编码方式:微指令的微命令字段分为若干个小段,把互斥性微命令组合在同一个字段中,把相容性微命令组合在不同字段中,每个字段独立编码,各字段编码单独定义,与其他字段无关;缩短微指令字长,但直接编码方式慢
注:每个小段留出一个状态位,表示本字段不发出任何命令解释,因此当某字段长3位时,最多7个互斥微命令
(3)字段间接编码:一个字段某些命令需要由另一个字段中某些微命令解释,可进一步缩小指令字长,但削弱了微指令并行能力,通常作为字段直接编码方式的一种辅助手段
3.微指令格式:与微指令编码方式有关
(1)水平型微指令:优点是微程序短,执行速度快,缺点是微指令长,编写微程序较麻烦
(2)垂直型微指令:优点是微指令短、简单、规整、便于编写微程序,缺点是微程序长、执行速度慢,工作效率低
(3)混合型微指令
4.硬布线与微程序控制器特点
(1)硬布线:优点是由于控制器速度取决于电路延迟,所以速度快;缺点是由于将控制部件看做专门产生固定时序控制信号的逻辑电路,所以把用最少原件和取得最高速度作为设计目标,一旦完成设计,不可能通过其他额外修改增加新功能
(2)微程序:优点是规整性、灵活性、可维护性;缺点是采用存储原理,所以每条指令都要从存储器取一次,影响速度
5.5 指令流水线
5.5.1 指令流水线基本概念
1.定义:多条指令在处理器中执行,方案:
(1)顺序执行:按取指、分析、执行,每个时间都为t,则需要3nt时间;优点是控制简单,硬件代价小,缺点是执行速度慢,效率低
(2)一次重叠执行:把第k条执行与k+1条取指同时进行,时间为(1+2n)t,缩短了将近1/3时间,效率提高,但硬件大
(3)两次重叠执行:类似的,时间为(2+n)t
2.流水线的表示方法:时空图
3.流水线方式的特点
(1)每个子任务由专门功能部件执行,并依靠多个功能部件并行工作来缩短程序执行时间
(2)每个功能部件有个缓冲存储器,作用是保存本流水段执行结果,提供下一个流水段使用
(3)各功能段时间尽量相等,否则引起堵塞
(4)尽量提供连续任务
(5)流水线需要装入时间和排空时间,装入时间是第一个任务进入流水线到输出流水线的时间,排空时间是最后一个任务进入流水线到输出流水线时间
5.5.2 流水线的分类
1.部件功能级、处理机级和处理机间级流水线
(1)部件功能级流水就是将复杂的算术逻辑运算组成流水线工作方式。例如,可将浮点加法操作分成求阶差、对阶、尾数相加以及结果规格化等4个子过程
(2)处理机级流水是把一条指令解释过程分成多个子过程,如前面提到的取指、译码、执行、访存及写回5个子过程
(3)处理机间流水是一种宏流水,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中
2.单功能流水线和多功能流水线
3.动态流水线和静态流水线
按同一时间内各段之间的连接方式,流水线可分为静态流水线和动态流水线。
4.线性流水线和非线性流水线
按流水线的各个功能段之间是否有反馈信号
线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。非线性流水
线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算
5.5.3 影响流水线的因素
1.结构相关(资源冲突):多条指令在同一时刻争用统一资源而形成的冲突,方法:
(1)前一指令访存时,后一指令暂停一个时钟周期
(2)单独设置指令和数据存储器,两项操作在不同存储器中进行
2.数据相关(数据冲突):数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,当多条指令重叠处理时就会发生冲突,解决的办法:
(1)把遇到数据相关的指令及其后续指令都暂停一几个时钟周期,直到数据相关问题消失
后再继续执行,可分为硬件阻塞(stall)和软件插入“NOP”指令两种方法
(2)设置相关专用通路,即不等前一条指令把计算结果写回寄存器组,下一条指令也不再读寄存器组,而是直接把前一条指令的ALU的计算结果作为自己的输入数据开始计算过程,使本来需要暂停的操作变得可以继续执行,称为数据旁路技术
(3)通过编译器对数据相关的指令编译优化的方法,调整指令顺序来解决数据相关
3.控制相关(控制冲突):当流水线遇到转移指令和其他改变PC值的指令而造成断流时,解决的办法:
(1)对转移指令进行分支预测,尽早生成转移目标地址。分支预测分为简单(静态)预测和动态预测。静态预测总是预测条件不满足,即继续执行分支指令的后续指令。动态预测根据程序执行历史情况,进行动态预测调整,有较高预测准确率
(2)加快和提前形成条件码
(3)预取转移成功和不成两个控制流方向上的目标指令
(4)提高转移方向猜准率
5.5.4 流水线性能指标
1.吞吐率:单位时间内流水线所完成的任务数量,TP=n/Tk,n为任务数,Tk为处理完成n个任务所用时间
2.流水线加速比:完成同样一批任务,不使用流水线所用时间与使用时间之比,S=T0/Tk
3.流水线效率:在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比
n个任务占用的时空区有效面积就是顺序执行n个任务所使用的总时间T0,而n个任务所用
的时间与k个流水段所围成的时空区总面积为kTk,其中Tk是流水线完成n个任务所使用的总时间,计算流水线效率(E)的一般公式为
如果流水线的各段执行时间相等,上式中的分子部分是n个任务实际占用的有效面积,分母
部分是完成n个任务所用的时间与k个流水段所围成的总面积
流水线的各段执行时间均相等,当连续输入的任务n->无穷时,最高效率为Ems=1。
5.5.5超标量流水线的基本概念
第六章 总线
6.1 总线概述
6.1.1 总线的基本概念:分时和共享是总线的两个基本特点
1.总线的猝发传输:在一个总线周期内传输地址连续的多个数据字的总线传输方式
6.1.2 总线的分类
1.片内总线:CPU内部总线
2.系统总线:数据总线(双向传输)、地址总线(单向传输)、控制总线
3.通信总线:外部总线
6.1.3 系统总线结构
1.单总线结构:不是一根总线
2.双总线结构:一条是主存总线,用于CPU、主存与通道之间的连接,另一条是IO总线;优点是将低速的IO设备从单总线上分离开,实现存储总线和IO总线分离;缺点是需要增加通道等硬件
3.三总线结构:主存总线、IO总线和DMA总线
6.1.4 总线的性能指标
1.总线的传输周期:包括若干个总线时钟周期
2.总线时钟周期:即机器的时钟周期
3.总线的工作频率:总线周期的倒数,指一秒内传输几次数据
4.总线时钟频率:机器的时钟频率,为时钟周期倒数
5.总线宽度:总线位宽,是指总线上同时能够传输数据的位数,通常是指数据总线根数
6.总线带宽:总线的传输速率,单位时间内总线上可传输的数据位数,通常B/s;总线带宽=总线宽度X总线频率
7.总线复用
6.2 总线仲裁
6.2.1 集中仲裁方式:将所有总线请求集中起来,利用一个特定的裁决算法进行裁决
1.链式查询方式:当一个或多个设备同时发出总线使用请求信号BR时,中央仲裁器发出的总线授权信号BG沿着菊花链串行的从一个设备依次传送到下一个设备,到达离出发点最近的发出总线请求的设备之后就不再往下传;离总线控制器越近,优先级越高;优点是查询有优先级固定,结构简单;缺点是对硬件电路敏感,且优先级不能改变,优先级低的会饿死
2.计数器定时:总线上多个设备通过总线请求信号BR,发出请求,中央仲裁器接收到请求信号后,在总线忙信号BS为“0”的情况下,让计数器开始计数,计数值通过一组地址线发往各设备.每个设备有一个地址判别电路,如果地址线上的计数值与总线请求设备地址一致,则该设备对BS线置“1”,表示该设备获得了总线使用权,同时中止计数查询;优点是优先级可以改变;缺点是增加控制线数;若从上次计数终止的地方开始,则每个设备使用总线机会相等
3.独立请求方式:每个连接到总线的设备都有一组单独的总线请求信号BRi与总线授权信号BGi.每个设备请求使用总线时,它们各自发出自己的总线请求信号.中央仲裁器中设置了一个专门的排队电路,由它根据一定的优先次序决定优先响应哪个设备的请求,然后给该设备总线授权信号BGi;优点是响应速度快,总线允许信号直接从控制器发送到设备,优先级控制灵活;缺点是控制线数过多(2n+1根)
3种仲裁方式的比较
6.2.2 分布仲裁方式
同集中式仲裁相比,分布式仲裁不需要中央仲裁器,而是让各个主设备功能模块都有自己的仲裁号和仲裁电路.需要使用总线时,各个设备的功能模块将自己唯一的仲裁号发送到共享的总线上,各自的仲裁电路再将从仲裁总线上获得的仲裁号和自己的仲裁号相对比,获胜的仲裁号将保留在仲裁总线上,相应设备的总线请求获得响应
6.3 总线操作与定时
6.3.1 总线传输的4个阶段
申请分配阶段——寻址阶段——传输阶段——结束阶段
6.3.2 同步定时方式
系统采用一个统一的时钟信号来协调发送和接收双方传送定时关系;优点是速度快,具有较高的传输速率,总线逻辑控制简单;缺点是主从设备是强制性同步,不能及时进行数据通信有效性检查,可靠性差;适用于总线长短较短及总线所接部件的存取时间比较接近的系统
6.3.3 异步定时方式
依靠双方相互制约的“握手”信号来实现定时控制;优点是总线周期长度可变,能保证两个速度相差较大的部件或设备之间可靠进行信息交换,自动适应时间的配合;缺点是比同步方式慢
根据“请求”和“回答”信号撤销是否互锁,异步定时方式分为:
(1)不互锁方式:主设备发出请求信号,不必等到从设备的回答信号,而是经过一段时间自动撤销请求信号,同理,从设备也是自动撤销回答信号
(2)半互锁方式:主设备发送请求信号,必须等到从设备回答信号后,才撤销请求信号;而从设备发出回答信号后,过段时间自动撤销,不存在互锁
(3)全互锁方式:必须等待对方
6.4 总线标准
6.4.1 常用的总线标准
1.ISA总线:最早出现在微型计算机上总线
2.EISA总线:为配合32位CPU而设计,完全兼容ISA
3.VESA总线:计算机局部总线,针对多媒体PC要求高速传送活动图像的大量数据而产生
4.PCI总线:专为高度集成的外围设备部件、扩充插板、处理器/存储器系统而设计的,显卡、声卡等,是局部总线
5.PCI-Express总线
6.AGP总线:视频接口标准,专用于连接主存和图形存储器,属于局部总线
7.USB:通用串行总线(一次传送一位数据),连接外部IO设备,属于设备总线,即插即用,热插拔
8.IDE总线:硬盘和光驱通过IDE接口与主板连接
9.SATA:基于行业标准的串行硬件驱动器接口
局部总线:VESA、PCI、AGP
第7章 IO系统
7.1 IO系统的基本概念
7.1.1 IO系统
外部设备(包括输入输出设备及外存)、接口、输入设备、输出设备、外存
(1)IO软件:采用IO指令和通道指令实现CPU和IO设备的信息交换
(2)IO硬件:包括外部设备、设备控制器和接口、IO总线等,通过设备控制器来控制IO设备具体动作,通过IO接口与主机相连
7.2 外部设备:除主机以外
7.2.1 输入设备:键盘、鼠标
7.2.2 输出设备
1.显示器
(1)分类:阴极射线(CRT)显示器、液晶显示器、LED显示器;字符、图形、图像显示器
(2)屏幕大小:主对角线长度,英寸
(3)分辨率:像素个数
(4)灰度级:黑白中亮暗差别,彩色中颜色;256级=2^8,即8位
(5)刷新:显示器刷新频率在60~120Hz
(6)显示存储器VRAM:VRAM=分辨率X灰度级位数,VRAM中存放字符ASCII
2.打印机
(1)针式打印机:擅长“多层复写打印”,实现各种票据打印,打印分辨率和速度不高
(2)喷墨式打印:速度快,噪声小,防水性差
(3)激光打印机
7.2.3 外存储器(主要磁表面存储器)
1.磁盘存储器
(1)存储区域:含有若干个记录面,每个记录面划分为若干磁道,每个磁道又分为若干扇区(块),扇区是读写最小单位
①磁头数:记录面数,一面对一头
②柱面数:硬盘每一面有多少磁道
③扇区数:表示每一条磁道上有多少个扇区
④硬盘存储器由磁盘驱动器、磁盘控制器和盘片组成
(2)磁盘性能标准
①磁盘容量:所能存储字节总数,分为格式化和非格式化
②记录密度:单位面上存储二进制信息容量
③平均存取时间:平均寻道时间、平均等待时间和传输时间之和
④数据传输率:v=rN,r为磁盘转速,N为每条磁道上字节数
⑤磁盘地址:主机向磁盘控制器发送寻址信息,由驱动器号+柱面号+盘面号+扇区号
硬盘读写操作是串行的,某一时刻只能读或者写
2.磁盘阵列(RAID):将多个独立物理磁盘组成一个独立逻辑盘;同时使用多个磁盘,提高传输率,通过镜像功能,提高安全性,通过数据校验,提供容错能力
3.光盘存储器:CD-ROM只读光盘;CD-R只可写入一次;CD-RW可读可写;DVD-ROM高容量CD-ROM
4.固态硬盘:采用高性能Flash Memory记录数据
7.3 IO接口(IO控制器)
7.3.1 接口的功能
(1)实现主机与外设通信联络控控制
(2)进行地址译码和设备选择
(3)实现数据缓冲
(4)信号格式的转换
(5)传送控制命令和状态信息
7.3.2 IO接口的基本结构
(1)内部接口:与内存、CPU相连,只能并行传输
(2)外部接口:可以串行或并行
7.3.3 IO端口及其编址
IO端口是指接口电路中被CPU直接访问的寄存器,若干个端口和逻辑电路组成接口,CPU对数据端口读写,对状态端口只能读,对控制端口只能写
IO端口编址方式
(1)统一编址(存储器映射方式):把IO端口当做存储器单元进行地址分配,CPU用统一的访存指令就可以访问IO端口;存储单元和IO设备靠不同的地址码来区分;优点是不需要专门的输入输出指令,灵活方便;缺点是占用存储地址,使内存容量变小,速度慢
(2)独立编址(IO映射方式):IO端口地址与存储器地址无关,CPU需要设置专门的输入输出指令端口;存储单元和IO设备靠不同的指令来区分
7.4 IO方式
7.4.1 程序查询方式
1.设置一个数据缓冲寄存器(数据端口)和设备状态寄存器(状态端口),主机进行IO操作时,发出询问信号,读取设备状态;CPU不断读取状态信息,CPU处于循环检查状态
2.CPU一旦启动IO,必须停止现行程序的运行,CPU有踏步等待的现象,CPU与IO串行工作,要花费很多时间用于查询与等待,效率低
7.4.2 程序中断方式
1.中断基本概念:CPU转去处理异常或特殊的请求,处理完后自动返回断点处
2.中断的作用:(1)实现CPU与IO设备并行工作(2)处理硬件故障与软件错误(3)实现人机交互(4)实现多道程序,分时操作(5)实时处理需要借助中断系统实现快速响应(6)实现应用程序和操作系统的切换——软中断(7)多处理器系统各处理器之间交换切换
3.程序中断方式工作流程
(1)中断请求:指中断源向CPU发送中断请求信号;分为外中断(IO中断、时钟中断等)和内中断(程序运算引起的各种错误)、硬件中断(属外中断)和软件中断(属内中断)、非屏蔽中断(属硬件中断)和可屏蔽中断(属硬件中断)
(2)中断判优:如故障中断优先级最高,其次是IO中断;中断判优硬件实现是通过硬件排队器实现,软件实现是通过查询程序实现;一般来说:硬件故障中断属于最高级,其次是软件,非屏蔽优于可屏蔽,DMA优于IO,高速设备优于低速,输入优于输出,实时设备优于普通设备
(3)CPU响应中断条件:中断源发出中断请求、CPU允许中断及开中断、一条指令已经完成,并且没有更急迫的任务
(4)中断隐指令:不允许也不可能为用户使用的特殊指令,所完成的操作如下:
①关中断:保护中断现场,不被打断
②保存断点:即程序计数器PC的内容
③引出中断服务程序:取出中断服务程序入口地址并传送给程序计数器PC
(5)中断向量:每个中断服务程序都有一个入口地址(即中断向量),CPU必须找到这个入口地址,即中断向量,中断向量地址是中断服务程序入口地址的地址
(6)中断处理过程:关中断-保存断点-引出中断服务程序-保存现场和屏蔽字-开中断(允许更高级中断得到请求实现中断嵌套)-执行中断服务程序-关中断(保证恢复现场和屏蔽字不被中断)-恢复现场和屏蔽字-开中断、中断返回
3.多重中断和中断屏蔽技术
CPU要具有多重中断的功能,要满足:中断服务程序中提前设置中断指令,优先级高的中断源有权中断优先级低的中断源;每个中断源有一个屏蔽触发器,1表示屏蔽中断源请求,所有屏蔽字组合构成屏蔽字触发器,屏蔽字寄存器内容称为屏蔽字
7.4.3 DMA方式
完全由硬件进行成组传送的控制方式,DMA在外存与内存之间开辟一条“直接数据通道”,适用于磁盘机磁带机等高速设备大量数据传送,硬件开销比较大,DMA中,中断作用仅限于故障和正常传送结束时的处理
1.DMA控制器组成:在DMA方式中,对数据传送过程进行控制的硬件称为DMA控制器(DMA接口)。其主要功能有:
(1)接受外设发出的DMA请求,并向CPU发出总线请求
(2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
(3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数
(4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
(5)向CPU报告DMA操作的结束。
2.下图给出了一个简单的DMA控制器:
(1)主存地址计数器:存放要交换数据的主存地址
(2)传送长度计数器:用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发中断请求信号
(3)数据缓冲寄存器:用于暂存每次传送的数据
(4)DMA请求触发器:每当I/O设备准备好数据后给出一个控制信号,使DMA请求触发器置位
(5)“控制/状态”逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步
(6)中断机构:当一个数据块传送完毕后触发中断机构,向CPU提出中断请求
DMA必须具有控制系统总线的功能
3.DMA传送过程
(1)预处理:由CPU完成一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到IO设备准备好发送的数据(输入情况)或接收的数据(输出情况)时,IO设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求,用以传输数据
(2)数据传送:DMA的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送(如硬盘),DMA占用总线后的数据输入和输出操作都是通过循环来实现的。需要指出的是,这一循环也是由DMA控制器(而不是通过CPU执行程序)实现的,也就是说,数据传送阶段是完全由DMA(硬件)来控制的
(3)后处理:DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转入诊断程序)和决定是否继续使用DMA传送其他数据块等。DMA的传送流程如图所示:
4.DMA和中断方式的区别
(1)中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU的任何资源
(2)对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期之后);而对DMA请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期之后均可),只要CPU不占用总线就可以被响应
(3)中断传送过程需要CPU的干预;而DMA传送过程不需要CPU的干预,故数据传输速率
非常高,适合于高速外设的成组数据传送
(4)DMA请求的优先级高于中断请求
(5)中断方式具有对异常事件的处理能力,而DMA方式仅局限于传送数据块的IO操作
(6)从数据传送来看,中断方式靠程序传送,DMA方式靠硬件传送
注:(1)中断服务程序内的执行顺序:保护现场-中断事件处理-恢复现场-开中断-中断返回