《计算机组成原理》总结

前言

即将参加今年的秋招,校招比较考核学生的底层知识,开始撸操作系统、计算机组成原理、计算机网络以及Java的知识了。希望能在2020年本就不怎么友好的一年收获理想的Offer。

计算机组成原理

一、计算机系统概论

1.计算机系统结构

如图
在这里插入图片描述

2.如何区别计算机是以运算器为中心还是以存储器为中心

看输入设备能否直接与存储器相连,是的话就是以存储器为中心

3.冯诺依曼型计算机特点

1.计算机由运算器,控制器,存储器,输入和输出设备5部分组成
2.采用存储程序的方式,程序和数据放在同一个存储器中,并以二进制表示。
3.指令由操作码和地址码组成。
4.指令在存储器中按执行顺序存放,由指令计数器(即程序计数器PC)指明要执行的指令所在的储存单元地址,一般按顺序递增,但可按运算结果或外界条件而改变。
5.机器以运算器为中心,输入输出设备与存储器间的数据传送都通过运算器。

二、运算器和运算方法

1.运算器

运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。与Control Unit共同组成了CPU的核心部分。

2.编码

原码

将一个十进制整数转换成二进制,并且最高位加上符号位,就是其原码。

5 的原码为 0000…0101
-5 的原码为 1000…0101

反码

正数的反码就是其原码
负数的反码是对其原码逐位取反,但符号位除外。
5 的反码为 0000…0101
-5 的反码为 1111…1010

补码

正数的补码与原码相同
负数的补码等于其反码的末位加 1
5 的补码为 0000…0101
-5的补码为 1111…1011

3.溢出判断

单符号位补码加减计算时
当最高有效位产生进位,而符号位没有产生进位,则正溢
当最高有效位没有产生进位,而符号位产生进位,则负溢
双符号位补码加减运算时
两个符号位相异则溢出

4.进制转换(bilibili)

二进制转十六进制

取4合1
101110011011.1001
= [1011] [1001] [1011] . [1001]
= [B] [9] [B] . [9]
= B9B9

十六进制转二进制

取1分4
BF4.B5
= [B] [F] [4] . [B] [5]
= [1011] [1111] [0100] . [1011] [0101]
= 101111110100.10110101

关于进制运算这里推荐一篇文章

三、指令系统

指令其实就是一组有特殊意义的二进制数,指示计算机执行某种操作的命令,也叫机器字或指令字,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。指令系统是计算机的主要属性,位于硬件和软件的交界面上。
指令字长度:一个指令包含的二进制数的位数
机器字长:计算机能直接处理的二进制数的位数,通常与主存单元的位数一致
1.指令字长度 = 机器字长度 称为单字长指令
2.指令字长度 = 0.5 × 机器字长 称为半字长指令
3.指令字长度 = 2 × 机器字长 称为双字长指令

1.流程 (畅游)

取指令、分析指令、执行指令

2.基本格式

一条指令通常包括操作码和地址码两部分
操作码(OP)指出执行什么操作,如加减乘除、存数、取数等。CPU中有专门电路来解释操作码,从而执行相应的操作。3位操作码最多可表示8条不同的指令
地址码(A)给出数据或者指令的地址
在这里插入图片描述
根据指令中操作数地址码的数目的不同,可将指令分为以下几种:
1.零地址指令:
只有操作码,没有地址码。例如停机指令。又或者堆栈运算中,操作数隐含地又弹栈和入栈提供。
2.一地址指令:
只有一个地址码。例如单操作数指令,如自增1.自减1,求反,求补等。又或者另一个操作数是隐含的,如由累加器提供。
3.二地址指令:
A1给出目的操作数的地址,A2给出源操作数的地址
4.三地址指令:
A1给出目的操作数的地址,A2给出源操作数的地址,A3存放操作结果地址
5.四地址指令:
A1给出目的操作数的地址,A2给出源操作数的地址,A3存放操作结果地址,A4给出下一条将要执行的指令的地址

3.寻址方式(百度)

寻址方式就是寻址指令或操作数有效地址的方式,也就是确定数据地址以及下一条将要执行的指令的地址。因此寻址方式分为指令寻址和数据寻址

3.1.指令寻址

找下一条要执行的指令的地址

顺序寻址

在内存中按顺序取指令,然后一条一条执行,由程序计数器(PC)来记录顺序

跳跃寻址

跳跃就是本条指令给出下条指令地址的计算方式,是否跳跃可能受状态寄存器和操作数的控制,跳跃的结果是当前指令修改PC值,下一条指令仍然是通过程序计数器PC给出

3.2.数据寻址

找这个指令的操作数的地址

隐含寻址

操作数地址隐含在操作码中,如累加寄存器(AC)

立即寻址

操作数就在指令中,取指令的时候就已经拿到了操作数
在这里插入图片描述

