王道计算机考研 计算机组成原理

不全 慎用https://www.aliyundrive.com/s/b6JmZQ7toTG
自省:
截屏不是目的,是记录当下自己是否真的静心去听课,把害怕遗忘交给软件,不至于每次都倒在离开始不远处的地方。
https://www.aliyundrive.com/s/b6JmZQ7toTG
引入

常识


CPU

内存

硬盘







计算机系统概述












逻辑元件的更替




这个地方举的例子很恰当





非常形象






















吞吐量与食堂打饭,还是有点形象的,吞吐量是个相对宽泛的概念。



数据的表示和运算


数制之间的转换







注意字母结尾方式的进制考察

进制转换比较简单,多练习即可


权重不同进行的分类,







每天不要花太多时间去学习新的内容。


减数看作加上一个数的相反数。
12 - 3 = 12 + (15 - 3 + 1) - 16(后面减去16表示的是溢出部分)别刻意去记忆规则
0011 + 1100 = 1111 = 15



带符号整数


高位表示符号为,能表示的合法范围减半

符号位是人为定义的,对于机器而言并没有符号这个概念可言。所以在执行减法,需要另辟蹊径


思考:反码为什么只对负数起作用,还是那个思路,负数,即减去一个数,需要将其转化为加上一个数的相反数

不建议将补码转换为反码

非常实用的技巧









定点小数


逗号隔开整数、小数点隔开小数




把前面的小Tips好好操练,可以看看计组课本的相应内容,补码概念来源于"模概念"

对于计算机而言,不管是整数还是小数,都是用的同一套逻辑进行加减运算。



传输校验



多位发生错误校验可能失效

异或运算

偶数个比特发生错误无法检测。
程序状态字寄存器(PSW):用于保留由算术逻辑运算指令或测试指令的结果而建立的各种状态信息。


M = 0 : 执行算数运算
M = 1 : 执行逻辑运算
指令译码器

机器字长的本质,跟ALU同时能够处理的位数有关
X寄存器的位数与ALU位数保持一致

数字逻辑设计里面的内容

简化逻辑表达式可以相应的简化电路,逻辑清晰,也降低了成本



异或的天然逻辑:
加法(0+0=0, 0+1=1, 1+0=1, 1+1 = 10(溢出需要被保存))
奇偶校验:奇数个1结果为1,其余皆为0

晚上自己分析一下逻辑表达式绘制一下这个逻辑电路图试试

FA

FA : Full Adder

串行加法器的效率较低

类似于人手工计算

串行进位加法器的缺点
挺有意思,并发思想
慎用并发,方便但复杂

贴个这个图,放平心态,哈哈!




最高位产生的进位信息被保留

加法器的位扩展,进位给另一个加法器,高位溢出部分成了另一个加法器的Cin

-8-7: 4bit装不下的原因是,高位作为符号位会独占一位,2的三次方加一个符号位,最小的负数表示位-8,





Sub中的0/1,即作为多路选择器的判断条件,又作为Cin的进位数值,这样的设计还是非常巧妙地。
这里面产生了一个疑惑点,假设Y本身就是有符号的负数,而X和Y之间是X+Y的关系,上面有给例题,分析分析,上面的X+Y有些问题。
A+B
A-B
3+2
3+(-2)
3-2
(-3)-2

该电路也可以用于无符号数的加减法


今天到这里,暂停一下



0 2 4 6 8 16 32 64 128 256 512 1024

左移是扩大两倍,右移是减小两倍
注意符号位







高字节低字节调换
大端模式和小端模式存储(以前用Matlab处理地震数据碰到过),原来是实用循环移位的方式进行数据的转换的


移位相加,权重不一样,才会错位



异或进行符号位的单独






老师讲解的特别清晰,自己手动也模拟了一下。
乘法被转换为:加法+移位操作,简化了手动计算的复杂。ACC最为累加器,一直在保留中间的结果。MQ保留乘积低位也在这里有所解释,即部分积

双符号位建议(保持与补码乘法一致)

最好写出原码机器数
一定要自己手动推导一遍,看看自己哪里自己没有清楚。
这部分虽然十几分钟,我花了差不多一个小时自己去推导理解。还是很受用的
+0与+|x|,确定清楚,最后一步确定符号位:异或方式

辅助位,MQ需要扩展一位


辅助电路


补码这个地方需要自己深究一下,补码本质上是(原数+模)%模, 所以正数的补码位自己。补码参与运算如何去原码运算保持一致,自己分析一下再看
已手动分析完过程
还没开始看视频,从乘法采用移位的方式,除法则同理,相应的会有一些精度损失。


迷糊

二进制中只有上0和1,敢不敢将相应的逻辑电路讲讲?
单图重复用,还是同样的结构

计算机在试探,跟人一样,自动恢复错误的步骤,

ACC符号位为1,负,需要进行恢复

自检



左移



商的结果在MQ里面

计算机默认上商

能否不恢复余数???

简化中间步骤


加减交替法,最后还是需要与恢复余数法一样进行正负判断,对于负数依旧需要恢复

