组成原理整体框架:https://blog.csdn.net/qq_39328436/article/details/114680942
说明:本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍组成原理的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。组成原理是校招中不太会问到的一门课,但却是考研复试中非常重要的一门课
开始吧 (*^▽^*)
目录
系统概述
四门计算机专业课之间的关系
- 数据结构研究的是数据和操作这些数据的算法,属于软件层面。
- 组成原理研究的是如何实现计算机体系结构中的属性,属于硬件层面。
- 操作系统是软件和硬件的交界面,是计算机最底层的软件。
- 计算机网络研究的是计算机与计算机之间是怎么进行互联的。
组成原理和体系结构的区别
- 计算机体系结构:指那些能够被程序员看到的计算机的属性。
- 计算机组成原理:指如何实现计算机体系结构所体现出来的属性。
- 以乘法指令为例,计算机是否有乘法指令,属于体系结构的问题。乘法指令是采用专用的乘法器,还是使用加法器和移位器构成,属于计算机组成的问题。
冯诺依曼机的特点
- 指令和数据以同等的地位存储,可按照地址访问
- 指令和数据都以二进制表示
- 存储程序思想:将指令以二进制代码的形式事先存入存储器中
- 以运算器为核心(现代计算机中以存储器为中心)
计算机的层次结构【高汇操传微】
- 高级语言机器:执行高级语言
- 汇编语言机器:执行汇编语言
- 操作系统机器:向上提供广义指令
- 传统机器:执行机器语言指令
- 微程序机器:执行微指令
翻译程序
- 汇编程序:汇编程序翻译成机器语言
- 编译程序:高级语言翻译成机器语言(一次性翻译,生成可执行代码)
- 解释程序:高级语言翻译成机器语言(一句一句翻译)
计算机性能指标
- 主频:1s内有多少个时钟周期
- IPS:1s内执行多少条指令
- CPI:1条指令消耗多少之中周期
- FLOPS:1s内执行多少次浮点运算(最能反映计算机的计算速度)
数据表示与运算
纠错与检错编码
- 1.奇偶校验码
-
奇校验:整个校验码的1的个数为奇数
-
偶校验:整个校验码的1的个数为偶数
-
检测出奇数位错误,没有纠错能力
-
-
2.循环冗余校验码CRC
-
利用多项式生成校验码
-
检测出奇数位错误和双比特错误,选择合适的生成多项式才有纠错能力
-
-
3.海明校验码
-
本质是分组偶校验,多个校验位可以反应出错位置
-
海明码有1位纠错能力,2位检错能力
-
-
原码反码补码移码
- 补码:可以将减法操作变成等价的加法操作
- 反码:只是原码转换为补码的一个中间过程
- 移码:移码=真值+偏置值,可以直观地比较出数据之间的大小
- 范围:
- 原码和反码的真值0有两种形式
- 补码和移码的真值0只要一种形式
- 补码和移码相差一个符号位
- 转换
- 正数的原反补码相同
-
[x]补-->全部取反+1-->[-x]补
-
定点数的运算
-
移位运算
-
算数移位:不带符号位的移位,相当于乘2或者除2
-
逻辑移位:全部移动
-
循环移位:移出的位不丢弃
-
-
加减运算
-
原码加减:符号单独判断
-
补码加减:符号带着算[A-B]补=[A]补+[-B]补
-
-
乘法运算
-
原码一位乘法
-
补码一位乘法:booth算法
-
-
除法运算
-
原码除法:恢复余数法
-
补码除法:加减交替法
-
-
-
溢出判断
- 一位符号位:正+正=负;负+负=正时溢出
- 双符号位:01上溢;10:下溢
- 符号位进位+最好数值位进位:01上溢;10:下溢
-
边界对齐
- 以空间换时间的思路,起始地址要能够被自身长度整除
- 采用边界对齐后,访问一个字只需要一次访存
-
存储方式
- 大端方式:高字节存储在低地址(顺着存)
- 小端方式:高字节存储在高地址(逆着存)
-
浮点数加减运算
- 对阶:小阶向大阶看齐
- 尾数加减
- 规格化
- 左规:尾数的最高位为非有效位时进行左规
- 右规:尾数溢出时右规
- 舍入:在右规和对阶的过程中都有可能存在舍入的问题
- 溢出判断:
- 阶码上溢:抛出异常
- 阶码下溢:按机器0处理
-
IEEE 754 标准
- 阶码用移码表示,尾数用原码表示,隐藏最高位的1
-
并行进位加法器
- 通过进位产生函数和进位传递函数,让加法器的多个进位同时产生
存储系统
-
介绍一下计算机的多级存储系统
- 主存-缓存:用来缓解速度压力,完全由硬件实现,缓存是主存的副本
- 主存-辅存:用来缓解容量压力,有操作系统和硬件配合实现,主存是缓存的副本
-
半导体存储器
- 半导体存储器包括RAM和ROM,其中RAM又分为SRAM和DRAM
- 是否易失:取决于断电之后还有存储的效果
- 是否破坏:取决于读出之后是否还能继续存储
- SRAM:存储原理是双稳态触发器,因此是易失性的,非破坏性性读出
- DRAM:存储原理是栅极电容,因此是易失性的,破坏性读出
- ROM:存储原理是熔丝,因此是非易失性的,破坏性读出
- 其中包括EPROM,PROM等
-
SRAM VS DRAM
- DRAM只需要两个电容结构简单,集成度高,行列地址分两次传送,因此存储成本低,发热量低,但是运行速度比较慢,常用主存
- SRAM需要双稳态触发器结构复杂,集成度低,行列地址一次性传送,因此存储成本高,发热量高,但是运行速度比较快,常用cache
- 另外虽然两者都是易失性的,但是由于电容中存储的电量即使不断电也维持不了太久,因此对DRAM要刷新,刷新方式包括集中刷新,分散刷新,异步刷新。
-
双端口RAM与多模块存储器
- 双端口与多模块存储器都是用来增加存储器读写带宽的
- 双端口RAM
- 就是通过一个busy信号对同一个RAM 进行读写控制
- 多模块存储器
- 分为单体多字存储器
- 在单体多字存储器中,一次性可以读出多个字,因此会要求指令和数据连续存放,并且当只需要对单个字进行读写操作时,会产生不必要的读写时间
- 多体并行存储器
- 多体并行存储器指的是多个存储器有自己的读写控制,可以并行运行,他包括高位交叉编址,和低位交叉编址
- 低位交叉编址是多个存储器轮流启动,采用流水线的方式进行读取,能有效提高存储器的带宽
- 高位交叉编址实际上相当于扩充了存储器的容量,各个存储器之间会有忙闲不均的情况,对增强存储器的带宽没有实际作用
- 分为单体多字存储器
-
Cache与主存映射的原理
- 将主存和cache划分为等大的块,将主存中常用的数据存放在cache中,两者通过地址形成映射关系。映射方式包括全相联映射,直接相连映射,和组相联映射。
- 全相联映射:主存中的块可以存放在任意一个cache块中,地址划分为标记和块内地址
- 直接相联映射:主存中的块只能被映射到唯一一块cache中,地址划分为标记,行号,块内地址
- 组相联映射:主存张总的块只能被映射到某一组cache块中,但是在组内可以随意放置,地址划分为标记,组号,和块内地址
- 将主存和cache划分为等大的块,将主存中常用的数据存放在cache中,两者通过地址形成映射关系。映射方式包括全相联映射,直接相连映射,和组相联映射。
指令
-
寻址方式
- 在计算机中的寻址包括数据寻址和指令寻址
- 指令寻址方式
- 顺序寻址:PC+1
- 跳跃寻址方式:修改当前PC值,目标地址=(pc)+指令字长+k*OFFSET
-
数据寻址方式(10种)
- 隐含寻址:有一个操作数隐含在ACC中
- 立即寻址:地址字段为操作数的补码,执行阶段不访存
- 直接寻址:地址字段操作数的地址,执行阶段1次访问
- 间接寻址:地址字段为操作数的地址的地址,执行阶段多次访存(可能1次间址也可能多次间址)
- 寄存器寻址:地址字段为寄存器号,寄存器中是操作数,执行阶段不访存
- 寄存器间接寻址:地址字段为寄存器号,寄存器中是操作数地址,执行阶段不访存,可以扩大寻址范围
- 相对寻址:地址码字段为相对地址,有效地址=pc+(指令长度/1B)+A
- 基址寻址:有效地址=基址寻址器+地址码字段
- 变栈寻址:有效地址=变址寻址器+地址码字段
- 堆栈寻址:读写地址由堆栈寄存器给出
-
变址寻址 VS 基址寻址
- 变址寻址:变址寄存器内容用户可以改变,面向程序员,适合处理数组,编制循环程序
- 基址寻址:基址寄存器内容用户不能改变,面向操作系统,适合处理程序浮动,利于多道程序设计
-
CISC VS RISC
- RISC是精简指令集,CISC是复杂指令集
- 在CISC中,指令系统非常庞大,指令数目很多,指令字长不固定,访存指令不加限制,各个指令的执行时间也相差很大,使用频率也相差很大,有较少的寄存器,一般适用于微程序控制,可以通过一定的方式实现流水线
- 在RISC中,指令系统比较简单,指令数目比较少,指令字长固定,并规定只有LOAD和STORE指令可以访存,各个指令的执行时间相差不大,使用频率也相差不大,有很多的寄存器,一般适用于组合逻辑电路控制,必须实现流水线控制方式
CPU
-
CPU的结构和功能
- 功能:【只做中间数】
- 指令控制
- 操作控制
- 中断处理
- 时间控制
- 数据加工
- 结构:
- cpu由运算器和控制器构成。运算器中有累加器ACC,乘商寄存器MQ,算数逻辑单元ALU,以及暂存寄存器X。控制器中有CU和指令寄存器IR以及PC。
- MAR,MDR在逻辑上属于主存,但实际上是放在CPU中的控制器中的
- 功能:【只做中间数】
-
指令周期 VS 机器周期 VS 节拍
- 指令周期:从主存取出一条指令并执行的全部时间
- 机器周期:一般把总线事务访问一次主存的时间定为机器周期
- 指令周期中有若干机器周期,机器周期中有若干节拍
-
机器字长 VS 存储字长 VS 指令字长
- 机器字长:计算机能直接处理的二进制数据位数,为内部寄存器字长等长
- 指令字长:一条指令的二进制位数
- 存储字长:一个存储单元所能存储的二进制的位数
- 三者都必须是字节的整数倍,彼此之间没有直接的制约关系
-
一条指令的执行过程
-
取指周期--FE--fetch:访问主存取指令分析指令
-
间址周期--IND--indirect:访问主存取操作数的有效地址
-
执行周期--EX--execute:访问主存取操作数
-
中断周期--INT-interrupt:访问主存保存程序断点
-
-
主存储器 VS 控制存储器
- 主存储器在cpu内部,ram实现,存放数据和程序
- 控制存储器在cpu内部,rom实现,存放微程序
-
微程序 VS 程序
- 程序是指令的集合,对程序员不透明
- 微程序是微指令的集合,对程序员透明
- 一条指令对应一个微程序,一个微程序由多个微指令构成,一条微指令对应多个微命令
-
微程序控制器的基本结构
- 指令送到指令寄存器后,取出操作码op送入微地址形成部件,产生初始微地址和后继微地址.
- CMAR是微地址寄存器,接收微地址,为在CM中去读微指令做准备
- CM中存储了各个指令对应的微程序
- CMDR用于存储从CM中取出的微指令,操作码字段送到CPU内部,下地址字段送到顺序逻辑。
-
硬布线控制器 VS 微程序控制器
- 1.硬布线控制器是用组合逻辑电路来实现控制器中的CU,微程序控制器是用存储程序的思想来实现CU
- 2.硬布线的执行速度块,微程序控制器执行速度慢
- 3.硬布线繁琐,不规整,微程序控制器较规整
- 4.硬布线应用于RISC,微程序控制器应用于CISC
- 5.硬布线不易扩充,微程序控制器易于扩充
-
影响指令流水线的因素
- 结构冲突:多条指令在同一时刻争用统一资源(比如取址与取数据争用内存)
- 数据冲突:按序发射,按序输出的流水线中,只可能有RAW(写后读冲突)
- 控制冲突:遇到转移指令,或者其他改变PC的指令(指令流水线处理的必须是连续的任务)
-
流水线改进
- 超标量流水线:每个时钟周期并发多条独立的指令,配置多个功能部件
- 超流水线:一个时钟周期内在分段,允许一个部件在一个时钟周期内多次使用
- 超长指令字:多个操作码字段,多个部件并行执行
总线
-
增强总线效能的办法
- 猝发传输:读写一组连续的字时,只需要给出首地址即可
- 总线复用:信号线在不同的时间传输不同的信息
-
系统总线结构
- 单总线:
- cpu和外设之间可以之间进行信息交换,无需中间设备干预;cpu与外设之间速度不匹配
- 三总线:
- 主存总线+io总线+DMA总线
- DMA总线在内存和高速外设之间传输数据,系统吞吐量提高,但是系统工作效率低
- 双总线:
-
主存总线+io总线
-
将低速设备从单总线上分离出来,但是增加通道等硬件设备
-
- 单总线:
-
总线仲裁
-
解决多个主设备同时竞争总线控制权的问题
-
集中仲裁方式:将所有的总线请求集中起来,利用特定的算法进行总裁
- 分步仲裁方式:不需要总仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器
-
-
总线定时
- 总线双方在交换数据过程中需要时间上的配合,这一控制叫做总线定时
- 同步定时方式:使用同一的时钟
- 异步定时方式:双方通过握手信号来实现控制
输入输出设备
-
磁盘冗余阵列RAID
- 将多个磁盘组成一个独立的逻辑盘,数据在多个物理盘分割交叉存储,并行访问。可以使得数据存储更加安全,更加可靠
- RAID0:类似低位交叉编址,没有容错能力
- RAID1:镜像存储,粗暴地存储两份数据
- RAID2:采用纠错的海明码磁盘阵列
- 等级越高,可靠度越高
- 将多个磁盘组成一个独立的逻辑盘,数据在多个物理盘分割交叉存储,并行访问。可以使得数据存储更加安全,更加可靠
-
io控制方式
完结撒花✿✿ヽ(°▽°)ノ✿