导图社区 计算机考研408王道计算机组成原理
整理自王道视频课及教材书,蓝色为作者不会的内容,黄色为重要内容,每章的LL为王道教科书每章的提示,作者已上岸北京大学,有疑问可私信。
编辑于2024-03-01 01:29:34计算机组成
计算机系统概述
LL
1.2 计算机系统的层次结构 ● 视频《1.2_2_各个硬件的工作原理》中,讲了一个程序运行的例子,这个例子非常重要,会贯穿整门课程,因此希望大家能对照课件,静下心来尽量理解这个例子。记住,你只需要 try your best 即可,第一次学无法完全掌握很正常。 ● 23版王道书中, “1.2.5——3. 程序执行过程的描述” 涉及到 Linux 命令行相关的知识,跨考的同学大概率看不懂,没关系,不重要,别气馁。 ● 本节的课后习题中,有几个题目会涉及后序章节的知识,包括 7~11、20,做不出来很正常。遇到不太懂的题目,记得看看习题视频讲解。 1.3 计算机的性能指标 ● 本节是历年命题的重点,通常在小题中考察,也会作为大题的一个小问进行考察。 ● 计量单位 K、M、G、T、P、E、Z 之间是乘以103 的递增关系。 ● 本节大题 2、3 风格与408大题较为接近,也建议大家尽量做一做。
冯诺依曼计算机特点
存储程序 计算机由运算器、控制器、存储器、输入输出设备组成 指令和数据以同等地位存于存储器,可按地址寻访 控制器应能自动取出指令来执行 指令和数据用二进制表示,指令由操作码和地址码组成 以运算器为中心,现代以存储器为中心 任何计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行,一旦程序被启动,计算机应能在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务
计算机系统层次结构
硬件
现代计算机
主存储器与CPU
CPU区分指令和数据的依据:指令周期的不同阶段
软件
系统软件:保证计算机系统高效、正确运行的基础软件,作为系统资源提供给用户使用 eg:操作系统OS、数据库管理系统DBMS、语言处理程序 应用软件:用户为解决某个应用领域中的各类问题而编制的程序
三个级别的语言
机器语言:所有系列都是0/1序列,书写阅读困难,增删指令不灵活 汇编语言:用助记符表示操作码/寄存器,标号表示位置,增删指令灵活,可读性比机器语言强,不需记忆指令编码,编写方便,但是编写复杂程序时程序很长,且在不同结构的机器上不能运行
层次结构
计算机系统的工作原理
存储程序工作方式
从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器
从源程序到可执行文件
预处理 编译 汇编 链接
计算机的性能指标
字长
又称机器字长,是CPU进行一次整数运算所能处理的二进制数据的位数,等于运算器位数和通用寄存器宽度 指令字长:一个指令字中包含的二进制代码的位数 存储字长:一个存储单元存储的二进制代码的长度=MDR位数 必须是字节的整数倍,指令字长一般取存储字长的整数倍,需要x个访存周期来取出一条指令,若指令字长等于存储字长,则取指周期等于机器周期
数据通路带宽
即数据字长,外部数据总线一次所能并行传送信息的位数,与CPU内部的寄存器大小可能不同
主存容量
字数*字长
运算速度
吞吐量
系统在单位时间内处理请求的数量,取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备 取决于主存的存取周期
响应时间
从用户向计算机发送一个请求,到系统对该请求作出响应并获得它所需要的结果的等待时间
主频/时钟频率
机器内部主时钟的频率,是衡量机器速度的重要参数=1/CPU时钟周期
CPU时钟周期
通常为节拍脉冲或T周期,即主频的倒数,是CPU中最小的时间单位,执行指令的每个动作至少需要1个时钟周期
CPI
执行一条指令所需的时钟周期数
CPU执行时间
CPU时钟周期数/主频=指令条数*CPI/主频
IPS
每秒执行多少条指令=主频/平均CPI,MIPS每秒执行多少百万条指令
FLOPS
每秒执行多少次浮点运算 MFLOPS:106 GFLOPS:109 TFLOPS:1012 PFLOPS:10 15 E:18 Z:21
基准程序
跑分软件,其语句具有频度的差异,因此运行结果不能完全说明问题
数据的表示和运算
LL
第二章 数据的表示和运算 本章是计组的劝退章节,内容学起来难,但考试题目形式比较固定。因此,第一次学习的同学,哪怕觉得难也不要放弃,通过后几轮刷题和复习,对本章的理解会逐渐加深。 本章也是2022年新大纲中改动最大的一个章节。 本章视频讲解顺序与王道书的讲解顺序不太一样,建议所有人都按照“伴学营打卡表”的顺序来看视频、看书、做题。 2.1 数制与编码 ● 本节内容一定要看最新版视频,由于新大纲改版,本节配套的讲解视频、讲解思路与往年相比有较大改动。 ● 王道书和大学教材讲到原码、补码时,使用了数学化的语言来讲解,不用过于深究,不是重点。计组这门课在考试中只考察应用,不考数学原理。 ● 对补码的数学原理感兴趣的同学,可以看看去年的视频。 ● 本节的最新视频课程中,会穿插讲解2.2相关的知识,不要觉得奇怪。 2.2 运算方法和运算电路 ● 本节内容较多,一天的时间可能学不完。建议大家按照“伴学营打卡表”推荐的顺序做题,看一部分,做几道题。不建议一口气全部看完再去做题,那样一定消化不了。 ● 对于没学过《数字电路》的同学,串行加法器、并行加法器的底层原理一定很难理解。不过没关系,考试不可能考太底层的电路设计。 ● 带标志位的加法器是考试重点,也是经常结合第四章考察的重点,需要认真理解。OF、SF、ZF、CF 标志位的生成和作用一定要掌握。 ● 乘法、除法的原理细节不容易理解,但考察频率较低,第一次学如果觉得难,也不建议花太多时间。第一轮学习记不住细节没关系,你只需要先建立起这个认知:在计算机硬件层面,无论是乘法还是除法,都是通过 加法、减法、移位运算 来实现的。 ● 乘法、除法的视频课程,之后可能会考虑重新录制(简化理解,更偏向应试) ● C语言中各种数据类型的存储和相互转换、数据的存储和排列,这两部分内容很重要,经常结合大题考察,需认真理解。 2.3 浮点数的表示和运算 ● 本节又是一块硬骨头,没什么好说的,学吧。第一次学难免让人怀疑人生,保持平常心尽力去学尽力去做题就好。第一次学习不建议死磕细节,得配合做题来体会这个部分怎么考。 ● 但很多同学的反馈是:“第一次学感觉很复杂,但第二轮回来复习感觉也没那么难”。原因是,本节内容虽难,但在经过做题训练之后,大家都会更清晰的认识到 “哪些地方是考试重点”、““哪些地方应该是我重点关注的”。
数制与编码
进位计数制及其相互转换
十进制转换为任意进制数:整数除基取余法、小数乘积取余法
BCD码
8421码,两个8421码相加之和小于等于9(1001)不需要修正,大于等于10(1010~10010)需要加6修正
余3码:8421码+0011
2421码:0~4的二进制数中最高位为0,5~9的数最高位为1
定/浮点数的表示
定点小数与定点整数
0的扩展位置不同
定点数的编码表示
机器数
原码
缺陷:符号位不能参与运算,加减复杂,0的表示不唯一
反码
整数不变,负数的数值位取反
补码
正数不变,负数的反码末位+1
补码转原码:符号位为0,正数 符号位为1,负数,从右往左数第一个1的左边的所有数值位取反 求补码真值:
减法:将减法转化为加法,求其负值的补码用 1.全部位按位取反、末位+1 ;2.从右往左第一个1的左边全部位取反
优点:符号位参与运算,按位相加,向更高位进位
移码
补码的基础上将符号位取反,移码只能用于表示整数
各种码的比较
整数的表示
无符号整数:表示范围0~255 减法:被减数不变,减数全部位按位取反、末位+1。从最低位开始,按位相加向更高位进位
运算方法与运算电路
基本运算部件
定点数的移位运算
算数移位
原码的算数移位:符号位保持不变,仅对数值位进行移位 右移高位补0低位舍弃,若舍弃位为0则相当于➗2,若舍弃位不为0,则会丢失精度 左移低位补0高位舍弃,若舍弃位为0则相当于✖️2,若舍弃位不为0则会出现严重误差
反码的算数移位:正数的原码反码相同故移位运算相同 负数的反码数值位与原码相反,故右移则高位补1低位舍弃,左移则低位补1高位舍弃
补码的算数移位:正数的补码与原码相同故移位运算相同 负数的补码=反码末位+1,导致反码最右边几个连续的1都因进位而变为0,直到进位碰到第一个0为止,故负数补码中最右边的1及其右边同反码,它的左边同反码 即右移高位补1低位舍弃;左移低位补0高位舍弃
逻辑移位
将操作数视为无符号数,左移时高位丢弃低位补0;右移时低位丢弃高位补0
循环移位
带进位标志位CF的大循环
移出的位放到进位位,原进位位补上空缺
不带进位标志位的小循环
用移出的位补上空缺
定点数的加减运算
定点数的乘除运算
原码乘法
补码乘法
原码除法
补码除法
浮点数的表示与运算
表示
强制类型转换
加减
IEEE754
非数值数据的编码表示
ASCII
0: 011 0000 9: 011 1001 SP(空格): 010 0000 CR(回车): 000 1101
汉字及国际字符的编码表示
存储系统
LL
第三章 存储系统 本章是重点里的重点,大题小题的考频都很高。本章常结合操作系统一起考察,是408里跨学科考察最多的一章。王道书3.1~3.4主要考小题;3.5、3.6经常考大题 3.1 存储系统概述 ● 比较简单的一个小节,概念较多,重点记忆“存储器的性能指标”如何计算 ● 本节两个大题建议做一做,是很有代表性的考法 3.2 主存储器 ● SRAM、DRAM芯片的底层硬件原理不用过度深究,只需要了解它们之间有什么特性区别即可。王道书“3.2.1_3.DRAM芯片的读写周期” 部分过于底层,讲了电气特性,简单了解即可,计组课程里不用深究。 ● 只读存储器ROM事实上已经从大纲里删除,今年大家只需要简要了解即可,不用花时间记忆。王道书里依然坚持讲ROM是因为固态硬盘SSD、Flash存储器本质上也是一种ROM,因此也决定了固态硬盘和Flash存储器“读快写慢”的重要特性。 ● 要理解主存储器的基本组成,需要知道每个寄存器作用,主存内部各个基本部件之间是如何相互协调工作的,以及CPU是如何与主存交互的 ● 23版王道书“3.2.4 多模块存储器” 建议放在“3.3 主存储器与CPU的连接”之后学习,因为我们需要先了解“选通”的概念和原理。因此视频课程将 “多模块存储器”放在了3.3部分。 3.3 主存储器与CPU的连接 ● 本节内容通常考察小题,目前408未出现过大题 ● 视频课程中介绍了双端口RAM、多模块存储器。前者(双端口RAM)已从408大纲删除,自命题考生仍需学习,但408考生简单了解即可。 3.4 外部存储器 ● “磁盘存储器”是操作系统和计组都会讲的考点,相对来说操作系统讲的会更详细深入。因此,如果在计组这边第一次学习磁盘存储器,感觉理解不透也没关系,学完操作系统再回来看会容易很多 ● “固态硬盘”是去年新增的考点,个人认为今年极有可能考一个选择题,重点注意固态硬盘的读写特性(读快写慢、随机读写、写前需擦除、擦除寿命有限)以及负载均衡技术。大家只要能理解课件内那张思维导图,做选择题一定没问题。 3.5 高速缓冲存储器 ● 大题高频考点,常与操作系统第三章结合考察,综合性较高,但大题题型套路相对固定 ● 强化阶段会通过一场直播帮助大家串联操作系统第三章与Cache的相关知识 ● 适合在第一轮做的大题已在学习进度打卡表中说明,未写进打卡表的题目中含有后序章节内容,不建议在第一轮做 3.6 虚拟存储器 ● 本节内容和操作系统第三章高度重合。计组这边建议先快速看看书,有个大概的了解即可,等学完操作系统第三章,第二轮复习时再回来仔细研究
存储器概述
分类
按层次
主存/内存:存放计算机运行期间所需的程序和数据,CPU可直接访问,可与Cache或辅存交换数据,容量小存取速度快价格高
辅存/外存:存放当前暂时不用的程序和数据及一些需要永久性保留的信息,不可被CPU直接访问,容量大存取速度慢单位成本低
高速缓冲存储器cache:存放当前CPU经常使用的指令和数据,存取速度与CPU匹配,容量小,价格高
按介质
磁表面存储器:磁盘、磁带,以磁性材料存储信息
磁芯存储器
半导体存储器:MOS存储器、双极型存储器
光存储器:光盘,以光介质存储信息
按存取方式
随机存储器RAM:可随机存取,与存储单元所在物理位置无关,读写方便使用灵活,主要用作主存或Cache,易失性
只读存储器ROM:只能随机读出不能写入,断电保存,存放固定不变的程序、常数和汉字字库等,非易失性
串行访问存储器 (存取时间与物理位置有关)
顺序存取存储器SAM(磁带):按顺序存取,存取时间长短与物理位置有关,存取速度慢
直接存取存储器DAM(磁盘、光盘):存取信息时先寻找整个存储器中某个小区域,再在小区域内顺序查找
相联存储器CAM
可以按照内容检索到存储位置进行读写,如“快表”
按信息的可更改性
读写存储器
可读可写,磁盘、内存、Cache
只读存储器
CD-ROM、蓝光光碟
按信息的可保存性
易失性存储器
断电后存储信息消失,主存、Cache
非易失性存储器
断电后存储信息保存,磁盘、光盘
破坏性读出
信息读出后,原存储信息被破坏,DRAM芯片
非破坏性读出
信息读出后,原存储信息不被破坏,SRAM芯片、磁盘、光盘
性能指标
存储容量
存储字数*字长
单位成本
每比特位价格=总成本/总容量
存储速度
数据传输率=数据的宽度/存储周期
层次结构
主存-辅存:实现虚拟存储系统,解决了主存容量不够的问题 Cache-主存:解决了主存与CPU速度不匹配的问题 主存和Cache之间的数据调动由硬件自动完成,对所有程序员透明 主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员透明
主存储器
基本组成
MAR、MDR、存储体
SRAM芯片和DRAM芯片
SRAM:存储元是双稳态触发器(六晶体管MOS),非破坏性读出 读取速度快、集成度低、功耗大、价格昂贵、用于Cache
DRAM
存储元:电路中栅极电容上的电荷存储信息,破坏性读出 易集成、价格低、容量大、功耗低,读取速度慢,用于大容量的主存
刷新
只读存储器
MROM:掩模式只读存储器,芯片生产时写入信息,任何人不可重写,可靠性高、灵活性差、生产周期长、只适合批量定制
PROM:可编程只读存储器,用户写入信息,写入后不可更改
EPROM:可擦除可编程只读存储器,用户写入信息,可擦除数据,但编程次数有限,写入时间过长
UVEPROM紫外线擦除
EEPROM:电擦除可编程只读存储器
Flash Memory:闪存存储器(U盘、SD卡),断电后可保存信息,可多次快速擦除重写,写的速度慢于读的速度
SSD:固态硬盘,用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元芯片组成,保留了Flash存储器长期保存信息、快速擦除与重写的特性,读写速度快、低功耗,价格高
EPROM、Flash Memory、SSD可以写,闪存的写速度一般比读速度更慢,因为写之前要先擦除,很多ROM也具有随机存取的特性
多模块存储器
单体多字存储器
存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。一次并行读出m个字,地址必须顺序排列并处于同一存储单元 在一个存取周期内,从同一地址取出m条指令,然后将指令逐条送至CPU执行,即每隔1/m存取周期,CPU向主存取一条指令,提高了单体存储器的工作速度 缺点:指令和数据在主存内必须是连续存放的,一旦遇到转移指令或操作数不能连续存放,这种方法的效果就不明显,灵活性差
多体并行存储器
每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器,它们既能并行工作,又能交叉工作
高位交叉编址
高位地址表示体号,低位地址为体内地址
低位交叉编址
低位地址为体号,高位地址为体内地址 存取周期为T,存取时间/总线传输周期为r,为了使流水线不间断,应保证模块数m>=T/r
主存储器与CPU的连接(不会)
主存容量扩展
位扩展
将多个存储芯片的地址端、片选端和读写控制端相应并联,数据端分别引出 仅采用位扩展时,各芯片连接地址线的方式相同,但连接数据线的方式不同 CS要连接到所有芯片
字扩展
线选法:n条线对应n个选片信号,电路简单,地址空间不连续
译码片选法:n条线对应2的n次方个选片信号,电路复杂,地址空间可连续
字位同时扩展
各芯片连接地址线的方式相同,连接数据线的方式不同,需要通过片选信号CS或采用译码器设计连接到相应的芯片
存储芯片的地址分配和片选
线选法:某地址线信息为0时,就选中与之对应的存储芯片 优点:不需要地址译码器,线路简单 缺点:地址空间不连续,选片的地址线必须分时为低电平,不能充分利用存储空间,造成地址资源的浪费
译码片选法:
译码器
外部存储器
磁盘存储器
磁盘存储器
优点
存储容量大,位价格低 记录介质可以重复使用 记录信息可以长期保存而不丢失,甚至可以脱机存档 非破坏性读出,读出时不需要再生
缺点
存取速度慢、机械结构复杂、对工作环境要求高
组成
存储区域
一块磁盘含有若干个记录面,每个记录面划分为若干条磁道,而每条磁道又划分为若干个扇区,扇区(块)是磁盘读写的最小单位,按块存取
组成
性能指标
磁盘地址
磁盘工作过程
磁盘阵列
RAID通过同时使用多个磁盘,提高了传输率,通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,可以提高安全可靠性;通过数据校验,可以提供容错能力
固态硬盘
高速缓冲存储器
局部性原理
时间局部性是指在最近的未来要用到的信息,很可能是现在正在使用的信息
空间局部性是指在最近的未来要用到的信息、指令和数据,很可能与现在正在使用的信息在存储空间上是邻近的
基于局部性原理,不难想到可以把CPU目前访问的地址周围的部分数据放到Cache中,提高程序执行速度
基本工作原理
将主存的存储空间分块,主存与Cache之间以块为单位进行数据交换 主存地址可拆分为(主存块号,块内地址)的形式
Cache和主存的映射方式
直接映射
主存中的每一块只能装入Cache中的唯一位置,
全相联映射
主存中的每一块可以装入Cache中的任何位置
组相联映射
三种对比
Cache中主存块的替换算法
随机算法
随机选择一块替换,未考虑局部性原理,命中率低,实际效果很不稳定
先进先出算法FIFO
若Cache已满,则替换最先被调入cache的块,但也未考虑局部性原理
近期最少使用算法LRU
为每个Cache设置一个计数器,记录每个Cache块已经有多久没被访问,当Cache满后替换计数器最大的 基于局部性原理,实际运行效果优秀,cache命中率很高
最不经常使用算法LFU
为每一个Cache块设置一个计数器,用于记录每个Cache块被访问过几次,当Cache满后替换计数器最小的 but:曾经被经常访问的主存块在未来不一定会用到(如:微信视频聊天相关的块)实际运行效果不好
Cache写策略
写命中
写回法
全写法
写不命中
写分配法
非写分配法
多级Cache
各级Cache之间常采用全写法+非写分配法 Cache-主存之间常采用写回法+写分配法 现代计算机常采用多级Cache,离CPU越近,速度越快,容量越小 离CPU越远,速度越慢,容量越大
虚拟存储器
基本概念
主存和辅存共同构成虚拟存储器,虚拟存储器将主存或辅存的地址空间统一编址,形成一个庞大的地址空间
页式虚拟存储器
页表
快表TLB
CPU访存过程
存储系统
具有TLB和Cache的多级存储系统
段式虚拟存储器
按程序的逻辑结构划分,长度因程序而异,虚拟地址分为段号和段内地址。段表是程序的逻辑段和在主存中存放位置的对照表,从段表中读出该段在主存中的起始地址,与段内地址(偏移量)相加
优点
段的分界与程序的自然分界相对应,因而具有逻辑独立性,易于编译、管理、修改和保护,也便于多道程序的共享
缺点
段长度可变,分配空间不便,容易在段间留下碎片,不好利用造成浪费
段页式虚拟存储器
虚拟存储器与Cache的比较
相同
不同
Cache主要解决系统速度,虚拟存储器是为了解决主存容量
Cache全由硬件实现,是硬件存储器,对所有程序员透明;虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明但是对应用程序员透明
CPU速度为Cache的10倍,主存的速度为硬盘的100倍以上,虚拟存储器系统不命中时对系统性能影响更大
存储保护
指令系统
LL
第四章 指令系统 本章通常在小题中考察,在大题中可能作为题目条件,或者仅作为大题的某个小问来考察。理解本章(特别是4.1、4.2小节)对于读懂计组大题至关重要。 23版王道书的4.3部分(程序的机器级代码表示)是去年大纲新增的内容。由于涉及到汇编语言相关知识,因此该部分对跨考同学来说是一块硬骨头。但请大家放心,计组这门课不会深入考察汇编语言,你只需要有个大致的了解,能看懂题目里出现的汇编语言指令即可,不要求你具备手写汇编语言的能力。第一轮复习时,不建议花太多时间深究4.3,不妨在第二轮复习时结合往年大题来体会这部分的考察方式。 4.1 指令格式 ● 本节常在小题中考察,或者作为大题的一个小问考察 ● 本节难点是“扩展操作码指令格式”,需通过课后习题体会其考法 4.2 指令的寻址方式 ● 第四章最重要的一个小节,历年真题中,小题考察过9次,大题考察过5次,值得多花时间 ● 课后小题21题可在学完 4.3——选择语句的机器级表示 再回来做 ● 在学习进度打卡表中,为大家挑选了几个必做大题,需认真完成,有助于你深入理解各种寻址方式 4.3 程序的机器级代码表示 ● 本节是2022年大纲新增考点,但事实上,2017年、2019年就已考过。因此严格来说,这个考点不算全新考点。本科阶段没学过“汇编语言”的同学,建议先看视频、再看王道书,直接硬啃书可能很难理解。 ● 2017年、2019年的两个题目已收录在王道书4.3课后习题里,非常具有代表性。由于两个大题也考察了其他章节的知识,因此第一轮复习中可能会看不懂题目,这很正常,莫慌。强化阶段,我们会一起研究这两个题目。 ● 汇编语言指令需要能手写吗?——不需要。这门课是“计组”,而不是“汇编语言”,不要求你手写。只要你在题目里看见一条指令,能大致猜出其作用即可。大家可以在一张纸上把课本里的这些汇编指令分类抄下来,但不加注释,以后偶尔拿出来看一眼,看看能不能回忆起每条指令作用,如果回忆不起来,再回去课本里复习。 ● 条件转移指令的底层原理很重要,经常结合第二章“CF/SF/ZF/OF标志位的生成”来考察,在视频里会给大家详解介绍,需认真理解。 4.4 CISC和RISC的基本概念 ● 本节通常考小题,低频考点,重点理解两种指令集之间的区别即可 ● 随着第五章的学习,大家对CISC和RISC的理解会更具体,因此第一轮复习时对本节的一些知识点感觉比较模糊也没关系,第二轮再次复习效果会更好。
指令格式
地址码数目
零地址指令
1.不需要操作数,如空操作、停机、关中断 2.堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶
一地址指令
二地址指令
三地址指令
四地址指令
指令总长度固定不变,则地址码数量越多,寻址能力越差
指令长度
指令字长:一条指令的总长度
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数
存储字长:一个存储单元中的二进制代码位数
半字长指令、单字长指令、双字长指令——指令长度是机器字长的多少倍
操作类型
数据传送
LOAD:把存储器中的数据放到寄存器中 STORE:把寄存器中的数据放到存储器中
算数逻辑操作
算术:加减乘除、增/减1、求补、浮点运算、十进制运算 逻辑:与或非异或、位操作/测试/清除/求反
移位操作
算术/逻辑/循环移位
转移操作
无条件转移JMP 条件转移JZ:结果为0;JO:结果溢出;JC:结果有进位 调用和返回 CALL和RETURN 陷阱与陷阱指令
输入输出操作
CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)
扩展操作码指令格式
不允许短码是长码的前缀,短操作码不能与长操作码的前面部分的代码相同 各指令的操作码一定不能重复 通常对使用频率较高的指令分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间
与定长操作码的对比
指令的寻址方式
指令寻址
顺序寻址
PC+"1"自动形成下一条指令的地址
跳跃寻址
通过转移类指令实现,跳跃的地址分为绝对地址和相对地址
数据寻址
隐含寻址
不是明显的给出操作数的地址,在指令中隐含着操作数的地址 优点:有利于缩短指令字长 缺点:需增加存储操作数或隐含地址的硬件
立即寻址
形式地址A就是操作数本身,又称立即数,采用补码形式 取指令访存1次,执行指令不访存,共访存1次 优点:指令执行阶段不访问主存,指令执行时间最短 缺点:A的位数限制了立即数的范围,如A的位数为n,且立即数采用补码时,可表示的数据范围为-2n-1~2(n-1指数)-1
直接寻址
指令字中的形式地址A就是操作数的真实地址EA。 取指令访存1次执行指令访存1次共访存2次 优点:简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址
间接寻址
指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,即操作数地址的地址,EA=(A) 取指令访存1次,执行指令访存2次,共访存3次 优点:扩大寻址范围(有效地址EA的位数大于形式地址A的位数) 便于编制程序(用间接寻址可以方便地完成电子程序返回) 缺点:指令在执行阶段要多次访存(一次间接地址需两次访存,多次寻址需根据存储字的最高位确定几次访存)
寄存器寻址
在指令字中直接给出操作数所在的寄存器编号,即EA=Ri,其操作数在由Ri所指的寄存器内 取指令访存1次,执行指令访存0次,共访存1次 优点:指令在执行阶段不访问主存,只访问寄存器;指令字短且执行速度快,支持向量/矩阵运算 缺点:寄存器价格昂贵,计算机中寄存器个数有限
寄存器间接寻址
寄存器Ri中给出的不是操作数而是操作数所在主存单元的地址 取指令访存1次,执行指令访存1次,共访存2次 优点:比一般的间接寻址速度快,但指令的执行阶段需要访存
偏移寻址
基址寻址
以程序的起始存放地址作为起点,BR:base address register
优点:便于程序浮动,方便实现多道程序并发运行;可扩大寻址范围;用户不必考虑自己的程序存在主存的哪一空间区域,有利于多道程序设计,可用于编制浮动程序
基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定,在程序执行过程中,基址寄存器的内容不变,形式地址可变。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍应由操作系统确定
变址寻址
程序员自己决定从哪里作为起点,IX=index register
优点:在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序
相对寻址
以程序计数器PC所指地址作为起点
堆栈寻址
操作数存放在堆栈中,隐含使用堆栈指针SP作为操作数地址。堆栈是存储器中一块特定的按后进后出LIFO原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针SP
总结
程序的机器级代码表示
常用汇编指令介绍
相关寄存器
子主题
汇编指令格式
两种不同的汇编格式:AT&T格式和Intel格式 区别如下: 1.AT&T格式的指令只能用小写字母,而Intel格式的指令对大小写不敏感; 2.在AT&T格式中,第一个为源操作数第二个为目的操作数,方向从左到右合乎自然;在Intel格式中,第一个为目的操作数第二个为源操作数,方向从右到左 3.在AT&T格式中,寄存器需要加前缀%,立即数需要加前缀$;在Intel格式中,寄存器和立即数都不需要加前缀 4.在内存寻址方面,AT&T格式使用(和)而Intel格式使用[和] 5.在处理复杂寻址方式时,例如AT&T格式的内存操作数 6.在指定数据长度方面。AT&T格式指令操作码的后面紧跟一个字符,表示操作数大小
子主题
常用格式
数据传送指令
mov指令
push指令
pop指令
逻辑计算指令
add/sub指令
inc/dec指令
imul指令
idiv指令
and/or/xor指令
not指令
neg指令
shl/shr指令
控制流指令
jmp指令
jcondition指令
cmp/test指令
call/ret指令
过程调用的机器级表示
选择语句的机器级表示
条件码(标志位)
if语句
switch语句
循环语句的机器级表示
do-while循环
while循环
for循环
CISC和RISC
复杂指令系统计算机
一条指令完成一个复杂的基本功能 代表:x86架构,主要用于笔记本、台式机 80%的语句仅仅使用 处理机中20%的指令 比如设计一套能实现整数、矩阵加/减/乘运算的指令集 CISC的思路:除了提供整数的加减乘除指令之外,还提供矩阵的加法/减法/乘法指令 一条指令可以由一个专门的电路完成,有的复杂指令用纯硬件实现很困难 采用存储程序的设计思想,由一个比较通用的电路配合存储部件完成一条指令
精简指令系统计算机
RISC的思路:只提供整数的加减乘指令 一个指令一个电路,电路设计相对简单,功耗更低;并行、流水线
对比
中央处理器
LL
第五章 中央处理器 5.1 CPU的功能和基本结构 ● 考察选择题,了解每个寄存器的作用、各个寄存器是否可见? ● 除了寄存器之外,CPU内部其他部件的功能和作用 5.2 指令执行过程 ● 王道书 5.2.1 和 5.2.3 主要考察小题,难度不高,能搞定王道课后习题即可 ● 5.2.2 可能考察大题,需好好理解每个指令周期的数据流,而且还要能记住。基于每个指令周期要实现的数据流,大题可能会让你设计控制信号时序,所以 5.2.2 理解不透,这类大题就搞不定。 5.3 数据通路的功能和基本结构 ● 大题考察重点。指令执行的过程,本质上就是要想办法让数据在各个部件之间进行流动,每个部件完成相应的处理。数据通路就是让数据流动的“路”,要注意理解线路怎么连接、控制信号怎么设计、各个控制信号的先后顺序是什么。 ● 本节的第二个配套视频“5.3.2_数据通路-专用通路结构.mp4”在王道书里没有细讲,但仍然需要认真体会,考试大题也有可能考“专用通路结构”。你永远猜不透出题老头的心❤ 5.4 控制器的功能和工作原理 ● 考小题,频率不高 ● 对微程序控制器相关知识的考察要比硬布线控制器更高一些 5.5 异常和中断机构 ● “中断机构”是计组第七章会详细学习的内容,“异常”是OS第一章会详细学习的内容。 5.6 指令流水线 小题、大题都较常考,而且难度不低。 ● 学习进度打卡表中已经给大家指明看视频、看王道书、做题的顺序。前两个视频相关内容(对应王道书除5.6_2之外的部分)通常考选择题。因此这些内容虽然看起来很难且很杂,但是通常考的不深。 ● 第三个视频“5.6_3_五段式指令流水线”要认真理解,对应王道书的 5.6.2。这个部分常考大题,而且考的比较深入在视频中补充讲解了不同类型的指令,在每个分段所做的处理,想要拿高分的同学,是需要掌握的。 ● 王道书 5.6.2 的 1、2 部分,介绍了五段式流水线的电路细节,大家看看就好,不用深究,就像硬布线控制器一样,过于底层,不大可能考。重点结合视频学习王道书 5.6.2 的 3 部分即可。 ● 有能力的同学,建议把 5、6 两个大题(都是真题)做一下,尝试在第一轮就直接搞定
CPU的功能和基本结构
功能
指令控制
完成取指令、分析指令和执行指令的操作,即程序的顺序控制
操作控制
一条指令的功能往往是由若干操作信号的组合来实现的,CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作
时间控制
对各种操作加以时间上的控制,时间控制要为每条指令按时间顺序提供应有的控制信号
数据加工
对数据进行算术和逻辑运算
中断处理
对计算机运行过程中出现的异常情况和特殊请求进行处理
基本结构
运算器 对数据进行加工
算数逻辑单元ALU
进行算术/逻辑运算
暂存寄存器
暂存从主存读来的数据,不能放在通用寄存器中,对应用程序员是透明的
累加寄存器ACC
是通用寄存器,暂存ALU运算的结果信息,可以作为加法运算的一个输入端
通用寄存器组
如AX、BX、CX、DX、SP等,用于存放操作数(包括源操作数、目的操作数及中间结果)和各种地址信息等,SP是堆栈指针,用于指示栈顶的指针
程序状态字寄存器PSW
保留由算数逻辑运算指令或测试指令的结果而建立的各种状态信息,如溢出标志OF,符号标志SF,零标志ZF,进位标志CF等,PSW中的这些位参与并决定微操作的形成
移位器
对操作数或运算结果进行移位运算
计数器
控制乘除运算的操作步数
控制器 协调并控制计算机各部件执行程序的指令序列,包括取指、分析指令、执行指令
程序计数器
用于指出下一条指令在主存中的存放地址,CPU就是根据PC的内容去主存中取指令的,因程序中指令是顺序执行的,所以PC有自增功能
指令寄存器
用于保存当前正在执行的那条指令
指令译码器
仅对操作码字段进行译码,向控制器提供特定的操作信号
微操作信号发生器
根据IR的内容、PSW的内容及时序信号,产生控制整个计算机系统所需的各种控制信号,其结构有组合逻辑型和存储逻辑型
时序系统
用于产生各种时序信号,它们都是由统一时钟分频得到
存储器地址寄存器
用于存放所要访问的主存单元的地址
可见与否的寄存器
程序员可见
通用寄存器组、程序状态字寄存器PSW、程序计数器PC、ACC
程序员不可见
MAR、MDR、IR、暂存寄存器
指令执行过程
指令周期
指令周期:CPU从主存中每取出并执行一条指令所需的全部时间 指令周期包括若干机器周期,机器周期包含若干时钟周期(节拍、CPU时钟周期,是CPU操作的最基本单位)
指令周期的数据流
指令执行方案
单指令周期
对所有指令都选用相同的执行时间来完成 指令之间串行执行,指令周期取决于执行时间最长的指令的执行时间
多指令周期
对不同类型的指令选用不同的执行步骤来完成 指令之间串行执行,可选用不同个数的时钟周期完成不同指令的执行过程 需要复杂的硬件设计
流水线方案
每个时钟周期启动一条指令,指令之间并行执行,但各自处在不同的执行步骤中
数据通路的功能和基本结构
数据通路:数据在功能部件之间传送的路径称为数据通路,由控制部件控制
功能
实现CPU内部的运算器与寄存器之间的数据交换
基本结构
CPU内部单总线方式
寄存器之间的数据传送
主存与CPU之间的数据传送
执行算术或逻辑运算
CPU内部三总线方式
专用数据通路方式
控制器的功能和工作原理
控制器的结构和功能
硬布线控制器
基本原理是根据指令的要求、当前的时序及外部和内部的状态,按时间的顺序发送一系列微操作控制信号,它由复杂的组合逻辑门电路和一些触发器构成
硬布线控制单元图
硬布线控制器的时序系统及微操作
CPU的控制方式
同步控制
异步控制
联合控制
硬布线控制单元设计步骤
分析每个阶段的微操作序列
选择CPU的控制方式
安排微操作时序
电路设计
微程序控制器
概念
微命令与微操作:一条机器指令可分解为微操作序列,控制部件向执行部件发出的各种控制命令称为微命令,是构成控制序列的最小单位。微命令是微操作的控制信号,微操作是微命令的执行过程
微指令与微周期:微指令是若干微命令的集合,存放微指令的控制存储器的单元地址称为微地址。一条微指令通常至少包含两大部分:操作控制字段用于产生某一步操作所需的各种操作控制信号;顺序控制字段:又称微地址码字段,用于控制产生下一条要执行的微指令地址
主存储器与控制存储器
主存储器用于存放程序和数据,在CPU外部,用RAM实现 控制存储器CM用于存放微程序,在CPU内部,用ROM实现
程序与微程序
程序是指令的有序集合,一条指令的功能由一段微程序实现,微程序是微指令的有序集合
组成和工作过程
编码方式
直接编码方式
在微指令的操作控制字段中,每一位代表一个微操作命令 优点:简单、直观,执行速度快,操作并行性好 缺点:微指令字长过长,n个微命令就要求微指令的操作字段有n位,控存容量极大
字段直接编码方式
将微指令的控制字段分成若干“段”,每段经译码后发出控制信号 微命令字段分段原则: 1.互斥性微命令分在同一段内,相容性微命令分在不同段内 2.每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间 3.一般每个小段还要留出一个状态,表示本字段不发出任何微命令。因此,当某字段的长度为3位时,最多只能表示7个互斥的微命令,通常用000表示不操作 优点:可以缩短微指令字长;缺点:要通过译码电路后再发出微命令,比直接编码慢
字段间接编码方式
一个字段的某些微命令需由另一个字段中的某些微命令来解释 优点:可进一步缩短微指令字长;缺点:削弱了微指令的并行控制能力
地址形成方式
下地址字段
微指令的下地址字段直接指出后继微指令的地址,又称为断定方式
机器指令的操作码
当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成
增量计数器法
(CMAR)+1➡️CMAR
分支转移
转移方式:指明判别条件;转移地址;指明转移成功后的去向
通过测试网络
由硬件产生微程序入口地址
第一条由专门的硬件产生,由硬件产生中断周期
微命令的格式
水平型
直接编码、字段直接编码、字段间接编码、混合编码都属于水平型微指令 一条指令定义并执行几种并行的微命令 优点:微程序短,执行速度快;缺点:微指令长,编写微程序较麻烦,n个微命令就要求微指令的操作字段有n位,造成控存容量极大
垂直型
一条微指令只能定义一个微命令,由微操作码字段规定具体功能 优点:微指令短、简单、规整,便于编写微程序 缺点:微程序长,执行速度慢,工作效率低
混合型
在垂直型的基础上增加一些不太复杂的并行操作 微指令较短,便于编写;微程序也不长,执行速度加快
微程序控制单元的设计步骤
分析每个阶段的微操作序列
写出对应机器指令的微操作命令及节拍安排
确定微指令格式
编写微指令码点
动态微程序设计和毫微程序设计
硬布线和微程序控制器的特点
异常和中断机制
指令流水线
基本概念
一条指令的执行过程分为若干阶段,每个阶段由相应的功能部件完成。
指令集的特征: 1.指令长度应尽量一致 2.指令格式应尽量规整 3.采用Load/Store指令 4.数据和指令在存储器中对齐存放
分类
使用级别
部件功能级
处理机级
处理机间
功能
单功能
多功能
连接方式
静态
动态
各功能段之间是否有反馈信号
线性
从输入到输出,每个功能段只允许经过一次,不存在反馈回路
非线性
从输入到输出过程中,某些功能段将数次通过流水线,这种流水线适合进行线性递归的运算
基本实现
冒险与处理
结构冒险/资源冲突
多条指令在同一时刻争用同一资源而形成的冲突称为结构相关 解决方法: 1.后一指令暂停一个时钟周期 2.单独设置数据存储器和指令存储器
数据冒险/数据冲突
在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况 解决方法: 1.把遇到数据相关的指令及其后续指令都暂停几个时钟周期,直到数据相关问题消失后再继续执行,可分为硬件阻塞和软件插入NOP两种方法 2.数据旁路技术 3.编译优化:通过编译器调整指令顺序来解决数据相关
控制冒险/控制冲突
当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关 解决方法: 1.转移指令分支预测。简单预测(永远猜true或false)、动态预测(根据历史情况动态调整) 2.预取转移成功和不成功两个控制方向上的目标指令 3.加快和提前形成条件码 4.提高转移方向的猜准率
性能指标
吞吐率
加速比
效率
高级流水线技术
超标量技术
超流水技术
超长指令字
多处理器的基本概念
SISD等概念
SISD(单指令流单数据流)
各指令序列只能并发不能并行,每条指令只能处理一两个数据 不是数据级并行技术 一个处理器+一个主存储器 若采用指令流水线,需设置多个功能部件,采用多模块交叉存储
SIMD(单指令流多数据流)
各指令序列只能并发不能并行,但每条指令可同时处理 是一种数据级并行技术 一个指令控制部件CU+多个处理单元/执行单元(如ALU)+多个局部存储器+一个主存储器 每个执行单元有各自的寄存器组、局部寄存器、地址寄存器 不同执行单元执行同一条指令,处理不同的数据
MISD(多指令流单数据流)
多条指令并行执行,处理同一个数据,现实中不存在
MIMD
特性
各指令序列并行执行,分别处理多个不同的数据 是一种线程级并行、甚至线程级以上并行技术
分类
多处理器系统
各处理器之间,可以通过LOAD/STORE指令,访问同一个主存储器,可通过主存相互传送数据 一台计算机包含多个处理器+一个主存储器 多个处理器共享单一的物理地址空间
多计算机系统
各计算机之间,不能通过LOAD/STORE指令直接访问对方的存储器,只能通过“消息传递”相互传送数据 由多台计算机组成,拥有多个处理器+多个主存储器 每台计算机拥有各自的私有存储器,物理地址空间相互独立
向量处理机
特性: 一条指令的处理对象是“向量” 擅长对向量型数据并行计算、浮点数运算,常被用于超级计算机中,处理科学研究中巨大运算量 硬件组成: 多个处理单元,多组“向量寄存器” 主存储器应采用“多个端口同时读取”的交叉多模块存储器 主存储器大小限定了机器的解体规模,因此要有大容量的集中式的主存
硬件多线程
对比
多核处理器
每个处理单元称为一个核,多个处理器共享一个主存储器 多个处理器共享单一的地址空间,都可以通过LOAD、STORE指令访问共享的主存储器
共享内存多处理器
一个CPU芯片中包含多个处理器,即多个核,因此通常也称为片级多处理器CMP,即一块芯片上集成了多个处理器 所有核共享一个LLC,并共享主存储器
总线
LL
欢迎来到计组的天堂章节,我愿称之为计组最水章节。本章通常考小题,或是作为大题的一个条件,亦或只考大题的一个小问。总体来说,考察难度不高,是计组中最没有排面的一章。不过,由于“总线”是利用电气特性来传输数据的,因此本章学起来难免会有较为抽象,理解不透的感觉,这很正常。 本章的学习策略是:重做题、轻学习。能做题即可,有些东西学不懂没关系,不用深究总线的物理原理。 6.1 总线概述 ● 了解总线的作用、分类,有个大致的印象,能做选择题即可 ● 要认真理解和记忆“总线的性能指标”,有可能作为大题的条件,或作为大题的某个小问让你计算 ● 在2022大纲中,“常见的总线标准” 被删除。因此408考生可以先跳过王道书 6.1.4 部分,并跳过该部分相关的习题(已在打卡表中说明),等学完第六章其他内容后,再回来了解了解即可,408考试可以划水。自命题考生不建议划水,还需结合视频认真学习“常见的总线标准”,理解和记忆各种总线标准的名字和特点。 6.2 总线事务和定时 ● 在2022大纲中,“总线仲裁”被删除。23王道书也已删除“总线仲裁”相关内容,但视频课程中任然保留了相关讲解。408考生可以看看视频简要了解一下“什么是总线仲裁”即可,无需深究“总线仲裁的方法和原理”。 ● 自命题考生可以参考目标院校考试大纲,以此判断是否需要学习“总线仲裁”。如果你的目标院校没有公布考试大纲,那么可以看看这个学校指定的是哪本计组教材。若学校指定参考唐朔飞老师的教材,就得学一学“总线仲裁”;若学校指定参考袁春风老师的教材,就不用深究这部分内容。 ● 所有人,在通过视频了解了“什么是总线仲裁”的基础上,还需结合王道书6.2.1,了解什么是“总线事务” ● 两种“总线定时”方式,很可能考选择题,要注意记忆。当然,你大概率会过一段时间就忘光光,这太正常了。对于这类简单又易忘的考点,建议大家自己整理一个“Check List”,罗列此类考点,提醒自己上考场前迅速回顾。
总线概述
基本概念
定义
一组能为多个部件分时共享的公共信息传送线路 同一时刻只能有一个部件发送数据,但可有多个部件接受数据
特性
机械特性:尺寸、形状、管脚数、排列顺序
电气特性:传输方向和有效的电平范围
功能特性:每根传输线的功能(地址、数据、控制)
时间特性:信号的时序关系
分类
功能
片内总线:是芯片内部的总线,是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线
系统总线:是计算机系统内各功能部件之间相互连接的总线 划分为数据总线、地址总线和控制总线 数据总线:传输各功能部件之间的数据信息,包括指令和操作数;位数与机器字长、存储字长有关;双向 地址总线:传输地址信息,包括主存单元或I/O端口的地址;位数与主存地址空间大小及设备数量有关;单向 控制总线:一根控制线传输一个信号,有出;CPU送出的控制命令,有入;主存返回CPU的反馈信号
I/O总线:连接中低速的I/O设备,通过I/O接口与系统总线相连接,目的是将低速设备与高速总线分离,以提升总线的系统性能,常见的有USB、PCI总线
通信总线:用于计算机系统之间或计算机系统与其他系统之间信息传送的总线,又称外部总线
时序控制方式
同步总线
异步总线
数据传输格式
串行总线:每次只能传一位数据 优点:只需要一条传输线,成本低廉,广泛应用于长距离传输 应用于计算机内部时,可以节省布线空间 缺点:数据发送和接收的时候,要进行拆卸和装配,要考虑串行、并行转换的问题
并行总线:每次可以传多位数据 优点:总线的逻辑时序比较简单,电路实现起来比较容易 缺点:信号线数量多,占用更多的布线空间;远距离传输成本高昂 由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率
系统总线的结构
单总线结构:CPU、主存、I/O设备都挂在一组总线上,允许I/O设备之间、I/O设备与主存之间直接交换信息 优点:结构简单、成本低、有利于接收新的设备 缺点:带宽低、负载重,多个部件只能争用唯一的总线,不支持并行传送
双总线结构:主存总线用于CPU、主存和通道之间进行数据传送;I/O总线用于多个外部设备与通道之间进行数据传送
三总线结构:主存总线、I/O总线、直接内存访问总线(DMA) 主存总线用于在CPU和内存之间传送地址、数据和控制信息 I/O总线用于在CPU和各类外设之间通信 DMA总线用于在内存和高速外设之间直接传送数据 优点:提高了I/O设备的性能,使其能更快地响应命令,提高系统吞吐量 缺点:系统工作效率低
四总线结构:速度依次减小:CPU总线、系统总线、高速总线、扩充总线 桥接器:用于连接不同的总线,具有数据缓冲、转换和控制功能
常见的总线标准
总线的性能指标
总线传输周期:指一次总线操作所需的时间,包括申请阶段、寻址阶段、传输阶段和结束阶段。通常由若干总线时钟周期构成
总线时钟周期:即机器的时钟周期,计算机有一个统一的时钟,以控制整个计算机的各个部件,总线受此时钟的控制
总线工作频率
总线周期=N个时钟周期 总线的工作频率=时钟频率/N,指一秒内传送几次数据
总线时钟频率
时钟周期的倒数=1/时钟周期
总线宽度
又称为总线位宽,是总线上同时能够传输的数据位数 通常指数据总线的根数
总线带宽
总线的数据传输率,即单位时间内总线上可传输数据的位数 =总线工作频率✖️总线宽度 指总线本身所能达到的最高的传输速率
总线复用
指一种信号线在不同的时间传输不同的信息,因此可以使用较少的线传输更多的信息,从而节省空间和成本
信号线数
地址总线、数据总线和控制总线三种总线数的总和称为信号线数
总线仲裁
集中仲裁方式
工作流程: 主设备发出请求信号; 若多个主设备同时要使用总线,则由总线控制器的判优、仲裁逻辑按一定的优先等级顺序确定哪个主设备能使用总线 获得总线使用权的主设备开始传送数据
链式查询方式
“总线忙”信号的建立者是获得总线控制权的设备 优先级:离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件,其优先级越低
计数器查询方式
用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线BG;仍共用一根总线请求线 优点: 1.计数初始值可以改变优先次序(计数每次从0开始,优先级按顺序排列固定不变;计数每次从上一次的终点开始,则设备使用总线的优先级相等;计数器的初值可以由程序设置) 2.对电路故障没有链式敏感
独立请求方式
当总线控制器按一定的优先次序决定批准某个部件的请求时,则给该部件发送总线响应信号 当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队 优点: 1.响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或查询 2.对优先次序的控制相当灵活 缺点: 1.控制线数量多,若设备有n个则需要2n+1条控制线 2.总线的控制逻辑更加复杂
对比
分布仲裁方式
不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号 最后获胜者的仲裁号保留在仲裁总线上
总线事务和定时
总线事务
从请求总线到完成总线使用的操作序列称为总线事务,它是在一个总线周期中发生的一系列活动,包括请求操作、仲裁操作、地址传输、数据传输和总线释放
请求阶段:主设备(CPU/DMA)发出总线传输请求,并且获得总线控制权
定时
同步定时方式
系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系 若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期 在一个总线周期中,发送方和接收方可进行一次数据传送 优点:传送速度快,具有较高的传输速率;总线控制逻辑简单 缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差 适用于总线长度较短及总线所接部件的存取时间比较接近的系统
异步定时方式
不互锁:速度最快,可靠性最差 主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间,便撤销“请求”信号 从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号,双方不存在互锁关系
半互锁:主设备发出“请求”信号后,必须待接到从设备的"回答“信号后,才撤销”请求“信号,有互锁的关系 而从设备在接到”请求“信号后,发出”回答“信号,但不必等待获知主设备的”请求“信号已经撤销,而是隔一段时间后自动撤销”回答“信号,不存在互锁关系
全互锁:速度最慢、最可靠 主设备发出”请求“信号后,必须待从设备”回答“后,才撤销”请求“信号 从设备发出”回答“信号,必须待获知主设备”请求“信号已撤销后,再撤销其”回答“信号,双方存在互锁关系
半同步通信
输入/输出系统
LL
第七章 输入输出系统 欢迎来到计组的最后一章,本章 7.1 和 7.2 主要考察小题,7.3 极有可能考小题,也有可能考大题。计组第七章和操作系统第五章联系很紧密,第二轮可以两门学科交叉复习。 7.1 IO系统基本概念 ● 本节较为简单,以选择题考察为主 ● “外部存储器”在计组 3.4 小节中有详细介绍。需重点理解“磁盘存储器”和“固态硬盘SSD”的特性。其中“磁盘存储器”还会在操作系统第四章详细学习。 7.2 IO接口 ● 本节是计组的考点,也是操作系统第五章的考点,以选择题考察为主,并不难理解 ● 通过对本节的学习,要知道CPU控制IO设备的大致原理 7.3 IO方式 ● 本节是小题和大题的考察重点,特别是“中断”和“DMA”原理较为复杂,第一次看视频、看书学习,可能会觉得很抽象,脑子里一团浆糊 ● 想要不抽象地深入理解三种 I/O方式 的原理,大家一定要做 7.3.4 的三个大题:5、7、12,另外,也建议大家看一看这几个大题的讲解视频,会很有帮助。通过这些大题,你也能感受到计组第七章的大题套路。 ● “中断”是非常非常非常重要的,计组、操作系统两边都会考,而且理解“中断”对于理解操作系统的运行原理至关重要,一定要耐心理解。
I/O系统基本概念
输入/输出系统
I/O硬件
包括外部设备、I/O接口、I/O总线等,通过设备控制器来控制I/O设备的具体动作;通过I/O接口与主机相连
I/O软件
包括驱动程序、用户程序、管理程序、升级补丁等,通常采用I/O指令和通道指令实现CPU与I/O设备的信息交换
I/O控制方式
程序查询方式
CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”后,再从数据寄存器取出输入数据
程序中断方式
等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据
DMA方式
主存与高速I/O设备之间有一条直接数据通路,CPU向DMA接口发出“读/写“命令,并指明主存地址、磁盘地址、读写数据量等参数 DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写,才向CPU发出一次中断请求
通道方式
在系统中设有通道控制部件 1.CPU向通道发出I/O指令,指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备 2.通道执行内存中的通道程序,控制I/O设备完成一系列任务 3.通道执行完规定的任务后,向CPU发出中断请求,之后CPU对中断进行处理
程序查询、程序中断适用于数据传输率较低的外部设备,DMA、通道适用于数据传输率高的外部设备
外部设备
输入设备
键盘、鼠标
输出设备
显示器:VRAM容量=分辨率✖️灰度级位数 VRAM带宽=分辨率✖️灰度级位数✖️帧频 打印机:按印字原理分为击打式打印机和非击打式打印机 击打式优点:设备成本低、印字质量好 缺点:噪声大、速度慢 非击打式优点:速度快、噪声小 缺点:成本高 按工作方式:针式、喷墨式、激光
外部存储器
磁表面存储器、固态硬盘SSD、光盘存储器
I/O接口
I/O接口功能
进行地址译码和设备选择
实现主机和外设的通信联络控制
实现数据缓冲
信号格式的转换
传送控制命令和状态信息
I/O接口的基本结构
I/O接口的类型
数据传送方式
并行接口
串行接口
主机访问I/O设备的控制方式
功能选择的灵活性
I/O端口及其编址
I/O端口是指接口电路中可被CPU直接访问的寄存器,主要有数据端口、状态端口和控制端口,若干端口加相应的控制逻辑电路组成接口 CPU对数据端口执行读写操作,对状态端口执行读操作,对控制端口执行写操作
统一编址
把I/O端口当作存储器的单元进行地址分配,用统一的访存指令就可以访问I/O端口,又称存储器映射方式 靠不同的地址码来区分内存和I/O设备,I/O地址要求相对固定在地址的某部分
优点:不需要专门的输入/输出指令,所有访存指令都可直接访问端口,程序设计灵活性高;端口有较大的编制空间;读写控制逻辑电路简单
缺点:端口占用了主存地址空间,使主存地址空间变小 外设寻址时间长(地址位数多,地址译码速度慢)
独立编址
I/O端口地址与存储器地址无关,独立编址CPU需要设置专门额输入/输出指令访问端口,又称I/O映射方式
优点:使用专用I/O指令,程序编制清晰 I/O端口地址位数少,地址译码速度快 I/O端口的地址不占用主存地址空间
缺点:I/O指令类型少,一般只能对端口进行传送操作 程序设计灵活性差 需要CPU提供存储器读/写、I/O设备读/写两组控制信号 增加了控制逻辑电路的复杂性
I/O方式
程序查询方式
程序中断方式
基本概念
在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理在处理完毕后CPU又自动返回到现在程序的断电处,继续执行原程序
工作流程
1.中断请求:中断源向CPU发送中断请求信号 2.中断响应判优:中断响应优先级是指CPU响应中断请求的先后顺序,通过硬件排队器来实现中断响应判优 i.不可屏蔽中断>内部异常>可屏蔽中断 ii.内部异常中,硬件故障(掉电)>软件中断(系统调用) iii.DMA中断请求优先于I/O设备传送的中断请求 iv.在I/O传送类中断请求中,高速设备>低速设备,输入设备>输出设备,实时设备>普通设备 3.CPU响应中断的条件:中断源有中断请求;CPU允许中断及开中断(异常和不可屏蔽中断不受此限制);一条指令执行完毕(异常不受此限制),且没有更紧迫的任务 4.中断响应过程: 中断隐指令:CPU响应中断后,经过某些操作,转去执行中断服务程序,这些服务由硬件直接实现。隐指令包括关中断、保存断点、引出中断服务程序
识别中断源的方法: 1.软件查询法 2.硬件向量法:中断向量理解为函数的指针,向量地址理解为函数指针的指针
中断服务程序的主要任务: 1.保护现场 保存通用寄存器和状态寄存器的内容,以便返回原程序后可以恢复CPU环境。可使用堆栈、也可使用特定存储单元 2.中断服务(设备服务) 主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中 3.恢复现场 通过出栈指令或取数指令把之前保存的信息送回寄存器中 4.中断返回 通过中断返回指令回到原程序断电处
多重中断和中断屏蔽技术
单重中断:执行中断服务程序时不响应新的中断请求
多重中断:中断嵌套,执行中断服务程序时可响应新的中断请求
中断屏蔽技术:主要用于多重中断,CPU具备多重中断功能,需满足下列条件: 在中断服务程序中提前设置开中断指令;优先级别高的中断源有权中断优先级别低的中断源。每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,构成屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字 通过INTR线发出的是可屏蔽中断信号,通过NMI线发出的是不可屏蔽中断信号
DMA方式
DMA方式的特点
它使主存与CPU的固定联系脱钩,主存即可被CPU访问,又可被外设访问 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现 主存中要开辟专用缓冲区,及时供给和接收外设的数据 DMA传送速度快,CPU和外设并行工作,提高了系统效率 DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理
DMA控制器的组成
DMA的传送方式
停止CPU访存
周期挪用
DMA与CPU交替访存
DMA的传送过程
预处理
数据传送
后处理
DMA方式和中断方式的区别
1.中断方式是程序的切换,需要保护和恢复现场;而DMA方式除了预处理和后处理,其他时候不占用CPU的任何资源 2.对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期后);而对DMA请求的响应可以发生在每个机器周期结束时(取址周期、间址周期),只要CPU不占用总线就可被响应 3.中断传送过程需要CPU的干预;而DMA传送过程不需要CPU的干预,因此数据传输率非常高,适合于高速外设的成组数据传送 4.DMA请求的优先级高于中断请求 5.中断方式具有对异常事件的处理能力,而DMA方式仅局限于传送数据块的I/O操作 6.从数据传送来看,中断方式靠程序传送,DMA方式靠硬件传送
速成课
电子计算机
继电器:时间久(机械臂有重量)、齿轮磨损
电子管:电流单向移动
真空管:电流双向移动,无机械组件,磨损少
晶体管:体积小、便宜、工作快、期限长
巨人1号计算机:第一个大规模使用真空管的计算机,可编程,人工培植 ENIAC:可编程、速度快,但真空管易坏 IBM608:第一个晶体管计算机,消费者可买到
bool:《数理逻辑的表示方式》
布尔逻辑和逻辑门
二进制
二进制加法:和为2则取0进1,和为3(11)取1进1 第一位:1负0正,后31位为范围,-20e~+20e 32位浮点数:1位符号位+8位指数位+23位有效位 7位ASCII:可表示@符号、标点符号、大小写字母 unicode:统一编码方案,表示各个国家的字符、表情包、数字
算术逻辑单元ALU
算术单元
逻辑单元
寄存器和内存
中央处理器