定点小数除法运算,前提条件,商也是一个定点小数,规定,被除数需要小于除数,判断条件:第一步的商进行确定。
原码的出发运算,符号位单独运算
补码除法依旧采用双符号位方式,将符号位直接参与到运算当中。

末位商恒指为1,省事,跟原码商比起来


这部分比较简单
有符号与无符号
截断处理,低位保留
符号扩展,高位补0补1,看符号情况

大小端模式,前面讲到可通过循环移位的方式进行转换
大端存储方式符合人类的习惯
小端方式方便机器进行处理,内存地址递增的方式进行处理,先从低位开始进行处理

边界对齐以前在某本C语言书看到过,作者阐明大部分人不是非常了解边界对齐这个规则。像C语言中的结构体,不同的数据类型连续存储

刚好也讲到哈哈
用边界对齐的方式其实更好访问,所以对于结构体型,中间存在很多空的数据,造成空间上的浪费。
边界对齐方式:空间换取时间
边界不对齐方式:时间换取空间
具体情况具体使用






有限空间内,保留数据精度,如何进行优化,引出浮点数尾数的规格化




浮点数确定真值
计算机浮点数的统一规则,引出标准
https://zhuanlan.zhihu.com/p/343033661
在深入Java学习的时候,有了解了一下IEEE754标准,对于认识Java的float和double有了比较清晰的认识,以上专栏系列文章可以去自习查阅。这部分我就直接跳过了。

关于第二章,还是可以看到,算数运算还是根据数学经验在数字逻辑单元上进行实现。符合人类思维的东西,比如正负数,对于计算机而言,一概是陌生的。补码的引入,核心还是对于模这个概念的正确认识,模的概念在数据结构栈这种数据结构中会有所体现。将负数转换为正数,多余部分溢出可以不去理会。而对于需要存储中间数据的量,都会设计相应的逻辑原件。这样在去对照之前关于算数逻辑单元,每个寄存器所具备的职能,就不需要去死记硬背,每个逻辑器件的设计都有它的核心理由。现在写的还是相对比较杂乱,只是停下来思考一下,将这三天的学习,大概在脑子里面过一下,后面还是得看课本和刷题加深理解。
可以开展后面的章节了。
存储器


流水线模式~传递提高效率
主存辅存:实现虚拟存储习题,解决主存容量不够的问题





相联存储器(Associative Memory)即可以按内容访问的存储器(Content Addressed Memory, CAM) 可以按照内容检索到存储位置进行读写,“快表”就是一种相联存储器







哈工大刘宏伟老师讲的这个部分挺好的


读写线的个数
译码驱动器,放大信号

片选线,指定存储
引脚的数目


矩阵化




双稳态触发器
这个月补一下数字逻辑设计,加深对硬件的理解






刷新周期(2ms如果题目没有给)



DDR3、DDR4




云存储主要使用机械硬盘


以前我记得买手机插内存卡





现代计算机结构



WE:Write Enable

并联

改造前

改造后


A13与A14同为1,发生冲突


优化
非门引入

3-8译码器 (2^3)

2-4译码器

低位->高位
实际题目:A15与A13(考试中可能遇见)

位扩展:存储器的字长增加,更好的发挥数据总线的传输能力
字扩展:增强存储器的存储字数,可以更好的理解CPU的寻址能力

两片芯片为一组进行位扩展
24译码器,



使能端

多个使能端




74ls138译码器


先考虑单核问题,再考虑多核问题







假设四个通道,二四或者一三插入,原来是低位交叉编址


主频一致,协同,主频不一致,高频的会进行降频处理,发挥不了原本性能。



想起考察角速度线速度。。。。。。
水平方向和垂直方向
机械硬盘没事不要甩了,磁头很脆弱。

道密度,磁道
位密度,线速度=角速度*R,每个磁道存储的比特信息相同











磁盘冗余阵列重点




映射关系可发生改变,也就是重新编号

磨损均衡技术:重新进行映射




列存储,指针移动的跨度比较大



不同的访问策略,速度不一样
















抖动现象,让我想起前端里面的防抖debounce,输入框里面输入的字符很快被打印出来,频繁打印, 本来想输入名字,然后变成一个字一个字的连续组合,造成多行. 这种快速调用也会造成一定的困扰.
做题的思路

步骤需要理清

4个存储块,计数器数只在{0,1,2,3}这个集合元素中


计数器数可能非常大


Cache与主存一致性的问题
Cache中的副本修改了,如何与主存保持一致?

写命中

缓冲Buffer, SRAM(双稳态触发器)


写不命中

三级缓存(Cache)
分层管理提效,计算机系统称之为系统当之无愧

与操作系统第三章部分高度重合,容易联合考察





快表:相联存储器,按内容寻访,SRAM(双稳态触发器)

问题会传递,跟Cache进行对照

结合操作系统进行学习
重点在操作系统中
硬件等级森严
虚拟化





功能模块为依据进行拆分

可以停一两天消化一下





后缀表达式




小结:












