第1章 计算机系统概述
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个存储单元,记录为10个K,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.主存容量:可以用字节来衡量,也可以用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,二进制三位数变为一组 (3)16进制:4位二进制对应16进制 2.不同进制之间的相互转换 (1)2进制转化为8进制或16进制:以小数点为界,将每3位(或4位)转化为8进制(或16进制);8进制或16进制转化为2进制:将每个进制转化为3位2进制(或4位);16进制转化为8进制,可以先将16进制转化为2进制,再将2进制转化为8进制 (2)任意进制转化为10进制:将任意进制数字乘以其权值,再加乘积 (3)10进制转化为任意进制:采用基数乘除法,对于整数部分除基数取余(第一个获得的余数最低,商为0结束),对于小数部分乘基数取整(第一个获得的整数最高) 注意:B(2)、O(8)、D(10)、H(16) 并非每个十进制小数都能表示为二进制小数,如0.但任何二进制小数都可以表示为十进制小数 2.1.2 真值和机器数 符号和值一起编码,0表示正,1表示负,这样的数字叫机器数 2.1.3 BCD码 二进制编码的十进制数通常用四位二进制数来表示一位十进制数的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。检测错误(或奇数位错误),但不能确定错误位置或偶数位错误。奇数校准码:整个校准码中的一个数为奇数;偶数校准码:整个校准码中的一个数为偶数。常用于检查存储数据或传输数据 注:如果采用偶校验,收到的数据为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代码,生成多项模型除法,若余数为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章 存储系统
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章 指令系统
4.1 指令格式:指令是计算机运行最小功能单位 4.1.1 指令的基本格式
- 一条指令包括:操作码(执行什么性质操作和具有什么功能)+地址码(给出指令或数据的地址,包括参加运算的操作数地址、运算结果保存地址、程序转移地址等) 注:(1)指令的地址由PC给出,而指令地址码给出的是操作数的地址 (2)程序控制类指令功能是改变程序执行顺序 (3)中断隐指令是硬件完成的,并不存在 2.指令长度:取决于操作码长度、操作数地址码长度和操作数地址个数 指令格式 1.零地址指令:OP (1)不需要操作数的指令,如空操作、停机、关中断等 (2)用在堆栈计算机中,将参与操作的两个操作数从栈顶和次栈顶弹出,运算结果压栈 2.一地址指令:OP+A1 (1)只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址OP(A1)->A1,如加1、减1、求反、求补 (2)隐含约定目的地址的双操作数指令,按A1取源操作数,指令可隐含约定另一个操作数由ACC提供,结果存回ACC,(ACC)OP(A1)->ACC;若指令字长32位,操作码占8位,1地址码占24位,可寻址范围为2^24=16M 3.二地址指令:OP+A1+A2 (A1)OP(A2)->A1;用于一般算术逻辑操作 4.三地址指令:OP+A1+A2+A3 (A1)OP(A2)->A3;若地址字段均为主存地址,则完成一次三地址需要四次访存(取指1次,操作数2次,存结果1次) 5.四地址指令:OP+A1+A2+A3+A4 (A1)OP(A2)->A3,A4=下一条指令地址 4.1.2 定长操作码指令格式:便于简化硬件设计 4.1.3 扩展操作码指令格式:保持字长不变而增加指令数量;增加指令译码和分析的难度 4.2 指令寻址方式 寻找指令或操作数有效地址的方式,也就是指确定本条指令的数据地址和下一条将要执行指令地址的方式,包括指令寻址和数据寻址 指令地址码字段是形式地址(A),用形式地址结合寻址方式,可以计算有效地址(EA) 4.2.1 指令寻址和数据寻址 1.指令寻址:寻找下一条指令 (1)顺序寻址:程序计数器+1 (2)跳跃寻址:通过转移类指令实现,跳跃结果是当前指令修改PC值,所以下一条指令仍然通过PC给出 2.数据寻址:寻找操作数 4.2.2 常见数据寻址方式 1.隐含寻址:不是明显的给出操作数的地址,而是指令中隐含着操作数的地址;如单地址指令格式,第二个操作数是累加器ACC提供的,所以ACC对于单地址指令格式来说就是隐含地址;有利于缩短指令字长,但需增加硬件
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指令才能对操作数存取访问
第五章 CPU
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)中断处理过程:关中断-保存断点-引出中断服务程序-保存现场和屏蔽字-开中断(允许更高级中断得