欢迎光临散文网 会员登陆 & 注册

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

2023-05-12 13:32 作者:SJNeking  | 我要投稿

不全 慎用https://www.aliyundrive.com/s/b6JmZQ7toTG



自省:

截屏不是目的,是记录当下自己是否真的静心去听课,把害怕遗忘交给软件,不至于每次都倒在离开始不远处的地方。



https://www.aliyundrive.com/s/b6JmZQ7toTG

引入

常识


CPU

内存

硬盘








计算机系统概述











逻辑元件的更替




这个地方举的例子很恰当




1.2_1_计算机硬件的基本组成 P4 - 14:38





1.2_2_各个硬件的工作原理 P5 - 00:09




非常形象





1.2_2_各个硬件的工作原理 P5 - 11:23













1.2_3_计算机系统的层次结构 P6 - 00:05







1.3_计算机的性能指标 P7 - 00:05






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



数据的表示和运算


数制之间的转换






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

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




权重不同进行的分类,








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


减数看作加上一个数的相反数。

12 - 3 = 12 + (15 - 3 + 1) - 16(后面减去16表示的是溢出部分)别刻意去记忆规则


0011 + 1100 = 1111 = 15



带符号整数


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



2.1_4_带符号整数的表示和运算_原反补 P11 - 07:50


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


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

不建议将补码转换为反码

非常实用的技巧










定点小数



2.1_7_定点小数 P14 - 03:20


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



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

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





2.2_0_奇偶校验码(大纲已删) P15 - 00:03


传输校验



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

异或运算

偶数个比特发生错误无法检测。




2.2_1_电路的基本原理、加法器设计 P16 - 00:03