直接寻址

指令中给出操作数的地址,然后到内存中取操作数
在这里插入图片描述

间接寻址

指令中给出操作数的寻址特征位,再根据这个特征位到内存中取操作数
在这里插入图片描述

寄存器寻址

寄存器直接寻址
指令给出寄存器地址,寄存器中存放的是操作数。
在这里插入图片描述

寄存器间接寻址
指令给出寄存器的地址,然后到寄存器中拿到操作数的地址,然后到内存中取操作数。
在这里插入图片描述

偏移寻址

相对寻址:把当前指令的地址存在在PC中,然后用指令中的偏移地址+PC得到有效地址得到内存操作数的地址
在这里插入图片描述

基址寻址:在CPU中用一个寄存器来存储一部分地址,然后再加上指令中的偏移地址得到内存操作数的地址
在这里插入图片描述

变址寻址:在CPU中用一个寄存器来存储一部分地址(这个地址是变动的),然后再加上指令中的偏移地址得到内存操作数的地址,如遍历数组,数组下标就可以存储在变址中
在这里插入图片描述

四、多层次的存储器

存储器分为cache高速缓冲存储器、内存储器、外存储器

1.cache

cache高速缓冲存储器是在CPU内部的存储器,速度最快。
背景:解决CPU和主存之间速度不匹配的问题

cache访问主存的地址映射方法和地址计算

全相联映射:
主存中任意一个块都可以映射到Cache中任意一个块中
优点:命中率比较高,Cache存储空间利用率高。
缺点:相联存储器庞大,比较电路复杂,访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而只适合于小容量的Cache之用,应用少。在这里插入图片描述

直接映射
主存储器中一块只能映象到Cache的一个特定的块中。
优点:地址映象方式简单,数据访问时,只需检查块号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。
缺点:替换操作频繁,命中率比较低。在这里插入图片描述

组相连映射
组相联映射实际上是直接映射和全相联映射的折中方案。
主存和Cache都分组,主存中一个组内的块数与Cache中的分组数相同,组间采用直接映射,组内采用全相联映射。
简单地说,就是主存的每一块存到cache哪一组是固定的,但是存在该组里的哪一块是灵活的。
优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。
缺点:实现难度和造价要比直接映象方式高。在这里插入图片描述

常采用的组相联结构Cache,每组内有2、4、8、16块,称为2路、4路、8路、16路组相联Cache。组相联结构Cache是前两种方法的折中方案,适度兼顾二者的优点,尽量避免二者的缺点,因而得到普遍采用。

替换策略

近期最少使用LRU
被访问的行计数器置0,其他行计数器加1,将值大的行替换出去。优点:命中率高。缺点:实现难度大,系统开销大。

最不经常使用LFU
被访问的行计数器增加1,将值小的行替换掉。缺点是不能反映cache近期访问情况,新调入的行容易被替换出去。

随机策略
随机换出,缺点是有可能刚换出的又马上调用,但这个缺点随着cache的容量增大而降低

写回策略

写回法
换出时,对行的修改位进行判断是否写回还是舍弃,可以显著降低写主存次数,但存在不一致的隐患。

全写法
写命中时,cache和主存一起写,cache虽然无需设置修改位和相应逻辑判断,但是写操作无高速缓冲功能,降低了cache效率

写一次法
第一次写命中时用全写法,其他时候用写回法

提高cache命中率的方法 (快手)

硬件优化
1.增加Cache块大小
2.增加Cache容量
软件优化
1.提高相联度
2.编译器优化

2.内部存储器

内部存储器,简称内存。内存一般分为只读存储器(ROM)和随机存储器(RAM)。
1.只读存储器应用广泛,它通常是一块在硬件上集成的可读芯片,作用是识别与控制硬件。
特点:只能读出不能随意写入信息。
2.随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。
特点:随机存取。易失性。对静电敏感。访问速度快。需要刷新(再生)。

3.外部存储器

外部存储器,简称外存。外存范围比较广,例如硬盘,光盘,磁带,闪存。此类储存器一般断电后仍然能保存数据。

4.速度 (携程)

(CPU — > )寄存器— > 缓存— >内存–>磁盘

五、中央处理器

1.CPU中主要的寄存器

程序计数器PC

用来存放正在执行的指令地址或者即将执行的下一条指令的地址

指令寄存器IR

用来保存当前正在执行的指令地址

地址寄存器AR

用来保存cpu当前访问的数存单元的地址

数据寄存器DR

主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。

通用寄存器GR

当ALU进行运算时,为ALU提供一个工作区

程序状态字PSW(快手)