PC+1,通常情况下取指令,注意条件

PC+2,注意条件是什么才加2


---------------------------------------------------
跳跃寻址





直接寻址

间接寻址
指针套娃

寄存器寻址

寄存器间接寻址

立即寻址
字面量
汇编 #数字, 立即数,非地址

小结

偏移寻址

main函数为起点


进程控制块PCB中


变址寻址


普通程序员可以修改


系统分配的基地址+变址寻址的 复合

相对寻址
以PC为基准解读为:A是相对于下一条地址的偏移量,因为PC会自动+1

跳转修改了PC值,局部性(封装的味道)

一段代码在程序中的内部浮动


讲的有点问题,不妨碍理解

堆栈寻址




What, How, Where

玩倒装。。。

double word
ptr: pointer缩写 即指针
C语言好像也喜欢用ptr进行指针命名
Extended 扩展的
X通用寄存器
老师讲的很清晰
ESI/EDI
EBP/ESP


AH(high高位)/AL(low低位)

考试常见32bit
寄存器间接寻址

[ebx+8]偏移



再次分析真题

ebp basepointer , 入栈
cmp:compare
算数、逻辑、转移等等

英语命令习惯倒装,想想SQL
SELECT
FROM
WHERE
中文,从哪儿,拿什么,Where定语

imul:integer
有无i, 即有无符号

除法,放被除数,隐含寻址。
联想前面的除法运算,余数被放在ACC里面,商被放在MQ里面,也是需要两个寄存器。
既然ABCD寄存器差不多,为何是AD寄存器的组合?
指令理解英语意思,记忆前缀即可

王道也用前缀代指
X86不允许两个操作数同时来自主存



重点关注Intel格式

参考:https://zhuanlan.zhihu.com/p/54821702


常量、寄存器、主存

封装思想

goto:?来源


等价于


减法,补码运算,

几个标志需要好好区分一下。


ecx默认指定自减操作













简单粗暴的mov指令












前面有讲mov的两个操作数不能同时来自于主存








中央处理器




专用数据通路方式

单总线方式

同时传入总线会产生冲突


等待输入信号的稳定



灰色部件用户不可见





上节课谈到每个指令执行结束后都需要进行中断检查














寄存器与寄存器之间
寄存器与存储器之间
寄存器与ALU之间
三种数据流动方式

答题注明那些控制信号有效




间址周期,教材不一样会不同的表示,不需要过度纠结,计组应用科学,没有标准答案




例题分析不截图,自行分析






问题引入,M(MAR)->MDR在取指周期的不同阶段会被重复使用,如何设计相应的电路?

LDA X,loda data ->ACC,由逻辑表达式推演相应的电路(数字逻辑设计中的内容)


ID,也可以叫做操作码译码器

微操作,解决问题的分解步骤,计算机只能做确定性的事情。
将不同指令执行周期过程中的相同微操作进行统一管理,形成一个模块,减少了实际电路实现的冗余。

安排微操作时序



电路设计(组合逻辑设计)

IND:是否处于间址周期
EX:当前是否处于执行周期





总结

硬布线控制器适合RISC

















Another














MIPS


Instruction Cache
Data Cache






NOP: 空操作,编译器的范畴,插入多少空指令

中间数据直接作为下一步操作的输入,需要额外添加逻辑部件

*编译优化

提前形成条件码,与并行加法器类似(提前产生进位)

第四种是对第一种方法的优化

小结


多CPU工作



与乱序发射进行对比,空分复用技术

时分复用技术




空段依旧需要消耗相应的时间

运算类

Load



Store

条件转移指令


无条件转移指令
尽早发现控制冲突

例题

指令流水线大题常考,具备一定难度



向量运算,解线性方程(参数非常多)



共享物理地址空间

地址空间相互独立


线程切换,保存恢复寄存器的值




发送互斥

拆过。。。


总线的定义

总线的特性

总线的分类

1.数据传输方式分类
并行适合近距离传输,串行适合长距离传输(抗干扰能力强)

2.功能分类












剔除附加信息

例题




小结


链式查询方式




操作系统饥饿问题,游戏机举例(形象)
计数器查询方式

循环计数,或软件设置更复杂的计数方式

独立请求方式

大哥小弟游戏机,不同方式

分布仲裁方式

时序安排


跟计算机网络中的通信方式有些类似
同步定时方式


异步定时方式

互锁,相互制约

半同步通信

分离式通信

小结


大体上说:北桥负责与CPU通信,且连接高速设备(内存/显卡),并与南桥通信;南桥负责与低速设备(硬盘/USB)通信,时钟/BIOS/系统管理/旧式设备控制,并与北桥通信。

系统总线标准(大致了解即可)

局部总线标准
GUI

VESA完全受到CPU的控制


串行传输


设备总线标准






双绞线(麻花。。)




多个数据通路,数据包同时传输

串行传输逐渐取代了并行传输






CPU作为中转站进行数据的中转







显存计算*




高中物理。。。



















原子操作



中断优先级

通常使用硬件排队器进行判优