程序状态字寄存器(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

串行加法器的效率较低

类似于人手工计算



2.2_2_并行进位加法器 P17 - 00:04


串行进位加法器的缺点

挺有意思,并发思想

慎用并发,方便但复杂

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



2.2_3_补码加减运算器 P18 - 00:00





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

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

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


2.2_3_补码加减运算器 P18 - 09:38







Sub中的0/1,即作为多路选择器的判断条件,又作为Cin的进位数值,这样的设计还是非常巧妙地。

这里面产生了一个疑惑点,假设Y本身就是有符号的负数,而X和Y之间是X+Y的关系,上面有给例题,分析分析,上面的X+Y有些问题。

A+B

A-B

3+2

3+(-2)

3-2

(-3)-2


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




2.2_4_标志位的生成 P19 - 00:37


今天到这里,暂停一下




2.2_5_定点数的移位运算 P20 - 00:02




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

左移是扩大两倍,右移是减小两倍

注意符号位








高字节低字节调换

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



2.2_6_1_原码的乘法运算 P21 - 00:04



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

异或进行符号位的单独


老师讲解的特别清晰,自己手动也模拟了一下。

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

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

最好写出原码机器数

一定要自己手动推导一遍,看看自己哪里自己没有清楚。

这部分虽然十几分钟,我花了差不多一个小时自己去推导理解。还是很受用的

+0与+|x|,确定清楚,最后一步确定符号位:异或方式



2.2_6_2_补码的乘法运算 P22 - 00:03


辅助位,MQ需要扩展一位


辅助电路


补码这个地方需要自己深究一下,补码本质上是(原数+模)%模, 所以正数的补码位自己。补码参与运算如何去原码运算保持一致,自己分析一下再看


已手动分析完过程


2.2_7_1_原码的除法运算 P23 - 00:05


还没开始看视频,从乘法采用移位的方式,除法则同理,相应的会有一些精度损失。




迷糊

二进制中只有上0和1,敢不敢将相应的逻辑电路讲讲?

单图重复用,还是同样的结构

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

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

自检



左移



商的结果在MQ里面

计算机默认上商

能否不恢复余数???

简化中间步骤


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

定点小数除法运算,前提条件,商也是一个定点小数,规定,被除数需要小于除数,判断条件:第一步的商进行确定。


2.2_7_2_补码的除法运算 P24 - 00:18


原码的出发运算,符号位单独运算

补码除法依旧采用双符号位方式,将符号位直接参与到运算当中。

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




2.2_8_C语言类型转换 P25 - 00:08


这部分比较简单

有符号与无符号

截断处理,低位保留

符号扩展,高位补0补1,看符号情况



2.2_9_数据的存储和排列 P26 - 00:04


大小端模式,前面讲到可通过循环移位的方式进行转换

大端存储方式符合人类的习惯

小端方式方便机器进行处理,内存地址递增的方式进行处理,先从低位开始进行处理

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

刚好也讲到哈哈

用边界对齐的方式其实更好访问,所以对于结构体型,中间存在很多空的数据,造成空间上的浪费。

边界对齐方式:空间换取时间

边界不对齐方式:时间换取空间

具体情况具体使用




2.3_1_浮点数的表示 P27 - 00:05






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




浮点数确定真值


计算机浮点数的统一规则,引出标准


2.3_2_IEEE 754 P28 - 00:01


https://zhuanlan.zhihu.com/p/343033661

在深入Java学习的时候,有了解了一下IEEE754标准,对于认识Java的float和double有了比较清晰的认识,以上专栏系列文章可以去自习查阅。这部分我就直接跳过了。


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

可以开展后面的章节了。



存储器



3.1_存储系统基本概念 P30 - 00:10


流水线模式~传递提高效率


主存辅存:实现虚拟存储习题,解决主存容量不够的问题





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






3.1_存储系统基本概念 P30 - 24:15






3.2_1_主存储器的基本组成 P31 - 00:04




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


读写线的个数

译码驱动器,放大信号

片选线,指定存储

引脚的数目


矩阵化




3.2_2_SRAM和DRAM P32 - 00:03




双稳态触发器

这个月补一下数字逻辑设计,加深对硬件的理解





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



DDR3、DDR4




3.2_3_只读存储器ROM P33 - 00:38




云存储主要使用机械硬盘

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



3.3_1_主存储器与CPU的连接 P34 - 00:12



现代计算机结构


WE:Write Enable

并联

改造前

改造后

A13与A14同为1,发生冲突


优化

非门引入

3-8译码器 (2^3)

2-4译码器

低位->高位

实际题目:A15与A13(考试中可能遇见)

位扩展:存储器的字长增加,更好的发挥数据总线的传输能力

字扩展:增强存储器的存储字数,可以更好的理解CPU的寻址能力



两片芯片为一组进行位扩展

24译码器,




3.3_1_主存储器与CPU的连接 P34 - 28:43


使能端

多个使能端





74ls138译码器


3.3_2_双端口RAM和多模块存储器 P35 - 00:04



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






3.3_2_双端口RAM和多模块存储器 P35 - 20:22





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

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



3.4_1_磁盘存储器 P36 - 00:08



想起考察角速度线速度。。。。。。

水平方向和垂直方向

机械硬盘没事不要甩了,磁头很脆弱。

道密度,磁道

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












磁盘冗余阵列重点




3.4_2_固态硬盘SSD P37 - 00:19



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

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




3.5_1_Cache的基本概念和原理 P38 - 00:07




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



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






3.5_2_Cache和主存的映射方式 P39 - 00:04











3.5_3_Cache替换算法 P40 - 00:08






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


做题的思路

步骤需要理清

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


计数器数可能非常大





3.5_4_Cache写策略 P41 - 00:22


Cache与主存一致性的问题

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


写命中

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


写不命中


三级缓存(Cache)

分层管理提效,计算机系统称之为系统当之无愧




3.6_1_页式存储器 P42 - 00:04


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






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

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

结合操作系统进行学习




3.6_2_虚拟存储器 P43 - 00:09


重点在操作系统中

硬件等级森严


虚拟化






功能模块为依据进行拆分


可以停一两天消化一下




4.1_1_指令格式 P44 - 00:18






后缀表达式




小结:













4.2_1_指令寻址 P46 - 00:10



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

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



---------------------------------------------------

跳跃寻址





4.2_2_数据寻址 P47 - 00:03








直接寻址


间接寻址

指针套娃


寄存器寻址


寄存器间接寻址


立即寻址

字面量

汇编 #数字, 立即数,非地址

小结


偏移寻址

main函数为起点

进程控制块PCB中




变址寻址



普通程序员可以修改


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

相对寻址

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

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

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


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



堆栈寻址





4.3_1_高级语言与机器级代码之间的对应 P50 - 00:58


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




4.3_2_常用的x86汇编指令 P51 - 00:04


算数、逻辑、转移等等

英语命令习惯倒装,想想SQL

SELECT

FROM

WHERE

中文,从哪儿,拿什么,Where定语

imul:integer

有无i, 即有无符号


除法,放被除数,隐含寻址。

联想前面的除法运算,余数被放在ACC里面,商被放在MQ里面,也是需要两个寄存器。

既然ABCD寄存器差不多,为何是AD寄存器的组合?

指令理解英语意思,记忆前缀即可

王道也用前缀代指

X86不允许两个操作数同时来自主存







4.3_3_AT&T格式和Intel格式 P52 - 00:09




重点关注Intel格式

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




4.3_4_选择语句的机器级表示 P53 - 00:05



常量、寄存器、主存


封装思想

goto:?来源


等价于




4.3_4_选择语句的机器级表示 P53 - 19:27


减法,补码运算,

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




4.3_5_循环语句的机器级表示 P54 - 00:11



ecx默认指定自减操作





4.3_6_1_Call和ret指令(函数调用的机器级表示) P55 - 00:17






4.3_6_2_如何访问栈帧(函数调用的... P56 - 00:04










简单粗暴的mov指令




4.3_6_3_如何切换栈帧(函数调用的... P57 - 00:20










4.3_6_4_如何传递参数和返回值(函... P58 - 00:04







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








4.4_CISC和RISC P59 - 00:03





中央处理器



5.1_CPU的功能和基本结构 P61 - 00:04




专用数据通路方式

单总线方式

同时传入总线会产生冲突


等待输入信号的稳定



灰色部件用户不可见





5.2_指令周期的数据流 P62 - 00:29



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














5.3.1_数据通路-单总线结构 P63 - 00:26




寄存器与寄存器之间

寄存器与存储器之间

寄存器与ALU之间

三种数据流动方式

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



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







5.3.2_数据通路-专用通路结构 P64 - 00:03


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



5.4.1_硬布线控制器的设计 P65 - 00:29






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

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


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

微操作,解决问题的分解步骤,计算机只能做确定性的事情。

将不同指令执行周期过程中的相同微操作进行统一管理,形成一个模块,减少了实际电路实现的冗余。

安排微操作时序


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

IND:是否处于间址周期

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


总结

硬布线控制器适合RISC




5.4.2_微程序控制器的基本原理 P66 - 00:06









5.4.3_微指令的设计 P67 - 00:03










5.4.4_微程序控制单元的设计 P68 - 00:04



Another







5.6_1_指令流水线的基本概念 P69 - 00:12











5.6_2_指令流水线的影响因素和分类 P70 - 00:04


MIPS


Instruction Cache

Data Cache



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

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

*编译优化

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

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

小结



5.6_2_指令流水线的影响因素和分类 P70 - 34:05


多CPU工作



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

时分复用技术





5.6_3_五段式指令流水线 P71 - 00:02


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


运算类


Load


Store


条件转移指令


无条件转移指令

尽早发现控制冲突


例题

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



5.7_1_多处理器系统的基本概念 P72 - 00:02




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





共享物理地址空间


地址空间相互独立




5.7_2硬件多线程的基本概念 P73 - 00:05


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





6.1_1_总线概述 P74 - 00:03


发送互斥

拆过。。。



总线的定义


总线的特性


总线的分类


1.数据传输方式分类

并行适合近距离传输,串行适合长距离传输(抗干扰能力强)


2.功能分类






6.1_1_总线概述 P74 - 23:24




6.1_2_总线的性能指标 P75 - 00:04





剔除附加信息



例题





小结




6.2_总线仲裁(408不考,简单了解即可) P76 - 00:02



链式查询方式

操作系统饥饿问题,游戏机举例(形象)


计数器查询方式

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


独立请求方式

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



分布仲裁方式




6.3_总线操作和定时 P77 - 00:04


时序安排



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

同步定时方式


异步定时方式

互锁,相互制约


半同步通信


分离式通信


小结



6.4_总线标准(408不考,简单了解即可) P78 - 00:10



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


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


局部总线标准

GUI

VESA完全受到CPU的控制

串行传输


设备总线标准





双绞线(麻花。。)






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

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




7.1_1_输入输出系统和IO控制方式 P79 - 00:03






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








7.1_2_外部设备 P80 - 00:08


显存计算*




高中物理。。。








7.2_IO接口 P81 - 00:02











7.3_1_程序查询方式 P82 - 01:20





7.3_2_中断的作用和原理 P83 - 00:06


原子操作



中断优先级

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






7.3_3_多重中断 P84 - 00:01





















王道计算机考研 计算机组成原理的评论 (共 条)

分享到微博请遵守国家法律