程序状态字寄存器是一个保存各种状态条件标志的寄存器
类型如下:
进位标志位(CF)
结果为零标志位(ZF)
符号标志位(SF)
溢出标志位(OF)
虚拟中断待决标志位(VIP)
I0特权级别(IOPL)
陷阱标志位(TF)
中断使能(中断屏蔽)标志位(IF)
虚拟中断标志位(VIF)

2.流水CPU结构(快手)

指令周期

从取出一条指令开始,一直到这条指令执行结束所需要的全部时间。
分为取指周期和执行周期
在这里插入图片描述
注意:
1、每条指令的指令周期不同
2、具有间址寻址的执行周期
3、具有中断周期的指令周期
4、不同指令作用的寄存器不同

指令流水

如果按照串行执行,将始终存在取指部件或执行部件处于空闲状态的情况
在这里插入图片描述
因此我们可以将指令像流水线一样串起来,使得取指部件和执行部件都都得到了充分的利用。
在这里插入图片描述

流水结构 (快手)

流水CPU是以时间并行性为原理构造的处理器,由三部分组成:指令部件、指令队列、执行部件。

六、总线系统

1.总线结构(bilibili)

计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。
结构分为单总线结构、多总线结构。

2.总线的仲裁

系统中多个设备或模块可能同时申请对总线的使用权,为避免产生总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的优先算法仲裁哪个应获得对总线的使用权。

集中式仲裁

链式查询方式
共用一根总线请求线 BR,通过总线允许线 BG 串行地传送响应信号。
优先级:离总线控制器越近的部件,其优先级越高;离总线控制器越远的部件,其优先级越低。
优点:链式查询方式优先级固定。只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。
缺点:对硬件电路的故障敏感,并且优先级不能改变。当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线。
菊花链查询法 优缺点:实现简单,易扩充设备,但是对询问电路故障很敏感。

计数器定时查询方式
共用一根总线请求线 BR,通过一个计数器和一组设备地址线产生并传送计数值(响应信号)。
优点:
计数初始值可以改变优先次序
对电路的故障没有链式敏感
缺点:
增加了控制线数,若设备有n个,则需log2n+2条控制线
控制相对比链式查询相对复杂

独立请求方式
每个设备均有一对总线请求线 BRi 和总线允许线 BGi,通过各自的总线允许线 BGi 传送响应信号。
优点:
响应速度快,总线允许信号BG直接从控制器发送到有关设备,不必在设备间传递或者查询。
对优先次序的控制相当灵活。
缺点:
控制线数量多,若设备有n个,则需要2n+1条控制线。其中+1为BS线,其用处为,用于设备向总线控制部件反馈已经使用完毕总线。
总线的控制逻辑更加复杂

分布式仲裁

特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。
工作流程:
当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上
每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较
如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号
最后,获胜者的仲裁号保留在仲裁总线上。

3.总线的带宽计算

Dr=D/T
总线时钟周期T、一个总线周期传送的数据量D

七、输入输出系统

1.外围设备和CPU交换信息的方式(腾讯)

程序查询方式

CPU定期主动来了解设备工作状态(浪费了CPU资源)

程序中断方式(快手)

暂停主程序,转移到该设备的服务主程序,为设备进行服务,结束时返回主程序

DMA方式

外围设备可以通过DMA直接访问内存,此时CPU可以继续工作
通常采用以下三种方法:
1.停止CPU访问内存;
2.周期挪用;
3.DMA与CPU交替访问内存。

2.中断机制

背景

CPU在每一时刻都只能运行一条指令,也就是说单个CPU是无法同时运行多个程序的

过程原理(滴滴)

请求中断→响应中断→关闭中断→保留断点→中断源识别→保护现场→中断服务子程序→恢复现场→中断返回。
在这里插入图片描述

硬中断

硬中断是外部设备对CPU的中断,比如,像磁盘,网卡,键盘,时钟等
硬中断的中断号是由中断控制器提供的
Linux下硬中断是可以嵌套的,但是没有优先级的概念,也就是说任何一个新的中断都可以打断正在执行的中断,但同种中断除外。
硬中断是可屏蔽的。
硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。
ps: 不可屏蔽中断源一旦提出请求,cpu必须无条件响应,而对于可屏蔽中断源的请求,cpu可以响应,也可以不响应。

软中断(CVTE)

软中断是执行中断指令产生的,可以在中断之后再用软中断来完成处理时间长的工作。
软中断的中断号由指令直接指出,无需使用中断控制器。
软中断不能嵌套,但相同类型的软中断可以在不同CPU上并行执行。
软中断不可屏蔽
软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。

3.I/O 通道与 DMA 方式的区别

DMA 方式需要 CPU 来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的
每个 DMA 控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。

—————————————————————————————————————————————
有什么问题可以评论或者私信我,每日在线解(LIAO)疑(SAO)。

我是大誌,一位准备996的卑微码农🐶,觉得好用记得点赞收藏!!!
在这里插入图片描述

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大誌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值